diff --git a/plugins/datatables-colreorder/css/colReorder.bootstrap4.min.css b/plugins/datatables-colreorder/css/colReorder.bootstrap4.min.css index cc3fd60b6..1b141d80c 100644 --- a/plugins/datatables-colreorder/css/colReorder.bootstrap4.min.css +++ b/plugins/datatables-colreorder/css/colReorder.bootstrap4.min.css @@ -1 +1 @@ -table.DTCR_clonedTable.dataTable{position:absolute !important;background-color:rgba(255,255,255,0.7);z-index:202}div.DTCR_pointer{width:1px;background-color:#0275d8;z-index:201} +table.DTCR_clonedTable.dataTable{position:absolute !important;background-color:rgba(255, 255, 255, 0.7);z-index:202}div.DTCR_pointer{width:1px;background-color:#0275d8;z-index:201} diff --git a/plugins/datatables-colreorder/js/dataTables.colReorder.js b/plugins/datatables-colreorder/js/dataTables.colReorder.js index d786427cb..b7b55bd8b 100755 --- a/plugins/datatables-colreorder/js/dataTables.colReorder.js +++ b/plugins/datatables-colreorder/js/dataTables.colReorder.js @@ -1,15 +1,15 @@ -/*! ColReorder 1.5.2 - * ©2010-2019 SpryMedia Ltd - datatables.net/license +/*! ColReorder 1.5.3 + * ©2010-2020 SpryMedia Ltd - datatables.net/license */ /** * @summary ColReorder * @description Provide the ability to reorder columns in a DataTable - * @version 1.5.2 + * @version 1.5.3 * @file dataTables.colReorder.js * @author SpryMedia Ltd (www.sprymedia.co.uk) * @contact www.sprymedia.co.uk/contact - * @copyright Copyright 2010-2019 SpryMedia Ltd. + * @copyright Copyright 2010-2020 SpryMedia Ltd. * * This source file is free software, available under the following license: * MIT license - http://datatables.net/license/mit @@ -310,7 +310,7 @@ $.fn.dataTableExt.oApi.fnColReorder = function ( oSettings, iFrom, iTo, drop, in // For DOM sourced data, the invalidate will reread the cell into // the data array, but for data sources as an array, they need to // be flipped - if ( data.src !== 'dom' && $.isArray( data._aData ) ) { + if ( data.src !== 'dom' && Array.isArray( data._aData ) ) { fnArraySwitch( data._aData, iFrom, iTo ); } } @@ -650,7 +650,7 @@ $.extend( ColReorder.prototype, { if ( dir === 'toCurrent' ) { // Given an original index, want the current - return ! $.isArray( idx ) ? + return ! Array.isArray( idx ) ? $.inArray( idx, order ) : $.map( idx, function ( index ) { return $.inArray( index, order ); @@ -658,7 +658,7 @@ $.extend( ColReorder.prototype, { } else { // Given a current index, want the original - return ! $.isArray( idx ) ? + return ! Array.isArray( idx ) ? columns[idx]._ColReorder_iOrigCol : $.map( idx, function ( index ) { return columns[index]._ColReorder_iOrigCol; @@ -1374,7 +1374,7 @@ ColReorder.defaults = { * @type String * @default As code */ -ColReorder.version = "1.5.2"; +ColReorder.version = "1.5.3"; diff --git a/plugins/datatables-colreorder/js/dataTables.colReorder.min.js b/plugins/datatables-colreorder/js/dataTables.colReorder.min.js index d1b938581..59621b9f3 100644 --- a/plugins/datatables-colreorder/js/dataTables.colReorder.min.js +++ b/plugins/datatables-colreorder/js/dataTables.colReorder.min.js @@ -1,29 +1,29 @@ /*! - ColReorder 1.5.2 - ©2010-2019 SpryMedia Ltd - datatables.net/license + ColReorder 1.5.3 + ©2010-2020 SpryMedia Ltd - datatables.net/license */ -(function(e){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(p){return e(p,window,document)}):"object"===typeof exports?module.exports=function(p,o){p||(p=window);if(!o||!o.fn.dataTable)o=require("datatables.net")(p,o).$;return e(o,p,p.document)}:e(jQuery,window,document)})(function(e,p,o,s){function r(a){for(var b=[],d=0,e=a.length;db||b>=i)this.oApi._fnLog(a,1,"ColReorder 'from' index is out of bounds: "+b);else if(0>d||d>=i)this.oApi._fnLog(a,1,"ColReorder 'to' index is out of bounds: "+ -d);else{j=[];c=0;for(h=i;cb||b>=i)this.oApi._fnLog(a,1,"ColReorder 'from' index is out of bounds: "+b);else if(0>d||d>=i)this.oApi._fnLog(a,1,"ColReorder 'to' index is out of bounds: "+ +d);else{j=[];c=0;for(g=i;cthis.s.fixed-1&&fMath.pow(Math.pow(this._fnCursorPosition(a,"pageX")-this.s.mouse.startX,2)+Math.pow(this._fnCursorPosition(a, -"pageY")-this.s.mouse.startY,2),0.5))return;this._fnCreateDragNode()}this.dom.drag.css({left:this._fnCursorPosition(a,"pageX")-this.s.mouse.offsetX,top:this._fnCursorPosition(a,"pageY")-this.s.mouse.offsetY});for(var d,e=this.s.mouse.toIndex,a=this._fnCursorPosition(a,"pageX"),g=function(){for(var a=b.s.aoTargets.length-1;0=h){h=null;break a}if(b.s.aoTargets[h+ -1].x!==b.s.aoTargets[h].x){h=b.s.aoTargets[h];break a}}h=void 0}if(!h)a:{for(h=0;hj){d=h;break}}d?(this.dom.pointer.css("left",d.x),this.s.mouse.toIndex=d.to):(this.dom.pointer.css("left",g().x),this.s.mouse.toIndex=g().to);this.s.init.bRealtime&&e!==this.s.mouse.toIndex&&(this.s.dt.oInstance.fnColReorder(this.s.mouse.fromIndex, +this.s.dt.aoColumns[f]._ColReorder_iOrigCol=f;this.s.dt.oApi._fnCallbackReg(this.s.dt,"aoStateSaveParams",function(b,c){a._fnStateSave.call(a,c)},"ColReorder_State");var h=null;this.s.init.aiOrder&&(h=this.s.init.aiOrder.slice());this.s.dt.oLoadedState&&("undefined"!=typeof this.s.dt.oLoadedState.ColReorder&&this.s.dt.oLoadedState.ColReorder.length==this.s.dt.aoColumns.length)&&(h=this.s.dt.oLoadedState.ColReorder);if(h)if(a.s.dt._bInitComplete)b=r(h),a._fnOrderColumns.call(a,b);else{var c=!1;e(d).on("draw.dt.colReorder", +function(){if(!a.s.dt._bInitComplete&&!c){c=true;var b=r(h);a._fnOrderColumns.call(a,b)}})}else this._fnSetColumnIndexes();e(d).on("destroy.dt.colReorder",function(){e(d).off("destroy.dt.colReorder draw.dt.colReorder");e.each(a.s.dt.aoColumns,function(a,b){e(b.nTh).off(".ColReorder");e(b.nTh).removeAttr("data-column-index")});a.s.dt._colReorder=null;a.s=null})},_fnOrderColumns:function(a){var b=!1;if(a.length!=this.s.dt.aoColumns.length)this.s.dt.oInstance.oApi._fnLog(this.s.dt,1,"ColReorder - array reorder does not match known number of columns. Skipping."); +else{for(var d=0,f=a.length;dMath.pow(Math.pow(this._fnCursorPosition(a,"pageX")-this.s.mouse.startX,2)+Math.pow(this._fnCursorPosition(a, +"pageY")-this.s.mouse.startY,2),0.5))return;this._fnCreateDragNode()}this.dom.drag.css({left:this._fnCursorPosition(a,"pageX")-this.s.mouse.offsetX,top:this._fnCursorPosition(a,"pageY")-this.s.mouse.offsetY});for(var d,e=this.s.mouse.toIndex,a=this._fnCursorPosition(a,"pageX"),h=function(){for(var a=b.s.aoTargets.length-1;0=g){g=null;break a}if(b.s.aoTargets[g+ +1].x!==b.s.aoTargets[g].x){g=b.s.aoTargets[g];break a}}g=void 0}if(!g)a:{for(g=0;gj){d=g;break}}d?(this.dom.pointer.css("left",d.x),this.s.mouse.toIndex=d.to):(this.dom.pointer.css("left",h().x),this.s.mouse.toIndex=h().to);this.s.init.bRealtime&&e!==this.s.mouse.toIndex&&(this.s.dt.oInstance.fnColReorder(this.s.mouse.fromIndex, this.s.mouse.toIndex),this.s.mouse.fromIndex=this.s.mouse.toIndex,(""!==this.s.dt.oScroll.sX||""!==this.s.dt.oScroll.sY)&&this.s.dt.oInstance.fnAdjustColumnSizing(!1),this._fnRegions())},_fnMouseUp:function(){e(o).off(".ColReorder");null!==this.dom.drag&&(this.dom.drag.remove(),this.dom.pointer.remove(),this.dom.drag=null,this.dom.pointer=null,this.s.dt.oInstance.fnColReorder(this.s.mouse.fromIndex,this.s.mouse.toIndex,!0),this._fnSetColumnIndexes(),(""!==this.s.dt.oScroll.sX||""!==this.s.dt.oScroll.sY)&& -this.s.dt.oInstance.fnAdjustColumnSizing(!1),this.s.dt.oInstance.oApi._fnSaveState(this.s.dt),null!==this.s.reorderCallback&&this.s.reorderCallback.call(this))},_fnRegions:function(){var a=this.s.dt.aoColumns,b=this._fnIsLtr();this.s.aoTargets.splice(0,this.s.aoTargets.length);var d=e(this.s.dt.nTable).offset().left,f=[];e.each(a,function(a,c){if(c.bVisible&&"none"!==c.nTh.style.display){var g=e(c.nTh),i=g.offset().left;b&&(i+=g.outerWidth());f.push({index:a,bound:i});d=i}else f.push({index:a,bound:d})}); -var g=f[0],a=e(a[g.index].nTh).outerWidth();this.s.aoTargets.push({to:0,x:g.bound-a});for(g=0;g").addClass("DTCR_pointer").css({position:"absolute",top:a?e("div.dataTables_scroll",this.s.dt.nTableWrapper).offset().top:e(this.s.dt.nTable).offset().top,height:a?e("div.dataTables_scroll", -this.s.dt.nTableWrapper).height():e(this.s.dt.nTable).height()}).appendTo("body")},_fnSetColumnIndexes:function(){e.each(this.s.dt.aoColumns,function(a,b){e(b.nTh).attr("data-column-index",a)})},_fnCursorPosition:function(a,b){return-1!==a.type.indexOf("touch")?a.originalEvent.touches[0][b]:a[b]},_fnIsLtr:function(){return"rtl"!==e(this.s.dt.nTable).css("direction")}});i.defaults={aiOrder:null,bEnable:!0,bRealtime:!0,iFixedColumnsLeft:0,iFixedColumnsRight:0,fnReorderCallback:null};i.version="1.5.2"; +this.s.dt.oInstance.fnAdjustColumnSizing(!1),this.s.dt.oInstance.oApi._fnSaveState(this.s.dt),null!==this.s.reorderCallback&&this.s.reorderCallback.call(this))},_fnRegions:function(){var a=this.s.dt.aoColumns,b=this._fnIsLtr();this.s.aoTargets.splice(0,this.s.aoTargets.length);var d=e(this.s.dt.nTable).offset().left,f=[];e.each(a,function(a,c){if(c.bVisible&&"none"!==c.nTh.style.display){var h=e(c.nTh),i=h.offset().left;b&&(i+=h.outerWidth());f.push({index:a,bound:i});d=i}else f.push({index:a,bound:d})}); +var h=f[0],a=e(a[h.index].nTh).outerWidth();this.s.aoTargets.push({to:0,x:h.bound-a});for(h=0;h").addClass("DTCR_pointer").css({position:"absolute",top:a?e("div.dataTables_scroll",this.s.dt.nTableWrapper).offset().top:e(this.s.dt.nTable).offset().top,height:a?e("div.dataTables_scroll", +this.s.dt.nTableWrapper).height():e(this.s.dt.nTable).height()}).appendTo("body")},_fnSetColumnIndexes:function(){e.each(this.s.dt.aoColumns,function(a,b){e(b.nTh).attr("data-column-index",a)})},_fnCursorPosition:function(a,b){return-1!==a.type.indexOf("touch")?a.originalEvent.touches[0][b]:a[b]},_fnIsLtr:function(){return"rtl"!==e(this.s.dt.nTable).css("direction")}});i.defaults={aiOrder:null,bEnable:!0,bRealtime:!0,iFixedColumnsLeft:0,iFixedColumnsRight:0,fnReorderCallback:null};i.version="1.5.3"; e.fn.dataTable.ColReorder=i;e.fn.DataTable.ColReorder=i;"function"==typeof e.fn.dataTable&&"function"==typeof e.fn.dataTableExt.fnVersionCheck&&e.fn.dataTableExt.fnVersionCheck("1.10.8")?e.fn.dataTableExt.aoFeatures.push({fnInit:function(a){var b=a.oInstance;a._colReorder?b.oApi._fnLog(a,1,"ColReorder attempted to initialise twice. Ignoring second"):(b=a.oInit,new i(a,b.colReorder||b.oColReorder||{}));return null},cFeature:"R",sFeature:"ColReorder"}):alert("Warning: ColReorder requires DataTables 1.10.8 or greater - www.datatables.net/download"); e(o).on("preInit.dt.colReorder",function(a,b){if("dt"===a.namespace){var d=b.oInit.colReorder,f=u.defaults.colReorder;if(d||f)f=e.extend({},d,f),!1!==d&&new i(b,f)}});e.fn.dataTable.Api.register("colReorder.reset()",function(){return this.iterator("table",function(a){a._colReorder.fnReset()})});e.fn.dataTable.Api.register("colReorder.order()",function(a,b){return a?this.iterator("table",function(d){d._colReorder.fnOrder(a,b)}):this.context.length?this.context[0]._colReorder.fnOrder():null});e.fn.dataTable.Api.register("colReorder.transpose()", function(a,b){return this.context.length&&this.context[0]._colReorder?this.context[0]._colReorder.fnTranspose(a,b):a});e.fn.dataTable.Api.register("colReorder.move()",function(a,b,d,e){this.context.length&&(this.context[0]._colReorder.s.dt.oInstance.fnColReorder(a,b,d,e),this.context[0]._colReorder._fnSetColumnIndexes());return this});e.fn.dataTable.Api.register("colReorder.enable()",function(a){return this.iterator("table",function(b){b._colReorder&&b._colReorder.fnEnable(a)})});e.fn.dataTable.Api.register("colReorder.disable()", diff --git a/plugins/datatables-searchpanes/css/searchPanes.bootstrap4.css b/plugins/datatables-searchpanes/css/searchPanes.bootstrap4.css index dde29ab82..8f766add9 100644 --- a/plugins/datatables-searchpanes/css/searchPanes.bootstrap4.css +++ b/plugins/datatables-searchpanes/css/searchPanes.bootstrap4.css @@ -46,6 +46,11 @@ div.dtsp-topRow button.dtsp-searchIcon { background-size: 12px; } +div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane table thead th, +div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane table thead td { + width: 100% !important; +} + div.dt-button-collection { z-index: 2002; } @@ -133,6 +138,9 @@ div.dt-button-collection { div.dtsp-panesContainer { width: 100%; } +div.dtsp-panesContainer div.dataTables_wrapper { + width: 100%; +} div.dtsp-searchPanes { display: flex; @@ -321,8 +329,8 @@ div.dtsp-hidden { @media screen and (max-width: 767px) { div.dtsp-columns-4, - div.dtsp-columns-5, - div.dtsp-columns-6 { +div.dtsp-columns-5, +div.dtsp-columns-6 { max-width: 31% !important; min-width: 31% !important; } diff --git a/plugins/datatables-searchpanes/css/searchPanes.bootstrap4.min.css b/plugins/datatables-searchpanes/css/searchPanes.bootstrap4.min.css index 3f1a14384..2be2ce0a4 100644 --- a/plugins/datatables-searchpanes/css/searchPanes.bootstrap4.min.css +++ b/plugins/datatables-searchpanes/css/searchPanes.bootstrap4.min.css @@ -1 +1 @@ -div.dtsp-topRow{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-around;align-content:flex-start;align-items:flex-start}div.dtsp-topRow input.dtsp-search{text-overflow:ellipsis}div.dtsp-topRow div.dtsp-subRow1{display:flex;flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:0}div.dtsp-topRow div.dtsp-searchCont{display:flex;flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:0}div.dtsp-topRow button.dtsp-nameButton{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAK2SURBVFgJ7ZY9j41BFICvryCExrJBQ6HyEYVEIREaUZDQIRoR2ViJKCioxV+gkVXYTVZEQiEUhG2EQnxUCh0FKolY4ut5XnM2cyfva3Pt5m7EPcmzZ2bemTNnzjkzd1utnvQi0IvAfxiBy5z5FoxO89kPY+8mbMjtzs47RXs5/WVpbAG6bWExt5PuIibvhVkwmC+ck3eK9ln6/fAddFojYzBVuYSBpcnIEvRaqOw2RcaN18FPuJH0JvRUxbT3wWf4ltiKPgfVidWlbGZgPozDFfgAC+EA/K2EI4cwcAJ+gPaeQ+VQU2SOMMGcPgPl/m/V2p50rrbRsRgt9Iv5h6xtpP22Bz7Ce1C+gFFxfKzOmShcU+Qmyh2w3w8rIJfddHTck66EukL/xPhj+JM8rHNmFys0Pg4v0up3aFNlwR9NYyodd3OL/C64zpsymcTFcf6ElM4YzjAWKYrJkaq8kE/yUYNP4BoYvS1QRo+hNtF5xfkTUjoTheukSFFMjlTFm6PjceOca/SMpKfeCR1L6Uzk/y2WIkVhNFJlJAZhP+hYns7b9D3IPuhY5mYrIv8OrQJvR5NYyNaW4jsU8pSGNySiVx4o5tXq3JkoXE/mg5R/M8dGJCJpKhaDcjBRdbI/Rm8g69c122om33BHmj2CHoV5qa9jUXBraJ+G1fAVjIBO1klc87ro1K4JZ/K35SWW3TwcyDd6TecqnAEd8cGq2+w84xvBm1n3vS0izKkkwh5XNC/GmFPqqAtPF89AOScKuemaNzoTV1SD5dtSbmLf1/RV+tC0WTgcj6R7HEtrVGWaqu/lYDZ/2pvxQ/kIyw/gFByHC9AHw910hv1aUUumyd8yy0QfhmEkfiNod0Xusct68J1qc8Tdux0Z97Q+hsDb+AYGYEbF/4Guw2Q/qDPqZG/zXgT+3Qj8AtKnfWhFwmuAAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:center;background-size:23px;vertical-align:bottom}div.dtsp-topRow button.dtsp-countButton{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAG5SURBVEgN3VU9LwVBFF0fiYhofUSlEQkKhU7z/oBCQkIiGr9BgUbhVzy9BAnhFyjV/AYFiU5ICM7ZN+c5Zud5dm3lJmfmzrkz9+7cu3c3y/6jjOBSF8CxXS7FmTkbwqIJjDpJvTcmsJ4K3KPZUpyZsx0sxoB9J6mnAkyC7wGuuCFIipNtEcpcWExgXpOBc78vgj6N+QO4NVsjwdFM59tUIDxDrHMBOeIQ34C5ZDregXuAQm4YcI68nN9B3wr2PcwPAIPkN2EqtJH6b+QZm1ajjTx7BqwAr26Lb+C2Kvpbt0Mb2HAJ7NrGFGfmXO3DeA4UshDfQAVmH0gaUFg852TTTDvlxwBlCtxy9zXyBhQFaq0wMmIdRebrfgosA3zb2hKnqG0oqchp4QbuR8X0TjzABhbdOT8jnQ/atcgqpnfwOA7yqZyTU587ZkIGdesLTt2EkynOnbreMUUKMI/dA4B/QVOcO13CQh+5wWCgDwo/75u59odB/wjmfhbgvACcAOyZPHihMWAoIwxyCLgf1oxfgjzVbgBXSTzIN+f0pg6s5DkcesLMRpsBrgE2XO3CN64JFP7JtUeKHX4CKtRRXFZ+7dEAAAAASUVORK5CYII=");background-repeat:no-repeat;background-position:center;background-size:18px;vertical-align:bottom}div.dtsp-topRow button.dtsp-searchIcon{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAEnSURBVCgVpdG7SgNBFIDh1RhJsBBEsDIgIhaWFjZa2GtpKb6AnU0MprKOWEjK2IuFFxCxS2lhZyOWXh5AQVER/X+zuwwywoIHvp3dM3Nm55Ik/4i+P2or5FewiBIe0cEt8ogVz9LbhEVf+cgkcew1tvAZ5PPXGm9HOMEanMAYQhunaCAazuqA1UjvILl9HGPc/n4fabjPGbzjMM2FjfkDuPw5O8JilzgA9/OKWDynyWnbsPiF7yc4SRWxmEyTN7ZhsSd7gTLW8TuGSSzBcZd2hsV+n+MNC9jGCNzjPDwsz8XCO/x02Bqeptcxhg+4gjD8YxetLOkBGRbuwcIr+NdRLMPl3uMM2YHx2gsLd+D97qKEQuGe65jCAzbgVRWOCUZuovAfs5m/AdVxL0R1AIsLAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:center;background-size:12px}div.dt-button-collection{z-index:2002}div.dataTables_scrollBody{background:white !important}div.dtsp-columns-1{min-width:98%;max-width:98%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-2{min-width:48%;max-width:48%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-3{min-width:30.333%;max-width:30.333%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-4{min-width:23%;max-width:23%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-5{min-width:18%;max-width:18%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-6{min-width:15.666%;max-width:15.666%;padding-left:0.5%;padding-right:0.5%;margin:0px !important}div.dtsp-columns-7{min-width:13.28%;max-width:13.28%;padding-left:0.5%;padding-right:0.5%;margin:0px !important}div.dtsp-columns-8{min-width:11.5%;max-width:11.5%;padding-left:0.5%;padding-right:0.5%;margin:0px !important}div.dtsp-columns-9{min-width:11.111%;max-width:11.111%;padding-left:0.5%;padding-right:0.5%;margin:0px !important}div.dt-button-collection{float:none}div.dtsp-panesContainer{width:100%}div.dtsp-searchPanes{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-evenly;align-content:flex-start;align-items:stretch;clear:both}div.dtsp-searchPanes button.btn{margin:0}div.dtsp-searchPanes button.dtsp-clearAll{max-width:50px}div.dtsp-columns-1,div.dtsp-columns-2,div.dtsp-columns-3,div.dtsp-columns-4,div.dtsp-columns-5,div.dtsp-columns-6,div.dtsp-columns-7,div.dtsp-columns-8,div.dtsp-columns-9{padding-left:0px;padding-right:0px}div.dtsp-searchPane{flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:280px;justify-content:space-around;align-content:flex-start;align-items:stretch;padding-top:0px;padding-bottom:5px;margin:5px 0;margin-top:0px;margin-bottom:0px;font-size:0.9em;margin:5px}div.dtsp-searchPane div.dataTables_wrapper{flex:1}div.dtsp-searchPane div.dataTables_wrapper div.dataTables_filter{display:none}div.dtsp-searchPane div.dataTables_wrapper div.row div.col-sm-12:empty{display:none}div.dtsp-searchPane div.dataTables_wrapper div.row div.dataTables_filter{display:none}div.dtsp-searchPane div.btn-group{padding:0px}div.dtsp-searchPane div.dtsp-topRow{padding:0px !important;margin:0px;margin-bottom:0.5rem}div.dtsp-searchPane div.dtsp-topRow div.dtsp-subRows{padding:0px !important;text-align:right}div.dtsp-searchPane div.dtsp-topRow div.row{width:100%}div.dtsp-searchPane div.dtsp-topRow button{min-width:35px;max-width:35px;border:1px solid #ced4da}div.dtsp-searchPane div.dtsp-topRow div.dtsp-subRow2{margin-left:5px}div.dtsp-searchPane div.dtsp-topRow button.clearButton{padding-left:10px}div.dtsp-searchPane thead{display:none}div.dtsp-searchPane .mb-3{margin-bottom:none !important}div.dtsp-searchPane .col-sm-12{padding:5px}div.dtsp-searchPane .input-group{padding:0px !important}div.dtsp-searchPane .input-group .input-group-append{display:inline-block}div.dtsp-searchPane div.dataTables_scrollHead{display:none}div.dtsp-searchPane div.dataTables_scrollBody{padding:2px;border:2px #f0f0f0 solid;border-radius:4px}div.dtsp-searchPane div.dataTables_scrollBody:hover{border:2px solid #cfcfcf !important}div.dtsp-searchPane div.dataTables_scrollBody table{table-layout:fixed}div.dtsp-searchPane div.dataTables_scrollBody table tbody tr td.dtsp-nameColumn{width:100% !important}div.dtsp-searchPane div.dataTables_scrollBody table tbody tr div.dtsp-nameCont{width:100%;display:flex;flex-direction:row;justify-content:flex-start;align-content:flex-start;align-items:flex-start}div.dtsp-searchPane div.dataTables_scrollBody table tbody tr div.dtsp-nameCont span.dtsp-name{text-overflow:ellipsis;overflow:hidden;display:inline-block;vertical-align:middle;white-space:nowrap;flex-grow:1}div.dtsp-searchPane div.dataTables_scrollBody table tbody tr div.dtsp-nameCont span.badge{min-width:30px;display:inline-block;line-height:1;margin-top:3.5px}div.dtsp-searchPane div.dataTables_scrollBody table tbody tr td.dtsp-countColumn{text-align:right}div.dtsp-searchPane .dtsp-searchIcon{display:block;position:relative;padding:18px 13px;border:1px solid #ced4da}div.dtsp-searchPane div.dataTables_wrapper div.dataTables_filter{display:none}div.dtsp-searchPane div.dataTables_wrapper div.row{margin-left:-7px;margin-right:-7px}div.dtsp-searchPane div.badge{min-width:30px}div.dtsp-panes{padding:5px;border:2px solid #f0f0f0;border-radius:10px;margin:5px;clear:both}div.dtsp-panes div.dtsp-titleRow{padding-bottom:10px;padding-left:20px;padding-right:20px}div.dtsp-panes div.dtsp-title{float:left;margin-bottom:0px;margin-top:10px;padding-left:0;padding-right:0}div.dtsp-panes button.dtsp-clearAll{float:right}div.dtsp-hidden{display:none !important}@media screen and (max-width: 767px){div.dtsp-columns-4,div.dtsp-columns-5,div.dtsp-columns-6{max-width:31% !important;min-width:31% !important}}@media screen and (max-width: 640px){div.dtsp-searchPanes{flex-direction:column !important}div.dtsp-searchPane{max-width:98% !important;min-width:98% !important}} +div.dtsp-topRow{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-around;align-content:flex-start;align-items:flex-start}div.dtsp-topRow input.dtsp-search{text-overflow:ellipsis}div.dtsp-topRow div.dtsp-subRow1{display:flex;flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:0}div.dtsp-topRow div.dtsp-searchCont{display:flex;flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:0}div.dtsp-topRow button.dtsp-nameButton{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAK2SURBVFgJ7ZY9j41BFICvryCExrJBQ6HyEYVEIREaUZDQIRoR2ViJKCioxV+gkVXYTVZEQiEUhG2EQnxUCh0FKolY4ut5XnM2cyfva3Pt5m7EPcmzZ2bemTNnzjkzd1utnvQi0IvAfxiBy5z5FoxO89kPY+8mbMjtzs47RXs5/WVpbAG6bWExt5PuIibvhVkwmC+ck3eK9ln6/fAddFojYzBVuYSBpcnIEvRaqOw2RcaN18FPuJH0JvRUxbT3wWf4ltiKPgfVidWlbGZgPozDFfgAC+EA/K2EI4cwcAJ+gPaeQ+VQU2SOMMGcPgPl/m/V2p50rrbRsRgt9Iv5h6xtpP22Bz7Ce1C+gFFxfKzOmShcU+Qmyh2w3w8rIJfddHTck66EukL/xPhj+JM8rHNmFys0Pg4v0up3aFNlwR9NYyodd3OL/C64zpsymcTFcf6ElM4YzjAWKYrJkaq8kE/yUYNP4BoYvS1QRo+hNtF5xfkTUjoTheukSFFMjlTFm6PjceOca/SMpKfeCR1L6Uzk/y2WIkVhNFJlJAZhP+hYns7b9D3IPuhY5mYrIv8OrQJvR5NYyNaW4jsU8pSGNySiVx4o5tXq3JkoXE/mg5R/M8dGJCJpKhaDcjBRdbI/Rm8g69c122om33BHmj2CHoV5qa9jUXBraJ+G1fAVjIBO1klc87ro1K4JZ/K35SWW3TwcyDd6TecqnAEd8cGq2+w84xvBm1n3vS0izKkkwh5XNC/GmFPqqAtPF89AOScKuemaNzoTV1SD5dtSbmLf1/RV+tC0WTgcj6R7HEtrVGWaqu/lYDZ/2pvxQ/kIyw/gFByHC9AHw910hv1aUUumyd8yy0QfhmEkfiNod0Xusct68J1qc8Tdux0Z97Q+hsDb+AYGYEbF/4Guw2Q/qDPqZG/zXgT+3Qj8AtKnfWhFwmuAAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:center;background-size:23px;vertical-align:bottom}div.dtsp-topRow button.dtsp-countButton{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAG5SURBVEgN3VU9LwVBFF0fiYhofUSlEQkKhU7z/oBCQkIiGr9BgUbhVzy9BAnhFyjV/AYFiU5ICM7ZN+c5Zud5dm3lJmfmzrkz9+7cu3c3y/6jjOBSF8CxXS7FmTkbwqIJjDpJvTcmsJ4K3KPZUpyZsx0sxoB9J6mnAkyC7wGuuCFIipNtEcpcWExgXpOBc78vgj6N+QO4NVsjwdFM59tUIDxDrHMBOeIQ34C5ZDregXuAQm4YcI68nN9B3wr2PcwPAIPkN2EqtJH6b+QZm1ajjTx7BqwAr26Lb+C2Kvpbt0Mb2HAJ7NrGFGfmXO3DeA4UshDfQAVmH0gaUFg852TTTDvlxwBlCtxy9zXyBhQFaq0wMmIdRebrfgosA3zb2hKnqG0oqchp4QbuR8X0TjzABhbdOT8jnQ/atcgqpnfwOA7yqZyTU587ZkIGdesLTt2EkynOnbreMUUKMI/dA4B/QVOcO13CQh+5wWCgDwo/75u59odB/wjmfhbgvACcAOyZPHihMWAoIwxyCLgf1oxfgjzVbgBXSTzIN+f0pg6s5DkcesLMRpsBrgE2XO3CN64JFP7JtUeKHX4CKtRRXFZ+7dEAAAAASUVORK5CYII=");background-repeat:no-repeat;background-position:center;background-size:18px;vertical-align:bottom}div.dtsp-topRow button.dtsp-searchIcon{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAEnSURBVCgVpdG7SgNBFIDh1RhJsBBEsDIgIhaWFjZa2GtpKb6AnU0MprKOWEjK2IuFFxCxS2lhZyOWXh5AQVER/X+zuwwywoIHvp3dM3Nm55Ik/4i+P2or5FewiBIe0cEt8ogVz9LbhEVf+cgkcew1tvAZ5PPXGm9HOMEanMAYQhunaCAazuqA1UjvILl9HGPc/n4fabjPGbzjMM2FjfkDuPw5O8JilzgA9/OKWDynyWnbsPiF7yc4SRWxmEyTN7ZhsSd7gTLW8TuGSSzBcZd2hsV+n+MNC9jGCNzjPDwsz8XCO/x02Bqeptcxhg+4gjD8YxetLOkBGRbuwcIr+NdRLMPl3uMM2YHx2gsLd+D97qKEQuGe65jCAzbgVRWOCUZuovAfs5m/AdVxL0R1AIsLAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:center;background-size:12px}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane table thead th,div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane table thead td{width:100% !important}div.dt-button-collection{z-index:2002}div.dataTables_scrollBody{background:white !important}div.dtsp-columns-1{min-width:98%;max-width:98%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-2{min-width:48%;max-width:48%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-3{min-width:30.333%;max-width:30.333%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-4{min-width:23%;max-width:23%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-5{min-width:18%;max-width:18%;padding-left:1%;padding-right:1%;margin:0px !important}div.dtsp-columns-6{min-width:15.666%;max-width:15.666%;padding-left:.5%;padding-right:.5%;margin:0px !important}div.dtsp-columns-7{min-width:13.28%;max-width:13.28%;padding-left:.5%;padding-right:.5%;margin:0px !important}div.dtsp-columns-8{min-width:11.5%;max-width:11.5%;padding-left:.5%;padding-right:.5%;margin:0px !important}div.dtsp-columns-9{min-width:11.111%;max-width:11.111%;padding-left:.5%;padding-right:.5%;margin:0px !important}div.dt-button-collection{float:none}div.dtsp-panesContainer{width:100%}div.dtsp-panesContainer div.dataTables_wrapper{width:100%}div.dtsp-searchPanes{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-evenly;align-content:flex-start;align-items:stretch;clear:both}div.dtsp-searchPanes button.btn{margin:0}div.dtsp-searchPanes button.dtsp-clearAll{max-width:50px}div.dtsp-columns-1,div.dtsp-columns-2,div.dtsp-columns-3,div.dtsp-columns-4,div.dtsp-columns-5,div.dtsp-columns-6,div.dtsp-columns-7,div.dtsp-columns-8,div.dtsp-columns-9{padding-left:0px;padding-right:0px}div.dtsp-searchPane{flex-direction:row;flex-wrap:nowrap;flex-grow:1;flex-shrink:0;flex-basis:280px;justify-content:space-around;align-content:flex-start;align-items:stretch;padding-top:0px;padding-bottom:5px;margin:5px 0;margin-top:0px;margin-bottom:0px;font-size:.9em;margin:5px}div.dtsp-searchPane div.dataTables_wrapper{flex:1}div.dtsp-searchPane div.dataTables_wrapper div.dataTables_filter{display:none}div.dtsp-searchPane div.dataTables_wrapper div.row div.col-sm-12:empty{display:none}div.dtsp-searchPane div.dataTables_wrapper div.row div.dataTables_filter{display:none}div.dtsp-searchPane div.btn-group{padding:0px}div.dtsp-searchPane div.dtsp-topRow{padding:0px !important;margin:0px;margin-bottom:.5rem}div.dtsp-searchPane div.dtsp-topRow div.dtsp-subRows{padding:0px !important;text-align:right}div.dtsp-searchPane div.dtsp-topRow div.row{width:100%}div.dtsp-searchPane div.dtsp-topRow button{min-width:35px;max-width:35px;border:1px solid #ced4da}div.dtsp-searchPane div.dtsp-topRow div.dtsp-subRow2{margin-left:5px}div.dtsp-searchPane div.dtsp-topRow button.clearButton{padding-left:10px}div.dtsp-searchPane thead{display:none}div.dtsp-searchPane .mb-3{margin-bottom:none !important}div.dtsp-searchPane .col-sm-12{padding:5px}div.dtsp-searchPane .input-group{padding:0px !important}div.dtsp-searchPane .input-group .input-group-append{display:inline-block}div.dtsp-searchPane div.dataTables_scrollHead{display:none}div.dtsp-searchPane div.dataTables_scrollBody{padding:2px;border:2px #f0f0f0 solid;border-radius:4px}div.dtsp-searchPane div.dataTables_scrollBody:hover{border:2px solid #cfcfcf !important}div.dtsp-searchPane div.dataTables_scrollBody table{table-layout:fixed}div.dtsp-searchPane div.dataTables_scrollBody table tbody tr td.dtsp-nameColumn{width:100% !important}div.dtsp-searchPane div.dataTables_scrollBody table tbody tr div.dtsp-nameCont{width:100%;display:flex;flex-direction:row;justify-content:flex-start;align-content:flex-start;align-items:flex-start}div.dtsp-searchPane div.dataTables_scrollBody table tbody tr div.dtsp-nameCont span.dtsp-name{text-overflow:ellipsis;overflow:hidden;display:inline-block;vertical-align:middle;white-space:nowrap;flex-grow:1}div.dtsp-searchPane div.dataTables_scrollBody table tbody tr div.dtsp-nameCont span.badge{min-width:30px;display:inline-block;line-height:1;margin-top:3.5px}div.dtsp-searchPane div.dataTables_scrollBody table tbody tr td.dtsp-countColumn{text-align:right}div.dtsp-searchPane .dtsp-searchIcon{display:block;position:relative;padding:18px 13px;border:1px solid #ced4da}div.dtsp-searchPane div.dataTables_wrapper div.dataTables_filter{display:none}div.dtsp-searchPane div.dataTables_wrapper div.row{margin-left:-7px;margin-right:-7px}div.dtsp-searchPane div.badge{min-width:30px}div.dtsp-panes{padding:5px;border:2px solid #f0f0f0;border-radius:10px;margin:5px;clear:both}div.dtsp-panes div.dtsp-titleRow{padding-bottom:10px;padding-left:20px;padding-right:20px}div.dtsp-panes div.dtsp-title{float:left;margin-bottom:0px;margin-top:10px;padding-left:0;padding-right:0}div.dtsp-panes button.dtsp-clearAll{float:right}div.dtsp-hidden{display:none !important}@media screen and (max-width: 767px){div.dtsp-columns-4,div.dtsp-columns-5,div.dtsp-columns-6{max-width:31% !important;min-width:31% !important}}@media screen and (max-width: 640px){div.dtsp-searchPanes{flex-direction:column !important}div.dtsp-searchPane{max-width:98% !important;min-width:98% !important}} diff --git a/plugins/datatables-searchpanes/js/dataTables.searchPanes.js b/plugins/datatables-searchpanes/js/dataTables.searchPanes.js index 3567e1df7..3f38621dd 100644 --- a/plugins/datatables-searchpanes/js/dataTables.searchPanes.js +++ b/plugins/datatables-searchpanes/js/dataTables.searchPanes.js @@ -397,6 +397,12 @@ if (data.searchPanes.panes === undefined) { data.searchPanes.panes = []; } + for (var i = 0; i < data.searchPanes.panes.length; i++) { + if (data.searchPanes.panes[i].id === _this.s.index) { + data.searchPanes.panes.splice(i, 1); + i--; + } + } // Add the panes data to the state object data.searchPanes.panes.push({ arrayFilter: arrayFilter, @@ -629,30 +635,25 @@ else if (colOpts.show === true || idx !== -1) { this.s.displayed = true; } - if (!this.s.dt.page.info().serverSide && dataIn === null) { + if (!this.s.dt.page.info().serverSide && + (dataIn === null || + dataIn.searchPanes === null || + dataIn.searchPanes.options === null)) { // Only run populatePane if the data has not been collected yet if (rowData.arrayFilter.length === 0) { this._populatePane(last); this.s.rowData.totalOptions = 0; this._detailsPane(); - if (loadedFilter && loadedFilter.searchPanes && loadedFilter.searchPanes.panes) { - // If the index is not found then no data has been added to the state for this pane, - // which will only occur if it has previously failed to meet the criteria to be - // displayed, therefore we can just hide it again here - if (idx !== -1) { - rowData.binsOriginal = loadedFilter.searchPanes.panes[idx].bins; - rowData.arrayOriginal = loadedFilter.searchPanes.panes[idx].arrayFilter; - } - else { - this.dom.container.addClass(this.classes.hidden); - this.s.displayed = false; - return; - } - } - else { - rowData.arrayOriginal = rowData.arrayTotals; - rowData.binsOriginal = rowData.binsTotal; + // If the index is not found then no data has been added to the state for this pane, + // which will only occur if it has previously failed to meet the criteria to be + // displayed, therefore we can just hide it again here + if (loadedFilter && loadedFilter.searchPanes && loadedFilter.searchPanes.panes && idx === -1) { + this.dom.container.addClass(this.classes.hidden); + this.s.displayed = false; + return; } + rowData.arrayOriginal = rowData.arrayTotals; + rowData.binsOriginal = rowData.binsTotal; } var binLength = Object.keys(rowData.binsOriginal).length; var uniqueRatio = this._uniqueRatio(binLength, table.rows()[0].length); @@ -677,7 +678,7 @@ this.dom.container.addClass(this.classes.show); this.s.displayed = true; } - else if (dataIn !== null) { + else if (dataIn !== null && dataIn.searchPanes !== null && dataIn.searchPanes.options !== null) { if (dataIn.tableLength !== undefined) { this.s.tableLength = dataIn.tableLength; this.s.rowData.totalOptions = this.s.tableLength; @@ -687,8 +688,8 @@ this.s.rowData.totalOptions = this.s.tableLength; } var colTitle = table.column(this.s.index).dataSrc(); - if (dataIn[colTitle] !== undefined) { - for (var _i = 0, _a = dataIn[colTitle]; _i < _a.length; _i++) { + if (dataIn.searchPanes.options[colTitle] !== undefined) { + for (var _i = 0, _a = dataIn.searchPanes.options[colTitle]; _i < _a.length; _i++) { var dataPoint = _a[_i]; this.s.rowData.arrayFilter.push({ display: dataPoint.label, @@ -918,7 +919,12 @@ this.s.dtPane.search($(this.dom.searchBox).val()).draw(); } // Reload the selection, searchbox entry and ordering from the previous state - if (loadedFilter && loadedFilter.searchPanes && loadedFilter.searchPanes.panes) { + // Need to check here if SSP that this is the first draw, otherwise it will infinite loop + if (loadedFilter && + loadedFilter.searchPanes && + loadedFilter.searchPanes.panes && + (dataIn === null || + dataIn.draw === 1)) { if (!this.c.cascadePanes) { this._reloadSelect(loadedFilter); } @@ -1148,6 +1154,10 @@ } else { var filter = settings.oApi._fnGetCellData(settings, rowIdx, this.s.index, colOpts.orthogonal.search); + // Null and empty string are to be considered the same value + if (filter === null) { + filter = ''; + } if (typeof filter === 'string') { filter = filter.replace(/<[^>]*>/g, ''); } @@ -1194,8 +1204,9 @@ id = rows.indexOf(filter.toString()); } if (id > -1) { + this.s.serverSelecting = true; table.row(id).select(); - this.s.dt.state.save(); + this.s.serverSelecting = false; } } } @@ -1211,6 +1222,11 @@ // For each item selected in the pane, check if it is available in the cell for (var _i = 0, _a = this.selections; _i < _a.length; _i++) { var colSelect = _a[_i]; + if (typeof colSelect.filter === 'string') { + // The filter value will not have the & in place but a &, + // so we need to do a replace to make sure that they will match + colSelect.filter = colSelect.filter.replaceAll('&', '&'); + } // if the filter is an array then is the column present in it if (Array.isArray(filter)) { if (filter.indexOf(colSelect.filter) !== -1) { @@ -1517,7 +1533,9 @@ this.s = { colOpts: [], dt: table, + filterCount: 0, filterPane: -1, + page: 0, panes: [], selectionList: [], serverData: {}, @@ -1527,18 +1545,35 @@ if (table.settings()[0]._searchPanes !== undefined) { return; } + this._getState(); + if (this.s.dt.page.info().serverSide) { + table.on('preXhr.dt', function (e, settings, data) { + if (data.searchPanes === undefined) { + data.searchPanes = {}; + } + for (var _i = 0, _a = _this.s.selectionList; _i < _a.length; _i++) { + var selection = _a[_i]; + var src = _this.s.dt.column(selection.index).dataSrc(); + if (data.searchPanes[src] === undefined) { + data.searchPanes[src] = {}; + } + for (var i = 0; i < selection.rows.length; i++) { + data.searchPanes[src][i] = selection.rows[i].filter; + } + } + }); + } // We are using the xhr event to rebuild the panes if required due to viewTotal being enabled // If viewTotal is not enabled then we simply update the data from the server table.on('xhr', function (e, settings, json, xhr) { - if (json.searchPanes && json.searchPanes.options) { - _this.s.serverData = json.searchPanes.options; + if (json && json.searchPanes && json.searchPanes.options) { + _this.s.serverData = json; _this.s.serverData.tableLength = json.recordsTotal; _this._serverTotals(); } }); table.settings()[0]._searchPanes = this; this.dom.clearAll.text(table.i18n('searchPanes.clearMessage', 'Clear All')); - this._getState(); if (this.s.dt.settings()[0]._bInitComplete || fromInit) { this._paneDeclare(table, paneSettings, opts); } @@ -2089,9 +2124,18 @@ } } // If there are no selections for this pane in the list then just push this one - if (!further && - this.s.panes[this.s.selectionList[i].index].s.dtPane.rows({ selected: true }).data().toArray().length > 0) { - newSelectionList.push(this.s.selectionList[i]); + if (!further) { + var push = false; + for (var _b = 0, _c = this.s.panes; _b < _c.length; _b++) { + var pane = _c[_b]; + if (pane.s.index === this.s.selectionList[i].index && + pane.s.dtPane.rows({ selected: true }).data().toArray().length > 0) { + push = true; + } + } + if (push) { + newSelectionList.push(this.s.selectionList[i]); + } } } this.s.selectionList = newSelectionList; @@ -2099,8 +2143,8 @@ var initIdx = -1; // If there has been a deselect and only one pane has a selection then update everything if (deselectPresent && this.s.selectionList.length === 1) { - for (var _b = 0, _c = this.s.panes; _b < _c.length; _b++) { - var pane = _c[_b]; + for (var _d = 0, _e = this.s.panes; _d < _e.length; _d++) { + var pane = _e[_d]; pane.s.lastSelect = false; pane.s.deselect = false; if (pane.s.dtPane !== undefined && pane.s.dtPane.rows({ selected: true }).data().toArray().length > 0) { @@ -2111,16 +2155,16 @@ // Otherwise if there are more 1 selections then find the last one and set it to not update that pane else if (this.s.selectionList.length > 0) { var last = this.s.selectionList[this.s.selectionList.length - 1].index; - for (var _d = 0, _e = this.s.panes; _d < _e.length; _d++) { - var pane = _e[_d]; + for (var _f = 0, _g = this.s.panes; _f < _g.length; _f++) { + var pane = _g[_f]; pane.s.lastSelect = (pane.s.index === last); pane.s.deselect = false; } } // Otherwise if there are no selections then find where that took place and do not update to maintain scrolling else if (this.s.selectionList.length === 0) { - for (var _f = 0, _g = this.s.panes; _f < _g.length; _f++) { - var pane = _g[_f]; + for (var _h = 0, _j = this.s.panes; _h < _j.length; _h++) { + var pane = _j[_h]; // pane.s.lastSelect = (pane.s.deselect === true); pane.s.lastSelect = false; pane.s.deselect = false; @@ -2128,8 +2172,8 @@ } $$1(this.dom.panes).empty(); // Rebuild the desired panes - for (var _h = 0, _j = this.s.panes; _h < _j.length; _h++) { - var pane = _j[_h]; + for (var _k = 0, _l = this.s.panes; _k < _l.length; _k++) { + var pane = _l[_k]; if (!pane.s.lastSelect) { pane.rebuildPane(undefined, this.s.dt.page.info().serverSide ? this.s.serverData : undefined, pane.s.index === initIdx ? true : null, true); } @@ -2222,15 +2266,70 @@ } data.searchPanes.selectionList = _this.s.selectionList; }); + if (this.s.dt.page.info().serverSide) { + table.off('page'); + table.on('page', function () { + _this.s.page = _this.s.dt.page(); + }); + table.off('preXhr.dt'); + table.on('preXhr.dt', function (e, settings, data) { + if (data.searchPanes === undefined) { + data.searchPanes = {}; + } + // Count how many filters are being applied + var filterCount = 0; + for (var _i = 0, _a = _this.s.panes; _i < _a.length; _i++) { + var pane = _a[_i]; + var src = _this.s.dt.column(pane.s.index).dataSrc(); + if (data.searchPanes[src] === undefined) { + data.searchPanes[src] = {}; + } + if (pane.s.dtPane !== undefined) { + var rowData = pane.s.dtPane.rows({ selected: true }).data().toArray(); + for (var i = 0; i < rowData.length; i++) { + data.searchPanes[src][i] = rowData[i].filter; + filterCount++; + } + } + } + if (_this.c.viewTotal) { + _this._prepViewTotal(); + } + // If there is a filter to be applied, then we need to read from the start of the result set + // and set the paging to 0. This matches the behaviour of client side processing + if (filterCount > 0) { + // If the number of filters has changed we need to read from the start of the result set and reset the paging + if (filterCount !== _this.s.filterCount) { + data.start = 0; + _this.s.page = 0; + } + // Otherwise it is a paging request and we need to read from whatever the paging has been set to + else { + data.start = _this.s.page * _this.s.dt.page.len(); + } + _this.s.dt.page(_this.s.page); + _this.s.filterCount = filterCount; + } + }); + } + else { + table.on('preXhr.dt', function (e, settings, data) { + for (var _i = 0, _a = _this.s.panes; _i < _a.length; _i++) { + var pane = _a[_i]; + pane.clearData(); + } + }); + } // If the data is reloaded from the server then it is possible that it has changed completely, // so we need to rebuild the panes - this.s.dt.on('xhr', function () { + this.s.dt.on('xhr', function (e, settings, json, xhr) { var processing = false; if (!_this.s.dt.page.info().serverSide) { _this.s.dt.one('preDraw', function () { if (processing) { return; } + var page = _this.s.dt.page(); processing = true; $$1(_this.dom.panes).empty(); for (var _i = 0, _a = _this.s.panes; _i < _a.length; _i++) { @@ -2252,6 +2351,9 @@ _this._updateSelection(); } _this._checkMessage(); + _this.s.dt.one('draw', function () { + _this.s.dt.page(page).draw(false); + }); }); } }); @@ -2260,7 +2362,10 @@ var pane = _j[_h]; if (pane !== undefined && pane.s.dtPane !== undefined && - (pane.s.colOpts.preSelect !== undefined || pane.customPaneSettings.preSelect !== undefined)) { + ((pane.s.colOpts.preSelect !== undefined && pane.s.colOpts.preSelect.length > 0) || + (pane.customPaneSettings !== null && + pane.customPaneSettings.preSelect !== undefined && + pane.customPaneSettings.preSelect.length > 0))) { var tableLength = pane.s.dtPane.rows().data().toArray().length; for (var i = 0; i < tableLength; i++) { if (pane.s.colOpts.preSelect.indexOf(pane.s.dtPane.cell(i, 0).data()) !== -1 || @@ -2303,37 +2408,6 @@ _this.clearSelections(); }); } - if (this.s.dt.page.info().serverSide) { - table.on('preXhr.dt', function (e, settings, data) { - if (data.searchPanes === undefined) { - data.searchPanes = {}; - } - for (var _i = 0, _a = _this.s.panes; _i < _a.length; _i++) { - var pane = _a[_i]; - var src = _this.s.dt.column(pane.s.index).dataSrc(); - if (data.searchPanes[src] === undefined) { - data.searchPanes[src] = {}; - } - if (pane.s.dtPane !== undefined) { - var rowData = pane.s.dtPane.rows({ selected: true }).data().toArray(); - for (var i = 0; i < rowData.length; i++) { - data.searchPanes[src][i] = rowData[i].filter; - } - } - } - if (_this.c.viewTotal) { - _this._prepViewTotal(); - } - }); - } - else { - table.on('preXhr.dt', function (e, settings, data) { - for (var _i = 0, _a = _this.s.panes; _i < _a.length; _i++) { - var pane = _a[_i]; - pane.clearData(); - } - }); - } table.settings()[0]._searchPanes = this; }; SearchPanes.prototype._prepViewTotal = function () { diff --git a/plugins/datatables-searchpanes/js/dataTables.searchPanes.min.js b/plugins/datatables-searchpanes/js/dataTables.searchPanes.min.js index 16c769182..e18a04d29 100644 --- a/plugins/datatables-searchpanes/js/dataTables.searchPanes.min.js +++ b/plugins/datatables-searchpanes/js/dataTables.searchPanes.min.js @@ -2,88 +2,90 @@ SearchPanes 1.2.1 2019-2020 SpryMedia Ltd - datatables.net/license */ -(function(){var g,q,t,l=function(a,b,c,d,e,h){var f=this;void 0===h&&(h=null);if(!q||!q.versionCheck||!q.versionCheck("1.10.0"))throw Error("SearchPane requires DataTables 1.10 or newer");if(!q.select)throw Error("SearchPane requires Select");a=new q.Api(a);this.classes=g.extend(!0,{},l.classes);this.c=g.extend(!0,{},l.defaults,b);this.customPaneSettings=h;this.s={cascadeRegen:!1,clearing:!1,colOpts:[],deselect:!1,displayed:!1,dt:a,dtPane:void 0,filteringActive:!1,index:c,indexes:[],lastCascade:!1, -lastSelect:!1,listSet:!1,name:void 0,redraw:!1,rowData:{arrayFilter:[],arrayOriginal:[],arrayTotals:[],bins:{},binsOriginal:{},binsTotal:{},filterMap:new Map,totalOptions:0},scrollTop:0,searchFunction:void 0,selectPresent:!1,serverSelect:[],serverSelecting:!1,showFiltered:!1,tableLength:null,updating:!1};b=a.columns().eq(0).toArray().length;this.colExists=this.s.index").addClass(this.classes.buttonGroup),clear:g('').addClass(this.classes.dull).addClass(this.classes.paneButton).addClass(this.classes.clearButton), -container:g("
").addClass(this.classes.container).addClass(this.classes.layout+(10>b?d:d.split("-")[0]+"-9")),countButton:g('').addClass(this.classes.paneButton).addClass(this.classes.countButton),dtP:g("
"+(this.colExists?g(a.column(this.colExists?this.s.index:0).header()).text():this.customPaneSettings.header||"Custom Pane")+"
"),lower:g("
").addClass(this.classes.subRow2).addClass(this.classes.narrowButton), -nameButton:g('').addClass(this.classes.paneButton).addClass(this.classes.nameButton),panesContainer:e,searchBox:g("").addClass(this.classes.paneInputButton).addClass(this.classes.search),searchButton:g('').addClass(this.classes.paneButton),searchCont:g("
").addClass(this.classes.searchCont),searchLabelCont:g("
").addClass(this.classes.searchLabelCont),topRow:g("
").addClass(this.classes.topRow), -upper:g("
").addClass(this.classes.subRow1).addClass(this.classes.narrowSearch)};this.s.displayed=!1;a=this.s.dt;this.selections=[];this.s.colOpts=this.colExists?this._getOptions():this._getBonusOptions();var o=this.s.colOpts,d=g('').addClass(this.classes.paneButton);g(d).text(a.i18n("searchPanes.clearPane","X"));this.dom.container.addClass(o.className);this.dom.container.addClass(null!==this.customPaneSettings&&void 0!==this.customPaneSettings.className?this.customPaneSettings.className: -"");this.s.name=void 0!==this.s.colOpts.name?this.s.colOpts.name:null!==this.customPaneSettings&&void 0!==this.customPaneSettings.name?this.customPaneSettings.name:this.colExists?g(a.column(this.s.index).header()).text():this.customPaneSettings.header||"Custom Pane";g(e).append(this.dom.container);var n=a.table(0).node();this.s.searchFunction=function(a,b,d){if(0===f.selections.length||a.nTable!==n)return!0;a=null;f.colExists&&(a=b[f.s.index],"filter"!==o.orthogonal.filter&&(a=f.s.rowData.filterMap.get(d), -a instanceof g.fn.dataTable.Api&&(a=a.toArray())));return f._search(a,d)};g.fn.dataTable.ext.search.push(this.s.searchFunction);if(this.c.clear)g(d).on("click",function(){f.dom.container.find(f.classes.search).each(function(){g(this).val("");g(this).trigger("input")});f.clearPane()});a.on("draw.dtsp",function(){f._adjustTopRow()});a.on("buttons-action",function(){f._adjustTopRow()});g(window).on("resize.dtsp",q.util.throttle(function(){f._adjustTopRow()}));a.on("column-reorder.dtsp",function(a,b, -d){f.s.index=d.mapping[f.s.index]});return this};l.prototype.clearData=function(){this.s.rowData={arrayFilter:[],arrayOriginal:[],arrayTotals:[],bins:{},binsOriginal:{},binsTotal:{},filterMap:new Map,totalOptions:0}};l.prototype.clearPane=function(){this.s.dtPane.rows({selected:!0}).deselect();this.updateTable();return this};l.prototype.destroy=function(){g(this.s.dtPane).off(".dtsp");g(this.s.dt).off(".dtsp");g(this.dom.nameButton).off(".dtsp");g(this.dom.countButton).off(".dtsp");g(this.dom.clear).off(".dtsp"); -g(this.dom.searchButton).off(".dtsp");g(this.dom.container).remove();for(var a=g.fn.dataTable.ext.search.indexOf(this.s.searchFunction);-1!==a;)g.fn.dataTable.ext.search.splice(a,1),a=g.fn.dataTable.ext.search.indexOf(this.s.searchFunction);void 0!==this.s.dtPane&&this.s.dtPane.destroy();this.s.listSet=!1};l.prototype.getPaneCount=function(){return void 0!==this.s.dtPane?this.s.dtPane.rows({selected:!0}).data().toArray().length:0};l.prototype.rebuildPane=function(a,b,c,d){void 0===a&&(a=!1);void 0=== -b&&(b=null);void 0===c&&(c=null);void 0===d&&(d=!1);this.clearData();var e=[];this.s.serverSelect=[];var h=null;void 0!==this.s.dtPane&&(d&&(this.s.dt.page.info().serverSide?this.s.serverSelect=this.s.dtPane.rows({selected:!0}).data().toArray():e=this.s.dtPane.rows({selected:!0}).data().toArray()),this.s.dtPane.clear().destroy(),h=g(this.dom.container).prev(),this.destroy(),this.s.dtPane=void 0,g.fn.dataTable.ext.search.push(this.s.searchFunction));this.dom.container.removeClass(this.classes.hidden); -this.s.displayed=!1;this._buildPane(!this.s.dt.page.info().serverSide?e:this.s.serverSelect,a,b,c,h);return this};l.prototype.removePane=function(){this.s.displayed=!1;g(this.dom.container).hide()};l.prototype.setCascadeRegen=function(a){this.s.cascadeRegen=a};l.prototype.setClear=function(a){this.s.clearing=a};l.prototype.updatePane=function(a){void 0===a&&(a=!1);this.s.updating=!0;this._updateCommon(a);this.s.updating=!1};l.prototype.updateTable=function(){this.selections=this.s.dtPane.rows({selected:!0}).data().toArray(); -this._searchExtras();(this.c.cascadePanes||this.c.viewTotal)&&this.updatePane()};l.prototype._setListeners=function(){var a=this,b=this.s.rowData,c;this.s.dtPane.on("select.dtsp",function(){clearTimeout(c);a.s.dt.page.info().serverSide&&!a.s.updating?a.s.serverSelecting||(a.s.serverSelect=a.s.dtPane.rows({selected:!0}).data().toArray(),a.s.scrollTop=g(a.s.dtPane.table().node()).parent()[0].scrollTop,a.s.selectPresent=!0,a.s.dt.draw(!1)):(g(a.dom.clear).removeClass(a.classes.dull),a.s.selectPresent= -!0,a.s.updating||a._makeSelection(),a.s.selectPresent=!1)});this.s.dtPane.on("deselect.dtsp",function(){c=setTimeout(function(){a.s.dt.page.info().serverSide&&!a.s.updating?a.s.serverSelecting||(a.s.serverSelect=a.s.dtPane.rows({selected:!0}).data().toArray(),a.s.deselect=!0,a.s.dt.draw(!1)):(a.s.deselect=!0,0===a.s.dtPane.rows({selected:!0}).data().toArray().length&&g(a.dom.clear).addClass(a.classes.dull),a._makeSelection(),a.s.deselect=!1,a.s.dt.state.save())},50)});this.s.dt.on("stateSaveParams.dtsp", -function(d,c,h){if(g.isEmptyObject(h))a.s.dtPane.state.clear();else{var d=[],f,o,n,j;void 0!==a.s.dtPane&&(d=a.s.dtPane.rows({selected:!0}).data().map(function(a){return a.filter.toString()}).toArray(),f=g(a.dom.searchBox).val(),o=a.s.dtPane.order(),n=b.binsOriginal,j=b.arrayOriginal);void 0===h.searchPanes&&(h.searchPanes={});void 0===h.searchPanes.panes&&(h.searchPanes.panes=[]);h.searchPanes.panes.push({arrayFilter:j,bins:n,id:a.s.index,order:o,searchTerm:f,selected:d})}});this.s.dtPane.on("user-select.dtsp", -function(a,b,c,f,o){o.stopPropagation()});this.s.dtPane.on("draw.dtsp",function(){a._adjustTopRow()});g(this.dom.nameButton).on("click.dtsp",function(){var b=a.s.dtPane.order()[0][1];a.s.dtPane.order([0,"asc"===b?"desc":"asc"]).draw();a.s.dt.state.save()});g(this.dom.countButton).on("click.dtsp",function(){var b=a.s.dtPane.order()[0][1];a.s.dtPane.order([1,"asc"===b?"desc":"asc"]).draw();a.s.dt.state.save()});g(this.dom.clear).on("click.dtsp",function(){a.dom.container.find("."+a.classes.search).each(function(){g(this).val(""); -g(this).trigger("input")});a.clearPane()});g(this.dom.searchButton).on("click.dtsp",function(){g(a.dom.searchBox).focus()});g(this.dom.searchBox).on("input.dtsp",function(){a.s.dtPane.search(g(a.dom.searchBox).val()).draw();a.s.dt.state.save()});this.s.dt.state.save();return!0};l.prototype._addOption=function(a,b,c,d,e,h){if(Array.isArray(a)||a instanceof q.Api)if(a instanceof q.Api&&(a=a.toArray(),b=b.toArray()),a.length===b.length)for(var f=0;fg(a[0]).width()||252>g(d[0]).width())&&0!==g(a[0]).width()?(g(a[0]).addClass(this.classes.narrow),g(b[0]).addClass(this.classes.narrowSub).removeClass(this.classes.narrowSearch),g(c[0]).addClass(this.classes.narrowSub).removeClass(this.classes.narrowButton)):(g(a[0]).removeClass(this.classes.narrow),g(b[0]).removeClass(this.classes.narrowSub).addClass(this.classes.narrowSearch),g(c[0]).removeClass(this.classes.narrowSub).addClass(this.classes.narrowButton))};l.prototype._buildPane= -function(a,b,c,d,e){var h=this;void 0===a&&(a=[]);void 0===b&&(b=!1);void 0===c&&(c=null);void 0===d&&(d=null);void 0===e&&(e=null);this.selections=[];var f=this.s.dt,o=f.column(this.colExists?this.s.index:0),n=this.s.colOpts,j=this.s.rowData,i=f.i18n("searchPanes.count","{total}"),l=f.i18n("searchPanes.countFiltered","{shown} ({total})"),p=f.state.loaded();this.s.listSet&&(p=f.state());if(this.colExists){var m=-1;if(p&&p.searchPanes&&p.searchPanes.panes)for(var k=0;kthis.c.threshold:c>n.threshold)||!0!==n.show&&1>=k)){this.dom.container.addClass(this.classes.hidden);this.s.displayed=!1;return}this.c.viewTotal&&0===j.arrayTotals.length?(this.s.rowData.totalOptions=0,this._detailsPane()):j.binsTotal=j.bins;this.dom.container.addClass(this.classes.show); -this.s.displayed=!0}else if(null!==c){if(void 0!==c.tableLength)this.s.tableLength=c.tableLength,this.s.rowData.totalOptions=this.s.tableLength;else if(null===this.s.tableLength||f.rows()[0].length>this.s.tableLength)this.s.tableLength=f.rows()[0].length,this.s.rowData.totalOptions=this.s.tableLength;b=f.column(this.s.index).dataSrc();if(void 0!==c[b]){k=0;for(c=c[b];kthis.c.threshold:c>n.threshold)||!0!==n.show&&1>=k)){this.dom.container.addClass(this.classes.hidden);this.s.displayed=!1;return}this.s.rowData.arrayOriginal=this.s.rowData.arrayFilter;this.s.rowData.binsOriginal=this.s.rowData.bins;this.s.displayed=!0}}else this.s.displayed= -!0;this._displayPane();if(!this.s.listSet)this.dom.dtP.on("stateLoadParams.dt",function(a,b,d){g.isEmptyObject(f.state.loaded())&&g.each(d,function(a){delete d[a]})});null!==e&&0'+c+"";if(h.c.hideCount||n.hideCount)b="";return'
]*>/)!==null?a.replace(/<[^>]*>/g,""):a)+'" class="'+h.classes.name+'">'+a+""+b+"
"},targets:0,type:void 0!==f.settings()[0].aoColumns[this.s.index]?f.settings()[0].aoColumns[this.s.index]._sManualType:null},{className:"dtsp-countColumn "+this.classes.badgePill,data:"shown",orderData:[1,2],targets:1,visible:!1},{data:"total",targets:2,visible:!1}],deferRender:!0,dom:"t",info:!1,language:this.s.dt.settings()[0].oLanguage,paging:e?!0:!1,scrollX:!1,scrollY:"200px",scroller:e? -!0:!1,select:!0,stateSave:f.settings()[0].oFeatures.bStateSave?!0:!1},this.c.dtOpts,void 0!==n?n.dtOpts:{},void 0!==this.s.colOpts.options||!this.colExists?{createdRow:function(a,b){g(a).addClass(b.className)}}:void 0,null!==this.customPaneSettings&&void 0!==this.customPaneSettings.dtOpts?this.customPaneSettings.dtOpts:{}));g(this.dom.dtP).addClass(this.classes.table);g(this.dom.searchBox).attr("placeholder",void 0!==n.header?n.header:this.colExists?f.settings()[0].aoColumns[this.s.index].sTitle: -this.customPaneSettings.header||"Custom Pane");g.fn.dataTable.select.init(this.s.dtPane);g.fn.dataTable.ext.errMode=k;if(this.colExists){var o=(o=o.search())?o.substr(1,o.length-2).split("|"):[],r=0;j.arrayFilter.forEach(function(a){""===a.filter&&r++});k=0;for(e=j.arrayFilter.length;k]*>/g,""));this.s.rowData.filterMap.set(a,h);d[h]?d[h]++:(d[h]=1,this._addOption(h,c.oApi._fnGetCellData(c,a,this.s.index,e.orthogonal.display),c.oApi._fnGetCellData(c,a,this.s.index,e.orthogonal.sort),c.oApi._fnGetCellData(c,a,this.s.index,e.orthogonal.type),b,d));this.s.rowData.totalOptions++}};l.prototype._reloadSelect=function(a){if(void 0!==a){for(var b,c=0;cNo Data",hideCount:!1,layout:"columns-3",name:void 0,orderable:!0,orthogonal:{display:"display",filter:"filter",hideCount:!1,search:"filter",show:void 0,sort:"sort",threshold:0.6,type:"type"},preSelect:[],threshold:0.6,viewTotal:!1};t=l;var i,s,u,m=function(a,b,c){var d=this;void 0===c&&(c=!1);this.regenerating=!1;if(!s||!s.versionCheck||!s.versionCheck("1.10.0"))throw Error("SearchPane requires DataTables 1.10 or newer"); -if(!s.select)throw Error("SearchPane requires Select");var e=new s.Api(a);this.classes=i.extend(!0,{},m.classes);this.c=i.extend(!0,{},m.defaults,b);this.dom={clearAll:i('').addClass(this.classes.clearAll),container:i("
").addClass(this.classes.panes).text(e.i18n("searchPanes.loadMessage","Loading Search Panes...")),emptyMessage:i("
").addClass(this.classes.emptyMessage),options:i("
").addClass(this.classes.container),panes:i("
").addClass(this.classes.container), -title:i("
").addClass(this.classes.title),titleRow:i("
").addClass(this.classes.titleRow),wrapper:i("
")};this.s={colOpts:[],dt:e,filterPane:-1,panes:[],selectionList:[],serverData:{},stateRead:!1,updating:!1};if(void 0===e.settings()[0]._searchPanes){e.on("xhr",function(a,b,c){c.searchPanes&&c.searchPanes.options&&(d.s.serverData=c.searchPanes.options,d.s.serverData.tableLength=c.recordsTotal,d._serverTotals())});e.settings()[0]._searchPanes=this;this.dom.clearAll.text(e.i18n("searchPanes.clearMessage", -"Clear All"));this._getState();if(this.s.dt.settings()[0]._bInitComplete||c)this._paneDeclare(e,a,b);else e.one("preInit.dt",function(){d._paneDeclare(e,a,b)});return this}};m.prototype.clearSelections=function(){this.dom.container.find(this.classes.search).each(function(){i(this).val("");i(this).trigger("input")});for(var a=[],b=0,c=this.s.panes;b").addClass(this.classes.buttonGroup),clear:g('').addClass(this.classes.dull).addClass(this.classes.paneButton).addClass(this.classes.clearButton), +container:g("
").addClass(this.classes.container).addClass(this.classes.layout+(10>b?c:c.split("-")[0]+"-9")),countButton:g('').addClass(this.classes.paneButton).addClass(this.classes.countButton),dtP:g("
"+(this.colExists?g(a.column(this.colExists?this.s.index:0).header()).text():this.customPaneSettings.header||"Custom Pane")+"
"),lower:g("
").addClass(this.classes.subRow2).addClass(this.classes.narrowButton), +nameButton:g('').addClass(this.classes.paneButton).addClass(this.classes.nameButton),panesContainer:f,searchBox:g("").addClass(this.classes.paneInputButton).addClass(this.classes.search),searchButton:g('').addClass(this.classes.paneButton),searchCont:g("
").addClass(this.classes.searchCont),searchLabelCont:g("
").addClass(this.classes.searchLabelCont),topRow:g("
").addClass(this.classes.topRow), +upper:g("
").addClass(this.classes.subRow1).addClass(this.classes.narrowSearch)};this.s.displayed=!1;a=this.s.dt;this.selections=[];this.s.colOpts=this.colExists?this._getOptions():this._getBonusOptions();var l=this.s.colOpts,c=g('').addClass(this.classes.paneButton);g(c).text(a.i18n("searchPanes.clearPane","X"));this.dom.container.addClass(l.className);this.dom.container.addClass(null!==this.customPaneSettings&&void 0!==this.customPaneSettings.className?this.customPaneSettings.className: +"");this.s.name=void 0!==this.s.colOpts.name?this.s.colOpts.name:null!==this.customPaneSettings&&void 0!==this.customPaneSettings.name?this.customPaneSettings.name:this.colExists?g(a.column(this.s.index).header()).text():this.customPaneSettings.header||"Custom Pane";g(f).append(this.dom.container);var p=a.table(0).node();this.s.searchFunction=function(a,b,c){if(0===e.selections.length||a.nTable!==p)return!0;a=null;e.colExists&&(a=b[e.s.index],"filter"!==l.orthogonal.filter&&(a=e.s.rowData.filterMap.get(c), +a instanceof g.fn.dataTable.Api&&(a=a.toArray())));return e._search(a,c)};g.fn.dataTable.ext.search.push(this.s.searchFunction);if(this.c.clear)g(c).on("click",function(){e.dom.container.find(e.classes.search).each(function(){g(this).val("");g(this).trigger("input")});e.clearPane()});a.on("draw.dtsp",function(){e._adjustTopRow()});a.on("buttons-action",function(){e._adjustTopRow()});g(window).on("resize.dtsp",s.util.throttle(function(){e._adjustTopRow()}));a.on("column-reorder.dtsp",function(a,b, +c){e.s.index=c.mapping[e.s.index]});return this};n.prototype.clearData=function(){this.s.rowData={arrayFilter:[],arrayOriginal:[],arrayTotals:[],bins:{},binsOriginal:{},binsTotal:{},filterMap:new Map,totalOptions:0}};n.prototype.clearPane=function(){this.s.dtPane.rows({selected:!0}).deselect();this.updateTable();return this};n.prototype.destroy=function(){g(this.s.dtPane).off(".dtsp");g(this.s.dt).off(".dtsp");g(this.dom.nameButton).off(".dtsp");g(this.dom.countButton).off(".dtsp");g(this.dom.clear).off(".dtsp"); +g(this.dom.searchButton).off(".dtsp");g(this.dom.container).remove();for(var a=g.fn.dataTable.ext.search.indexOf(this.s.searchFunction);-1!==a;)g.fn.dataTable.ext.search.splice(a,1),a=g.fn.dataTable.ext.search.indexOf(this.s.searchFunction);void 0!==this.s.dtPane&&this.s.dtPane.destroy();this.s.listSet=!1};n.prototype.getPaneCount=function(){return void 0!==this.s.dtPane?this.s.dtPane.rows({selected:!0}).data().toArray().length:0};n.prototype.rebuildPane=function(a,b,d,c){void 0===a&&(a=!1);void 0=== +b&&(b=null);void 0===d&&(d=null);void 0===c&&(c=!1);this.clearData();var f=[];this.s.serverSelect=[];var h=null;void 0!==this.s.dtPane&&(c&&(this.s.dt.page.info().serverSide?this.s.serverSelect=this.s.dtPane.rows({selected:!0}).data().toArray():f=this.s.dtPane.rows({selected:!0}).data().toArray()),this.s.dtPane.clear().destroy(),h=g(this.dom.container).prev(),this.destroy(),this.s.dtPane=void 0,g.fn.dataTable.ext.search.push(this.s.searchFunction));this.dom.container.removeClass(this.classes.hidden); +this.s.displayed=!1;this._buildPane(!this.s.dt.page.info().serverSide?f:this.s.serverSelect,a,b,d,h);return this};n.prototype.removePane=function(){this.s.displayed=!1;g(this.dom.container).hide()};n.prototype.setCascadeRegen=function(a){this.s.cascadeRegen=a};n.prototype.setClear=function(a){this.s.clearing=a};n.prototype.updatePane=function(a){void 0===a&&(a=!1);this.s.updating=!0;this._updateCommon(a);this.s.updating=!1};n.prototype.updateTable=function(){this.selections=this.s.dtPane.rows({selected:!0}).data().toArray(); +this._searchExtras();(this.c.cascadePanes||this.c.viewTotal)&&this.updatePane()};n.prototype._setListeners=function(){var a=this,b=this.s.rowData,d;this.s.dtPane.on("select.dtsp",function(){clearTimeout(d);a.s.dt.page.info().serverSide&&!a.s.updating?a.s.serverSelecting||(a.s.serverSelect=a.s.dtPane.rows({selected:!0}).data().toArray(),a.s.scrollTop=g(a.s.dtPane.table().node()).parent()[0].scrollTop,a.s.selectPresent=!0,a.s.dt.draw(!1)):(g(a.dom.clear).removeClass(a.classes.dull),a.s.selectPresent= +!0,a.s.updating||a._makeSelection(),a.s.selectPresent=!1)});this.s.dtPane.on("deselect.dtsp",function(){d=setTimeout(function(){a.s.dt.page.info().serverSide&&!a.s.updating?a.s.serverSelecting||(a.s.serverSelect=a.s.dtPane.rows({selected:!0}).data().toArray(),a.s.deselect=!0,a.s.dt.draw(!1)):(a.s.deselect=!0,0===a.s.dtPane.rows({selected:!0}).data().toArray().length&&g(a.dom.clear).addClass(a.classes.dull),a._makeSelection(),a.s.deselect=!1,a.s.dt.state.save())},50)});this.s.dt.on("stateSaveParams.dtsp", +function(c,d,h){if(g.isEmptyObject(h))a.s.dtPane.state.clear();else{var c=[],e,l,p,j;void 0!==a.s.dtPane&&(c=a.s.dtPane.rows({selected:!0}).data().map(function(a){return a.filter.toString()}).toArray(),e=g(a.dom.searchBox).val(),l=a.s.dtPane.order(),p=b.binsOriginal,j=b.arrayOriginal);void 0===h.searchPanes&&(h.searchPanes={});void 0===h.searchPanes.panes&&(h.searchPanes.panes=[]);for(d=0;dg(a[0]).width()||252>g(c[0]).width())&&0!==g(a[0]).width()?(g(a[0]).addClass(this.classes.narrow),g(b[0]).addClass(this.classes.narrowSub).removeClass(this.classes.narrowSearch),g(d[0]).addClass(this.classes.narrowSub).removeClass(this.classes.narrowButton)):(g(a[0]).removeClass(this.classes.narrow), +g(b[0]).removeClass(this.classes.narrowSub).addClass(this.classes.narrowSearch),g(d[0]).removeClass(this.classes.narrowSub).addClass(this.classes.narrowButton))};n.prototype._buildPane=function(a,b,d,c,f){var h=this;void 0===a&&(a=[]);void 0===b&&(b=!1);void 0===d&&(d=null);void 0===c&&(c=null);void 0===f&&(f=null);this.selections=[];var e=this.s.dt,l=e.column(this.colExists?this.s.index:0),p=this.s.colOpts,j=this.s.rowData,i=e.i18n("searchPanes.count","{total}"),n=e.i18n("searchPanes.countFiltered", +"{shown} ({total})"),k=e.state.loaded();this.s.listSet&&(k=e.state());if(this.colExists){var o=-1;if(k&&k.searchPanes&&k.searchPanes.panes)for(var m=0;mthis.c.threshold:b>p.threshold)||!0!==p.show&&1>=m)){this.dom.container.addClass(this.classes.hidden); +this.s.displayed=!1;return}this.c.viewTotal&&0===j.arrayTotals.length?(this.s.rowData.totalOptions=0,this._detailsPane()):j.binsTotal=j.bins;this.dom.container.addClass(this.classes.show);this.s.displayed=!0}else if(null!==d&&null!==d.searchPanes&&null!==d.searchPanes.options){if(void 0!==d.tableLength)this.s.tableLength=d.tableLength,this.s.rowData.totalOptions=this.s.tableLength;else if(null===this.s.tableLength||e.rows()[0].length>this.s.tableLength)this.s.tableLength=e.rows()[0].length,this.s.rowData.totalOptions= +this.s.tableLength;b=e.column(this.s.index).dataSrc();if(void 0!==d.searchPanes.options[b]){m=0;for(b=d.searchPanes.options[b];mthis.c.threshold:b>p.threshold)||!0!==p.show&&1>=m)){this.dom.container.addClass(this.classes.hidden);this.s.displayed=!1;return}this.s.rowData.arrayOriginal=this.s.rowData.arrayFilter;this.s.rowData.binsOriginal=this.s.rowData.bins;this.s.displayed=!0}}else this.s.displayed=!0;this._displayPane();if(!this.s.listSet)this.dom.dtP.on("stateLoadParams.dt",function(a,b,c){g.isEmptyObject(e.state.loaded())&&g.each(c,function(a){delete c[a]})});null!==f&&0'+c+"";if(h.c.hideCount||p.hideCount)b="";return'
]*>/)!==null?a.replace(/<[^>]*>/g,""):a)+'" class="'+h.classes.name+'">'+a+""+b+"
"},targets:0,type:void 0!==e.settings()[0].aoColumns[this.s.index]?e.settings()[0].aoColumns[this.s.index]._sManualType:null},{className:"dtsp-countColumn "+ +this.classes.badgePill,data:"shown",orderData:[1,2],targets:1,visible:!1},{data:"total",targets:2,visible:!1}],deferRender:!0,dom:"t",info:!1,language:this.s.dt.settings()[0].oLanguage,paging:f?!0:!1,scrollX:!1,scrollY:"200px",scroller:f?!0:!1,select:!0,stateSave:e.settings()[0].oFeatures.bStateSave?!0:!1},this.c.dtOpts,void 0!==p?p.dtOpts:{},void 0!==this.s.colOpts.options||!this.colExists?{createdRow:function(a,b){g(a).addClass(b.className)}}:void 0,null!==this.customPaneSettings&&void 0!==this.customPaneSettings.dtOpts? +this.customPaneSettings.dtOpts:{}));g(this.dom.dtP).addClass(this.classes.table);g(this.dom.searchBox).attr("placeholder",void 0!==p.header?p.header:this.colExists?e.settings()[0].aoColumns[this.s.index].sTitle:this.customPaneSettings.header||"Custom Pane");g.fn.dataTable.select.init(this.s.dtPane);g.fn.dataTable.ext.errMode=m;if(this.colExists){var l=(l=l.search())?l.substr(1,l.length-2).split("|"):[],q=0;j.arrayFilter.forEach(function(a){""===a.filter&&q++});m=0;for(f=j.arrayFilter.length;m]*>/g,""));this.s.rowData.filterMap.set(a,h);c[h]?c[h]++:(c[h]=1,this._addOption(h,d.oApi._fnGetCellData(d,a,this.s.index,f.orthogonal.display),d.oApi._fnGetCellData(d,a,this.s.index,f.orthogonal.sort),d.oApi._fnGetCellData(d,a,this.s.index,f.orthogonal.type), +b,c));this.s.rowData.totalOptions++}};n.prototype._reloadSelect=function(a){if(void 0!==a){for(var b,d=0;dNo Data",hideCount:!1,layout:"columns-3",name:void 0,orderable:!0,orthogonal:{display:"display",filter:"filter",hideCount:!1,search:"filter", +show:void 0,sort:"sort",threshold:0.6,type:"type"},preSelect:[],threshold:0.6,viewTotal:!1};t=n;var i,r,u,k=function(a,b,d){var c=this;void 0===d&&(d=!1);this.regenerating=!1;if(!r||!r.versionCheck||!r.versionCheck("1.10.0"))throw Error("SearchPane requires DataTables 1.10 or newer");if(!r.select)throw Error("SearchPane requires Select");var f=new r.Api(a);this.classes=i.extend(!0,{},k.classes);this.c=i.extend(!0,{},k.defaults,b);this.dom={clearAll:i('').addClass(this.classes.clearAll), +container:i("
").addClass(this.classes.panes).text(f.i18n("searchPanes.loadMessage","Loading Search Panes...")),emptyMessage:i("
").addClass(this.classes.emptyMessage),options:i("
").addClass(this.classes.container),panes:i("
").addClass(this.classes.container),title:i("
").addClass(this.classes.title),titleRow:i("
").addClass(this.classes.titleRow),wrapper:i("
")};this.s={colOpts:[],dt:f,filterCount:0,filterPane:-1,page:0,panes:[],selectionList:[],serverData:{}, +stateRead:!1,updating:!1};if(void 0===f.settings()[0]._searchPanes){this._getState();if(this.s.dt.page.info().serverSide)f.on("preXhr.dt",function(a,b,d){void 0===d.searchPanes&&(d.searchPanes={});a=0;for(b=c.s.selectionList;a0){if(a!==b.s.filterCount){e.start=0;b.s.page=0}else e.start=b.s.page*b.s.dt.page.len(); +b.s.dt.page(b.s.page);b.s.filterCount=a}});else a.on("preXhr.dt",function(){for(var a=0,c=b.s.panes;a").css({position:"fixed",top:0,left:-1*h(E).scrollLeft(),height:1, -width:1,overflow:"hidden"}).append(h("
").css({position:"absolute",top:1,left:1,width:100,overflow:"scroll"}).append(h("
").css({width:"100%",height:10}))).appendTo("body"),d=c.children(),e=d.children();b.barWidth=d[0].offsetWidth-d[0].clientWidth;b.bScrollOversize=100===e[0].offsetWidth&&100!==d[0].clientWidth;b.bScrollbarLeft=1!==Math.round(e.offset().left);b.bBounding=c[0].getBoundingClientRect().width?!0:!1;c.remove()}h.extend(a.oBrowser,n.__browser);a.oScroll.iBarWidth=n.__browser.barWidth} -function jb(a,b,c,d,e,f){var g,j=!1;c!==k&&(g=c,j=!0);for(;d!==e;)a.hasOwnProperty(d)&&(g=j?b(g,a[d],d,a):a[d],j=!0,d+=f);return g}function Ga(a,b){var c=n.defaults.column,d=a.aoColumns.length,c=h.extend({},n.models.oColumn,c,{nTh:b?b:H.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=h.extend({},n.models.oSearch,c[d]);la(a,d,h(b).data())}function la(a,b,c){var b=a.aoColumns[b], -d=a.oClasses,e=h(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=e.attr("width")||null;var f=(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);f&&(b.sWidthOrig=f[1])}c!==k&&null!==c&&(hb(c),J(n.defaults.column,c,!0),c.mDataProp!==k&&!c.mData&&(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),c.sClass&&e.addClass(c.sClass),h.extend(b,c),F(b,c,"sWidth","sWidthOrig"),c.iDataSort!==k&&(b.aDataSort=[c.iDataSort]),F(b,c,"aDataSort"));var g=b.mData,j=S(g),i= +"");"boolean"===typeof a.scrollX&&(a.scrollX=a.scrollX?"100%":"");if(a=a.aoSearchCols)for(var b=0,c=a.length;b").css({position:"fixed",top:0,left:-1*h(E).scrollLeft(),height:1, +width:1,overflow:"hidden"}).append(h("
").css({position:"absolute",top:1,left:1,width:100,overflow:"scroll"}).append(h("
").css({width:"100%",height:10}))).appendTo("body"),d=c.children(),e=d.children();b.barWidth=d[0].offsetWidth-d[0].clientWidth;b.bScrollOversize=100===e[0].offsetWidth&&100!==d[0].clientWidth;b.bScrollbarLeft=1!==Math.round(e.offset().left);b.bBounding=c[0].getBoundingClientRect().width?!0:!1;c.remove()}h.extend(a.oBrowser,l.__browser);a.oScroll.iBarWidth=l.__browser.barWidth} +function jb(a,b,c,d,e,f){var g,j=!1;c!==k&&(g=c,j=!0);for(;d!==e;)a.hasOwnProperty(d)&&(g=j?b(g,a[d],d,a):a[d],j=!0,d+=f);return g}function Ga(a,b){var c=l.defaults.column,d=a.aoColumns.length,c=h.extend({},l.models.oColumn,c,{nTh:b?b:H.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=h.extend({},l.models.oSearch,c[d]);la(a,d,h(b).data())}function la(a,b,c){var b=a.aoColumns[b], +d=a.oClasses,e=h(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=e.attr("width")||null;var f=(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);f&&(b.sWidthOrig=f[1])}c!==k&&null!==c&&(hb(c),J(l.defaults.column,c,!0),c.mDataProp!==k&&!c.mData&&(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),c.sClass&&e.addClass(c.sClass),h.extend(b,c),F(b,c,"sWidth","sWidthOrig"),c.iDataSort!==k&&(b.aDataSort=[c.iDataSort]),F(b,c,"aDataSort"));var g=b.mData,j=S(g),i= b.mRender?S(b.mRender):null,c=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=h.isPlainObject(g)&&(c(g.sort)||c(g.type)||c(g.filter));b._setter=null;b.fnGetData=function(a,b,c){var d=j(a,b,k,c);return i&&b?i(d,b,a,c):d};b.fnSetData=function(a,b,c){return N(g)(a,b,c)};"number"!==typeof g&&(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,e.addClass(d.sSortableNone));a=-1!==h.inArray("asc",b.asSorting);c=-1!==h.inArray("desc",b.asSorting);!b.bSortable||!a&&!c?(b.sSortingClass= -d.sSortableNone,b.sSortingClassJUI=""):a&&!c?(b.sSortingClass=d.sSortableAsc,b.sSortingClassJUI=d.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=d.sSortableDesc,b.sSortingClassJUI=d.sSortJUIDescAllowed):(b.sSortingClass=d.sSortable,b.sSortingClassJUI=d.sSortJUI)}function aa(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Ha(a);for(var c=0,d=b.length;cq[f])d(l.length+ -q[f],m);else if("string"===typeof q[f]){j=0;for(i=l.length;jq[f])d(m.length+ +q[f],n);else if("string"===typeof q[f]){j=0;for(i=m.length;jb&&a[e]--; -1!=d&&c===k&&a.splice(d,1)}function ea(a,b,c,d){var e=a.aoData[b],f,g=function(c,d){for(;c.childNodes.length;)c.removeChild(c.firstChild);c.innerHTML=B(a,b,d,"display")};if("dom"===c||(!c||"auto"===c)&&"dom"===e.src)e._aData=Ka(a,e,d,d===k?k:e._aData).data;else{var j=e.anCells;if(j)if(d!==k)g(j[d],d);else{c=0;for(f=j.length;c").appendTo(g));b=0;for(c=l.length;b=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart=-1);var g=a._iDisplayStart,m=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,D(a,!1);else if(j){if(!a.bDestroying&&!nb(a))return}else a.iDraw++;if(0!==i.length){f= -j?a.aoData.length:m;for(j=j?0:g;j",{"class":e?d[0]:""}).append(h("",{valign:"top",colSpan:W(a),"class":a.oClasses.sRowEmpty}).html(c))[0]; -t(a,"aoHeaderCallback","header",[h(a.nTHead).children("tr")[0],Ma(a),g,m,i]);t(a,"aoFooterCallback","footer",[h(a.nTFoot).children("tr")[0],Ma(a),g,m,i]);d=h(a.nTBody);d.children().detach();d.append(h(b));t(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function T(a,b){var c=a.oFeatures,d=c.bFilter;c.bSort&&ob(a);d?ha(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;P(a);a._drawHold=!1}function pb(a){var b=a.oClasses, -c=h(a.nTable),c=h("
").insertBefore(c),d=a.oFeatures,e=h("
",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),g,j,i,m,l,q,k=0;k")[0];m=f[k+1];if("'"==m||'"'==m){l="";for(q=2;f[k+q]!=m;)l+=f[k+q],q++;"H"==l?l=b.sJUIHeader:"F"==l&&(l=b.sJUIFooter);-1!=l.indexOf(".")?(m=l.split("."),i.id=m[0].substr(1,m[0].length- -1),i.className=m[1]):"#"==l.charAt(0)?i.id=l.substr(1,l.length-1):i.className=l;k+=q}e.append(i);e=h(i)}else if(">"==j)e=e.parent();else if("l"==j&&d.bPaginate&&d.bLengthChange)g=qb(a);else if("f"==j&&d.bFilter)g=rb(a);else if("r"==j&&d.bProcessing)g=sb(a);else if("t"==j)g=tb(a);else if("i"==j&&d.bInfo)g=ub(a);else if("p"==j&&d.bPaginate)g=vb(a);else if(0!==n.ext.feature.length){i=n.ext.feature;q=0;for(m=i.length;qb&&a[e]--; -1!=d&&c===k&&a.splice(d,1)}function ea(a,b,c,d){var e=a.aoData[b],f,g=function(c,d){for(;c.childNodes.length;)c.removeChild(c.firstChild);c.innerHTML=B(a,b,d,"display")};if("dom"===c||(!c||"auto"===c)&&"dom"===e.src)e._aData=Ka(a,e,d,d===k?k:e._aData).data;else{var j=e.anCells;if(j)if(d!==k)g(j[d],d);else{c=0;for(f=j.length;c").appendTo(g));b=0;for(c=m.length;b=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart=-1);var g=a._iDisplayStart,n=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,D(a,!1);else if(j){if(!a.bDestroying&&!nb(a))return}else a.iDraw++;if(0!==i.length){f= +j?a.aoData.length:n;for(j=j?0:g;j",{"class":e?d[0]:""}).append(h("",{valign:"top",colSpan:W(a),"class":a.oClasses.sRowEmpty}).html(c))[0]; +u(a,"aoHeaderCallback","header",[h(a.nTHead).children("tr")[0],Ma(a),g,n,i]);u(a,"aoFooterCallback","footer",[h(a.nTFoot).children("tr")[0],Ma(a),g,n,i]);d=h(a.nTBody);d.children().detach();d.append(h(b));u(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function T(a,b){var c=a.oFeatures,d=c.bFilter;c.bSort&&ob(a);d?ha(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;P(a);a._drawHold=!1}function pb(a){var b=a.oClasses, +c=h(a.nTable),c=h("
").insertBefore(c),d=a.oFeatures,e=h("
",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),g,j,i,n,m,q,k=0;k")[0];n=f[k+1];if("'"==n||'"'==n){m="";for(q=2;f[k+q]!=n;)m+=f[k+q],q++;"H"==m?m=b.sJUIHeader:"F"==m&&(m=b.sJUIFooter);-1!=m.indexOf(".")?(n=m.split("."),i.id=n[0].substr(1,n[0].length- +1),i.className=n[1]):"#"==m.charAt(0)?i.id=m.substr(1,m.length-1):i.className=m;k+=q}e.append(i);e=h(i)}else if(">"==j)e=e.parent();else if("l"==j&&d.bPaginate&&d.bLengthChange)g=qb(a);else if("f"==j&&d.bFilter)g=rb(a);else if("r"==j&&d.bProcessing)g=sb(a);else if("t"==j)g=tb(a);else if("i"==j&&d.bInfo)g=ub(a);else if("p"==j&&d.bPaginate)g=vb(a);else if(0!==l.ext.feature.length){i=l.ext.feature;q=0;for(n=i.length;q',j=d.sSearch,j=j.match(/_INPUT_/)?j.replace("_INPUT_",g):j+g,b=h("
",{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(h("
").addClass(b.sLength);a.aanFeatures.l||(i[0].id=c+"_length");i.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",e[0].outerHTML));h("select",i).val(a._iDisplayLength).on("change.DT",function(){Ta(a,h(this).val());P(a)});h(a.nTable).on("length.dt.DT",function(b,c,d){a===c&&h("select",i).val(d)});return i[0]}function vb(a){var b=a.sPaginationType,c=n.ext.pager[b],d="function"===typeof c,e=function(a){P(a)},b=h("
").addClass(a.oClasses.sPaging+ -b)[0],f=a.aanFeatures;d||c.fnInit(a,b,e);f.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(d){var b=a._iDisplayStart,i=a._iDisplayLength,h=a.fnRecordsDisplay(),l=-1===i,b=l?0:Math.ceil(b/i),i=l?1:Math.ceil(h/i),h=c(b,i),k,l=0;for(k=f.p.length;lf&& -(d=0)):"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==b?d+e",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function D(a,b){a.oFeatures.bProcessing&&h(a.aanFeatures.r).css("display",b?"block":"none"); -t(a,null,"processing",[a,b])}function tb(a){var b=h(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY,f=a.oClasses,g=b.children("caption"),j=g.length?g[0]._captionSide:null,i=h(b[0].cloneNode(!1)),m=h(b[0].cloneNode(!1)),l=b.children("tfoot");l.length||(l=null);i=h("
",{"class":f.sScrollWrapper}).append(h("
",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:d?!d?null:w(d):"100%"}).append(h("
", -{"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(i.removeAttr("id").css("margin-left",0).append("top"===j?g:null).append(b.children("thead"))))).append(h("
",{"class":f.sScrollBody}).css({position:"relative",overflow:"auto",width:!d?null:w(d)}).append(b));l&&i.append(h("
",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:d?!d?null:w(d):"100%"}).append(h("
",{"class":f.sScrollFootInner}).append(m.removeAttr("id").css("margin-left", -0).append("bottom"===j?g:null).append(b.children("tfoot")))));var b=i.children(),k=b[0],f=b[1],u=l?b[2]:null;if(d)h(f).on("scroll.DT",function(){var a=this.scrollLeft;k.scrollLeft=a;l&&(u.scrollLeft=a)});h(f).css("max-height",e);c.bCollapse||h(f).css("height",e);a.nScrollHead=k;a.nScrollBody=f;a.nScrollFoot=u;a.aoDrawCallback.push({fn:ma,sName:"scrolling"});return i[0]}function ma(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY,b=b.iBarWidth,f=h(a.nScrollHead),g=f[0].style,j=f.children("div"),i=j[0].style, -m=j.children("table"),j=a.nScrollBody,l=h(j),q=j.style,u=h(a.nScrollFoot).children("div"),n=u.children("table"),o=h(a.nTHead),p=h(a.nTable),r=p[0],t=r.style,s=a.nTFoot?h(a.nTFoot):null,U=a.oBrowser,V=U.bScrollOversize,$b=C(a.aoColumns,"nTh"),Q,L,R,xa,v=[],x=[],y=[],z=[],A,B=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};L=j.scrollHeight>j.clientHeight;if(a.scrollBarVis!==L&&a.scrollBarVis!==k)a.scrollBarVis=L,aa(a);else{a.scrollBarVis= -L;p.children("thead, tfoot").remove();s&&(R=s.clone().prependTo(p),Q=s.find("tr"),R=R.find("tr"));xa=o.clone().prependTo(p);o=o.find("tr");L=xa.find("tr");xa.find("th, td").removeAttr("tabindex");c||(q.width="100%",f[0].style.width="100%");h.each(sa(a,xa),function(b,c){A=ba(a,b);c.style.width=a.aoColumns[A].sWidth});s&&I(function(a){a.style.width=""},R);f=p.outerWidth();if(""===c){t.width="100%";if(V&&(p.find("tbody").height()>j.offsetHeight||"scroll"==l.css("overflow-y")))t.width=w(p.outerWidth()- -b);f=p.outerWidth()}else""!==d&&(t.width=w(d),f=p.outerWidth());I(B,L);I(function(a){y.push(a.innerHTML);v.push(w(h(a).css("width")))},L);I(function(a,b){if(h.inArray(a,$b)!==-1)a.style.width=v[b]},o);h(L).height(0);s&&(I(B,R),I(function(a){z.push(a.innerHTML);x.push(w(h(a).css("width")))},R),I(function(a,b){a.style.width=x[b]},Q),h(R).height(0));I(function(a,b){a.innerHTML='
'+y[b]+"
";a.childNodes[0].style.height="0";a.childNodes[0].style.overflow="hidden";a.style.width= -v[b]},L);s&&I(function(a,b){a.innerHTML='
'+z[b]+"
";a.childNodes[0].style.height="0";a.childNodes[0].style.overflow="hidden";a.style.width=x[b]},R);if(p.outerWidth()j.offsetHeight||"scroll"==l.css("overflow-y")?f+b:f;if(V&&(j.scrollHeight>j.offsetHeight||"scroll"==l.css("overflow-y")))t.width=w(Q-b);(""===c||""!==d)&&K(a,1,"Possible column misalignment",6)}else Q="100%";q.width=w(Q);g.width=w(Q);s&&(a.nScrollFoot.style.width=w(Q));!e&&V&&(q.height= -w(r.offsetHeight+b));c=p.outerWidth();m[0].style.width=w(c);i.width=w(c);d=p.height()>j.clientHeight||"scroll"==l.css("overflow-y");e="padding"+(U.bScrollbarLeft?"Left":"Right");i[e]=d?b+"px":"0px";s&&(n[0].style.width=w(c),u[0].style.width=w(c),u[0].style[e]=d?b+"px":"0px");p.children("colgroup").insertBefore(p.children("thead"));l.trigger("scroll");if((a.bSorted||a.bFiltered)&&!a._drawHold)j.scrollTop=0}}function I(a,b,c){for(var d=0,e=0,f=b.length,g,j;e").appendTo(j.find("tbody"));j.find("thead, tfoot").remove();j.append(h(a.nTHead).clone()).append(h(a.nTFoot).clone());j.find("tfoot th, tfoot td").css("width","");m=sa(a,j.find("thead")[0]);for(n=0;n").css({width:o.sWidthOrig, -margin:0,padding:0,border:0,height:1}));if(a.aoData.length)for(n=0;n").css(f||e?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(j).appendTo(k);f&&g?j.width(g):f?(j.css("width","auto"),j.removeAttr("width"),j.width()").css("width",w(a)).appendTo(b||H.body),d=c[0].offsetWidth;c.remove();return d}function Hb(a,b){var c=Ib(a,b);if(0>c)return null;var d=a.aoData[c];return!d.nTr? -h("").html(B(a,c,b,"display"))[0]:d.anCells[b]}function Ib(a,b){for(var c,d=-1,e=-1,f=0,g=a.aoData.length;fd&&(d=c.length,e=f);return e}function w(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function Y(a){var b,c,d=[],e=a.aoColumns,f,g,j,i;b=a.aaSortingFixed;c=h.isPlainObject(b);var m=[];f=function(a){a.length&&!Array.isArray(a[0])?m.push(a):h.merge(m,a)};Array.isArray(b)&& -f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;ae?1:0,0!==c)return"asc"===j.dir?c:-c;c=d[a];e=d[b];return ce?1:0}):i.sort(function(a,b){var c,g,j,i,k=h.length,n=f[a]._aSortData,o=f[b]._aSortData;for(j=0;j",{name:c+"_length","aria-controls":c,"class":b.sLengthSelect}),g=0,j=f.length;g
").addClass(b.sLength);a.aanFeatures.l||(i[0].id=c+"_length");i.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",e[0].outerHTML));h("select",i).val(a._iDisplayLength).on("change.DT",function(){Ta(a,h(this).val());P(a)});h(a.nTable).on("length.dt.DT",function(b,c,d){a===c&&h("select",i).val(d)});return i[0]}function vb(a){var b=a.sPaginationType,c=l.ext.pager[b],d="function"===typeof c,e=function(a){P(a)},b=h("
").addClass(a.oClasses.sPaging+ +b)[0],f=a.aanFeatures;d||c.fnInit(a,b,e);f.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(d){var b=a._iDisplayStart,i=a._iDisplayLength,h=a.fnRecordsDisplay(),m=-1===i,b=m?0:Math.ceil(b/i),i=m?1:Math.ceil(h/i),h=c(b,i),k,m=0;for(k=f.p.length;mf&& +(d=0)):"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==b?d+e",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function D(a,b){a.oFeatures.bProcessing&&h(a.aanFeatures.r).css("display",b?"block":"none"); +u(a,null,"processing",[a,b])}function tb(a){var b=h(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY,f=a.oClasses,g=b.children("caption"),j=g.length?g[0]._captionSide:null,i=h(b[0].cloneNode(!1)),n=h(b[0].cloneNode(!1)),m=b.children("tfoot");m.length||(m=null);i=h("
",{"class":f.sScrollWrapper}).append(h("
",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:d?!d?null:w(d):"100%"}).append(h("
", +{"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(i.removeAttr("id").css("margin-left",0).append("top"===j?g:null).append(b.children("thead"))))).append(h("
",{"class":f.sScrollBody}).css({position:"relative",overflow:"auto",width:!d?null:w(d)}).append(b));m&&i.append(h("
",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:d?!d?null:w(d):"100%"}).append(h("
",{"class":f.sScrollFootInner}).append(n.removeAttr("id").css("margin-left", +0).append("bottom"===j?g:null).append(b.children("tfoot")))));var b=i.children(),k=b[0],f=b[1],r=m?b[2]:null;if(d)h(f).on("scroll.DT",function(){var a=this.scrollLeft;k.scrollLeft=a;m&&(r.scrollLeft=a)});h(f).css("max-height",e);c.bCollapse||h(f).css("height",e);a.nScrollHead=k;a.nScrollBody=f;a.nScrollFoot=r;a.aoDrawCallback.push({fn:ma,sName:"scrolling"});return i[0]}function ma(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY,b=b.iBarWidth,f=h(a.nScrollHead),g=f[0].style,j=f.children("div"),i=j[0].style, +n=j.children("table"),j=a.nScrollBody,m=h(j),q=j.style,r=h(a.nScrollFoot).children("div"),l=r.children("table"),o=h(a.nTHead),p=h(a.nTable),s=p[0],u=s.style,t=a.nTFoot?h(a.nTFoot):null,U=a.oBrowser,V=U.bScrollOversize,$b=C(a.aoColumns,"nTh"),Q,L,R,xa,v=[],x=[],y=[],z=[],A,B=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};L=j.scrollHeight>j.clientHeight;if(a.scrollBarVis!==L&&a.scrollBarVis!==k)a.scrollBarVis=L,aa(a);else{a.scrollBarVis= +L;p.children("thead, tfoot").remove();t&&(R=t.clone().prependTo(p),Q=t.find("tr"),R=R.find("tr"));xa=o.clone().prependTo(p);o=o.find("tr");L=xa.find("tr");xa.find("th, td").removeAttr("tabindex");c||(q.width="100%",f[0].style.width="100%");h.each(sa(a,xa),function(b,c){A=ba(a,b);c.style.width=a.aoColumns[A].sWidth});t&&I(function(a){a.style.width=""},R);f=p.outerWidth();if(""===c){u.width="100%";if(V&&(p.find("tbody").height()>j.offsetHeight||"scroll"==m.css("overflow-y")))u.width=w(p.outerWidth()- +b);f=p.outerWidth()}else""!==d&&(u.width=w(d),f=p.outerWidth());I(B,L);I(function(a){y.push(a.innerHTML);v.push(w(h(a).css("width")))},L);I(function(a,b){if(h.inArray(a,$b)!==-1)a.style.width=v[b]},o);h(L).height(0);t&&(I(B,R),I(function(a){z.push(a.innerHTML);x.push(w(h(a).css("width")))},R),I(function(a,b){a.style.width=x[b]},Q),h(R).height(0));I(function(a,b){a.innerHTML='
'+y[b]+"
";a.childNodes[0].style.height="0";a.childNodes[0].style.overflow="hidden";a.style.width= +v[b]},L);t&&I(function(a,b){a.innerHTML='
'+z[b]+"
";a.childNodes[0].style.height="0";a.childNodes[0].style.overflow="hidden";a.style.width=x[b]},R);if(p.outerWidth()j.offsetHeight||"scroll"==m.css("overflow-y")?f+b:f;if(V&&(j.scrollHeight>j.offsetHeight||"scroll"==m.css("overflow-y")))u.width=w(Q-b);(""===c||""!==d)&&K(a,1,"Possible column misalignment",6)}else Q="100%";q.width=w(Q);g.width=w(Q);t&&(a.nScrollFoot.style.width=w(Q));!e&&V&&(q.height= +w(s.offsetHeight+b));c=p.outerWidth();n[0].style.width=w(c);i.width=w(c);d=p.height()>j.clientHeight||"scroll"==m.css("overflow-y");e="padding"+(U.bScrollbarLeft?"Left":"Right");i[e]=d?b+"px":"0px";t&&(l[0].style.width=w(c),r[0].style.width=w(c),r[0].style[e]=d?b+"px":"0px");p.children("colgroup").insertBefore(p.children("thead"));m.trigger("scroll");if((a.bSorted||a.bFiltered)&&!a._drawHold)j.scrollTop=0}}function I(a,b,c){for(var d=0,e=0,f=b.length,g,j;e").appendTo(j.find("tbody"));j.find("thead, tfoot").remove();j.append(h(a.nTHead).clone()).append(h(a.nTFoot).clone());j.find("tfoot th, tfoot td").css("width","");n=sa(a,j.find("thead")[0]);for(l=0;l").css({width:o.sWidthOrig, +margin:0,padding:0,border:0,height:1}));if(a.aoData.length)for(l=0;l").css(f||e?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(j).appendTo(k);f&&g?j.width(g):f?(j.css("width","auto"),j.removeAttr("width"),j.width()").css("width",w(a)).appendTo(b||H.body),d=c[0].offsetWidth;c.remove();return d}function Hb(a,b){var c=Ib(a,b);if(0>c)return null;var d=a.aoData[c];return!d.nTr? +h("").html(B(a,c,b,"display"))[0]:d.anCells[b]}function Ib(a,b){for(var c,d=-1,e=-1,f=0,g=a.aoData.length;fd&&(d=c.length,e=f);return e}function w(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function Y(a){var b,c,d=[],e=a.aoColumns,f,g,j,i;b=a.aaSortingFixed;c=h.isPlainObject(b);var n=[];f=function(a){a.length&&!Array.isArray(a[0])?n.push(a):h.merge(n,a)};Array.isArray(b)&& +f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;ae?1:0,0!==c)return"asc"===j.dir?c:-c;c=d[a];e=d[b];return ce?1:0}):i.sort(function(a,b){var c,g,j,i,k=h.length,l=f[a]._aSortData,o=f[b]._aSortData;for(j=0;jg?1:0})}a.bSorted=!0}function Kb(a){for(var b,c,d=a.aoColumns,e=Y(a),a=a.oLanguage.oAria,f=0,g=d.length;f/g,"");var i=c.nTh;i.removeAttribute("aria-sort");c.bSortable&&(0e?e+1:3));e=0;for(f=d.length;ee?e+1:3))}a.aLastSort=d}function Jb(a, -b){var c=a.aoColumns[b],d=n.ext.order[c.sSortDataType],e;d&&(e=d.call(a.oInstance,a,b,ca(a,b)));for(var f,g=n.ext.type.order[c.sType+"-pre"],j=0,i=a.aoData.length;j=f.length?[0,c[1]]:c)}));b.search!==k&&h.extend(a.oPreviousSearch,Db(b.search));if(b.columns){d=0;for(e=b.columns.length;d=f.length?[0,c[1]]:c)}));b.search!==k&&h.extend(a.oPreviousSearch,Db(b.search));if(b.columns){d=0;for(e=b.columns.length;d=c&&(b=c-d);b-=b%d;if(-1===d||0>b)b=0;a._iDisplayStart=b}function Pa(a,b){var c=a.renderer,d=n.ext.renderer[b];return h.isPlainObject(c)&&c[b]?d[c[b]]||d._:"string"===typeof c?d[c]|| +function z(a,b,c,d){c&&a[b].push({fn:c,sName:d})}function u(a,b,c,d){var e=[];b&&(e=h.map(a[b].slice().reverse(),function(b){return b.fn.apply(a.oInstance,d)}));null!==c&&(b=h.Event(c+".dt"),h(a.nTable).trigger(b,d),e.push(b.result));return e}function Ua(a){var b=a._iDisplayStart,c=a.fnDisplayEnd(),d=a._iDisplayLength;b>=c&&(b=c-d);b-=b%d;if(-1===d||0>b)b=0;a._iDisplayStart=b}function Pa(a,b){var c=a.renderer,d=l.ext.renderer[b];return h.isPlainObject(c)&&c[b]?d[c[b]]||d._:"string"===typeof c?d[c]|| d._:d._}function y(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function ja(a,b){var c=[],c=Mb.numbers_length,d=Math.floor(c/2);b<=c?c=Z(0,b):a<=d?(c=Z(0,c-2),c.push("ellipsis"),c.push(b-1)):(a>=b-1-d?c=Z(b-(c-2),b):(c=Z(a-d+2,a+d-1),c.push("ellipsis"),c.push(b-1)),c.splice(0,0,"ellipsis"),c.splice(0,0,0));c.DT_el="span";return c}function Fa(a){h.each({num:function(b){return Ba(b,a)},"num-fmt":function(b){return Ba(b,a,Za)},"html-num":function(b){return Ba(b,a,Ca)},"html-num-fmt":function(b){return Ba(b, -a,Ca,Za)}},function(b,c){v.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(v.type.search[b+a]=v.type.search.html)})}function Nb(a){return function(){var b=[Aa(this[n.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return n.ext.internal[a].apply(this,b)}}var n=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new r(Aa(this[v.iApiIndex])):new r(this)};this.fnAddData=function(a,b){var c=this.api(!0), +a,Ca,Za)}},function(b,c){v.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(v.type.search[b+a]=v.type.search.html)})}function Nb(a){return function(){var b=[Aa(this[l.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return l.ext.internal[a].apply(this,b)}}var l=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new s(Aa(this[v.iApiIndex])):new s(this)};this.fnAddData=function(a,b){var c=this.api(!0), d=Array.isArray(a)&&(Array.isArray(a[0])||h.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===k||b)&&c.draw();return d.flatten().toArray()};this.fnAdjustColumnSizing=function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],d=c.oScroll;a===k||a?b.draw(!1):(""!==d.sX||""!==d.sY)&&ma(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===k||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var d=this.api(!0),a=d.rows(a),e= a.settings()[0],h=e.aoData[a[0][0]];a.remove();b&&b.call(this,e,h);(c===k||c)&&d.draw();return h};this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(a)};this.fnFilter=function(a,b,c,d,e,h){e=this.api(!0);null===b||b===k?e.search(a,c,d,h):e.column(b).search(a,c,d,h);e.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==k){var d=a.nodeName?a.nodeName.toLowerCase():"";return b!==k||"td"==d||"th"==d?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()}; this.fnGetNodes=function(a){var b=this.api(!0);return a!==k?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a); (b===k||b)&&c.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===k||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return Aa(this[v.iApiIndex])};this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,d,e){var h=this.api(!0);c===k||null===c?h.row(b).data(a):h.cell(b,c).data(a);(e===k||e)&&h.columns.adjust();(d===k||d)&&h.draw();return 0};this.fnVersionCheck= -v.fnVersionCheck;var b=this,c=a===k,d=this.length;c&&(a={});this.oApi=this.internal=v.internal;for(var e in n.ext.internal)e&&(this[e]=Nb(e));this.each(function(){var e={},g=1").appendTo(q));p.nTHead=b[0];b=q.children("tbody"); -b.length===0&&(b=h("").appendTo(q));p.nTBody=b[0];b=q.children("tfoot");if(b.length===0&&a.length>0&&(p.oScroll.sX!==""||p.oScroll.sY!==""))b=h("").appendTo(q);if(b.length===0||b.children().length===0)q.addClass(s.sNoFooter);else if(b.length>0){p.nTFoot=b[0];fa(p.aoFooter,p.nTFoot)}if(g.aaData)for(j=0;j/g,bc=/^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/,cc=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"),Za=/['\u00A0,$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi,M=function(a){return!a||!0===a||"-"===a?!0:!1},Pb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Qb= +S(g.rowId);ib(p);var t=p.oClasses;h.extend(t,l.ext.classes,g.oClasses);q.addClass(t.sTable);p.iInitDisplayStart===k&&(p.iInitDisplayStart=g.iDisplayStart,p._iDisplayStart=g.iDisplayStart);null!==g.iDeferLoading&&(p.bDeferLoading=!0,e=Array.isArray(g.iDeferLoading),p._iRecordsDisplay=e?g.iDeferLoading[0]:g.iDeferLoading,p._iRecordsTotal=e?g.iDeferLoading[1]:g.iDeferLoading);var w=p.oLanguage;h.extend(!0,w,g.oLanguage);w.sUrl&&(h.ajax({dataType:"json",url:w.sUrl,success:function(a){Ea(a);J(m.oLanguage, +a);h.extend(true,w,a);ia(p)},error:function(){ia(p)}}),n=!0);null===g.asStripeClasses&&(p.asStripeClasses=[t.sStripeOdd,t.sStripeEven]);var e=p.asStripeClasses,v=q.children("tbody").find("tr").eq(0);-1!==h.inArray(!0,h.map(e,function(a){return v.hasClass(a)}))&&(h("tbody tr",this).removeClass(e.join(" ")),p.asDestroyStripes=e.slice());e=[];r=this.getElementsByTagName("thead");0!==r.length&&(fa(p.aoHeader,r[0]),e=sa(p));if(null===g.aoColumns){r=[];j=0;for(i=e.length;j").appendTo(q));p.nTHead=b[0];b=q.children("tbody"); +b.length===0&&(b=h("").appendTo(q));p.nTBody=b[0];b=q.children("tfoot");if(b.length===0&&a.length>0&&(p.oScroll.sX!==""||p.oScroll.sY!==""))b=h("").appendTo(q);if(b.length===0||b.children().length===0)q.addClass(t.sNoFooter);else if(b.length>0){p.nTFoot=b[0];fa(p.aoFooter,p.nTFoot)}if(g.aaData)for(j=0;j/g,bc=/^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/,cc=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"),Za=/['\u00A0,$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi,M=function(a){return!a||!0===a||"-"===a?!0:!1},Pb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Qb= function(a,b){$a[b]||($a[b]=RegExp(Sa(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace($a[b],"."):a},ab=function(a,b,c){var d="string"===typeof a;if(M(a))return!0;b&&d&&(a=Qb(a,b));c&&d&&(a=a.replace(Za,""));return!isNaN(parseFloat(a))&&isFinite(a)},Rb=function(a,b,c){return M(a)?!0:!(M(a)||"string"===typeof a)?null:ab(a.replace(Ca,""),b,c)?!0:null},C=function(a,b,c){var d=[],e=0,f=a.length;if(c!==k)for(;ea.length)){b=a.slice().sort();for(var c=b[0],d=1,e=b.length;d")[0],Zb=wa.textContent!==k,ac=/<.*?>/g,Qa=n.util.throttle,Ub=[],x=Array.prototype,dc=function(a){var b,c,d=n.settings,e=h.map(d,function(a){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&a.nodeName.toLowerCase()=== -"table"){b=h.inArray(a,e);return b!==-1?[d[b]]:null}if(a&&typeof a.settings==="function")return a.settings().toArray();typeof a==="string"?c=h(a):a instanceof h&&(c=a)}else return[];if(c)return c.map(function(){b=h.inArray(this,e);return b!==-1?d[b]:null}).toArray()};r=function(a,b){if(!(this instanceof r))return new r(a,b);var c=[],d=function(a){(a=dc(a))&&c.push.apply(c,a)};if(Array.isArray(a))for(var e=0,f=a.length;ea?new r(b[a],this[a]):null},filter:function(a){var b=[];if(x.filter)b=x.filter.call(this,a,this);else for(var c=0,d=this.length;c")[0],Zb=wa.textContent!==k,ac=/<.*?>/g,Qa=l.util.throttle,Ub=[],x=Array.prototype,dc=function(a){var b,c,d=l.settings,e=h.map(d,function(a){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&a.nodeName.toLowerCase()=== +"table"){b=h.inArray(a,e);return b!==-1?[d[b]]:null}if(a&&typeof a.settings==="function")return a.settings().toArray();typeof a==="string"?c=h(a):a instanceof h&&(c=a)}else return[];if(c)return c.map(function(){b=h.inArray(this,e);return b!==-1?d[b]:null}).toArray()};s=function(a,b){if(!(this instanceof s))return new s(a,b);var c=[],d=function(a){(a=dc(a))&&c.push.apply(c,a)};if(Array.isArray(a))for(var e=0,f=a.length;ea?new s(b[a],this[a]):null},filter:function(a){var b=[];if(x.filter)b=x.filter.call(this,a,this);else for(var c=0,d=this.length;c0)return a[0].json});o("ajax.params()",function(){var a=this.context;if(a.length>0)return a[0].oAjaxData});o("ajax.reload()",function(a,b){return this.iterator("table",function(c){Wb(c,b===false,a)})});o("ajax.url()",function(a){var b= -this.context;if(a===k){if(b.length===0)return k;b=b[0];return b.ajax?h.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){h.isPlainObject(b.ajax)?b.ajax.url=a:b.ajax=a})});o("ajax.url().load()",function(a,b){return this.iterator("table",function(c){Wb(c,b===false,a)})});var bb=function(a,b,c,d,e){var f=[],g,j,h,m,l,n;h=typeof b;if(!b||h==="string"||h==="function"||b.length===k)b=[b];h=0;for(m=b.length;h0){a[0]=a[b];a[0].length=1;a.length=1;a.context=[a.context[b]];return a}a.length=0;return a},Da=function(a, +this.context;if(a===k){if(b.length===0)return k;b=b[0];return b.ajax?h.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){h.isPlainObject(b.ajax)?b.ajax.url=a:b.ajax=a})});o("ajax.url().load()",function(a,b){return this.iterator("table",function(c){Wb(c,b===false,a)})});var bb=function(a,b,c,d,e){var f=[],g,j,i,h,m,l;i=typeof b;if(!b||i==="string"||i==="function"||b.length===k)b=[b];i=0;for(h=b.length;i0){a[0]=a[b];a[0].length=1;a.length=1;a.context=[a.context[b]];return a}a.length=0;return a},Da=function(a, b){var c,d,e,f=[],g=a.aiDisplay;e=a.aiDisplayMaster;var j=b.search;c=b.order;d=b.page;if(y(a)=="ssp")return j==="removed"?[]:Z(0,e.length);if(d=="current"){c=a._iDisplayStart;for(d=a.fnDisplayEnd();c=0&&j=="applied")&&f.push(c)}}return f};o("rows()",function(a,b){if(a===k)a="";else if(h.isPlainObject(a)){b=a;a=""}var b=cb(b),c=this.iterator("table",function(c){var e=b,f;return bb("row",a,function(a){var b=Pb(a),i=c.aoData;if(b!==null&&!e)return[b];f||(f=Da(c,e));if(b!==null&&h.inArray(b,f)!==-1)return[b];if(a===null||a===k||a==="")return f;if(typeof a==="function")return h.map(f,function(b){var c=i[b];return a(b,c._aData, -c.nTr)?b:null});if(a.nodeName){var b=a._DT_RowIndex,m=a._DT_CellIndex;if(b!==k)return i[b]&&i[b].nTr===a?[b]:[];if(m)return i[m.row]&&i[m.row].nTr===a.parentNode?[m.row]:[];b=h(a).closest("*[data-dt-row]");return b.length?[b.data("dt-row")]:[]}if(typeof a==="string"&&a.charAt(0)==="#"){b=c.aIds[a.replace(/^#/,"")];if(b!==k)return[b.idx]}b=Sb(ka(c.aoData,f,"nTr"));return h(b).filter(a).map(function(){return this._DT_RowIndex}).toArray()},c,e)},1);c.selector.rows=a;c.selector.opts=b;return c});o("rows().nodes()", -function(){return this.iterator("row",function(a,b){return a.aoData[b].nTr||k},1)});o("rows().data()",function(){return this.iterator(true,"rows",function(a,b){return ka(a.aoData,b,"_aData")},1)});s("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){var d=b.aoData[c];return a==="search"?d._aFilterData:d._aSortData},1)});s("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",function(b,c){ea(b,c,a)})});s("rows().indexes()","row().index()", -function(){return this.iterator("row",function(a,b){return b},1)});s("rows().ids()","row().id()",function(a){for(var b=[],c=this.context,d=0,e=c.length;d0&&b._iRecordsDisplay--;Ua(b);c=b.rowIdFn(f._aData);c!==k&&delete b.aIds[c]});this.iterator("table",function(a){for(var c=0,d=a.aoData.length;c0&&b._iRecordsDisplay--;Ua(b);c=b.rowIdFn(f._aData);c!==k&&delete b.aIds[c]});this.iterator("table",function(a){for(var c=0,d=a.aoData.length;c0){f.on("draw.dt.DT_details",function(a,b){e===b&&f.rows({page:"current"}).eq(0).each(function(a){a=g[a];a._detailsShow&&a._details.insertAfter(a.nTr)})});f.on("column-visibility.dt.DT_details",function(a,b){if(e===b)for(var c,d=W(b),f=0,h=g.length;f0){f.on("draw.dt.DT_details",function(a,b){e===b&&f.rows({page:"current"}).eq(0).each(function(a){a=g[a];a._detailsShow&&a._details.insertAfter(a.nTr)})});f.on("column-visibility.dt.DT_details",function(a,b){if(e===b)for(var c,d=W(b),f=0,h=g.length;f").addClass(b); h("td",c).addClass(b).html(a)[0].colSpan=W(d);e.push(c[0])}};f(a,b);c._details&&c._details.detach();c._details=h(e);c._detailsShow&&c._details.insertAfter(c.nTr)}return this});o(["row().child.show()","row().child().show()"],function(){Xb(this,true);return this});o(["row().child.hide()","row().child().hide()"],function(){Xb(this,false);return this});o(["row().child.remove()","row().child().remove()"],function(){eb(this);return this});o("row().child.isShown()",function(){var a=this.context;return a.length&& this.length?a[0].aoData[this[0]]._detailsShow||false:false});var ec=/^([^:]+):(name|visIdx|visible)$/,Yb=function(a,b,c,d,e){for(var c=[],d=0,f=e.length;d=0?b:g.length+b];if(typeof a==="function"){var e= -Da(c,f);return h.map(g,function(b,f){return a(f,Yb(c,f,0,0,e),i[f])?f:null})}var k=typeof a==="string"?a.match(ec):"";if(k)switch(k[2]){case "visIdx":case "visible":b=parseInt(k[1],10);if(b<0){var n=h.map(g,function(a,b){return a.bVisible?b:null});return[n[n.length+b]]}return[ba(c,b)];case "name":return h.map(j,function(a,b){return a===k[1]?b:null});default:return[]}if(a.nodeName&&a._DT_CellIndex)return[a._DT_CellIndex.column];b=h(i).filter(a).map(function(){return h.inArray(this,i)}).toArray();if(b.length|| -!a.nodeName)return b;b=h(a).closest("*[data-dt-column]");return b.length?[b.data("dt-column")]:[]},c,f)},1);c.selector.cols=a;c.selector.opts=b;return c});s("columns().header()","column().header()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});s("columns().footer()","column().footer()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});s("columns().data()","column().data()",function(){return this.iterator("column-rows",Yb, -1)});s("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});s("columns().cache()","column().cache()",function(a){return this.iterator("column-rows",function(b,c,d,e,f){return ka(b.aoData,f,a==="search"?"_aFilterData":"_aSortData",c)},1)});s("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,d,e){return ka(a.aoData,e,"anCells",b)},1)});s("columns().visible()","column().visible()", -function(a,b){var c=this,d=this.iterator("column",function(b,c){if(a===k)return b.aoColumns[c].bVisible;var d=b.aoColumns,j=d[c],i=b.aoData,m,l,n;if(a!==k&&j.bVisible!==a){if(a){var o=h.inArray(true,C(d,"bVisible"),c+1);m=0;for(l=i.length;md}return true};n.isDataTable=n.fnIsDataTable=function(a){var b=h(a).get(0),c=false;if(a instanceof n.Api)return true;h.each(n.settings,function(a,e){var f=e.nScrollHead?h("table",e.nScrollHead)[0]:null,g=e.nScrollFoot?h("table",e.nScrollFoot)[0]:null;if(e.nTable===b||f===b||g===b)c=true});return c};n.tables=n.fnTables= -function(a){var b=false;if(h.isPlainObject(a)){b=a.api;a=a.visible}var c=h.map(n.settings,function(b){if(!a||a&&h(b.nTable).is(":visible"))return b.nTable});return b?new r(c):c};n.camelToHungarian=J;o("$()",function(a,b){var c=this.rows(b).nodes(),c=h(c);return h([].concat(c.filter(a).toArray(),c.find(a).toArray()))});h.each(["on","one","off"],function(a,b){o(b+"()",function(){var a=Array.prototype.slice.call(arguments);a[0]=h.map(a[0].split(/\s/),function(a){return!a.match(/\.dt\b/)?a+".dt":a}).join(" "); -var d=h(this.tables().nodes());d[b].apply(d,a);return this})});o("clear()",function(){return this.iterator("table",function(a){pa(a)})});o("settings()",function(){return new r(this.context,this.context)});o("init()",function(){var a=this.context;return a.length?a[0].oInit:null});o("data()",function(){return this.iterator("table",function(a){return C(a.aoData,"_aData")}).flatten()});o("destroy()",function(a){a=a||false;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,d=b.oClasses, -e=b.nTable,f=b.nTBody,g=b.nTHead,j=b.nTFoot,i=h(e),f=h(f),k=h(b.nTableWrapper),l=h.map(b.aoData,function(a){return a.nTr}),o;b.bDestroying=true;t(b,"aoDestroyCallback","destroy",[b]);a||(new r(b)).columns().visible(true);k.off(".DT").find(":not(tbody *)").off(".DT");h(E).off(".DT-"+b.sInstance);if(e!=g.parentNode){i.children("thead").detach();i.append(g)}if(j&&e!=j.parentNode){i.children("tfoot").detach();i.append(j)}b.aaSorting=[];b.aaSortingFixed=[];ya(b);h(l).removeClass(b.asStripeClasses.join(" ")); -h("th, td",g).removeClass(d.sSortable+" "+d.sSortableAsc+" "+d.sSortableDesc+" "+d.sSortableNone);f.children().detach();f.append(l);g=a?"remove":"detach";i[g]();k[g]();if(!a&&c){c.insertBefore(e,b.nTableReinsertBefore);i.css("width",b.sDestroyWidth).removeClass(d.sTable);(o=b.asDestroyStripes.length)&&f.children().each(function(a){h(this).addClass(b.asDestroyStripes[a%o])})}c=h.inArray(b,n.settings);c!==-1&&n.settings.splice(c,1)})});h.each(["column","row","cell"],function(a,b){o(b+"s().every()", -function(a){var d=this.selector.opts,e=this;return this.iterator(b,function(f,g,h,i,m){a.call(e[b](g,b==="cell"?h:d,b==="cell"?d:k),g,h,i,m)})})});o("i18n()",function(a,b,c){var d=this.context[0],a=S(a)(d.oLanguage);a===k&&(a=b);c!==k&&h.isPlainObject(a)&&(a=a[c]!==k?a[c]:a._);return a.replace("%d",c)});n.version="1.10.22";n.settings=[];n.models={};n.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};n.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null, -_sFilterRow:null,_sRowStripe:"",src:null,idx:-1};n.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};n.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[], +l.versionCheck=l.fnVersionCheck=function(a){for(var b=l.version.split("."),a=a.split("."),c,d,e=0,f=a.length;ed}return true};l.isDataTable=l.fnIsDataTable=function(a){var b=h(a).get(0),c=false;if(a instanceof l.Api)return true;h.each(l.settings,function(a,e){var f=e.nScrollHead?h("table",e.nScrollHead)[0]:null,g=e.nScrollFoot?h("table",e.nScrollFoot)[0]:null;if(e.nTable===b||f===b||g===b)c=true});return c};l.tables=l.fnTables= +function(a){var b=false;if(h.isPlainObject(a)){b=a.api;a=a.visible}var c=h.map(l.settings,function(b){if(!a||a&&h(b.nTable).is(":visible"))return b.nTable});return b?new s(c):c};l.camelToHungarian=J;o("$()",function(a,b){var c=this.rows(b).nodes(),c=h(c);return h([].concat(c.filter(a).toArray(),c.find(a).toArray()))});h.each(["on","one","off"],function(a,b){o(b+"()",function(){var a=Array.prototype.slice.call(arguments);a[0]=h.map(a[0].split(/\s/),function(a){return!a.match(/\.dt\b/)?a+".dt":a}).join(" "); +var d=h(this.tables().nodes());d[b].apply(d,a);return this})});o("clear()",function(){return this.iterator("table",function(a){pa(a)})});o("settings()",function(){return new s(this.context,this.context)});o("init()",function(){var a=this.context;return a.length?a[0].oInit:null});o("data()",function(){return this.iterator("table",function(a){return C(a.aoData,"_aData")}).flatten()});o("destroy()",function(a){a=a||false;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,d=b.oClasses, +e=b.nTable,f=b.nTBody,g=b.nTHead,j=b.nTFoot,i=h(e),f=h(f),k=h(b.nTableWrapper),m=h.map(b.aoData,function(a){return a.nTr}),o;b.bDestroying=true;u(b,"aoDestroyCallback","destroy",[b]);a||(new s(b)).columns().visible(true);k.off(".DT").find(":not(tbody *)").off(".DT");h(E).off(".DT-"+b.sInstance);if(e!=g.parentNode){i.children("thead").detach();i.append(g)}if(j&&e!=j.parentNode){i.children("tfoot").detach();i.append(j)}b.aaSorting=[];b.aaSortingFixed=[];ya(b);h(m).removeClass(b.asStripeClasses.join(" ")); +h("th, td",g).removeClass(d.sSortable+" "+d.sSortableAsc+" "+d.sSortableDesc+" "+d.sSortableNone);f.children().detach();f.append(m);g=a?"remove":"detach";i[g]();k[g]();if(!a&&c){c.insertBefore(e,b.nTableReinsertBefore);i.css("width",b.sDestroyWidth).removeClass(d.sTable);(o=b.asDestroyStripes.length)&&f.children().each(function(a){h(this).addClass(b.asDestroyStripes[a%o])})}c=h.inArray(b,l.settings);c!==-1&&l.settings.splice(c,1)})});h.each(["column","row","cell"],function(a,b){o(b+"s().every()", +function(a){var d=this.selector.opts,e=this;return this.iterator(b,function(f,g,h,i,l){a.call(e[b](g,b==="cell"?h:d,b==="cell"?d:k),g,h,i,l)})})});o("i18n()",function(a,b,c){var d=this.context[0],a=S(a)(d.oLanguage);a===k&&(a=b);c!==k&&h.isPlainObject(a)&&(a=a[c]!==k?a[c]:a._);return a.replace("%d",c)});l.version="1.10.23";l.settings=[];l.models={};l.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};l.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null, +_sFilterRow:null,_sRowStripe:"",src:null,idx:-1};l.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};l.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[], ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null, fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((a.iStateDuration===-1?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){return{}}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(a.iStateDuration===-1?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}}, fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)", -sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:h.extend({},n.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId"};$(n.defaults);n.defaults.column={aDataSort:null, -iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};$(n.defaults.column);n.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null, +sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:h.extend({},l.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId"};$(l.defaults);l.defaults.column={aDataSort:null, +iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};$(l.defaults.column);l.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null, iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1,bBounding:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[], aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:k,oAjaxData:k,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null, iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return y(this)=="ssp"?this._iRecordsTotal*1:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return y(this)=="ssp"?this._iRecordsDisplay*1:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+a,d=this.aiDisplay.length,e=this.oFeatures, -f=e.bPaginate;return e.bServerSide?f===false||a===-1?b+d:Math.min(b+a,this._iRecordsDisplay):!f||c>d||a===-1?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};n.ext=v={buttons:{},classes:{},builder:"-source-",errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:n.fnVersionCheck, -iApiIndex:0,oJUIClasses:{},sVersion:n.version};h.extend(v,{afnFiltering:v.search,aTypes:v.type.detect,ofnSearch:v.type.search,oSort:v.type.order,afnSortData:v.order,aoFeatures:v.feature,oApi:v.internal,oStdClasses:v.classes,oPagination:v.pager});h.extend(n.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter", +f=e.bPaginate;return e.bServerSide?f===false||a===-1?b+d:Math.min(b+a,this._iRecordsDisplay):!f||c>d||a===-1?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};l.ext=v={buttons:{},classes:{},builder:"-source-",errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:l.fnVersionCheck, +iApiIndex:0,oJUIClasses:{},sVersion:l.version};h.extend(v,{afnFiltering:v.search,aTypes:v.type.detect,ofnSearch:v.type.search,oSort:v.type.order,afnSortData:v.order,aoFeatures:v.feature,oApi:v.internal,oStdClasses:v.classes,oPagination:v.pager});h.extend(l.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter", sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody", -sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var Mb=n.ext.pager;h.extend(Mb,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},numbers:function(a,b){return[ja(a,b)]},simple_numbers:function(a,b){return["previous",ja(a,b),"next"]},full_numbers:function(a, -b){return["first","previous",ja(a,b),"next","last"]},first_last_numbers:function(a,b){return["first",ja(a,b),"last"]},_numbers:ja,numbers_length:7});h.extend(!0,n.ext.renderer,{pageButton:{_:function(a,b,c,d,e,f){var g=a.oClasses,j=a.oLanguage.oPaginate,i=a.oLanguage.oAria.paginate||{},m,l,n=0,o=function(b,d){var k,s,r,t,v=g.sPageButtonDisabled,w=function(b){Va(a,b.data.action,true)};k=0;for(s=d.length;k").appendTo(b);o(r,t)}else{m=null; -l=t;r=a.iTabIndex;switch(t){case "ellipsis":b.append('');break;case "first":m=j.sFirst;if(e===0){r=-1;l=l+(" "+v)}break;case "previous":m=j.sPrevious;if(e===0){r=-1;l=l+(" "+v)}break;case "next":m=j.sNext;if(f===0||e===f-1){r=-1;l=l+(" "+v)}break;case "last":m=j.sLast;if(f===0||e===f-1){r=-1;l=l+(" "+v)}break;default:m=a.fnFormatNumber(t+1);l=e===t?g.sPageButtonActive:""}if(m!==null){r=h("",{"class":g.sPageButton+" "+l,"aria-controls":a.sTableId,"aria-label":i[t], -"data-dt-idx":n,tabindex:r,id:c===0&&typeof t==="string"?a.sTableId+"_"+t:null}).html(m).appendTo(b);Xa(r,{action:t},w);n++}}}},s;try{s=h(b).find(H.activeElement).data("dt-idx")}catch(r){}o(h(b).empty(),d);s!==k&&h(b).find("[data-dt-idx="+s+"]").trigger("focus")}}});h.extend(n.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal;return ab(a,c)?"num"+c:null},function(a){if(a&&!(a instanceof Date)&&!bc.test(a))return null;var b=Date.parse(a);return b!==null&&!isNaN(b)||M(a)?"date":null},function(a, -b){var c=b.oLanguage.sDecimal;return ab(a,c,true)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Rb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Rb(a,c,true)?"html-num-fmt"+c:null},function(a){return M(a)||typeof a==="string"&&a.indexOf("<")!==-1?"html":null}]);h.extend(n.ext.type.search,{html:function(a){return M(a)?a:typeof a==="string"?a.replace(Ob," ").replace(Ca,""):""},string:function(a){return M(a)?a:typeof a==="string"?a.replace(Ob," "):a}});var Ba= +sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var Mb=l.ext.pager;h.extend(Mb,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},numbers:function(a,b){return[ja(a,b)]},simple_numbers:function(a,b){return["previous",ja(a,b),"next"]},full_numbers:function(a, +b){return["first","previous",ja(a,b),"next","last"]},first_last_numbers:function(a,b){return["first",ja(a,b),"last"]},_numbers:ja,numbers_length:7});h.extend(!0,l.ext.renderer,{pageButton:{_:function(a,b,c,d,e,f){var g=a.oClasses,j=a.oLanguage.oPaginate,i=a.oLanguage.oAria.paginate||{},l,m,o=0,r=function(b,d){var k,t,s,u,v=g.sPageButtonDisabled,w=function(b){Va(a,b.data.action,true)};k=0;for(t=d.length;k").appendTo(b);r(s,u)}else{l=null; +m=u;s=a.iTabIndex;switch(u){case "ellipsis":b.append('');break;case "first":l=j.sFirst;if(e===0){s=-1;m=m+(" "+v)}break;case "previous":l=j.sPrevious;if(e===0){s=-1;m=m+(" "+v)}break;case "next":l=j.sNext;if(f===0||e===f-1){s=-1;m=m+(" "+v)}break;case "last":l=j.sLast;if(f===0||e===f-1){s=-1;m=m+(" "+v)}break;default:l=a.fnFormatNumber(u+1);m=e===u?g.sPageButtonActive:""}if(l!==null){s=h("",{"class":g.sPageButton+" "+m,"aria-controls":a.sTableId,"aria-label":i[u], +"data-dt-idx":o,tabindex:s,id:c===0&&typeof u==="string"?a.sTableId+"_"+u:null}).html(l).appendTo(b);Xa(s,{action:u},w);o++}}}},t;try{t=h(b).find(H.activeElement).data("dt-idx")}catch(s){}r(h(b).empty(),d);t!==k&&h(b).find("[data-dt-idx="+t+"]").trigger("focus")}}});h.extend(l.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal;return ab(a,c)?"num"+c:null},function(a){if(a&&!(a instanceof Date)&&!bc.test(a))return null;var b=Date.parse(a);return b!==null&&!isNaN(b)||M(a)?"date":null},function(a, +b){var c=b.oLanguage.sDecimal;return ab(a,c,true)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Rb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Rb(a,c,true)?"html-num-fmt"+c:null},function(a){return M(a)||typeof a==="string"&&a.indexOf("<")!==-1?"html":null}]);h.extend(l.ext.type.search,{html:function(a){return M(a)?a:typeof a==="string"?a.replace(Ob," ").replace(Ca,""):""},string:function(a){return M(a)?a:typeof a==="string"?a.replace(Ob," "):a}});var Ba= function(a,b,c,d){if(a!==0&&(!a||a==="-"))return-Infinity;b&&(a=Qb(a,b));if(a.replace){c&&(a=a.replace(c,""));d&&(a=a.replace(d,""))}return a*1};h.extend(v.type.order,{"date-pre":function(a){a=Date.parse(a);return isNaN(a)?-Infinity:a},"html-pre":function(a){return M(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return M(a)?"":typeof a==="string"?a.toLowerCase():!a.toString?"":a.toString()},"string-asc":function(a,b){return ab?1:0},"string-desc":function(a, -b){return ab?-1:0}});Fa("");h.extend(!0,n.ext.renderer,{header:{_:function(a,b,c,d){h(a.nTable).on("order.dt.DT",function(e,f,g,h){if(a===f){e=c.idx;b.removeClass(c.sSortingClass+" "+d.sSortAsc+" "+d.sSortDesc).addClass(h[e]=="asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass)}})},jqueryui:function(a,b,c,d){h("
").addClass(d.sSortJUIWrapper).append(b.contents()).append(h("").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);h(a.nTable).on("order.dt.DT",function(e, +b){return ab?-1:0}});Fa("");h.extend(!0,l.ext.renderer,{header:{_:function(a,b,c,d){h(a.nTable).on("order.dt.DT",function(e,f,g,h){if(a===f){e=c.idx;b.removeClass(c.sSortingClass+" "+d.sSortAsc+" "+d.sSortDesc).addClass(h[e]=="asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass)}})},jqueryui:function(a,b,c,d){h("
").addClass(d.sSortJUIWrapper).append(b.contents()).append(h("").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);h(a.nTable).on("order.dt.DT",function(e, f,g,h){if(a===f){e=c.idx;b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass(h[e]=="asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass);b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass(h[e]=="asc"?d.sSortJUIAsc:h[e]=="desc"?d.sSortJUIDesc:c.sSortingClassJUI)}})}}});var fb=function(a){return typeof a==="string"?a.replace(/&/g,"&").replace(//g,">").replace(/"/g,"""): -a};n.render={number:function(a,b,c,d,e){return{display:function(f){if(typeof f!=="number"&&typeof f!=="string")return f;var g=f<0?"-":"",h=parseFloat(f);if(isNaN(h))return fb(f);h=h.toFixed(c);f=Math.abs(h);h=parseInt(f,10);f=c?b+(f-h).toFixed(c).substring(2):"";return g+(d||"")+h.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+f+(e||"")}}},text:function(){return{display:fb,filter:fb}}};h.extend(n.ext.internal,{_fnExternApiFunc:Nb,_fnBuildAjax:ta,_fnAjaxUpdate:nb,_fnAjaxParameters:wb,_fnAjaxUpdateDraw:xb, +a};l.render={number:function(a,b,c,d,e){return{display:function(f){if(typeof f!=="number"&&typeof f!=="string")return f;var g=f<0?"-":"",h=parseFloat(f);if(isNaN(h))return fb(f);h=h.toFixed(c);f=Math.abs(h);h=parseInt(f,10);f=c?b+(f-h).toFixed(c).substring(2):"";return g+(d||"")+h.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+f+(e||"")}}},text:function(){return{display:fb,filter:fb}}};h.extend(l.ext.internal,{_fnExternApiFunc:Nb,_fnBuildAjax:ta,_fnAjaxUpdate:nb,_fnAjaxParameters:wb,_fnAjaxUpdateDraw:xb, _fnAjaxDataSrc:ua,_fnAddColumn:Ga,_fnColumnOptions:la,_fnAdjustColumnSizing:aa,_fnVisibleToColumnIndex:ba,_fnColumnIndexToVisible:ca,_fnVisbleColumns:W,_fnGetColumns:na,_fnColumnTypes:Ia,_fnApplyColumnDefs:kb,_fnHungarianMap:$,_fnCamelToHungarian:J,_fnLanguageCompat:Ea,_fnBrowserDetect:ib,_fnAddData:O,_fnAddTr:oa,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==k?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b,c){return h.inArray(c,a.aoData[b].anCells)},_fnGetCellData:B,_fnSetCellData:lb, _fnSplitObjNotation:La,_fnGetObjectDataFn:S,_fnSetObjectDataFn:N,_fnGetDataMaster:Ma,_fnClearTable:pa,_fnDeleteIndex:qa,_fnInvalidate:ea,_fnGetRowElements:Ka,_fnCreateTr:Ja,_fnBuildHead:mb,_fnDrawHead:ga,_fnDraw:P,_fnReDraw:T,_fnAddOptionsHtml:pb,_fnDetectHeader:fa,_fnGetUniqueThs:sa,_fnFeatureHtmlFilter:rb,_fnFilterComplete:ha,_fnFilterCustom:Ab,_fnFilterColumn:zb,_fnFilter:yb,_fnFilterCreateSearch:Ra,_fnEscapeRegex:Sa,_fnFilterData:Bb,_fnFeatureHtmlInfo:ub,_fnUpdateInfo:Eb,_fnInfoMacros:Fb,_fnInitialise:ia, _fnInitComplete:va,_fnLengthChange:Ta,_fnFeatureHtmlLength:qb,_fnFeatureHtmlPaginate:vb,_fnPageChange:Va,_fnFeatureHtmlProcessing:sb,_fnProcessingDisplay:D,_fnFeatureHtmlTable:tb,_fnScrollDraw:ma,_fnApplyToChildren:I,_fnCalculateColumnWidths:Ha,_fnThrottle:Qa,_fnConvertToWidth:Gb,_fnGetWidestNode:Hb,_fnGetMaxLenString:Ib,_fnStringToCss:w,_fnSortFlatten:Y,_fnSort:ob,_fnSortAria:Kb,_fnSortListener:Wa,_fnSortAttachListener:Oa,_fnSortingClasses:ya,_fnSortData:Jb,_fnSaveState:za,_fnLoadState:Lb,_fnSettingsFromNode:Aa, -_fnLog:K,_fnMap:F,_fnBindAction:Xa,_fnCallbackReg:z,_fnCallbackFire:t,_fnLengthOverflow:Ua,_fnRenderer:Pa,_fnDataSource:y,_fnRowAttributes:Na,_fnExtend:Ya,_fnCalculateEnd:function(){}});h.fn.dataTable=n;n.$=h;h.fn.dataTableSettings=n.settings;h.fn.dataTableExt=n.ext;h.fn.DataTable=function(a){return h(this).dataTable(a).api()};h.each(n,function(a,b){h.fn.DataTable[a]=b});return h.fn.dataTable}); +_fnLog:K,_fnMap:F,_fnBindAction:Xa,_fnCallbackReg:z,_fnCallbackFire:u,_fnLengthOverflow:Ua,_fnRenderer:Pa,_fnDataSource:y,_fnRowAttributes:Na,_fnExtend:Ya,_fnCalculateEnd:function(){}});h.fn.dataTable=l;l.$=h;h.fn.dataTableSettings=l.settings;h.fn.dataTableExt=l.ext;h.fn.DataTable=function(a){return h(this).dataTable(a).api()};h.each(l,function(a,b){h.fn.DataTable[a]=b});return h.fn.dataTable}); diff --git a/plugins/sweetalert2/sweetalert2.all.js b/plugins/sweetalert2/sweetalert2.all.js index c0a3fad5c..01c6513a7 100644 --- a/plugins/sweetalert2/sweetalert2.all.js +++ b/plugins/sweetalert2/sweetalert2.all.js @@ -1,5 +1,5 @@ /*! -* sweetalert2 v10.10.2 +* sweetalert2 v10.12.5 * Released under the MIT License. */ (function (global, factory) { @@ -239,7 +239,7 @@ */ var warn = function warn(message) { - console.warn("".concat(consolePrefix, " ").concat(message)); + console.warn("".concat(consolePrefix, " ").concat(_typeof(message) === 'object' ? message.join(' ') : message)); }; /** * Standardise console errors @@ -841,7 +841,7 @@ } // Loader - loader.innerHTML = params.loaderHtml; + setInnerHtml(loader, params.loaderHtml); applyCustomClass(loader, params, 'loader'); }; @@ -1115,13 +1115,16 @@ setInputPlaceholder(textarea, params); setInputLabel(textarea, textarea, params); + var getPadding = function getPadding(el) { + return parseInt(window.getComputedStyle(el).paddingLeft) + parseInt(window.getComputedStyle(el).paddingRight); + }; + if ('MutationObserver' in window) { // #1699 var initialPopupWidth = parseInt(window.getComputedStyle(getPopup()).width); - var popupPadding = parseInt(window.getComputedStyle(getPopup()).paddingLeft) + parseInt(window.getComputedStyle(getPopup()).paddingRight); var outputsize = function outputsize() { - var contentWidth = textarea.offsetWidth + popupPadding; + var contentWidth = textarea.offsetWidth + getPadding(getPopup()) + getPadding(getContent()); if (contentWidth > initialPopupWidth) { getPopup().style.width = "".concat(contentWidth, "px"); @@ -1561,8 +1564,8 @@ _createClass(MixinSwal, [{ key: "_main", - value: function _main(params) { - return _get(_getPrototypeOf(MixinSwal.prototype), "_main", this).call(this, _extends({}, mixinParams, params)); + value: function _main(params, prevMixinParams) { + return _get(_getPrototypeOf(MixinSwal.prototype), "_main", this).call(this, params, _extends({}, prevMixinParams, mixinParams)); } }]); @@ -1701,6 +1704,35 @@ return globalState.timeout && globalState.timeout.isRunning(); }; + var bodyClickListenerAdded = false; + var clickHandlers = {}; + function bindClickHandler() { + var attr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'data-swal-template'; + clickHandlers[attr] = this; + + if (!bodyClickListenerAdded) { + document.body.addEventListener('click', bodyClickListener); + bodyClickListenerAdded = true; + } + } + + var bodyClickListener = function bodyClickListener(event) { + // 1. using .parentNode instead of event.path because of better support by old browsers https://stackoverflow.com/a/39245638 + // 2. using .parentNode instead of .parentElement because of IE11 + SVG https://stackoverflow.com/a/36270354 + for (var el = event.target; el && el !== document; el = el.parentNode) { + for (var attr in clickHandlers) { + var template = el.getAttribute(attr); + + if (template) { + clickHandlers[attr].fire({ + template: template + }); + return; + } + } + } + }; + var defaultParams = { title: '', titleText: '', @@ -1710,6 +1742,7 @@ icon: undefined, iconColor: undefined, iconHtml: undefined, + template: undefined, toast: false, animation: true, showClass: { @@ -1722,7 +1755,7 @@ backdrop: 'swal2-backdrop-hide', icon: 'swal2-icon-hide' }, - customClass: undefined, + customClass: {}, target: 'body', backdrop: true, heightAuto: true, @@ -1910,7 +1943,8 @@ resumeTimer: resumeTimer, toggleTimer: toggleTimer, increaseTimer: increaseTimer, - isTimerRunning: isTimerRunning + isTimerRunning: isTimerRunning, + bindClickHandler: bindClickHandler }); /** @@ -2457,6 +2491,181 @@ init(params); } + var swalStringParams = ['swal-title', 'swal-html', 'swal-footer']; + var getTemplateParams = function getTemplateParams(params) { + var template = typeof params.template === 'string' ? document.querySelector(params.template) : params.template; + + if (!template) { + return {}; + } + + var templateContent = template.content || template; // IE11 + + showWarningsForElements(templateContent); + + var result = _extends(getSwalParams(templateContent), getSwalButtons(templateContent), getSwalImage(templateContent), getSwalIcon(templateContent), getSwalInput(templateContent), getSwalStringParams(templateContent, swalStringParams)); + + return result; + }; + + var getSwalParams = function getSwalParams(templateContent) { + var result = {}; + toArray(templateContent.querySelectorAll('swal-param')).forEach(function (param) { + showWarningsForAttributes(param, ['name', 'value']); + var paramName = param.getAttribute('name'); + var value = param.getAttribute('value'); + + if (typeof defaultParams[paramName] === 'boolean' && value === 'false') { + value = false; + } + + if (_typeof(defaultParams[paramName]) === 'object') { + value = JSON.parse(value); + } + + result[paramName] = value; + }); + return result; + }; + + var getSwalButtons = function getSwalButtons(templateContent) { + var result = {}; + toArray(templateContent.querySelectorAll('swal-button')).forEach(function (button) { + showWarningsForAttributes(button, ['type', 'color', 'aria-label']); + var type = button.getAttribute('type'); + result["".concat(type, "ButtonText")] = button.innerHTML; + result["show".concat(capitalizeFirstLetter(type), "Button")] = true; + + if (button.hasAttribute('color')) { + result["".concat(type, "ButtonColor")] = button.getAttribute('color'); + } + + if (button.hasAttribute('aria-label')) { + result["".concat(type, "ButtonAriaLabel")] = button.getAttribute('aria-label'); + } + }); + return result; + }; + + var getSwalImage = function getSwalImage(templateContent) { + var result = {}; + var image = templateContent.querySelector('swal-image'); + + if (image) { + showWarningsForAttributes(image, ['src', 'width', 'height', 'alt']); + + if (image.hasAttribute('src')) { + result.imageUrl = image.getAttribute('src'); + } + + if (image.hasAttribute('width')) { + result.imageWidth = image.getAttribute('width'); + } + + if (image.hasAttribute('height')) { + result.imageHeight = image.getAttribute('height'); + } + + if (image.hasAttribute('alt')) { + result.imageAlt = image.getAttribute('alt'); + } + } + + return result; + }; + + var getSwalIcon = function getSwalIcon(templateContent) { + var result = {}; + var icon = templateContent.querySelector('swal-icon'); + + if (icon) { + showWarningsForAttributes(icon, ['type', 'color']); + + if (icon.hasAttribute('type')) { + result.icon = icon.getAttribute('type'); + } + + if (icon.hasAttribute('color')) { + result.iconColor = icon.getAttribute('color'); + } + + result.iconHtml = icon.innerHTML; + } + + return result; + }; + + var getSwalInput = function getSwalInput(templateContent) { + var result = {}; + var input = templateContent.querySelector('swal-input'); + + if (input) { + showWarningsForAttributes(input, ['type', 'label', 'placeholder', 'value']); + result.input = input.getAttribute('type') || 'text'; + + if (input.hasAttribute('label')) { + result.inputLabel = input.getAttribute('label'); + } + + if (input.hasAttribute('placeholder')) { + result.inputPlaceholder = input.getAttribute('placeholder'); + } + + if (input.hasAttribute('value')) { + result.inputValue = input.getAttribute('value'); + } + } + + var inputOptions = templateContent.querySelectorAll('swal-input-option'); + + if (inputOptions.length) { + result.inputOptions = {}; + toArray(inputOptions).forEach(function (option) { + showWarningsForAttributes(option, ['value']); + var optionValue = option.getAttribute('value'); + var optionName = option.innerHTML; + result.inputOptions[optionValue] = optionName; + }); + } + + return result; + }; + + var getSwalStringParams = function getSwalStringParams(templateContent, paramNames) { + var result = {}; + + for (var i in paramNames) { + var paramName = paramNames[i]; + var tag = templateContent.querySelector(paramName); + + if (tag) { + showWarningsForAttributes(tag, []); + result[paramName.replace(/^swal-/, '')] = tag.innerHTML; + } + } + + return result; + }; + + var showWarningsForElements = function showWarningsForElements(template) { + var allowedElements = swalStringParams.concat(['swal-param', 'swal-button', 'swal-image', 'swal-icon', 'swal-input', 'swal-input-option']); + toArray(template.querySelectorAll('*')).forEach(function (el) { + var tagName = el.tagName.toLowerCase(); + + if (allowedElements.indexOf(tagName) === -1) { + warn("Unrecognized element <".concat(tagName, ">")); + } + }); + }; + + var showWarningsForAttributes = function showWarningsForAttributes(el, allowedAttributes) { + toArray(el.attributes).forEach(function (attribute) { + if (allowedAttributes.indexOf(attribute.name) === -1) { + warn(["Unrecognized attribute \"".concat(attribute.name, "\" on <").concat(el.tagName.toLowerCase(), ">."), "".concat(allowedAttributes.length ? "Allowed attributes are: ".concat(allowedAttributes.join(', ')) : 'To set the value, use HTML within the element.')]); + } + }); + }; + var SHOW_CLASS_TIMEOUT = 10; /** * Open popup, add necessary classes and styles, fix scrollbar @@ -2647,11 +2856,7 @@ var option = document.createElement('option'); option.value = optionValue; setInnerHtml(option, optionLabel); - - if (params.inputValue.toString() === optionValue.toString()) { - option.selected = true; - } - + option.selected = isSelected(optionValue, params.inputValue); parent.appendChild(option); }; @@ -2690,7 +2895,7 @@ radioInput.name = swalClasses.radio; radioInput.value = radioValue; - if (params.inputValue.toString() === radioValue.toString()) { + if (isSelected(radioValue, params.inputValue)) { radioInput.checked = true; } @@ -2743,6 +2948,10 @@ return result; }; + var isSelected = function isSelected(optionValue, inputValue) { + return inputValue && inputValue.toString() === optionValue.toString(); + }; + var handleConfirmButtonClick = function handleConfirmButtonClick(instance, innerParams) { instance.disableButtons(); @@ -2877,7 +3086,7 @@ var setFocus = function setFocus(innerParams, index, increment) { var focusableElements = getFocusableElements(); // search for visible elements and select the next possible match - for (var i = 0; i < focusableElements.length; i++) { + if (focusableElements.length) { index = index + increment; // rollover to first item if (index === focusableElements.length) { @@ -3053,14 +3262,15 @@ }; function _main(userParams) { - showWarningsForParams(userParams); + var mixinParams = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + showWarningsForParams(_extends({}, mixinParams, userParams)); if (globalState.currentInstance) { globalState.currentInstance._destroy(); } globalState.currentInstance = this; - var innerParams = prepareParams(userParams); + var innerParams = prepareParams(userParams, mixinParams); setParameters(innerParams); Object.freeze(innerParams); // clear the previous timer @@ -3077,12 +3287,15 @@ return swalPromise(this, domCache, innerParams); } - var prepareParams = function prepareParams(userParams) { - var showClass = _extends({}, defaultParams.showClass, userParams.showClass); + var prepareParams = function prepareParams(userParams, mixinParams) { + var templateParams = getTemplateParams(userParams); - var hideClass = _extends({}, defaultParams.hideClass, userParams.hideClass); + var showClass = _extends({}, defaultParams.showClass, mixinParams.showClass, templateParams.showClass, userParams.showClass); + + var hideClass = _extends({}, defaultParams.hideClass, mixinParams.hideClass, templateParams.hideClass, userParams.hideClass); + + var params = _extends({}, defaultParams, mixinParams, templateParams, userParams); // precedence is described in #2131 - var params = _extends({}, defaultParams, userParams); params.showClass = showClass; params.hideClass = hideClass; // @deprecated @@ -3403,7 +3616,7 @@ }; }); SweetAlert.DismissReason = DismissReason; - SweetAlert.version = '10.10.2'; + SweetAlert.version = '10.12.5'; var Swal = SweetAlert; Swal["default"] = Swal; @@ -3413,4 +3626,4 @@ })); if (typeof this !== 'undefined' && this.Sweetalert2){ this.swal = this.sweetAlert = this.Swal = this.SweetAlert = this.Sweetalert2} -"undefined"!=typeof document&&function(e,t){var n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,".swal2-popup.swal2-toast{flex-direction:row;align-items:center;width:auto;padding:.625em;overflow-y:hidden;background:#fff;box-shadow:0 0 .625em #d9d9d9}.swal2-popup.swal2-toast .swal2-header{flex-direction:row;padding:0}.swal2-popup.swal2-toast .swal2-title{flex-grow:1;justify-content:flex-start;margin:0 .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{position:static;width:.8em;height:.8em;line-height:.8}.swal2-popup.swal2-toast .swal2-content{justify-content:flex-start;padding:0;font-size:1em}.swal2-popup.swal2-toast .swal2-icon{width:2em;min-width:2em;height:2em;margin:0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{font-size:.25em}}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{flex-basis:auto!important;width:auto;height:auto;margin:0 .3125em;padding:0}.swal2-popup.swal2-toast .swal2-styled{margin:0 .3125em;padding:.3125em .625em;font-size:1em}.swal2-popup.swal2-toast .swal2-styled:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(100,150,200,.5)}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:flex;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;flex-direction:row;align-items:center;justify-content:center;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-top{align-items:flex-start}.swal2-container.swal2-top-left,.swal2-container.swal2-top-start{align-items:flex-start;justify-content:flex-start}.swal2-container.swal2-top-end,.swal2-container.swal2-top-right{align-items:flex-start;justify-content:flex-end}.swal2-container.swal2-center{align-items:center}.swal2-container.swal2-center-left,.swal2-container.swal2-center-start{align-items:center;justify-content:flex-start}.swal2-container.swal2-center-end,.swal2-container.swal2-center-right{align-items:center;justify-content:flex-end}.swal2-container.swal2-bottom{align-items:flex-end}.swal2-container.swal2-bottom-left,.swal2-container.swal2-bottom-start{align-items:flex-end;justify-content:flex-start}.swal2-container.swal2-bottom-end,.swal2-container.swal2-bottom-right{align-items:flex-end;justify-content:flex-end}.swal2-container.swal2-bottom-end>:first-child,.swal2-container.swal2-bottom-left>:first-child,.swal2-container.swal2-bottom-right>:first-child,.swal2-container.swal2-bottom-start>:first-child,.swal2-container.swal2-bottom>:first-child{margin-top:auto}.swal2-container.swal2-grow-fullscreen>.swal2-modal{display:flex!important;flex:1;align-self:stretch;justify-content:center}.swal2-container.swal2-grow-row>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-grow-column{flex:1;flex-direction:column}.swal2-container.swal2-grow-column.swal2-bottom,.swal2-container.swal2-grow-column.swal2-center,.swal2-container.swal2-grow-column.swal2-top{align-items:center}.swal2-container.swal2-grow-column.swal2-bottom-left,.swal2-container.swal2-grow-column.swal2-bottom-start,.swal2-container.swal2-grow-column.swal2-center-left,.swal2-container.swal2-grow-column.swal2-center-start,.swal2-container.swal2-grow-column.swal2-top-left,.swal2-container.swal2-grow-column.swal2-top-start{align-items:flex-start}.swal2-container.swal2-grow-column.swal2-bottom-end,.swal2-container.swal2-grow-column.swal2-bottom-right,.swal2-container.swal2-grow-column.swal2-center-end,.swal2-container.swal2-grow-column.swal2-center-right,.swal2-container.swal2-grow-column.swal2-top-end,.swal2-container.swal2-grow-column.swal2-top-right{align-items:flex-end}.swal2-container.swal2-grow-column>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-no-transition{transition:none!important}.swal2-container:not(.swal2-top):not(.swal2-top-start):not(.swal2-top-end):not(.swal2-top-left):not(.swal2-top-right):not(.swal2-center-start):not(.swal2-center-end):not(.swal2-center-left):not(.swal2-center-right):not(.swal2-bottom):not(.swal2-bottom-start):not(.swal2-bottom-end):not(.swal2-bottom-left):not(.swal2-bottom-right):not(.swal2-grow-fullscreen)>.swal2-modal{margin:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-container .swal2-modal{margin:0!important}}.swal2-popup{display:none;position:relative;box-sizing:border-box;flex-direction:column;justify-content:center;width:32em;max-width:100%;padding:1.25em;border:none;border-radius:5px;background:#fff;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-header{display:flex;flex-direction:column;align-items:center;padding:0 1.8em}.swal2-title{position:relative;max-width:100%;margin:0 0 .4em;padding:0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:100%;margin:1.25em auto 0;padding:0 1.6em}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;box-shadow:none;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#2778c4;color:#fff;font-size:1.0625em}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#d14529;color:#fff;font-size:1.0625em}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#757575;color:#fff;font-size:1.0625em}.swal2-styled:focus{outline:0;box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1.25em 0 0;padding:1em 0 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:1.25em auto}.swal2-close{position:absolute;z-index:2;top:0;right:0;align-items:center;justify-content:center;width:1.2em;height:1.2em;padding:0;overflow:hidden;transition:color .1s ease-out;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-size:2.5em;line-height:1.2;cursor:pointer}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-content{z-index:1;justify-content:center;margin:0;padding:0 1.6em;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em auto}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:100%;transition:border-color .3s,box-shadow .3s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06);color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em auto;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-input[type=number]{max-width:10em}.swal2-file{background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto}.swal2-validation-message{display:none;align-items:center;justify-content:center;margin:0 -2.7em;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:1.25em auto 1.875em;border:.25em solid transparent;border-radius:50%;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:0 0 1.25em;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{right:auto;left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@supports (-ms-accelerator:true){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{top:auto;right:auto;bottom:auto;left:auto;max-width:calc(100% - .625em * 2);background-color:transparent!important}body.swal2-no-backdrop .swal2-container>.swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}body.swal2-no-backdrop .swal2-container.swal2-top{top:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-top-left,body.swal2-no-backdrop .swal2-container.swal2-top-start{top:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-top-end,body.swal2-no-backdrop .swal2-container.swal2-top-right{top:0;right:0}body.swal2-no-backdrop .swal2-container.swal2-center{top:50%;left:50%;transform:translate(-50%,-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-left,body.swal2-no-backdrop .swal2-container.swal2-center-start{top:50%;left:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-end,body.swal2-no-backdrop .swal2-container.swal2-center-right{top:50%;right:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom{bottom:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom-left,body.swal2-no-backdrop .swal2-container.swal2-bottom-start{bottom:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-bottom-end,body.swal2-no-backdrop .swal2-container.swal2-bottom-right{right:0;bottom:0}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{background-color:transparent}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}body.swal2-toast-column .swal2-toast{flex-direction:column;align-items:stretch}body.swal2-toast-column .swal2-toast .swal2-actions{flex:1;align-self:stretch;height:2.2em;margin-top:.3125em}body.swal2-toast-column .swal2-toast .swal2-loading{justify-content:center}body.swal2-toast-column .swal2-toast .swal2-input{height:2em;margin:.3125em auto;font-size:1em}body.swal2-toast-column .swal2-toast .swal2-validation-message{font-size:1em}"); \ No newline at end of file +"undefined"!=typeof document&&function(e,t){var n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,".swal2-popup.swal2-toast{flex-direction:row;align-items:center;width:auto;padding:.625em;overflow-y:hidden;background:#fff;box-shadow:0 0 .625em #d9d9d9}.swal2-popup.swal2-toast .swal2-header{flex-direction:row;padding:0}.swal2-popup.swal2-toast .swal2-title{flex-grow:1;justify-content:flex-start;margin:0 .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{position:static;width:.8em;height:.8em;line-height:.8}.swal2-popup.swal2-toast .swal2-content{justify-content:flex-start;padding:0;font-size:1em}.swal2-popup.swal2-toast .swal2-icon{width:2em;min-width:2em;height:2em;margin:0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{font-size:.25em}}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{flex-basis:auto!important;width:auto;height:auto;margin:0 .3125em;padding:0}.swal2-popup.swal2-toast .swal2-styled{margin:.125em .3125em;padding:.3125em .625em;font-size:1em}.swal2-popup.swal2-toast .swal2-styled:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(100,150,200,.5)}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:flex;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;flex-direction:row;align-items:center;justify-content:center;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-top{align-items:flex-start}.swal2-container.swal2-top-left,.swal2-container.swal2-top-start{align-items:flex-start;justify-content:flex-start}.swal2-container.swal2-top-end,.swal2-container.swal2-top-right{align-items:flex-start;justify-content:flex-end}.swal2-container.swal2-center{align-items:center}.swal2-container.swal2-center-left,.swal2-container.swal2-center-start{align-items:center;justify-content:flex-start}.swal2-container.swal2-center-end,.swal2-container.swal2-center-right{align-items:center;justify-content:flex-end}.swal2-container.swal2-bottom{align-items:flex-end}.swal2-container.swal2-bottom-left,.swal2-container.swal2-bottom-start{align-items:flex-end;justify-content:flex-start}.swal2-container.swal2-bottom-end,.swal2-container.swal2-bottom-right{align-items:flex-end;justify-content:flex-end}.swal2-container.swal2-bottom-end>:first-child,.swal2-container.swal2-bottom-left>:first-child,.swal2-container.swal2-bottom-right>:first-child,.swal2-container.swal2-bottom-start>:first-child,.swal2-container.swal2-bottom>:first-child{margin-top:auto}.swal2-container.swal2-grow-fullscreen>.swal2-modal{display:flex!important;flex:1;align-self:stretch;justify-content:center}.swal2-container.swal2-grow-row>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-grow-column{flex:1;flex-direction:column}.swal2-container.swal2-grow-column.swal2-bottom,.swal2-container.swal2-grow-column.swal2-center,.swal2-container.swal2-grow-column.swal2-top{align-items:center}.swal2-container.swal2-grow-column.swal2-bottom-left,.swal2-container.swal2-grow-column.swal2-bottom-start,.swal2-container.swal2-grow-column.swal2-center-left,.swal2-container.swal2-grow-column.swal2-center-start,.swal2-container.swal2-grow-column.swal2-top-left,.swal2-container.swal2-grow-column.swal2-top-start{align-items:flex-start}.swal2-container.swal2-grow-column.swal2-bottom-end,.swal2-container.swal2-grow-column.swal2-bottom-right,.swal2-container.swal2-grow-column.swal2-center-end,.swal2-container.swal2-grow-column.swal2-center-right,.swal2-container.swal2-grow-column.swal2-top-end,.swal2-container.swal2-grow-column.swal2-top-right{align-items:flex-end}.swal2-container.swal2-grow-column>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-no-transition{transition:none!important}.swal2-container:not(.swal2-top):not(.swal2-top-start):not(.swal2-top-end):not(.swal2-top-left):not(.swal2-top-right):not(.swal2-center-start):not(.swal2-center-end):not(.swal2-center-left):not(.swal2-center-right):not(.swal2-bottom):not(.swal2-bottom-start):not(.swal2-bottom-end):not(.swal2-bottom-left):not(.swal2-bottom-right):not(.swal2-grow-fullscreen)>.swal2-modal{margin:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-container .swal2-modal{margin:0!important}}.swal2-popup{display:none;position:relative;box-sizing:border-box;flex-direction:column;justify-content:center;width:32em;max-width:100%;padding:1.25em;border:none;border-radius:5px;background:#fff;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-header{display:flex;flex-direction:column;align-items:center;padding:0 1.8em}.swal2-title{position:relative;max-width:100%;margin:0 0 .4em;padding:0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:100%;margin:1.25em auto 0;padding:0 1.6em}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;box-shadow:none;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#2778c4;color:#fff;font-size:1.0625em}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#d14529;color:#fff;font-size:1.0625em}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#757575;color:#fff;font-size:1.0625em}.swal2-styled:focus{outline:0;box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1.25em 0 0;padding:1em 0 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:1.25em auto}.swal2-close{position:absolute;z-index:2;top:0;right:0;align-items:center;justify-content:center;width:1.2em;height:1.2em;padding:0;overflow:hidden;transition:color .1s ease-out;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-size:2.5em;line-height:1.2;cursor:pointer}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-content{z-index:1;justify-content:center;margin:0;padding:0 1.6em;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em auto}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:100%;transition:border-color .3s,box-shadow .3s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06);color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em auto;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-input[type=number]{max-width:10em}.swal2-file{background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto}.swal2-validation-message{display:none;align-items:center;justify-content:center;margin:0 -2.7em;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:1.25em auto 1.875em;border:.25em solid transparent;border-radius:50%;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:0 0 1.25em;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{right:auto;left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@supports (-ms-accelerator:true){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{top:auto;right:auto;bottom:auto;left:auto;max-width:calc(100% - .625em * 2);background-color:transparent!important}body.swal2-no-backdrop .swal2-container>.swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}body.swal2-no-backdrop .swal2-container.swal2-top{top:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-top-left,body.swal2-no-backdrop .swal2-container.swal2-top-start{top:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-top-end,body.swal2-no-backdrop .swal2-container.swal2-top-right{top:0;right:0}body.swal2-no-backdrop .swal2-container.swal2-center{top:50%;left:50%;transform:translate(-50%,-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-left,body.swal2-no-backdrop .swal2-container.swal2-center-start{top:50%;left:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-end,body.swal2-no-backdrop .swal2-container.swal2-center-right{top:50%;right:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom{bottom:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom-left,body.swal2-no-backdrop .swal2-container.swal2-bottom-start{bottom:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-bottom-end,body.swal2-no-backdrop .swal2-container.swal2-bottom-right{right:0;bottom:0}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{background-color:transparent}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}body.swal2-toast-column .swal2-toast{flex-direction:column;align-items:stretch}body.swal2-toast-column .swal2-toast .swal2-actions{flex:1;align-self:stretch;height:2.2em;margin-top:.3125em}body.swal2-toast-column .swal2-toast .swal2-loading{justify-content:center}body.swal2-toast-column .swal2-toast .swal2-input{height:2em;margin:.3125em auto;font-size:1em}body.swal2-toast-column .swal2-toast .swal2-validation-message{font-size:1em}"); \ No newline at end of file diff --git a/plugins/sweetalert2/sweetalert2.all.min.js b/plugins/sweetalert2/sweetalert2.all.min.js index 0e674da51..1d4393c8f 100644 --- a/plugins/sweetalert2/sweetalert2.all.min.js +++ b/plugins/sweetalert2/sweetalert2.all.min.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Sweetalert2=e()}(this,function(){"use strict";function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){for(var n=0;nt.clientHeight)}function ut(t){var e=window.getComputedStyle(t),t=parseFloat(e.getPropertyValue("animation-duration")||"0"),e=parseFloat(e.getPropertyValue("transition-duration")||"0");return 0\n
\n
    \n
    \n
    \n
    \n
    \n
    \n \n

    \n \n
    \n
    \n
    \n \n \n
    \n \n \n
    \n \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n').replace(/(^|\n)\s*/g,""),Ct=function(t){var e,n,o,i,r,a=!!(i=C())&&(i.parentNode.removeChild(i),vt([document.documentElement,document.body],[$["no-backdrop"],$["toast-shown"],$["has-column"]]),!0);dt()?W("SweetAlert2 requires document to initialize"):((r=document.createElement("div")).className=$.container,a&>(r,$["no-transition"]),U(r,wt),(i="string"==typeof(e=t.target)?document.querySelector(e):e).appendChild(r),a=t,(e=x()).setAttribute("role",a.toast?"alert":"dialog"),e.setAttribute("aria-live",a.toast?"polite":"assertive"),a.toast||e.setAttribute("aria-modal","true"),r=i,"rtl"===window.getComputedStyle(r).direction&>(C(),$.rtl),t=P(),a=yt(t,$.input),e=yt(t,$.file),n=t.querySelector(".".concat($.range," input")),o=t.querySelector(".".concat($.range," output")),i=yt(t,$.select),r=t.querySelector(".".concat($.checkbox," input")),t=yt(t,$.textarea),a.oninput=pt,e.onchange=pt,i.onchange=pt,r.onchange=pt,t.oninput=pt,n.oninput=function(t){pt(t),o.value=n.value},n.onchange=function(t){pt(t),n.nextSibling.value=n.value})},kt=function(t,e){t.jquery?xt(e,t):U(e,t.toString())},xt=function(t,e){if(t.textContent="",0 in e)for(var n=0;n in e;n++)t.appendChild(e[n].cloneNode(!0));else t.appendChild(e.cloneNode(!0))},Bt=function(){if(dt())return!1;var t,e=document.createElement("div"),n={WebkitAnimation:"webkitAnimationEnd",OAnimation:"oAnimationEnd oanimationend",animation:"animationend"};for(t in n)if(Object.prototype.hasOwnProperty.call(n,t)&&void 0!==e.style[t])return n[t];return!1}();function At(t,e,n){var o;st(t,n["show".concat((o=e).charAt(0).toUpperCase()+o.slice(1),"Button")],"inline-block"),U(t,n["".concat(e,"ButtonText")]),t.setAttribute("aria-label",n["".concat(e,"ButtonAriaLabel")]),t.className=$[e],F(t,n,"".concat(e,"Button")),gt(t,n["".concat(e,"ButtonClass")])}function Pt(t,e){var n,o,i=C();i&&(o=i,"string"==typeof(n=e.backdrop)?o.style.background=n:n||gt([document.documentElement,document.body],$["no-backdrop"]),!e.backdrop&&e.allowOutsideClick&&z('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`'),o=i,(n=e.position)in $?gt(o,$[n]):(z('The "position" parameter is not valid, defaulting to "center"'),gt(o,$.center)),n=i,!(o=e.grow)||"string"!=typeof o||(o="grow-".concat(o))in $&>(n,$[o]),F(i,e,"container"),(e=document.body.getAttribute("data-swal2-queue-step"))&&(i.setAttribute("data-queue-step",e),document.body.removeAttribute("data-swal2-queue-step")))}function Et(t,e){t.placeholder&&!e.inputPlaceholder||(t.placeholder=e.inputPlaceholder)}function Ot(t,e,n){var o,i;n.inputLabel&&(t.id=$.input,o=document.createElement("label"),i=$["input-label"],o.setAttribute("for",t.id),o.className=i,o.innerText=n.inputLabel,e.insertAdjacentElement("beforebegin",o))}var St={promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap},Tt=["input","file","range","select","radio","checkbox","textarea"],Lt=function(t){if(!jt[t.input])return W('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'.concat(t.input,'"'));var e=qt(t.input),n=jt[t.input](e,t);it(n),setTimeout(function(){et(n)})},Dt=function(t,e){var n=tt(P(),t);if(n)for(var o in!function(t){for(var e=0;e=o.progressSteps.length&&z("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),o.progressSteps.forEach(function(t,e){var n,t=(n=t,t=document.createElement("li"),gt(t,$["progress-step"]),U(t,n),t);i.appendChild(t),e===r&>(t,$["active-progress-step"]),e!==o.progressSteps.length-1&&(t=o,e=document.createElement("li"),gt(e,$["progress-step-line"]),t.progressStepsDistance&&(e.style.width=t.progressStepsDistance),e=e,i.appendChild(e))})}function Rt(t,e){var n=j();F(n,e,"header"),Ht(0,e),function(t,e){t=St.innerParams.get(t);t&&e.icon===t.icon&&B()?Ft(B(),e):(_t(),e.icon&&(-1!==Object.keys(J).indexOf(e.icon)?(t=k(".".concat($.icon,".").concat(J[e.icon])),it(t),Wt(t,e),Ft(t,e),gt(t,e.showClass.icon)):W('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(e.icon,'"'))))}(t,e),function(t){var e=E();if(!t.imageUrl)return rt(e);it(e,""),e.setAttribute("src",t.imageUrl),e.setAttribute("alt",t.imageAlt),ot(e,"width",t.imageWidth),ot(e,"height",t.imageHeight),e.className=$.image,F(e,t,"image")}(e),n=e,t=A(),st(t,n.title||n.titleText),n.title&&ft(n.title,t),n.titleText&&(t.innerText=n.titleText),F(t,n,"title"),n=e,e=H(),U(e,n.closeButtonHtml),F(e,n,"closeButton"),st(e,n.showCloseButton),e.setAttribute("aria-label",n.closeButtonAriaLabel)}function Nt(t,e){var n,o;o=e,n=x(),ot(n,"width",o.width),ot(n,"padding",o.padding),o.background&&(n.style.background=o.background),Qt(n,o),Pt(0,e),Rt(t,e),Mt(t,e),mt(0,e),o=e,t=M(),st(t,o.footer),o.footer&&ft(o.footer,t),F(t,o,"footer"),"function"==typeof e.didRender?e.didRender(x()):"function"==typeof e.onRender&&e.onRender(x())}function Ut(){return T()&&T().click()}var _t=function(){for(var t=n(),e=0;e
    \n \n
    \n
    \n '):"error"===e.icon?U(t,'\n \n \n \n \n '):U(t,Yt({question:"?",warning:"!",info:"i"}[e.icon]))},Kt=function(t,e){if(e.iconColor){t.style.color=e.iconColor,t.style.borderColor=e.iconColor;for(var n=0,o=[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"];n').concat(t,"
    ")},Zt=[],Qt=function(t,e){t.className="".concat($.popup," ").concat(bt(t)?e.showClass.popup:""),e.toast?(gt([document.documentElement,document.body],$["toast-shown"]),gt(t,$.toast)):gt(t,$.modal),F(t,e,"popup"),"string"==typeof e.customClass&>(t,e.customClass),e.icon&>(t,$["icon-".concat(e.icon)])};function $t(t){var e=x();e||kn.fire(),e=x();var n=q(),o=D();!t&&bt(T())&&(t=T()),it(n),t&&(rt(t),o.setAttribute("data-button-to-replace",t.className)),o.parentNode.insertBefore(o,t),gt([e,n],$.loading),it(o),e.setAttribute("data-loading",!0),e.setAttribute("aria-busy",!0),e.focus()}function Jt(){return new Promise(function(t){var e=window.scrollX,n=window.scrollY;oe.restoreFocusTimeout=setTimeout(function(){oe.previousActiveElement&&oe.previousActiveElement.focus?(oe.previousActiveElement.focus(),oe.previousActiveElement=null):document.body&&document.body.focus(),t()},100),void 0!==e&&void 0!==n&&window.scrollTo(e,n)})}function Xt(){if(oe.timeout)return function(){var t=V(),e=parseInt(window.getComputedStyle(t).width);t.style.removeProperty("transition"),t.style.width="100%";var n=parseInt(window.getComputedStyle(t).width),n=parseInt(e/n*100);t.style.removeProperty("transition"),t.style.width="".concat(n,"%")}(),oe.timeout.stop()}function Gt(){if(oe.timeout){var t=oe.timeout.start();return lt(t),t}}function te(t){return Object.prototype.hasOwnProperty.call(ie,t)}function ee(t){return ae[t]}function ne(t){for(var e in t)te(o=e)||z('Unknown parameter "'.concat(o,'"')),t.toast&&(n=e,-1!==se.indexOf(n)&&z('The parameter "'.concat(n,'" is incompatible with toasts'))),ee(n=e)&&g(n,ee(n));var n,o}var oe={},ie={title:"",titleText:"",text:"",html:"",footer:"",icon:void 0,iconColor:void 0,iconHtml:void 0,toast:!1,animation:!0,showClass:{popup:"swal2-show",backdrop:"swal2-backdrop-show",icon:"swal2-icon-show"},hideClass:{popup:"swal2-hide",backdrop:"swal2-backdrop-hide",icon:"swal2-icon-hide"},customClass:void 0,target:"body",backdrop:!0,heightAuto:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,stopKeydownPropagation:!0,keydownListenerCapture:!1,showConfirmButton:!0,showDenyButton:!1,showCancelButton:!1,preConfirm:void 0,preDeny:void 0,confirmButtonText:"OK",confirmButtonAriaLabel:"",confirmButtonColor:void 0,denyButtonText:"No",denyButtonAriaLabel:"",denyButtonColor:void 0,cancelButtonText:"Cancel",cancelButtonAriaLabel:"",cancelButtonColor:void 0,buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusDeny:!1,focusCancel:!1,showCloseButton:!1,closeButtonHtml:"×",closeButtonAriaLabel:"Close this dialog",loaderHtml:"",showLoaderOnConfirm:!1,imageUrl:void 0,imageWidth:void 0,imageHeight:void 0,imageAlt:"",timer:void 0,timerProgressBar:!1,width:void 0,padding:void 0,background:void 0,input:void 0,inputPlaceholder:"",inputLabel:"",inputValue:"",inputOptions:{},inputAutoTrim:!0,inputAttributes:{},inputValidator:void 0,returnInputValueOnDeny:!1,validationMessage:void 0,grow:!1,position:"center",progressSteps:[],currentProgressStep:void 0,progressStepsDistance:void 0,onBeforeOpen:void 0,onOpen:void 0,willOpen:void 0,didOpen:void 0,onRender:void 0,didRender:void 0,onClose:void 0,onAfterClose:void 0,willClose:void 0,didClose:void 0,onDestroy:void 0,didDestroy:void 0,scrollbarPadding:!0},re=["allowEscapeKey","allowOutsideClick","background","buttonsStyling","cancelButtonAriaLabel","cancelButtonColor","cancelButtonText","closeButtonAriaLabel","closeButtonHtml","confirmButtonAriaLabel","confirmButtonColor","confirmButtonText","currentProgressStep","customClass","denyButtonAriaLabel","denyButtonColor","denyButtonText","didClose","didDestroy","footer","hideClass","html","icon","iconColor","imageAlt","imageHeight","imageUrl","imageWidth","onAfterClose","onClose","onDestroy","progressSteps","reverseButtons","showCancelButton","showCloseButton","showConfirmButton","showDenyButton","text","title","titleText","willClose"],ae={animation:'showClass" and "hideClass',onBeforeOpen:"willOpen",onOpen:"didOpen",onRender:"didRender",onClose:"willClose",onAfterClose:"didClose",onDestroy:"didDestroy"},se=["allowOutsideClick","allowEnterKey","backdrop","focusConfirm","focusDeny","focusCancel","heightAuto","keydownListenerCapture"],ce=Object.freeze({isValidParameter:te,isUpdatableParameter:function(t){return-1!==re.indexOf(t)},isDeprecatedParameter:ee,argsToParams:function(n){var o={};return"object"!==r(n[0])||w(n[0])?["title","html","icon"].forEach(function(t,e){e=n[e];"string"==typeof e||w(e)?o[t]=e:void 0!==e&&W("Unexpected type of ".concat(t,'! Expected "string" or "Element", got ').concat(r(e)))}):c(o,n[0]),o},isVisible:function(){return bt(x())},clickConfirm:Ut,clickDeny:function(){return L()&&L().click()},clickCancel:function(){return I()&&I().click()},getContainer:C,getPopup:x,getTitle:A,getContent:P,getHtmlContainer:function(){return t($["html-container"])},getImage:E,getIcon:B,getIcons:n,getInputLabel:function(){return t($["input-label"])},getCloseButton:H,getActions:q,getConfirmButton:T,getDenyButton:L,getCancelButton:I,getLoader:D,getHeader:j,getFooter:M,getTimerProgressBar:V,getFocusableElements:R,getValidationMessage:S,isLoading:function(){return x().hasAttribute("data-loading")},fire:function(){for(var t=arguments.length,e=new Array(t),n=0;nwindow.innerHeight&&(G.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight="".concat(G.previousBodyPadding+function(){var t=document.createElement("div");t.className=$["scrollbar-measure"],document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e}(),"px"))}function de(){return!!window.MSInputMethodContext&&!!document.documentMode}function pe(){var t=C(),e=x();t.style.removeProperty("align-items"),e.offsetTop<0&&(t.style.alignItems="flex-start")}var fe=function(){navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i)||x().scrollHeight>window.innerHeight-44&&(C().style.paddingBottom="".concat(44,"px"))},me=function(){var e,t=C();t.ontouchstart=function(t){e=he(t)},t.ontouchmove=function(t){e&&(t.preventDefault(),t.stopPropagation())}},he=function(t){var e=t.target,n=C();return!ge(t)&&!ve(t)&&(e===n||!(ct(n)||"INPUT"===e.tagName||ct(P())&&P().contains(e)))},ge=function(t){return t.touches&&t.touches.length&&"stylus"===t.touches[0].touchType},ve=function(t){return t.touches&&1")),Ct(t)}function Le(t){var e=C(),n=x();"function"==typeof t.willOpen?t.willOpen(n):"function"==typeof t.onBeforeOpen&&t.onBeforeOpen(n);var o=window.getComputedStyle(document.body).overflowY;He(e,n,t),setTimeout(function(){Me(e,n)},10),N()&&(Ve(e,t.scrollbarPadding,o),h(document.body.children).forEach(function(t){t===C()||function(t,e){if("function"==typeof t.contains)return t.contains(e)}(t,C())||(t.hasAttribute("aria-hidden")&&t.setAttribute("data-previous-aria-hidden",t.getAttribute("aria-hidden")),t.setAttribute("aria-hidden","true"))})),X()||oe.previousActiveElement||(oe.previousActiveElement=document.activeElement),je(n,t),vt(e,$["no-transition"])}function De(t){var e=x();t.target===e&&(t=C(),e.removeEventListener(Bt,De),t.style.overflowY="auto")}function Ie(t,e){t.closePopup({isConfirmed:!0,value:e})}function qe(t,e,n){var o=R(),i=0;if(i:first-child,.swal2-container.swal2-bottom-left>:first-child,.swal2-container.swal2-bottom-right>:first-child,.swal2-container.swal2-bottom-start>:first-child,.swal2-container.swal2-bottom>:first-child{margin-top:auto}.swal2-container.swal2-grow-fullscreen>.swal2-modal{display:flex!important;flex:1;align-self:stretch;justify-content:center}.swal2-container.swal2-grow-row>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-grow-column{flex:1;flex-direction:column}.swal2-container.swal2-grow-column.swal2-bottom,.swal2-container.swal2-grow-column.swal2-center,.swal2-container.swal2-grow-column.swal2-top{align-items:center}.swal2-container.swal2-grow-column.swal2-bottom-left,.swal2-container.swal2-grow-column.swal2-bottom-start,.swal2-container.swal2-grow-column.swal2-center-left,.swal2-container.swal2-grow-column.swal2-center-start,.swal2-container.swal2-grow-column.swal2-top-left,.swal2-container.swal2-grow-column.swal2-top-start{align-items:flex-start}.swal2-container.swal2-grow-column.swal2-bottom-end,.swal2-container.swal2-grow-column.swal2-bottom-right,.swal2-container.swal2-grow-column.swal2-center-end,.swal2-container.swal2-grow-column.swal2-center-right,.swal2-container.swal2-grow-column.swal2-top-end,.swal2-container.swal2-grow-column.swal2-top-right{align-items:flex-end}.swal2-container.swal2-grow-column>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-no-transition{transition:none!important}.swal2-container:not(.swal2-top):not(.swal2-top-start):not(.swal2-top-end):not(.swal2-top-left):not(.swal2-top-right):not(.swal2-center-start):not(.swal2-center-end):not(.swal2-center-left):not(.swal2-center-right):not(.swal2-bottom):not(.swal2-bottom-start):not(.swal2-bottom-end):not(.swal2-bottom-left):not(.swal2-bottom-right):not(.swal2-grow-fullscreen)>.swal2-modal{margin:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-container .swal2-modal{margin:0!important}}.swal2-popup{display:none;position:relative;box-sizing:border-box;flex-direction:column;justify-content:center;width:32em;max-width:100%;padding:1.25em;border:none;border-radius:5px;background:#fff;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-header{display:flex;flex-direction:column;align-items:center;padding:0 1.8em}.swal2-title{position:relative;max-width:100%;margin:0 0 .4em;padding:0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:100%;margin:1.25em auto 0;padding:0 1.6em}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;box-shadow:none;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#2778c4;color:#fff;font-size:1.0625em}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#d14529;color:#fff;font-size:1.0625em}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#757575;color:#fff;font-size:1.0625em}.swal2-styled:focus{outline:0;box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1.25em 0 0;padding:1em 0 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:1.25em auto}.swal2-close{position:absolute;z-index:2;top:0;right:0;align-items:center;justify-content:center;width:1.2em;height:1.2em;padding:0;overflow:hidden;transition:color .1s ease-out;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-size:2.5em;line-height:1.2;cursor:pointer}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-content{z-index:1;justify-content:center;margin:0;padding:0 1.6em;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em auto}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:100%;transition:border-color .3s,box-shadow .3s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06);color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em auto;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-input[type=number]{max-width:10em}.swal2-file{background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto}.swal2-validation-message{display:none;align-items:center;justify-content:center;margin:0 -2.7em;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:1.25em auto 1.875em;border:.25em solid transparent;border-radius:50%;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:0 0 1.25em;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{right:auto;left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@supports (-ms-accelerator:true){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{top:auto;right:auto;bottom:auto;left:auto;max-width:calc(100% - .625em * 2);background-color:transparent!important}body.swal2-no-backdrop .swal2-container>.swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}body.swal2-no-backdrop .swal2-container.swal2-top{top:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-top-left,body.swal2-no-backdrop .swal2-container.swal2-top-start{top:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-top-end,body.swal2-no-backdrop .swal2-container.swal2-top-right{top:0;right:0}body.swal2-no-backdrop .swal2-container.swal2-center{top:50%;left:50%;transform:translate(-50%,-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-left,body.swal2-no-backdrop .swal2-container.swal2-center-start{top:50%;left:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-end,body.swal2-no-backdrop .swal2-container.swal2-center-right{top:50%;right:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom{bottom:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom-left,body.swal2-no-backdrop .swal2-container.swal2-bottom-start{bottom:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-bottom-end,body.swal2-no-backdrop .swal2-container.swal2-bottom-right{right:0;bottom:0}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{background-color:transparent}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}body.swal2-toast-column .swal2-toast{flex-direction:column;align-items:stretch}body.swal2-toast-column .swal2-toast .swal2-actions{flex:1;align-self:stretch;height:2.2em;margin-top:.3125em}body.swal2-toast-column .swal2-toast .swal2-loading{justify-content:center}body.swal2-toast-column .swal2-toast .swal2-input{height:2em;margin:.3125em auto;font-size:1em}body.swal2-toast-column .swal2-toast .swal2-validation-message{font-size:1em}"); \ No newline at end of file +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Sweetalert2=e()}(this,function(){"use strict";function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){for(var n=0;nt.clientHeight)}function lt(t){var e=window.getComputedStyle(t),t=parseFloat(e.getPropertyValue("animation-duration")||"0"),e=parseFloat(e.getPropertyValue("transition-duration")||"0");return 0\n
    \n
      \n
      \n
      \n
      \n
      \n
      \n \n

      \n \n
      \n
      \n
      \n \n \n
      \n \n \n
      \n \n
      \n \n \n
      \n
      \n
      \n
      \n \n \n \n
      \n
      \n
      \n
      \n
      \n
      \n').replace(/(^|\n)\s*/g,""),kt=function(t){var e,n,o,i,r,a=!!(i=k())&&(i.parentNode.removeChild(i),bt([document.documentElement,document.body],[$["no-backdrop"],$["toast-shown"],$["has-column"]]),!0);pt()?K("SweetAlert2 requires document to initialize"):((r=document.createElement("div")).className=$.container,a&&vt(r,$["no-transition"]),_(r,Ct),(i="string"==typeof(e=t.target)?document.querySelector(e):e).appendChild(r),a=t,(e=x()).setAttribute("role",a.toast?"alert":"dialog"),e.setAttribute("aria-live",a.toast?"polite":"assertive"),a.toast||e.setAttribute("aria-modal","true"),r=i,"rtl"===window.getComputedStyle(r).direction&&vt(k(),$.rtl),t=E(),a=yt(t,$.input),e=yt(t,$.file),n=t.querySelector(".".concat($.range," input")),o=t.querySelector(".".concat($.range," output")),i=yt(t,$.select),r=t.querySelector(".".concat($.checkbox," input")),t=yt(t,$.textarea),a.oninput=ft,e.onchange=ft,i.onchange=ft,r.onchange=ft,t.oninput=ft,n.oninput=function(t){ft(t),o.value=n.value},n.onchange=function(t){ft(t),n.nextSibling.value=n.value})},At=function(t,e){t.jquery?xt(e,t):_(e,t.toString())},xt=function(t,e){if(t.textContent="",0 in e)for(var n=0;n in e;n++)t.appendChild(e[n].cloneNode(!0));else t.appendChild(e.cloneNode(!0))},Bt=function(){if(pt())return!1;var t,e=document.createElement("div"),n={WebkitAnimation:"webkitAnimationEnd",OAnimation:"oAnimationEnd oanimationend",animation:"animationend"};for(t in n)if(Object.prototype.hasOwnProperty.call(n,t)&&void 0!==e.style[t])return n[t];return!1}();function Pt(t,e,n){st(t,n["show".concat(m(e),"Button")],"inline-block"),_(t,n["".concat(e,"ButtonText")]),t.setAttribute("aria-label",n["".concat(e,"ButtonAriaLabel")]),t.className=$[e],z(t,n,"".concat(e,"Button")),vt(t,n["".concat(e,"ButtonClass")])}function Et(t,e){var n,o,i=k();i&&(o=i,"string"==typeof(n=e.backdrop)?o.style.background=n:n||vt([document.documentElement,document.body],$["no-backdrop"]),!e.backdrop&&e.allowOutsideClick&&W('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`'),o=i,(n=e.position)in $?vt(o,$[n]):(W('The "position" parameter is not valid, defaulting to "center"'),vt(o,$.center)),n=i,!(o=e.grow)||"string"!=typeof o||(o="grow-".concat(o))in $&&vt(n,$[o]),z(i,e,"container"),(e=document.body.getAttribute("data-swal2-queue-step"))&&(i.setAttribute("data-queue-step",e),document.body.removeAttribute("data-swal2-queue-step")))}function St(t,e){t.placeholder&&!e.inputPlaceholder||(t.placeholder=e.inputPlaceholder)}function Ot(t,e,n){var o,i;n.inputLabel&&(t.id=$.input,o=document.createElement("label"),i=$["input-label"],o.setAttribute("for",t.id),o.className=i,o.innerText=n.inputLabel,e.insertAdjacentElement("beforebegin",o))}var Tt={promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap},Lt=["input","file","range","select","radio","checkbox","textarea"],qt=function(t){if(!Mt[t.input])return K('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'.concat(t.input,'"'));var e=It(t.input),n=Mt[t.input](e,t);rt(n),setTimeout(function(){nt(n)})},Dt=function(t,e){var n=et(E(),t);if(n)for(var o in!function(t){for(var e=0;e=o.progressSteps.length&&W("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),o.progressSteps.forEach(function(t,e){var n,t=(n=t,t=document.createElement("li"),vt(t,$["progress-step"]),_(t,n),t);i.appendChild(t),e===r&&vt(t,$["active-progress-step"]),e!==o.progressSteps.length-1&&(t=o,e=document.createElement("li"),vt(e,$["progress-step-line"]),t.progressStepsDistance&&(e.style.width=t.progressStepsDistance),e=e,i.appendChild(e))})}function Nt(t,e){var n=M();z(n,e,"header"),Rt(0,e),n=t,t=e,(n=Tt.innerParams.get(n))&&t.icon===n.icon&&B()?zt(B(),t):(Ft(),t.icon&&(-1!==Object.keys(X).indexOf(t.icon)?(n=A(".".concat($.icon,".").concat(X[t.icon])),rt(n),Kt(n,t),zt(n,t),vt(n,t.showClass.icon)):K('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(t.icon,'"')))),function(t){var e=S();if(!t.imageUrl)return at(e);rt(e,""),e.setAttribute("src",t.imageUrl),e.setAttribute("alt",t.imageAlt),it(e,"width",t.imageWidth),it(e,"height",t.imageHeight),e.className=$.image,z(e,t,"image")}(e),n=e,t=P(),st(t,n.title||n.titleText),n.title&&mt(n.title,t),n.titleText&&(t.innerText=n.titleText),z(t,n,"title"),n=e,e=R(),_(e,n.closeButtonHtml),z(e,n,"closeButton"),st(e,n.showCloseButton),e.setAttribute("aria-label",n.closeButtonAriaLabel)}function Ut(t,e){var n,o;o=e,n=x(),it(n,"width",o.width),it(n,"padding",o.padding),o.background&&(n.style.background=o.background),Jt(n,o),Et(0,e),Nt(t,e),Ht(t,e),ht(0,e),o=e,t=H(),st(t,o.footer),o.footer&&mt(o.footer,t),z(t,o,"footer"),"function"==typeof e.didRender?e.didRender(x()):"function"==typeof e.onRender&&e.onRender(x())}function _t(){return L()&&L().click()}var Ft=function(){for(var t=n(),e=0;e
      \n \n
      \n
      \n '):"error"===e.icon?_(t,'\n \n \n \n \n '):_(t,Zt({question:"?",warning:"!",info:"i"}[e.icon]))},Yt=function(t,e){if(e.iconColor){t.style.color=e.iconColor,t.style.borderColor=e.iconColor;for(var n=0,o=[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"];n').concat(t,"
      ")},Qt=[],Jt=function(t,e){t.className="".concat($.popup," ").concat(wt(t)?e.showClass.popup:""),e.toast?(vt([document.documentElement,document.body],$["toast-shown"]),vt(t,$.toast)):vt(t,$.modal),z(t,e,"popup"),"string"==typeof e.customClass&&vt(t,e.customClass),e.icon&&vt(t,$["icon-".concat(e.icon)])};function $t(t){var e=x();e||Mn.fire(),e=x();var n=I(),o=D();!t&&wt(L())&&(t=L()),rt(n),t&&(at(t),o.setAttribute("data-button-to-replace",t.className)),o.parentNode.insertBefore(o,t),vt([e,n],$.loading),rt(o),e.setAttribute("data-loading",!0),e.setAttribute("aria-busy",!0),e.focus()}function Xt(){return new Promise(function(t){var e=window.scrollX,n=window.scrollY;ee.restoreFocusTimeout=setTimeout(function(){ee.previousActiveElement&&ee.previousActiveElement.focus?(ee.previousActiveElement.focus(),ee.previousActiveElement=null):document.body&&document.body.focus(),t()},100),void 0!==e&&void 0!==n&&window.scrollTo(e,n)})}function Gt(){if(ee.timeout)return function(){var t=V(),e=parseInt(window.getComputedStyle(t).width);t.style.removeProperty("transition"),t.style.width="100%";var n=parseInt(window.getComputedStyle(t).width),n=parseInt(e/n*100);t.style.removeProperty("transition"),t.style.width="".concat(n,"%")}(),ee.timeout.stop()}function te(){if(ee.timeout){var t=ee.timeout.start();return dt(t),t}}var ee={},ne=!1,oe={};function ie(t){for(var e=t.target;e&&e!==document;e=e.parentNode)for(var n in oe){var o=e.getAttribute(n);if(o)return void oe[n].fire({template:o})}}function re(t){return Object.prototype.hasOwnProperty.call(se,t)}function ae(t){return le[t]}function ce(t){for(var e in t)re(o=e)||W('Unknown parameter "'.concat(o,'"')),t.toast&&(n=e,-1!==de.indexOf(n)&&W('The parameter "'.concat(n,'" is incompatible with toasts'))),ae(n=e)&&v(n,ae(n));var n,o}var se={title:"",titleText:"",text:"",html:"",footer:"",icon:void 0,iconColor:void 0,iconHtml:void 0,template:void 0,toast:!1,animation:!0,showClass:{popup:"swal2-show",backdrop:"swal2-backdrop-show",icon:"swal2-icon-show"},hideClass:{popup:"swal2-hide",backdrop:"swal2-backdrop-hide",icon:"swal2-icon-hide"},customClass:{},target:"body",backdrop:!0,heightAuto:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,stopKeydownPropagation:!0,keydownListenerCapture:!1,showConfirmButton:!0,showDenyButton:!1,showCancelButton:!1,preConfirm:void 0,preDeny:void 0,confirmButtonText:"OK",confirmButtonAriaLabel:"",confirmButtonColor:void 0,denyButtonText:"No",denyButtonAriaLabel:"",denyButtonColor:void 0,cancelButtonText:"Cancel",cancelButtonAriaLabel:"",cancelButtonColor:void 0,buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusDeny:!1,focusCancel:!1,showCloseButton:!1,closeButtonHtml:"×",closeButtonAriaLabel:"Close this dialog",loaderHtml:"",showLoaderOnConfirm:!1,imageUrl:void 0,imageWidth:void 0,imageHeight:void 0,imageAlt:"",timer:void 0,timerProgressBar:!1,width:void 0,padding:void 0,background:void 0,input:void 0,inputPlaceholder:"",inputLabel:"",inputValue:"",inputOptions:{},inputAutoTrim:!0,inputAttributes:{},inputValidator:void 0,returnInputValueOnDeny:!1,validationMessage:void 0,grow:!1,position:"center",progressSteps:[],currentProgressStep:void 0,progressStepsDistance:void 0,onBeforeOpen:void 0,onOpen:void 0,willOpen:void 0,didOpen:void 0,onRender:void 0,didRender:void 0,onClose:void 0,onAfterClose:void 0,willClose:void 0,didClose:void 0,onDestroy:void 0,didDestroy:void 0,scrollbarPadding:!0},ue=["allowEscapeKey","allowOutsideClick","background","buttonsStyling","cancelButtonAriaLabel","cancelButtonColor","cancelButtonText","closeButtonAriaLabel","closeButtonHtml","confirmButtonAriaLabel","confirmButtonColor","confirmButtonText","currentProgressStep","customClass","denyButtonAriaLabel","denyButtonColor","denyButtonText","didClose","didDestroy","footer","hideClass","html","icon","iconColor","imageAlt","imageHeight","imageUrl","imageWidth","onAfterClose","onClose","onDestroy","progressSteps","reverseButtons","showCancelButton","showCloseButton","showConfirmButton","showDenyButton","text","title","titleText","willClose"],le={animation:'showClass" and "hideClass',onBeforeOpen:"willOpen",onOpen:"didOpen",onRender:"didRender",onClose:"willClose",onAfterClose:"didClose",onDestroy:"didDestroy"},de=["allowOutsideClick","allowEnterKey","backdrop","focusConfirm","focusDeny","focusCancel","heightAuto","keydownListenerCapture"],pe=Object.freeze({isValidParameter:re,isUpdatableParameter:function(t){return-1!==ue.indexOf(t)},isDeprecatedParameter:ae,argsToParams:function(n){var o={};return"object"!==r(n[0])||C(n[0])?["title","html","icon"].forEach(function(t,e){e=n[e];"string"==typeof e||C(e)?o[t]=e:void 0!==e&&K("Unexpected type of ".concat(t,'! Expected "string" or "Element", got ').concat(r(e)))}):s(o,n[0]),o},isVisible:function(){return wt(x())},clickConfirm:_t,clickDeny:function(){return q()&&q().click()},clickCancel:function(){return j()&&j().click()},getContainer:k,getPopup:x,getTitle:P,getContent:E,getHtmlContainer:function(){return t($["html-container"])},getImage:S,getIcon:B,getIcons:n,getInputLabel:function(){return t($["input-label"])},getCloseButton:R,getActions:I,getConfirmButton:L,getDenyButton:q,getCancelButton:j,getLoader:D,getHeader:M,getFooter:H,getTimerProgressBar:V,getFocusableElements:N,getValidationMessage:T,isLoading:function(){return x().hasAttribute("data-loading")},fire:function(){for(var t=arguments.length,e=new Array(t),n=0;nwindow.innerHeight&&(tt.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight="".concat(tt.previousBodyPadding+function(){var t=document.createElement("div");t.className=$["scrollbar-measure"],document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e}(),"px"))}function he(){return!!window.MSInputMethodContext&&!!document.documentMode}function ge(){var t=k(),e=x();t.style.removeProperty("align-items"),e.offsetTop<0&&(t.style.alignItems="flex-start")}var ve=function(){navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i)||x().scrollHeight>window.innerHeight-44&&(k().style.paddingBottom="".concat(44,"px"))},be=function(){var e,t=k();t.ontouchstart=function(t){e=ye(t)},t.ontouchmove=function(t){e&&(t.preventDefault(),t.stopPropagation())}},ye=function(t){var e=t.target,n=k();return!we(t)&&!Ce(t)&&(e===n||!(ut(n)||"INPUT"===e.tagName||ut(E())&&E().contains(e)))},we=function(t){return t.touches&&t.touches.length&&"stylus"===t.touches[0].touchType},Ce=function(t){return t.touches&&1")),kt(t)}function Ie(t){var e=k(),n=x();"function"==typeof t.willOpen?t.willOpen(n):"function"==typeof t.onBeforeOpen&&t.onBeforeOpen(n);var o=window.getComputedStyle(document.body).overflowY;$e(e,n,t),setTimeout(function(){Qe(e,n)},10),U()&&(Je(e,t.scrollbarPadding,o),g(document.body.children).forEach(function(t){t===k()||function(t,e){if("function"==typeof t.contains)return t.contains(e)}(t,k())||(t.hasAttribute("aria-hidden")&&t.setAttribute("data-previous-aria-hidden",t.getAttribute("aria-hidden")),t.setAttribute("aria-hidden","true"))})),G()||ee.previousActiveElement||(ee.previousActiveElement=document.activeElement),Ze(n,t),bt(e,$["no-transition"])}function Me(t){var e=x();t.target===e&&(t=k(),e.removeEventListener(Bt,Me),t.style.overflowY="auto")}function He(t,e){t.closePopup({isConfirmed:!0,value:e})}function Ve(t,e,n){var o=N();if(o.length)return(e+=n)===o.length?e=0:-1===e&&(e=o.length-1),o[e].focus();x().focus()}var Re=["swal-title","swal-html","swal-footer"],Ne=function(t){var n={};return g(t.querySelectorAll("swal-param")).forEach(function(t){Ye(t,["name","value"]);var e=t.getAttribute("name"),t=t.getAttribute("value");"boolean"==typeof se[e]&&"false"===t&&(t=!1),"object"===r(se[e])&&(t=JSON.parse(t)),n[e]=t}),n},Ue=function(t){var n={};return g(t.querySelectorAll("swal-button")).forEach(function(t){Ye(t,["type","color","aria-label"]);var e=t.getAttribute("type");n["".concat(e,"ButtonText")]=t.innerHTML,n["show".concat(m(e),"Button")]=!0,t.hasAttribute("color")&&(n["".concat(e,"ButtonColor")]=t.getAttribute("color")),t.hasAttribute("aria-label")&&(n["".concat(e,"ButtonAriaLabel")]=t.getAttribute("aria-label"))}),n},_e=function(t){var e={},t=t.querySelector("swal-image");return t&&(Ye(t,["src","width","height","alt"]),t.hasAttribute("src")&&(e.imageUrl=t.getAttribute("src")),t.hasAttribute("width")&&(e.imageWidth=t.getAttribute("width")),t.hasAttribute("height")&&(e.imageHeight=t.getAttribute("height")),t.hasAttribute("alt")&&(e.imageAlt=t.getAttribute("alt"))),e},Fe=function(t){var e={},t=t.querySelector("swal-icon");return t&&(Ye(t,["type","color"]),t.hasAttribute("type")&&(e.icon=t.getAttribute("type")),t.hasAttribute("color")&&(e.iconColor=t.getAttribute("color")),e.iconHtml=t.innerHTML),e},ze=function(t){var n={},e=t.querySelector("swal-input");e&&(Ye(e,["type","label","placeholder","value"]),n.input=e.getAttribute("type")||"text",e.hasAttribute("label")&&(n.inputLabel=e.getAttribute("label")),e.hasAttribute("placeholder")&&(n.inputPlaceholder=e.getAttribute("placeholder")),e.hasAttribute("value")&&(n.inputValue=e.getAttribute("value")));t=t.querySelectorAll("swal-input-option");return t.length&&(n.inputOptions={},g(t).forEach(function(t){Ye(t,["value"]);var e=t.getAttribute("value"),t=t.innerHTML;n.inputOptions[e]=t})),n},We=function(t,e){var n,o={};for(n in e){var i=e[n],r=t.querySelector(i);r&&(Ye(r,[]),o[i.replace(/^swal-/,"")]=r.innerHTML)}return o},Ke=function(t){var e=Re.concat(["swal-param","swal-button","swal-image","swal-icon","swal-input","swal-input-option"]);g(t.querySelectorAll("*")).forEach(function(t){t=t.tagName.toLowerCase();-1===e.indexOf(t)&&W("Unrecognized element <".concat(t,">"))})},Ye=function(e,n){g(e.attributes).forEach(function(t){-1===n.indexOf(t.name)&&W(['Unrecognized attribute "'.concat(t.name,'" on <').concat(e.tagName.toLowerCase(),">."),"".concat(n.length?"Allowed attributes are: ".concat(n.join(", ")):"To set the value, use HTML within the element.")])})},Ze=function(t,e){"function"==typeof e.didOpen?setTimeout(function(){return e.didOpen(t)}):"function"==typeof e.onOpen&&setTimeout(function(){return e.onOpen(t)})},Qe=function(t,e){Bt&<(e)?(t.style.overflowY="hidden",e.addEventListener(Bt,Me)):t.style.overflowY="auto"},Je=function(t,e,n){var o;(/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream||"MacIntel"===navigator.platform&&1:first-child,.swal2-container.swal2-bottom-left>:first-child,.swal2-container.swal2-bottom-right>:first-child,.swal2-container.swal2-bottom-start>:first-child,.swal2-container.swal2-bottom>:first-child{margin-top:auto}.swal2-container.swal2-grow-fullscreen>.swal2-modal{display:flex!important;flex:1;align-self:stretch;justify-content:center}.swal2-container.swal2-grow-row>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-grow-column{flex:1;flex-direction:column}.swal2-container.swal2-grow-column.swal2-bottom,.swal2-container.swal2-grow-column.swal2-center,.swal2-container.swal2-grow-column.swal2-top{align-items:center}.swal2-container.swal2-grow-column.swal2-bottom-left,.swal2-container.swal2-grow-column.swal2-bottom-start,.swal2-container.swal2-grow-column.swal2-center-left,.swal2-container.swal2-grow-column.swal2-center-start,.swal2-container.swal2-grow-column.swal2-top-left,.swal2-container.swal2-grow-column.swal2-top-start{align-items:flex-start}.swal2-container.swal2-grow-column.swal2-bottom-end,.swal2-container.swal2-grow-column.swal2-bottom-right,.swal2-container.swal2-grow-column.swal2-center-end,.swal2-container.swal2-grow-column.swal2-center-right,.swal2-container.swal2-grow-column.swal2-top-end,.swal2-container.swal2-grow-column.swal2-top-right{align-items:flex-end}.swal2-container.swal2-grow-column>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-no-transition{transition:none!important}.swal2-container:not(.swal2-top):not(.swal2-top-start):not(.swal2-top-end):not(.swal2-top-left):not(.swal2-top-right):not(.swal2-center-start):not(.swal2-center-end):not(.swal2-center-left):not(.swal2-center-right):not(.swal2-bottom):not(.swal2-bottom-start):not(.swal2-bottom-end):not(.swal2-bottom-left):not(.swal2-bottom-right):not(.swal2-grow-fullscreen)>.swal2-modal{margin:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-container .swal2-modal{margin:0!important}}.swal2-popup{display:none;position:relative;box-sizing:border-box;flex-direction:column;justify-content:center;width:32em;max-width:100%;padding:1.25em;border:none;border-radius:5px;background:#fff;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-header{display:flex;flex-direction:column;align-items:center;padding:0 1.8em}.swal2-title{position:relative;max-width:100%;margin:0 0 .4em;padding:0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:100%;margin:1.25em auto 0;padding:0 1.6em}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;box-shadow:none;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#2778c4;color:#fff;font-size:1.0625em}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#d14529;color:#fff;font-size:1.0625em}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#757575;color:#fff;font-size:1.0625em}.swal2-styled:focus{outline:0;box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1.25em 0 0;padding:1em 0 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:1.25em auto}.swal2-close{position:absolute;z-index:2;top:0;right:0;align-items:center;justify-content:center;width:1.2em;height:1.2em;padding:0;overflow:hidden;transition:color .1s ease-out;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-size:2.5em;line-height:1.2;cursor:pointer}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-content{z-index:1;justify-content:center;margin:0;padding:0 1.6em;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em auto}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:100%;transition:border-color .3s,box-shadow .3s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06);color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em auto;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-input[type=number]{max-width:10em}.swal2-file{background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto}.swal2-validation-message{display:none;align-items:center;justify-content:center;margin:0 -2.7em;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:1.25em auto 1.875em;border:.25em solid transparent;border-radius:50%;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:0 0 1.25em;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{right:auto;left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@supports (-ms-accelerator:true){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{top:auto;right:auto;bottom:auto;left:auto;max-width:calc(100% - .625em * 2);background-color:transparent!important}body.swal2-no-backdrop .swal2-container>.swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}body.swal2-no-backdrop .swal2-container.swal2-top{top:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-top-left,body.swal2-no-backdrop .swal2-container.swal2-top-start{top:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-top-end,body.swal2-no-backdrop .swal2-container.swal2-top-right{top:0;right:0}body.swal2-no-backdrop .swal2-container.swal2-center{top:50%;left:50%;transform:translate(-50%,-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-left,body.swal2-no-backdrop .swal2-container.swal2-center-start{top:50%;left:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-end,body.swal2-no-backdrop .swal2-container.swal2-center-right{top:50%;right:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom{bottom:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom-left,body.swal2-no-backdrop .swal2-container.swal2-bottom-start{bottom:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-bottom-end,body.swal2-no-backdrop .swal2-container.swal2-bottom-right{right:0;bottom:0}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{background-color:transparent}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}body.swal2-toast-column .swal2-toast{flex-direction:column;align-items:stretch}body.swal2-toast-column .swal2-toast .swal2-actions{flex:1;align-self:stretch;height:2.2em;margin-top:.3125em}body.swal2-toast-column .swal2-toast .swal2-loading{justify-content:center}body.swal2-toast-column .swal2-toast .swal2-input{height:2em;margin:.3125em auto;font-size:1em}body.swal2-toast-column .swal2-toast .swal2-validation-message{font-size:1em}"); \ No newline at end of file diff --git a/plugins/sweetalert2/sweetalert2.css b/plugins/sweetalert2/sweetalert2.css index 8c240e0dd..17e93b3a0 100644 --- a/plugins/sweetalert2/sweetalert2.css +++ b/plugins/sweetalert2/sweetalert2.css @@ -72,7 +72,7 @@ padding: 0; } .swal2-popup.swal2-toast .swal2-styled { - margin: 0 0.3125em; + margin: 0.125em 0.3125em; padding: 0.3125em 0.625em; font-size: 1em; } diff --git a/plugins/sweetalert2/sweetalert2.js b/plugins/sweetalert2/sweetalert2.js index a37ab498b..a65498893 100644 --- a/plugins/sweetalert2/sweetalert2.js +++ b/plugins/sweetalert2/sweetalert2.js @@ -1,5 +1,5 @@ /*! -* sweetalert2 v10.10.2 +* sweetalert2 v10.12.5 * Released under the MIT License. */ (function (global, factory) { @@ -239,7 +239,7 @@ */ var warn = function warn(message) { - console.warn("".concat(consolePrefix, " ").concat(message)); + console.warn("".concat(consolePrefix, " ").concat(_typeof(message) === 'object' ? message.join(' ') : message)); }; /** * Standardise console errors @@ -841,7 +841,7 @@ } // Loader - loader.innerHTML = params.loaderHtml; + setInnerHtml(loader, params.loaderHtml); applyCustomClass(loader, params, 'loader'); }; @@ -1115,13 +1115,16 @@ setInputPlaceholder(textarea, params); setInputLabel(textarea, textarea, params); + var getPadding = function getPadding(el) { + return parseInt(window.getComputedStyle(el).paddingLeft) + parseInt(window.getComputedStyle(el).paddingRight); + }; + if ('MutationObserver' in window) { // #1699 var initialPopupWidth = parseInt(window.getComputedStyle(getPopup()).width); - var popupPadding = parseInt(window.getComputedStyle(getPopup()).paddingLeft) + parseInt(window.getComputedStyle(getPopup()).paddingRight); var outputsize = function outputsize() { - var contentWidth = textarea.offsetWidth + popupPadding; + var contentWidth = textarea.offsetWidth + getPadding(getPopup()) + getPadding(getContent()); if (contentWidth > initialPopupWidth) { getPopup().style.width = "".concat(contentWidth, "px"); @@ -1561,8 +1564,8 @@ _createClass(MixinSwal, [{ key: "_main", - value: function _main(params) { - return _get(_getPrototypeOf(MixinSwal.prototype), "_main", this).call(this, _extends({}, mixinParams, params)); + value: function _main(params, prevMixinParams) { + return _get(_getPrototypeOf(MixinSwal.prototype), "_main", this).call(this, params, _extends({}, prevMixinParams, mixinParams)); } }]); @@ -1701,6 +1704,35 @@ return globalState.timeout && globalState.timeout.isRunning(); }; + var bodyClickListenerAdded = false; + var clickHandlers = {}; + function bindClickHandler() { + var attr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'data-swal-template'; + clickHandlers[attr] = this; + + if (!bodyClickListenerAdded) { + document.body.addEventListener('click', bodyClickListener); + bodyClickListenerAdded = true; + } + } + + var bodyClickListener = function bodyClickListener(event) { + // 1. using .parentNode instead of event.path because of better support by old browsers https://stackoverflow.com/a/39245638 + // 2. using .parentNode instead of .parentElement because of IE11 + SVG https://stackoverflow.com/a/36270354 + for (var el = event.target; el && el !== document; el = el.parentNode) { + for (var attr in clickHandlers) { + var template = el.getAttribute(attr); + + if (template) { + clickHandlers[attr].fire({ + template: template + }); + return; + } + } + } + }; + var defaultParams = { title: '', titleText: '', @@ -1710,6 +1742,7 @@ icon: undefined, iconColor: undefined, iconHtml: undefined, + template: undefined, toast: false, animation: true, showClass: { @@ -1722,7 +1755,7 @@ backdrop: 'swal2-backdrop-hide', icon: 'swal2-icon-hide' }, - customClass: undefined, + customClass: {}, target: 'body', backdrop: true, heightAuto: true, @@ -1910,7 +1943,8 @@ resumeTimer: resumeTimer, toggleTimer: toggleTimer, increaseTimer: increaseTimer, - isTimerRunning: isTimerRunning + isTimerRunning: isTimerRunning, + bindClickHandler: bindClickHandler }); /** @@ -2457,6 +2491,181 @@ init(params); } + var swalStringParams = ['swal-title', 'swal-html', 'swal-footer']; + var getTemplateParams = function getTemplateParams(params) { + var template = typeof params.template === 'string' ? document.querySelector(params.template) : params.template; + + if (!template) { + return {}; + } + + var templateContent = template.content || template; // IE11 + + showWarningsForElements(templateContent); + + var result = _extends(getSwalParams(templateContent), getSwalButtons(templateContent), getSwalImage(templateContent), getSwalIcon(templateContent), getSwalInput(templateContent), getSwalStringParams(templateContent, swalStringParams)); + + return result; + }; + + var getSwalParams = function getSwalParams(templateContent) { + var result = {}; + toArray(templateContent.querySelectorAll('swal-param')).forEach(function (param) { + showWarningsForAttributes(param, ['name', 'value']); + var paramName = param.getAttribute('name'); + var value = param.getAttribute('value'); + + if (typeof defaultParams[paramName] === 'boolean' && value === 'false') { + value = false; + } + + if (_typeof(defaultParams[paramName]) === 'object') { + value = JSON.parse(value); + } + + result[paramName] = value; + }); + return result; + }; + + var getSwalButtons = function getSwalButtons(templateContent) { + var result = {}; + toArray(templateContent.querySelectorAll('swal-button')).forEach(function (button) { + showWarningsForAttributes(button, ['type', 'color', 'aria-label']); + var type = button.getAttribute('type'); + result["".concat(type, "ButtonText")] = button.innerHTML; + result["show".concat(capitalizeFirstLetter(type), "Button")] = true; + + if (button.hasAttribute('color')) { + result["".concat(type, "ButtonColor")] = button.getAttribute('color'); + } + + if (button.hasAttribute('aria-label')) { + result["".concat(type, "ButtonAriaLabel")] = button.getAttribute('aria-label'); + } + }); + return result; + }; + + var getSwalImage = function getSwalImage(templateContent) { + var result = {}; + var image = templateContent.querySelector('swal-image'); + + if (image) { + showWarningsForAttributes(image, ['src', 'width', 'height', 'alt']); + + if (image.hasAttribute('src')) { + result.imageUrl = image.getAttribute('src'); + } + + if (image.hasAttribute('width')) { + result.imageWidth = image.getAttribute('width'); + } + + if (image.hasAttribute('height')) { + result.imageHeight = image.getAttribute('height'); + } + + if (image.hasAttribute('alt')) { + result.imageAlt = image.getAttribute('alt'); + } + } + + return result; + }; + + var getSwalIcon = function getSwalIcon(templateContent) { + var result = {}; + var icon = templateContent.querySelector('swal-icon'); + + if (icon) { + showWarningsForAttributes(icon, ['type', 'color']); + + if (icon.hasAttribute('type')) { + result.icon = icon.getAttribute('type'); + } + + if (icon.hasAttribute('color')) { + result.iconColor = icon.getAttribute('color'); + } + + result.iconHtml = icon.innerHTML; + } + + return result; + }; + + var getSwalInput = function getSwalInput(templateContent) { + var result = {}; + var input = templateContent.querySelector('swal-input'); + + if (input) { + showWarningsForAttributes(input, ['type', 'label', 'placeholder', 'value']); + result.input = input.getAttribute('type') || 'text'; + + if (input.hasAttribute('label')) { + result.inputLabel = input.getAttribute('label'); + } + + if (input.hasAttribute('placeholder')) { + result.inputPlaceholder = input.getAttribute('placeholder'); + } + + if (input.hasAttribute('value')) { + result.inputValue = input.getAttribute('value'); + } + } + + var inputOptions = templateContent.querySelectorAll('swal-input-option'); + + if (inputOptions.length) { + result.inputOptions = {}; + toArray(inputOptions).forEach(function (option) { + showWarningsForAttributes(option, ['value']); + var optionValue = option.getAttribute('value'); + var optionName = option.innerHTML; + result.inputOptions[optionValue] = optionName; + }); + } + + return result; + }; + + var getSwalStringParams = function getSwalStringParams(templateContent, paramNames) { + var result = {}; + + for (var i in paramNames) { + var paramName = paramNames[i]; + var tag = templateContent.querySelector(paramName); + + if (tag) { + showWarningsForAttributes(tag, []); + result[paramName.replace(/^swal-/, '')] = tag.innerHTML; + } + } + + return result; + }; + + var showWarningsForElements = function showWarningsForElements(template) { + var allowedElements = swalStringParams.concat(['swal-param', 'swal-button', 'swal-image', 'swal-icon', 'swal-input', 'swal-input-option']); + toArray(template.querySelectorAll('*')).forEach(function (el) { + var tagName = el.tagName.toLowerCase(); + + if (allowedElements.indexOf(tagName) === -1) { + warn("Unrecognized element <".concat(tagName, ">")); + } + }); + }; + + var showWarningsForAttributes = function showWarningsForAttributes(el, allowedAttributes) { + toArray(el.attributes).forEach(function (attribute) { + if (allowedAttributes.indexOf(attribute.name) === -1) { + warn(["Unrecognized attribute \"".concat(attribute.name, "\" on <").concat(el.tagName.toLowerCase(), ">."), "".concat(allowedAttributes.length ? "Allowed attributes are: ".concat(allowedAttributes.join(', ')) : 'To set the value, use HTML within the element.')]); + } + }); + }; + var SHOW_CLASS_TIMEOUT = 10; /** * Open popup, add necessary classes and styles, fix scrollbar @@ -2647,11 +2856,7 @@ var option = document.createElement('option'); option.value = optionValue; setInnerHtml(option, optionLabel); - - if (params.inputValue.toString() === optionValue.toString()) { - option.selected = true; - } - + option.selected = isSelected(optionValue, params.inputValue); parent.appendChild(option); }; @@ -2690,7 +2895,7 @@ radioInput.name = swalClasses.radio; radioInput.value = radioValue; - if (params.inputValue.toString() === radioValue.toString()) { + if (isSelected(radioValue, params.inputValue)) { radioInput.checked = true; } @@ -2743,6 +2948,10 @@ return result; }; + var isSelected = function isSelected(optionValue, inputValue) { + return inputValue && inputValue.toString() === optionValue.toString(); + }; + var handleConfirmButtonClick = function handleConfirmButtonClick(instance, innerParams) { instance.disableButtons(); @@ -2877,7 +3086,7 @@ var setFocus = function setFocus(innerParams, index, increment) { var focusableElements = getFocusableElements(); // search for visible elements and select the next possible match - for (var i = 0; i < focusableElements.length; i++) { + if (focusableElements.length) { index = index + increment; // rollover to first item if (index === focusableElements.length) { @@ -3053,14 +3262,15 @@ }; function _main(userParams) { - showWarningsForParams(userParams); + var mixinParams = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + showWarningsForParams(_extends({}, mixinParams, userParams)); if (globalState.currentInstance) { globalState.currentInstance._destroy(); } globalState.currentInstance = this; - var innerParams = prepareParams(userParams); + var innerParams = prepareParams(userParams, mixinParams); setParameters(innerParams); Object.freeze(innerParams); // clear the previous timer @@ -3077,12 +3287,15 @@ return swalPromise(this, domCache, innerParams); } - var prepareParams = function prepareParams(userParams) { - var showClass = _extends({}, defaultParams.showClass, userParams.showClass); + var prepareParams = function prepareParams(userParams, mixinParams) { + var templateParams = getTemplateParams(userParams); - var hideClass = _extends({}, defaultParams.hideClass, userParams.hideClass); + var showClass = _extends({}, defaultParams.showClass, mixinParams.showClass, templateParams.showClass, userParams.showClass); + + var hideClass = _extends({}, defaultParams.hideClass, mixinParams.hideClass, templateParams.hideClass, userParams.hideClass); + + var params = _extends({}, defaultParams, mixinParams, templateParams, userParams); // precedence is described in #2131 - var params = _extends({}, defaultParams, userParams); params.showClass = showClass; params.hideClass = hideClass; // @deprecated @@ -3403,7 +3616,7 @@ }; }); SweetAlert.DismissReason = DismissReason; - SweetAlert.version = '10.10.2'; + SweetAlert.version = '10.12.5'; var Swal = SweetAlert; Swal["default"] = Swal; diff --git a/plugins/sweetalert2/sweetalert2.min.css b/plugins/sweetalert2/sweetalert2.min.css index 2f89c2523..05a66d84e 100644 --- a/plugins/sweetalert2/sweetalert2.min.css +++ b/plugins/sweetalert2/sweetalert2.min.css @@ -1 +1 @@ -.swal2-popup.swal2-toast{flex-direction:row;align-items:center;width:auto;padding:.625em;overflow-y:hidden;background:#fff;box-shadow:0 0 .625em #d9d9d9}.swal2-popup.swal2-toast .swal2-header{flex-direction:row;padding:0}.swal2-popup.swal2-toast .swal2-title{flex-grow:1;justify-content:flex-start;margin:0 .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{position:static;width:.8em;height:.8em;line-height:.8}.swal2-popup.swal2-toast .swal2-content{justify-content:flex-start;padding:0;font-size:1em}.swal2-popup.swal2-toast .swal2-icon{width:2em;min-width:2em;height:2em;margin:0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{font-size:.25em}}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{flex-basis:auto!important;width:auto;height:auto;margin:0 .3125em;padding:0}.swal2-popup.swal2-toast .swal2-styled{margin:0 .3125em;padding:.3125em .625em;font-size:1em}.swal2-popup.swal2-toast .swal2-styled:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(100,150,200,.5)}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:flex;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;flex-direction:row;align-items:center;justify-content:center;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-top{align-items:flex-start}.swal2-container.swal2-top-left,.swal2-container.swal2-top-start{align-items:flex-start;justify-content:flex-start}.swal2-container.swal2-top-end,.swal2-container.swal2-top-right{align-items:flex-start;justify-content:flex-end}.swal2-container.swal2-center{align-items:center}.swal2-container.swal2-center-left,.swal2-container.swal2-center-start{align-items:center;justify-content:flex-start}.swal2-container.swal2-center-end,.swal2-container.swal2-center-right{align-items:center;justify-content:flex-end}.swal2-container.swal2-bottom{align-items:flex-end}.swal2-container.swal2-bottom-left,.swal2-container.swal2-bottom-start{align-items:flex-end;justify-content:flex-start}.swal2-container.swal2-bottom-end,.swal2-container.swal2-bottom-right{align-items:flex-end;justify-content:flex-end}.swal2-container.swal2-bottom-end>:first-child,.swal2-container.swal2-bottom-left>:first-child,.swal2-container.swal2-bottom-right>:first-child,.swal2-container.swal2-bottom-start>:first-child,.swal2-container.swal2-bottom>:first-child{margin-top:auto}.swal2-container.swal2-grow-fullscreen>.swal2-modal{display:flex!important;flex:1;align-self:stretch;justify-content:center}.swal2-container.swal2-grow-row>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-grow-column{flex:1;flex-direction:column}.swal2-container.swal2-grow-column.swal2-bottom,.swal2-container.swal2-grow-column.swal2-center,.swal2-container.swal2-grow-column.swal2-top{align-items:center}.swal2-container.swal2-grow-column.swal2-bottom-left,.swal2-container.swal2-grow-column.swal2-bottom-start,.swal2-container.swal2-grow-column.swal2-center-left,.swal2-container.swal2-grow-column.swal2-center-start,.swal2-container.swal2-grow-column.swal2-top-left,.swal2-container.swal2-grow-column.swal2-top-start{align-items:flex-start}.swal2-container.swal2-grow-column.swal2-bottom-end,.swal2-container.swal2-grow-column.swal2-bottom-right,.swal2-container.swal2-grow-column.swal2-center-end,.swal2-container.swal2-grow-column.swal2-center-right,.swal2-container.swal2-grow-column.swal2-top-end,.swal2-container.swal2-grow-column.swal2-top-right{align-items:flex-end}.swal2-container.swal2-grow-column>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-no-transition{transition:none!important}.swal2-container:not(.swal2-top):not(.swal2-top-start):not(.swal2-top-end):not(.swal2-top-left):not(.swal2-top-right):not(.swal2-center-start):not(.swal2-center-end):not(.swal2-center-left):not(.swal2-center-right):not(.swal2-bottom):not(.swal2-bottom-start):not(.swal2-bottom-end):not(.swal2-bottom-left):not(.swal2-bottom-right):not(.swal2-grow-fullscreen)>.swal2-modal{margin:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-container .swal2-modal{margin:0!important}}.swal2-popup{display:none;position:relative;box-sizing:border-box;flex-direction:column;justify-content:center;width:32em;max-width:100%;padding:1.25em;border:none;border-radius:5px;background:#fff;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-header{display:flex;flex-direction:column;align-items:center;padding:0 1.8em}.swal2-title{position:relative;max-width:100%;margin:0 0 .4em;padding:0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:100%;margin:1.25em auto 0;padding:0 1.6em}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;box-shadow:none;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#2778c4;color:#fff;font-size:1.0625em}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#d14529;color:#fff;font-size:1.0625em}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#757575;color:#fff;font-size:1.0625em}.swal2-styled:focus{outline:0;box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1.25em 0 0;padding:1em 0 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:1.25em auto}.swal2-close{position:absolute;z-index:2;top:0;right:0;align-items:center;justify-content:center;width:1.2em;height:1.2em;padding:0;overflow:hidden;transition:color .1s ease-out;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-size:2.5em;line-height:1.2;cursor:pointer}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-content{z-index:1;justify-content:center;margin:0;padding:0 1.6em;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em auto}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:100%;transition:border-color .3s,box-shadow .3s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06);color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em auto;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-input[type=number]{max-width:10em}.swal2-file{background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto}.swal2-validation-message{display:none;align-items:center;justify-content:center;margin:0 -2.7em;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:"!";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:1.25em auto 1.875em;border:.25em solid transparent;border-radius:50%;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:0 0 1.25em;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{right:auto;left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@supports (-ms-accelerator:true){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{top:auto;right:auto;bottom:auto;left:auto;max-width:calc(100% - .625em * 2);background-color:transparent!important}body.swal2-no-backdrop .swal2-container>.swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}body.swal2-no-backdrop .swal2-container.swal2-top{top:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-top-left,body.swal2-no-backdrop .swal2-container.swal2-top-start{top:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-top-end,body.swal2-no-backdrop .swal2-container.swal2-top-right{top:0;right:0}body.swal2-no-backdrop .swal2-container.swal2-center{top:50%;left:50%;transform:translate(-50%,-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-left,body.swal2-no-backdrop .swal2-container.swal2-center-start{top:50%;left:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-end,body.swal2-no-backdrop .swal2-container.swal2-center-right{top:50%;right:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom{bottom:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom-left,body.swal2-no-backdrop .swal2-container.swal2-bottom-start{bottom:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-bottom-end,body.swal2-no-backdrop .swal2-container.swal2-bottom-right{right:0;bottom:0}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{background-color:transparent}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}body.swal2-toast-column .swal2-toast{flex-direction:column;align-items:stretch}body.swal2-toast-column .swal2-toast .swal2-actions{flex:1;align-self:stretch;height:2.2em;margin-top:.3125em}body.swal2-toast-column .swal2-toast .swal2-loading{justify-content:center}body.swal2-toast-column .swal2-toast .swal2-input{height:2em;margin:.3125em auto;font-size:1em}body.swal2-toast-column .swal2-toast .swal2-validation-message{font-size:1em} \ No newline at end of file +.swal2-popup.swal2-toast{flex-direction:row;align-items:center;width:auto;padding:.625em;overflow-y:hidden;background:#fff;box-shadow:0 0 .625em #d9d9d9}.swal2-popup.swal2-toast .swal2-header{flex-direction:row;padding:0}.swal2-popup.swal2-toast .swal2-title{flex-grow:1;justify-content:flex-start;margin:0 .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{position:static;width:.8em;height:.8em;line-height:.8}.swal2-popup.swal2-toast .swal2-content{justify-content:flex-start;padding:0;font-size:1em}.swal2-popup.swal2-toast .swal2-icon{width:2em;min-width:2em;height:2em;margin:0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{font-size:.25em}}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{flex-basis:auto!important;width:auto;height:auto;margin:0 .3125em;padding:0}.swal2-popup.swal2-toast .swal2-styled{margin:.125em .3125em;padding:.3125em .625em;font-size:1em}.swal2-popup.swal2-toast .swal2-styled:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(100,150,200,.5)}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:flex;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;flex-direction:row;align-items:center;justify-content:center;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-top{align-items:flex-start}.swal2-container.swal2-top-left,.swal2-container.swal2-top-start{align-items:flex-start;justify-content:flex-start}.swal2-container.swal2-top-end,.swal2-container.swal2-top-right{align-items:flex-start;justify-content:flex-end}.swal2-container.swal2-center{align-items:center}.swal2-container.swal2-center-left,.swal2-container.swal2-center-start{align-items:center;justify-content:flex-start}.swal2-container.swal2-center-end,.swal2-container.swal2-center-right{align-items:center;justify-content:flex-end}.swal2-container.swal2-bottom{align-items:flex-end}.swal2-container.swal2-bottom-left,.swal2-container.swal2-bottom-start{align-items:flex-end;justify-content:flex-start}.swal2-container.swal2-bottom-end,.swal2-container.swal2-bottom-right{align-items:flex-end;justify-content:flex-end}.swal2-container.swal2-bottom-end>:first-child,.swal2-container.swal2-bottom-left>:first-child,.swal2-container.swal2-bottom-right>:first-child,.swal2-container.swal2-bottom-start>:first-child,.swal2-container.swal2-bottom>:first-child{margin-top:auto}.swal2-container.swal2-grow-fullscreen>.swal2-modal{display:flex!important;flex:1;align-self:stretch;justify-content:center}.swal2-container.swal2-grow-row>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-grow-column{flex:1;flex-direction:column}.swal2-container.swal2-grow-column.swal2-bottom,.swal2-container.swal2-grow-column.swal2-center,.swal2-container.swal2-grow-column.swal2-top{align-items:center}.swal2-container.swal2-grow-column.swal2-bottom-left,.swal2-container.swal2-grow-column.swal2-bottom-start,.swal2-container.swal2-grow-column.swal2-center-left,.swal2-container.swal2-grow-column.swal2-center-start,.swal2-container.swal2-grow-column.swal2-top-left,.swal2-container.swal2-grow-column.swal2-top-start{align-items:flex-start}.swal2-container.swal2-grow-column.swal2-bottom-end,.swal2-container.swal2-grow-column.swal2-bottom-right,.swal2-container.swal2-grow-column.swal2-center-end,.swal2-container.swal2-grow-column.swal2-center-right,.swal2-container.swal2-grow-column.swal2-top-end,.swal2-container.swal2-grow-column.swal2-top-right{align-items:flex-end}.swal2-container.swal2-grow-column>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-no-transition{transition:none!important}.swal2-container:not(.swal2-top):not(.swal2-top-start):not(.swal2-top-end):not(.swal2-top-left):not(.swal2-top-right):not(.swal2-center-start):not(.swal2-center-end):not(.swal2-center-left):not(.swal2-center-right):not(.swal2-bottom):not(.swal2-bottom-start):not(.swal2-bottom-end):not(.swal2-bottom-left):not(.swal2-bottom-right):not(.swal2-grow-fullscreen)>.swal2-modal{margin:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-container .swal2-modal{margin:0!important}}.swal2-popup{display:none;position:relative;box-sizing:border-box;flex-direction:column;justify-content:center;width:32em;max-width:100%;padding:1.25em;border:none;border-radius:5px;background:#fff;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-header{display:flex;flex-direction:column;align-items:center;padding:0 1.8em}.swal2-title{position:relative;max-width:100%;margin:0 0 .4em;padding:0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:100%;margin:1.25em auto 0;padding:0 1.6em}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;box-shadow:none;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#2778c4;color:#fff;font-size:1.0625em}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#d14529;color:#fff;font-size:1.0625em}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#757575;color:#fff;font-size:1.0625em}.swal2-styled:focus{outline:0;box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1.25em 0 0;padding:1em 0 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:1.25em auto}.swal2-close{position:absolute;z-index:2;top:0;right:0;align-items:center;justify-content:center;width:1.2em;height:1.2em;padding:0;overflow:hidden;transition:color .1s ease-out;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-size:2.5em;line-height:1.2;cursor:pointer}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-content{z-index:1;justify-content:center;margin:0;padding:0 1.6em;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em auto}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:100%;transition:border-color .3s,box-shadow .3s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06);color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em auto;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-input[type=number]{max-width:10em}.swal2-file{background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto}.swal2-validation-message{display:none;align-items:center;justify-content:center;margin:0 -2.7em;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:"!";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:1.25em auto 1.875em;border:.25em solid transparent;border-radius:50%;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:0 0 1.25em;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{right:auto;left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@supports (-ms-accelerator:true){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{top:auto;right:auto;bottom:auto;left:auto;max-width:calc(100% - .625em * 2);background-color:transparent!important}body.swal2-no-backdrop .swal2-container>.swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}body.swal2-no-backdrop .swal2-container.swal2-top{top:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-top-left,body.swal2-no-backdrop .swal2-container.swal2-top-start{top:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-top-end,body.swal2-no-backdrop .swal2-container.swal2-top-right{top:0;right:0}body.swal2-no-backdrop .swal2-container.swal2-center{top:50%;left:50%;transform:translate(-50%,-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-left,body.swal2-no-backdrop .swal2-container.swal2-center-start{top:50%;left:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-end,body.swal2-no-backdrop .swal2-container.swal2-center-right{top:50%;right:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom{bottom:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom-left,body.swal2-no-backdrop .swal2-container.swal2-bottom-start{bottom:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-bottom-end,body.swal2-no-backdrop .swal2-container.swal2-bottom-right{right:0;bottom:0}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{background-color:transparent}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}body.swal2-toast-column .swal2-toast{flex-direction:column;align-items:stretch}body.swal2-toast-column .swal2-toast .swal2-actions{flex:1;align-self:stretch;height:2.2em;margin-top:.3125em}body.swal2-toast-column .swal2-toast .swal2-loading{justify-content:center}body.swal2-toast-column .swal2-toast .swal2-input{height:2em;margin:.3125em auto;font-size:1em}body.swal2-toast-column .swal2-toast .swal2-validation-message{font-size:1em} \ No newline at end of file diff --git a/plugins/sweetalert2/sweetalert2.min.js b/plugins/sweetalert2/sweetalert2.min.js index 340ea70ca..e23f7f8b6 100644 --- a/plugins/sweetalert2/sweetalert2.min.js +++ b/plugins/sweetalert2/sweetalert2.min.js @@ -1 +1 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Sweetalert2=e()}(this,function(){"use strict";function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){for(var n=0;nt.clientHeight)}function ut(t){var e=window.getComputedStyle(t),t=parseFloat(e.getPropertyValue("animation-duration")||"0"),e=parseFloat(e.getPropertyValue("transition-duration")||"0");return 0\n
      \n
        \n
        \n
        \n
        \n
        \n
        \n \n

        \n \n
        \n
        \n
        \n \n \n
        \n \n \n
        \n \n
        \n \n \n
        \n
        \n
        \n
        \n \n \n \n
        \n
        \n
        \n
        \n
        \n
        \n').replace(/(^|\n)\s*/g,""),Ct=function(t){var e,n,o,i,r,a=!!(i=C())&&(i.parentNode.removeChild(i),vt([document.documentElement,document.body],[$["no-backdrop"],$["toast-shown"],$["has-column"]]),!0);dt()?W("SweetAlert2 requires document to initialize"):((r=document.createElement("div")).className=$.container,a&>(r,$["no-transition"]),U(r,wt),(i="string"==typeof(e=t.target)?document.querySelector(e):e).appendChild(r),a=t,(e=x()).setAttribute("role",a.toast?"alert":"dialog"),e.setAttribute("aria-live",a.toast?"polite":"assertive"),a.toast||e.setAttribute("aria-modal","true"),r=i,"rtl"===window.getComputedStyle(r).direction&>(C(),$.rtl),t=P(),a=yt(t,$.input),e=yt(t,$.file),n=t.querySelector(".".concat($.range," input")),o=t.querySelector(".".concat($.range," output")),i=yt(t,$.select),r=t.querySelector(".".concat($.checkbox," input")),t=yt(t,$.textarea),a.oninput=pt,e.onchange=pt,i.onchange=pt,r.onchange=pt,t.oninput=pt,n.oninput=function(t){pt(t),o.value=n.value},n.onchange=function(t){pt(t),n.nextSibling.value=n.value})},kt=function(t,e){t.jquery?xt(e,t):U(e,t.toString())},xt=function(t,e){if(t.textContent="",0 in e)for(var n=0;n in e;n++)t.appendChild(e[n].cloneNode(!0));else t.appendChild(e.cloneNode(!0))},Bt=function(){if(dt())return!1;var t,e=document.createElement("div"),n={WebkitAnimation:"webkitAnimationEnd",OAnimation:"oAnimationEnd oanimationend",animation:"animationend"};for(t in n)if(Object.prototype.hasOwnProperty.call(n,t)&&void 0!==e.style[t])return n[t];return!1}();function At(t,e,n){var o;st(t,n["show".concat((o=e).charAt(0).toUpperCase()+o.slice(1),"Button")],"inline-block"),U(t,n["".concat(e,"ButtonText")]),t.setAttribute("aria-label",n["".concat(e,"ButtonAriaLabel")]),t.className=$[e],F(t,n,"".concat(e,"Button")),gt(t,n["".concat(e,"ButtonClass")])}function Pt(t,e){var n,o,i=C();i&&(o=i,"string"==typeof(n=e.backdrop)?o.style.background=n:n||gt([document.documentElement,document.body],$["no-backdrop"]),!e.backdrop&&e.allowOutsideClick&&z('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`'),o=i,(n=e.position)in $?gt(o,$[n]):(z('The "position" parameter is not valid, defaulting to "center"'),gt(o,$.center)),n=i,!(o=e.grow)||"string"!=typeof o||(o="grow-".concat(o))in $&>(n,$[o]),F(i,e,"container"),(e=document.body.getAttribute("data-swal2-queue-step"))&&(i.setAttribute("data-queue-step",e),document.body.removeAttribute("data-swal2-queue-step")))}function Et(t,e){t.placeholder&&!e.inputPlaceholder||(t.placeholder=e.inputPlaceholder)}function Ot(t,e,n){var o,i;n.inputLabel&&(t.id=$.input,o=document.createElement("label"),i=$["input-label"],o.setAttribute("for",t.id),o.className=i,o.innerText=n.inputLabel,e.insertAdjacentElement("beforebegin",o))}var St={promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap},Tt=["input","file","range","select","radio","checkbox","textarea"],Lt=function(t){if(!jt[t.input])return W('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'.concat(t.input,'"'));var e=qt(t.input),n=jt[t.input](e,t);it(n),setTimeout(function(){et(n)})},Dt=function(t,e){var n=tt(P(),t);if(n)for(var o in!function(t){for(var e=0;e=o.progressSteps.length&&z("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),o.progressSteps.forEach(function(t,e){var n,t=(n=t,t=document.createElement("li"),gt(t,$["progress-step"]),U(t,n),t);i.appendChild(t),e===r&>(t,$["active-progress-step"]),e!==o.progressSteps.length-1&&(t=o,e=document.createElement("li"),gt(e,$["progress-step-line"]),t.progressStepsDistance&&(e.style.width=t.progressStepsDistance),e=e,i.appendChild(e))})}function Rt(t,e){var n=j();F(n,e,"header"),Ht(0,e),function(t,e){t=St.innerParams.get(t);t&&e.icon===t.icon&&B()?Ft(B(),e):(_t(),e.icon&&(-1!==Object.keys(J).indexOf(e.icon)?(t=k(".".concat($.icon,".").concat(J[e.icon])),it(t),Wt(t,e),Ft(t,e),gt(t,e.showClass.icon)):W('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(e.icon,'"'))))}(t,e),function(t){var e=E();if(!t.imageUrl)return rt(e);it(e,""),e.setAttribute("src",t.imageUrl),e.setAttribute("alt",t.imageAlt),ot(e,"width",t.imageWidth),ot(e,"height",t.imageHeight),e.className=$.image,F(e,t,"image")}(e),n=e,t=A(),st(t,n.title||n.titleText),n.title&&ft(n.title,t),n.titleText&&(t.innerText=n.titleText),F(t,n,"title"),n=e,e=H(),U(e,n.closeButtonHtml),F(e,n,"closeButton"),st(e,n.showCloseButton),e.setAttribute("aria-label",n.closeButtonAriaLabel)}function Nt(t,e){var n,o;o=e,n=x(),ot(n,"width",o.width),ot(n,"padding",o.padding),o.background&&(n.style.background=o.background),Qt(n,o),Pt(0,e),Rt(t,e),Mt(t,e),mt(0,e),o=e,t=M(),st(t,o.footer),o.footer&&ft(o.footer,t),F(t,o,"footer"),"function"==typeof e.didRender?e.didRender(x()):"function"==typeof e.onRender&&e.onRender(x())}function Ut(){return T()&&T().click()}var _t=function(){for(var t=n(),e=0;e
        \n \n
        \n
        \n '):"error"===e.icon?U(t,'\n \n \n \n \n '):U(t,Yt({question:"?",warning:"!",info:"i"}[e.icon]))},Kt=function(t,e){if(e.iconColor){t.style.color=e.iconColor,t.style.borderColor=e.iconColor;for(var n=0,o=[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"];n').concat(t,"
        ")},Zt=[],Qt=function(t,e){t.className="".concat($.popup," ").concat(bt(t)?e.showClass.popup:""),e.toast?(gt([document.documentElement,document.body],$["toast-shown"]),gt(t,$.toast)):gt(t,$.modal),F(t,e,"popup"),"string"==typeof e.customClass&>(t,e.customClass),e.icon&>(t,$["icon-".concat(e.icon)])};function $t(t){var e=x();e||kn.fire(),e=x();var n=q(),o=D();!t&&bt(T())&&(t=T()),it(n),t&&(rt(t),o.setAttribute("data-button-to-replace",t.className)),o.parentNode.insertBefore(o,t),gt([e,n],$.loading),it(o),e.setAttribute("data-loading",!0),e.setAttribute("aria-busy",!0),e.focus()}function Jt(){return new Promise(function(t){var e=window.scrollX,n=window.scrollY;oe.restoreFocusTimeout=setTimeout(function(){oe.previousActiveElement&&oe.previousActiveElement.focus?(oe.previousActiveElement.focus(),oe.previousActiveElement=null):document.body&&document.body.focus(),t()},100),void 0!==e&&void 0!==n&&window.scrollTo(e,n)})}function Xt(){if(oe.timeout)return function(){var t=V(),e=parseInt(window.getComputedStyle(t).width);t.style.removeProperty("transition"),t.style.width="100%";var n=parseInt(window.getComputedStyle(t).width),n=parseInt(e/n*100);t.style.removeProperty("transition"),t.style.width="".concat(n,"%")}(),oe.timeout.stop()}function Gt(){if(oe.timeout){var t=oe.timeout.start();return lt(t),t}}function te(t){return Object.prototype.hasOwnProperty.call(ie,t)}function ee(t){return ae[t]}function ne(t){for(var e in t)te(o=e)||z('Unknown parameter "'.concat(o,'"')),t.toast&&(n=e,-1!==se.indexOf(n)&&z('The parameter "'.concat(n,'" is incompatible with toasts'))),ee(n=e)&&g(n,ee(n));var n,o}var oe={},ie={title:"",titleText:"",text:"",html:"",footer:"",icon:void 0,iconColor:void 0,iconHtml:void 0,toast:!1,animation:!0,showClass:{popup:"swal2-show",backdrop:"swal2-backdrop-show",icon:"swal2-icon-show"},hideClass:{popup:"swal2-hide",backdrop:"swal2-backdrop-hide",icon:"swal2-icon-hide"},customClass:void 0,target:"body",backdrop:!0,heightAuto:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,stopKeydownPropagation:!0,keydownListenerCapture:!1,showConfirmButton:!0,showDenyButton:!1,showCancelButton:!1,preConfirm:void 0,preDeny:void 0,confirmButtonText:"OK",confirmButtonAriaLabel:"",confirmButtonColor:void 0,denyButtonText:"No",denyButtonAriaLabel:"",denyButtonColor:void 0,cancelButtonText:"Cancel",cancelButtonAriaLabel:"",cancelButtonColor:void 0,buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusDeny:!1,focusCancel:!1,showCloseButton:!1,closeButtonHtml:"×",closeButtonAriaLabel:"Close this dialog",loaderHtml:"",showLoaderOnConfirm:!1,imageUrl:void 0,imageWidth:void 0,imageHeight:void 0,imageAlt:"",timer:void 0,timerProgressBar:!1,width:void 0,padding:void 0,background:void 0,input:void 0,inputPlaceholder:"",inputLabel:"",inputValue:"",inputOptions:{},inputAutoTrim:!0,inputAttributes:{},inputValidator:void 0,returnInputValueOnDeny:!1,validationMessage:void 0,grow:!1,position:"center",progressSteps:[],currentProgressStep:void 0,progressStepsDistance:void 0,onBeforeOpen:void 0,onOpen:void 0,willOpen:void 0,didOpen:void 0,onRender:void 0,didRender:void 0,onClose:void 0,onAfterClose:void 0,willClose:void 0,didClose:void 0,onDestroy:void 0,didDestroy:void 0,scrollbarPadding:!0},re=["allowEscapeKey","allowOutsideClick","background","buttonsStyling","cancelButtonAriaLabel","cancelButtonColor","cancelButtonText","closeButtonAriaLabel","closeButtonHtml","confirmButtonAriaLabel","confirmButtonColor","confirmButtonText","currentProgressStep","customClass","denyButtonAriaLabel","denyButtonColor","denyButtonText","didClose","didDestroy","footer","hideClass","html","icon","iconColor","imageAlt","imageHeight","imageUrl","imageWidth","onAfterClose","onClose","onDestroy","progressSteps","reverseButtons","showCancelButton","showCloseButton","showConfirmButton","showDenyButton","text","title","titleText","willClose"],ae={animation:'showClass" and "hideClass',onBeforeOpen:"willOpen",onOpen:"didOpen",onRender:"didRender",onClose:"willClose",onAfterClose:"didClose",onDestroy:"didDestroy"},se=["allowOutsideClick","allowEnterKey","backdrop","focusConfirm","focusDeny","focusCancel","heightAuto","keydownListenerCapture"],ce=Object.freeze({isValidParameter:te,isUpdatableParameter:function(t){return-1!==re.indexOf(t)},isDeprecatedParameter:ee,argsToParams:function(n){var o={};return"object"!==r(n[0])||w(n[0])?["title","html","icon"].forEach(function(t,e){e=n[e];"string"==typeof e||w(e)?o[t]=e:void 0!==e&&W("Unexpected type of ".concat(t,'! Expected "string" or "Element", got ').concat(r(e)))}):c(o,n[0]),o},isVisible:function(){return bt(x())},clickConfirm:Ut,clickDeny:function(){return L()&&L().click()},clickCancel:function(){return I()&&I().click()},getContainer:C,getPopup:x,getTitle:A,getContent:P,getHtmlContainer:function(){return t($["html-container"])},getImage:E,getIcon:B,getIcons:n,getInputLabel:function(){return t($["input-label"])},getCloseButton:H,getActions:q,getConfirmButton:T,getDenyButton:L,getCancelButton:I,getLoader:D,getHeader:j,getFooter:M,getTimerProgressBar:V,getFocusableElements:R,getValidationMessage:S,isLoading:function(){return x().hasAttribute("data-loading")},fire:function(){for(var t=arguments.length,e=new Array(t),n=0;nwindow.innerHeight&&(G.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight="".concat(G.previousBodyPadding+function(){var t=document.createElement("div");t.className=$["scrollbar-measure"],document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e}(),"px"))}function de(){return!!window.MSInputMethodContext&&!!document.documentMode}function pe(){var t=C(),e=x();t.style.removeProperty("align-items"),e.offsetTop<0&&(t.style.alignItems="flex-start")}var fe=function(){navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i)||x().scrollHeight>window.innerHeight-44&&(C().style.paddingBottom="".concat(44,"px"))},me=function(){var e,t=C();t.ontouchstart=function(t){e=he(t)},t.ontouchmove=function(t){e&&(t.preventDefault(),t.stopPropagation())}},he=function(t){var e=t.target,n=C();return!ge(t)&&!ve(t)&&(e===n||!(ct(n)||"INPUT"===e.tagName||ct(P())&&P().contains(e)))},ge=function(t){return t.touches&&t.touches.length&&"stylus"===t.touches[0].touchType},ve=function(t){return t.touches&&1")),Ct(t)}function Le(t){var e=C(),n=x();"function"==typeof t.willOpen?t.willOpen(n):"function"==typeof t.onBeforeOpen&&t.onBeforeOpen(n);var o=window.getComputedStyle(document.body).overflowY;He(e,n,t),setTimeout(function(){Me(e,n)},10),N()&&(Ve(e,t.scrollbarPadding,o),h(document.body.children).forEach(function(t){t===C()||function(t,e){if("function"==typeof t.contains)return t.contains(e)}(t,C())||(t.hasAttribute("aria-hidden")&&t.setAttribute("data-previous-aria-hidden",t.getAttribute("aria-hidden")),t.setAttribute("aria-hidden","true"))})),X()||oe.previousActiveElement||(oe.previousActiveElement=document.activeElement),je(n,t),vt(e,$["no-transition"])}function De(t){var e=x();t.target===e&&(t=C(),e.removeEventListener(Bt,De),t.style.overflowY="auto")}function Ie(t,e){t.closePopup({isConfirmed:!0,value:e})}function qe(t,e,n){var o=R(),i=0;if(it.clientHeight)}function lt(t){var e=window.getComputedStyle(t),t=parseFloat(e.getPropertyValue("animation-duration")||"0"),e=parseFloat(e.getPropertyValue("transition-duration")||"0");return 0\n
        \n
          \n
          \n
          \n
          \n
          \n
          \n \n

          \n \n
          \n
          \n
          \n \n \n
          \n \n \n
          \n \n
          \n \n \n
          \n
          \n
          \n
          \n \n \n \n
          \n
          \n
          \n
          \n
          \n
          \n').replace(/(^|\n)\s*/g,""),kt=function(t){var e,n,o,i,r,a=!!(i=k())&&(i.parentNode.removeChild(i),bt([document.documentElement,document.body],[$["no-backdrop"],$["toast-shown"],$["has-column"]]),!0);pt()?K("SweetAlert2 requires document to initialize"):((r=document.createElement("div")).className=$.container,a&&vt(r,$["no-transition"]),_(r,Ct),(i="string"==typeof(e=t.target)?document.querySelector(e):e).appendChild(r),a=t,(e=x()).setAttribute("role",a.toast?"alert":"dialog"),e.setAttribute("aria-live",a.toast?"polite":"assertive"),a.toast||e.setAttribute("aria-modal","true"),r=i,"rtl"===window.getComputedStyle(r).direction&&vt(k(),$.rtl),t=E(),a=yt(t,$.input),e=yt(t,$.file),n=t.querySelector(".".concat($.range," input")),o=t.querySelector(".".concat($.range," output")),i=yt(t,$.select),r=t.querySelector(".".concat($.checkbox," input")),t=yt(t,$.textarea),a.oninput=ft,e.onchange=ft,i.onchange=ft,r.onchange=ft,t.oninput=ft,n.oninput=function(t){ft(t),o.value=n.value},n.onchange=function(t){ft(t),n.nextSibling.value=n.value})},At=function(t,e){t.jquery?xt(e,t):_(e,t.toString())},xt=function(t,e){if(t.textContent="",0 in e)for(var n=0;n in e;n++)t.appendChild(e[n].cloneNode(!0));else t.appendChild(e.cloneNode(!0))},Bt=function(){if(pt())return!1;var t,e=document.createElement("div"),n={WebkitAnimation:"webkitAnimationEnd",OAnimation:"oAnimationEnd oanimationend",animation:"animationend"};for(t in n)if(Object.prototype.hasOwnProperty.call(n,t)&&void 0!==e.style[t])return n[t];return!1}();function Pt(t,e,n){st(t,n["show".concat(m(e),"Button")],"inline-block"),_(t,n["".concat(e,"ButtonText")]),t.setAttribute("aria-label",n["".concat(e,"ButtonAriaLabel")]),t.className=$[e],z(t,n,"".concat(e,"Button")),vt(t,n["".concat(e,"ButtonClass")])}function Et(t,e){var n,o,i=k();i&&(o=i,"string"==typeof(n=e.backdrop)?o.style.background=n:n||vt([document.documentElement,document.body],$["no-backdrop"]),!e.backdrop&&e.allowOutsideClick&&W('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`'),o=i,(n=e.position)in $?vt(o,$[n]):(W('The "position" parameter is not valid, defaulting to "center"'),vt(o,$.center)),n=i,!(o=e.grow)||"string"!=typeof o||(o="grow-".concat(o))in $&&vt(n,$[o]),z(i,e,"container"),(e=document.body.getAttribute("data-swal2-queue-step"))&&(i.setAttribute("data-queue-step",e),document.body.removeAttribute("data-swal2-queue-step")))}function St(t,e){t.placeholder&&!e.inputPlaceholder||(t.placeholder=e.inputPlaceholder)}function Ot(t,e,n){var o,i;n.inputLabel&&(t.id=$.input,o=document.createElement("label"),i=$["input-label"],o.setAttribute("for",t.id),o.className=i,o.innerText=n.inputLabel,e.insertAdjacentElement("beforebegin",o))}var Tt={promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap},Lt=["input","file","range","select","radio","checkbox","textarea"],qt=function(t){if(!Mt[t.input])return K('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'.concat(t.input,'"'));var e=It(t.input),n=Mt[t.input](e,t);rt(n),setTimeout(function(){nt(n)})},Dt=function(t,e){var n=et(E(),t);if(n)for(var o in!function(t){for(var e=0;e=o.progressSteps.length&&W("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),o.progressSteps.forEach(function(t,e){var n,t=(n=t,t=document.createElement("li"),vt(t,$["progress-step"]),_(t,n),t);i.appendChild(t),e===r&&vt(t,$["active-progress-step"]),e!==o.progressSteps.length-1&&(t=o,e=document.createElement("li"),vt(e,$["progress-step-line"]),t.progressStepsDistance&&(e.style.width=t.progressStepsDistance),e=e,i.appendChild(e))})}function Nt(t,e){var n=M();z(n,e,"header"),Rt(0,e),n=t,t=e,(n=Tt.innerParams.get(n))&&t.icon===n.icon&&B()?zt(B(),t):(Ft(),t.icon&&(-1!==Object.keys(X).indexOf(t.icon)?(n=A(".".concat($.icon,".").concat(X[t.icon])),rt(n),Kt(n,t),zt(n,t),vt(n,t.showClass.icon)):K('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(t.icon,'"')))),function(t){var e=S();if(!t.imageUrl)return at(e);rt(e,""),e.setAttribute("src",t.imageUrl),e.setAttribute("alt",t.imageAlt),it(e,"width",t.imageWidth),it(e,"height",t.imageHeight),e.className=$.image,z(e,t,"image")}(e),n=e,t=P(),st(t,n.title||n.titleText),n.title&&mt(n.title,t),n.titleText&&(t.innerText=n.titleText),z(t,n,"title"),n=e,e=R(),_(e,n.closeButtonHtml),z(e,n,"closeButton"),st(e,n.showCloseButton),e.setAttribute("aria-label",n.closeButtonAriaLabel)}function Ut(t,e){var n,o;o=e,n=x(),it(n,"width",o.width),it(n,"padding",o.padding),o.background&&(n.style.background=o.background),Jt(n,o),Et(0,e),Nt(t,e),Ht(t,e),ht(0,e),o=e,t=H(),st(t,o.footer),o.footer&&mt(o.footer,t),z(t,o,"footer"),"function"==typeof e.didRender?e.didRender(x()):"function"==typeof e.onRender&&e.onRender(x())}function _t(){return L()&&L().click()}var Ft=function(){for(var t=n(),e=0;e
          \n \n
          \n
          \n '):"error"===e.icon?_(t,'\n \n \n \n \n '):_(t,Zt({question:"?",warning:"!",info:"i"}[e.icon]))},Yt=function(t,e){if(e.iconColor){t.style.color=e.iconColor,t.style.borderColor=e.iconColor;for(var n=0,o=[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"];n').concat(t,"
          ")},Qt=[],Jt=function(t,e){t.className="".concat($.popup," ").concat(wt(t)?e.showClass.popup:""),e.toast?(vt([document.documentElement,document.body],$["toast-shown"]),vt(t,$.toast)):vt(t,$.modal),z(t,e,"popup"),"string"==typeof e.customClass&&vt(t,e.customClass),e.icon&&vt(t,$["icon-".concat(e.icon)])};function $t(t){var e=x();e||Mn.fire(),e=x();var n=I(),o=D();!t&&wt(L())&&(t=L()),rt(n),t&&(at(t),o.setAttribute("data-button-to-replace",t.className)),o.parentNode.insertBefore(o,t),vt([e,n],$.loading),rt(o),e.setAttribute("data-loading",!0),e.setAttribute("aria-busy",!0),e.focus()}function Xt(){return new Promise(function(t){var e=window.scrollX,n=window.scrollY;ee.restoreFocusTimeout=setTimeout(function(){ee.previousActiveElement&&ee.previousActiveElement.focus?(ee.previousActiveElement.focus(),ee.previousActiveElement=null):document.body&&document.body.focus(),t()},100),void 0!==e&&void 0!==n&&window.scrollTo(e,n)})}function Gt(){if(ee.timeout)return function(){var t=V(),e=parseInt(window.getComputedStyle(t).width);t.style.removeProperty("transition"),t.style.width="100%";var n=parseInt(window.getComputedStyle(t).width),n=parseInt(e/n*100);t.style.removeProperty("transition"),t.style.width="".concat(n,"%")}(),ee.timeout.stop()}function te(){if(ee.timeout){var t=ee.timeout.start();return dt(t),t}}var ee={},ne=!1,oe={};function ie(t){for(var e=t.target;e&&e!==document;e=e.parentNode)for(var n in oe){var o=e.getAttribute(n);if(o)return void oe[n].fire({template:o})}}function re(t){return Object.prototype.hasOwnProperty.call(se,t)}function ae(t){return le[t]}function ce(t){for(var e in t)re(o=e)||W('Unknown parameter "'.concat(o,'"')),t.toast&&(n=e,-1!==de.indexOf(n)&&W('The parameter "'.concat(n,'" is incompatible with toasts'))),ae(n=e)&&v(n,ae(n));var n,o}var se={title:"",titleText:"",text:"",html:"",footer:"",icon:void 0,iconColor:void 0,iconHtml:void 0,template:void 0,toast:!1,animation:!0,showClass:{popup:"swal2-show",backdrop:"swal2-backdrop-show",icon:"swal2-icon-show"},hideClass:{popup:"swal2-hide",backdrop:"swal2-backdrop-hide",icon:"swal2-icon-hide"},customClass:{},target:"body",backdrop:!0,heightAuto:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,stopKeydownPropagation:!0,keydownListenerCapture:!1,showConfirmButton:!0,showDenyButton:!1,showCancelButton:!1,preConfirm:void 0,preDeny:void 0,confirmButtonText:"OK",confirmButtonAriaLabel:"",confirmButtonColor:void 0,denyButtonText:"No",denyButtonAriaLabel:"",denyButtonColor:void 0,cancelButtonText:"Cancel",cancelButtonAriaLabel:"",cancelButtonColor:void 0,buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusDeny:!1,focusCancel:!1,showCloseButton:!1,closeButtonHtml:"×",closeButtonAriaLabel:"Close this dialog",loaderHtml:"",showLoaderOnConfirm:!1,imageUrl:void 0,imageWidth:void 0,imageHeight:void 0,imageAlt:"",timer:void 0,timerProgressBar:!1,width:void 0,padding:void 0,background:void 0,input:void 0,inputPlaceholder:"",inputLabel:"",inputValue:"",inputOptions:{},inputAutoTrim:!0,inputAttributes:{},inputValidator:void 0,returnInputValueOnDeny:!1,validationMessage:void 0,grow:!1,position:"center",progressSteps:[],currentProgressStep:void 0,progressStepsDistance:void 0,onBeforeOpen:void 0,onOpen:void 0,willOpen:void 0,didOpen:void 0,onRender:void 0,didRender:void 0,onClose:void 0,onAfterClose:void 0,willClose:void 0,didClose:void 0,onDestroy:void 0,didDestroy:void 0,scrollbarPadding:!0},ue=["allowEscapeKey","allowOutsideClick","background","buttonsStyling","cancelButtonAriaLabel","cancelButtonColor","cancelButtonText","closeButtonAriaLabel","closeButtonHtml","confirmButtonAriaLabel","confirmButtonColor","confirmButtonText","currentProgressStep","customClass","denyButtonAriaLabel","denyButtonColor","denyButtonText","didClose","didDestroy","footer","hideClass","html","icon","iconColor","imageAlt","imageHeight","imageUrl","imageWidth","onAfterClose","onClose","onDestroy","progressSteps","reverseButtons","showCancelButton","showCloseButton","showConfirmButton","showDenyButton","text","title","titleText","willClose"],le={animation:'showClass" and "hideClass',onBeforeOpen:"willOpen",onOpen:"didOpen",onRender:"didRender",onClose:"willClose",onAfterClose:"didClose",onDestroy:"didDestroy"},de=["allowOutsideClick","allowEnterKey","backdrop","focusConfirm","focusDeny","focusCancel","heightAuto","keydownListenerCapture"],pe=Object.freeze({isValidParameter:re,isUpdatableParameter:function(t){return-1!==ue.indexOf(t)},isDeprecatedParameter:ae,argsToParams:function(n){var o={};return"object"!==r(n[0])||C(n[0])?["title","html","icon"].forEach(function(t,e){e=n[e];"string"==typeof e||C(e)?o[t]=e:void 0!==e&&K("Unexpected type of ".concat(t,'! Expected "string" or "Element", got ').concat(r(e)))}):s(o,n[0]),o},isVisible:function(){return wt(x())},clickConfirm:_t,clickDeny:function(){return q()&&q().click()},clickCancel:function(){return j()&&j().click()},getContainer:k,getPopup:x,getTitle:P,getContent:E,getHtmlContainer:function(){return t($["html-container"])},getImage:S,getIcon:B,getIcons:n,getInputLabel:function(){return t($["input-label"])},getCloseButton:R,getActions:I,getConfirmButton:L,getDenyButton:q,getCancelButton:j,getLoader:D,getHeader:M,getFooter:H,getTimerProgressBar:V,getFocusableElements:N,getValidationMessage:T,isLoading:function(){return x().hasAttribute("data-loading")},fire:function(){for(var t=arguments.length,e=new Array(t),n=0;nwindow.innerHeight&&(tt.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight="".concat(tt.previousBodyPadding+function(){var t=document.createElement("div");t.className=$["scrollbar-measure"],document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e}(),"px"))}function he(){return!!window.MSInputMethodContext&&!!document.documentMode}function ge(){var t=k(),e=x();t.style.removeProperty("align-items"),e.offsetTop<0&&(t.style.alignItems="flex-start")}var ve=function(){navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i)||x().scrollHeight>window.innerHeight-44&&(k().style.paddingBottom="".concat(44,"px"))},be=function(){var e,t=k();t.ontouchstart=function(t){e=ye(t)},t.ontouchmove=function(t){e&&(t.preventDefault(),t.stopPropagation())}},ye=function(t){var e=t.target,n=k();return!we(t)&&!Ce(t)&&(e===n||!(ut(n)||"INPUT"===e.tagName||ut(E())&&E().contains(e)))},we=function(t){return t.touches&&t.touches.length&&"stylus"===t.touches[0].touchType},Ce=function(t){return t.touches&&1")),kt(t)}function Ie(t){var e=k(),n=x();"function"==typeof t.willOpen?t.willOpen(n):"function"==typeof t.onBeforeOpen&&t.onBeforeOpen(n);var o=window.getComputedStyle(document.body).overflowY;$e(e,n,t),setTimeout(function(){Qe(e,n)},10),U()&&(Je(e,t.scrollbarPadding,o),g(document.body.children).forEach(function(t){t===k()||function(t,e){if("function"==typeof t.contains)return t.contains(e)}(t,k())||(t.hasAttribute("aria-hidden")&&t.setAttribute("data-previous-aria-hidden",t.getAttribute("aria-hidden")),t.setAttribute("aria-hidden","true"))})),G()||ee.previousActiveElement||(ee.previousActiveElement=document.activeElement),Ze(n,t),bt(e,$["no-transition"])}function Me(t){var e=x();t.target===e&&(t=k(),e.removeEventListener(Bt,Me),t.style.overflowY="auto")}function He(t,e){t.closePopup({isConfirmed:!0,value:e})}function Ve(t,e,n){var o=N();if(o.length)return(e+=n)===o.length?e=0:-1===e&&(e=o.length-1),o[e].focus();x().focus()}var Re=["swal-title","swal-html","swal-footer"],Ne=function(t){var n={};return g(t.querySelectorAll("swal-param")).forEach(function(t){Ye(t,["name","value"]);var e=t.getAttribute("name"),t=t.getAttribute("value");"boolean"==typeof se[e]&&"false"===t&&(t=!1),"object"===r(se[e])&&(t=JSON.parse(t)),n[e]=t}),n},Ue=function(t){var n={};return g(t.querySelectorAll("swal-button")).forEach(function(t){Ye(t,["type","color","aria-label"]);var e=t.getAttribute("type");n["".concat(e,"ButtonText")]=t.innerHTML,n["show".concat(m(e),"Button")]=!0,t.hasAttribute("color")&&(n["".concat(e,"ButtonColor")]=t.getAttribute("color")),t.hasAttribute("aria-label")&&(n["".concat(e,"ButtonAriaLabel")]=t.getAttribute("aria-label"))}),n},_e=function(t){var e={},t=t.querySelector("swal-image");return t&&(Ye(t,["src","width","height","alt"]),t.hasAttribute("src")&&(e.imageUrl=t.getAttribute("src")),t.hasAttribute("width")&&(e.imageWidth=t.getAttribute("width")),t.hasAttribute("height")&&(e.imageHeight=t.getAttribute("height")),t.hasAttribute("alt")&&(e.imageAlt=t.getAttribute("alt"))),e},Fe=function(t){var e={},t=t.querySelector("swal-icon");return t&&(Ye(t,["type","color"]),t.hasAttribute("type")&&(e.icon=t.getAttribute("type")),t.hasAttribute("color")&&(e.iconColor=t.getAttribute("color")),e.iconHtml=t.innerHTML),e},ze=function(t){var n={},e=t.querySelector("swal-input");e&&(Ye(e,["type","label","placeholder","value"]),n.input=e.getAttribute("type")||"text",e.hasAttribute("label")&&(n.inputLabel=e.getAttribute("label")),e.hasAttribute("placeholder")&&(n.inputPlaceholder=e.getAttribute("placeholder")),e.hasAttribute("value")&&(n.inputValue=e.getAttribute("value")));t=t.querySelectorAll("swal-input-option");return t.length&&(n.inputOptions={},g(t).forEach(function(t){Ye(t,["value"]);var e=t.getAttribute("value"),t=t.innerHTML;n.inputOptions[e]=t})),n},We=function(t,e){var n,o={};for(n in e){var i=e[n],r=t.querySelector(i);r&&(Ye(r,[]),o[i.replace(/^swal-/,"")]=r.innerHTML)}return o},Ke=function(t){var e=Re.concat(["swal-param","swal-button","swal-image","swal-icon","swal-input","swal-input-option"]);g(t.querySelectorAll("*")).forEach(function(t){t=t.tagName.toLowerCase();-1===e.indexOf(t)&&W("Unrecognized element <".concat(t,">"))})},Ye=function(e,n){g(e.attributes).forEach(function(t){-1===n.indexOf(t.name)&&W(['Unrecognized attribute "'.concat(t.name,'" on <').concat(e.tagName.toLowerCase(),">."),"".concat(n.length?"Allowed attributes are: ".concat(n.join(", ")):"To set the value, use HTML within the element.")])})},Ze=function(t,e){"function"==typeof e.didOpen?setTimeout(function(){return e.didOpen(t)}):"function"==typeof e.onOpen&&setTimeout(function(){return e.onOpen(t)})},Qe=function(t,e){Bt&<(e)?(t.style.overflowY="hidden",e.addEventListener(Bt,Me)):t.style.overflowY="auto"},Je=function(t,e,n){var o;(/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream||"MacIntel"===navigator.platform&&1= _i0 && i <= _i1; i += dir) { + if (data[i] != null) + { return i; } + } + + return -1; +} + function getMinMax(data, _i0, _i1, sorted) { // console.log("getMinMax()"); @@ -71,6 +82,24 @@ function getMinMax(data, _i0, _i1, sorted) { return [_min, _max]; } +function getMinMaxLog(data, _i0, _i1) { +// console.log("getMinMax()"); + + var _min = inf; + var _max = -inf; + + for (var i = _i0; i <= _i1; i++) { + if (data[i] > 0) { + _min = min(_min, data[i]); + _max = max(_max, data[i]); + } + } + + return [ + _min == inf ? 1 : _min, + _max == -inf ? 10 : _max ]; +} + var _fixedTuple = [0, 0]; function fixIncr(minIncr, maxIncr, minExp, maxExp) { @@ -189,6 +218,7 @@ var ceil = M.ceil; var min = M.min; var max = M.max; var pow = M.pow; +var sqrt = M.sqrt; var log10 = M.log10; var log2 = M.log2; var PI = M.PI; @@ -207,9 +237,9 @@ function fnOrSelf(v) { return typeof v == "function" ? v : function () { return v; }; } -function retArg1(_0, _1) { - return _1; -} +var retArg1 = function (_0, _1) { return _1; }; + +var retNull = function (_) { return null; }; function incrRoundUp(num, incr) { return ceil(num/incr)*incr; @@ -257,11 +287,18 @@ var EMPTY_OBJ = {}; var isArr = Array.isArray; function isStr(v) { - return typeof v === 'string'; + return typeof v == 'string'; } function isObj(v) { - return typeof v === 'object' && v !== null; + var is = false; + + if (v != null) { + var c = v.constructor; + is = c == null || c == Object; + } + + return is; } function copy(o) { @@ -297,28 +334,136 @@ function assign(targ) { return targ; } +// nullModes +var NULL_IGNORE = 0; // all nulls are ignored by isGap +var NULL_GAP = 1; // alignment nulls are ignored by isGap (default) +var NULL_EXPAND = 2; // nulls are expand to include adjacent alignment nulls + +// nullModes is a tables-matched array indicating how to treat nulls in each series +function join(tables, nullModes) { + if (tables.length == 1) { + return { + data: tables[0], + isGap: nullModes ? function (u, seriesIdx, dataIdx) { return nullModes[0][seriesIdx] != NULL_IGNORE; } : function () { return true; }, + }; + } + + var xVals = new Set(); + var xNulls = [new Set()]; + + for (var ti = 0; ti < tables.length; ti++) { + var t = tables[ti]; + var xs = t[0]; + var len = xs.length; + + for (var i = 0; i < len; i++) + { xVals.add(xs[i]); } + + for (var si = 1; si < t.length; si++) { + var nulls = new Set(); + + // cache original nulls for isGap lookup + if (nullModes == null || nullModes[ti][si] == NULL_GAP || nullModes[ti][si] == NULL_EXPAND) { + var ys = t[si]; + + for (var i$1 = 0; i$1 < len; i$1++) { + if (ys[i$1] == null) + { nulls.add(xs[i$1]); } + } + } + + xNulls.push(nulls); + } + } + + var data = [Array.from(xVals).sort(function (a, b) { return a - b; })]; + + var alignedLen = data[0].length; + + var xIdxs = new Map(); + + for (var i$2 = 0; i$2 < alignedLen; i$2++) + { xIdxs.set(data[0][i$2], i$2); } + + var gsi = 1; + + for (var ti$1 = 0; ti$1 < tables.length; ti$1++) { + var t$1 = tables[ti$1]; + var xs$1 = t$1[0]; + + for (var si$1 = 1; si$1 < t$1.length; si$1++) { + var ys$1 = t$1[si$1]; + + var yVals = Array(alignedLen).fill(null); + + for (var i$3 = 0; i$3 < ys$1.length; i$3++) + { yVals[xIdxs.get(xs$1[i$3])] = ys$1[i$3]; } + + // mark all filler nulls as explicit when adjacent to existing explicit nulls (minesweeper) + if (nullModes && nullModes[ti$1][si$1] == NULL_EXPAND) { + var nulls$1 = xNulls[gsi]; + var size = nulls$1.size; + var i$4 = 0; + var xi = (void 0); + + var lastAddedX = -inf; + + for (var xVal of nulls$1.values()) { + if (i$4++ == size) + { break; } + + if (xVal > lastAddedX) { + var xIdx = xIdxs.get(xVal); + + xi = xIdx - 1; + while (yVals[xi] === null) { + nulls$1.add(data[0][xi]); + xi--; + } + + xi = xIdx + 1; + while (yVals[xi] === null) { + nulls$1.add(lastAddedX = data[0][xi]); + xi++; + } + } + } + } + + data.push(yVals); + + gsi++; + } + } + + return { + data: data, + isGap: function isGap(u, seriesIdx, dataIdx) { + var xVal = u._data[0][dataIdx]; + return xNulls[seriesIdx].has(xVal); + }, + }; +} + var microTask = typeof queueMicrotask == "undefined" ? function (fn) { return Promise.resolve().then(fn); } : queueMicrotask; -var WIDTH = "width"; -var HEIGHT = "height"; -var TOP = "top"; -var BOTTOM = "bottom"; -var LEFT = "left"; -var RIGHT = "right"; -var firstChild = "firstChild"; -var createElement = "createElement"; -var hexBlack = "#000"; +var WIDTH = "width"; +var HEIGHT = "height"; +var TOP = "top"; +var BOTTOM = "bottom"; +var LEFT = "left"; +var RIGHT = "right"; +var hexBlack = "#000"; var transparent = hexBlack + "0"; -var classList = "classList"; -var mousemove = "mousemove"; -var mousedown = "mousedown"; -var mouseup = "mouseup"; -var mouseenter = "mouseenter"; -var mouseleave = "mouseleave"; -var dblclick = "dblclick"; -var resize = "resize"; -var scroll = "scroll"; +var mousemove = "mousemove"; +var mousedown = "mousedown"; +var mouseup = "mouseup"; +var mouseenter = "mouseenter"; +var mouseleave = "mouseleave"; +var dblclick = "dblclick"; +var resize = "resize"; +var scroll = "scroll"; var pre = "u-"; @@ -347,11 +492,11 @@ var win = window; var pxRatio = devicePixelRatio; function addClass(el, c) { - c != null && el[classList].add(c); + c != null && el.classList.add(c); } function remClass(el, c) { - el[classList].remove(c); + el.classList.remove(c); } function setStylePx(el, name, value) { @@ -359,7 +504,7 @@ function setStylePx(el, name, value) { } function placeTag(tag, cls, targ, refEl) { - var el = doc[createElement](tag); + var el = doc.createElement(tag); if (cls != null) { addClass(el, cls); } @@ -837,24 +982,56 @@ function timeSeriesVal(tzDate, stamp) { return function (self, val) { return stamp(tzDate(val)); }; } -function cursorPoint(self, si) { - var s = self.series[si]; +function legendStroke(self, seriesIdx) { + var s = self.series[seriesIdx]; + return s.width ? s.stroke(self, seriesIdx) : s.points.width ? s.points.stroke(self, seriesIdx) : null; +} + +function legendFill(self, seriesIdx) { + return self.series[seriesIdx].fill(self, seriesIdx); +} + +function cursorPointShow(self, si) { + var o = self.cursor.points; var pt = placeDiv(); - pt.style.background = s.stroke || hexBlack; + var stroke = o.stroke(self, si); + var fill = o.fill(self, si); - var dia = ptDia(s.width, 1); - var mar = (dia - 1) / -2; + pt.style.background = fill || stroke; - setStylePx(pt, WIDTH, dia); - setStylePx(pt, HEIGHT, dia); + var size = o.size(self, si); + var width = o.width(self, si, size); + + if (width) + { pt.style.border = width + "px solid " + stroke; } + + var mar = size / -2; + + setStylePx(pt, WIDTH, size); + setStylePx(pt, HEIGHT, size); setStylePx(pt, "marginLeft", mar); setStylePx(pt, "marginTop", mar); return pt; } +function cursorPointFill(self, si) { + var s = self.series[si]; + return s.stroke(self, si); +} + +function cursorPointStroke(self, si) { + var s = self.series[si]; + return s.stroke(self, si); +} + +function cursorPointSize(self, si) { + var s = self.series[si]; + return ptDia(s.width, 1); +} + function dataIdx(self, seriesIdx, cursorIdx) { return cursorIdx; } @@ -884,7 +1061,11 @@ var cursorOpts = { lock: false, move: cursorMove, points: { - show: cursorPoint, + show: cursorPointShow, + size: cursorPointSize, + width: 0, + stroke: cursorPointStroke, + fill: cursorPointFill, }, bind: { @@ -1112,8 +1293,20 @@ var ySeriesOpts = { clip: null, }; +function clampScale(self, val, scaleMin, scaleMax, scaleKey) { +/* + if (val < 0) { + let cssHgt = self.bbox.height / pxRatio; + let absPos = self.valToPos(abs(val), scaleKey); + let fromBtm = cssHgt - absPos; + return self.posToVal(cssHgt + fromBtm, scaleKey); + } +*/ + return scaleMin / 10; +} + var xScaleOpts = { - time: true, + time: FEAT_TIME, auto: true, distr: 1, log: 10, @@ -1147,6 +1340,560 @@ function _sync(opts) { }; } +var props = Array(11); + +function aliasProps(u, seriesIdx) { + var series = u.series[seriesIdx]; + var scales = u.scales; + var bbox = u.bbox; + + props[0] = series; // series + props[1] = u._data[0]; // dataX + props[2] = u._data[seriesIdx]; // dataY + props[3] = scales[u.series[0].scale]; // scaleX + props[4] = scales[series.scale]; // scaleY + props[5] = u.valToPosX; // valToPosX + props[6] = u.valToPosY; // valToPosY + props[7] = bbox.left; // plotLft + props[8] = bbox.top; // plotTop + props[9] = bbox.width; // plotWid + props[10] = bbox.height; // plotHgt + + return props; +} + +function clipGaps(gaps, ori, plotLft, plotTop, plotWid, plotHgt) { + var clip = null; + + // create clip path (invert gaps and non-gaps) + if (gaps.length > 0) { + clip = new Path2D(); + + if (ori == 1) { + var prevGapEnd = plotLft; + + for (var i = 0; i < gaps.length; i++) { + var g = gaps[i]; + + clip.rect(prevGapEnd, plotTop, g[0] - prevGapEnd, plotTop + plotHgt); + + prevGapEnd = g[1]; + } + + clip.rect(prevGapEnd, plotTop, plotLft + plotWid - prevGapEnd, plotTop + plotHgt); + } + } + + return clip; +} + +function addGap(gaps, fromX, toX) { + if (toX > fromX) { + var prevGap = gaps[gaps.length - 1]; + + if (prevGap && prevGap[0] == fromX) // TODO: gaps must be encoded at stroke widths? + { prevGap[1] = toX; } + else + { gaps.push([fromX, toX]); } + } +} + +var dir = 1; + +function drawAcc(stroke, accX, minY, maxY, outY) { + stroke.lineTo(accX, minY); + stroke.lineTo(accX, maxY); + stroke.lineTo(accX, outY); +} + +function linear() { + return function (u, seriesIdx, idx0, idx1) { + var ref = aliasProps(u, seriesIdx); + var series = ref[0]; + var dataX = ref[1]; + var dataY = ref[2]; + var scaleX = ref[3]; + var scaleY = ref[4]; + var valToPosX = ref[5]; + var valToPosY = ref[6]; + var plotLft = ref[7]; + var plotTop = ref[8]; + var plotWid = ref[9]; + var plotHgt = ref[10]; + + var isGap = series.isGap; + + var _paths = dir == 1 ? {stroke: new Path2D(), fill: null, clip: null} : u.series[seriesIdx - 1]._paths; + var stroke = _paths.stroke; + var width = roundDec(series.width * pxRatio, 3); + + var minY = inf, + maxY = -inf, + outY, outX, drawnAtX; + + // todo: don't build gaps on dir = -1 pass + var gaps = []; + + var accX = round(valToPosX(dataX[dir == 1 ? idx0 : idx1], scaleX, plotWid, plotLft)); + var accGaps = false; + + // data edges + var lftIdx = nonNullIdx(dataY, idx0, idx1, 1); + var rgtIdx = nonNullIdx(dataY, idx0, idx1, -1); + var lftX = incrRound(valToPosX(dataX[lftIdx], scaleX, plotWid, plotLft), 0.5); + var rgtX = incrRound(valToPosX(dataX[rgtIdx], scaleX, plotWid, plotLft), 0.5); + + if (lftX > plotLft) + { addGap(gaps, plotLft, lftX); } + + // the moves the shape edge outside the canvas so stroke doesnt bleed in + if (series.band && dir == 1) + { stroke.lineTo(lftX - width * 2, round(valToPosY(dataY[idx0], scaleY, plotHgt, plotTop))); } + + for (var i = dir == 1 ? idx0 : idx1; i >= idx0 && i <= idx1; i += dir) { + var x = round(valToPosX(dataX[i], scaleX, plotWid, plotLft)); + + if (x == accX) { + if (dataY[i] != null) { + outY = round(valToPosY(dataY[i], scaleY, plotHgt, plotTop)); + + if (minY == inf) + { stroke.lineTo(x, outY); } + + minY = min(outY, minY); + maxY = max(outY, maxY); + } + else if (!accGaps && isGap(u, seriesIdx, i)) + { accGaps = true; } + } + else { + var _addGap = false; + + if (minY != inf) { + drawAcc(stroke, accX, minY, maxY, outY); + outX = drawnAtX = accX; + } + else if (accGaps) { + _addGap = true; + accGaps = false; + } + + if (dataY[i] != null) { + outY = round(valToPosY(dataY[i], scaleY, plotHgt, plotTop)); + stroke.lineTo(x, outY); + minY = maxY = outY; + + // prior pixel can have data but still start a gap if ends with null + if (x - accX > 1 && dataY[i - 1] == null && isGap(u, seriesIdx, i - 1)) + { _addGap = true; } + } + else { + minY = inf; + maxY = -inf; + + if (!accGaps && isGap(u, seriesIdx, i)) + { accGaps = true; } + } + + _addGap && addGap(gaps, outX, x); + + accX = x; + } + } + + if (minY != inf && minY != maxY && drawnAtX != accX) + { drawAcc(stroke, accX, minY, maxY, outY); } + + if (rgtX < plotLft + plotWid) + { addGap(gaps, rgtX, plotLft + plotWid); } + + if (series.band) { + var _x, _iy, _data = u._data, dataY2; + + // the moves the shape edge outside the canvas so stroke doesnt bleed in + if (dir == 1) { + _x = rgtX + width * 2; + _iy = rgtIdx; + dataY2 = _data[seriesIdx + 1]; + } + else { + _x = lftX - width * 2; + _iy = lftIdx; + dataY2 = _data[seriesIdx - 1]; + } + + stroke.lineTo(_x, round(valToPosY(dataY[_iy], scaleY, plotHgt, plotTop))); + stroke.lineTo(_x, round(valToPosY(dataY2[_iy], scaleY, plotHgt, plotTop))); + } + + if (dir == 1) { + if (!series.spanGaps) + { _paths.clip = clipGaps(gaps, 1, plotLft, plotTop, plotWid, plotHgt); } + + if (series.fill != null) { + var fill = _paths.fill = new Path2D(stroke); + + var fillTo = round(valToPosY(series.fillTo(u, seriesIdx, series.min, series.max), scaleY, plotHgt, plotTop)); + fill.lineTo(rgtX, fillTo); + fill.lineTo(lftX, fillTo); + } + } + + if (series.band) + { dir *= -1; } + + return _paths; + }; +} + +function spline(opts) { + return function (u, seriesIdx, idx0, idx1) { + var ref = aliasProps(u, seriesIdx); + var series = ref[0]; + var dataX = ref[1]; + var dataY = ref[2]; + var scaleX = ref[3]; + var scaleY = ref[4]; + var valToPosX = ref[5]; + var valToPosY = ref[6]; + var plotLft = ref[7]; + var plotTop = ref[8]; + var plotWid = ref[9]; + var plotHgt = ref[10]; + + idx0 = nonNullIdx(dataY, idx0, idx1, 1); + idx1 = nonNullIdx(dataY, idx0, idx1, -1); + + var gaps = []; + var inGap = false; + var firstXPos = round(valToPosX(dataX[idx0], scaleX, plotWid, plotLft)); + var prevXPos = firstXPos; + + var xCoords = []; + var yCoords = []; + + for (var i = idx0; i <= idx1; i++) { + var yVal = dataY[i]; + var xVal = dataX[i]; + var xPos = valToPosX(xVal, scaleX, plotWid, plotLft); + + if (yVal == null) { + if (series.isGap(u, seriesIdx, i)) { + addGap(gaps, prevXPos, xPos); + inGap = true; + } + continue; + } + else { + if (inGap) { + addGap(gaps, prevXPos, xPos); + inGap = false; + } + + xCoords.push((prevXPos = xPos)); + yCoords.push(valToPosY(dataY[i], scaleY, plotHgt, plotTop)); + } + } + + var stroke = catmullRomFitting(xCoords, yCoords, 0.5); + + var fill = new Path2D(stroke); + + var fillTo = series.fillTo(u, seriesIdx, series.min, series.max); + + var minY = round(valToPosY(fillTo, scaleY, plotHgt, plotTop)); + + fill.lineTo(prevXPos, minY); + fill.lineTo(firstXPos, minY); + + var clip = !series.spanGaps ? clipGaps(gaps, 1, plotLft, plotTop, plotWid, plotHgt) : null; + + return { + stroke: stroke, + fill: fill, + clip: clip, + }; + + // if FEAT_PATHS: false in rollup.config.js + // u.ctx.save(); + // u.ctx.beginPath(); + // u.ctx.rect(u.bbox.left, u.bbox.top, u.bbox.width, u.bbox.height); + // u.ctx.clip(); + // u.ctx.strokeStyle = u.series[sidx].stroke; + // u.ctx.stroke(stroke); + // u.ctx.fillStyle = u.series[sidx].fill; + // u.ctx.fill(fill); + // u.ctx.restore(); + // return null; + }; +} + +// adapted from https://gist.github.com/nicholaswmin/c2661eb11cad5671d816 (MIT) + +function catmullRomFitting(xCoords, yCoords, alpha) { + var path = new Path2D(); + + var dataLen = xCoords.length; + + var p0x, + p0y, + p1x, + p1y, + p2x, + p2y, + p3x, + p3y, + bp1x, + bp1y, + bp2x, + bp2y, + d1, + d2, + d3, + A, + B, + N, + M, + d3powA, + d2powA, + d3pow2A, + d2pow2A, + d1pow2A, + d1powA; + + path.moveTo(round(xCoords[0]), round(yCoords[0])); + + for (var i = 0; i < dataLen - 1; i++) { + var p0i = i == 0 ? 0 : i - 1; + + p0x = xCoords[p0i]; + p0y = yCoords[p0i]; + + p1x = xCoords[i]; + p1y = yCoords[i]; + + p2x = xCoords[i + 1]; + p2y = yCoords[i + 1]; + + if (i + 2 < dataLen) { + p3x = xCoords[i + 2]; + p3y = yCoords[i + 2]; + } else { + p3x = p2x; + p3y = p2y; + } + + d1 = sqrt(pow(p0x - p1x, 2) + pow(p0y - p1y, 2)); + d2 = sqrt(pow(p1x - p2x, 2) + pow(p1y - p2y, 2)); + d3 = sqrt(pow(p2x - p3x, 2) + pow(p2y - p3y, 2)); + + // Catmull-Rom to Cubic Bezier conversion matrix + + // A = 2d1^2a + 3d1^a * d2^a + d3^2a + // B = 2d3^2a + 3d3^a * d2^a + d2^2a + + // [ 0 1 0 0 ] + // [ -d2^2a /N A/N d1^2a /N 0 ] + // [ 0 d3^2a /M B/M -d2^2a /M ] + // [ 0 0 1 0 ] + + d3powA = pow(d3, alpha); + d3pow2A = pow(d3, alpha * 2); + d2powA = pow(d2, alpha); + d2pow2A = pow(d2, alpha * 2); + d1powA = pow(d1, alpha); + d1pow2A = pow(d1, alpha * 2); + + A = 2 * d1pow2A + 3 * d1powA * d2powA + d2pow2A; + B = 2 * d3pow2A + 3 * d3powA * d2powA + d2pow2A; + N = 3 * d1powA * (d1powA + d2powA); + + if (N > 0) + { N = 1 / N; } + + M = 3 * d3powA * (d3powA + d2powA); + + if (M > 0) + { M = 1 / M; } + + bp1x = (-d2pow2A * p0x + A * p1x + d1pow2A * p2x) * N; + bp1y = (-d2pow2A * p0y + A * p1y + d1pow2A * p2y) * N; + + bp2x = (d3pow2A * p1x + B * p2x - d2pow2A * p3x) * M; + bp2y = (d3pow2A * p1y + B * p2y - d2pow2A * p3y) * M; + + if (bp1x == 0 && bp1y == 0) { + bp1x = p1x; + bp1y = p1y; + } + + if (bp2x == 0 && bp2y == 0) { + bp2x = p2x; + bp2y = p2y; + } + + path.bezierCurveTo(bp1x, bp1y, bp2x, bp2y, p2x, p2y); + } + + return path; +} + +function stepped(opts) { + var align = ifNull(opts.align, 1); + + return function (u, seriesIdx, idx0, idx1) { + var ref = aliasProps(u, seriesIdx); + var series = ref[0]; + var dataX = ref[1]; + var dataY = ref[2]; + var scaleX = ref[3]; + var scaleY = ref[4]; + var valToPosX = ref[5]; + var valToPosY = ref[6]; + var plotLft = ref[7]; + var plotTop = ref[8]; + var plotWid = ref[9]; + var plotHgt = ref[10]; + + var stroke = new Path2D(); + + idx0 = nonNullIdx(dataY, idx0, idx1, 1); + idx1 = nonNullIdx(dataY, idx0, idx1, -1); + + var gaps = []; + var inGap = false; + var prevYPos = round(valToPosY(dataY[idx0], scaleY, plotHgt, plotTop)); + var firstXPos = round(valToPosX(dataX[idx0], scaleX, plotWid, plotLft)); + var prevXPos = firstXPos; + + stroke.moveTo(firstXPos, prevYPos); + + for (var i = idx0 + 1; i <= idx1; i++) { + var yVal1 = dataY[i]; + + var x1 = round(valToPosX(dataX[i], scaleX, plotWid, plotLft)); + + if (yVal1 == null) { + if (series.isGap(u, seriesIdx, i)) { + addGap(gaps, prevXPos, x1); + inGap = true; + } + continue; + } + + var y1 = round(valToPosY(yVal1, scaleY, plotHgt, plotTop)); + + if (inGap) { + addGap(gaps, prevXPos, x1); + + // don't clip vertical extenders + if (prevYPos != y1) { + var halfStroke = (series.width * pxRatio) / 2; + + var lastGap = gaps[gaps.length - 1]; + lastGap[0] += halfStroke; + lastGap[1] -= halfStroke; + } + + inGap = false; + } + + if (align == 1) + { stroke.lineTo(x1, prevYPos); } + else + { stroke.lineTo(prevXPos, y1); } + + stroke.lineTo(x1, y1); + + prevYPos = y1; + prevXPos = x1; + } + + var fill = new Path2D(stroke); + + var fillTo = series.fillTo(u, seriesIdx, series.min, series.max); + + var minY = round(valToPosY(fillTo, scaleY, plotHgt, plotTop)); + + fill.lineTo(prevXPos, minY); + fill.lineTo(firstXPos, minY); + + var clip = !series.spanGaps ? clipGaps(gaps, 1, plotLft, plotTop, plotWid, plotHgt) : null; + + return { + stroke: stroke, + fill: fill, + clip: clip, + }; + }; +} + +function bars(opts) { + opts = opts || EMPTY_OBJ; + var size = ifNull(opts.size, [0.6, inf]); + + var gapFactor = 1 - size[0]; + var maxWidth = ifNull(size[1], inf) * pxRatio; + + return function (u, seriesIdx, idx0, idx1) { + var ref = aliasProps(u, seriesIdx); + var series = ref[0]; + var dataX = ref[1]; + var dataY = ref[2]; + var scaleX = ref[3]; + var scaleY = ref[4]; + var valToPosX = ref[5]; + var valToPosY = ref[6]; + var plotLft = ref[7]; + var plotTop = ref[8]; + var plotWid = ref[9]; + var plotHgt = ref[10]; + + var colWid = valToPosX(dataX[1], scaleX, plotWid, plotLft) - valToPosX(dataX[0], scaleX, plotWid, plotLft); + + var gapWid = colWid * gapFactor; + + var fillToY = series.fillTo(u, seriesIdx, series.min, series.max); + + var y0Pos = valToPosY(fillToY, scaleY, plotHgt, plotTop); + + var strokeWidth = round(series.width * pxRatio); + + var barWid = round(min(maxWidth, colWid - gapWid) - strokeWidth); + + var stroke = new Path2D(); + + for (var i = idx0; i <= idx1; i++) { + var yVal = dataY[i]; + + if (yVal == null) + { continue; } + + var xVal = scaleX.distr == 2 ? i : dataX[i]; + + // TODO: all xPos can be pre-computed once for all series in aligned set + var xPos = valToPosX(xVal, scaleX, plotWid, plotLft); + var yPos = valToPosY(yVal, scaleY, plotHgt, plotTop); + + var lft = round(xPos - barWid / 2); + var btm = round(max(yPos, y0Pos)); + var top = round(min(yPos, y0Pos)); + var barHgt = btm - top; + + stroke.rect(lft, top, barWid, barHgt); + } + + var fill = series.fill != null ? new Path2D(stroke) : undefined; + + return { + stroke: stroke, + fill: fill, + }; + }; +} + +var linearPath = linear() ; + function setDefaults(d, xo, yo, initY) { var d2 = initY ? [d[0], d[1]].concat(d.slice(2)) : [d[0]].concat(d.slice(1)); return d2.map(function (o, i) { return setDefault(o, i, xo, yo); }); @@ -1156,24 +1903,6 @@ function setDefault(o, i, xo, yo) { return assign({}, (i == 0 || o && o.side % 2 == 0 ? xo : yo), o); } -function getValPct(val, scale) { - return ( - scale.distr == 3 - ? log10(val / scale.min) / log10(scale.max / scale.min) - : (val - scale.min) / (scale.max - scale.min) - ); -} - -function getYPos(val, scale, hgt, top) { - var pctY = getValPct(val, scale); - return top + (1 - pctY) * hgt; -} - -function getXPos(val, scale, wid, lft) { - var pctX = getValPct(val, scale); - return lft + pctX * wid; -} - var nullMinMax = [null, null]; function snapNumX(self, dataMin, dataMax) { @@ -1221,6 +1950,27 @@ function pxRatioFont(font) { function uPlot(opts, data, then) { var self = {}; + function getValPct(val, scale) { + return ( + scale.distr == 3 + ? log10((val > 0 ? val : scale.clamp(self, val, scale.min, scale.max, scale.key)) / scale.min) / log10(scale.max / scale.min) + : (val - scale.min) / (scale.max - scale.min) + ); + } + + function getXPos(val, scale, wid, lft) { + var pctX = getValPct(val, scale); + return lft + pctX * wid; + } + + function getYPos(val, scale, hgt, top) { + var pctY = getValPct(val, scale); + return top + (1 - pctY) * hgt; + } + + self.valToPosX = getXPos; + self.valToPosY = getYPos; + var ready = false; self.status = 0; @@ -1259,6 +2009,13 @@ function uPlot(opts, data, then) { var xScaleKey = series[0].scale; + var drawOrderMap = { + axes: drawAxesGrid, + series: drawSeries, + }; + + var drawOrder = (opts.drawOrder || ["axes", "series"]).map(function (key) { return drawOrderMap[key]; }); + function initScale(scaleKey) { var sc = scales[scaleKey]; @@ -1274,6 +2031,8 @@ function uPlot(opts, data, then) { else { sc = scales[scaleKey] = assign({}, (scaleKey == xScaleKey ? xScaleOpts : yScaleOpts), scaleOpts); + sc.key = scaleKey; + var isTime = sc.time; var isLog = sc.distr == 3; @@ -1288,6 +2047,8 @@ function uPlot(opts, data, then) { sc.range = fnOrSelf(rn || (isTime ? snapTimeX : scaleKey == xScaleKey ? (isLog ? snapLogX : snapNumX) : (isLog ? snapLogY : snapNumY))); sc.auto = fnOrSelf(sc.auto); + + sc.clamp = fnOrSelf(sc.clamp || clampScale); } } } @@ -1314,18 +2075,6 @@ function uPlot(opts, data, then) { { pendScales[k$1] = {min: sc.min, max: sc.max}; } } - var gutters = self.gutters = assign({ - x: round(yAxisOpts.size / 2), - y: round(xAxisOpts.size / 3), - _x: null, - _y: null, - }, opts.gutters); - - gutters.x = fnOrSelf(gutters.x); - gutters.y = fnOrSelf(gutters.y); - gutters._x = gutters.x(self); - gutters._y = gutters.y(self); - // self.tz = opts.tz || Intl.DateTimeFormat().resolvedOptions().timeZone; var _tzDate = (opts.tzDate || (function (ts) { return new Date(ts / ms); })); var _fmtDate = (opts.fmtDate || fmtDate); @@ -1337,6 +2086,11 @@ function uPlot(opts, data, then) { var legend = assign({show: true, live: true}, opts.legend); var showLegend = legend.show; + { + legend.stroke = fnOrSelf(legend.stroke || legendStroke); + legend.fill = fnOrSelf(legend.fill || legendFill); + } + var legendEl; var legendRows = []; var legendCols; @@ -1379,8 +2133,11 @@ function uPlot(opts, data, then) { var label = placeTag("th", null, row); var indic = placeDiv(LEGEND_MARKER, label); - indic.style.borderColor = s.width ? s.stroke : i > 0 && s.points.width ? s.points.stroke : null; - indic.style.backgroundColor = s.fill || null; + + if (i > 0) { + indic.style.borderColor = legend.stroke(self, i); + indic.style.backgroundColor = legend.fill(self, i); + } var text = placeDiv(LEGEND_LABEL, label); text.textContent = s.label; @@ -1478,10 +2235,10 @@ function uPlot(opts, data, then) { var bb = self.bbox; - plotLft = bb[LEFT] = incrRound(plotLftCss * pxRatio, 0.5); - plotTop = bb[TOP] = incrRound(plotTopCss * pxRatio, 0.5); - plotWid = bb[WIDTH] = incrRound(plotWidCss * pxRatio, 0.5); - plotHgt = bb[HEIGHT] = incrRound(plotHgtCss * pxRatio, 0.5); + plotLft = bb.left = incrRound(plotLftCss * pxRatio, 0.5); + plotTop = bb.top = incrRound(plotTopCss * pxRatio, 0.5); + plotWid = bb.width = incrRound(plotWidCss * pxRatio, 0.5); + plotHgt = bb.height = incrRound(plotHgtCss * pxRatio, 0.5); } function convergeSize() { @@ -1493,9 +2250,9 @@ function uPlot(opts, data, then) { cycleNum++; var axesConverged = axesCalc(cycleNum); - var guttersConverged = guttersCalc(cycleNum); + var paddingConverged = paddingCalc(cycleNum); - converged = axesConverged && guttersConverged; + converged = axesConverged && paddingConverged; if (!converged) { calcSize(self.width, self.height); @@ -1555,25 +2312,18 @@ function uPlot(opts, data, then) { } }); - // hz gutters - if (hasTopAxis || hasBtmAxis) { - if (!hasRgtAxis) - { plotWidCss -= gutters._x; } - if (!hasLftAxis) { - plotWidCss -= gutters._x; - plotLftCss += gutters._x; - } - } + sidesWithAxes[0] = hasTopAxis; + sidesWithAxes[1] = hasRgtAxis; + sidesWithAxes[2] = hasBtmAxis; + sidesWithAxes[3] = hasLftAxis; - // vt gutters - if (hasLftAxis || hasRgtAxis) { - if (!hasBtmAxis) - { plotHgtCss -= gutters._y; } - if (!hasTopAxis) { - plotHgtCss -= gutters._y; - plotTopCss += gutters._y; - } - } + // hz padding + plotWidCss -= _padding[1] + _padding[3]; + plotLftCss += _padding[3]; + + // vt padding + plotHgtCss -= _padding[2] + _padding[0]; + plotTopCss += _padding[0]; } function calcAxesRects() { @@ -1608,8 +2358,17 @@ function uPlot(opts, data, then) { var cursor = (self.cursor = assign({}, cursorOpts, opts.cursor)); - (cursor._lock = false); - (cursor.points.show = fnOrSelf(cursor.points.show)); + { + cursor._lock = false; + + var points = cursor.points; + + points.show = fnOrSelf(points.show); + points.size = fnOrSelf(points.size); + points.stroke = fnOrSelf(points.stroke); + points.width = fnOrSelf(points.width); + points.fill = fnOrSelf(points.fill); + } var focus = self.focus = assign({}, opts.focus || {alpha: 0.3}, cursor.focus); var cursorFocus = focus.prox >= 0; @@ -1640,18 +2399,26 @@ function uPlot(opts, data, then) { s.label = s.label || (isTime ? timeSeriesLabel : numSeriesLabel); if (i > 0) { - s.width = s.width == null ? 1 : s.width; - s.paths = s.paths || ( buildPaths); - s.fillTo = s.fillTo || seriesFillTo; + s.width = s.width == null ? 1 : s.width; + s.paths = s.paths || linearPath || retNull; + s.fillTo = fnOrSelf(s.fillTo || seriesFillTo); + + s.stroke = fnOrSelf(s.stroke || hexBlack); + s.fill = fnOrSelf(s.fill || null); + s._stroke = s._fill = s._paths = null; + var _ptDia = ptDia(s.width, 1); - s.points = assign({}, { + var points = s.points = assign({}, { size: _ptDia, width: max(1, _ptDia * .2), stroke: s.stroke, space: _ptDia * 2, + _stroke: null, + _fill: null, }, s.points); - s.points.show = fnOrSelf(s.points.show); - s._paths = null; + points.show = fnOrSelf(points.show); + points.fill = fnOrSelf(points.fill); + points.stroke = fnOrSelf(points.stroke); } if (showLegend) @@ -1685,6 +2452,8 @@ function uPlot(opts, data, then) { series.forEach(initSeries); + var sidesWithAxes = [false, false, false, false]; + function initAxis(axis, i) { axis._show = axis.show; @@ -1732,14 +2501,36 @@ function uPlot(opts, data, then) { axis._found = // foundIncrSpace axis._splits = axis._values = null; + + if (axis._size > 0) + { sidesWithAxes[i] = true; } } } // set axis defaults axes.forEach(initAxis); + function autoPadSide(self, side, sidesWithAxes, cycleNum) { + var hasTopAxis = sidesWithAxes[0]; + var hasRgtAxis = sidesWithAxes[1]; + var hasBtmAxis = sidesWithAxes[2]; + var hasLftAxis = sidesWithAxes[3]; + + var ori = side % 2; + var size = 0; + + if (ori == 0 && (hasLftAxis || hasRgtAxis)) + { size = (side == 0 && !hasTopAxis || side == 2 && !hasBtmAxis ? round(xAxisOpts.size / 3) : 0); } + if (ori == 1 && (hasTopAxis || hasBtmAxis)) + { size = (side == 1 && !hasRgtAxis || side == 3 && !hasLftAxis ? round(yAxisOpts.size / 2) : 0); } + + return size; + } + + var padding = self.padding = (opts.padding || [autoPadSide,autoPadSide,autoPadSide,autoPadSide]).map(function (p) { return fnOrSelf(ifNull(p, autoPadSide)); }); + var _padding = self._padding = padding.map(function (p, i) { return p(self, i, sidesWithAxes, 0); }); + var dataLen; - var dataIsGap; // rendered data window var i0 = null; @@ -1752,7 +2543,7 @@ function uPlot(opts, data, then) { function setData(_data, _resetScales) { if (!isArr(_data) && isObj(_data)) { - dataIsGap = _data.isGap; + _data.isGap && series.forEach(function (s) { s.isGap = _data.isGap; }); _data = _data.data; } @@ -1767,6 +2558,8 @@ function uPlot(opts, data, then) { if (xScaleDistr == 2) { data[0] = data0.map(function (v, i) { return i; }); } + self._data = data; + resetYSeries(true); fire("setData"); @@ -1820,8 +2613,6 @@ function uPlot(opts, data, then) { } _setScale(xScaleKey, _min, _max); - - viaAutoScaleX = false; } function setCtxStyle(stroke, width, dash, fill) { @@ -1889,7 +2680,7 @@ function uPlot(opts, data, then) { } else if (s.show && s.auto && wsc.auto(self, viaAutoScaleX) && (psc == null || psc.min == null)) { // only run getMinMax() for invalidated series data, else reuse - var minMax$1 = s.min == null ? getMinMax(data[i], i0, i1, s.sorted) : [s.min, s.max]; + var minMax$1 = s.min == null ? (wsc.distr == 3 ? getMinMaxLog(data[i], i0, i1) : getMinMax(data[i], i0, i1, s.sorted)) : [s.min, s.max]; // initial min/max wsc.min = min(wsc.min, s.min = minMax$1[0]); @@ -2006,11 +2797,14 @@ function uPlot(opts, data, then) { } } + var _stroke = p._stroke = p.stroke(self, si); + var _fill = p._fill = p.fill(self, si); + setCtxStyle( - p.stroke, + _stroke, width, - null, - p.fill || (isStroked ? "#fff" : s.stroke) + p.dash, + _fill || (isStroked ? "#fff" : s._stroke) ); ctx.fill(path); @@ -2040,25 +2834,27 @@ function uPlot(opts, data, then) { var dir = 1; function drawSeries() { - // path building loop must be before draw loop to ensure that all bands are fully constructed - series.forEach(function (s, i) { - if (i > 0 && s.show && s._paths == null) { - var _idxs = getOuterIdxs(data[i]); - s._paths = s.paths(self, i, _idxs[0], _idxs[1]); - } - }); + if (dataLen > 0) { + // path building loop must be before draw loop to ensure that all bands are fully constructed + series.forEach(function (s, i) { + if (i > 0 && s.show && s._paths == null) { + var _idxs = getOuterIdxs(data[i]); + s._paths = s.paths(self, i, _idxs[0], _idxs[1]); + } + }); - series.forEach(function (s, i) { - if (i > 0 && s.show) { - if (s._paths) - { drawPath(i); } + series.forEach(function (s, i) { + if (i > 0 && s.show) { + if (s._paths) + { drawPath(i); } - if (s.points.show(self, i, i0, i1)) - { drawPoints(i); } + if (s.points.show(self, i, i0, i1)) + { drawPoints(i); } - fire("drawSeries", i); - } - }); + fire("drawSeries", i); + } + }); + } } function drawPath(si) { @@ -2069,10 +2865,13 @@ function uPlot(opts, data, then) { var stroke = ref.stroke; var fill = ref.fill; var clip = ref.clip; - var width = roundDec(s[WIDTH] * pxRatio, 3); + var width = roundDec(s.width * pxRatio, 3); var offset = (width % 2) / 2; - setCtxStyle(s.stroke, width, s.dash, s.fill); + var _stroke = s._stroke = s.stroke(self, si); + var _fill = s._fill = s.fill(self, si); + + setCtxStyle(_stroke, width, s.dash, _fill); ctx.globalAlpha = s.alpha; @@ -2107,10 +2906,10 @@ function uPlot(opts, data, then) { width && ctx.stroke(stroke); } else { - width && ctx.stroke(stroke); - - if (s.fill != null) + if (_fill != null) { ctx.fill(fill); } + + width && ctx.stroke(stroke); } ctx.restore(); @@ -2124,178 +2923,6 @@ function uPlot(opts, data, then) { { dir *= -1; } } - function buildClip(is, gaps, nullHead, nullTail) { - var s = series[is]; - - var clip = null; - - // create clip path (invert gaps and non-gaps) - if (gaps.length > 0 && !s.spanGaps) { - clip = new Path2D(); - - var prevGapEnd = plotLft; - - for (var i = 0; i < gaps.length; i++) { - var g = gaps[i]; - - clip.rect(prevGapEnd, plotTop, g[0] - prevGapEnd, plotTop + plotHgt); - - prevGapEnd = g[1]; - } - - clip.rect(prevGapEnd, plotTop, plotLft + plotWid - prevGapEnd, plotTop + plotHgt); - } - - return clip; - } - - function addGap(gaps, fromX, toX) { - if (toX > fromX) { - var prevGap = gaps[gaps.length - 1]; - - if (prevGap && prevGap[0] == fromX) // TODO: gaps must be encoded at stroke widths? - { prevGap[1] = toX; } - else - { gaps.push([fromX, toX]); } - } - } - - function nonNullIdx(data, _i0, _i1, dir) { - for (var i = dir == 1 ? _i0 : _i1; i >= _i0 && i <= _i1; i += dir) { - if (data[i] != null) - { return i; } - } - - return -1; - } - - function buildPaths(self, is, _i0, _i1) { - var s = series[is]; - var isGap = dataIsGap || s.isGap; - - var xdata = data[0]; - var ydata = data[is]; - var scaleX = scales[xScaleKey]; - var scaleY = scales[s.scale]; - - var _paths = dir == 1 ? {stroke: new Path2D(), fill: null, clip: null} : series[is-1]._paths; - var stroke = _paths.stroke; - var width = roundDec(s[WIDTH] * pxRatio, 3); - - var minY = inf, - maxY = -inf, - outY, outX; - - // todo: don't build gaps on dir = -1 pass - var gaps = []; - - var accX = round(getXPos(xdata[dir == 1 ? _i0 : _i1], scaleX, plotWid, plotLft)); - var accGaps = false; - - // data edges - var lftIdx = nonNullIdx(ydata, _i0, _i1, 1); - var rgtIdx = nonNullIdx(ydata, _i0, _i1, -1); - var lftX = incrRound(getXPos(xdata[lftIdx], scaleX, plotWid, plotLft), 0.5); - var rgtX = incrRound(getXPos(xdata[rgtIdx], scaleX, plotWid, plotLft), 0.5); - - if (lftX > plotLft) - { addGap(gaps, plotLft, lftX); } - - // the moves the shape edge outside the canvas so stroke doesnt bleed in - if (s.band && dir == 1) - { stroke.lineTo(lftX - width * 2, round(getYPos(ydata[_i0], scaleY, plotHgt, plotTop))); } - - for (var i = dir == 1 ? _i0 : _i1; i >= _i0 && i <= _i1; i += dir) { - var x = round(getXPos(xdata[i], scaleX, plotWid, plotLft)); - - if (x == accX) { - if (ydata[i] != null) { - outY = round(getYPos(ydata[i], scaleY, plotHgt, plotTop)); - minY = min(outY, minY); - maxY = max(outY, maxY); - } - else if (!accGaps && isGap(self, is, i)) - { accGaps = true; } - } - else { - var _addGap = false; - - if (minY != inf) { - stroke.lineTo(accX, minY); - stroke.lineTo(accX, maxY); - stroke.lineTo(accX, outY); - outX = accX; - } - else if (accGaps) { - _addGap = true; - accGaps = false; - } - - if (ydata[i] != null) { - outY = round(getYPos(ydata[i], scaleY, plotHgt, plotTop)); - stroke.lineTo(x, outY); - minY = maxY = outY; - - // prior pixel can have data but still start a gap if ends with null - if (x - accX > 1 && ydata[i-1] == null && isGap(self, is, i-1)) - { _addGap = true; } - } - else { - minY = inf; - maxY = -inf; - - if (!accGaps && isGap(self, is, i)) - { accGaps = true; } - } - - _addGap && addGap(gaps, outX, x); - - accX = x; - } - } - - if (rgtX < plotLft + plotWid) - { addGap(gaps, rgtX, plotLft + plotWid); } - - if (s.band) { - var _x, _iy, ydata2; - - // the moves the shape edge outside the canvas so stroke doesnt bleed in - if (dir == 1) { - _x = rgtX + width * 2; - _iy = rgtIdx; - ydata2 = data[is + 1]; - } - else { - _x = lftX - width * 2; - _iy = lftIdx; - ydata2 = data[is - 1]; - } - - stroke.lineTo(_x, round(getYPos(ydata[_iy], scaleY, plotHgt, plotTop))); - stroke.lineTo(_x, round(getYPos(ydata2[_iy], scaleY, plotHgt, plotTop))); - } - - if (dir == 1) { - _paths.clip = buildClip(is, gaps, ydata[_i0] == null, ydata[_i1] == null); - - if (s.fill != null) { - var fill = _paths.fill = new Path2D(stroke); - - var fillTo = round(getYPos(s.fillTo(self, is, s.min, s.max), scaleY, plotHgt, plotTop)); - fill.lineTo(rgtX, fillTo); - fill.lineTo(lftX, fillTo); - } - } - - if (s.band) - { dir *= -1; } - - return _paths; - } - - self.paths = buildPaths; - function getIncrSpace(axisIdx, min, max, fullDim) { var axis = axes[axisIdx]; @@ -2416,17 +3043,17 @@ function uPlot(opts, data, then) { return converged; } - function guttersCalc(cycleNum) { + function paddingCalc(cycleNum) { var converged = true; - var _x = gutters._x; - var _y = gutters._y; + padding.forEach(function (p, i) { + var _p = p(self, i, sidesWithAxes, cycleNum); - gutters._x = ceil(gutters.x(self, cycleNum)); - gutters._y = ceil(gutters.y(self, cycleNum)); + if (_p != _padding[i]) + { converged = false; } - if (gutters._x != _x || gutters._y != _y) - { converged = false; } + _padding[i] = _p; + }); return converged; } @@ -2545,7 +3172,7 @@ function uPlot(opts, data, then) { side, basePos, tickSize, - roundDec(ticks[WIDTH] * pxRatio, 3), + roundDec(ticks.width * pxRatio, 3), ticks.stroke ); } @@ -2561,7 +3188,7 @@ function uPlot(opts, data, then) { ori == 0 ? 2 : 1, ori == 0 ? plotTop : plotLft, ori == 0 ? plotHgt : plotWid, - roundDec(grid[WIDTH] * pxRatio, 3), + roundDec(grid.width * pxRatio, 3), grid.stroke, grid.dash ); @@ -2623,8 +3250,8 @@ function uPlot(opts, data, then) { setStylePx(wrap, WIDTH, fullWidCss); setStylePx(wrap, HEIGHT, fullHgtCss); - can[WIDTH] = round(fullWidCss * pxRatio); - can[HEIGHT] = round(fullHgtCss * pxRatio); + can.width = round(fullWidCss * pxRatio); + can.height = round(fullHgtCss * pxRatio); syncRect(); @@ -2635,10 +3262,10 @@ function uPlot(opts, data, then) { // if (shouldSetSelect) { // TODO: update .u-select metrics (if visible) - // setStylePx(selectDiv, TOP, select[TOP] = 0); - // setStylePx(selectDiv, LEFT, select[LEFT] = 0); - // setStylePx(selectDiv, WIDTH, select[WIDTH] = 0); - // setStylePx(selectDiv, HEIGHT, select[HEIGHT] = 0); + // setStylePx(selectDiv, TOP, select.top = 0); + // setStylePx(selectDiv, LEFT, select.left = 0); + // setStylePx(selectDiv, WIDTH, select.width = 0); + // setStylePx(selectDiv, HEIGHT, select.height = 0); // shouldSetSelect = false; // } @@ -2647,13 +3274,12 @@ function uPlot(opts, data, then) { shouldSetCursor = false; } - // if (true && legend.show && legend.live && shouldSetLegend) {} + // if (FEAT_LEGEND && legend.show && legend.live && shouldSetLegend) {} if (fullWidCss > 0 && fullHgtCss > 0) { - ctx.clearRect(0, 0, can[WIDTH], can[HEIGHT]); + ctx.clearRect(0, 0, can.width, can.height); fire("drawClear"); - drawAxesGrid(); - dataLen > 0 && drawSeries(); + drawOrder.forEach(function (fn) { return fn(); }); fire("draw"); } @@ -2664,6 +3290,8 @@ function uPlot(opts, data, then) { fire("ready"); } + viaAutoScaleX = false; + queuedCommit = false; } @@ -2965,7 +3593,7 @@ function uPlot(opts, data, then) { { continue; } for (var j = 0; j < legendRows[i].length; j++) - { legendRows[i][j][firstChild].nodeValue = '--'; } + { legendRows[i][j].firstChild.nodeValue = '--'; } } } @@ -2973,7 +3601,7 @@ function uPlot(opts, data, then) { { setSeries(null, {focus: true}, syncOpts.setSeries); } } else { - // let pctY = 1 - (y / rect[HEIGHT]); + // let pctY = 1 - (y / rect.height); var valAtPos = scaleValueAtPos(mouseLeft1, xScaleKey); @@ -2981,18 +3609,18 @@ function uPlot(opts, data, then) { var scX = scales[xScaleKey]; - var xPos = roundDec(getXPos(data[0][idx], scX, plotWidCss, 0), 3); + var xPos = incrRoundUp(getXPos(data[0][idx], scX, plotWidCss, 0), 0.5); for (var i$1 = 0; i$1 < series.length; i$1++) { var s = series[i$1]; var idx2 = cursor.dataIdx(self, i$1, idx, valAtPos); - var xPos2 = idx2 == idx ? xPos : roundDec(getXPos(data[0][idx2], scX, plotWidCss, 0), 3); + var xPos2 = idx2 == idx ? xPos : incrRoundUp(getXPos(data[0][idx2], scX, plotWidCss, 0), 0.5); if (i$1 > 0 && s.show) { var valAtIdx = data[i$1][idx2]; - var yPos = valAtIdx == null ? -10 : roundDec(getYPos(valAtIdx, scales[s.scale], plotHgtCss, 0), 3); + var yPos = valAtIdx == null ? -10 : incrRoundUp(getYPos(valAtIdx, scales[s.scale], plotHgtCss, 0), 0.5); if (yPos > 0) { var dist = abs(yPos - mouseTop1); @@ -3017,7 +3645,7 @@ function uPlot(opts, data, then) { var j$1 = 0; for (var k in vals) - { legendRows[i$1][j$1++][firstChild].nodeValue = vals[k]; } + { legendRows[i$1][j$1++].firstChild.nodeValue = vals[k]; } } } @@ -3038,35 +3666,35 @@ function uPlot(opts, data, then) { if (xKey) { var sc = scales[xKey]; - var srcLeft = src.posToVal(src.select[LEFT], xKey); - var srcRight = src.posToVal(src.select[LEFT] + src.select[WIDTH], xKey); + var srcLeft = src.posToVal(src.select.left, xKey); + var srcRight = src.posToVal(src.select.left + src.select.width, xKey); - select[LEFT] = getXPos(srcLeft, sc, plotWidCss, 0); - select[WIDTH] = abs(select[LEFT] - getXPos(srcRight, sc, plotWidCss, 0)); + select.left = getXPos(srcLeft, sc, plotWidCss, 0); + select.width = abs(select.left - getXPos(srcRight, sc, plotWidCss, 0)); - setStylePx(selectDiv, LEFT, select[LEFT]); - setStylePx(selectDiv, WIDTH, select[WIDTH]); + setStylePx(selectDiv, LEFT, select.left); + setStylePx(selectDiv, WIDTH, select.width); if (!yKey) { - setStylePx(selectDiv, TOP, select[TOP] = 0); - setStylePx(selectDiv, HEIGHT, select[HEIGHT] = plotHgtCss); + setStylePx(selectDiv, TOP, select.top = 0); + setStylePx(selectDiv, HEIGHT, select.height = plotHgtCss); } } if (yKey) { var sc$1 = scales[yKey]; - var srcTop = src.posToVal(src.select[TOP], yKey); - var srcBottom = src.posToVal(src.select[TOP] + src.select[HEIGHT], yKey); + var srcTop = src.posToVal(src.select.top, yKey); + var srcBottom = src.posToVal(src.select.top + src.select.height, yKey); - select[TOP] = getYPos(srcTop, sc$1, plotHgtCss, 0); - select[HEIGHT] = abs(select[TOP] - getYPos(srcBottom, sc$1, plotHgtCss, 0)); + select.top = getYPos(srcTop, sc$1, plotHgtCss, 0); + select.height = abs(select.top - getYPos(srcBottom, sc$1, plotHgtCss, 0)); - setStylePx(selectDiv, TOP, select[TOP]); - setStylePx(selectDiv, HEIGHT, select[HEIGHT]); + setStylePx(selectDiv, TOP, select.top); + setStylePx(selectDiv, HEIGHT, select.height); if (!xKey) { - setStylePx(selectDiv, LEFT, select[LEFT] = 0); - setStylePx(selectDiv, WIDTH, select[WIDTH] = plotWidCss); + setStylePx(selectDiv, LEFT, select.left = 0); + setStylePx(selectDiv, WIDTH, select.width = plotWidCss); } } } @@ -3102,12 +3730,12 @@ function uPlot(opts, data, then) { var minX = min(mouseLeft0, mouseLeft1); var dx = abs(mouseLeft1 - mouseLeft0); - setStylePx(selectDiv, LEFT, select[LEFT] = minX); - setStylePx(selectDiv, WIDTH, select[WIDTH] = dx); + setStylePx(selectDiv, LEFT, select.left = minX); + setStylePx(selectDiv, WIDTH, select.width = dx); if (!dragY) { - setStylePx(selectDiv, TOP, select[TOP] = 0); - setStylePx(selectDiv, HEIGHT, select[HEIGHT] = plotHgtCss); + setStylePx(selectDiv, TOP, select.top = 0); + setStylePx(selectDiv, HEIGHT, select.height = plotHgtCss); } } @@ -3115,19 +3743,19 @@ function uPlot(opts, data, then) { var minY = min(mouseTop0, mouseTop1); var dy = abs(mouseTop1 - mouseTop0); - setStylePx(selectDiv, TOP, select[TOP] = minY); - setStylePx(selectDiv, HEIGHT, select[HEIGHT] = dy); + setStylePx(selectDiv, TOP, select.top = minY); + setStylePx(selectDiv, HEIGHT, select.height = dy); if (!dragX) { - setStylePx(selectDiv, LEFT, select[LEFT] = 0); - setStylePx(selectDiv, WIDTH, select[WIDTH] = plotWidCss); + setStylePx(selectDiv, LEFT, select.left = 0); + setStylePx(selectDiv, WIDTH, select.width = plotWidCss); } } if (!dragX && !dragY) { // the drag didn't pass the dist requirement - setStylePx(selectDiv, HEIGHT, select[HEIGHT] = 0); - setStylePx(selectDiv, WIDTH, select[WIDTH] = 0); + setStylePx(selectDiv, HEIGHT, select.height = 0); + setStylePx(selectDiv, WIDTH, select.width = 0); } } } @@ -3245,7 +3873,7 @@ function uPlot(opts, data, then) { cacheMouse(e, src, _x, _y, _w, _h, _i, false, true); - var hasSelect = select[WIDTH] > 0 || select[HEIGHT] > 0; + var hasSelect = select.width > 0 || select.height > 0; hasSelect && setSelect(select); @@ -3257,8 +3885,8 @@ function uPlot(opts, data, then) { if (dragX) { _setScale(xScaleKey, - scaleValueAtPos(select[LEFT], xScaleKey), - scaleValueAtPos(select[LEFT] + select[WIDTH], xScaleKey) + scaleValueAtPos(select.left, xScaleKey), + scaleValueAtPos(select.left + select.width, xScaleKey) ); } @@ -3268,8 +3896,8 @@ function uPlot(opts, data, then) { if (k != xScaleKey && sc.from == null && sc.min != inf) { _setScale(k, - scaleValueAtPos(select[TOP] + select[HEIGHT], k), - scaleValueAtPos(select[TOP], k) + scaleValueAtPos(select.top + select.height, k), + scaleValueAtPos(select.top, k) ); } } @@ -3358,10 +3986,10 @@ function uPlot(opts, data, then) { // internal pub/sub var events = {}; - events[mousedown] = mouseDown; - events[mousemove] = mouseMove; - events[mouseup] = mouseUp; - events[dblclick] = dblClick; + events.mousedown = mouseDown; + events.mousemove = mouseMove; + events.mouseup = mouseUp; + events.dblclick = dblClick; events["setSeries"] = function (e, src, idx, opts) { setSeries(idx, opts); }; @@ -3439,7 +4067,7 @@ function uPlot(opts, data, then) { else { autoScaleX(); } - _setSize(opts[WIDTH], opts[HEIGHT]); + _setSize(opts.width, opts.height); setSelect(select, false); } @@ -3463,9 +4091,25 @@ uPlot.fmtNum = fmtNum; uPlot.rangeNum = rangeNum; uPlot.rangeLog = rangeLog; +{ + uPlot.join = join; +} + { uPlot.fmtDate = fmtDate; uPlot.tzDate = tzDate; } +{ + uPlot.addGap = addGap; + uPlot.clipGaps = clipGaps; + + var paths = uPlot.paths = {}; + + (paths.linear = linear); + (paths.spline = spline); + (paths.stepped = stepped); + (paths.bars = bars); +} + module.exports = uPlot; diff --git a/plugins/uplot/uPlot.esm.js b/plugins/uplot/uPlot.esm.js index d1dd35c45..c04e5ba85 100644 --- a/plugins/uplot/uPlot.esm.js +++ b/plugins/uplot/uPlot.esm.js @@ -4,9 +4,11 @@ * * uPlot.js (μPlot) * A small, fast chart for time series, lines, areas, ohlc & bars -* https://github.com/leeoniya/uPlot (v1.4.6) +* https://github.com/leeoniya/uPlot (v1.5.2) */ +const FEAT_TIME = true; + function debounce(fn, time) { let pending = null; @@ -43,6 +45,15 @@ function closestIdx(num, arr, lo, hi) { return hi; } +function nonNullIdx(data, _i0, _i1, dir) { + for (let i = dir == 1 ? _i0 : _i1; i >= _i0 && i <= _i1; i += dir) { + if (data[i] != null) + return i; + } + + return -1; +} + function getMinMax(data, _i0, _i1, sorted) { // console.log("getMinMax()"); @@ -69,6 +80,25 @@ function getMinMax(data, _i0, _i1, sorted) { return [_min, _max]; } +function getMinMaxLog(data, _i0, _i1) { +// console.log("getMinMax()"); + + let _min = inf; + let _max = -inf; + + for (let i = _i0; i <= _i1; i++) { + if (data[i] > 0) { + _min = min(_min, data[i]); + _max = max(_max, data[i]); + } + } + + return [ + _min == inf ? 1 : _min, + _max == -inf ? 10 : _max, + ]; +} + const _fixedTuple = [0, 0]; function fixIncr(minIncr, maxIncr, minExp, maxExp) { @@ -187,6 +217,7 @@ const ceil = M.ceil; const min = M.min; const max = M.max; const pow = M.pow; +const sqrt = M.sqrt; const log10 = M.log10; const log2 = M.log2; const PI = M.PI; @@ -205,9 +236,9 @@ function fnOrSelf(v) { return typeof v == "function" ? v : () => v; } -function retArg1(_0, _1) { - return _1; -} +const retArg1 = (_0, _1) => _1; + +const retNull = _ => null; function incrRoundUp(num, incr) { return ceil(num/incr)*incr; @@ -255,11 +286,18 @@ const EMPTY_OBJ = {}; const isArr = Array.isArray; function isStr(v) { - return typeof v === 'string'; + return typeof v == 'string'; } function isObj(v) { - return typeof v === 'object' && v !== null; + let is = false; + + if (v != null) { + let c = v.constructor; + is = c == null || c == Object; + } + + return is; } function copy(o) { @@ -295,28 +333,136 @@ function assign(targ) { return targ; } +// nullModes +const NULL_IGNORE = 0; // all nulls are ignored by isGap +const NULL_GAP = 1; // alignment nulls are ignored by isGap (default) +const NULL_EXPAND = 2; // nulls are expand to include adjacent alignment nulls + +// nullModes is a tables-matched array indicating how to treat nulls in each series +function join(tables, nullModes) { + if (tables.length == 1) { + return { + data: tables[0], + isGap: nullModes ? (u, seriesIdx, dataIdx) => nullModes[0][seriesIdx] != NULL_IGNORE : () => true, + }; + } + + let xVals = new Set(); + let xNulls = [new Set()]; + + for (let ti = 0; ti < tables.length; ti++) { + let t = tables[ti]; + let xs = t[0]; + let len = xs.length; + + for (let i = 0; i < len; i++) + xVals.add(xs[i]); + + for (let si = 1; si < t.length; si++) { + let nulls = new Set(); + + // cache original nulls for isGap lookup + if (nullModes == null || nullModes[ti][si] == NULL_GAP || nullModes[ti][si] == NULL_EXPAND) { + let ys = t[si]; + + for (let i = 0; i < len; i++) { + if (ys[i] == null) + nulls.add(xs[i]); + } + } + + xNulls.push(nulls); + } + } + + let data = [Array.from(xVals).sort((a, b) => a - b)]; + + let alignedLen = data[0].length; + + let xIdxs = new Map(); + + for (let i = 0; i < alignedLen; i++) + xIdxs.set(data[0][i], i); + + let gsi = 1; + + for (let ti = 0; ti < tables.length; ti++) { + let t = tables[ti]; + let xs = t[0]; + + for (let si = 1; si < t.length; si++) { + let ys = t[si]; + + let yVals = Array(alignedLen).fill(null); + + for (let i = 0; i < ys.length; i++) + yVals[xIdxs.get(xs[i])] = ys[i]; + + // mark all filler nulls as explicit when adjacent to existing explicit nulls (minesweeper) + if (nullModes && nullModes[ti][si] == NULL_EXPAND) { + let nulls = xNulls[gsi]; + let size = nulls.size; + let i = 0; + let xi; + + let lastAddedX = -inf; + + for (let xVal of nulls.values()) { + if (i++ == size) + break; + + if (xVal > lastAddedX) { + let xIdx = xIdxs.get(xVal); + + xi = xIdx - 1; + while (yVals[xi] === null) { + nulls.add(data[0][xi]); + xi--; + } + + xi = xIdx + 1; + while (yVals[xi] === null) { + nulls.add(lastAddedX = data[0][xi]); + xi++; + } + } + } + } + + data.push(yVals); + + gsi++; + } + } + + return { + data: data, + isGap(u, seriesIdx, dataIdx) { + let xVal = u._data[0][dataIdx]; + return xNulls[seriesIdx].has(xVal); + }, + }; +} + const microTask = typeof queueMicrotask == "undefined" ? fn => Promise.resolve().then(fn) : queueMicrotask; -const WIDTH = "width"; -const HEIGHT = "height"; -const TOP = "top"; -const BOTTOM = "bottom"; -const LEFT = "left"; -const RIGHT = "right"; -const firstChild = "firstChild"; -const createElement = "createElement"; -const hexBlack = "#000"; +const WIDTH = "width"; +const HEIGHT = "height"; +const TOP = "top"; +const BOTTOM = "bottom"; +const LEFT = "left"; +const RIGHT = "right"; +const hexBlack = "#000"; const transparent = hexBlack + "0"; -const classList = "classList"; -const mousemove = "mousemove"; -const mousedown = "mousedown"; -const mouseup = "mouseup"; -const mouseenter = "mouseenter"; -const mouseleave = "mouseleave"; -const dblclick = "dblclick"; -const resize = "resize"; -const scroll = "scroll"; +const mousemove = "mousemove"; +const mousedown = "mousedown"; +const mouseup = "mouseup"; +const mouseenter = "mouseenter"; +const mouseleave = "mouseleave"; +const dblclick = "dblclick"; +const resize = "resize"; +const scroll = "scroll"; const pre = "u-"; @@ -345,11 +491,11 @@ const win = window; const pxRatio = devicePixelRatio; function addClass(el, c) { - c != null && el[classList].add(c); + c != null && el.classList.add(c); } function remClass(el, c) { - el[classList].remove(c); + el.classList.remove(c); } function setStylePx(el, name, value) { @@ -357,7 +503,7 @@ function setStylePx(el, name, value) { } function placeTag(tag, cls, targ, refEl) { - let el = doc[createElement](tag); + let el = doc.createElement(tag); if (cls != null) addClass(el, cls); @@ -835,24 +981,56 @@ function timeSeriesVal(tzDate, stamp) { return (self, val) => stamp(tzDate(val)); } -function cursorPoint(self, si) { - let s = self.series[si]; +function legendStroke(self, seriesIdx) { + let s = self.series[seriesIdx]; + return s.width ? s.stroke(self, seriesIdx) : s.points.width ? s.points.stroke(self, seriesIdx) : null; +} + +function legendFill(self, seriesIdx) { + return self.series[seriesIdx].fill(self, seriesIdx); +} + +function cursorPointShow(self, si) { + let o = self.cursor.points; let pt = placeDiv(); - pt.style.background = s.stroke || hexBlack; + let stroke = o.stroke(self, si); + let fill = o.fill(self, si); - let dia = ptDia(s.width, 1); - let mar = (dia - 1) / -2; + pt.style.background = fill || stroke; - setStylePx(pt, WIDTH, dia); - setStylePx(pt, HEIGHT, dia); + let size = o.size(self, si); + let width = o.width(self, si, size); + + if (width) + pt.style.border = width + "px solid " + stroke; + + let mar = size / -2; + + setStylePx(pt, WIDTH, size); + setStylePx(pt, HEIGHT, size); setStylePx(pt, "marginLeft", mar); setStylePx(pt, "marginTop", mar); return pt; } +function cursorPointFill(self, si) { + let s = self.series[si]; + return s.stroke(self, si); +} + +function cursorPointStroke(self, si) { + let s = self.series[si]; + return s.stroke(self, si); +} + +function cursorPointSize(self, si) { + let s = self.series[si]; + return ptDia(s.width, 1); +} + function dataIdx(self, seriesIdx, cursorIdx) { return cursorIdx; } @@ -882,7 +1060,11 @@ const cursorOpts = { lock: false, move: cursorMove, points: { - show: cursorPoint, + show: cursorPointShow, + size: cursorPointSize, + width: 0, + stroke: cursorPointStroke, + fill: cursorPointFill, }, bind: { @@ -1110,8 +1292,20 @@ const ySeriesOpts = { clip: null, }; +function clampScale(self, val, scaleMin, scaleMax, scaleKey) { +/* + if (val < 0) { + let cssHgt = self.bbox.height / pxRatio; + let absPos = self.valToPos(abs(val), scaleKey); + let fromBtm = cssHgt - absPos; + return self.posToVal(cssHgt + fromBtm, scaleKey); + } +*/ + return scaleMin / 10; +} + const xScaleOpts = { - time: true, + time: FEAT_TIME, auto: true, distr: 1, log: 10, @@ -1145,6 +1339,571 @@ function _sync(opts) { }; } +const props = Array(11); + +function aliasProps(u, seriesIdx) { + const series = u.series[seriesIdx]; + const scales = u.scales; + const bbox = u.bbox; + + props[0] = series; // series + props[1] = u._data[0]; // dataX + props[2] = u._data[seriesIdx]; // dataY + props[3] = scales[u.series[0].scale]; // scaleX + props[4] = scales[series.scale]; // scaleY + props[5] = u.valToPosX; // valToPosX + props[6] = u.valToPosY; // valToPosY + props[7] = bbox.left; // plotLft + props[8] = bbox.top; // plotTop + props[9] = bbox.width; // plotWid + props[10] = bbox.height; // plotHgt + + return props; +} + +function clipGaps(gaps, ori, plotLft, plotTop, plotWid, plotHgt) { + let clip = null; + + // create clip path (invert gaps and non-gaps) + if (gaps.length > 0) { + clip = new Path2D(); + + if (ori == 1) { + let prevGapEnd = plotLft; + + for (let i = 0; i < gaps.length; i++) { + let g = gaps[i]; + + clip.rect(prevGapEnd, plotTop, g[0] - prevGapEnd, plotTop + plotHgt); + + prevGapEnd = g[1]; + } + + clip.rect(prevGapEnd, plotTop, plotLft + plotWid - prevGapEnd, plotTop + plotHgt); + } + } + + return clip; +} + +function addGap(gaps, fromX, toX) { + if (toX > fromX) { + let prevGap = gaps[gaps.length - 1]; + + if (prevGap && prevGap[0] == fromX) // TODO: gaps must be encoded at stroke widths? + prevGap[1] = toX; + else + gaps.push([fromX, toX]); + } +} + +let dir = 1; + +function drawAcc(stroke, accX, minY, maxY, outY) { + stroke.lineTo(accX, minY); + stroke.lineTo(accX, maxY); + stroke.lineTo(accX, outY); +} + +function linear() { + return (u, seriesIdx, idx0, idx1) => { + const [ + series, + dataX, + dataY, + scaleX, + scaleY, + valToPosX, + valToPosY, + plotLft, + plotTop, + plotWid, + plotHgt, + ] = aliasProps(u, seriesIdx); + + const isGap = series.isGap; + + const _paths = dir == 1 ? {stroke: new Path2D(), fill: null, clip: null} : u.series[seriesIdx - 1]._paths; + const stroke = _paths.stroke; + const width = roundDec(series.width * pxRatio, 3); + + let minY = inf, + maxY = -inf, + outY, outX, drawnAtX; + + // todo: don't build gaps on dir = -1 pass + let gaps = []; + + let accX = round(valToPosX(dataX[dir == 1 ? idx0 : idx1], scaleX, plotWid, plotLft)); + let accGaps = false; + + // data edges + let lftIdx = nonNullIdx(dataY, idx0, idx1, 1); + let rgtIdx = nonNullIdx(dataY, idx0, idx1, -1); + let lftX = incrRound(valToPosX(dataX[lftIdx], scaleX, plotWid, plotLft), 0.5); + let rgtX = incrRound(valToPosX(dataX[rgtIdx], scaleX, plotWid, plotLft), 0.5); + + if (lftX > plotLft) + addGap(gaps, plotLft, lftX); + + // the moves the shape edge outside the canvas so stroke doesnt bleed in + if (series.band && dir == 1) + stroke.lineTo(lftX - width * 2, round(valToPosY(dataY[idx0], scaleY, plotHgt, plotTop))); + + for (let i = dir == 1 ? idx0 : idx1; i >= idx0 && i <= idx1; i += dir) { + let x = round(valToPosX(dataX[i], scaleX, plotWid, plotLft)); + + if (x == accX) { + if (dataY[i] != null) { + outY = round(valToPosY(dataY[i], scaleY, plotHgt, plotTop)); + + if (minY == inf) + stroke.lineTo(x, outY); + + minY = min(outY, minY); + maxY = max(outY, maxY); + } + else if (!accGaps && isGap(u, seriesIdx, i)) + accGaps = true; + } + else { + let _addGap = false; + + if (minY != inf) { + drawAcc(stroke, accX, minY, maxY, outY); + outX = drawnAtX = accX; + } + else if (accGaps) { + _addGap = true; + accGaps = false; + } + + if (dataY[i] != null) { + outY = round(valToPosY(dataY[i], scaleY, plotHgt, plotTop)); + stroke.lineTo(x, outY); + minY = maxY = outY; + + // prior pixel can have data but still start a gap if ends with null + if (x - accX > 1 && dataY[i - 1] == null && isGap(u, seriesIdx, i - 1)) + _addGap = true; + } + else { + minY = inf; + maxY = -inf; + + if (!accGaps && isGap(u, seriesIdx, i)) + accGaps = true; + } + + _addGap && addGap(gaps, outX, x); + + accX = x; + } + } + + if (minY != inf && minY != maxY && drawnAtX != accX) + drawAcc(stroke, accX, minY, maxY, outY); + + if (rgtX < plotLft + plotWid) + addGap(gaps, rgtX, plotLft + plotWid); + + if (series.band) { + let _x, _iy, _data = u._data, dataY2; + + // the moves the shape edge outside the canvas so stroke doesnt bleed in + if (dir == 1) { + _x = rgtX + width * 2; + _iy = rgtIdx; + dataY2 = _data[seriesIdx + 1]; + } + else { + _x = lftX - width * 2; + _iy = lftIdx; + dataY2 = _data[seriesIdx - 1]; + } + + stroke.lineTo(_x, round(valToPosY(dataY[_iy], scaleY, plotHgt, plotTop))); + stroke.lineTo(_x, round(valToPosY(dataY2[_iy], scaleY, plotHgt, plotTop))); + } + + if (dir == 1) { + if (!series.spanGaps) + _paths.clip = clipGaps(gaps, 1, plotLft, plotTop, plotWid, plotHgt); + + if (series.fill != null) { + let fill = _paths.fill = new Path2D(stroke); + + let fillTo = round(valToPosY(series.fillTo(u, seriesIdx, series.min, series.max), scaleY, plotHgt, plotTop)); + fill.lineTo(rgtX, fillTo); + fill.lineTo(lftX, fillTo); + } + } + + if (series.band) + dir *= -1; + + return _paths; + }; +} + +function spline(opts) { + return (u, seriesIdx, idx0, idx1) => { + const [ + series, + dataX, + dataY, + scaleX, + scaleY, + valToPosX, + valToPosY, + plotLft, + plotTop, + plotWid, + plotHgt, + ] = aliasProps(u, seriesIdx); + + idx0 = nonNullIdx(dataY, idx0, idx1, 1); + idx1 = nonNullIdx(dataY, idx0, idx1, -1); + + let gaps = []; + let inGap = false; + let firstXPos = round(valToPosX(dataX[idx0], scaleX, plotWid, plotLft)); + let prevXPos = firstXPos; + + let xCoords = []; + let yCoords = []; + + for (let i = idx0; i <= idx1; i++) { + let yVal = dataY[i]; + let xVal = dataX[i]; + let xPos = valToPosX(xVal, scaleX, plotWid, plotLft); + + if (yVal == null) { + if (series.isGap(u, seriesIdx, i)) { + addGap(gaps, prevXPos, xPos); + inGap = true; + } + continue; + } + else { + if (inGap) { + addGap(gaps, prevXPos, xPos); + inGap = false; + } + + xCoords.push((prevXPos = xPos)); + yCoords.push(valToPosY(dataY[i], scaleY, plotHgt, plotTop)); + } + } + + const stroke = catmullRomFitting(xCoords, yCoords, 0.5); + + const fill = new Path2D(stroke); + + let fillTo = series.fillTo(u, seriesIdx, series.min, series.max); + + let minY = round(valToPosY(fillTo, scaleY, plotHgt, plotTop)); + + fill.lineTo(prevXPos, minY); + fill.lineTo(firstXPos, minY); + + let clip = !series.spanGaps ? clipGaps(gaps, 1, plotLft, plotTop, plotWid, plotHgt) : null; + + return { + stroke, + fill, + clip, + }; + + // if FEAT_PATHS: false in rollup.config.js + // u.ctx.save(); + // u.ctx.beginPath(); + // u.ctx.rect(u.bbox.left, u.bbox.top, u.bbox.width, u.bbox.height); + // u.ctx.clip(); + // u.ctx.strokeStyle = u.series[sidx].stroke; + // u.ctx.stroke(stroke); + // u.ctx.fillStyle = u.series[sidx].fill; + // u.ctx.fill(fill); + // u.ctx.restore(); + // return null; + }; +} + +// adapted from https://gist.github.com/nicholaswmin/c2661eb11cad5671d816 (MIT) +/** + * Interpolates a Catmull-Rom Spline through a series of x/y points + * Converts the CR Spline to Cubic Beziers for use with SVG items + * + * If 'alpha' is 0.5 then the 'Centripetal' variant is used + * If 'alpha' is 1 then the 'Chordal' variant is used + * + */ +function catmullRomFitting(xCoords, yCoords, alpha) { + const path = new Path2D(); + + const dataLen = xCoords.length; + + let p0x, + p0y, + p1x, + p1y, + p2x, + p2y, + p3x, + p3y, + bp1x, + bp1y, + bp2x, + bp2y, + d1, + d2, + d3, + A, + B, + N, + M, + d3powA, + d2powA, + d3pow2A, + d2pow2A, + d1pow2A, + d1powA; + + path.moveTo(round(xCoords[0]), round(yCoords[0])); + + for (let i = 0; i < dataLen - 1; i++) { + let p0i = i == 0 ? 0 : i - 1; + + p0x = xCoords[p0i]; + p0y = yCoords[p0i]; + + p1x = xCoords[i]; + p1y = yCoords[i]; + + p2x = xCoords[i + 1]; + p2y = yCoords[i + 1]; + + if (i + 2 < dataLen) { + p3x = xCoords[i + 2]; + p3y = yCoords[i + 2]; + } else { + p3x = p2x; + p3y = p2y; + } + + d1 = sqrt(pow(p0x - p1x, 2) + pow(p0y - p1y, 2)); + d2 = sqrt(pow(p1x - p2x, 2) + pow(p1y - p2y, 2)); + d3 = sqrt(pow(p2x - p3x, 2) + pow(p2y - p3y, 2)); + + // Catmull-Rom to Cubic Bezier conversion matrix + + // A = 2d1^2a + 3d1^a * d2^a + d3^2a + // B = 2d3^2a + 3d3^a * d2^a + d2^2a + + // [ 0 1 0 0 ] + // [ -d2^2a /N A/N d1^2a /N 0 ] + // [ 0 d3^2a /M B/M -d2^2a /M ] + // [ 0 0 1 0 ] + + d3powA = pow(d3, alpha); + d3pow2A = pow(d3, alpha * 2); + d2powA = pow(d2, alpha); + d2pow2A = pow(d2, alpha * 2); + d1powA = pow(d1, alpha); + d1pow2A = pow(d1, alpha * 2); + + A = 2 * d1pow2A + 3 * d1powA * d2powA + d2pow2A; + B = 2 * d3pow2A + 3 * d3powA * d2powA + d2pow2A; + N = 3 * d1powA * (d1powA + d2powA); + + if (N > 0) + N = 1 / N; + + M = 3 * d3powA * (d3powA + d2powA); + + if (M > 0) + M = 1 / M; + + bp1x = (-d2pow2A * p0x + A * p1x + d1pow2A * p2x) * N; + bp1y = (-d2pow2A * p0y + A * p1y + d1pow2A * p2y) * N; + + bp2x = (d3pow2A * p1x + B * p2x - d2pow2A * p3x) * M; + bp2y = (d3pow2A * p1y + B * p2y - d2pow2A * p3y) * M; + + if (bp1x == 0 && bp1y == 0) { + bp1x = p1x; + bp1y = p1y; + } + + if (bp2x == 0 && bp2y == 0) { + bp2x = p2x; + bp2y = p2y; + } + + path.bezierCurveTo(bp1x, bp1y, bp2x, bp2y, p2x, p2y); + } + + return path; +} + +function stepped(opts) { + const align = ifNull(opts.align, 1); + + return (u, seriesIdx, idx0, idx1) => { + const [ + series, + dataX, + dataY, + scaleX, + scaleY, + valToPosX, + valToPosY, + plotLft, + plotTop, + plotWid, + plotHgt, + ] = aliasProps(u, seriesIdx); + + const stroke = new Path2D(); + + idx0 = nonNullIdx(dataY, idx0, idx1, 1); + idx1 = nonNullIdx(dataY, idx0, idx1, -1); + + let gaps = []; + let inGap = false; + let prevYPos = round(valToPosY(dataY[idx0], scaleY, plotHgt, plotTop)); + let firstXPos = round(valToPosX(dataX[idx0], scaleX, plotWid, plotLft)); + let prevXPos = firstXPos; + + stroke.moveTo(firstXPos, prevYPos); + + for (let i = idx0 + 1; i <= idx1; i++) { + let yVal1 = dataY[i]; + + let x1 = round(valToPosX(dataX[i], scaleX, plotWid, plotLft)); + + if (yVal1 == null) { + if (series.isGap(u, seriesIdx, i)) { + addGap(gaps, prevXPos, x1); + inGap = true; + } + continue; + } + + let y1 = round(valToPosY(yVal1, scaleY, plotHgt, plotTop)); + + if (inGap) { + addGap(gaps, prevXPos, x1); + + // don't clip vertical extenders + if (prevYPos != y1) { + let halfStroke = (series.width * pxRatio) / 2; + + let lastGap = gaps[gaps.length - 1]; + lastGap[0] += halfStroke; + lastGap[1] -= halfStroke; + } + + inGap = false; + } + + if (align == 1) + stroke.lineTo(x1, prevYPos); + else + stroke.lineTo(prevXPos, y1); + + stroke.lineTo(x1, y1); + + prevYPos = y1; + prevXPos = x1; + } + + const fill = new Path2D(stroke); + + let fillTo = series.fillTo(u, seriesIdx, series.min, series.max); + + let minY = round(valToPosY(fillTo, scaleY, plotHgt, plotTop)); + + fill.lineTo(prevXPos, minY); + fill.lineTo(firstXPos, minY); + + let clip = !series.spanGaps ? clipGaps(gaps, 1, plotLft, plotTop, plotWid, plotHgt) : null; + + return { + stroke, + fill, + clip, + }; + }; +} + +function bars(opts) { + opts = opts || EMPTY_OBJ; + const size = ifNull(opts.size, [0.6, inf]); + + const gapFactor = 1 - size[0]; + const maxWidth = ifNull(size[1], inf) * pxRatio; + + return (u, seriesIdx, idx0, idx1) => { + const [ + series, + dataX, + dataY, + scaleX, + scaleY, + valToPosX, + valToPosY, + plotLft, + plotTop, + plotWid, + plotHgt, + ] = aliasProps(u, seriesIdx); + + let colWid = valToPosX(dataX[1], scaleX, plotWid, plotLft) - valToPosX(dataX[0], scaleX, plotWid, plotLft); + + let gapWid = colWid * gapFactor; + + let fillToY = series.fillTo(u, seriesIdx, series.min, series.max); + + let y0Pos = valToPosY(fillToY, scaleY, plotHgt, plotTop); + + let strokeWidth = round(series.width * pxRatio); + + let barWid = round(min(maxWidth, colWid - gapWid) - strokeWidth); + + let stroke = new Path2D(); + + for (let i = idx0; i <= idx1; i++) { + let yVal = dataY[i]; + + if (yVal == null) + continue; + + let xVal = scaleX.distr == 2 ? i : dataX[i]; + + // TODO: all xPos can be pre-computed once for all series in aligned set + let xPos = valToPosX(xVal, scaleX, plotWid, plotLft); + let yPos = valToPosY(yVal, scaleY, plotHgt, plotTop); + + let lft = round(xPos - barWid / 2); + let btm = round(max(yPos, y0Pos)); + let top = round(min(yPos, y0Pos)); + let barHgt = btm - top; + + stroke.rect(lft, top, barWid, barHgt); + } + + let fill = series.fill != null ? new Path2D(stroke) : undefined; + + return { + stroke, + fill, + }; + }; +} + +const linearPath = linear() ; + function setDefaults(d, xo, yo, initY) { let d2 = initY ? [d[0], d[1]].concat(d.slice(2)) : [d[0]].concat(d.slice(1)); return d2.map((o, i) => setDefault(o, i, xo, yo)); @@ -1154,24 +1913,6 @@ function setDefault(o, i, xo, yo) { return assign({}, (i == 0 || o && o.side % 2 == 0 ? xo : yo), o); } -function getValPct(val, scale) { - return ( - scale.distr == 3 - ? log10(val / scale.min) / log10(scale.max / scale.min) - : (val - scale.min) / (scale.max - scale.min) - ); -} - -function getYPos(val, scale, hgt, top) { - let pctY = getValPct(val, scale); - return top + (1 - pctY) * hgt; -} - -function getXPos(val, scale, wid, lft) { - let pctX = getValPct(val, scale); - return lft + pctX * wid; -} - const nullMinMax = [null, null]; function snapNumX(self, dataMin, dataMax) { @@ -1219,6 +1960,27 @@ function pxRatioFont(font) { function uPlot(opts, data, then) { const self = {}; + function getValPct(val, scale) { + return ( + scale.distr == 3 + ? log10((val > 0 ? val : scale.clamp(self, val, scale.min, scale.max, scale.key)) / scale.min) / log10(scale.max / scale.min) + : (val - scale.min) / (scale.max - scale.min) + ); + } + + function getXPos(val, scale, wid, lft) { + let pctX = getValPct(val, scale); + return lft + pctX * wid; + } + + function getYPos(val, scale, hgt, top) { + let pctY = getValPct(val, scale); + return top + (1 - pctY) * hgt; + } + + self.valToPosX = getXPos; + self.valToPosY = getYPos; + let ready = false; self.status = 0; @@ -1257,6 +2019,13 @@ function uPlot(opts, data, then) { const xScaleKey = series[0].scale; + const drawOrderMap = { + axes: drawAxesGrid, + series: drawSeries, + }; + + const drawOrder = (opts.drawOrder || ["axes", "series"]).map(key => drawOrderMap[key]); + function initScale(scaleKey) { let sc = scales[scaleKey]; @@ -1272,6 +2041,8 @@ function uPlot(opts, data, then) { else { sc = scales[scaleKey] = assign({}, (scaleKey == xScaleKey ? xScaleOpts : yScaleOpts), scaleOpts); + sc.key = scaleKey; + let isTime = sc.time; let isLog = sc.distr == 3; @@ -1286,6 +2057,8 @@ function uPlot(opts, data, then) { sc.range = fnOrSelf(rn || (isTime ? snapTimeX : scaleKey == xScaleKey ? (isLog ? snapLogX : snapNumX) : (isLog ? snapLogY : snapNumY))); sc.auto = fnOrSelf(sc.auto); + + sc.clamp = fnOrSelf(sc.clamp || clampScale); } } } @@ -1312,18 +2085,6 @@ function uPlot(opts, data, then) { pendScales[k] = {min: sc.min, max: sc.max}; } - const gutters = self.gutters = assign({ - x: round(yAxisOpts.size / 2), - y: round(xAxisOpts.size / 3), - _x: null, - _y: null, - }, opts.gutters); - - gutters.x = fnOrSelf(gutters.x); - gutters.y = fnOrSelf(gutters.y); - gutters._x = gutters.x(self); - gutters._y = gutters.y(self); - // self.tz = opts.tz || Intl.DateTimeFormat().resolvedOptions().timeZone; const _tzDate = (opts.tzDate || (ts => new Date(ts / ms))); const _fmtDate = (opts.fmtDate || fmtDate); @@ -1335,6 +2096,11 @@ function uPlot(opts, data, then) { const legend = assign({show: true, live: true}, opts.legend); const showLegend = legend.show; + { + legend.stroke = fnOrSelf(legend.stroke || legendStroke); + legend.fill = fnOrSelf(legend.fill || legendFill); + } + let legendEl; let legendRows = []; let legendCols; @@ -1377,8 +2143,11 @@ function uPlot(opts, data, then) { let label = placeTag("th", null, row); let indic = placeDiv(LEGEND_MARKER, label); - indic.style.borderColor = s.width ? s.stroke : i > 0 && s.points.width ? s.points.stroke : null; - indic.style.backgroundColor = s.fill || null; + + if (i > 0) { + indic.style.borderColor = legend.stroke(self, i); + indic.style.backgroundColor = legend.fill(self, i); + } let text = placeDiv(LEGEND_LABEL, label); text.textContent = s.label; @@ -1476,10 +2245,10 @@ function uPlot(opts, data, then) { let bb = self.bbox; - plotLft = bb[LEFT] = incrRound(plotLftCss * pxRatio, 0.5); - plotTop = bb[TOP] = incrRound(plotTopCss * pxRatio, 0.5); - plotWid = bb[WIDTH] = incrRound(plotWidCss * pxRatio, 0.5); - plotHgt = bb[HEIGHT] = incrRound(plotHgtCss * pxRatio, 0.5); + plotLft = bb.left = incrRound(plotLftCss * pxRatio, 0.5); + plotTop = bb.top = incrRound(plotTopCss * pxRatio, 0.5); + plotWid = bb.width = incrRound(plotWidCss * pxRatio, 0.5); + plotHgt = bb.height = incrRound(plotHgtCss * pxRatio, 0.5); } function convergeSize() { @@ -1491,9 +2260,9 @@ function uPlot(opts, data, then) { cycleNum++; let axesConverged = axesCalc(cycleNum); - let guttersConverged = guttersCalc(cycleNum); + let paddingConverged = paddingCalc(cycleNum); - converged = axesConverged && guttersConverged; + converged = axesConverged && paddingConverged; if (!converged) { calcSize(self.width, self.height); @@ -1549,25 +2318,18 @@ function uPlot(opts, data, then) { } }); - // hz gutters - if (hasTopAxis || hasBtmAxis) { - if (!hasRgtAxis) - plotWidCss -= gutters._x; - if (!hasLftAxis) { - plotWidCss -= gutters._x; - plotLftCss += gutters._x; - } - } + sidesWithAxes[0] = hasTopAxis; + sidesWithAxes[1] = hasRgtAxis; + sidesWithAxes[2] = hasBtmAxis; + sidesWithAxes[3] = hasLftAxis; - // vt gutters - if (hasLftAxis || hasRgtAxis) { - if (!hasBtmAxis) - plotHgtCss -= gutters._y; - if (!hasTopAxis) { - plotHgtCss -= gutters._y; - plotTopCss += gutters._y; - } - } + // hz padding + plotWidCss -= _padding[1] + _padding[3]; + plotLftCss += _padding[3]; + + // vt padding + plotHgtCss -= _padding[2] + _padding[0]; + plotTopCss += _padding[0]; } function calcAxesRects() { @@ -1602,8 +2364,17 @@ function uPlot(opts, data, then) { const cursor = (self.cursor = assign({}, cursorOpts, opts.cursor)); - (cursor._lock = false); - (cursor.points.show = fnOrSelf(cursor.points.show)); + { + cursor._lock = false; + + let points = cursor.points; + + points.show = fnOrSelf(points.show); + points.size = fnOrSelf(points.size); + points.stroke = fnOrSelf(points.stroke); + points.width = fnOrSelf(points.width); + points.fill = fnOrSelf(points.fill); + } const focus = self.focus = assign({}, opts.focus || {alpha: 0.3}, cursor.focus); const cursorFocus = focus.prox >= 0; @@ -1634,18 +2405,26 @@ function uPlot(opts, data, then) { s.label = s.label || (isTime ? timeSeriesLabel : numSeriesLabel); if (i > 0) { - s.width = s.width == null ? 1 : s.width; - s.paths = s.paths || ( buildPaths); - s.fillTo = s.fillTo || seriesFillTo; + s.width = s.width == null ? 1 : s.width; + s.paths = s.paths || linearPath || retNull; + s.fillTo = fnOrSelf(s.fillTo || seriesFillTo); + + s.stroke = fnOrSelf(s.stroke || hexBlack); + s.fill = fnOrSelf(s.fill || null); + s._stroke = s._fill = s._paths = null; + let _ptDia = ptDia(s.width, 1); - s.points = assign({}, { + let points = s.points = assign({}, { size: _ptDia, width: max(1, _ptDia * .2), stroke: s.stroke, space: _ptDia * 2, + _stroke: null, + _fill: null, }, s.points); - s.points.show = fnOrSelf(s.points.show); - s._paths = null; + points.show = fnOrSelf(points.show); + points.fill = fnOrSelf(points.fill); + points.stroke = fnOrSelf(points.stroke); } if (showLegend) @@ -1679,6 +2458,8 @@ function uPlot(opts, data, then) { series.forEach(initSeries); + const sidesWithAxes = [false, false, false, false]; + function initAxis(axis, i) { axis._show = axis.show; @@ -1726,14 +2507,33 @@ function uPlot(opts, data, then) { axis._found = // foundIncrSpace axis._splits = axis._values = null; + + if (axis._size > 0) + sidesWithAxes[i] = true; } } // set axis defaults axes.forEach(initAxis); + function autoPadSide(self, side, sidesWithAxes, cycleNum) { + let [hasTopAxis, hasRgtAxis, hasBtmAxis, hasLftAxis] = sidesWithAxes; + + let ori = side % 2; + let size = 0; + + if (ori == 0 && (hasLftAxis || hasRgtAxis)) + size = (side == 0 && !hasTopAxis || side == 2 && !hasBtmAxis ? round(xAxisOpts.size / 3) : 0); + if (ori == 1 && (hasTopAxis || hasBtmAxis)) + size = (side == 1 && !hasRgtAxis || side == 3 && !hasLftAxis ? round(yAxisOpts.size / 2) : 0); + + return size; + } + + const padding = self.padding = (opts.padding || [autoPadSide,autoPadSide,autoPadSide,autoPadSide]).map(p => fnOrSelf(ifNull(p, autoPadSide))); + const _padding = self._padding = padding.map((p, i) => p(self, i, sidesWithAxes, 0)); + let dataLen; - let dataIsGap; // rendered data window let i0 = null; @@ -1746,7 +2546,7 @@ function uPlot(opts, data, then) { function setData(_data, _resetScales) { if (!isArr(_data) && isObj(_data)) { - dataIsGap = _data.isGap; + _data.isGap && series.forEach(s => { s.isGap = _data.isGap; }); _data = _data.data; } @@ -1761,6 +2561,8 @@ function uPlot(opts, data, then) { if (xScaleDistr == 2) data[0] = data0.map((v, i) => i); + self._data = data; + resetYSeries(true); fire("setData"); @@ -1812,8 +2614,6 @@ function uPlot(opts, data, then) { } _setScale(xScaleKey, _min, _max); - - viaAutoScaleX = false; } function setCtxStyle(stroke, width, dash, fill) { @@ -1881,7 +2681,7 @@ function uPlot(opts, data, then) { } else if (s.show && s.auto && wsc.auto(self, viaAutoScaleX) && (psc == null || psc.min == null)) { // only run getMinMax() for invalidated series data, else reuse - let minMax = s.min == null ? getMinMax(data[i], i0, i1, s.sorted) : [s.min, s.max]; + let minMax = s.min == null ? (wsc.distr == 3 ? getMinMaxLog(data[i], i0, i1) : getMinMax(data[i], i0, i1, s.sorted)) : [s.min, s.max]; // initial min/max wsc.min = min(wsc.min, s.min = minMax[0]); @@ -1998,11 +2798,14 @@ function uPlot(opts, data, then) { } } + const _stroke = p._stroke = p.stroke(self, si); + const _fill = p._fill = p.fill(self, si); + setCtxStyle( - p.stroke, + _stroke, width, - null, - p.fill || (isStroked ? "#fff" : s.stroke), + p.dash, + _fill || (isStroked ? "#fff" : s._stroke), ); ctx.fill(path); @@ -2032,25 +2835,27 @@ function uPlot(opts, data, then) { let dir = 1; function drawSeries() { - // path building loop must be before draw loop to ensure that all bands are fully constructed - series.forEach((s, i) => { - if (i > 0 && s.show && s._paths == null) { - let _idxs = getOuterIdxs(data[i]); - s._paths = s.paths(self, i, _idxs[0], _idxs[1]); - } - }); + if (dataLen > 0) { + // path building loop must be before draw loop to ensure that all bands are fully constructed + series.forEach((s, i) => { + if (i > 0 && s.show && s._paths == null) { + let _idxs = getOuterIdxs(data[i]); + s._paths = s.paths(self, i, _idxs[0], _idxs[1]); + } + }); - series.forEach((s, i) => { - if (i > 0 && s.show) { - if (s._paths) - drawPath(i); + series.forEach((s, i) => { + if (i > 0 && s.show) { + if (s._paths) + drawPath(i); - if (s.points.show(self, i, i0, i1)) - drawPoints(i); + if (s.points.show(self, i, i0, i1)) + drawPoints(i); - fire("drawSeries", i); - } - }); + fire("drawSeries", i); + } + }); + } } function drawPath(si) { @@ -2058,10 +2863,13 @@ function uPlot(opts, data, then) { if (dir == 1) { const { stroke, fill, clip } = s._paths; - const width = roundDec(s[WIDTH] * pxRatio, 3); + const width = roundDec(s.width * pxRatio, 3); const offset = (width % 2) / 2; - setCtxStyle(s.stroke, width, s.dash, s.fill); + const _stroke = s._stroke = s.stroke(self, si); + const _fill = s._fill = s.fill(self, si); + + setCtxStyle(_stroke, width, s.dash, _fill); ctx.globalAlpha = s.alpha; @@ -2096,10 +2904,10 @@ function uPlot(opts, data, then) { width && ctx.stroke(stroke); } else { - width && ctx.stroke(stroke); - - if (s.fill != null) + if (_fill != null) ctx.fill(fill); + + width && ctx.stroke(stroke); } ctx.restore(); @@ -2113,178 +2921,6 @@ function uPlot(opts, data, then) { dir *= -1; } - function buildClip(is, gaps, nullHead, nullTail) { - let s = series[is]; - - let clip = null; - - // create clip path (invert gaps and non-gaps) - if (gaps.length > 0 && !s.spanGaps) { - clip = new Path2D(); - - let prevGapEnd = plotLft; - - for (let i = 0; i < gaps.length; i++) { - let g = gaps[i]; - - clip.rect(prevGapEnd, plotTop, g[0] - prevGapEnd, plotTop + plotHgt); - - prevGapEnd = g[1]; - } - - clip.rect(prevGapEnd, plotTop, plotLft + plotWid - prevGapEnd, plotTop + plotHgt); - } - - return clip; - } - - function addGap(gaps, fromX, toX) { - if (toX > fromX) { - let prevGap = gaps[gaps.length - 1]; - - if (prevGap && prevGap[0] == fromX) // TODO: gaps must be encoded at stroke widths? - prevGap[1] = toX; - else - gaps.push([fromX, toX]); - } - } - - function nonNullIdx(data, _i0, _i1, dir) { - for (let i = dir == 1 ? _i0 : _i1; i >= _i0 && i <= _i1; i += dir) { - if (data[i] != null) - return i; - } - - return -1; - } - - function buildPaths(self, is, _i0, _i1) { - const s = series[is]; - const isGap = dataIsGap || s.isGap; - - const xdata = data[0]; - const ydata = data[is]; - const scaleX = scales[xScaleKey]; - const scaleY = scales[s.scale]; - - const _paths = dir == 1 ? {stroke: new Path2D(), fill: null, clip: null} : series[is-1]._paths; - const stroke = _paths.stroke; - const width = roundDec(s[WIDTH] * pxRatio, 3); - - let minY = inf, - maxY = -inf, - outY, outX; - - // todo: don't build gaps on dir = -1 pass - let gaps = []; - - let accX = round(getXPos(xdata[dir == 1 ? _i0 : _i1], scaleX, plotWid, plotLft)); - let accGaps = false; - - // data edges - let lftIdx = nonNullIdx(ydata, _i0, _i1, 1); - let rgtIdx = nonNullIdx(ydata, _i0, _i1, -1); - let lftX = incrRound(getXPos(xdata[lftIdx], scaleX, plotWid, plotLft), 0.5); - let rgtX = incrRound(getXPos(xdata[rgtIdx], scaleX, plotWid, plotLft), 0.5); - - if (lftX > plotLft) - addGap(gaps, plotLft, lftX); - - // the moves the shape edge outside the canvas so stroke doesnt bleed in - if (s.band && dir == 1) - stroke.lineTo(lftX - width * 2, round(getYPos(ydata[_i0], scaleY, plotHgt, plotTop))); - - for (let i = dir == 1 ? _i0 : _i1; i >= _i0 && i <= _i1; i += dir) { - let x = round(getXPos(xdata[i], scaleX, plotWid, plotLft)); - - if (x == accX) { - if (ydata[i] != null) { - outY = round(getYPos(ydata[i], scaleY, plotHgt, plotTop)); - minY = min(outY, minY); - maxY = max(outY, maxY); - } - else if (!accGaps && isGap(self, is, i)) - accGaps = true; - } - else { - let _addGap = false; - - if (minY != inf) { - stroke.lineTo(accX, minY); - stroke.lineTo(accX, maxY); - stroke.lineTo(accX, outY); - outX = accX; - } - else if (accGaps) { - _addGap = true; - accGaps = false; - } - - if (ydata[i] != null) { - outY = round(getYPos(ydata[i], scaleY, plotHgt, plotTop)); - stroke.lineTo(x, outY); - minY = maxY = outY; - - // prior pixel can have data but still start a gap if ends with null - if (x - accX > 1 && ydata[i-1] == null && isGap(self, is, i-1)) - _addGap = true; - } - else { - minY = inf; - maxY = -inf; - - if (!accGaps && isGap(self, is, i)) - accGaps = true; - } - - _addGap && addGap(gaps, outX, x); - - accX = x; - } - } - - if (rgtX < plotLft + plotWid) - addGap(gaps, rgtX, plotLft + plotWid); - - if (s.band) { - let _x, _iy, ydata2; - - // the moves the shape edge outside the canvas so stroke doesnt bleed in - if (dir == 1) { - _x = rgtX + width * 2; - _iy = rgtIdx; - ydata2 = data[is + 1]; - } - else { - _x = lftX - width * 2; - _iy = lftIdx; - ydata2 = data[is - 1]; - } - - stroke.lineTo(_x, round(getYPos(ydata[_iy], scaleY, plotHgt, plotTop))); - stroke.lineTo(_x, round(getYPos(ydata2[_iy], scaleY, plotHgt, plotTop))); - } - - if (dir == 1) { - _paths.clip = buildClip(is, gaps, ydata[_i0] == null, ydata[_i1] == null); - - if (s.fill != null) { - let fill = _paths.fill = new Path2D(stroke); - - let fillTo = round(getYPos(s.fillTo(self, is, s.min, s.max), scaleY, plotHgt, plotTop)); - fill.lineTo(rgtX, fillTo); - fill.lineTo(lftX, fillTo); - } - } - - if (s.band) - dir *= -1; - - return _paths; - } - - self.paths = buildPaths; - function getIncrSpace(axisIdx, min, max, fullDim) { let axis = axes[axisIdx]; @@ -2402,16 +3038,17 @@ function uPlot(opts, data, then) { return converged; } - function guttersCalc(cycleNum) { + function paddingCalc(cycleNum) { let converged = true; - let {_x, _y} = gutters; + padding.forEach((p, i) => { + let _p = p(self, i, sidesWithAxes, cycleNum); - gutters._x = ceil(gutters.x(self, cycleNum)); - gutters._y = ceil(gutters.y(self, cycleNum)); + if (_p != _padding[i]) + converged = false; - if (gutters._x != _x || gutters._y != _y) - converged = false; + _padding[i] = _p; + }); return converged; } @@ -2528,7 +3165,7 @@ function uPlot(opts, data, then) { side, basePos, tickSize, - roundDec(ticks[WIDTH] * pxRatio, 3), + roundDec(ticks.width * pxRatio, 3), ticks.stroke, ); } @@ -2544,7 +3181,7 @@ function uPlot(opts, data, then) { ori == 0 ? 2 : 1, ori == 0 ? plotTop : plotLft, ori == 0 ? plotHgt : plotWid, - roundDec(grid[WIDTH] * pxRatio, 3), + roundDec(grid.width * pxRatio, 3), grid.stroke, grid.dash, ); @@ -2606,8 +3243,8 @@ function uPlot(opts, data, then) { setStylePx(wrap, WIDTH, fullWidCss); setStylePx(wrap, HEIGHT, fullHgtCss); - can[WIDTH] = round(fullWidCss * pxRatio); - can[HEIGHT] = round(fullHgtCss * pxRatio); + can.width = round(fullWidCss * pxRatio); + can.height = round(fullHgtCss * pxRatio); syncRect(); @@ -2618,10 +3255,10 @@ function uPlot(opts, data, then) { // if (shouldSetSelect) { // TODO: update .u-select metrics (if visible) - // setStylePx(selectDiv, TOP, select[TOP] = 0); - // setStylePx(selectDiv, LEFT, select[LEFT] = 0); - // setStylePx(selectDiv, WIDTH, select[WIDTH] = 0); - // setStylePx(selectDiv, HEIGHT, select[HEIGHT] = 0); + // setStylePx(selectDiv, TOP, select.top = 0); + // setStylePx(selectDiv, LEFT, select.left = 0); + // setStylePx(selectDiv, WIDTH, select.width = 0); + // setStylePx(selectDiv, HEIGHT, select.height = 0); // shouldSetSelect = false; // } @@ -2630,13 +3267,12 @@ function uPlot(opts, data, then) { shouldSetCursor = false; } - // if (true && legend.show && legend.live && shouldSetLegend) {} + // if (FEAT_LEGEND && legend.show && legend.live && shouldSetLegend) {} if (fullWidCss > 0 && fullHgtCss > 0) { - ctx.clearRect(0, 0, can[WIDTH], can[HEIGHT]); + ctx.clearRect(0, 0, can.width, can.height); fire("drawClear"); - drawAxesGrid(); - dataLen > 0 && drawSeries(); + drawOrder.forEach(fn => fn()); fire("draw"); } @@ -2647,6 +3283,8 @@ function uPlot(opts, data, then) { fire("ready"); } + viaAutoScaleX = false; + queuedCommit = false; } @@ -2946,7 +3584,7 @@ function uPlot(opts, data, then) { continue; for (let j = 0; j < legendRows[i].length; j++) - legendRows[i][j][firstChild].nodeValue = '--'; + legendRows[i][j].firstChild.nodeValue = '--'; } } @@ -2954,7 +3592,7 @@ function uPlot(opts, data, then) { setSeries(null, {focus: true}, syncOpts.setSeries); } else { - // let pctY = 1 - (y / rect[HEIGHT]); + // let pctY = 1 - (y / rect.height); let valAtPos = scaleValueAtPos(mouseLeft1, xScaleKey); @@ -2962,18 +3600,18 @@ function uPlot(opts, data, then) { let scX = scales[xScaleKey]; - let xPos = roundDec(getXPos(data[0][idx], scX, plotWidCss, 0), 3); + let xPos = incrRoundUp(getXPos(data[0][idx], scX, plotWidCss, 0), 0.5); for (let i = 0; i < series.length; i++) { let s = series[i]; let idx2 = cursor.dataIdx(self, i, idx, valAtPos); - let xPos2 = idx2 == idx ? xPos : roundDec(getXPos(data[0][idx2], scX, plotWidCss, 0), 3); + let xPos2 = idx2 == idx ? xPos : incrRoundUp(getXPos(data[0][idx2], scX, plotWidCss, 0), 0.5); if (i > 0 && s.show) { let valAtIdx = data[i][idx2]; - let yPos = valAtIdx == null ? -10 : roundDec(getYPos(valAtIdx, scales[s.scale], plotHgtCss, 0), 3); + let yPos = valAtIdx == null ? -10 : incrRoundUp(getYPos(valAtIdx, scales[s.scale], plotHgtCss, 0), 0.5); if (yPos > 0) { let dist = abs(yPos - mouseTop1); @@ -2998,7 +3636,7 @@ function uPlot(opts, data, then) { let j = 0; for (let k in vals) - legendRows[i][j++][firstChild].nodeValue = vals[k]; + legendRows[i][j++].firstChild.nodeValue = vals[k]; } } @@ -3017,35 +3655,35 @@ function uPlot(opts, data, then) { if (xKey) { let sc = scales[xKey]; - let srcLeft = src.posToVal(src.select[LEFT], xKey); - let srcRight = src.posToVal(src.select[LEFT] + src.select[WIDTH], xKey); + let srcLeft = src.posToVal(src.select.left, xKey); + let srcRight = src.posToVal(src.select.left + src.select.width, xKey); - select[LEFT] = getXPos(srcLeft, sc, plotWidCss, 0); - select[WIDTH] = abs(select[LEFT] - getXPos(srcRight, sc, plotWidCss, 0)); + select.left = getXPos(srcLeft, sc, plotWidCss, 0); + select.width = abs(select.left - getXPos(srcRight, sc, plotWidCss, 0)); - setStylePx(selectDiv, LEFT, select[LEFT]); - setStylePx(selectDiv, WIDTH, select[WIDTH]); + setStylePx(selectDiv, LEFT, select.left); + setStylePx(selectDiv, WIDTH, select.width); if (!yKey) { - setStylePx(selectDiv, TOP, select[TOP] = 0); - setStylePx(selectDiv, HEIGHT, select[HEIGHT] = plotHgtCss); + setStylePx(selectDiv, TOP, select.top = 0); + setStylePx(selectDiv, HEIGHT, select.height = plotHgtCss); } } if (yKey) { let sc = scales[yKey]; - let srcTop = src.posToVal(src.select[TOP], yKey); - let srcBottom = src.posToVal(src.select[TOP] + src.select[HEIGHT], yKey); + let srcTop = src.posToVal(src.select.top, yKey); + let srcBottom = src.posToVal(src.select.top + src.select.height, yKey); - select[TOP] = getYPos(srcTop, sc, plotHgtCss, 0); - select[HEIGHT] = abs(select[TOP] - getYPos(srcBottom, sc, plotHgtCss, 0)); + select.top = getYPos(srcTop, sc, plotHgtCss, 0); + select.height = abs(select.top - getYPos(srcBottom, sc, plotHgtCss, 0)); - setStylePx(selectDiv, TOP, select[TOP]); - setStylePx(selectDiv, HEIGHT, select[HEIGHT]); + setStylePx(selectDiv, TOP, select.top); + setStylePx(selectDiv, HEIGHT, select.height); if (!xKey) { - setStylePx(selectDiv, LEFT, select[LEFT] = 0); - setStylePx(selectDiv, WIDTH, select[WIDTH] = plotWidCss); + setStylePx(selectDiv, LEFT, select.left = 0); + setStylePx(selectDiv, WIDTH, select.width = plotWidCss); } } } @@ -3081,12 +3719,12 @@ function uPlot(opts, data, then) { let minX = min(mouseLeft0, mouseLeft1); let dx = abs(mouseLeft1 - mouseLeft0); - setStylePx(selectDiv, LEFT, select[LEFT] = minX); - setStylePx(selectDiv, WIDTH, select[WIDTH] = dx); + setStylePx(selectDiv, LEFT, select.left = minX); + setStylePx(selectDiv, WIDTH, select.width = dx); if (!dragY) { - setStylePx(selectDiv, TOP, select[TOP] = 0); - setStylePx(selectDiv, HEIGHT, select[HEIGHT] = plotHgtCss); + setStylePx(selectDiv, TOP, select.top = 0); + setStylePx(selectDiv, HEIGHT, select.height = plotHgtCss); } } @@ -3094,19 +3732,19 @@ function uPlot(opts, data, then) { let minY = min(mouseTop0, mouseTop1); let dy = abs(mouseTop1 - mouseTop0); - setStylePx(selectDiv, TOP, select[TOP] = minY); - setStylePx(selectDiv, HEIGHT, select[HEIGHT] = dy); + setStylePx(selectDiv, TOP, select.top = minY); + setStylePx(selectDiv, HEIGHT, select.height = dy); if (!dragX) { - setStylePx(selectDiv, LEFT, select[LEFT] = 0); - setStylePx(selectDiv, WIDTH, select[WIDTH] = plotWidCss); + setStylePx(selectDiv, LEFT, select.left = 0); + setStylePx(selectDiv, WIDTH, select.width = plotWidCss); } } if (!dragX && !dragY) { // the drag didn't pass the dist requirement - setStylePx(selectDiv, HEIGHT, select[HEIGHT] = 0); - setStylePx(selectDiv, WIDTH, select[WIDTH] = 0); + setStylePx(selectDiv, HEIGHT, select.height = 0); + setStylePx(selectDiv, WIDTH, select.width = 0); } } } @@ -3220,7 +3858,7 @@ function uPlot(opts, data, then) { cacheMouse(e, src, _x, _y, _w, _h, _i, false, true); - let hasSelect = select[WIDTH] > 0 || select[HEIGHT] > 0; + let hasSelect = select.width > 0 || select.height > 0; hasSelect && setSelect(select); @@ -3232,8 +3870,8 @@ function uPlot(opts, data, then) { if (dragX) { _setScale(xScaleKey, - scaleValueAtPos(select[LEFT], xScaleKey), - scaleValueAtPos(select[LEFT] + select[WIDTH], xScaleKey) + scaleValueAtPos(select.left, xScaleKey), + scaleValueAtPos(select.left + select.width, xScaleKey) ); } @@ -3243,8 +3881,8 @@ function uPlot(opts, data, then) { if (k != xScaleKey && sc.from == null && sc.min != inf) { _setScale(k, - scaleValueAtPos(select[TOP] + select[HEIGHT], k), - scaleValueAtPos(select[TOP], k) + scaleValueAtPos(select.top + select.height, k), + scaleValueAtPos(select.top, k) ); } } @@ -3333,10 +3971,10 @@ function uPlot(opts, data, then) { // internal pub/sub const events = {}; - events[mousedown] = mouseDown; - events[mousemove] = mouseMove; - events[mouseup] = mouseUp; - events[dblclick] = dblClick; + events.mousedown = mouseDown; + events.mousemove = mouseMove; + events.mouseup = mouseUp; + events.dblclick = dblClick; events["setSeries"] = (e, src, idx, opts) => { setSeries(idx, opts); }; @@ -3414,7 +4052,7 @@ function uPlot(opts, data, then) { else autoScaleX(); - _setSize(opts[WIDTH], opts[HEIGHT]); + _setSize(opts.width, opts.height); setSelect(select, false); } @@ -3438,9 +4076,25 @@ uPlot.fmtNum = fmtNum; uPlot.rangeNum = rangeNum; uPlot.rangeLog = rangeLog; +{ + uPlot.join = join; +} + { uPlot.fmtDate = fmtDate; uPlot.tzDate = tzDate; } +{ + uPlot.addGap = addGap; + uPlot.clipGaps = clipGaps; + + let paths = uPlot.paths = {}; + + (paths.linear = linear); + (paths.spline = spline); + (paths.stepped = stepped); + (paths.bars = bars); +} + export default uPlot; diff --git a/plugins/uplot/uPlot.iife.js b/plugins/uplot/uPlot.iife.js index 13722ff12..181797dd9 100644 --- a/plugins/uplot/uPlot.iife.js +++ b/plugins/uplot/uPlot.iife.js @@ -4,12 +4,14 @@ * * uPlot.js (μPlot) * A small, fast chart for time series, lines, areas, ohlc & bars -* https://github.com/leeoniya/uPlot (v1.4.6) +* https://github.com/leeoniya/uPlot (v1.5.2) */ var uPlot = (function () { 'use strict'; + var FEAT_TIME = true; + function debounce(fn, time) { var pending = null; @@ -46,6 +48,15 @@ var uPlot = (function () { return hi; } + function nonNullIdx(data, _i0, _i1, dir) { + for (var i = dir == 1 ? _i0 : _i1; i >= _i0 && i <= _i1; i += dir) { + if (data[i] != null) + { return i; } + } + + return -1; + } + function getMinMax(data, _i0, _i1, sorted) { // console.log("getMinMax()"); @@ -72,6 +83,24 @@ var uPlot = (function () { return [_min, _max]; } + function getMinMaxLog(data, _i0, _i1) { + // console.log("getMinMax()"); + + var _min = inf; + var _max = -inf; + + for (var i = _i0; i <= _i1; i++) { + if (data[i] > 0) { + _min = min(_min, data[i]); + _max = max(_max, data[i]); + } + } + + return [ + _min == inf ? 1 : _min, + _max == -inf ? 10 : _max ]; + } + var _fixedTuple = [0, 0]; function fixIncr(minIncr, maxIncr, minExp, maxExp) { @@ -190,6 +219,7 @@ var uPlot = (function () { var min = M.min; var max = M.max; var pow = M.pow; + var sqrt = M.sqrt; var log10 = M.log10; var log2 = M.log2; var PI = M.PI; @@ -208,9 +238,9 @@ var uPlot = (function () { return typeof v == "function" ? v : function () { return v; }; } - function retArg1(_0, _1) { - return _1; - } + var retArg1 = function (_0, _1) { return _1; }; + + var retNull = function (_) { return null; }; function incrRoundUp(num, incr) { return ceil(num/incr)*incr; @@ -258,11 +288,18 @@ var uPlot = (function () { var isArr = Array.isArray; function isStr(v) { - return typeof v === 'string'; + return typeof v == 'string'; } function isObj(v) { - return typeof v === 'object' && v !== null; + var is = false; + + if (v != null) { + var c = v.constructor; + is = c == null || c == Object; + } + + return is; } function copy(o) { @@ -298,28 +335,136 @@ var uPlot = (function () { return targ; } + // nullModes + var NULL_IGNORE = 0; // all nulls are ignored by isGap + var NULL_GAP = 1; // alignment nulls are ignored by isGap (default) + var NULL_EXPAND = 2; // nulls are expand to include adjacent alignment nulls + + // nullModes is a tables-matched array indicating how to treat nulls in each series + function join(tables, nullModes) { + if (tables.length == 1) { + return { + data: tables[0], + isGap: nullModes ? function (u, seriesIdx, dataIdx) { return nullModes[0][seriesIdx] != NULL_IGNORE; } : function () { return true; }, + }; + } + + var xVals = new Set(); + var xNulls = [new Set()]; + + for (var ti = 0; ti < tables.length; ti++) { + var t = tables[ti]; + var xs = t[0]; + var len = xs.length; + + for (var i = 0; i < len; i++) + { xVals.add(xs[i]); } + + for (var si = 1; si < t.length; si++) { + var nulls = new Set(); + + // cache original nulls for isGap lookup + if (nullModes == null || nullModes[ti][si] == NULL_GAP || nullModes[ti][si] == NULL_EXPAND) { + var ys = t[si]; + + for (var i$1 = 0; i$1 < len; i$1++) { + if (ys[i$1] == null) + { nulls.add(xs[i$1]); } + } + } + + xNulls.push(nulls); + } + } + + var data = [Array.from(xVals).sort(function (a, b) { return a - b; })]; + + var alignedLen = data[0].length; + + var xIdxs = new Map(); + + for (var i$2 = 0; i$2 < alignedLen; i$2++) + { xIdxs.set(data[0][i$2], i$2); } + + var gsi = 1; + + for (var ti$1 = 0; ti$1 < tables.length; ti$1++) { + var t$1 = tables[ti$1]; + var xs$1 = t$1[0]; + + for (var si$1 = 1; si$1 < t$1.length; si$1++) { + var ys$1 = t$1[si$1]; + + var yVals = Array(alignedLen).fill(null); + + for (var i$3 = 0; i$3 < ys$1.length; i$3++) + { yVals[xIdxs.get(xs$1[i$3])] = ys$1[i$3]; } + + // mark all filler nulls as explicit when adjacent to existing explicit nulls (minesweeper) + if (nullModes && nullModes[ti$1][si$1] == NULL_EXPAND) { + var nulls$1 = xNulls[gsi]; + var size = nulls$1.size; + var i$4 = 0; + var xi = (void 0); + + var lastAddedX = -inf; + + for (var xVal of nulls$1.values()) { + if (i$4++ == size) + { break; } + + if (xVal > lastAddedX) { + var xIdx = xIdxs.get(xVal); + + xi = xIdx - 1; + while (yVals[xi] === null) { + nulls$1.add(data[0][xi]); + xi--; + } + + xi = xIdx + 1; + while (yVals[xi] === null) { + nulls$1.add(lastAddedX = data[0][xi]); + xi++; + } + } + } + } + + data.push(yVals); + + gsi++; + } + } + + return { + data: data, + isGap: function isGap(u, seriesIdx, dataIdx) { + var xVal = u._data[0][dataIdx]; + return xNulls[seriesIdx].has(xVal); + }, + }; + } + var microTask = typeof queueMicrotask == "undefined" ? function (fn) { return Promise.resolve().then(fn); } : queueMicrotask; - var WIDTH = "width"; - var HEIGHT = "height"; - var TOP = "top"; - var BOTTOM = "bottom"; - var LEFT = "left"; - var RIGHT = "right"; - var firstChild = "firstChild"; - var createElement = "createElement"; - var hexBlack = "#000"; + var WIDTH = "width"; + var HEIGHT = "height"; + var TOP = "top"; + var BOTTOM = "bottom"; + var LEFT = "left"; + var RIGHT = "right"; + var hexBlack = "#000"; var transparent = hexBlack + "0"; - var classList = "classList"; - var mousemove = "mousemove"; - var mousedown = "mousedown"; - var mouseup = "mouseup"; - var mouseenter = "mouseenter"; - var mouseleave = "mouseleave"; - var dblclick = "dblclick"; - var resize = "resize"; - var scroll = "scroll"; + var mousemove = "mousemove"; + var mousedown = "mousedown"; + var mouseup = "mouseup"; + var mouseenter = "mouseenter"; + var mouseleave = "mouseleave"; + var dblclick = "dblclick"; + var resize = "resize"; + var scroll = "scroll"; var pre = "u-"; @@ -348,11 +493,11 @@ var uPlot = (function () { var pxRatio = devicePixelRatio; function addClass(el, c) { - c != null && el[classList].add(c); + c != null && el.classList.add(c); } function remClass(el, c) { - el[classList].remove(c); + el.classList.remove(c); } function setStylePx(el, name, value) { @@ -360,7 +505,7 @@ var uPlot = (function () { } function placeTag(tag, cls, targ, refEl) { - var el = doc[createElement](tag); + var el = doc.createElement(tag); if (cls != null) { addClass(el, cls); } @@ -838,24 +983,56 @@ var uPlot = (function () { return function (self, val) { return stamp(tzDate(val)); }; } - function cursorPoint(self, si) { - var s = self.series[si]; + function legendStroke(self, seriesIdx) { + var s = self.series[seriesIdx]; + return s.width ? s.stroke(self, seriesIdx) : s.points.width ? s.points.stroke(self, seriesIdx) : null; + } + + function legendFill(self, seriesIdx) { + return self.series[seriesIdx].fill(self, seriesIdx); + } + + function cursorPointShow(self, si) { + var o = self.cursor.points; var pt = placeDiv(); - pt.style.background = s.stroke || hexBlack; + var stroke = o.stroke(self, si); + var fill = o.fill(self, si); - var dia = ptDia(s.width, 1); - var mar = (dia - 1) / -2; + pt.style.background = fill || stroke; - setStylePx(pt, WIDTH, dia); - setStylePx(pt, HEIGHT, dia); + var size = o.size(self, si); + var width = o.width(self, si, size); + + if (width) + { pt.style.border = width + "px solid " + stroke; } + + var mar = size / -2; + + setStylePx(pt, WIDTH, size); + setStylePx(pt, HEIGHT, size); setStylePx(pt, "marginLeft", mar); setStylePx(pt, "marginTop", mar); return pt; } + function cursorPointFill(self, si) { + var s = self.series[si]; + return s.stroke(self, si); + } + + function cursorPointStroke(self, si) { + var s = self.series[si]; + return s.stroke(self, si); + } + + function cursorPointSize(self, si) { + var s = self.series[si]; + return ptDia(s.width, 1); + } + function dataIdx(self, seriesIdx, cursorIdx) { return cursorIdx; } @@ -885,7 +1062,11 @@ var uPlot = (function () { lock: false, move: cursorMove, points: { - show: cursorPoint, + show: cursorPointShow, + size: cursorPointSize, + width: 0, + stroke: cursorPointStroke, + fill: cursorPointFill, }, bind: { @@ -1113,8 +1294,20 @@ var uPlot = (function () { clip: null, }; + function clampScale(self, val, scaleMin, scaleMax, scaleKey) { + /* + if (val < 0) { + let cssHgt = self.bbox.height / pxRatio; + let absPos = self.valToPos(abs(val), scaleKey); + let fromBtm = cssHgt - absPos; + return self.posToVal(cssHgt + fromBtm, scaleKey); + } + */ + return scaleMin / 10; + } + var xScaleOpts = { - time: true, + time: FEAT_TIME, auto: true, distr: 1, log: 10, @@ -1148,6 +1341,560 @@ var uPlot = (function () { }; } + var props = Array(11); + + function aliasProps(u, seriesIdx) { + var series = u.series[seriesIdx]; + var scales = u.scales; + var bbox = u.bbox; + + props[0] = series; // series + props[1] = u._data[0]; // dataX + props[2] = u._data[seriesIdx]; // dataY + props[3] = scales[u.series[0].scale]; // scaleX + props[4] = scales[series.scale]; // scaleY + props[5] = u.valToPosX; // valToPosX + props[6] = u.valToPosY; // valToPosY + props[7] = bbox.left; // plotLft + props[8] = bbox.top; // plotTop + props[9] = bbox.width; // plotWid + props[10] = bbox.height; // plotHgt + + return props; + } + + function clipGaps(gaps, ori, plotLft, plotTop, plotWid, plotHgt) { + var clip = null; + + // create clip path (invert gaps and non-gaps) + if (gaps.length > 0) { + clip = new Path2D(); + + if (ori == 1) { + var prevGapEnd = plotLft; + + for (var i = 0; i < gaps.length; i++) { + var g = gaps[i]; + + clip.rect(prevGapEnd, plotTop, g[0] - prevGapEnd, plotTop + plotHgt); + + prevGapEnd = g[1]; + } + + clip.rect(prevGapEnd, plotTop, plotLft + plotWid - prevGapEnd, plotTop + plotHgt); + } + } + + return clip; + } + + function addGap(gaps, fromX, toX) { + if (toX > fromX) { + var prevGap = gaps[gaps.length - 1]; + + if (prevGap && prevGap[0] == fromX) // TODO: gaps must be encoded at stroke widths? + { prevGap[1] = toX; } + else + { gaps.push([fromX, toX]); } + } + } + + var dir = 1; + + function drawAcc(stroke, accX, minY, maxY, outY) { + stroke.lineTo(accX, minY); + stroke.lineTo(accX, maxY); + stroke.lineTo(accX, outY); + } + + function linear() { + return function (u, seriesIdx, idx0, idx1) { + var ref = aliasProps(u, seriesIdx); + var series = ref[0]; + var dataX = ref[1]; + var dataY = ref[2]; + var scaleX = ref[3]; + var scaleY = ref[4]; + var valToPosX = ref[5]; + var valToPosY = ref[6]; + var plotLft = ref[7]; + var plotTop = ref[8]; + var plotWid = ref[9]; + var plotHgt = ref[10]; + + var isGap = series.isGap; + + var _paths = dir == 1 ? {stroke: new Path2D(), fill: null, clip: null} : u.series[seriesIdx - 1]._paths; + var stroke = _paths.stroke; + var width = roundDec(series.width * pxRatio, 3); + + var minY = inf, + maxY = -inf, + outY, outX, drawnAtX; + + // todo: don't build gaps on dir = -1 pass + var gaps = []; + + var accX = round(valToPosX(dataX[dir == 1 ? idx0 : idx1], scaleX, plotWid, plotLft)); + var accGaps = false; + + // data edges + var lftIdx = nonNullIdx(dataY, idx0, idx1, 1); + var rgtIdx = nonNullIdx(dataY, idx0, idx1, -1); + var lftX = incrRound(valToPosX(dataX[lftIdx], scaleX, plotWid, plotLft), 0.5); + var rgtX = incrRound(valToPosX(dataX[rgtIdx], scaleX, plotWid, plotLft), 0.5); + + if (lftX > plotLft) + { addGap(gaps, plotLft, lftX); } + + // the moves the shape edge outside the canvas so stroke doesnt bleed in + if (series.band && dir == 1) + { stroke.lineTo(lftX - width * 2, round(valToPosY(dataY[idx0], scaleY, plotHgt, plotTop))); } + + for (var i = dir == 1 ? idx0 : idx1; i >= idx0 && i <= idx1; i += dir) { + var x = round(valToPosX(dataX[i], scaleX, plotWid, plotLft)); + + if (x == accX) { + if (dataY[i] != null) { + outY = round(valToPosY(dataY[i], scaleY, plotHgt, plotTop)); + + if (minY == inf) + { stroke.lineTo(x, outY); } + + minY = min(outY, minY); + maxY = max(outY, maxY); + } + else if (!accGaps && isGap(u, seriesIdx, i)) + { accGaps = true; } + } + else { + var _addGap = false; + + if (minY != inf) { + drawAcc(stroke, accX, minY, maxY, outY); + outX = drawnAtX = accX; + } + else if (accGaps) { + _addGap = true; + accGaps = false; + } + + if (dataY[i] != null) { + outY = round(valToPosY(dataY[i], scaleY, plotHgt, plotTop)); + stroke.lineTo(x, outY); + minY = maxY = outY; + + // prior pixel can have data but still start a gap if ends with null + if (x - accX > 1 && dataY[i - 1] == null && isGap(u, seriesIdx, i - 1)) + { _addGap = true; } + } + else { + minY = inf; + maxY = -inf; + + if (!accGaps && isGap(u, seriesIdx, i)) + { accGaps = true; } + } + + _addGap && addGap(gaps, outX, x); + + accX = x; + } + } + + if (minY != inf && minY != maxY && drawnAtX != accX) + { drawAcc(stroke, accX, minY, maxY, outY); } + + if (rgtX < plotLft + plotWid) + { addGap(gaps, rgtX, plotLft + plotWid); } + + if (series.band) { + var _x, _iy, _data = u._data, dataY2; + + // the moves the shape edge outside the canvas so stroke doesnt bleed in + if (dir == 1) { + _x = rgtX + width * 2; + _iy = rgtIdx; + dataY2 = _data[seriesIdx + 1]; + } + else { + _x = lftX - width * 2; + _iy = lftIdx; + dataY2 = _data[seriesIdx - 1]; + } + + stroke.lineTo(_x, round(valToPosY(dataY[_iy], scaleY, plotHgt, plotTop))); + stroke.lineTo(_x, round(valToPosY(dataY2[_iy], scaleY, plotHgt, plotTop))); + } + + if (dir == 1) { + if (!series.spanGaps) + { _paths.clip = clipGaps(gaps, 1, plotLft, plotTop, plotWid, plotHgt); } + + if (series.fill != null) { + var fill = _paths.fill = new Path2D(stroke); + + var fillTo = round(valToPosY(series.fillTo(u, seriesIdx, series.min, series.max), scaleY, plotHgt, plotTop)); + fill.lineTo(rgtX, fillTo); + fill.lineTo(lftX, fillTo); + } + } + + if (series.band) + { dir *= -1; } + + return _paths; + }; + } + + function spline(opts) { + return function (u, seriesIdx, idx0, idx1) { + var ref = aliasProps(u, seriesIdx); + var series = ref[0]; + var dataX = ref[1]; + var dataY = ref[2]; + var scaleX = ref[3]; + var scaleY = ref[4]; + var valToPosX = ref[5]; + var valToPosY = ref[6]; + var plotLft = ref[7]; + var plotTop = ref[8]; + var plotWid = ref[9]; + var plotHgt = ref[10]; + + idx0 = nonNullIdx(dataY, idx0, idx1, 1); + idx1 = nonNullIdx(dataY, idx0, idx1, -1); + + var gaps = []; + var inGap = false; + var firstXPos = round(valToPosX(dataX[idx0], scaleX, plotWid, plotLft)); + var prevXPos = firstXPos; + + var xCoords = []; + var yCoords = []; + + for (var i = idx0; i <= idx1; i++) { + var yVal = dataY[i]; + var xVal = dataX[i]; + var xPos = valToPosX(xVal, scaleX, plotWid, plotLft); + + if (yVal == null) { + if (series.isGap(u, seriesIdx, i)) { + addGap(gaps, prevXPos, xPos); + inGap = true; + } + continue; + } + else { + if (inGap) { + addGap(gaps, prevXPos, xPos); + inGap = false; + } + + xCoords.push((prevXPos = xPos)); + yCoords.push(valToPosY(dataY[i], scaleY, plotHgt, plotTop)); + } + } + + var stroke = catmullRomFitting(xCoords, yCoords, 0.5); + + var fill = new Path2D(stroke); + + var fillTo = series.fillTo(u, seriesIdx, series.min, series.max); + + var minY = round(valToPosY(fillTo, scaleY, plotHgt, plotTop)); + + fill.lineTo(prevXPos, minY); + fill.lineTo(firstXPos, minY); + + var clip = !series.spanGaps ? clipGaps(gaps, 1, plotLft, plotTop, plotWid, plotHgt) : null; + + return { + stroke: stroke, + fill: fill, + clip: clip, + }; + + // if FEAT_PATHS: false in rollup.config.js + // u.ctx.save(); + // u.ctx.beginPath(); + // u.ctx.rect(u.bbox.left, u.bbox.top, u.bbox.width, u.bbox.height); + // u.ctx.clip(); + // u.ctx.strokeStyle = u.series[sidx].stroke; + // u.ctx.stroke(stroke); + // u.ctx.fillStyle = u.series[sidx].fill; + // u.ctx.fill(fill); + // u.ctx.restore(); + // return null; + }; + } + + // adapted from https://gist.github.com/nicholaswmin/c2661eb11cad5671d816 (MIT) + + function catmullRomFitting(xCoords, yCoords, alpha) { + var path = new Path2D(); + + var dataLen = xCoords.length; + + var p0x, + p0y, + p1x, + p1y, + p2x, + p2y, + p3x, + p3y, + bp1x, + bp1y, + bp2x, + bp2y, + d1, + d2, + d3, + A, + B, + N, + M, + d3powA, + d2powA, + d3pow2A, + d2pow2A, + d1pow2A, + d1powA; + + path.moveTo(round(xCoords[0]), round(yCoords[0])); + + for (var i = 0; i < dataLen - 1; i++) { + var p0i = i == 0 ? 0 : i - 1; + + p0x = xCoords[p0i]; + p0y = yCoords[p0i]; + + p1x = xCoords[i]; + p1y = yCoords[i]; + + p2x = xCoords[i + 1]; + p2y = yCoords[i + 1]; + + if (i + 2 < dataLen) { + p3x = xCoords[i + 2]; + p3y = yCoords[i + 2]; + } else { + p3x = p2x; + p3y = p2y; + } + + d1 = sqrt(pow(p0x - p1x, 2) + pow(p0y - p1y, 2)); + d2 = sqrt(pow(p1x - p2x, 2) + pow(p1y - p2y, 2)); + d3 = sqrt(pow(p2x - p3x, 2) + pow(p2y - p3y, 2)); + + // Catmull-Rom to Cubic Bezier conversion matrix + + // A = 2d1^2a + 3d1^a * d2^a + d3^2a + // B = 2d3^2a + 3d3^a * d2^a + d2^2a + + // [ 0 1 0 0 ] + // [ -d2^2a /N A/N d1^2a /N 0 ] + // [ 0 d3^2a /M B/M -d2^2a /M ] + // [ 0 0 1 0 ] + + d3powA = pow(d3, alpha); + d3pow2A = pow(d3, alpha * 2); + d2powA = pow(d2, alpha); + d2pow2A = pow(d2, alpha * 2); + d1powA = pow(d1, alpha); + d1pow2A = pow(d1, alpha * 2); + + A = 2 * d1pow2A + 3 * d1powA * d2powA + d2pow2A; + B = 2 * d3pow2A + 3 * d3powA * d2powA + d2pow2A; + N = 3 * d1powA * (d1powA + d2powA); + + if (N > 0) + { N = 1 / N; } + + M = 3 * d3powA * (d3powA + d2powA); + + if (M > 0) + { M = 1 / M; } + + bp1x = (-d2pow2A * p0x + A * p1x + d1pow2A * p2x) * N; + bp1y = (-d2pow2A * p0y + A * p1y + d1pow2A * p2y) * N; + + bp2x = (d3pow2A * p1x + B * p2x - d2pow2A * p3x) * M; + bp2y = (d3pow2A * p1y + B * p2y - d2pow2A * p3y) * M; + + if (bp1x == 0 && bp1y == 0) { + bp1x = p1x; + bp1y = p1y; + } + + if (bp2x == 0 && bp2y == 0) { + bp2x = p2x; + bp2y = p2y; + } + + path.bezierCurveTo(bp1x, bp1y, bp2x, bp2y, p2x, p2y); + } + + return path; + } + + function stepped(opts) { + var align = ifNull(opts.align, 1); + + return function (u, seriesIdx, idx0, idx1) { + var ref = aliasProps(u, seriesIdx); + var series = ref[0]; + var dataX = ref[1]; + var dataY = ref[2]; + var scaleX = ref[3]; + var scaleY = ref[4]; + var valToPosX = ref[5]; + var valToPosY = ref[6]; + var plotLft = ref[7]; + var plotTop = ref[8]; + var plotWid = ref[9]; + var plotHgt = ref[10]; + + var stroke = new Path2D(); + + idx0 = nonNullIdx(dataY, idx0, idx1, 1); + idx1 = nonNullIdx(dataY, idx0, idx1, -1); + + var gaps = []; + var inGap = false; + var prevYPos = round(valToPosY(dataY[idx0], scaleY, plotHgt, plotTop)); + var firstXPos = round(valToPosX(dataX[idx0], scaleX, plotWid, plotLft)); + var prevXPos = firstXPos; + + stroke.moveTo(firstXPos, prevYPos); + + for (var i = idx0 + 1; i <= idx1; i++) { + var yVal1 = dataY[i]; + + var x1 = round(valToPosX(dataX[i], scaleX, plotWid, plotLft)); + + if (yVal1 == null) { + if (series.isGap(u, seriesIdx, i)) { + addGap(gaps, prevXPos, x1); + inGap = true; + } + continue; + } + + var y1 = round(valToPosY(yVal1, scaleY, plotHgt, plotTop)); + + if (inGap) { + addGap(gaps, prevXPos, x1); + + // don't clip vertical extenders + if (prevYPos != y1) { + var halfStroke = (series.width * pxRatio) / 2; + + var lastGap = gaps[gaps.length - 1]; + lastGap[0] += halfStroke; + lastGap[1] -= halfStroke; + } + + inGap = false; + } + + if (align == 1) + { stroke.lineTo(x1, prevYPos); } + else + { stroke.lineTo(prevXPos, y1); } + + stroke.lineTo(x1, y1); + + prevYPos = y1; + prevXPos = x1; + } + + var fill = new Path2D(stroke); + + var fillTo = series.fillTo(u, seriesIdx, series.min, series.max); + + var minY = round(valToPosY(fillTo, scaleY, plotHgt, plotTop)); + + fill.lineTo(prevXPos, minY); + fill.lineTo(firstXPos, minY); + + var clip = !series.spanGaps ? clipGaps(gaps, 1, plotLft, plotTop, plotWid, plotHgt) : null; + + return { + stroke: stroke, + fill: fill, + clip: clip, + }; + }; + } + + function bars(opts) { + opts = opts || EMPTY_OBJ; + var size = ifNull(opts.size, [0.6, inf]); + + var gapFactor = 1 - size[0]; + var maxWidth = ifNull(size[1], inf) * pxRatio; + + return function (u, seriesIdx, idx0, idx1) { + var ref = aliasProps(u, seriesIdx); + var series = ref[0]; + var dataX = ref[1]; + var dataY = ref[2]; + var scaleX = ref[3]; + var scaleY = ref[4]; + var valToPosX = ref[5]; + var valToPosY = ref[6]; + var plotLft = ref[7]; + var plotTop = ref[8]; + var plotWid = ref[9]; + var plotHgt = ref[10]; + + var colWid = valToPosX(dataX[1], scaleX, plotWid, plotLft) - valToPosX(dataX[0], scaleX, plotWid, plotLft); + + var gapWid = colWid * gapFactor; + + var fillToY = series.fillTo(u, seriesIdx, series.min, series.max); + + var y0Pos = valToPosY(fillToY, scaleY, plotHgt, plotTop); + + var strokeWidth = round(series.width * pxRatio); + + var barWid = round(min(maxWidth, colWid - gapWid) - strokeWidth); + + var stroke = new Path2D(); + + for (var i = idx0; i <= idx1; i++) { + var yVal = dataY[i]; + + if (yVal == null) + { continue; } + + var xVal = scaleX.distr == 2 ? i : dataX[i]; + + // TODO: all xPos can be pre-computed once for all series in aligned set + var xPos = valToPosX(xVal, scaleX, plotWid, plotLft); + var yPos = valToPosY(yVal, scaleY, plotHgt, plotTop); + + var lft = round(xPos - barWid / 2); + var btm = round(max(yPos, y0Pos)); + var top = round(min(yPos, y0Pos)); + var barHgt = btm - top; + + stroke.rect(lft, top, barWid, barHgt); + } + + var fill = series.fill != null ? new Path2D(stroke) : undefined; + + return { + stroke: stroke, + fill: fill, + }; + }; + } + + var linearPath = linear() ; + function setDefaults(d, xo, yo, initY) { var d2 = initY ? [d[0], d[1]].concat(d.slice(2)) : [d[0]].concat(d.slice(1)); return d2.map(function (o, i) { return setDefault(o, i, xo, yo); }); @@ -1157,24 +1904,6 @@ var uPlot = (function () { return assign({}, (i == 0 || o && o.side % 2 == 0 ? xo : yo), o); } - function getValPct(val, scale) { - return ( - scale.distr == 3 - ? log10(val / scale.min) / log10(scale.max / scale.min) - : (val - scale.min) / (scale.max - scale.min) - ); - } - - function getYPos(val, scale, hgt, top) { - var pctY = getValPct(val, scale); - return top + (1 - pctY) * hgt; - } - - function getXPos(val, scale, wid, lft) { - var pctX = getValPct(val, scale); - return lft + pctX * wid; - } - var nullMinMax = [null, null]; function snapNumX(self, dataMin, dataMax) { @@ -1222,6 +1951,27 @@ var uPlot = (function () { function uPlot(opts, data, then) { var self = {}; + function getValPct(val, scale) { + return ( + scale.distr == 3 + ? log10((val > 0 ? val : scale.clamp(self, val, scale.min, scale.max, scale.key)) / scale.min) / log10(scale.max / scale.min) + : (val - scale.min) / (scale.max - scale.min) + ); + } + + function getXPos(val, scale, wid, lft) { + var pctX = getValPct(val, scale); + return lft + pctX * wid; + } + + function getYPos(val, scale, hgt, top) { + var pctY = getValPct(val, scale); + return top + (1 - pctY) * hgt; + } + + self.valToPosX = getXPos; + self.valToPosY = getYPos; + var ready = false; self.status = 0; @@ -1260,6 +2010,13 @@ var uPlot = (function () { var xScaleKey = series[0].scale; + var drawOrderMap = { + axes: drawAxesGrid, + series: drawSeries, + }; + + var drawOrder = (opts.drawOrder || ["axes", "series"]).map(function (key) { return drawOrderMap[key]; }); + function initScale(scaleKey) { var sc = scales[scaleKey]; @@ -1275,6 +2032,8 @@ var uPlot = (function () { else { sc = scales[scaleKey] = assign({}, (scaleKey == xScaleKey ? xScaleOpts : yScaleOpts), scaleOpts); + sc.key = scaleKey; + var isTime = sc.time; var isLog = sc.distr == 3; @@ -1289,6 +2048,8 @@ var uPlot = (function () { sc.range = fnOrSelf(rn || (isTime ? snapTimeX : scaleKey == xScaleKey ? (isLog ? snapLogX : snapNumX) : (isLog ? snapLogY : snapNumY))); sc.auto = fnOrSelf(sc.auto); + + sc.clamp = fnOrSelf(sc.clamp || clampScale); } } } @@ -1315,18 +2076,6 @@ var uPlot = (function () { { pendScales[k$1] = {min: sc.min, max: sc.max}; } } - var gutters = self.gutters = assign({ - x: round(yAxisOpts.size / 2), - y: round(xAxisOpts.size / 3), - _x: null, - _y: null, - }, opts.gutters); - - gutters.x = fnOrSelf(gutters.x); - gutters.y = fnOrSelf(gutters.y); - gutters._x = gutters.x(self); - gutters._y = gutters.y(self); - // self.tz = opts.tz || Intl.DateTimeFormat().resolvedOptions().timeZone; var _tzDate = (opts.tzDate || (function (ts) { return new Date(ts / ms); })); var _fmtDate = (opts.fmtDate || fmtDate); @@ -1338,6 +2087,11 @@ var uPlot = (function () { var legend = assign({show: true, live: true}, opts.legend); var showLegend = legend.show; + { + legend.stroke = fnOrSelf(legend.stroke || legendStroke); + legend.fill = fnOrSelf(legend.fill || legendFill); + } + var legendEl; var legendRows = []; var legendCols; @@ -1380,8 +2134,11 @@ var uPlot = (function () { var label = placeTag("th", null, row); var indic = placeDiv(LEGEND_MARKER, label); - indic.style.borderColor = s.width ? s.stroke : i > 0 && s.points.width ? s.points.stroke : null; - indic.style.backgroundColor = s.fill || null; + + if (i > 0) { + indic.style.borderColor = legend.stroke(self, i); + indic.style.backgroundColor = legend.fill(self, i); + } var text = placeDiv(LEGEND_LABEL, label); text.textContent = s.label; @@ -1479,10 +2236,10 @@ var uPlot = (function () { var bb = self.bbox; - plotLft = bb[LEFT] = incrRound(plotLftCss * pxRatio, 0.5); - plotTop = bb[TOP] = incrRound(plotTopCss * pxRatio, 0.5); - plotWid = bb[WIDTH] = incrRound(plotWidCss * pxRatio, 0.5); - plotHgt = bb[HEIGHT] = incrRound(plotHgtCss * pxRatio, 0.5); + plotLft = bb.left = incrRound(plotLftCss * pxRatio, 0.5); + plotTop = bb.top = incrRound(plotTopCss * pxRatio, 0.5); + plotWid = bb.width = incrRound(plotWidCss * pxRatio, 0.5); + plotHgt = bb.height = incrRound(plotHgtCss * pxRatio, 0.5); } function convergeSize() { @@ -1494,9 +2251,9 @@ var uPlot = (function () { cycleNum++; var axesConverged = axesCalc(cycleNum); - var guttersConverged = guttersCalc(cycleNum); + var paddingConverged = paddingCalc(cycleNum); - converged = axesConverged && guttersConverged; + converged = axesConverged && paddingConverged; if (!converged) { calcSize(self.width, self.height); @@ -1556,25 +2313,18 @@ var uPlot = (function () { } }); - // hz gutters - if (hasTopAxis || hasBtmAxis) { - if (!hasRgtAxis) - { plotWidCss -= gutters._x; } - if (!hasLftAxis) { - plotWidCss -= gutters._x; - plotLftCss += gutters._x; - } - } + sidesWithAxes[0] = hasTopAxis; + sidesWithAxes[1] = hasRgtAxis; + sidesWithAxes[2] = hasBtmAxis; + sidesWithAxes[3] = hasLftAxis; - // vt gutters - if (hasLftAxis || hasRgtAxis) { - if (!hasBtmAxis) - { plotHgtCss -= gutters._y; } - if (!hasTopAxis) { - plotHgtCss -= gutters._y; - plotTopCss += gutters._y; - } - } + // hz padding + plotWidCss -= _padding[1] + _padding[3]; + plotLftCss += _padding[3]; + + // vt padding + plotHgtCss -= _padding[2] + _padding[0]; + plotTopCss += _padding[0]; } function calcAxesRects() { @@ -1609,8 +2359,17 @@ var uPlot = (function () { var cursor = (self.cursor = assign({}, cursorOpts, opts.cursor)); - (cursor._lock = false); - (cursor.points.show = fnOrSelf(cursor.points.show)); + { + cursor._lock = false; + + var points = cursor.points; + + points.show = fnOrSelf(points.show); + points.size = fnOrSelf(points.size); + points.stroke = fnOrSelf(points.stroke); + points.width = fnOrSelf(points.width); + points.fill = fnOrSelf(points.fill); + } var focus = self.focus = assign({}, opts.focus || {alpha: 0.3}, cursor.focus); var cursorFocus = focus.prox >= 0; @@ -1641,18 +2400,26 @@ var uPlot = (function () { s.label = s.label || (isTime ? timeSeriesLabel : numSeriesLabel); if (i > 0) { - s.width = s.width == null ? 1 : s.width; - s.paths = s.paths || ( buildPaths); - s.fillTo = s.fillTo || seriesFillTo; + s.width = s.width == null ? 1 : s.width; + s.paths = s.paths || linearPath || retNull; + s.fillTo = fnOrSelf(s.fillTo || seriesFillTo); + + s.stroke = fnOrSelf(s.stroke || hexBlack); + s.fill = fnOrSelf(s.fill || null); + s._stroke = s._fill = s._paths = null; + var _ptDia = ptDia(s.width, 1); - s.points = assign({}, { + var points = s.points = assign({}, { size: _ptDia, width: max(1, _ptDia * .2), stroke: s.stroke, space: _ptDia * 2, + _stroke: null, + _fill: null, }, s.points); - s.points.show = fnOrSelf(s.points.show); - s._paths = null; + points.show = fnOrSelf(points.show); + points.fill = fnOrSelf(points.fill); + points.stroke = fnOrSelf(points.stroke); } if (showLegend) @@ -1686,6 +2453,8 @@ var uPlot = (function () { series.forEach(initSeries); + var sidesWithAxes = [false, false, false, false]; + function initAxis(axis, i) { axis._show = axis.show; @@ -1733,14 +2502,36 @@ var uPlot = (function () { axis._found = // foundIncrSpace axis._splits = axis._values = null; + + if (axis._size > 0) + { sidesWithAxes[i] = true; } } } // set axis defaults axes.forEach(initAxis); + function autoPadSide(self, side, sidesWithAxes, cycleNum) { + var hasTopAxis = sidesWithAxes[0]; + var hasRgtAxis = sidesWithAxes[1]; + var hasBtmAxis = sidesWithAxes[2]; + var hasLftAxis = sidesWithAxes[3]; + + var ori = side % 2; + var size = 0; + + if (ori == 0 && (hasLftAxis || hasRgtAxis)) + { size = (side == 0 && !hasTopAxis || side == 2 && !hasBtmAxis ? round(xAxisOpts.size / 3) : 0); } + if (ori == 1 && (hasTopAxis || hasBtmAxis)) + { size = (side == 1 && !hasRgtAxis || side == 3 && !hasLftAxis ? round(yAxisOpts.size / 2) : 0); } + + return size; + } + + var padding = self.padding = (opts.padding || [autoPadSide,autoPadSide,autoPadSide,autoPadSide]).map(function (p) { return fnOrSelf(ifNull(p, autoPadSide)); }); + var _padding = self._padding = padding.map(function (p, i) { return p(self, i, sidesWithAxes, 0); }); + var dataLen; - var dataIsGap; // rendered data window var i0 = null; @@ -1753,7 +2544,7 @@ var uPlot = (function () { function setData(_data, _resetScales) { if (!isArr(_data) && isObj(_data)) { - dataIsGap = _data.isGap; + _data.isGap && series.forEach(function (s) { s.isGap = _data.isGap; }); _data = _data.data; } @@ -1768,6 +2559,8 @@ var uPlot = (function () { if (xScaleDistr == 2) { data[0] = data0.map(function (v, i) { return i; }); } + self._data = data; + resetYSeries(true); fire("setData"); @@ -1821,8 +2614,6 @@ var uPlot = (function () { } _setScale(xScaleKey, _min, _max); - - viaAutoScaleX = false; } function setCtxStyle(stroke, width, dash, fill) { @@ -1890,7 +2681,7 @@ var uPlot = (function () { } else if (s.show && s.auto && wsc.auto(self, viaAutoScaleX) && (psc == null || psc.min == null)) { // only run getMinMax() for invalidated series data, else reuse - var minMax$1 = s.min == null ? getMinMax(data[i], i0, i1, s.sorted) : [s.min, s.max]; + var minMax$1 = s.min == null ? (wsc.distr == 3 ? getMinMaxLog(data[i], i0, i1) : getMinMax(data[i], i0, i1, s.sorted)) : [s.min, s.max]; // initial min/max wsc.min = min(wsc.min, s.min = minMax$1[0]); @@ -2007,11 +2798,14 @@ var uPlot = (function () { } } + var _stroke = p._stroke = p.stroke(self, si); + var _fill = p._fill = p.fill(self, si); + setCtxStyle( - p.stroke, + _stroke, width, - null, - p.fill || (isStroked ? "#fff" : s.stroke) + p.dash, + _fill || (isStroked ? "#fff" : s._stroke) ); ctx.fill(path); @@ -2041,25 +2835,27 @@ var uPlot = (function () { var dir = 1; function drawSeries() { - // path building loop must be before draw loop to ensure that all bands are fully constructed - series.forEach(function (s, i) { - if (i > 0 && s.show && s._paths == null) { - var _idxs = getOuterIdxs(data[i]); - s._paths = s.paths(self, i, _idxs[0], _idxs[1]); - } - }); + if (dataLen > 0) { + // path building loop must be before draw loop to ensure that all bands are fully constructed + series.forEach(function (s, i) { + if (i > 0 && s.show && s._paths == null) { + var _idxs = getOuterIdxs(data[i]); + s._paths = s.paths(self, i, _idxs[0], _idxs[1]); + } + }); - series.forEach(function (s, i) { - if (i > 0 && s.show) { - if (s._paths) - { drawPath(i); } + series.forEach(function (s, i) { + if (i > 0 && s.show) { + if (s._paths) + { drawPath(i); } - if (s.points.show(self, i, i0, i1)) - { drawPoints(i); } + if (s.points.show(self, i, i0, i1)) + { drawPoints(i); } - fire("drawSeries", i); - } - }); + fire("drawSeries", i); + } + }); + } } function drawPath(si) { @@ -2070,10 +2866,13 @@ var uPlot = (function () { var stroke = ref.stroke; var fill = ref.fill; var clip = ref.clip; - var width = roundDec(s[WIDTH] * pxRatio, 3); + var width = roundDec(s.width * pxRatio, 3); var offset = (width % 2) / 2; - setCtxStyle(s.stroke, width, s.dash, s.fill); + var _stroke = s._stroke = s.stroke(self, si); + var _fill = s._fill = s.fill(self, si); + + setCtxStyle(_stroke, width, s.dash, _fill); ctx.globalAlpha = s.alpha; @@ -2108,10 +2907,10 @@ var uPlot = (function () { width && ctx.stroke(stroke); } else { - width && ctx.stroke(stroke); - - if (s.fill != null) + if (_fill != null) { ctx.fill(fill); } + + width && ctx.stroke(stroke); } ctx.restore(); @@ -2125,178 +2924,6 @@ var uPlot = (function () { { dir *= -1; } } - function buildClip(is, gaps, nullHead, nullTail) { - var s = series[is]; - - var clip = null; - - // create clip path (invert gaps and non-gaps) - if (gaps.length > 0 && !s.spanGaps) { - clip = new Path2D(); - - var prevGapEnd = plotLft; - - for (var i = 0; i < gaps.length; i++) { - var g = gaps[i]; - - clip.rect(prevGapEnd, plotTop, g[0] - prevGapEnd, plotTop + plotHgt); - - prevGapEnd = g[1]; - } - - clip.rect(prevGapEnd, plotTop, plotLft + plotWid - prevGapEnd, plotTop + plotHgt); - } - - return clip; - } - - function addGap(gaps, fromX, toX) { - if (toX > fromX) { - var prevGap = gaps[gaps.length - 1]; - - if (prevGap && prevGap[0] == fromX) // TODO: gaps must be encoded at stroke widths? - { prevGap[1] = toX; } - else - { gaps.push([fromX, toX]); } - } - } - - function nonNullIdx(data, _i0, _i1, dir) { - for (var i = dir == 1 ? _i0 : _i1; i >= _i0 && i <= _i1; i += dir) { - if (data[i] != null) - { return i; } - } - - return -1; - } - - function buildPaths(self, is, _i0, _i1) { - var s = series[is]; - var isGap = dataIsGap || s.isGap; - - var xdata = data[0]; - var ydata = data[is]; - var scaleX = scales[xScaleKey]; - var scaleY = scales[s.scale]; - - var _paths = dir == 1 ? {stroke: new Path2D(), fill: null, clip: null} : series[is-1]._paths; - var stroke = _paths.stroke; - var width = roundDec(s[WIDTH] * pxRatio, 3); - - var minY = inf, - maxY = -inf, - outY, outX; - - // todo: don't build gaps on dir = -1 pass - var gaps = []; - - var accX = round(getXPos(xdata[dir == 1 ? _i0 : _i1], scaleX, plotWid, plotLft)); - var accGaps = false; - - // data edges - var lftIdx = nonNullIdx(ydata, _i0, _i1, 1); - var rgtIdx = nonNullIdx(ydata, _i0, _i1, -1); - var lftX = incrRound(getXPos(xdata[lftIdx], scaleX, plotWid, plotLft), 0.5); - var rgtX = incrRound(getXPos(xdata[rgtIdx], scaleX, plotWid, plotLft), 0.5); - - if (lftX > plotLft) - { addGap(gaps, plotLft, lftX); } - - // the moves the shape edge outside the canvas so stroke doesnt bleed in - if (s.band && dir == 1) - { stroke.lineTo(lftX - width * 2, round(getYPos(ydata[_i0], scaleY, plotHgt, plotTop))); } - - for (var i = dir == 1 ? _i0 : _i1; i >= _i0 && i <= _i1; i += dir) { - var x = round(getXPos(xdata[i], scaleX, plotWid, plotLft)); - - if (x == accX) { - if (ydata[i] != null) { - outY = round(getYPos(ydata[i], scaleY, plotHgt, plotTop)); - minY = min(outY, minY); - maxY = max(outY, maxY); - } - else if (!accGaps && isGap(self, is, i)) - { accGaps = true; } - } - else { - var _addGap = false; - - if (minY != inf) { - stroke.lineTo(accX, minY); - stroke.lineTo(accX, maxY); - stroke.lineTo(accX, outY); - outX = accX; - } - else if (accGaps) { - _addGap = true; - accGaps = false; - } - - if (ydata[i] != null) { - outY = round(getYPos(ydata[i], scaleY, plotHgt, plotTop)); - stroke.lineTo(x, outY); - minY = maxY = outY; - - // prior pixel can have data but still start a gap if ends with null - if (x - accX > 1 && ydata[i-1] == null && isGap(self, is, i-1)) - { _addGap = true; } - } - else { - minY = inf; - maxY = -inf; - - if (!accGaps && isGap(self, is, i)) - { accGaps = true; } - } - - _addGap && addGap(gaps, outX, x); - - accX = x; - } - } - - if (rgtX < plotLft + plotWid) - { addGap(gaps, rgtX, plotLft + plotWid); } - - if (s.band) { - var _x, _iy, ydata2; - - // the moves the shape edge outside the canvas so stroke doesnt bleed in - if (dir == 1) { - _x = rgtX + width * 2; - _iy = rgtIdx; - ydata2 = data[is + 1]; - } - else { - _x = lftX - width * 2; - _iy = lftIdx; - ydata2 = data[is - 1]; - } - - stroke.lineTo(_x, round(getYPos(ydata[_iy], scaleY, plotHgt, plotTop))); - stroke.lineTo(_x, round(getYPos(ydata2[_iy], scaleY, plotHgt, plotTop))); - } - - if (dir == 1) { - _paths.clip = buildClip(is, gaps, ydata[_i0] == null, ydata[_i1] == null); - - if (s.fill != null) { - var fill = _paths.fill = new Path2D(stroke); - - var fillTo = round(getYPos(s.fillTo(self, is, s.min, s.max), scaleY, plotHgt, plotTop)); - fill.lineTo(rgtX, fillTo); - fill.lineTo(lftX, fillTo); - } - } - - if (s.band) - { dir *= -1; } - - return _paths; - } - - self.paths = buildPaths; - function getIncrSpace(axisIdx, min, max, fullDim) { var axis = axes[axisIdx]; @@ -2417,17 +3044,17 @@ var uPlot = (function () { return converged; } - function guttersCalc(cycleNum) { + function paddingCalc(cycleNum) { var converged = true; - var _x = gutters._x; - var _y = gutters._y; + padding.forEach(function (p, i) { + var _p = p(self, i, sidesWithAxes, cycleNum); - gutters._x = ceil(gutters.x(self, cycleNum)); - gutters._y = ceil(gutters.y(self, cycleNum)); + if (_p != _padding[i]) + { converged = false; } - if (gutters._x != _x || gutters._y != _y) - { converged = false; } + _padding[i] = _p; + }); return converged; } @@ -2546,7 +3173,7 @@ var uPlot = (function () { side, basePos, tickSize, - roundDec(ticks[WIDTH] * pxRatio, 3), + roundDec(ticks.width * pxRatio, 3), ticks.stroke ); } @@ -2562,7 +3189,7 @@ var uPlot = (function () { ori == 0 ? 2 : 1, ori == 0 ? plotTop : plotLft, ori == 0 ? plotHgt : plotWid, - roundDec(grid[WIDTH] * pxRatio, 3), + roundDec(grid.width * pxRatio, 3), grid.stroke, grid.dash ); @@ -2624,8 +3251,8 @@ var uPlot = (function () { setStylePx(wrap, WIDTH, fullWidCss); setStylePx(wrap, HEIGHT, fullHgtCss); - can[WIDTH] = round(fullWidCss * pxRatio); - can[HEIGHT] = round(fullHgtCss * pxRatio); + can.width = round(fullWidCss * pxRatio); + can.height = round(fullHgtCss * pxRatio); syncRect(); @@ -2636,10 +3263,10 @@ var uPlot = (function () { // if (shouldSetSelect) { // TODO: update .u-select metrics (if visible) - // setStylePx(selectDiv, TOP, select[TOP] = 0); - // setStylePx(selectDiv, LEFT, select[LEFT] = 0); - // setStylePx(selectDiv, WIDTH, select[WIDTH] = 0); - // setStylePx(selectDiv, HEIGHT, select[HEIGHT] = 0); + // setStylePx(selectDiv, TOP, select.top = 0); + // setStylePx(selectDiv, LEFT, select.left = 0); + // setStylePx(selectDiv, WIDTH, select.width = 0); + // setStylePx(selectDiv, HEIGHT, select.height = 0); // shouldSetSelect = false; // } @@ -2648,13 +3275,12 @@ var uPlot = (function () { shouldSetCursor = false; } - // if (true && legend.show && legend.live && shouldSetLegend) {} + // if (FEAT_LEGEND && legend.show && legend.live && shouldSetLegend) {} if (fullWidCss > 0 && fullHgtCss > 0) { - ctx.clearRect(0, 0, can[WIDTH], can[HEIGHT]); + ctx.clearRect(0, 0, can.width, can.height); fire("drawClear"); - drawAxesGrid(); - dataLen > 0 && drawSeries(); + drawOrder.forEach(function (fn) { return fn(); }); fire("draw"); } @@ -2665,6 +3291,8 @@ var uPlot = (function () { fire("ready"); } + viaAutoScaleX = false; + queuedCommit = false; } @@ -2966,7 +3594,7 @@ var uPlot = (function () { { continue; } for (var j = 0; j < legendRows[i].length; j++) - { legendRows[i][j][firstChild].nodeValue = '--'; } + { legendRows[i][j].firstChild.nodeValue = '--'; } } } @@ -2974,7 +3602,7 @@ var uPlot = (function () { { setSeries(null, {focus: true}, syncOpts.setSeries); } } else { - // let pctY = 1 - (y / rect[HEIGHT]); + // let pctY = 1 - (y / rect.height); var valAtPos = scaleValueAtPos(mouseLeft1, xScaleKey); @@ -2982,18 +3610,18 @@ var uPlot = (function () { var scX = scales[xScaleKey]; - var xPos = roundDec(getXPos(data[0][idx], scX, plotWidCss, 0), 3); + var xPos = incrRoundUp(getXPos(data[0][idx], scX, plotWidCss, 0), 0.5); for (var i$1 = 0; i$1 < series.length; i$1++) { var s = series[i$1]; var idx2 = cursor.dataIdx(self, i$1, idx, valAtPos); - var xPos2 = idx2 == idx ? xPos : roundDec(getXPos(data[0][idx2], scX, plotWidCss, 0), 3); + var xPos2 = idx2 == idx ? xPos : incrRoundUp(getXPos(data[0][idx2], scX, plotWidCss, 0), 0.5); if (i$1 > 0 && s.show) { var valAtIdx = data[i$1][idx2]; - var yPos = valAtIdx == null ? -10 : roundDec(getYPos(valAtIdx, scales[s.scale], plotHgtCss, 0), 3); + var yPos = valAtIdx == null ? -10 : incrRoundUp(getYPos(valAtIdx, scales[s.scale], plotHgtCss, 0), 0.5); if (yPos > 0) { var dist = abs(yPos - mouseTop1); @@ -3018,7 +3646,7 @@ var uPlot = (function () { var j$1 = 0; for (var k in vals) - { legendRows[i$1][j$1++][firstChild].nodeValue = vals[k]; } + { legendRows[i$1][j$1++].firstChild.nodeValue = vals[k]; } } } @@ -3039,35 +3667,35 @@ var uPlot = (function () { if (xKey) { var sc = scales[xKey]; - var srcLeft = src.posToVal(src.select[LEFT], xKey); - var srcRight = src.posToVal(src.select[LEFT] + src.select[WIDTH], xKey); + var srcLeft = src.posToVal(src.select.left, xKey); + var srcRight = src.posToVal(src.select.left + src.select.width, xKey); - select[LEFT] = getXPos(srcLeft, sc, plotWidCss, 0); - select[WIDTH] = abs(select[LEFT] - getXPos(srcRight, sc, plotWidCss, 0)); + select.left = getXPos(srcLeft, sc, plotWidCss, 0); + select.width = abs(select.left - getXPos(srcRight, sc, plotWidCss, 0)); - setStylePx(selectDiv, LEFT, select[LEFT]); - setStylePx(selectDiv, WIDTH, select[WIDTH]); + setStylePx(selectDiv, LEFT, select.left); + setStylePx(selectDiv, WIDTH, select.width); if (!yKey) { - setStylePx(selectDiv, TOP, select[TOP] = 0); - setStylePx(selectDiv, HEIGHT, select[HEIGHT] = plotHgtCss); + setStylePx(selectDiv, TOP, select.top = 0); + setStylePx(selectDiv, HEIGHT, select.height = plotHgtCss); } } if (yKey) { var sc$1 = scales[yKey]; - var srcTop = src.posToVal(src.select[TOP], yKey); - var srcBottom = src.posToVal(src.select[TOP] + src.select[HEIGHT], yKey); + var srcTop = src.posToVal(src.select.top, yKey); + var srcBottom = src.posToVal(src.select.top + src.select.height, yKey); - select[TOP] = getYPos(srcTop, sc$1, plotHgtCss, 0); - select[HEIGHT] = abs(select[TOP] - getYPos(srcBottom, sc$1, plotHgtCss, 0)); + select.top = getYPos(srcTop, sc$1, plotHgtCss, 0); + select.height = abs(select.top - getYPos(srcBottom, sc$1, plotHgtCss, 0)); - setStylePx(selectDiv, TOP, select[TOP]); - setStylePx(selectDiv, HEIGHT, select[HEIGHT]); + setStylePx(selectDiv, TOP, select.top); + setStylePx(selectDiv, HEIGHT, select.height); if (!xKey) { - setStylePx(selectDiv, LEFT, select[LEFT] = 0); - setStylePx(selectDiv, WIDTH, select[WIDTH] = plotWidCss); + setStylePx(selectDiv, LEFT, select.left = 0); + setStylePx(selectDiv, WIDTH, select.width = plotWidCss); } } } @@ -3103,12 +3731,12 @@ var uPlot = (function () { var minX = min(mouseLeft0, mouseLeft1); var dx = abs(mouseLeft1 - mouseLeft0); - setStylePx(selectDiv, LEFT, select[LEFT] = minX); - setStylePx(selectDiv, WIDTH, select[WIDTH] = dx); + setStylePx(selectDiv, LEFT, select.left = minX); + setStylePx(selectDiv, WIDTH, select.width = dx); if (!dragY) { - setStylePx(selectDiv, TOP, select[TOP] = 0); - setStylePx(selectDiv, HEIGHT, select[HEIGHT] = plotHgtCss); + setStylePx(selectDiv, TOP, select.top = 0); + setStylePx(selectDiv, HEIGHT, select.height = plotHgtCss); } } @@ -3116,19 +3744,19 @@ var uPlot = (function () { var minY = min(mouseTop0, mouseTop1); var dy = abs(mouseTop1 - mouseTop0); - setStylePx(selectDiv, TOP, select[TOP] = minY); - setStylePx(selectDiv, HEIGHT, select[HEIGHT] = dy); + setStylePx(selectDiv, TOP, select.top = minY); + setStylePx(selectDiv, HEIGHT, select.height = dy); if (!dragX) { - setStylePx(selectDiv, LEFT, select[LEFT] = 0); - setStylePx(selectDiv, WIDTH, select[WIDTH] = plotWidCss); + setStylePx(selectDiv, LEFT, select.left = 0); + setStylePx(selectDiv, WIDTH, select.width = plotWidCss); } } if (!dragX && !dragY) { // the drag didn't pass the dist requirement - setStylePx(selectDiv, HEIGHT, select[HEIGHT] = 0); - setStylePx(selectDiv, WIDTH, select[WIDTH] = 0); + setStylePx(selectDiv, HEIGHT, select.height = 0); + setStylePx(selectDiv, WIDTH, select.width = 0); } } } @@ -3246,7 +3874,7 @@ var uPlot = (function () { cacheMouse(e, src, _x, _y, _w, _h, _i, false, true); - var hasSelect = select[WIDTH] > 0 || select[HEIGHT] > 0; + var hasSelect = select.width > 0 || select.height > 0; hasSelect && setSelect(select); @@ -3258,8 +3886,8 @@ var uPlot = (function () { if (dragX) { _setScale(xScaleKey, - scaleValueAtPos(select[LEFT], xScaleKey), - scaleValueAtPos(select[LEFT] + select[WIDTH], xScaleKey) + scaleValueAtPos(select.left, xScaleKey), + scaleValueAtPos(select.left + select.width, xScaleKey) ); } @@ -3269,8 +3897,8 @@ var uPlot = (function () { if (k != xScaleKey && sc.from == null && sc.min != inf) { _setScale(k, - scaleValueAtPos(select[TOP] + select[HEIGHT], k), - scaleValueAtPos(select[TOP], k) + scaleValueAtPos(select.top + select.height, k), + scaleValueAtPos(select.top, k) ); } } @@ -3359,10 +3987,10 @@ var uPlot = (function () { // internal pub/sub var events = {}; - events[mousedown] = mouseDown; - events[mousemove] = mouseMove; - events[mouseup] = mouseUp; - events[dblclick] = dblClick; + events.mousedown = mouseDown; + events.mousemove = mouseMove; + events.mouseup = mouseUp; + events.dblclick = dblClick; events["setSeries"] = function (e, src, idx, opts) { setSeries(idx, opts); }; @@ -3440,7 +4068,7 @@ var uPlot = (function () { else { autoScaleX(); } - _setSize(opts[WIDTH], opts[HEIGHT]); + _setSize(opts.width, opts.height); setSelect(select, false); } @@ -3464,11 +4092,27 @@ var uPlot = (function () { uPlot.rangeNum = rangeNum; uPlot.rangeLog = rangeLog; + { + uPlot.join = join; + } + { uPlot.fmtDate = fmtDate; uPlot.tzDate = tzDate; } + { + uPlot.addGap = addGap; + uPlot.clipGaps = clipGaps; + + var paths = uPlot.paths = {}; + + (paths.linear = linear); + (paths.spline = spline); + (paths.stepped = stepped); + (paths.bars = bars); + } + return uPlot; }()); diff --git a/plugins/uplot/uPlot.iife.min.js b/plugins/uplot/uPlot.iife.min.js index 553914096..c55e810d6 100644 --- a/plugins/uplot/uPlot.iife.min.js +++ b/plugins/uplot/uPlot.iife.min.js @@ -1,2 +1,2 @@ -/*! https://github.com/leeoniya/uPlot (v1.4.6) */ -var uPlot=function(){"use strict";function n(n,t,e,r){var i;e=e||0;for(var o=2147483647>=(r=r||t.length-1);r-e>1;)n>t[i=o?e+r>>1:v((e+r)/2)]?e=i:r=i;return n-t[e]>t[r]-n?r:e}var t=[0,0];function e(n,e,r,i){return t[0]=0>r?D(n,-r):n,t[1]=0>i?D(e,-i):e,t}function r(n,t,r,i){var o,l,a,u=10==r?w:x;return n==t&&(n/=r,t*=r),i?(o=v(u(n)),l=m(u(t)),n=(a=e(g(r,o),g(r,l),o,l))[0],t=a[1]):(o=v(u(n)),l=v(u(t)),n=z(n,(a=e(g(r,o),g(r,l),o,l))[0]),t=T(t,a[1])),[n,t]}var i={pad:0,soft:null,mode:0},o={min:i,max:i};function l(n,t,e,r){return H(e)?u(n,t,e):(i.pad=e,i.soft=r?0:null,i.mode=r?2:0,u(n,t,o))}function a(n,t){return null==n?t:n}function u(n,t,e){var r=e.min,i=e.max,o=a(r.pad,0),l=a(i.pad,0),u=a(r.hard,-b),s=a(i.hard,b),f=a(r.soft,b),h=a(i.soft,-b),m=a(r.mode,0),x=a(i.mode,0),_=t-n,y=_||c(t)||1e3,M=w(y),k=g(10,v(M)),S=D(z(n-y*(0==_?0==n?.1:1:o),k/100),6),E=n>=f&&(1==m||2==m&&f>S)?f:b,W=p(u,E>S&&n>=E?E:d(E,S)),Y=D(T(t+y*(0==_?0==t?.1:1:l),k/100),6),C=h>=t&&(1==x||2==x&&Y>h)?h:-b,A=d(s,Y>C&&C>=t?C:p(C,Y));return W==A&&0==W&&(A=100),[W,A]}var s=new Intl.NumberFormat(navigator.language).format,f=Math,c=f.abs,v=f.floor,h=f.round,m=f.ceil,d=f.min,p=f.max,g=f.pow,w=f.log10,x=f.log2,_=f.PI,b=1/0;function y(n,t){return h(n/t)*t}function M(n,t,e){return d(p(n,t),e)}function k(n){return"function"==typeof n?n:function(){return n}}function S(n,t){return t}function T(n,t){return m(n/t)*t}function z(n,t){return v(n/t)*t}function D(n,t){return h(n*(t=Math.pow(10,t)))/t}var E=new Map;function W(n){return((""+n).split(".")[1]||"").length}function Y(n,t,e,r){for(var i=[],o=r.map(W),l=t;e>l;l++)for(var a=c(l),u=D(g(n,l),a),s=0;r.length>s;s++){var f=r[s]*u,v=(0>f||0>l?a:0)+(o[s]>l?o[s]:0),h=D(f,v);i.push(h),E.set(h,v)}return i}var C={},A=Array.isArray;function F(n){return"string"==typeof n}function H(n){return"object"==typeof n&&null!==n}function P(n){var t;if(A(n))t=n.map(P);else if(H(n))for(var e in t={},n)t[e]=P(n[e]);else t=n;return t}function N(n){for(var t=arguments,e=1;t.length>e;e++){var r=t[e];for(var i in r)H(n[i])?N(n[i],P(r[i])):n[i]=P(r[i])}return n}var I="undefined"==typeof queueMicrotask?function(n){return Promise.resolve().then(n)}:queueMicrotask,V="width",L="height",O="top",j="bottom",B="left",G="right",R="#000",U="#0000",J="mousemove",q="mousedown",Z="mouseup",X="mouseenter",K="mouseleave",Q="dblclick",$="resize",nn="scroll",tn="u-off",en="u-label",rn=requestAnimationFrame,on=document,ln=window,an=devicePixelRatio;function un(n,t){null!=t&&n.classList.add(t)}function sn(n,t){n.classList.remove(t)}function fn(n,t,e){n.style[t]=e+"px"}function cn(n,t,e,r){var i=on.createElement(n);return null!=t&&un(i,t),null!=e&&e.insertBefore(i,r),i}function vn(n,t){return cn("div",n,t)}function hn(n,t,e,r,i){n.style.transform="translate("+t+"px,"+e+"px)",0>t||0>e||t>r||e>i?un(n,tn):sn(n,tn)}var mn={passive:!0};function dn(n,t,e){t.addEventListener(n,e,mn)}function pn(n,t,e){t.removeEventListener(n,e,mn)}var gn=["January","February","March","April","May","June","July","August","September","October","November","December"],wn=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function xn(n){return n.slice(0,3)}var _n=wn.map(xn),bn=gn.map(xn),yn={MMMM:gn,MMM:bn,WWWW:wn,WWW:_n};function Mn(n){return(10>n?"0":"")+n}var kn={YYYY:function(n){return n.getFullYear()},YY:function(n){return(n.getFullYear()+"").slice(2)},MMMM:function(n,t){return t.MMMM[n.getMonth()]},MMM:function(n,t){return t.MMM[n.getMonth()]},MM:function(n){return Mn(n.getMonth()+1)},M:function(n){return n.getMonth()+1},DD:function(n){return Mn(n.getDate())},D:function(n){return n.getDate()},WWWW:function(n,t){return t.WWWW[n.getDay()]},WWW:function(n,t){return t.WWW[n.getDay()]},HH:function(n){return Mn(n.getHours())},H:function(n){return n.getHours()},h:function(n){var t=n.getHours();return 0==t?12:t>12?t-12:t},AA:function(n){return 12>n.getHours()?"AM":"PM"},aa:function(n){return 12>n.getHours()?"am":"pm"},a:function(n){return 12>n.getHours()?"a":"p"},mm:function(n){return Mn(n.getMinutes())},m:function(n){return n.getMinutes()},ss:function(n){return Mn(n.getSeconds())},s:function(n){return n.getSeconds()},fff:function(n){return function(n){return(10>n?"00":100>n?"0":"")+n}(n.getMilliseconds())}};function Sn(n,t){t=t||yn;for(var e,r=[],i=/\{([a-z]+)\}|[^{]+/gi;e=i.exec(n);)r.push("{"==e[0][0]?kn[e[1]]:e[0]);return function(n){for(var e="",i=0;r.length>i;i++)e+="string"==typeof r[i]?r[i]:r[i](n,t);return e}}var Tn=(new Intl.DateTimeFormat).resolvedOptions().timeZone,zn=function(n){return n%1==0},Dn=[1,2,2.5,5],En=Y(10,-16,0,Dn),Wn=Y(10,0,16,Dn),Yn=Wn.filter(zn),Cn=En.concat(Wn),An="{YYYY}",Fn="\n"+An,Hn="{M}/{D}",Pn="\n"+Hn,Nn=Pn+"/{YY}",In="{aa}",Vn="{h}:{mm}"+In,Ln="\n"+Vn,On=":{ss}",jn=null;function Bn(n){var t=1e3*n,e=60*t,r=60*e,i=24*r,o=30*i,l=365*i;return[(1==n?Y(10,0,3,Dn).filter(zn):Y(10,-3,0,Dn)).concat([t,5*t,10*t,15*t,30*t,e,5*e,10*e,15*e,30*e,r,2*r,3*r,4*r,6*r,8*r,12*r,i,2*i,3*i,4*i,5*i,6*i,7*i,8*i,9*i,10*i,15*i,o,2*o,3*o,4*o,6*o,l,2*l,5*l,10*l,25*l,50*l,100*l]),[[l,An,jn,jn,jn,jn,jn,jn,1],[28*i,"{MMM}",Fn,jn,jn,jn,jn,jn,1],[i,Hn,Fn,jn,jn,jn,jn,jn,1],[r,"{h}"+In,Nn,jn,Pn,jn,jn,jn,1],[e,Vn,Nn,jn,Pn,jn,jn,jn,1],[t,On,Nn+" "+Vn,jn,Pn+" "+Vn,jn,Ln,jn,1],[n,On+".{fff}",Nn+" "+Vn,jn,Pn+" "+Vn,jn,Ln,jn,1]],function(t){return function(a,u,s,f,c,h){var m=[],d=c>=l,p=c>=o&&l>c,g=t(s),w=g*n,x=nt(g.getFullYear(),d?0:g.getMonth(),p||d?1:g.getDate()),_=x*n;if(p||d)for(var b=p?c/o:0,y=d?c/l:0,M=w==_?w:nt(x.getFullYear()+y,x.getMonth()+b,1)*n,k=new Date(M/n),S=k.getFullYear(),z=k.getMonth(),E=0;f>=M;E++){var W=nt(S+y*E,z+b*E,1);(M=(+W+(W-t(W*n)))*n)>f||m.push(M)}else{var Y=i>c?c:i,C=_+(v(s)-v(w))+T(w-_,Y);m.push(C);for(var A=t(C),F=A.getHours()+A.getMinutes()/e+A.getSeconds()/r,H=c/r,P=h/a.axes[u]._space;(C=D(C+c,1==n?0:3))<=f;)if(H>1){var N=v(D(F+H,6))%24,I=t(C).getHours()-N;I>1&&(I=-1),F=(F+H)%24,.7>D(((C-=I*r)-m[m.length-1])/c,3)*P||m.push(C)}else m.push(C)}return m}}]}var Gn=Bn(1),Rn=Gn[0],Un=Gn[1],Jn=Gn[2],qn=Bn(.001),Zn=qn[0],Xn=qn[1],Kn=qn[2];function Qn(n,t){return n.map((function(n){return n.map((function(e,r){return 0==r||8==r||null==e?e:t(1==r||0==n[8]?e:n[1]+e)}))}))}function $n(n,t){return function(e,r,i,o,l){var a,u,s,f,c,v,h=t.find((function(n){return l>=n[0]}))||t[t.length-1];return r.map((function(t){var e=n(t),r=e.getFullYear(),i=e.getMonth(),o=e.getDate(),l=e.getHours(),m=e.getMinutes(),d=e.getSeconds(),p=r!=a&&h[2]||i!=u&&h[3]||o!=s&&h[4]||l!=f&&h[5]||m!=c&&h[6]||d!=v&&h[7]||h[1];return a=r,u=i,s=o,f=l,c=m,v=d,p(e)}))}}function nt(n,t,e){return new Date(n,t,e)}function tt(n,t){return t(n)}function et(n,t){return function(e,r){return t(n(r))}}Y(2,-53,53,[1]);var rt=[0,0];function it(n,t,e){return function(n){0==n.button&&e(n)}}function ot(n,t,e){return e}var lt={show:!0,x:!0,y:!0,lock:!1,move:function(n,t,e){return rt[0]=t,rt[1]=e,rt},points:{show:function(n,t){var e=n.series[t],r=vn();r.style.background=e.stroke||R;var i=Mt(e.width,1),o=(i-1)/-2;return fn(r,V,i),fn(r,L,i),fn(r,"marginLeft",o),fn(r,"marginTop",o),r}},bind:{mousedown:it,mouseup:it,click:it,dblclick:it,mousemove:ot,mouseleave:ot,mouseenter:ot},drag:{setScale:!0,x:!0,y:!1,dist:0,uni:null,_x:!1,_y:!1},focus:{prox:-1},left:-10,top:-10,idx:null,dataIdx:function(n,t,e){return e}},at={show:!0,stroke:"rgba(0,0,0,0.07)",width:2,filter:S},ut=N({},at,{size:10}),st='12px system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"',ft="bold "+st,ct={show:!0,scale:"x",space:50,gap:5,size:50,labelSize:30,labelFont:ft,side:2,grid:at,ticks:ut,font:st,rotate:0},vt={show:!0,scale:"x",auto:!1,sorted:1,min:b,max:-b,idxs:[]};function ht(n,t){return t.map((function(n){return null==n?"":s(n)}))}function mt(n,t,e,r,i,o,l){for(var a=[],u=E.get(i)||0,s=e=l?e:D(T(e,i),u);r>=s;s=D(s+i,u))a.push(Object.is(s,-0)?0:s);return a}function dt(n,t,e,r,i){var o=[],l=n.scales[n.axes[t].scale].log,a=v((10==l?w:x)(e));i=g(l,a),0>a&&(i=D(i,-a));var u=e;do{o.push(u),i*l>(u=D(u+i,E.get(i)))||(i=u)}while(r>=u);return o}var pt=/./,gt=/[12357]/,wt=/[125]/,xt=/1/;function _t(n,t,e){var r=n.axes[e],i=r.scale;if(2==n.scales[i].log)return t;var o=n.valToPos,l=r._space,a=o(10,i),u=o(9,i)-a=r[1]-r[0]}},values:null,min:b,max:-b,idxs:[],path:null,clip:null},Tt={time:!0,auto:!0,distr:1,log:10,min:null,max:null},zt=N({},Tt,{time:!1}),Dt={};function Et(){var n=[];return{sub:function(t){n.push(t)},unsub:function(t){n=n.filter((function(n){return n!=t}))},pub:function(t,e,r,i,o,l,a){n.length>1&&n.forEach((function(n){n!=e&&n.pub(t,e,r,i,o,l,a)}))}}}function Wt(n,t,e,r){return(r?[n[0],n[1]].concat(n.slice(2)):[n[0]].concat(n.slice(1))).map((function(n,r){return Yt(n,r,t,e)}))}function Yt(n,t,e,r){return N({},0==t||n&&n.side%2==0?e:r,n)}function Ct(n,t){return 3==t.distr?w(n/t.min)/w(t.max/t.min):(n-t.min)/(t.max-t.min)}function At(n,t,e,r){return r+(1-Ct(n,t))*e}function Ft(n,t,e,r){return r+Ct(n,t)*e}var Ht=[null,null];function Pt(n,t,e){return null==t?Ht:[t,e]}var Nt=Pt;function It(n,t,e){return null==t?Ht:l(t,e,.1,!0)}function Vt(n,t,e,i){return null==t?Ht:r(t,e,n.scales[i].log,!1)}var Lt=Vt;function Ot(n){var t;return[n=n.replace(/(\d+)px/,(function(n,e){return(t=h(e*an))+"px"})),t]}function jt(t,e,i){var o={},a=!1;o.status=0;var u=o.root=vn("uplot");null!=t.id&&(u.id=t.id),un(u,t.class),t.title&&(vn("u-title",u).textContent=t.title);var s=cn("canvas"),f=o.ctx=s.getContext("2d"),x=vn("u-wrap",u),T=vn("u-under",x);x.appendChild(s);var z=vn("u-over",x);((t=P(t)).plugins||[]).forEach((function(n){n.opts&&(t=n.opts(o,t)||t)}));var W=t.ms||.001,Y=o.series=Wt(t.series||[],vt,St,!1),mn=o.axes=Wt(t.axes||[],ct,yt,!0),gn=o.scales={},wn=Y[0].scale;function xn(n){var e=gn[n];if(null==e){var r=(t.scales||C)[n]||C;if(null!=r.from)xn(r.from),gn[n]=N({},gn[r.from],r);else{var i=(e=gn[n]=N({},n==wn?Tt:zt,r)).time,o=3==e.distr,a=e.range;if(n!=wn&&!A(a)&&H(a)){var u=a;a=function(n,t,e){return null==t?Ht:l(t,e,u)}}e.range=k(a||(i?Nt:n==wn?o?Lt:Pt:o?Vt:It)),e.auto=k(e.auto)}}}for(var _n in xn("x"),xn("y"),Y.forEach((function(n){xn(n.scale)})),t.scales)xn(_n);var bn=gn[wn].distr,yn={};for(var Mn in gn){var kn=gn[Mn];null==kn.min&&null==kn.max||(yn[Mn]={min:kn.min,max:kn.max})}var Tn=o.gutters=N({x:h(yt.size/2),y:h(ct.size/3),_x:null,_y:null},t.gutters);Tn.x=k(Tn.x),Tn.y=k(Tn.y),Tn._x=Tn.x(o),Tn._y=Tn.y(o);var zn,Dn,En=t.tzDate||function(n){return new Date(n/W)},Wn=t.fmtDate||Sn,An=1==W?Jn(En):Kn(En),Fn=$n(En,Qn(1==W?Un:Xn,Wn)),Hn=et(En,tt("{YYYY}-{MM}-{DD} {h}:{mm}{aa}",Wn)),Pn=N({show:!0,live:!0},t.legend),Nn=Pn.show,In=[],Vn=!1;if(Nn){zn=cn("table","u-legend",u);var Ln=Y[1]?Y[1].values:null;if(Vn=null!=Ln){var On=cn("tr","u-thead",zn);for(var jn in cn("th",null,On),Dn=Ln(o,1,0))cn("th",en,On).textContent=jn}else Dn={_:0},un(zn,"u-inline"),Pn.live&&un(zn,"u-live")}var Bn=new Map;function Gn(n,t,e){var r=Bn.get(t)||{},i=Rt.bind[n](o,t,e);i&&(dn(n,t,r[n]=i),Bn.set(t,r))}var qn=0,nt=0,rt=0,it=0,ot=0,at=0,ut=0,st=0,ft=0,pt=0;o.bbox={};var gt=!1,wt=!1,xt=!1,Ct=!1,jt=!1;function Bt(n,t){n==o.width&&t==o.height||Gt(n,t),he(!1),xt=!0,wt=!0,Ct=!0,jt=!0,Se()}function Gt(n,t){o.width=qn=rt=n,o.height=nt=it=t,ot=at=0,function(){var n=!1,t=!1,e=!1,r=!1;mn.forEach((function(i){if(i.show&&i._show){var o=i.side,l=o%2,a=i._size+(i.labelSize=null!=i.label?i.labelSize||30:0);a>0&&(l?(rt-=a,3==o?(ot+=a,r=!0):e=!0):(it-=a,0==o?(at+=a,n=!0):t=!0))}})),(n||t)&&(e||(rt-=Tn._x),r||(rt-=Tn._x,ot+=Tn._x)),(r||e)&&(t||(it-=Tn._y),n||(it-=Tn._y,at+=Tn._y))}(),function(){var n=ot+rt,t=at+it,e=ot,r=at;function i(i,o){switch(i){case 1:return(n+=o)-o;case 2:return(t+=o)-o;case 3:return(e-=o)+o;case 0:return(r-=o)+o}}mn.forEach((function(n){if(n.show&&n._show){var t=n.side;n._pos=i(t,n._size),null!=n.label&&(n._lpos=i(t,n.labelSize))}}))}();var e=o.bbox;ut=e.left=y(ot*an,.5),st=e.top=y(at*an,.5),ft=e.width=y(rt*an,.5),pt=e.height=y(it*an,.5)}o.setSize=function(n){Bt(n.width,n.height)};var Rt=o.cursor=N({},lt,t.cursor);Rt._lock=!1,Rt.points.show=k(Rt.points.show);var Ut,Jt,qt=o.focus=N({},t.focus||{alpha:.3},Rt.focus),Zt=qt.prox>=0,Xt=[null];function Kt(n,t){var e=gn[n.scale].time,r=n.value;if(n.value=e?F(r)?et(En,tt(r,Wn)):r||Hn:r||bt,n.label=n.label||(e?"Time":"Value"),t>0){n.width=null==n.width?1:n.width,n.paths=n.paths||se,n.fillTo=n.fillTo||kt;var i=Mt(n.width,1);n.points=N({},{size:i,width:p(1,.2*i),stroke:n.stroke,space:2*i},n.points),n.points.show=k(n.points.show),n._paths=null}if(Nn&&In.splice(t,0,function(n,t){if(0==t&&(Vn||!Pn.live))return null;var e=[],r=cn("tr","u-series",zn,zn.childNodes[t]);un(r,n.class),n.show||un(r,tn);var i=cn("th",null,r),o=vn("u-marker",i);o.style.borderColor=n.width?n.stroke:t>0&&n.points.width?n.points.stroke:null,o.style.backgroundColor=n.fill||null;var l=vn(en,i);for(var a in l.textContent=n.label,t>0&&(Gn("click",i,(function(){Rt._lock||Le(Y.indexOf(n),{show:!n.show},ir.setSeries)})),Zt&&Gn(X,i,(function(){Rt._lock||Le(Y.indexOf(n),{focus:!0},ir.setSeries)}))),Dn){var u=cn("td","u-value",r);u.textContent="--",e.push(u)}return e}(n,t)),Rt.show){var l=function(n,t){if(t>0){var e=Rt.points.show(o,t);if(e)return un(e,"u-cursor-pt"),un(e,n.class),hn(e,-10,-10,rt,it),z.insertBefore(e,Xt[t]),e}}(n,t);l&&Xt.splice(t,0,l)}}o.addSeries=function(n,t){n=Yt(n,t=null==t?Y.length:t,vt,St),Y.splice(t,0,n),Kt(Y[t],t)},o.delSeries=function(n){Y.splice(n,1),Nn&&In.splice(n,1)[0][0].parentNode.remove(),Xt.length>1&&Xt.splice(n,1)[0].remove()},Y.forEach(Kt),mn.forEach((function(n,t){if(n._show=n.show,n.show){var e=gn[n.scale];null==e&&(n.scale=n.side%2?Y[1].scale:wn,e=gn[n.scale]);var r=e.time;n.size=k(n.size),n.space=k(n.space),n.rotate=k(n.rotate),n.incrs=k(n.incrs||(2==e.distr?Yn:r?1==W?Rn:Zn:Cn)),n.splits=k(n.splits||(r&&1==e.distr?An:3==e.distr?dt:mt));var i=n.values;n.values=r?A(i)?$n(En,Qn(i,Wn)):F(i)?function(n,t){var e=Sn(t);return function(t,r){return r.map((function(t){return e(n(t))}))}}(En,i):i||Fn:i||ht,n.filter=k(n.filter||(3==e.distr?_t:S)),n.font=Ot(n.font),n.labelFont=Ot(n.labelFont),n._size=n.size(o,null,t,0),n._space=n._rotate=n._incrs=n._found=n._splits=n._values=null}}));var Qt=null,$t=null,ne=Y[0].idxs,te=null,ee=!1;function re(n,t){if(!A(n)&&H(n)&&(Jt=n.isGap,n=n.data),(n=n||[])[0]=n[0]||[],o.data=n,e=n.slice(),Ut=(te=e[0]).length,2==bn&&(e[0]=te.map((function(n,t){return t}))),he(!0),rr("setData"),!1!==t){var r=gn[wn];r.auto(o,ee)?ie():Ve(wn,r.min,r.max),Ct=!0,jt=!0,Se()}}function ie(){var n,t,i,o;ee=!0,Ut>0?(Qt=ne[0]=0,$t=ne[1]=Ut-1,i=e[0][Qt],o=e[0][$t],2==bn?(i=Qt,o=$t):1==Ut&&(3==bn?(i=(n=r(i,i,gn[wn].log,!1))[0],o=n[1]):gn[wn].time?o=i+86400/W:(i=(t=l(i,o,.1,!0))[0],o=t[1]))):(Qt=ne[0]=i=null,$t=ne[1]=o=null),Ve(wn,i,o),ee=!1}function oe(n,t,e,r){f.strokeStyle=n||U,f.lineWidth=t,f.lineJoin="round",f.setLineDash(e||[]),f.fillStyle=r||U}o.setData=re;var le=1;function ae(n,t,e){if(e>t){var r=n[n.length-1];r&&r[0]==t?r[1]=e:n.push([t,e])}}function ue(n,t,e,r){for(var i=1==r?t:e;i>=t&&e>=i;i+=r)if(null!=n[i])return i;return-1}function se(n,t,r,i){var o,l,a,u,s,f=Y[t],c=Jt||f.isGap,v=e[0],m=e[t],g=gn[wn],w=gn[f.scale],x=1==le?{stroke:new Path2D,fill:null,clip:null}:Y[t-1]._paths,_=x.stroke,M=D(f.width*an,3),k=b,S=-b,T=[],z=h(Ft(v[1==le?r:i],g,ft,ut)),E=!1,W=ue(m,r,i,1),C=ue(m,r,i,-1),A=y(Ft(v[W],g,ft,ut),.5),F=y(Ft(v[C],g,ft,ut),.5);A>ut&&ae(T,ut,A),f.band&&1==le&&_.lineTo(A-2*M,h(At(m[r],w,pt,st)));for(var H=1==le?r:i;H>=r&&i>=H;H+=le){var P=h(Ft(v[H],g,ft,ut));if(P==z)null!=m[H]?(o=h(At(m[H],w,pt,st)),k=d(o,k),S=p(o,S)):!E&&c(n,t,H)&&(E=!0);else{var N=!1;k!=b?(_.lineTo(z,k),_.lineTo(z,S),_.lineTo(z,o),l=z):E&&(N=!0,E=!1),null!=m[H]?(o=h(At(m[H],w,pt,st)),_.lineTo(P,o),k=S=o,P-z>1&&null==m[H-1]&&c(n,t,H-1)&&(N=!0)):(k=b,S=-b,!E&&c(n,t,H)&&(E=!0)),N&&ae(T,l,P),z=P}}if(ut+ft>F&&ae(T,F,ut+ft),f.band&&(1==le?(a=F+2*M,u=C,s=e[t+1]):(a=A-2*M,u=W,s=e[t-1]),_.lineTo(a,h(At(m[u],w,pt,st))),_.lineTo(a,h(At(s[u],w,pt,st)))),1==le&&(x.clip=function(n,t){var e=null;if(t.length>0&&!Y[n].spanGaps){e=new Path2D;for(var r=ut,i=0;t.length>i;i++){var o=t[i];e.rect(r,st,o[0]-r,st+pt),r=o[1]}e.rect(r,st,ut+ft-r,st+pt)}return e}(t,T),null!=f.fill)){var I=x.fill=new Path2D(_),V=h(At(f.fillTo(n,t,f.min,f.max),w,pt,st));I.lineTo(F,V),I.lineTo(A,V)}return f.band&&(le*=-1),x}function fe(n,t,e,r,i,o,l,a,u){var s=l%2/2;f.translate(s,s),oe(a,l,u),f.beginPath();var c,v,h,m,d=i+(0==r||3==r?-o:o);0==e?(v=i,m=d):(c=i,h=d),n.forEach((function(n,r){null!=t[r]&&(0==e?c=h=n:v=m=n,f.moveTo(c,v),f.lineTo(h,m))})),f.stroke(),f.translate(-s,-s)}function ce(n){var t=!0;return mn.forEach((function(e,r){if(e.show){var i=gn[e.scale];if(null!=i.min){e._show||(t=!1,e._show=!0,he(!1));var l=e.side,a=i.min,u=i.max,s=function(n,t,e,r){var i,l=mn[n];if(r>0){var a=l._space=l.space(o,n,t,e,r),u=l._incrs=l.incrs(o,n,t,e,r,a);i=l._found=function(n,t,e,r,i){for(var o=r/(t-n),l=(""+v(n)).length,a=0;e.length>a;a++){var u=e[a]*o,s=10>e[a]?E.get(e[a]):0;if(u>=i&&17>l+s)return[e[a],u]}return[0,0]}(t,e,u,r,a)}else i=[0,0];return i}(r,a,u,0==l%2?rt:it),f=s[0],c=s[1];if(0!=c){var h=e._splits=e.splits(o,r,a,u,f,c,2==i.distr),d=2==i.distr?h.map((function(n){return te[n]})):h,p=2==i.distr?te[h[1]]-te[h[0]]:f,g=e._values=e.values(o,e.filter(o,d,r,c,p),r,c,p);e._rotate=2==l?e.rotate(o,g,r,c):0;var w=e._size;e._size=m(e.size(o,g,r,n)),null!=w&&e._size!=w&&(t=!1)}}else e._show&&(t=!1,e._show=!1,he(!1))}})),t}function ve(n){var t=!0,e=Tn._x,r=Tn._y;return Tn._x=m(Tn.x(o,n)),Tn._y=m(Tn.y(o,n)),Tn._x==e&&Tn._y==r||(t=!1),t}function he(n){Y.forEach((function(t,e){e>0&&(t._paths=null,n&&(t.min=null,t.max=null))}))}o.paths=se;var me,de,pe,ge,we,xe,_e,be,ye,Me,ke=!1;function Se(){ke||(I(Te),ke=!0)}function Te(){gt&&(function(){var t=P(gn);for(var r in t){var i=t[r],l=yn[r];if(null!=l&&null!=l.min)N(i,l),r==wn&&he(!0);else if(r!=wn)if(0==Ut&&null==i.from){var a=i.range(o,null,null,r);i.min=a[0],i.max=a[1]}else i.min=b,i.max=-b}if(Ut>0)for(var u in Y.forEach((function(r,i){var l=r.scale,a=t[l],u=yn[l];if(0==i){var s=a.range(o,a.min,a.max,l);a.min=s[0],a.max=s[1],Qt=n(a.min,e[0]),$t=n(a.max,e[0]),a.min>e[0][Qt]&&Qt++,e[0][$t]>a.max&&$t--,r.min=te[Qt],r.max=te[$t]}else if(r.show&&r.auto&&a.auto(o,ee)&&(null==u||null==u.min)){var f=null==r.min?function(n,t,e,r){var i=b,o=-b;if(1==r)i=n[t],o=n[e];else if(-1==r)i=n[e],o=n[t];else for(var l=t;e>=l;l++)null!=n[l]&&(i=d(i,n[l]),o=p(o,n[l]));return[i,o]}(e[i],Qt,$t,r.sorted):[r.min,r.max];a.min=d(a.min,r.min=f[0]),a.max=p(a.max,r.max=f[1])}r.idxs[0]=Qt,r.idxs[1]=$t})),t){var s=t[u],f=yn[u];if(null==s.from&&(null==f||null==f.min)){var c=s.range(o,s.min==b?null:s.min,s.max==-b?null:s.max,u);s.min=c[0],s.max=c[1]}}for(var v in t){var h=t[v];if(null!=h.from){var m=t[h.from],g=h.range(o,m.min,m.max,v);h.min=g[0],h.max=g[1]}}var w={},x=!1;for(var _ in t){var y=t[_],M=gn[_];M.min==y.min&&M.max==y.max||(M.min=y.min,M.max=y.max,w[_]=x=!0)}if(x){for(var k in Y.forEach((function(n){w[n.scale]&&(n._paths=null)})),w)xt=!0,rr("setScale",k);Rt.show&&(Ct=!0)}for(var S in yn)yn[S]=null}(),gt=!1),xt&&(function(){for(var n=!1,t=0;!n;){var e=ce(++t),r=ve(t);(n=e&&r)||(Gt(o.width,o.height),wt=!0)}}(),xt=!1),wt&&(fn(T,B,ot),fn(T,O,at),fn(T,V,rt),fn(T,L,it),fn(z,B,ot),fn(z,O,at),fn(z,V,rt),fn(z,L,it),fn(x,V,qn),fn(x,L,nt),s.width=h(qn*an),s.height=h(nt*an),Ue(),rr("setSize"),wt=!1),Rt.show&&Ct&&(Ge(),Ct=!1),qn>0&&nt>0&&(f.clearRect(0,0,s.width,s.height),rr("drawClear"),function(){mn.forEach((function(n,t){if(n.show&&n._show){var e=gn[n.scale],r=n.side,i=r%2,l=0==i?Ft:At,a=0==i?ft:pt,u=0==i?ut:st,s=h(n.gap*an),c=n.ticks,v=c.show?h(c.size*an):0,m=n._found,d=m[0],p=m[1],g=n._splits,w=2==e.distr?g.map((function(n){return te[n]})):g,x=2==e.distr?te[g[1]]-te[g[0]]:d,b=n._rotate*-_/180,y=h(n._pos*an),M=y+(v+s)*(0==i&&0==r||1==i&&3==r?-1:1),k=0==i?M:0,S=1==i?M:0;f.font=n.font[0],f.fillStyle=n.stroke||R,f.textAlign=1==n.align?B:2==n.align?G:b>0?B:0>b?G:0==i?"center":3==r?G:B,f.textBaseline=b||1==i?"middle":2==r?O:j;var T=1.5*n.font[1],z=g.map((function(n){return h(l(n,e,a,u))}));if(n._values.forEach((function(n,t){null!=n&&(0==i?S=z[t]:k=z[t],(""+n).split(/\n/gm).forEach((function(n,t){b?(f.save(),f.translate(S,k+t*T),f.rotate(b),f.fillText(n,0,0),f.restore()):f.fillText(n,S,k+t*T)})))})),n.label){f.save();var E=h(n._lpos*an);1==i?(S=k=0,f.translate(E,h(st+pt/2)),f.rotate((3==r?-_:_)/2)):(S=h(ut+ft/2),k=E),f.font=n.labelFont[0],f.textAlign="center",f.textBaseline=2==r?O:j,f.fillText(n.label,S,k),f.restore()}c.show&&fe(z,c.filter(o,w,t,p,x),i,r,y,v,D(c.width*an,3),c.stroke);var W=n.grid;W.show&&fe(z,W.filter(o,w,t,p,x),i,0==i?2:1,0==i?st:ut,0==i?pt:ft,D(W.width*an,3),W.stroke,W.dash)}})),rr("drawAxes")}(),Ut>0&&function(){Y.forEach((function(n,t){if(t>0&&n.show&&null==n._paths){var r=function(n){for(var t=M(Qt-1,0,Ut-1),e=M($t+1,0,Ut-1);null==n[t]&&t>0;)t--;for(;null==n[e]&&Ut-1>e;)e++;return[t,e]}(e[t]);n._paths=n.paths(o,t,r[0],r[1])}})),Y.forEach((function(n,t){t>0&&n.show&&(n._paths&&function(n){var t=Y[n];if(1==le){var e=t._paths,r=e.stroke,i=e.fill,o=e.clip,l=D(t.width*an,3),a=l%2/2;oe(t.stroke,l,t.dash,t.fill),f.globalAlpha=t.alpha,f.translate(a,a),f.save();var u=ut,s=st,c=ft,v=pt,h=l*an/2;0==t.min&&(v+=h),0==t.max&&(s-=h,v+=h),f.beginPath(),f.rect(u,s,c,v),f.clip(),null!=o&&f.clip(o),t.band?(f.fill(r),l&&f.stroke(r)):(l&&f.stroke(r),null!=t.fill&&f.fill(i)),f.restore(),f.translate(-a,-a),f.globalAlpha=1}t.band&&(le*=-1)}(t),n.points.show(o,t,Qt,$t)&&function(n){var t=Y[n],r=t.points,i=D(r.width*an,3),o=i%2/2,l=r.width>0,a=(r.size-r.width)/2*an,u=D(2*a,3);f.translate(o,o),f.save(),f.beginPath(),f.rect(ut-u,st-u,ft+2*u,pt+2*u),f.clip(),f.globalAlpha=t.alpha;for(var s=new Path2D,c=Qt;$t>=c;c++)if(null!=e[n][c]){var v=h(Ft(e[0][c],gn[wn],ft,ut)),m=h(At(e[n][c],gn[t.scale],pt,st));s.moveTo(v+a,m),s.arc(v,m,a,0,2*_)}oe(r.stroke,i,null,r.fill||(l?"#fff":t.stroke)),f.fill(s),l&&f.stroke(s),f.globalAlpha=1,f.restore(),f.translate(-o,-o)}(t),rr("drawSeries",t))}))}(),rr("draw")),a||(a=!0,o.status=1,rr("ready")),ke=!1}function ze(t,r){var i=gn[t];if(null==i.from){if(0==Ut){var l=i.range(o,r.min,r.max,t);r.min=l[0],r.max=l[1]}if(Ut>1&&null!=r.min&&null!=r.max&&1e-16>r.max-r.min)return;t==wn&&2==i.distr&&Ut>0&&(r.min=n(r.min,e[0]),r.max=n(r.max,e[0])),yn[t]=r,gt=!0,Se()}}o.redraw=function(n){!1!==n?Ve(wn,gn[wn].min,gn[wn].max):Se()},o.setScale=ze;var De=!1,Ee=Rt.drag,We=Ee.x,Ye=Ee.y;Rt.show&&(Rt.x&&(ye=Rt.left,me=vn("u-cursor-x",z)),Rt.y&&(Me=Rt.top,de=vn("u-cursor-y",z)));var Ce,Ae,Fe,He=o.select=N({show:!0,over:!0,left:0,width:0,top:0,height:0},t.select),Pe=He.show?vn("u-select",He.over?z:T):null;function Ne(n,t){if(He.show){for(var e in n)fn(Pe,e,He[e]=n[e]);!1!==t&&rr("setSelect")}}function Ie(n){var t=Nn?In[n][0].parentNode:null;Y[n].show?t&&sn(t,tn):(t&&un(t,tn),Xt.length>1&&hn(Xt[n],-10,-10,rt,it))}function Ve(n,t,e){ze(n,{min:t,max:e})}function Le(n,t,e){var r=Y[n];if(null!=t.focus&&function(n){n!=Fe&&(Y.forEach((function(t,e){!function(n,t){var e=Y[n];Oe(n,t),e.band&&Oe(Y[n+1].band?n+1:n-1,t)}(e,null==n||0==e||e==n?1:qt.alpha)})),Fe=n,Se())}(n),null!=t.show){if(r.show=t.show,Ie(n),r.band){var i=Y[n+1]&&Y[n+1].band?n+1:n-1;Y[i].show=r.show,Ie(i)}Ve(r.scale,null,null),Se()}rr("setSeries",n,t),e&&lr.pub("setSeries",o,n,t)}function Oe(n,t){Y[n].alpha=t,Rt.show&&Xt[n]&&(Xt[n].style.opacity=t),Nn&&In[n]&&(In[n][0].parentNode.style.opacity=t)}function je(n,t){var e=rt;t!=wn&&(n=(e=it)-n);var r=n/e,i=gn[t],o=i.min,l=i.max;return 3==i.distr?(o=w(o),l=w(l),g(10,o+(l-o)*r)):o+(l-o)*r}o.setSelect=Ne,o.setSeries=Le,Nn&&Zt&&dn(K,zn,(function(){Rt._lock||(Le(null,{focus:!1},ir.setSeries),Ge())})),o.valToIdx=function(t){return n(t,e[0])},o.posToIdx=function(t){return n(je(t,wn),e[0],Qt,$t)},o.posToVal=je,o.valToPos=function(n,t,e){return t==wn?Ft(n,gn[t],e?ft:rt,e?ut:0):At(n,gn[t],e?pt:it,e?st:0)},o.batch=function(n){n(o),Se()},o.setCursor=function(n){ye=n.left,Me=n.top,Ge()};var Be=0;function Ge(t,r){var i,l;if(Be=0,_e=ye,be=Me,i=Rt.move(o,ye,Me),ye=i[0],Me=i[1],Rt.show&&(Rt.x&&hn(me,h(ye),0,rt,it),Rt.y&&hn(de,0,h(Me),rt,it)),Ce=b,0>ye||0==Ut||Qt>$t){l=null;for(var u=0;Y.length>u;u++)if(u>0&&Xt.length>1&&hn(Xt[u],-10,-10,rt,it),Nn&&Pn.live){if(0==u&&Vn)continue;for(var s=0;In[u].length>s;s++)In[u][s].firstChild.nodeValue="--"}Zt&&Le(null,{focus:!0},ir.setSeries)}else{var f=je(ye,wn);l=n(f,e[0],Qt,$t);for(var v=gn[wn],m=D(Ft(e[0][l],v,rt,0),3),p=0;Y.length>p;p++){var g=Y[p],w=Rt.dataIdx(o,p,l,f),x=w==l?m:D(Ft(e[0][w],v,rt,0),3);if(p>0&&g.show){var _=e[p][w],y=null==_?-10:D(At(_,gn[g.scale],it,0),3);if(y>0){var M=c(y-Me);M>Ce||(Ce=M,Ae=p)}Xt.length>1&&hn(Xt[p],x,y,rt,it)}if(Nn&&Pn.live){if(w==Rt.idx&&!jt||0==p&&Vn)continue;var k=0==p&&2==bn?te:e[p],S=Vn?g.values(o,p,w):{_:g.value(o,k[w],p,w)},T=0;for(var z in S)In[p][T++].firstChild.nodeValue=S[z]}}jt=!1}if(He.show&&De)if(null!=r){var E=ir.scales,W=E[0],C=E[1],A=r.cursor.drag;if(We=A._x,Ye=A._y,W){var F=gn[W],H=r.posToVal(r.select.left,W),P=r.posToVal(r.select.left+r.select.width,W);He.left=Ft(H,F,rt,0),He.width=c(He.left-Ft(P,F,rt,0)),fn(Pe,B,He.left),fn(Pe,V,He.width),C||(fn(Pe,O,He.top=0),fn(Pe,L,He.height=it))}if(C){var N=gn[C],I=r.posToVal(r.select.top,C),j=r.posToVal(r.select.top+r.select.height,C);He.top=At(I,N,it,0),He.height=c(He.top-At(j,N,it,0)),fn(Pe,O,He.top),fn(Pe,L,He.height),W||(fn(Pe,B,He.left=0),fn(Pe,V,He.width=rt))}}else{var G=c(_e-pe),R=c(be-ge);We=Ee.x&&G>=Ee.dist,Ye=Ee.y&&R>=Ee.dist;var U=Ee.uni;if(null!=U?We&&Ye&&(Ye=R>=U,(We=G>=U)||Ye||(R>G?Ye=!0:We=!0)):Ee.x&&Ee.y&&(We||Ye)&&(We=Ye=!0),We){var q=d(we,ye),Z=c(ye-we);fn(Pe,B,He.left=q),fn(Pe,V,He.width=Z),Ye||(fn(Pe,O,He.top=0),fn(Pe,L,He.height=it))}if(Ye){var X=d(xe,Me),K=c(Me-xe);fn(Pe,O,He.top=X),fn(Pe,L,He.height=K),We||(fn(Pe,B,He.left=0),fn(Pe,V,He.width=rt))}We||Ye||(fn(Pe,L,He.height=0),fn(Pe,V,He.width=0))}Rt.idx=l,Rt.left=ye,Rt.top=Me,Ee._x=We,Ee._y=Ye,null!=t&&(lr.pub(J,o,ye,Me,rt,it,l),Zt&&Le(Ce>qt.prox?null:Ae,{focus:!0},ir.setSeries)),a&&rr("setCursor")}var Re=null;function Ue(){Re=z.getBoundingClientRect()}function Je(n,t,e,r,i,o){Rt._lock||(qe(n,t,e,r,i,o,0,!1,null!=n),null!=n?0==Be&&(Be=rn(Ge)):Ge(null,t))}function qe(n,t,e,r,i,l,a,u,s){var f;if(null!=n)e=n.clientX-Re.left,r=n.clientY-Re.top;else{if(0>e||0>r)return ye=-10,void(Me=-10);var c=ir.scales,v=c[0],h=c[1];e=null!=v?Ft(t.posToVal(e,v),gn[v],rt,0):rt*(e/i),r=null!=h?At(t.posToVal(r,h),gn[h],it,0):it*(r/l)}s&&(e>1&&rt-1>e||(e=y(e,rt)),r>1&&it-1>r||(r=y(r,it))),u?(pe=e,ge=r,f=Rt.move(o,e,r),we=f[0],xe=f[1]):(ye=e,Me=r)}function Ze(){Ne({width:0,height:0},!1)}function Xe(n,t,e,r,i,l){De=!0,We=Ye=Ee._x=Ee._y=!1,qe(n,t,e,r,i,l,0,!0,!1),null!=n&&(Gn(Z,on,Ke),lr.pub(q,o,we,xe,rt,it,null))}function Ke(n,t,e,r,i,l){De=Ee._x=Ee._y=!1,qe(n,t,e,r,i,l,0,!1,!0);var a=He.width>0||He.height>0;if(a&&Ne(He),Ee.setScale&&a){if(We&&Ve(wn,je(He.left,wn),je(He.left+He.width,wn)),Ye)for(var u in gn){var s=gn[u];u!=wn&&null==s.from&&s.min!=b&&Ve(u,je(He.top+He.height,u),je(He.top,u))}Ze()}else Rt.lock&&(Rt._lock=!Rt._lock,Rt._lock||Ge());null!=n&&(function(n,t){var e=Bn.get(t)||{};pn(n,t,e[n]),e[n]=null}(Z,on),lr.pub(Z,o,ye,Me,rt,it,null))}function Qe(){if(!Rt._lock){var n=De;if(De){var t=!0,e=!0;if(We&&Ye&&(t=10>=ye||ye>=rt-10,e=10>=Me||Me>=it-10),We&&t){var r=ye,i=rt-ye,o=d(r,i);o==r&&(ye=0),o==i&&(ye=rt)}if(Ye&&e){var l=Me,a=it-Me,u=d(l,a);u==l&&(Me=0),u==a&&(Me=it)}Ge(1),De=!1}ye=-10,Me=-10,Ge(1),n&&(De=n)}}function $e(n){ie(),Ze(),null!=n&&lr.pub(Q,o,ye,Me,rt,it,null)}var nr,tr={};tr.mousedown=Xe,tr.mousemove=Je,tr.mouseup=Ke,tr.dblclick=$e,tr.setSeries=function(n,t,e,r){Le(e,r)},Rt.show&&(Gn(q,z,Xe),Gn(J,z,Je),Gn(X,z,Ue),Gn(K,z,(function(){rn(Qe)})),Gn(Q,z,$e),nr=function(n){var t=null;function e(){t=null,n()}return function(){clearTimeout(t),t=setTimeout(e,100)}}(Ue),dn($,ln,nr),dn(nn,ln,nr),o.syncRect=Ue);var er=o.hooks=t.hooks||{};function rr(n,t,e){n in er&&er[n].forEach((function(n){n.call(null,o,t,e)}))}(t.plugins||[]).forEach((function(n){for(var t in n.hooks)er[t]=(er[t]||[]).concat(n.hooks[t])}));var ir=N({key:null,setSeries:!1,scales:[wn,null]},Rt.sync),or=ir.key,lr=null!=or?Dt[or]=Dt[or]||Et():Et();function ar(){rr("init",t,e),re(e||t.data,!1),yn[wn]?ze(wn,yn[wn]):ie(),Bt(t.width,t.height),Ne(He,!1)}return lr.sub(o),o.pub=function(n,t,e,r,i,o,l){tr[n](null,t,e,r,i,o,l)},o.destroy=function(){lr.unsub(o),pn($,ln,nr),pn(nn,ln,nr),u.remove(),rr("destroy")},i?i instanceof HTMLElement?(i.appendChild(u),ar()):i(o,ar):ar(),o}return jt.assign=N,jt.fmtNum=s,jt.rangeNum=l,jt.rangeLog=r,jt.fmtDate=Sn,jt.tzDate=function(n,t){var e;return"Etc/UTC"==t?e=new Date(+n+6e4*n.getTimezoneOffset()):t==Tn?e=n:(e=new Date(n.toLocaleString("en-US",{timeZone:t}))).setMilliseconds(n.getMilliseconds()),e},jt}(); +/*! https://github.com/leeoniya/uPlot (v1.5.2) */ +var uPlot=function(){"use strict";function n(n,t,e,r){var i;e=e||0;for(var o=2147483647>=(r=r||t.length-1);r-e>1;)n>t[i=o?e+r>>1:h((e+r)/2)]?e=i:r=i;return n-t[e]>t[r]-n?r:e}function t(n,t,e,r){for(var i=1==r?t:e;i>=t&&e>=i;i+=r)if(null!=n[i])return i;return-1}var e=[0,0];function r(n,t,r,i){return e[0]=0>r?P(n,-r):n,e[1]=0>i?P(t,-i):t,e}function i(n,t,e,i){var o,l,a,u=10==e?b:_;return n==t&&(n/=e,t*=e),i?(o=h(u(n)),l=p(u(t)),n=(a=r(w(e,o),w(e,l),o,l))[0],t=a[1]):(o=h(u(n)),l=h(u(t)),n=Y(n,(a=r(w(e,o),w(e,l),o,l))[0]),t=E(t,a[1])),[n,t]}var o={pad:0,soft:null,mode:0},l={min:o,max:o};function a(n,t,e,r){return N(e)?s(n,t,e):(o.pad=e,o.soft=r?0:null,o.mode=r?2:0,s(n,t,l))}function u(n,t){return null==n?t:n}function s(n,t,e){var r=e.min,i=e.max,o=u(r.pad,0),l=u(i.pad,0),a=u(r.hard,-y),s=u(i.hard,y),f=u(r.soft,y),c=u(i.soft,-y),d=u(r.mode,0),p=u(i.mode,0),x=t-n,_=x||v(t)||1e3,k=b(_),M=w(10,h(k)),T=P(Y(n-_*(0==x?0==n?.1:1:o),M/100),6),S=n>=f&&(1==d||2==d&&f>T)?f:y,z=g(a,S>T&&n>=S?S:m(S,T)),D=P(E(t+_*(0==x?0==t?.1:1:l),M/100),6),W=c>=t&&(1==p||2==p&&D>c)?c:-y,A=m(s,D>W&&W>=t?W:g(W,D));return z==A&&0==z&&(A=100),[z,A]}var f=new Intl.NumberFormat(navigator.language).format,c=Math,v=c.abs,h=c.floor,d=c.round,p=c.ceil,m=c.min,g=c.max,w=c.pow,x=c.sqrt,b=c.log10,_=c.log2,k=c.PI,y=1/0;function M(n,t){return d(n/t)*t}function T(n,t,e){return m(g(n,t),e)}function S(n){return"function"==typeof n?n:function(){return n}}var z=function(n,t){return t},D=function(){return null};function E(n,t){return p(n/t)*t}function Y(n,t){return h(n/t)*t}function P(n,t){return d(n*(t=Math.pow(10,t)))/t}var W=new Map;function A(n){return((""+n).split(".")[1]||"").length}function C(n,t,e,r){for(var i=[],o=r.map(A),l=t;e>l;l++)for(var a=v(l),u=P(w(n,l),a),s=0;r.length>s;s++){var f=r[s]*u,c=(0>f||0>l?a:0)+(o[s]>l?o[s]:0),h=P(f,c);i.push(h),W.set(h,c)}return i}var F={},G=Array.isArray;function H(n){return"string"==typeof n}function N(n){var t=!1;if(null!=n){var e=n.constructor;t=null==e||e==Object}return t}function I(n){var t;if(G(n))t=n.map(I);else if(N(n))for(var e in t={},n)t[e]=I(n[e]);else t=n;return t}function V(n){for(var t=arguments,e=1;t.length>e;e++){var r=t[e];for(var i in r)N(n[i])?V(n[i],I(r[i])):n[i]=I(r[i])}return n}var L="undefined"==typeof queueMicrotask?function(n){return Promise.resolve().then(n)}:queueMicrotask,O="width",j="height",B="top",R="bottom",U="left",q="right",J="#000",X="#0000",Z="mousemove",K="mousedown",Q="mouseup",$="mouseenter",nn="mouseleave",tn="dblclick",en="resize",rn="scroll",on="u-off",ln="u-label",an=requestAnimationFrame,un=document,sn=window,fn=devicePixelRatio;function cn(n,t){null!=t&&n.classList.add(t)}function vn(n,t){n.classList.remove(t)}function hn(n,t,e){n.style[t]=e+"px"}function dn(n,t,e,r){var i=un.createElement(n);return null!=t&&cn(i,t),null!=e&&e.insertBefore(i,r),i}function pn(n,t){return dn("div",n,t)}function mn(n,t,e,r,i){n.style.transform="translate("+t+"px,"+e+"px)",0>t||0>e||t>r||e>i?cn(n,on):vn(n,on)}var gn={passive:!0};function wn(n,t,e){t.addEventListener(n,e,gn)}function xn(n,t,e){t.removeEventListener(n,e,gn)}var bn=["January","February","March","April","May","June","July","August","September","October","November","December"],_n=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function kn(n){return n.slice(0,3)}var yn=_n.map(kn),Mn=bn.map(kn),Tn={MMMM:bn,MMM:Mn,WWWW:_n,WWW:yn};function Sn(n){return(10>n?"0":"")+n}var zn={YYYY:function(n){return n.getFullYear()},YY:function(n){return(n.getFullYear()+"").slice(2)},MMMM:function(n,t){return t.MMMM[n.getMonth()]},MMM:function(n,t){return t.MMM[n.getMonth()]},MM:function(n){return Sn(n.getMonth()+1)},M:function(n){return n.getMonth()+1},DD:function(n){return Sn(n.getDate())},D:function(n){return n.getDate()},WWWW:function(n,t){return t.WWWW[n.getDay()]},WWW:function(n,t){return t.WWW[n.getDay()]},HH:function(n){return Sn(n.getHours())},H:function(n){return n.getHours()},h:function(n){var t=n.getHours();return 0==t?12:t>12?t-12:t},AA:function(n){return 12>n.getHours()?"AM":"PM"},aa:function(n){return 12>n.getHours()?"am":"pm"},a:function(n){return 12>n.getHours()?"a":"p"},mm:function(n){return Sn(n.getMinutes())},m:function(n){return n.getMinutes()},ss:function(n){return Sn(n.getSeconds())},s:function(n){return n.getSeconds()},fff:function(n){return function(n){return(10>n?"00":100>n?"0":"")+n}(n.getMilliseconds())}};function Dn(n,t){t=t||Tn;for(var e,r=[],i=/\{([a-z]+)\}|[^{]+/gi;e=i.exec(n);)r.push("{"==e[0][0]?zn[e[1]]:e[0]);return function(n){for(var e="",i=0;r.length>i;i++)e+="string"==typeof r[i]?r[i]:r[i](n,t);return e}}var En=(new Intl.DateTimeFormat).resolvedOptions().timeZone,Yn=function(n){return n%1==0},Pn=[1,2,2.5,5],Wn=C(10,-16,0,Pn),An=C(10,0,16,Pn),Cn=An.filter(Yn),Fn=Wn.concat(An),Gn="{YYYY}",Hn="\n"+Gn,Nn="{M}/{D}",In="\n"+Nn,Vn=In+"/{YY}",Ln="{aa}",On="{h}:{mm}"+Ln,jn="\n"+On,Bn=":{ss}",Rn=null;function Un(n){var t=1e3*n,e=60*t,r=60*e,i=24*r,o=30*i,l=365*i;return[(1==n?C(10,0,3,Pn).filter(Yn):C(10,-3,0,Pn)).concat([t,5*t,10*t,15*t,30*t,e,5*e,10*e,15*e,30*e,r,2*r,3*r,4*r,6*r,8*r,12*r,i,2*i,3*i,4*i,5*i,6*i,7*i,8*i,9*i,10*i,15*i,o,2*o,3*o,4*o,6*o,l,2*l,5*l,10*l,25*l,50*l,100*l]),[[l,Gn,Rn,Rn,Rn,Rn,Rn,Rn,1],[28*i,"{MMM}",Hn,Rn,Rn,Rn,Rn,Rn,1],[i,Nn,Hn,Rn,Rn,Rn,Rn,Rn,1],[r,"{h}"+Ln,Vn,Rn,In,Rn,Rn,Rn,1],[e,On,Vn,Rn,In,Rn,Rn,Rn,1],[t,Bn,Vn+" "+On,Rn,In+" "+On,Rn,jn,Rn,1],[n,Bn+".{fff}",Vn+" "+On,Rn,In+" "+On,Rn,jn,Rn,1]],function(t){return function(a,u,s,f,c,v){var d=[],p=c>=l,m=c>=o&&l>c,g=t(s),w=g*n,x=rt(g.getFullYear(),p?0:g.getMonth(),m||p?1:g.getDate()),b=x*n;if(m||p)for(var _=m?c/o:0,k=p?c/l:0,y=w==b?w:rt(x.getFullYear()+k,x.getMonth()+_,1)*n,M=new Date(y/n),T=M.getFullYear(),S=M.getMonth(),z=0;f>=y;z++){var D=rt(T+k*z,S+_*z,1);(y=(+D+(D-t(D*n)))*n)>f||d.push(y)}else{var Y=i>c?c:i,W=b+(h(s)-h(w))+E(w-b,Y);d.push(W);for(var A=t(W),C=A.getHours()+A.getMinutes()/e+A.getSeconds()/r,F=c/r,G=v/a.axes[u]._space;(W=P(W+c,1==n?0:3))<=f;)if(F>1){var H=h(P(C+F,6))%24,N=t(W).getHours()-H;N>1&&(N=-1),C=(C+F)%24,.7>P(((W-=N*r)-d[d.length-1])/c,3)*G||d.push(W)}else d.push(W)}return d}}]}var qn=Un(1),Jn=qn[0],Xn=qn[1],Zn=qn[2],Kn=Un(.001),Qn=Kn[0],$n=Kn[1],nt=Kn[2];function tt(n,t){return n.map((function(n){return n.map((function(e,r){return 0==r||8==r||null==e?e:t(1==r||0==n[8]?e:n[1]+e)}))}))}function et(n,t){return function(e,r,i,o,l){var a,u,s,f,c,v,h=t.find((function(n){return l>=n[0]}))||t[t.length-1];return r.map((function(t){var e=n(t),r=e.getFullYear(),i=e.getMonth(),o=e.getDate(),l=e.getHours(),d=e.getMinutes(),p=e.getSeconds(),m=r!=a&&h[2]||i!=u&&h[3]||o!=s&&h[4]||l!=f&&h[5]||d!=c&&h[6]||p!=v&&h[7]||h[1];return a=r,u=i,s=o,f=l,c=d,v=p,m(e)}))}}function rt(n,t,e){return new Date(n,t,e)}function it(n,t){return t(n)}function ot(n,t){return function(e,r){return t(n(r))}}function lt(n,t){var e=n.series[t];return e.width?e.stroke(n,t):e.points.width?e.points.stroke(n,t):null}function at(n,t){return n.series[t].fill(n,t)}C(2,-53,53,[1]);var ut=[0,0];function st(n,t,e){return function(n){0==n.button&&e(n)}}function ft(n,t,e){return e}var ct={show:!0,x:!0,y:!0,lock:!1,move:function(n,t,e){return ut[0]=t,ut[1]=e,ut},points:{show:function(n,t){var e=n.cursor.points,r=pn(),i=e.stroke(n,t),o=e.fill(n,t);r.style.background=o||i;var l=e.size(n,t),a=e.width(n,t,l);a&&(r.style.border=a+"px solid "+i);var u=l/-2;return hn(r,O,l),hn(r,j,l),hn(r,"marginLeft",u),hn(r,"marginTop",u),r},size:function(n,t){return Dt(n.series[t].width,1)},width:0,stroke:function(n,t){return n.series[t].stroke(n,t)},fill:function(n,t){return n.series[t].stroke(n,t)}},bind:{mousedown:st,mouseup:st,click:st,dblclick:st,mousemove:ft,mouseleave:ft,mouseenter:ft},drag:{setScale:!0,x:!0,y:!1,dist:0,uni:null,_x:!1,_y:!1},focus:{prox:-1},left:-10,top:-10,idx:null,dataIdx:function(n,t,e){return e}},vt={show:!0,stroke:"rgba(0,0,0,0.07)",width:2,filter:z},ht=V({},vt,{size:10}),dt='12px system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"',pt="bold "+dt,mt={show:!0,scale:"x",space:50,gap:5,size:50,labelSize:30,labelFont:pt,side:2,grid:vt,ticks:ht,font:dt,rotate:0},gt={show:!0,scale:"x",auto:!1,sorted:1,min:y,max:-y,idxs:[]};function wt(n,t){return t.map((function(n){return null==n?"":f(n)}))}function xt(n,t,e,r,i,o,l){for(var a=[],u=W.get(i)||0,s=e=l?e:P(E(e,i),u);r>=s;s=P(s+i,u))a.push(Object.is(s,-0)?0:s);return a}function bt(n,t,e,r,i){var o=[],l=n.scales[n.axes[t].scale].log,a=h((10==l?b:_)(e));i=w(l,a),0>a&&(i=P(i,-a));var u=e;do{o.push(u),i*l>(u=P(u+i,W.get(i)))||(i=u)}while(r>=u);return o}var _t=/./,kt=/[12357]/,yt=/[125]/,Mt=/1/;function Tt(n,t,e){var r=n.axes[e],i=r.scale;if(2==n.scales[i].log)return t;var o=n.valToPos,l=r._space,a=o(10,i),u=o(9,i)-a=r[1]-r[0]}},values:null,min:y,max:-y,idxs:[],path:null,clip:null};function Pt(n,t,e){return e/10}var Wt={time:!0,auto:!0,distr:1,log:10,min:null,max:null},At=V({},Wt,{time:!1}),Ct={};function Ft(){var n=[];return{sub:function(t){n.push(t)},unsub:function(t){n=n.filter((function(n){return n!=t}))},pub:function(t,e,r,i,o,l,a){n.length>1&&n.forEach((function(n){n!=e&&n.pub(t,e,r,i,o,l,a)}))}}}var Gt=[,,,,,,,,,,,];function Ht(n,t){var e=n.series[t],r=n.scales,i=n.bbox;return Gt[0]=e,Gt[1]=n._data[0],Gt[2]=n._data[t],Gt[3]=r[n.series[0].scale],Gt[4]=r[e.scale],Gt[5]=n.valToPosX,Gt[6]=n.valToPosY,Gt[7]=i.left,Gt[8]=i.top,Gt[9]=i.width,Gt[10]=i.height,Gt}function Nt(n,t,e,r,i,o){var l=null;if(n.length>0&&(l=new Path2D,1==t)){for(var a=e,u=0;n.length>u;u++){var s=n[u];l.rect(a,r,s[0]-a,r+o),a=s[1]}l.rect(a,r,e+i-a,r+o)}return l}function It(n,t,e){if(e>t){var r=n[n.length-1];r&&r[0]==t?r[1]=e:n.push([t,e])}}var Vt=1;function Lt(n,t,e,r,i){n.lineTo(t,e),n.lineTo(t,r),n.lineTo(t,i)}function Ot(){return function(n,e,r,i){var o,l,a,u=Ht(n,e),s=u[0],f=u[1],c=u[2],v=u[3],h=u[4],p=u[5],w=u[6],x=u[7],b=u[8],_=u[9],k=u[10],T=s.isGap,S=1==Vt?{stroke:new Path2D,fill:null,clip:null}:n.series[e-1]._paths,z=S.stroke,D=P(s.width*fn,3),E=y,Y=-y,W=[],A=d(p(f[1==Vt?r:i],v,_,x)),C=!1,F=t(c,r,i,1),G=t(c,r,i,-1),H=M(p(f[F],v,_,x),.5),N=M(p(f[G],v,_,x),.5);H>x&&It(W,x,H),s.band&&1==Vt&&z.lineTo(H-2*D,d(w(c[r],h,k,b)));for(var I=1==Vt?r:i;I>=r&&i>=I;I+=Vt){var V=d(p(f[I],v,_,x));if(V==A)null!=c[I]?(o=d(w(c[I],h,k,b)),E==y&&z.lineTo(V,o),E=m(o,E),Y=g(o,Y)):!C&&T(n,e,I)&&(C=!0);else{var L=!1;E!=y?(Lt(z,A,E,Y,o),l=a=A):C&&(L=!0,C=!1),null!=c[I]?(o=d(w(c[I],h,k,b)),z.lineTo(V,o),E=Y=o,V-A>1&&null==c[I-1]&&T(n,e,I-1)&&(L=!0)):(E=y,Y=-y,!C&&T(n,e,I)&&(C=!0)),L&&It(W,l,V),A=V}}if(E!=y&&E!=Y&&a!=A&&Lt(z,A,E,Y,o),x+_>N&&It(W,N,x+_),s.band){var O,j,B,R=n._data;1==Vt?(O=N+2*D,j=G,B=R[e+1]):(O=H-2*D,j=F,B=R[e-1]),z.lineTo(O,d(w(c[j],h,k,b))),z.lineTo(O,d(w(B[j],h,k,b)))}if(1==Vt&&(s.spanGaps||(S.clip=Nt(W,1,x,b,_,k)),null!=s.fill)){var U=S.fill=new Path2D(z),q=d(w(s.fillTo(n,e,s.min,s.max),h,k,b));U.lineTo(N,q),U.lineTo(H,q)}return s.band&&(Vt*=-1),S}}var jt=Ot();function Bt(n,t,e,r){return(r?[n[0],n[1]].concat(n.slice(2)):[n[0]].concat(n.slice(1))).map((function(n,r){return Rt(n,r,t,e)}))}function Rt(n,t,e,r){return V({},0==t||n&&n.side%2==0?e:r,n)}var Ut=[null,null];function qt(n,t,e){return null==t?Ut:[t,e]}var Jt=qt;function Xt(n,t,e){return null==t?Ut:a(t,e,.1,!0)}function Zt(n,t,e,r){return null==t?Ut:i(t,e,n.scales[r].log,!1)}var Kt=Zt;function Qt(n){var t;return[n=n.replace(/(\d+)px/,(function(n,e){return(t=d(e*fn))+"px"})),t]}function $t(t,e,r){var o={};function l(n,t){return 3==t.distr?b((n>0?n:t.clamp(o,n,t.min,t.max,t.key))/t.min)/b(t.max/t.min):(n-t.min)/(t.max-t.min)}function s(n,t,e,r){return r+l(n,t)*e}function f(n,t,e,r){return r+(1-l(n,t))*e}o.valToPosX=s,o.valToPosY=f;var c=!1;o.status=0;var x=o.root=pn("uplot");null!=t.id&&(x.id=t.id),cn(x,t.class),t.title&&(pn("u-title",x).textContent=t.title);var _=dn("canvas"),Y=o.ctx=_.getContext("2d"),A=pn("u-wrap",x),C=pn("u-under",A);A.appendChild(_);var gn=pn("u-over",A);((t=I(t)).plugins||[]).forEach((function(n){n.opts&&(t=n.opts(o,t)||t)}));var bn=t.ms||.001,_n=o.series=Bt(t.series||[],gt,Yt,!1),kn=o.axes=Bt(t.axes||[],mt,zt,!0),yn=o.scales={},Mn=_n[0].scale,Tn={axes:function(){kn.forEach((function(n,t){if(n.show&&n._show){var e=yn[n.scale],r=n.side,i=r%2,l=0==i?s:f,a=0==i?Mt:Gt,u=0==i?kt:yt,c=d(n.gap*fn),v=n.ticks,h=v.show?d(v.size*fn):0,p=n._found,m=p[0],g=p[1],w=n._splits,x=2==e.distr?w.map((function(n){return de[n]})):w,b=2==e.distr?de[w[1]]-de[w[0]]:m,_=n._rotate*-k/180,y=d(n._pos*fn),M=y+(h+c)*(0==i&&0==r||1==i&&3==r?-1:1),T=0==i?M:0,S=1==i?M:0;Y.font=n.font[0],Y.fillStyle=n.stroke||J,Y.textAlign=1==n.align?U:2==n.align?q:_>0?U:0>_?q:0==i?"center":3==r?q:U,Y.textBaseline=_||1==i?"middle":2==r?B:R;var z=1.5*n.font[1],D=w.map((function(n){return d(l(n,e,a,u))}));if(n._values.forEach((function(n,t){null!=n&&(0==i?S=D[t]:T=D[t],(""+n).split(/\n/gm).forEach((function(n,t){_?(Y.save(),Y.translate(S,T+t*z),Y.rotate(_),Y.fillText(n,0,0),Y.restore()):Y.fillText(n,S,T+t*z)})))})),n.label){Y.save();var E=d(n._lpos*fn);1==i?(S=T=0,Y.translate(E,d(yt+Gt/2)),Y.rotate((3==r?-k:k)/2)):(S=d(kt+Mt/2),T=E),Y.font=n.labelFont[0],Y.textAlign="center",Y.textBaseline=2==r?B:R,Y.fillText(n.label,S,T),Y.restore()}v.show&&be(D,v.filter(o,x,t,g,b),i,r,y,h,P(v.width*fn,3),v.stroke);var W=n.grid;W.show&&be(D,W.filter(o,x,t,g,b),i,0==i?2:1,0==i?yt:kt,0==i?Gt:Mt,P(W.width*fn,3),W.stroke,W.dash)}})),hr("drawAxes")},series:function(){ue>0&&(_n.forEach((function(n,t){if(t>0&&n.show&&null==n._paths){var r=function(n){for(var t=T(ce-1,0,ue-1),e=T(ve+1,0,ue-1);null==n[t]&&t>0;)t--;for(;null==n[e]&&ue-1>e;)e++;return[t,e]}(e[t]);n._paths=n.paths(o,t,r[0],r[1])}})),_n.forEach((function(n,t){t>0&&n.show&&(n._paths&&function(n){var t=_n[n];if(1==xe){var e=t._paths,r=e.stroke,i=e.fill,l=e.clip,a=P(t.width*fn,3),u=a%2/2,s=t._stroke=t.stroke(o,n),f=t._fill=t.fill(o,n);we(s,a,t.dash,f),Y.globalAlpha=t.alpha,Y.translate(u,u),Y.save();var c=kt,v=yt,h=Mt,d=Gt,p=a*fn/2;0==t.min&&(d+=p),0==t.max&&(v-=p,d+=p),Y.beginPath(),Y.rect(c,v,h,d),Y.clip(),null!=l&&Y.clip(l),t.band?(Y.fill(r),a&&Y.stroke(r)):(null!=f&&Y.fill(i),a&&Y.stroke(r)),Y.restore(),Y.translate(-u,-u),Y.globalAlpha=1}t.band&&(xe*=-1)}(t),n.points.show(o,t,ce,ve)&&function(n){var t=_n[n],r=t.points,i=P(r.width*fn,3),l=i%2/2,a=r.width>0,u=(r.size-r.width)/2*fn,c=P(2*u,3);Y.translate(l,l),Y.save(),Y.beginPath(),Y.rect(kt-c,yt-c,Mt+2*c,Gt+2*c),Y.clip(),Y.globalAlpha=t.alpha;for(var v=new Path2D,h=ce;ve>=h;h++)if(null!=e[n][h]){var p=d(s(e[0][h],yn[Mn],Mt,kt)),m=d(f(e[n][h],yn[t.scale],Gt,yt));v.moveTo(p+u,m),v.arc(p,m,u,0,2*k)}var g=r._stroke=r.stroke(o,n),w=r._fill=r.fill(o,n);we(g,i,r.dash,w||(a?"#fff":t._stroke)),Y.fill(v),a&&Y.stroke(v),Y.globalAlpha=1,Y.restore(),Y.translate(-l,-l)}(t),hr("drawSeries",t))})))}},Sn=(t.drawOrder||["axes","series"]).map((function(n){return Tn[n]}));function zn(n){var e=yn[n];if(null==e){var r=(t.scales||F)[n]||F;if(null!=r.from)zn(r.from),yn[n]=V({},yn[r.from],r);else{(e=yn[n]=V({},n==Mn?Wt:At,r)).key=n;var i=e.time,o=3==e.distr,l=e.range;if(n!=Mn&&!G(l)&&N(l)){var u=l;l=function(n,t,e){return null==t?Ut:a(t,e,u)}}e.range=S(l||(i?Jt:n==Mn?o?Kt:qt:o?Zt:Xt)),e.auto=S(e.auto),e.clamp=S(e.clamp||Pt)}}}for(var En in zn("x"),zn("y"),_n.forEach((function(n){zn(n.scale)})),t.scales)zn(En);var Yn=yn[Mn].distr,Pn={};for(var Wn in yn){var An=yn[Wn];null==An.min&&null==An.max||(Pn[Wn]={min:An.min,max:An.max})}var Gn,Hn=t.tzDate||function(n){return new Date(n/bn)},Nn=t.fmtDate||Dn,In=1==bn?Zn(Hn):nt(Hn),Vn=et(Hn,tt(1==bn?Xn:$n,Nn)),Ln=ot(Hn,it("{YYYY}-{MM}-{DD} {h}:{mm}{aa}",Nn)),On=V({show:!0,live:!0},t.legend),jn=On.show;On.stroke=S(On.stroke||lt),On.fill=S(On.fill||at);var Bn,Rn=[],Un=!1;if(jn){Gn=dn("table","u-legend",x);var qn=_n[1]?_n[1].values:null;if(Un=null!=qn){var Kn=dn("tr","u-thead",Gn);for(var rt in dn("th",null,Kn),Bn=qn(o,1,0))dn("th",ln,Kn).textContent=rt}else Bn={_:0},cn(Gn,"u-inline"),On.live&&cn(Gn,"u-live")}var ut=new Map;function st(n,t,e){var r=ut.get(t)||{},i=ne.bind[n](o,t,e);i&&(wn(n,t,r[n]=i),ut.set(t,r))}var ft=0,vt=0,ht=0,dt=0,pt=0,_t=0,kt=0,yt=0,Mt=0,Gt=0;o.bbox={};var Ht=!1,Nt=!1,It=!1,Vt=!1,Lt=!1;function Ot(n,t){n==o.width&&t==o.height||$t(n,t),ye(!1),It=!0,Nt=!0,Vt=!0,Lt=!0,Fe()}function $t(n,t){o.width=ft=ht=n,o.height=vt=dt=t,pt=_t=0,function(){var n=!1,t=!1,e=!1,r=!1;kn.forEach((function(i){if(i.show&&i._show){var o=i.side,l=o%2,a=i._size+(i.labelSize=null!=i.label?i.labelSize||30:0);a>0&&(l?(ht-=a,3==o?(pt+=a,r=!0):e=!0):(dt-=a,0==o?(_t+=a,n=!0):t=!0))}})),le[0]=n,le[1]=e,le[2]=t,le[3]=r,ht-=fe[1]+fe[3],pt+=fe[3],dt-=fe[2]+fe[0],_t+=fe[0]}(),function(){var n=pt+ht,t=_t+dt,e=pt,r=_t;function i(i,o){switch(i){case 1:return(n+=o)-o;case 2:return(t+=o)-o;case 3:return(e-=o)+o;case 0:return(r-=o)+o}}kn.forEach((function(n){if(n.show&&n._show){var t=n.side;n._pos=i(t,n._size),null!=n.label&&(n._lpos=i(t,n.labelSize))}}))}();var e=o.bbox;kt=e.left=M(pt*fn,.5),yt=e.top=M(_t*fn,.5),Mt=e.width=M(ht*fn,.5),Gt=e.height=M(dt*fn,.5)}o.setSize=function(n){Ot(n.width,n.height)};var ne=o.cursor=V({},ct,t.cursor);ne._lock=!1;var te=ne.points;te.show=S(te.show),te.size=S(te.size),te.stroke=S(te.stroke),te.width=S(te.width),te.fill=S(te.fill);var ee=o.focus=V({},t.focus||{alpha:.3},ne.focus),re=ee.prox>=0,ie=[null];function oe(n,t){var e=yn[n.scale].time,r=n.value;if(n.value=e?H(r)?ot(Hn,it(r,Nn)):r||Ln:r||St,n.label=n.label||(e?"Time":"Value"),t>0){n.width=null==n.width?1:n.width,n.paths=n.paths||jt||D,n.fillTo=S(n.fillTo||Et),n.stroke=S(n.stroke||J),n.fill=S(n.fill||null),n._stroke=n._fill=n._paths=null;var i=Dt(n.width,1),l=n.points=V({},{size:i,width:g(1,.2*i),stroke:n.stroke,space:2*i,_stroke:null,_fill:null},n.points);l.show=S(l.show),l.fill=S(l.fill),l.stroke=S(l.stroke)}if(jn&&Rn.splice(t,0,function(n,t){if(0==t&&(Un||!On.live))return null;var e=[],r=dn("tr","u-series",Gn,Gn.childNodes[t]);cn(r,n.class),n.show||cn(r,on);var i=dn("th",null,r),l=pn("u-marker",i);t>0&&(l.style.borderColor=On.stroke(o,t),l.style.backgroundColor=On.fill(o,t));var a=pn(ln,i);for(var u in a.textContent=n.label,t>0&&(st("click",i,(function(){ne._lock||Ze(_n.indexOf(n),{show:!n.show},dr.setSeries)})),re&&st($,i,(function(){ne._lock||Ze(_n.indexOf(n),{focus:!0},dr.setSeries)}))),Bn){var s=dn("td","u-value",r);s.textContent="--",e.push(s)}return e}(n,t)),ne.show){var a=function(n,t){if(t>0){var e=ne.points.show(o,t);if(e)return cn(e,"u-cursor-pt"),cn(e,n.class),mn(e,-10,-10,ht,dt),gn.insertBefore(e,ie[t]),e}}(n,t);a&&ie.splice(t,0,a)}}o.addSeries=function(n,t){n=Rt(n,t=null==t?_n.length:t,gt,Yt),_n.splice(t,0,n),oe(_n[t],t)},o.delSeries=function(n){_n.splice(n,1),jn&&Rn.splice(n,1)[0][0].parentNode.remove(),ie.length>1&&ie.splice(n,1)[0].remove()},_n.forEach(oe);var le=[!1,!1,!1,!1];function ae(n,t,e){var r=e[0],i=e[1],o=e[2],l=e[3],a=t%2,u=0;return 0==a&&(l||i)&&(u=0==t&&!r||2==t&&!o?d(mt.size/3):0),1==a&&(r||o)&&(u=1==t&&!i||3==t&&!l?d(zt.size/2):0),u}kn.forEach((function(n,t){if(n._show=n.show,n.show){var e=yn[n.scale];null==e&&(n.scale=n.side%2?_n[1].scale:Mn,e=yn[n.scale]);var r=e.time;n.size=S(n.size),n.space=S(n.space),n.rotate=S(n.rotate),n.incrs=S(n.incrs||(2==e.distr?Cn:r?1==bn?Jn:Qn:Fn)),n.splits=S(n.splits||(r&&1==e.distr?In:3==e.distr?bt:xt));var i=n.values;n.values=r?G(i)?et(Hn,tt(i,Nn)):H(i)?function(n,t){var e=Dn(t);return function(t,r){return r.map((function(t){return e(n(t))}))}}(Hn,i):i||Vn:i||wt,n.filter=S(n.filter||(3==e.distr?Tt:z)),n.font=Qt(n.font),n.labelFont=Qt(n.labelFont),n._size=n.size(o,null,t,0),n._space=n._rotate=n._incrs=n._found=n._splits=n._values=null,n._size>0&&(le[t]=!0)}}));var ue,se=o.padding=(t.padding||[ae,ae,ae,ae]).map((function(n){return S(u(n,ae))})),fe=o._padding=se.map((function(n,t){return n(o,t,le,0)})),ce=null,ve=null,he=_n[0].idxs,de=null,pe=!1;function me(n,t){if(!G(n)&&N(n)&&(n.isGap&&_n.forEach((function(t){t.isGap=n.isGap})),n=n.data),(n=n||[])[0]=n[0]||[],o.data=n,e=n.slice(),ue=(de=e[0]).length,2==Yn&&(e[0]=de.map((function(n,t){return t}))),o._data=e,ye(!0),hr("setData"),!1!==t){var r=yn[Mn];r.auto(o,pe)?ge():Xe(Mn,r.min,r.max),Vt=!0,Lt=!0,Fe()}}function ge(){var n,t,r,o;pe=!0,ue>0?(ce=he[0]=0,ve=he[1]=ue-1,r=e[0][ce],o=e[0][ve],2==Yn?(r=ce,o=ve):1==ue&&(3==Yn?(r=(n=i(r,r,yn[Mn].log,!1))[0],o=n[1]):yn[Mn].time?o=r+86400/bn:(r=(t=a(r,o,.1,!0))[0],o=t[1]))):(ce=he[0]=r=null,ve=he[1]=o=null),Xe(Mn,r,o)}function we(n,t,e,r){Y.strokeStyle=n||X,Y.lineWidth=t,Y.lineJoin="round",Y.setLineDash(e||[]),Y.fillStyle=r||X}o.setData=me;var xe=1;function be(n,t,e,r,i,o,l,a,u){var s=l%2/2;Y.translate(s,s),we(a,l,u),Y.beginPath();var f,c,v,h,d=i+(0==r||3==r?-o:o);0==e?(c=i,h=d):(f=i,v=d),n.forEach((function(n,r){null!=t[r]&&(0==e?f=v=n:c=h=n,Y.moveTo(f,c),Y.lineTo(v,h))})),Y.stroke(),Y.translate(-s,-s)}function _e(n){var t=!0;return kn.forEach((function(e,r){if(e.show){var i=yn[e.scale];if(null!=i.min){e._show||(t=!1,e._show=!0,ye(!1));var l=e.side,a=i.min,u=i.max,s=function(n,t,e,r){var i,l=kn[n];if(r>0){var a=l._space=l.space(o,n,t,e,r),u=l._incrs=l.incrs(o,n,t,e,r,a);i=l._found=function(n,t,e,r,i){for(var o=r/(t-n),l=(""+h(n)).length,a=0;e.length>a;a++){var u=e[a]*o,s=10>e[a]?W.get(e[a]):0;if(u>=i&&17>l+s)return[e[a],u]}return[0,0]}(t,e,u,r,a)}else i=[0,0];return i}(r,a,u,0==l%2?ht:dt),f=s[0],c=s[1];if(0!=c){var v=e._splits=e.splits(o,r,a,u,f,c,2==i.distr),d=2==i.distr?v.map((function(n){return de[n]})):v,m=2==i.distr?de[v[1]]-de[v[0]]:f,g=e._values=e.values(o,e.filter(o,d,r,c,m),r,c,m);e._rotate=2==l?e.rotate(o,g,r,c):0;var w=e._size;e._size=p(e.size(o,g,r,n)),null!=w&&e._size!=w&&(t=!1)}}else e._show&&(t=!1,e._show=!1,ye(!1))}})),t}function ke(n){var t=!0;return se.forEach((function(e,r){var i=e(o,r,le,n);i!=fe[r]&&(t=!1),fe[r]=i})),t}function ye(n){_n.forEach((function(t,e){e>0&&(t._paths=null,n&&(t.min=null,t.max=null))}))}var Me,Te,Se,ze,De,Ee,Ye,Pe,We,Ae,Ce=!1;function Fe(){Ce||(L(Ge),Ce=!0)}function Ge(){Ht&&(function(){var t=I(yn);for(var r in t){var i=t[r],l=Pn[r];if(null!=l&&null!=l.min)V(i,l),r==Mn&&ye(!0);else if(r!=Mn)if(0==ue&&null==i.from){var a=i.range(o,null,null,r);i.min=a[0],i.max=a[1]}else i.min=y,i.max=-y}if(ue>0)for(var u in _n.forEach((function(r,i){var l=r.scale,a=t[l],u=Pn[l];if(0==i){var s=a.range(o,a.min,a.max,l);a.min=s[0],a.max=s[1],ce=n(a.min,e[0]),ve=n(a.max,e[0]),a.min>e[0][ce]&&ce++,e[0][ve]>a.max&&ve--,r.min=de[ce],r.max=de[ve]}else if(r.show&&r.auto&&a.auto(o,pe)&&(null==u||null==u.min)){var f=null==r.min?3==a.distr?function(n,t,e){for(var r=y,i=-y,o=t;e>=o;o++)n[o]>0&&(r=m(r,n[o]),i=g(i,n[o]));return[r==y?1:r,i==-y?10:i]}(e[i],ce,ve):function(n,t,e,r){var i=y,o=-y;if(1==r)i=n[t],o=n[e];else if(-1==r)i=n[e],o=n[t];else for(var l=t;e>=l;l++)null!=n[l]&&(i=m(i,n[l]),o=g(o,n[l]));return[i,o]}(e[i],ce,ve,r.sorted):[r.min,r.max];a.min=m(a.min,r.min=f[0]),a.max=g(a.max,r.max=f[1])}r.idxs[0]=ce,r.idxs[1]=ve})),t){var s=t[u],f=Pn[u];if(null==s.from&&(null==f||null==f.min)){var c=s.range(o,s.min==y?null:s.min,s.max==-y?null:s.max,u);s.min=c[0],s.max=c[1]}}for(var v in t){var h=t[v];if(null!=h.from){var d=t[h.from],p=h.range(o,d.min,d.max,v);h.min=p[0],h.max=p[1]}}var w={},x=!1;for(var b in t){var _=t[b],k=yn[b];k.min==_.min&&k.max==_.max||(k.min=_.min,k.max=_.max,w[b]=x=!0)}if(x){for(var M in _n.forEach((function(n){w[n.scale]&&(n._paths=null)})),w)It=!0,hr("setScale",M);ne.show&&(Vt=!0)}for(var T in Pn)Pn[T]=null}(),Ht=!1),It&&(function(){for(var n=!1,t=0;!n;){var e=_e(++t),r=ke(t);(n=e&&r)||($t(o.width,o.height),Nt=!0)}}(),It=!1),Nt&&(hn(C,U,pt),hn(C,B,_t),hn(C,O,ht),hn(C,j,dt),hn(gn,U,pt),hn(gn,B,_t),hn(gn,O,ht),hn(gn,j,dt),hn(A,O,ft),hn(A,j,vt),_.width=d(ft*fn),_.height=d(vt*fn),er(),hr("setSize"),Nt=!1),ne.show&&Vt&&(nr(),Vt=!1),ft>0&&vt>0&&(Y.clearRect(0,0,_.width,_.height),hr("drawClear"),Sn.forEach((function(n){return n()})),hr("draw")),c||(c=!0,o.status=1,hr("ready")),pe=!1,Ce=!1}function He(t,r){var i=yn[t];if(null==i.from){if(0==ue){var l=i.range(o,r.min,r.max,t);r.min=l[0],r.max=l[1]}if(ue>1&&null!=r.min&&null!=r.max&&1e-16>r.max-r.min)return;t==Mn&&2==i.distr&&ue>0&&(r.min=n(r.min,e[0]),r.max=n(r.max,e[0])),Pn[t]=r,Ht=!0,Fe()}}o.redraw=function(n){!1!==n?Xe(Mn,yn[Mn].min,yn[Mn].max):Fe()},o.setScale=He;var Ne=!1,Ie=ne.drag,Ve=Ie.x,Le=Ie.y;ne.show&&(ne.x&&(We=ne.left,Me=pn("u-cursor-x",gn)),ne.y&&(Ae=ne.top,Te=pn("u-cursor-y",gn)));var Oe,je,Be,Re=o.select=V({show:!0,over:!0,left:0,width:0,top:0,height:0},t.select),Ue=Re.show?pn("u-select",Re.over?gn:C):null;function qe(n,t){if(Re.show){for(var e in n)hn(Ue,e,Re[e]=n[e]);!1!==t&&hr("setSelect")}}function Je(n){var t=jn?Rn[n][0].parentNode:null;_n[n].show?t&&vn(t,on):(t&&cn(t,on),ie.length>1&&mn(ie[n],-10,-10,ht,dt))}function Xe(n,t,e){He(n,{min:t,max:e})}function Ze(n,t,e){var r=_n[n];if(null!=t.focus&&function(n){n!=Be&&(_n.forEach((function(t,e){!function(n,t){var e=_n[n];Ke(n,t),e.band&&Ke(_n[n+1].band?n+1:n-1,t)}(e,null==n||0==e||e==n?1:ee.alpha)})),Be=n,Fe())}(n),null!=t.show){if(r.show=t.show,Je(n),r.band){var i=_n[n+1]&&_n[n+1].band?n+1:n-1;_n[i].show=r.show,Je(i)}Xe(r.scale,null,null),Fe()}hr("setSeries",n,t),e&&mr.pub("setSeries",o,n,t)}function Ke(n,t){_n[n].alpha=t,ne.show&&ie[n]&&(ie[n].style.opacity=t),jn&&Rn[n]&&(Rn[n][0].parentNode.style.opacity=t)}function Qe(n,t){var e=ht;t!=Mn&&(n=(e=dt)-n);var r=n/e,i=yn[t],o=i.min,l=i.max;return 3==i.distr?(o=b(o),l=b(l),w(10,o+(l-o)*r)):o+(l-o)*r}o.setSelect=qe,o.setSeries=Ze,jn&&re&&wn(nn,Gn,(function(){ne._lock||(Ze(null,{focus:!1},dr.setSeries),nr())})),o.valToIdx=function(t){return n(t,e[0])},o.posToIdx=function(t){return n(Qe(t,Mn),e[0],ce,ve)},o.posToVal=Qe,o.valToPos=function(n,t,e){return t==Mn?s(n,yn[t],e?Mt:ht,e?kt:0):f(n,yn[t],e?Gt:dt,e?yt:0)},o.batch=function(n){n(o),Fe()},o.setCursor=function(n){We=n.left,Ae=n.top,nr()};var $e=0;function nr(t,r){var i,l;if($e=0,Ye=We,Pe=Ae,i=ne.move(o,We,Ae),We=i[0],Ae=i[1],ne.show&&(ne.x&&mn(Me,d(We),0,ht,dt),ne.y&&mn(Te,0,d(Ae),ht,dt)),Oe=y,0>We||0==ue||ce>ve){l=null;for(var a=0;_n.length>a;a++)if(a>0&&ie.length>1&&mn(ie[a],-10,-10,ht,dt),jn&&On.live){if(0==a&&Un)continue;for(var u=0;Rn[a].length>u;u++)Rn[a][u].firstChild.nodeValue="--"}re&&Ze(null,{focus:!0},dr.setSeries)}else{var h=Qe(We,Mn);l=n(h,e[0],ce,ve);for(var p=yn[Mn],g=E(s(e[0][l],p,ht,0),.5),w=0;_n.length>w;w++){var x=_n[w],b=ne.dataIdx(o,w,l,h),_=b==l?g:E(s(e[0][b],p,ht,0),.5);if(w>0&&x.show){var k=e[w][b],M=null==k?-10:E(f(k,yn[x.scale],dt,0),.5);if(M>0){var T=v(M-Ae);T>Oe||(Oe=T,je=w)}ie.length>1&&mn(ie[w],_,M,ht,dt)}if(jn&&On.live){if(b==ne.idx&&!Lt||0==w&&Un)continue;var S=0==w&&2==Yn?de:e[w],z=Un?x.values(o,w,b):{_:x.value(o,S[b],w,b)},D=0;for(var Y in z)Rn[w][D++].firstChild.nodeValue=z[Y]}}Lt=!1}if(Re.show&&Ne)if(null!=r){var P=dr.scales,W=P[0],A=P[1],C=r.cursor.drag;if(Ve=C._x,Le=C._y,W){var F=yn[W],G=r.posToVal(r.select.left,W),H=r.posToVal(r.select.left+r.select.width,W);Re.left=s(G,F,ht,0),Re.width=v(Re.left-s(H,F,ht,0)),hn(Ue,U,Re.left),hn(Ue,O,Re.width),A||(hn(Ue,B,Re.top=0),hn(Ue,j,Re.height=dt))}if(A){var N=yn[A],I=r.posToVal(r.select.top,A),V=r.posToVal(r.select.top+r.select.height,A);Re.top=f(I,N,dt,0),Re.height=v(Re.top-f(V,N,dt,0)),hn(Ue,B,Re.top),hn(Ue,j,Re.height),W||(hn(Ue,U,Re.left=0),hn(Ue,O,Re.width=ht))}}else{var L=v(Ye-Se),R=v(Pe-ze);Ve=Ie.x&&L>=Ie.dist,Le=Ie.y&&R>=Ie.dist;var q=Ie.uni;if(null!=q?Ve&&Le&&(Le=R>=q,(Ve=L>=q)||Le||(R>L?Le=!0:Ve=!0)):Ie.x&&Ie.y&&(Ve||Le)&&(Ve=Le=!0),Ve){var J=m(De,We),X=v(We-De);hn(Ue,U,Re.left=J),hn(Ue,O,Re.width=X),Le||(hn(Ue,B,Re.top=0),hn(Ue,j,Re.height=dt))}if(Le){var K=m(Ee,Ae),Q=v(Ae-Ee);hn(Ue,B,Re.top=K),hn(Ue,j,Re.height=Q),Ve||(hn(Ue,U,Re.left=0),hn(Ue,O,Re.width=ht))}Ve||Le||(hn(Ue,j,Re.height=0),hn(Ue,O,Re.width=0))}ne.idx=l,ne.left=We,ne.top=Ae,Ie._x=Ve,Ie._y=Le,null!=t&&(mr.pub(Z,o,We,Ae,ht,dt,l),re&&Ze(Oe>ee.prox?null:je,{focus:!0},dr.setSeries)),c&&hr("setCursor")}var tr=null;function er(){tr=gn.getBoundingClientRect()}function rr(n,t,e,r,i,o){ne._lock||(ir(n,t,e,r,i,o,0,!1,null!=n),null!=n?0==$e&&($e=an(nr)):nr(null,t))}function ir(n,t,e,r,i,l,a,u,c){var v;if(null!=n)e=n.clientX-tr.left,r=n.clientY-tr.top;else{if(0>e||0>r)return We=-10,void(Ae=-10);var h=dr.scales,d=h[0],p=h[1];e=null!=d?s(t.posToVal(e,d),yn[d],ht,0):ht*(e/i),r=null!=p?f(t.posToVal(r,p),yn[p],dt,0):dt*(r/l)}c&&(e>1&&ht-1>e||(e=M(e,ht)),r>1&&dt-1>r||(r=M(r,dt))),u?(Se=e,ze=r,v=ne.move(o,e,r),De=v[0],Ee=v[1]):(We=e,Ae=r)}function or(){qe({width:0,height:0},!1)}function lr(n,t,e,r,i,l){Ne=!0,Ve=Le=Ie._x=Ie._y=!1,ir(n,t,e,r,i,l,0,!0,!1),null!=n&&(st(Q,un,ar),mr.pub(K,o,De,Ee,ht,dt,null))}function ar(n,t,e,r,i,l){Ne=Ie._x=Ie._y=!1,ir(n,t,e,r,i,l,0,!1,!0);var a=Re.width>0||Re.height>0;if(a&&qe(Re),Ie.setScale&&a){if(Ve&&Xe(Mn,Qe(Re.left,Mn),Qe(Re.left+Re.width,Mn)),Le)for(var u in yn){var s=yn[u];u!=Mn&&null==s.from&&s.min!=y&&Xe(u,Qe(Re.top+Re.height,u),Qe(Re.top,u))}or()}else ne.lock&&(ne._lock=!ne._lock,ne._lock||nr());null!=n&&(function(n,t){var e=ut.get(t)||{};xn(n,t,e[n]),e[n]=null}(Q,un),mr.pub(Q,o,We,Ae,ht,dt,null))}function ur(){if(!ne._lock){var n=Ne;if(Ne){var t=!0,e=!0;if(Ve&&Le&&(t=10>=We||We>=ht-10,e=10>=Ae||Ae>=dt-10),Ve&&t){var r=We,i=ht-We,o=m(r,i);o==r&&(We=0),o==i&&(We=ht)}if(Le&&e){var l=Ae,a=dt-Ae,u=m(l,a);u==l&&(Ae=0),u==a&&(Ae=dt)}nr(1),Ne=!1}We=-10,Ae=-10,nr(1),n&&(Ne=n)}}function sr(n){ge(),or(),null!=n&&mr.pub(tn,o,We,Ae,ht,dt,null)}var fr,cr={};cr.mousedown=lr,cr.mousemove=rr,cr.mouseup=ar,cr.dblclick=sr,cr.setSeries=function(n,t,e,r){Ze(e,r)},ne.show&&(st(K,gn,lr),st(Z,gn,rr),st($,gn,er),st(nn,gn,(function(){an(ur)})),st(tn,gn,sr),fr=function(n){var t=null;function e(){t=null,n()}return function(){clearTimeout(t),t=setTimeout(e,100)}}(er),wn(en,sn,fr),wn(rn,sn,fr),o.syncRect=er);var vr=o.hooks=t.hooks||{};function hr(n,t,e){n in vr&&vr[n].forEach((function(n){n.call(null,o,t,e)}))}(t.plugins||[]).forEach((function(n){for(var t in n.hooks)vr[t]=(vr[t]||[]).concat(n.hooks[t])}));var dr=V({key:null,setSeries:!1,scales:[Mn,null]},ne.sync),pr=dr.key,mr=null!=pr?Ct[pr]=Ct[pr]||Ft():Ft();function gr(){hr("init",t,e),me(e||t.data,!1),Pn[Mn]?He(Mn,Pn[Mn]):ge(),Ot(t.width,t.height),qe(Re,!1)}return mr.sub(o),o.pub=function(n,t,e,r,i,o,l){cr[n](null,t,e,r,i,o,l)},o.destroy=function(){mr.unsub(o),xn(en,sn,fr),xn(rn,sn,fr),x.remove(),hr("destroy")},r?r instanceof HTMLElement?(r.appendChild(x),gr()):r(o,gr):gr(),o}$t.assign=V,$t.fmtNum=f,$t.rangeNum=a,$t.rangeLog=i,$t.join=function(n,t){if(1==n.length)return{data:n[0],isGap:t?function(n,e){return 0!=t[0][e]}:function(){return!0}};for(var e=new Set,r=[new Set],i=0;n.length>i;i++){for(var o=n[i],l=o[0],a=l.length,u=0;a>u;u++)e.add(l[u]);for(var s=1;o.length>s;s++){var f=new Set;if(null==t||1==t[i][s]||2==t[i][s])for(var c=o[s],v=0;a>v;v++)null==c[v]&&f.add(l[v]);r.push(f)}}for(var h=[Array.from(e).sort((function(n,t){return n-t}))],d=h[0].length,p=new Map,m=0;d>m;m++)p.set(h[0][m],m);for(var g=1,w=0;n.length>w;w++)for(var x=n[w],b=x[0],_=1;x.length>_;_++){for(var k=x[_],M=Array(d).fill(null),T=0;k.length>T;T++)M[p.get(b[T])]=k[T];if(t&&2==t[w][_]){var S=r[g],z=S.size,D=0,E=void 0,Y=-y;for(var P of S.values()){if(D++==z)break;if(P>Y){var W=p.get(P);for(E=W-1;null===M[E];)S.add(h[0][E]),E--;for(E=W+1;null===M[E];)S.add(Y=h[0][E]),E++}}}h.push(M),g++}return{data:h,isGap:function(n,t,e){return r[t].has(n._data[0][e])}}},$t.fmtDate=Dn,$t.tzDate=function(n,t){var e;return"Etc/UTC"==t?e=new Date(+n+6e4*n.getTimezoneOffset()):t==En?e=n:(e=new Date(n.toLocaleString("en-US",{timeZone:t}))).setMilliseconds(n.getMilliseconds()),e},$t.addGap=It,$t.clipGaps=Nt;var ne=$t.paths={};return ne.linear=Ot,ne.spline=function(){return function(n,e,r,i){var o=Ht(n,e),l=o[0],a=o[1],u=o[2],s=o[3],f=o[4],c=o[5],v=o[6],h=o[7],p=o[8],m=o[9],g=o[10];r=t(u,r,i,1),i=t(u,r,i,-1);for(var b=[],_=!1,k=d(c(a[r],s,m,h)),y=k,M=[],T=[],S=r;i>=S;S++){var z=u[S],D=c(a[S],s,m,h);null!=z?(_&&(It(b,y,D),_=!1),M.push(y=D),T.push(v(u[S],f,g,p))):l.isGap(n,e,S)&&(It(b,y,D),_=!0)}var E=function(n,t,e){var r,i,o,l,a,u,s,f,c,v,h,p,m,g,b,_,k,y,M,T,S,z,D,E,Y,P=new Path2D,W=n.length;P.moveTo(d(n[0]),d(t[0]));for(var A=0;W-1>A;A++){var C=0==A?0:A-1;i=t[C],l=t[A],a=n[A+1],u=t[A+1],W>A+2?(s=n[A+2],f=t[A+2]):(s=a,f=u),m=x(w((r=n[C])-(o=n[A]),2)+w(i-l,2)),g=x(w(o-a,2)+w(l-u,2)),b=x(w(a-s,2)+w(u-f,2)),T=w(b,e),z=w(b,1),S=w(g,e),D=w(g,1),(y=3*(Y=w(m,e))*(Y+S))>0&&(y=1/y),(M=3*T*(T+S))>0&&(M=1/M),v=(-D*i+(_=2*(E=w(m,1))+3*Y*S+D)*l+E*u)*y,p=(z*l+(k=2*z+3*T*S+D)*u-D*f)*M,0==(c=(-D*r+_*o+E*a)*y)&&0==v&&(c=o,v=l),0==(h=(z*o+k*a-D*s)*M)&&0==p&&(h=a,p=u),P.bezierCurveTo(c,v,h,p,a,u)}return P}(M,T,.5),Y=new Path2D(E),P=l.fillTo(n,e,l.min,l.max),W=d(v(P,f,g,p));return Y.lineTo(y,W),Y.lineTo(k,W),{stroke:E,fill:Y,clip:l.spanGaps?null:Nt(b,1,h,p,m,g)}}},ne.stepped=function(n){var e=u(n.align,1);return function(n,r,i,o){var l=Ht(n,r),a=l[0],u=l[1],s=l[2],f=l[3],c=l[4],v=l[5],h=l[6],p=l[7],m=l[8],g=l[9],w=l[10],x=new Path2D;i=t(s,i,o,1),o=t(s,i,o,-1);var b=[],_=!1,k=d(h(s[i],c,w,m)),y=d(v(u[i],f,g,p)),M=y;x.moveTo(y,k);for(var T=i+1;o>=T;T++){var S=s[T],z=d(v(u[T],f,g,p));if(null!=S){var D=d(h(S,c,w,m));if(_){if(It(b,M,z),k!=D){var E=a.width*fn/2,Y=b[b.length-1];Y[0]+=E,Y[1]-=E}_=!1}1==e?x.lineTo(z,k):x.lineTo(M,D),x.lineTo(z,D),k=D,M=z}else a.isGap(n,r,T)&&(It(b,M,z),_=!0)}var P=new Path2D(x),W=a.fillTo(n,r,a.min,a.max),A=d(h(W,c,w,m));return P.lineTo(M,A),P.lineTo(y,A),{stroke:x,fill:P,clip:a.spanGaps?null:Nt(b,1,p,m,g,w)}}},ne.bars=function(n){var t=u((n=n||F).size,[.6,y]),e=1-t[0],r=u(t[1],y)*fn;return function(n,t,i,o){for(var l=Ht(n,t),a=l[0],u=l[1],s=l[2],f=l[3],c=l[4],v=l[5],h=l[6],p=l[7],w=l[8],x=l[9],b=l[10],_=v(u[1],f,x,p)-v(u[0],f,x,p),k=_*e,y=h(a.fillTo(n,t,a.min,a.max),c,b,w),M=d(a.width*fn),T=d(m(r,_-k)-M),S=new Path2D,z=i;o>=z;z++){var D=s[z];if(null!=D){var E=v(2==f.distr?z:u[z],f,x,p),Y=h(D,c,b,w),P=d(E-T/2),W=d(g(Y,y)),A=d(m(Y,y));S.rect(P,A,T,W-A)}}return{stroke:S,fill:null!=a.fill?new Path2D(S):void 0}}},$t}(); diff --git a/plugins/uplot/uPlot.min.css b/plugins/uplot/uPlot.min.css index f95d905cf..435600b57 100644 --- a/plugins/uplot/uPlot.min.css +++ b/plugins/uplot/uPlot.min.css @@ -1 +1 @@ -.uplot, .uplot *, .uplot *::before, .uplot *::after {box-sizing: border-box;}.uplot {font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";line-height: 1.5;width: max-content;}.u-title {text-align: center;font-size: 18px;font-weight: bold;}.u-wrap {position: relative;user-select: none;}.u-over, .u-under {position: absolute;}.u-under {overflow: hidden;}.uplot canvas {display: block;position: relative;width: 100%;height: 100%;}.u-legend {font-size: 14px;margin: auto;text-align: center;}.u-inline {display: block;}.u-inline * {display: inline-block;}.u-inline tr {margin-right: 16px;}.u-legend th {font-weight: 600;}.u-legend th > * {vertical-align: middle;display: inline-block;}.u-legend .u-marker {width: 1em;height: 1em;margin-right: 4px;border: 2px solid transparent;}.u-series:first-child .u-marker {display: none;}.u-inline.u-live th::after {content: ":";vertical-align: middle;}.u-inline:not(.u-live) .u-value {display: none;}.u-series > * {padding: 4px;}.u-series th {cursor: pointer;}.u-legend .u-off > * {opacity: 0.3;}.u-select {background: rgba(0,0,0,0.07);position: absolute;pointer-events: none;}.u-cursor-x, .u-cursor-y {position: absolute;left: 0;top: 0;pointer-events: none;will-change: transform;z-index: 100;}.u-cursor-x {height: 100%;border-right: 1px dashed #607D8B;}.u-cursor-y {width: 100%;border-bottom: 1px dashed #607D8B;}.u-cursor-pt {position: absolute;top: 0;left: 0;border-radius: 50%;filter: brightness(85%);pointer-events: none;will-change: transform;z-index: 100;}.u-select.u-off, .u-cursor-x.u-off, .u-cursor-y.u-off, .u-cursor-pt.u-off {display: none;} \ No newline at end of file +.uplot, .uplot *, .uplot *::before, .uplot *::after {box-sizing: border-box;}.uplot {font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";line-height: 1.5;width: min-content;}.u-title {text-align: center;font-size: 18px;font-weight: bold;}.u-wrap {position: relative;user-select: none;}.u-over, .u-under {position: absolute;}.u-under {overflow: hidden;}.uplot canvas {display: block;position: relative;width: 100%;height: 100%;}.u-legend {font-size: 14px;margin: auto;text-align: center;}.u-inline {display: block;}.u-inline * {display: inline-block;}.u-inline tr {margin-right: 16px;}.u-legend th {font-weight: 600;}.u-legend th > * {vertical-align: middle;display: inline-block;}.u-legend .u-marker {width: 1em;height: 1em;margin-right: 4px;border: 2px solid transparent;}.u-series:first-child .u-marker {display: none;}.u-inline.u-live th::after {content: ":";vertical-align: middle;}.u-inline:not(.u-live) .u-value {display: none;}.u-series > * {padding: 4px;}.u-series th {cursor: pointer;}.u-legend .u-off > * {opacity: 0.3;}.u-select {background: rgba(0,0,0,0.07);position: absolute;pointer-events: none;}.u-cursor-x, .u-cursor-y {position: absolute;left: 0;top: 0;pointer-events: none;will-change: transform;z-index: 100;}.u-cursor-x {height: 100%;border-right: 1px dashed #607D8B;}.u-cursor-y {width: 100%;border-bottom: 1px dashed #607D8B;}.u-cursor-pt {position: absolute;top: 0;left: 0;border-radius: 50%;pointer-events: none;will-change: transform;z-index: 100;/*this has to be !important since we set inline "background" shorthand */background-clip: content-box !important;}.u-select.u-off, .u-cursor-x.u-off, .u-cursor-y.u-off, .u-cursor-pt.u-off {display: none;} \ No newline at end of file