UNPKG

@jspreadsheet/charts

Version:

JSS Charts is a premium JSS extension that allows you to create interactive and dynamic charts based on the data available in your online spreadsheets. This plugin seamlessly integrates JSS with the ChartJS engine, directly delivering visually stunning an

17 lines (14 loc) 255 kB
if (!lemonade && typeof(require) === 'function') { var lemonade = require('lemonadejs'); } if (!studio && typeof(require) === 'function') { var studio = require('@lemonadejs/studio'); } ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.charts = factory(); }(this, (function () { 'use strict'; /*! For license information please see index.js.LICENSE.txt */ var Charts;!function(){var t={683:function(t,e,i){if(!s)var s=i(739);const n=i(555);t.exports=function(){"use strict";let t=null,e={};const i=function(t,e,i){if((t=t.split(".")).length){let s=this,n=null;for(;t.length>1;)if(n=t.shift(),s.hasOwnProperty(n))s=s[n];else{if(void 0===e)return;s[n]={},s=s[n]}if(n=t.shift(),void 0!==e)return!0===i?delete s[n]:s[n]=e,!0;if(s)return s[n]}return!1},o=function(t){return"undefined"!=typeof document&&document.dictionary&&document.dictionary[t]||t},a=function(t){return JSON.parse(JSON.stringify(t))},r={id:"customBackgroundColor",beforeDraw:(t,e,i)=>{if(i.color){const{ctx:e}=t;e.save(),e.globalCompositeOperation="destination-over",e.fillStyle=i.color||"#99ffff",e.fillRect(0,0,t.width,t.height),e.restore()}}},l=function(){let t="";return 8==this.status?this.scope&&-1!=this.scope.indexOf("charts")||(t="This charts plugin is not included on the scope of this license"):t="License required",t},c=function(e){const i=[];e=e.split(",");for(let s=0;s<e.length;s++){let n=e[s],o=this;const a=n.lastIndexOf("!");if(-1!==a&&(o=o.getWorksheetInstanceByName(n.slice(0,a)),n=n.slice(a+1)),!o)throw new Error("Worksheet not found");i.push({worksheet:o,cellNames:t.helpers.getTokensFromRange(n)})}return i},h=function(t,e,i){let s=[],o=0,r=0,l=n.getDataFromRange(e,t);if(l&&l.length&&(o=l.length),l&&l[0]&&l[0].length&&(r=l[0].length),i.orientation)for(let t=0;t<r;t++){let e=[];for(let i=0;i<o;i++)e.push(l[i][t]);s[t]={label:"",data:e}}else for(let t=0;t<o;t++)s[t]={label:"",data:l[t]};i.headers&&s.forEach((function(t){t.label=t.data.shift()}));let c,h=[];if(i.datasets.forEach((function(t){s[t]&&h.push(a(s[t]))})),n.isBlank(i.labels)){if(c=[],s.length){const t=s[0].data.length;for(let e=0;e<t;e++)c.push("")}}else s[i.labels]&&(c=s[i.labels].data.map((t=>null==t?null:"string"==typeof t?t:t.toString())));return{labels:c,datasets:h}},d=function(e,i,s,o){s||(s={}),i=i.split(",")[0];let r=0,l=0,c=n.getDataFromRange(i,e);c&&c.length&&(r=c.length),c&&c[0]&&c[0].length&&(l=c[0].length);let h,d=0,u=0,f=[0,0];for(let t=0;t<r;t++){let e=0;for(let i=0;i<l;i++)n.isNumeric(c[t][i])?e++:0===t&&f[0]++;u=Math.max(u,e)}for(let t=0;t<l;t++){let e=0;for(let i=0;i<r;i++)n.isNumeric(c[i][t])?e++:0===t&&f[1]++;d=Math.max(d,e)}let p=[];if(h=void 0!==s.orientation?s.orientation?1:0:d>=u?1:0,!0===o){let e=i;e=e.split("!"),e=e[e.length-1],e=e.split(":");let s=t.helpers.getCoordsFromColumnName(e[0]),n=t.helpers.getCoordsFromColumnName(e[1]);c=[];for(let e=s[1];e<=n[1];e++){let i=[];for(let o=s[0];o<=n[0];o++)i.push(t.helpers.getCellNameFromCoords(o,e));c.push(i)}}if(h)for(let t=0;t<l;t++){let e=[];for(let i=0;i<r;i++)e.push(c[i][t]);p[t]={label:"",data:e}}else for(let t=0;t<r;t++)p[t]={label:"",data:c[t]};let g=null,m=null,b=null;if(b=void 0!==s.headers?!!s.headers:h?d-r==0?0:1:u-l==0?0:1,b&&p.forEach((function(t){t.label=t.data.shift()})),void 0!==s.labels?g=s.labels:f[h]>0&&(g=0),null!==g&&p[g]&&p[g].data&&(m=a(p[g].data)),s.datasets){let t=[];s.datasets.forEach((function(e){p[e]&&t.push(a(p[e]))})),p=t}else{let t=[];p.forEach((function(e,i){(!b||p.length<2||i>0)&&t.push(e)})),p=t}if(p.length&&(!m||!m.length)){m=[];for(let t=0;t<p[0].data.length;t++)m.push("")}return o&&m&&(m=t.helpers.getRangeFromTokens(m),p.forEach((function(e){e.data=t.helpers.getRangeFromTokens(e.data)}))),{labels:m,datasets:p,orientation:h?1:0,headers:!!b,xLabels:g,textCount:f}},u=function(t,e){let i=d(t,e);return{headers:i.headers,orientation:i.orientation}},f=function(t,e,i){e=e.split(",")[0];const s={data:h(t,e,i)},n={},o=M(i.title);o&&(n.title=o);const a=M(i.subtitle);a&&(n.subtitle=a);const r=S(i.legend);return r&&(n.legend=r),0!==Object.keys(n).length&&(s.options||(s.options={}),s.options.plugins=n),s},p=function(t,e,i){i||(i={});const s=f(t,e,i),n={base:C(i.axis?.base),side:P(i.axis?.side),side2:{type:"linear",display:!0,grid:{},...P(i.axis?.side2)}};return s.options||(s.options={}),s.options.scales=n,s},g={type:[{text:o("Line"),value:"line",group:"Line"},{text:o("Area Chart"),value:"area",group:"Area"},{text:o("Stacked Area Chart"),value:"stacked-area",group:"Area"},{text:o("100% Stacked Area Chart"),value:"percent-area",group:"Area"},{text:o("Bar Chart"),value:"bar",group:"Bar"},{text:o("Stacked Bar Chart"),value:"stacked-bar",group:"Bar"},{text:o("100% Stacked Bar Chart"),value:"percent-bar",group:"Bar"},{text:o("Column Chart"),value:"column",group:"Column"},{text:o("Stacked Column Chart"),value:"stacked-column",group:"Column"},{text:o("100% Stacked Column Chart"),value:"percent-column",group:"Column"},{text:o("Pie"),value:"pie",group:"Pie"},{text:o("Doughnut"),value:"doughnut",group:"Pie"},{text:o("Bubble"),value:"bubble",group:"Scatter"},{text:o("Scatter"),value:"scatter",group:"Scatter"},{text:o("Radar"),value:"radar",group:"Radar"},{text:o("Filled radar"),value:"filled-radar",group:"Radar"},{text:o("Histogram"),value:"histogram",group:"Other"},{text:o("Pareto"),value:"pareto",group:"Other"}],orientation:[{text:o("Horizontal"),value:0},{text:o("Vertical"),value:1}],position:[{text:o("Top"),value:"top"},{text:o("Bottom"),value:"bottom"},{text:o("Left"),value:"left"},{text:o("Right"),value:"right"}]},m=function(){let e=this;return e.instance=null,e.type="line",e.createPicker=function(i){t.picker(i,{worksheetName:!0,onchange:function(){e.data=i.innerText}})},e.cancel=function(){e.modal.close()},e.insert=function(){if(!e.data)return void alert(o("Range is mandatory"));let t=e.data,i=e.instance;if(-1!==t.indexOf("!")){let e=t.split("!");i=i.getWorksheetInstanceByName(e[0]),t=e[1]}-1===t.indexOf(":")&&(t=t+":"+t);let s=u(i,t),n={type:"chart",width:400,height:300,options:{type:e.type,range:t,...s}};i.setMedia(n),e.modal.close()},e.keydown=function(t){"Enter"===t.key&&"INPUT"===t.target.previousElementSibling.tagName&&(t.target.previousElementSibling.checked=!0)},e.onload=function(){e.modal={title:o("Insert chart"),closable:!0,draggable:!0,width:320,height:410,closed:!0,icon:"addchart"},studio.Modal(e.el,e.modal)},`<div><div class="jss_object jss_style_p20">\n <div class='jss_style_row jss_style_p2'>\n <div class='jss_style_column jss_style_f1'>\n <div class="jss_style_form_group">\n <label>${o("Data to analyze")}</label>\n <div :ready="self.createPicker" :bind="self.data"></div>\n </div>\n </div>\n </div>\n <br>\n <div class='jss_style_row jss_style_p2 jss_style_center' onkeydown="self.keydown">\n <div class='jss_style_column jss_style_f1 jss_charts_type'>\n <label><input type="radio" name="type" value="line" :bind="self.type"><i class="material-icons" tabindex="0">show_chart</i></label>\n </div><div class='jss_style_column jss_style_f1 jss_charts_type'>\n <label><input type="radio" name="type" value="bar" :bind="self.type"><i class="material-icons" tabindex="0">bar_chart</i></label>\n </div><div class='jss_style_column jss_style_f1 jss_charts_type'>\n <label><input type="radio" name="type" value="pie" :bind="self.type"><i class="material-icons" tabindex="0">incomplete_circle</i></label>\n </div><div class='jss_style_column jss_style_f1 jss_charts_type'>\n <label><input type="radio" name="type" value="doughnut" :bind="self.type"><i class="material-icons" tabindex="0">donut_large</i></label>\n </div><div class='jss_style_column jss_style_f1 jss_charts_type'>\n <label><input type="radio" name="type" value="radar" :bind="self.type"><i class="material-icons" tabindex="0">radar</i></label>\n </div><div class='jss_style_column jss_style_f1 jss_charts_type'>\n <label><input type="radio" name="type" value="area" :bind="self.type"><i class="material-icons" tabindex="0">area_chart</i></label>\n </div><div class='jss_style_column jss_style_f1 jss_charts_type'>\n <label><input type="radio" name="type" value="scatter" :bind="self.type"><i class="material-icons" tabindex="0">scatter_plot</i></label>\n </div><div class='jss_style_column jss_style_f1 jss_charts_type'>\n <label><input type="radio" name="type" value="stacked-bar" :bind="self.type"><i class="material-icons" tabindex="0">stacked_bar_chart</i></label>\n </div>\n </div>\n <div class='jss_style_row jss_style_p2'>\n <div class='jss_style_column jss_style_f1'>\n <div class="jss_style_form_group">\n <br>\n <button type="button" class="jss_style_button" onclick="self.insert">${o("Insert")}</button>\n <button type="button" class="jss_style_button" onclick="self.cancel">${o("Cancel")}</button>\n </div>\n </div>\n </div>\n </div></div>`},b=function(){let e=this;e.canvas=null,e.options=null,e.datasets=[],e.series=[],e.useHeaderText=e.orientation?o("Use the first column as headers"):o("Use the first row as headers"),e.dropdown=g,e.loadDropdownOptions=function(){let t=u(e.worksheet,e.options.range),i=d(e.worksheet,e.options.range,{...e.options,datasets:void 0,headers:!1},!0),s=d(e.worksheet,e.options.range,{...e.options,datasets:void 0,headers:!1}),n=[];i.datasets.map((function(t,i){let o=t.data;e.options.headers&&(o=s.datasets[i].data[0]),n.push({text:o,value:n.length})}));let o=i.textCount[i.orientation]>0&&0===i.xLabels,r=[];return n.forEach((function(e,s){(!t.headers&&!o||i.datasets.length<2||s>0)&&r.push({value:e.value,datasets:a(n)})})),e.options.datasets&&(r=[],e.options.datasets.map((function(t){r.push({value:t,datasets:a(n)})}))),e.allOptions=a(n),{datasets:r,labels:a(n)}},e.open=function(t,i){e.options=a(i.options);let s=d(this,e.options.range);void 0===e.options.orientation&&(e.options.orientation=s.orientation),void 0===e.options.headers&&(e.options.headers=s.headers),void 0===e.options.labels&&(e.options.labels=s.xLabels),e.worksheet=this;let n=e.loadDropdownOptions.call(this);e.currentDatasets=n.datasets,e.currentLabels=n.labels,e.type=e.options.type,e.orientation=e.options.orientation,e.range=e.options.range,e.labels=e.options.labels,e.chart=t,e.canvas=t.children[0],e.modal.closed=!1},e.close=function(t){e.chart&&(!0===t?e.worksheet.setMedia([{id:e.chart.id,options:e.options}]):e.chart.children[0]!==e.canvas&&(e.chart.children[0].remove(),e.chart.appendChild(e.canvas)),e.options=null,e.worksheet=null,e.chart=null,e.canvas=null),!1===e.modal.closed&&(e.modal.closed=!0)},e.save=function(){e.close(!0)},e.cancel=function(){e.close(!1)},e.onload=function(){e.el.classList.add("jss_object")};const s={type:"type",orientation:"orientation",range:"range",labels:"labels",headers:"headers",titleText:"title.text",titlePosition:"title.position",legendText:"legend.title",legendPosition:"legend.position",legendDisplay:"legend.display",datasets:"datasets"};let n;return e.onchange=function(t){if(e.chart){if("range"===t){let t=d(e.worksheet,e.options.range);e.options.orientation=t.orientation,e.options.headers=t.headers,e.options.labels=t.xLabels,e.options.datasets=null}if("orientation"===t||"headers"===t){let t=e.loadDropdownOptions(),i=e.options.labels;e.currentDatasets=t.datasets,e.currentLabels=t.labels,e.options.labels=i}"orientation"===t&&(e.useHeaderText=e.orientation?o("Use the first column as headers"):o("Use the first row as headers")),void 0!==s[t]&&i.call(e.options,s[t],e[t]),n&&clearTimeout(n),n=setTimeout((function(){U(e.worksheet,e.options,e.chart),n=null}),50)}},e.createRange=function(i){t.picker(i,{type:"picker",onchange:function(t){e.range=t}})},e.update=function(){let i=a(e.allOptions),s=[];e.currentDatasets.forEach((function(t){s.push(t.value)}));let n=[];i.forEach((function(t){n.push(t.value)})),t.helpers.compareArray(s,n)?e.datasets=null:e.datasets=s},e.add=function(){let t=a(e.allOptions);e.currentDatasets.push({datasets:t}),e.refresh("currentDatasets")},e.remove=function(t,i){e.currentDatasets.splice(e.currentDatasets.indexOf(i),1),e.refresh("currentDatasets")},`<div class="jss_object">\n <lm-modal title="Chart settings" position="right" :ref="self.modal" :closable="true" :draggable="true" :width="420" :height="600" :closed="true" :onclose="self.cancel">\n <div style="padding: 20px;">\n <lm-tabs :selected="0" :ref="self.tabs">\n <div title="${o("Configuration")}">\n <div class="jss_style_row">\n <div class="jss_style_col">\n <div class="jss_style_form_group">\n <label>${o("Chart type")}</label>\n <Dropdown :data="self.dropdown.type" :bind="self.type" width="230" />\n </div>\n </div><div class="jss_style_col">\n <div class="jss_style_form_group">\n <label>${o("Data orientation")}</label>\n <Dropdown :data="self.dropdown.orientation" :bind="self.orientation" width="120" />\n </div>\n </div>\n </div>\n <div class="jss_style_row">\n <div class="jss_style_col jss_style_f1">\n <div class="jss_style_form_group">\n <label>${o("Data range")}</label>\n <div :ready="self.createRange" :bind="self.range"></div>\n </div>\n </div>\n </div>\n <div class="jss_style_form_group">\n <label>${o("Labels")}</label>\n <Dropdown :data="self.currentLabels" :bind="self.labels" />\n </div>\n <div class="jss_style_form_group">\n <label>${o("Series")}</label>\n <div :loop="self.currentDatasets" :data="self.datasets" class="jss_charts_series">\n <div class="jss_style_row start middle" style="margin-bottom: 4px;">\n <Dropdown :data="self.datasets" :bind="self.value" onchange="self.parent.update" /> <i class="material-icons" onclick="self.parent.remove">close</i>\n </div>\n </div>\n <div class="jss_style_p2">\n <input type="button" value="${o("Add new serie")}" onclick="self.add" class="jss_charts_button" />\n </div>\n </div>\n <br>\n <div class="jss_style_form_group">\n <Switch text="{{self.useHeaderText}}" :bind="self.headers" />\n </div>\n </div>\n <div title="${o("Styling")}">\n <div class="jss_style_row">\n <div class="jss_style_col jss_style_f1">\n <div class="jss_style_form_group">\n <label>${o("Chart title")}</label>\n <input type="text" :bind="self.titleText" />\n </div>\n </div><div class="jss_style_col">\n <div class="jss_style_form_group">\n <label>${o("Chart title position")}</label>\n <Dropdown :data="self.dropdown.position" :bind="self.titlePosition" width="120" />\n </div>\n </div>\n </div>\n <br/>\n <div class="jss_style_row">\n <div class="jss_style_col jss_style_f1">\n <div class="jss_style_form_group">\n <label>${o("Legend title")}</label>\n <input type="text" :bind="self.legendTitle" />\n </div>\n </div>\n </div>\n <div class="jss_style_row">\n <div class="jss_style_col jss_style_f1">\n <Dropdown :data="self.dropdown.position" :bind="self.legendPosition" width="160" />\n </div><div class="jss_style_col jss_style_f1">\n <Switch text="${o("Show Legend")}" :bind="self.legendDisplay" />\n </div>\n </div>\n </div>\n </lm-tabs>\n <div class='row'>\n <button type="button" class="lm-button jss_style_button" onclick="self.save">${o("Save")}</button>\n <button type="button" class="lm-button jss_style_button" onclick="self.cancel" style="margin-top: 4px">${o("Cancel")}</button>\n </div>\n </div>\n </lm-modal>\n </div>`},x=function(t,e,i){return"function"==typeof t.getCellObject?t.getCellObject(e,i):t.records[i][e]},_=function(e,i,s,n){let o=c.call(e,s);const a=o.length;for(let e=0;e<a;e++){let{cellNames:s,worksheet:a}=o[e];const r=s.length;for(let e=0;e<r;e++){const[o,r]=t.helpers.getCoordsFromColumnName(s[e]),l=x(a,o,r);l&&(l.chain||(l.chain=new Map),n?l.chain.set(i,!0):l.chain.delete(i,!0))}}},y={dotted:function(t){return t<3?[t,3]:[t,t]},dashed:function(t){return 1===t?[6,5]:[4*t,3*t]},"dashed-dotted":function(t){return 1===t?[6,4,1,4]:[4*t,2*t,t,2*t]}},v=function(t,e){if(t){const i=y[t];return"function"==typeof i?i(e):null}return null},k=function(t){const e={};void 0!==t.color&&(e.color=t.color);const{width:i}=t;if(e.width=i,t.dash){const s=y[t.dash];"function"==typeof s&&(e.dash=s(i))}return e},w=function(t){if(!t)return{};const e={};return void 0!==t.color&&(e.color=t.color),void 0!==t.family&&(e.family=t.family),void 0!==t.size&&(e.size=t.size),t.italic&&(e.style="italic"),t.bold?e.weight="bold":e.weight="normal",e},M=function(t){if(!t||!t.text)return null;const e={display:!0,text:t.text};void 0!==t.position&&(e.position=t.position),void 0!==t.align&&(e.align=t.align);const{color:i,...s}=w(t.font);return void 0!==i&&(e.color=i),0!==Object.keys(s).length&&(e.font=s),0!==Object.keys(e).length?e:null},S=function(t){if(!t)return null;if(!1===t.display)return{display:!1};const e={};void 0!==t.position&&(e.position=t.position),void 0!==t.align&&(e.align=t.align);const i=t.legendTitle;if(i&&i.text){const t={display:!0,text:i.text},{color:s,...n}=w(i.font);void 0!==s&&(t.color=s),0!==Object.keys(n).length&&(t.font=n),e.title=t}const s=t.labels;if(s){s.reverse&&(e.reverse=!0);const t={},{color:i,...n}=w(s.font);void 0!==i&&(t.color=i),0!==Object.keys(n).length&&(t.font=n),0!==Object.keys(t).length&&(e.labels=t)}return 0!==Object.keys(e).length?e:null},C=function(t){if(!t)return{};const e={},i=function(t){if(!t||!t.text)return null;const{color:e,...i}=w(t.font),s={display:!0,text:t.text};return 0!==Object.keys(i).length&&(s.font=i),void 0!==e&&(s.color=e),void 0!==t.align&&(s.align=t.align),s}(t.title);i&&(e.title=i),t.reverse&&(e.reverse=!0),e.grid=function(t){if(t||(t={}),!1===t.display)return{drawTicks:!1};const e={};e.tickLength=t.length;const{color:i,dash:s,width:n}=k(t);return void 0!==i&&(e.tickColor=i),void 0!==s&&(e.tickBorderDash=s),void 0!==n&&(e.tickWidth=n),e}(t.ticks),e.ticks=function(t){if(t||(t={}),!1===t.display)return{display:!1};const{color:e,...i}=w(t),s={};return void 0!==e&&(s.color=e),0!==Object.keys(i).length&&(s.font=i),s}(t.labels);const s=function(t){if(!t||0===Object.keys(t).length)return{};const e={};return void 0!==t.color&&(e.color=t.color),void 0!==t.width&&(e.width=t.width),e}(t.border);e.border=s;const n=function(t){if(t||(t={}),!1===t.display)return{grid:{drawOnChartArea:!1}};const e={},i={},{color:s,dash:n,width:o}=k(t);return void 0!==s&&(e.color=s),void 0!==n&&(i.dash=n),void 0!==o&&(e.lineWidth=o),{grid:e,border:i}}(t.grid);return e.grid=Object.assign(e.grid||{},n.grid),n.border&&(e.border=Object.assign(e.border||{},n.border)),e},P=function(t){if(!t)return{};const e=C(t);void 0!==t.min&&(e[t.forceTheLimits?"min":"suggestedMin"]=t.min),void 0!==t.max&&(e[t.forceTheLimits?"max":"suggestedMax"]=t.max);const i=t.spacingBetweenTicks;return i&&("count"===i.type?e.ticks.count=i.value:e.ticks.stepSize=i.value),e},D=function(t){if(!t)return{};const e={};if(t.reverse&&(e.reverse=!0),void 0!==t.min&&(e[t.forceTheLimits?"min":"suggestedMin"]=t.min),void 0!==t.max&&(e[t.forceTheLimits?"max":"suggestedMax"]=t.max),t.grid)if(!1===t.grid.display)e.grid={display:!1};else{const{color:i,dash:s,width:n}=k(t.grid),o={};void 0!==i&&(o.color=i),void 0!==s&&(o.borderDash=s),void 0!==n&&(o.lineWidth=n),e.grid=o}if(t.angleLines)if(!1===t.angleLines.display)e.angleLines={display:!1};else{const{color:i,dash:s,width:n}=k(t.angleLines),o={};void 0!==i&&(o.color=i),void 0!==s&&(o.borderDash=s),void 0!==n&&(o.lineWidth=n),e.angleLines=o}if(t.ticks)if(!1===t.ticks.display)e.ticks={display:!1};else{const{color:i,...s}=w(t.ticks),n={};void 0!==i&&(n.color=i),0!==Object.keys(s).length&&(n.font=s),e.ticks=n}const i=t.spacingBetweenTicks;if(i&&(e.ticks||(e.ticks={}),"count"===i.type?e.ticks.count=i.value:e.ticks.stepSize=i.value),t.pointLabels)if(!1===t.pointLabels.display)e.pointLabels={display:!1};else{const{color:i,...s}=w(t.pointLabels),n={};void 0!==i&&(n.color=i),0!==Object.keys(s).length&&(n.font=s),e.pointLabels=n}return e},O=function(t,e,i){t=n.fixCartesianChartConfig(t,e);const s={type:"bar",...p(e,t.range,t)},o=new Set,a=s.data.datasets,r=a.length;if(t.series)for(let e=0;e<r;e++){const s=t.series[e],n=a[e];void 0!==s.radius&&(n.borderRadius=s.radius),n.backgroundColor=s.color,s.borderColor&&s.borderWidth&&(n.borderColor=s.borderColor,n.borderWidth=s.borderWidth),i?"right"===s.yAxis?(n.yAxisID="y2",o.add("end")):(n.yAxisID="y",o.add("start")):"top"===s.xAxis?(n.xAxisID="x2",o.add("end")):(n.xAxisID="x",o.add("start"))}const{base:l,side:c,side2:h}=s.options.scales;let d={};return i?(2===o.size?(d.y=c,d.y2={...h,position:"right"},d.y2.grid||(d.y2.grid={}),d.y2.grid.drawOnChartArea=!1):o.has("end")?(d.y={display:!1},d.y2={...h,position:"right"}):d.y=c,d.x=l):(2===o.size?(d.x=c,d.x2={...h,position:"top"},d.x2.grid||(d.x2.grid={}),d.x2.grid.drawOnChartArea=!1):o.has("end")?(d.x={display:!1},d.x2={...h,position:"top"}):d.x=c,d.y=l,s.options.indexAxis="y"),s.options.scales=d,s},A=function(t){const e=[],i=t.length;for(let s=0;s<i;s++){const i=t[s];for(let t=0;t<i.length;t++)e[t]=(e[t]||0)+Math.abs(i[t])}return e},T={style:"percent",maximumFractionDigits:0,minimumFractionDigits:0},L=function(t,e,i){t=n.fixLineChartConfig(t,e,i);const s={type:"line",...p(e,t.range,t)},o=new Set,a=s.data.datasets,r=a.length;if(t.series)for(let e=0;e<r;e++){const s=t.series[e],n=a[e];if("right"===s.yAxis?(n.yAxisID="y2",o.add("end")):(n.yAxisID="y",o.add("start")),i){const t=s.color;n.backgroundColor=t,n.pointBackgroundColor=t;const e=void 0!==s.borderColor?s.borderColor:t;n.borderColor=e,n.pointBorderColor=e}else{const t=s.borderColor;n.borderColor=t,n.pointBorderColor=t;const e=void 0!==s.color?s.color:t;n.backgroundColor=e,n.pointBackgroundColor=e}const r=s.line;if(r){const{width:t}=r;n.borderWidth=t;const e=v(r.dash,t);e&&(n.borderDash=e),void 0!==r.curve?n.tension=r.curve:void 0!==r.stepped&&(n.stepped=r.stepped)}const l=s.point;l?(void 0!==l.borderWidth&&(n.pointBorderWidth=l.borderWidth),void 0!==l.rotation&&(n.pointRotation=l.rotation),n.pointStyle=void 0!==l.style&&l.style,n.pointRadius=void 0!==l.radius?l.radius:0):n.pointStyle=!1,void 0!==s.drawNullValues&&(n.spanGaps=s.drawNullValues)}const{base:l,side:c,side2:h}=s.options.scales;let d={x:l};return 2===o.size?(d.y=c,d.y2={...h,position:"right"},d.y2.grid||(d.y2.grid={}),d.y2.grid.drawOnChartArea=!1):o.has("end")?(d.y={display:!1},d.y2={...h,position:"right"}):d.y=c,s.options.scales=d,s},R=function(t,e){const i=L(t,e,!0),s=i.data.datasets;for(let t=0;t<s.length;t++)s[t].fill=!0;return i},E=function(t,e,i){t=n.fixPieChartConfig(t,e);const s={type:i?"pie":"doughnut",...f(e,t.range,t)},o=s.data.datasets,a=o.length;if(t.series)for(let e=0;e<a;e++){const i=t.series[e],s=o[e];s.backgroundColor=i.color,void 0!==i.borderColor&&(s.borderColor=i.borderColor),void 0!==i.circumference&&(s.circumference=i.circumference),void 0!==i.spacing&&(s.spacing=i.spacing),void 0!==i.rotation&&(s.rotation=i.rotation),s.borderWidth=0;const n=i.border;if(n){const{width:t=0}=n;if(s.borderWidth=t,void 0!==n.dash){const e=y[n.dash];e&&(s.borderDash=e(t))}void 0!==n.radius&&(s.borderRadius=n.radius)}}return i||void 0===t.cutout||(s.options||(s.options={}),s.options.cutout=100*t.cutout+"%"),s},I=/^(?:-|\+)?\d+(?:\.\d+)?$/,F=function(t){return I.test(t)},j=function(t,e){const i=[],s=e.length;for(let t=0;t<s;t++){let s=0;const n=e[t].data;for(let t=0;t<n.length;t++)"number"==typeof n[t]&&s++;i.push([s])}return{datasets:i,labels:["["+t[0]+", "+t[1]+"]"]}},z=function(t,e,i){if(1===t)return j(e,i);const s=(e[1]-e[0])/t,n=[];let o=e[0]+s;for(;o<e[1];){if(n.push(Math.round(100*o)/100),n.length>19)throw new Error("invalid chart");o+=s}const a=n.length,r=a+1,l=[],c=i.length;for(let t=0;t<c;t++){const e=i[t],s=new Array(r);s.fill(0);const o=e.data;for(let t=0;t<o.length;t++){const e=o[t];if("number"!=typeof e)continue;let i=0;for(;i<a&&e>n[i];)i++;s[i]++}l.push(s)}const h={datasets:l};let d=[];d.push("["+e[0]+" , "+n[0]+"[");for(let t=1;t<a;t++)d.push("["+n[t-1]+" , "+n[t]+"[");return d.push("["+n[a-1]+" , "+e[1]+"]"),h.labels=d,h},N=function(t,e){t=n.fixCartesianChartConfig(t,e);const i={type:"bar",...p(e,t.range,t)},s=[1/0,-1/0],o=i.data.datasets,a=o.length;for(let t=0;t<o.length;t++){const e=o[t].data;for(let t=0;t<e.length;t++){const i=e[t];"string"==typeof i&&F(i)&&(e[t]=parseFloat(i))}}for(let e=0;e<a;e++){const i=o[e],n=i.data;for(let t=0;t<n.length;t++){const e=n[t];"number"==typeof e&&(e<s[0]&&(s[0]=e),e>s[1]&&(s[1]=e))}const a=t.series[e];i.backgroundColor=a.color,a.borderWidth&&a.borderColor&&(i.borderWidth=a.borderWidth,i.borderColor=a.borderColor),void 0!==a.radius&&(i.borderRadius=a.radius)}if(s[0]===1/0&&s[1]===-1/0)throw new Error("invalid chart");const{base:r,side:l}=i.options.scales;let c;i.options.scales={x:r,y:l};const h=t.separation;if(h)c="number-of-pieces"===h.type?z(h.value,s,o):function(t,e,i){if(0===t)throw new Error("invalid chart");if(t>=e[1]-e[0])return j(e,i);const s=[];let n=e[0];do{if(n+=t,s.push(Math.round(100*n)/100),s.length>20)throw new Error("invalid chart")}while(n<e[1]);const o=s.length,a=[],r=i.length;for(let t=0;t<r;t++){const e=i[t],n=new Array(o);n.fill(0);const r=e.data;for(let t=0;t<r.length;t++){const e=r[t];if("number"!=typeof e)continue;let i=0;for(;e>s[i];)i++;n[i]++}a.push(n)}const l={datasets:a};let c=[];c.push("["+e[0]+" , "+s[0]+"[");for(let t=1;t<o-1;t++)c.push("["+s[t-1]+" , "+s[t]+"[");return c.push("["+s[o-2]+" , "+s[o-1]+"]"),l.labels=c,l}(h.value,s,o);else{const t=s[1]-s[0];let e=6,i=t/e;for(;e>1&&i<.01;)e--,i=t/e;c=z(e,s,o)}i.data.labels=c.labels;const d=c.datasets;for(let t=0;t<a;t++)o[t].data=d[t];return i},B=function(t,e,i){t=n.fixRadarChartConfig(t,e);const s={type:"radar",...f(e,t.range,t)},o=s.data.datasets,a=o.length;for(let e=0;e<a;e++){const s=o[e];s.fill=i;const n=t.series&&t.series[e],a=n.borderColor;s.borderColor=a,s.pointBorderColor=a;const r=n.color;s.backgroundColor=r,s.pointBackgroundColor=r;const l=n.line,{width:c}=l;s.borderWidth=c;const h=v(l.dash,c);h&&(s.borderDash=h),void 0!==l.curve&&(s.tension=l.curve);const d=n.point;d?(void 0!==d.borderWidth&&(s.pointBorderWidth=d.borderWidth),void 0!==d.rotation&&(s.pointRotation=d.rotation),s.pointStyle=void 0!==d.style&&d.style,s.pointRadius=void 0!==d.radius?d.radius:0):s.pointStyle=!1,void 0!==n.drawNullValues&&(s.spanGaps=n.drawNullValues)}return s.options||(s.options={}),s.options.scales={r:D(t.axis?.r)},s},V=function(t,e=[]){const i=[],s=t.length;for(let n=0;n<s;n++)e.includes(n)||i.push(t[n]);return i},W=function(t,e){return"bar"===e.type?O(e,t,!1):"stacked-bar"===e.type?function(t,e){const i=O(t,e,!1),s=i.data.datasets;for(let t=0;t<s.length;t++){const e=s[t];"x2"===e.xAxisID?e.stack="Stack 2":e.stack="Stack 1"}return i.options.scales||(i.options.scales={}),i.options.scales.x||(i.options.scales.x={}),i.options.scales.y||(i.options.scales.y={}),i.options.scales.y.stacked="origin",!1!==i.options.scales.x.display&&(i.options.scales.x.stacked="origin"),i.options.scales.x2&&(i.options.scales.x2.stacked="origin"),i}(e,t):"percent-bar"===e.type?function(t,e){const i=O(t,e,!1),s=[],n=[],o=i.data.datasets;for(let t=0;t<o.length;t++){const e=o[t],i=e.data;"x2"===e.xAxisID?(n.push(i),e.stack="Stack 2"):(s.push(i),e.stack="Stack 1");for(let t=0;t<i.length;t++){const e=i[t],s=typeof e;"string"===s?F(e)?i[t]=parseFloat(e):i[t]=0:"number"!==s&&(i[t]=0)}}const a=A(s);for(let t=0;t<s.length;t++){const e=s[t];for(let t=0;t<e.length;t++)e[t]/=a[t]}const r=A(n);for(let t=0;t<n.length;t++){const e=n[t];for(let t=0;t<e.length;t++)e[t]/=r[t]}return i.options.scales||(i.options.scales={}),i.options.scales.x||(i.options.scales.x={}),i.options.scales.y||(i.options.scales.y={}),i.options.scales.y.stacked="origin",!1!==i.options.scales.x.display&&(i.options.scales.x.stacked="origin",i.options.scales.x.ticks||(i.options.scales.x.ticks={}),i.options.scales.x.ticks.format=T),i.options.scales.x2&&(i.options.scales.x2.stacked="origin",i.options.scales.x2.ticks||(i.options.scales.x2.ticks={}),i.options.scales.x2.ticks.format=T),i}(e,t):"column"===e.type?O(e,t,!0):"stacked-column"===e.type?function(t,e){const i=O(t,e,!0),s=i.data.datasets;for(let t=0;t<s.length;t++){const e=s[t];"y2"===e.yAxisID?e.stack="Stack 2":e.stack="Stack 1"}return i.options.scales||(i.options.scales={}),i.options.scales.x||(i.options.scales.x={}),i.options.scales.y||(i.options.scales.y={}),i.options.scales.x.stacked="origin",!1!==i.options.scales.y.display&&(i.options.scales.y.stacked="origin"),i.options.scales.y2&&(i.options.scales.y2.stacked="origin"),i}(e,t):"percent-column"===e.type?function(t,e){const i=O(t,e,!0),s=[],n=[],o=i.data.datasets;for(let t=0;t<o.length;t++){const e=o[t],i=e.data;"y2"===e.yAxisID?(n.push(i),e.stack="Stack 2"):(s.push(i),e.stack="Stack 1");for(let t=0;t<i.length;t++){const e=i[t],s=typeof e;"string"===s?F(e)?i[t]=parseFloat(e):i[t]=0:"number"!==s&&(i[t]=0)}}const a=A(s);for(let t=0;t<s.length;t++){const e=s[t];for(let t=0;t<e.length;t++)e[t]/=a[t]}const r=A(n);for(let t=0;t<n.length;t++){const e=n[t];for(let t=0;t<e.length;t++)e[t]/=r[t]}return i.options.scales||(i.options.scales={}),i.options.scales.x||(i.options.scales.x={}),i.options.scales.y||(i.options.scales.y={}),i.options.scales.x.stacked="origin",!1!==i.options.scales.y.display&&(i.options.scales.y.stacked="origin",i.options.scales.y.ticks||(i.options.scales.y.ticks={}),i.options.scales.y.ticks.format=T),i.options.scales.y2&&(i.options.scales.y2.stacked="origin",i.options.scales.y2.ticks||(i.options.scales.y2.ticks={}),i.options.scales.y2.ticks.format=T),i}(e,t):"line"===e.type?L(e,t):"area"===e.type?R(e,t):"stacked-area"===e.type?function(t,e){const i=R(t,e),s=i.data.datasets;for(let t=0;t<s.length;t++){const e=s[t];"y2"===e.yAxisID?e.stack="Stack 2":e.stack="Stack 1"}return i.options.scales||(i.options.scales={}),i.options.scales.y||(i.options.scales.y={}),!1!==i.options.scales.y.display&&(i.options.scales.y.stacked="origin"),i.options.scales.y2&&(i.options.scales.y2.stacked="origin"),i}(e,t):"percent-area"===e.type?function(t,e){const i=R(t,e),s=[],n=[],o=i.data.datasets;for(let t=0;t<o.length;t++){const e=o[t],i=e.data;"y2"===e.yAxisID?(e.stack="Stack 2",s.push(i)):(e.stack="Stack 1",n.push(i));for(let t=0;t<i.length;t++){const e=i[t],s=typeof e;"number"!==s&&(i[t]="string"===s&&F(e)?parseFloat(e):0)}}const a=A(n);for(let t=0;t<n.length;t++){const e=n[t];for(let t=0;t<e.length;t++)e[t]/=a[t]}const r=A(s);for(let t=0;t<s.length;t++){const e=s[t];for(let t=0;t<e.length;t++)e[t]/=r[t]}return i.options.scales||(i.options.scales={}),i.options.scales.y||(i.options.scales.y={}),!1!==i.options.scales.y.display&&(i.options.scales.y.stacked="origin",i.options.scales.y.ticks||(i.options.scales.y.ticks={}),i.options.scales.y.ticks.format=T),i.options.scales.y2&&(i.options.scales.y2.stacked="origin",i.options.scales.y2.ticks||(i.options.scales.y2.ticks={}),i.options.scales.y2.ticks.format=T),i}(e,t):"pie"===e.type?E(e,t,!0):"doughnut"===e.type?E(e,t,!1):"scatter"===e.type?function(t,e){t=n.fixScatterChartConfig(t,e);const i={type:"scatter",...p(e,t.range,t)},s=i.data.labels;delete i.data.labels;const o=new Set,a=i.data.datasets,r=a.length;for(let e=0;e<r;e++){const i=a[e],n=i.data,r=[];for(let t=0;t<n.length;t++){let e=s[t],i=n[t];const o=typeof e;if("string"===o){if(!F(e))continue;e=parseFloat(e)}else if("number"!==o)continue;const a=typeof i;if("string"===a){if(!F(i))continue;i=parseFloat(i)}else if("number"!==a)continue;r.push({x:e,y:i})}i.data=r;const l=t.series[e];if(!l)continue;"right"===l.yAxis?(i.yAxisID="y2",o.add("end")):(i.yAxisID="y",o.add("start")),i.backgroundColor=l.color,void 0!==l.borderColor&&(i.borderColor=l.borderColor);const c=l.point;i.pointRadius=c.radius,i.pointStyle=c.style,i.pointBorderWidth=void 0!==c.borderWidth?c.borderWidth:0,void 0!==c.rotation&&(i.pointRotation=c.rotation)}const{base:l,side:c,side2:h}=i.options.scales;let d={x:l};return 2===o.size?(d.y=c,d.y2={...h,position:"right"},d.y2.grid||(d.y2.grid={}),d.y2.grid.drawOnChartArea=!1):o.has("end")?(d.y={display:!1},d.y2={...h,position:"right"}):d.y=c,i.options.scales=d,i}(e,t):"histogram"===e.type?N(e,t):"radar"===e.type?B(e,t,!1):"filled-radar"===e.type?B(e,t,!0):"pareto"===e.type?function(t,e){t=n.fixParetoChartConfig(t,e);const i={type:"bar",...p(e,t.range,t)},s=t.series,o=s[0],a=i.data.datasets[0];a.order=1;let r=a.data;const l=[];for(let t=0;t<r.length;t++){const e=r[t],i=typeof e;"string"===i&&F(e)?(r[t]=parseFloat(e),r[t]<0&&l.push(t)):("number"!==i||e<0)&&l.push(t)}a.data=V(a.data,l),i.data.labels=V(i.data.labels,l),r=a.data;const c=r.reduce((function(t,e){return t+e}),0);let h=0;const d=[];for(let t=0;t<r.length;t++)h+=r[t],d.push(Math.round(h/c*100)/100);a.backgroundColor=o.color,void 0!==o.radius&&(a.borderRadius=o.radius),o.borderWidth&&o.borderColor&&(a.borderWidth=o.borderWidth,a.borderColor=o.borderColor);const u=s[1],f={type:"line",yAxisID:"y2",order:0,data:d};f.backgroundColor=u.color,f.borderColor=u.borderColor;const g=u.line;if(g){const{width:t}=g;f.borderWidth=t;const e=v(g.dash,t);e&&(f.borderDash=e),void 0!==g.curve?f.tension=g.curve:void 0!==g.stepped&&(f.stepped=g.stepped)}const m=u.point;m?(void 0!==m.borderWidth&&(f.pointBorderWidth=m.borderWidth),void 0!==m.rotation&&(f.pointRotation=m.rotation),f.pointStyle=void 0!==m.style&&m.style,f.pointRadius=void 0!==m.radius?m.radius:0):f.pointStyle=!1,f.backgroundColor||(f.backgroundColor=f.borderColor),i.data.datasets.push(f);const{base:b,side:x,side2:_}=i.options.scales;let y={x:b,y:x,y2:{..._,position:"right"}};return y.y2.grid||(y.y2.grid={}),y.y2.grid.drawOnChartArea=!1,y.y2.ticks||(y.y2.ticks={}),y.y2.ticks.format=T,i.options.scales=y,i.options.plugins||(i.options.plugins={}),i.options.plugins.legend={display:!1},i}(e,t):void 0},H=function(t,i,n){let o=document.createElement("canvas"),a=n.querySelector("canvas");a?(n.insertBefore(o,a),a.remove()):n.appendChild(o);const l=function(t,e){const i=W(t,e);return e.backgroundColor&&(i.options||(i.options={}),i.options.plugins||(i.options.plugins={}),i.options.plugins.customBackgroundColor={color:e.backgroundColor}),i}(t,i);return l.options||(l.options={}),void 0!==e.animations&&(l.options.animations=e.animations),l.plugins=[r],l.options.maintainAspectRatio=!1,new s(o,l),o},U=function(t,e,i){i.classList.remove("jss_charts_error"),i.removeAttribute("data-error"),H(t,e,i)},$=function(t,e){let i=e.el;if("function"!=typeof e.handler){Object.defineProperty(e,"handler",{enumerable:!1,get:function(){return function(e){U(t,e.options,e.el)}}});const s=function(){t.isEditable()&&t.parent.plugins.charts.edition.open.call(t,i,e)};i.edit=s,i.addEventListener("dblclick",s),i.classList.add("jss_charts")}_(t,e,e.options.range,!0),U(t,e.options,i)},Y=function(e){let i={init:function(t){const e=t.options.media;e&&e.forEach((function(e){if("chart"===e.type)try{$(t,e)}catch(t){e.el.classList.add("jss_charts_error"),e.el.setAttribute("data-error","Something went wrong")}}))},onevent:function(t,e,i,s,n){if("onchangemedia"===t){let t=i,o=s,a=n;i.forEach((function(i,s){if("chart"===a[s].type){if((1===Object.keys(t[s]).length||t[s].options)&&o[s].options){let t=o[s].options.range;if(t)try{_(e,a[s],t,!1)}catch(t){}}if(t[s].options){let t=a[s];try{$(e,t)}catch(e){t.el.classList.add("jss_charts_error"),t.el.setAttribute("data-error","Something went wrong")}}}}))}},toolbar:function(e){return e.items.push({content:"addchart",type:"i",tooltip:o("Insert chart"),onclick:function(){let e=t.current.getRange();e&&(e=e.split("!")[1]),i.open(t.current,e)},updateState:function(t,e,i,s){s.isEditable()?i.classList.remove("jtoolbar-disabled"):i.classList.add("jtoolbar-disabled")}}),e},contextMenu:function(e,s,n,a,r,l,c,h){if(null!=s&&null!=n){let s={title:o("Insert chart"),icon:"addchart",onclick:function(){let s=t.current.getRange();s&&(s=s.split("!")[1]),i.open(e,s)}},n=0;for(let t in r)if("divisor"===r[t].type||"line"===r[t].type){n=parseInt(t)+1;break}r.splice(n,0,{type:"divisor"}),r.splice(n,0,s)}},open:function(t,e){i.input.instance=t,i.input.data=e,i.input.modal.open()}};let s=document.createElement("div");return e.tools.append(s),lemonade.render((function(){return lemonade.element('<div>\n <div><InputChart :ref="self.input" /></div>\n <div><EditionChart :ref="self.edition" /></div>\n </div>',i,{InputChart:m,EditionChart:b})}),s),i},q=function(t){return"object"==typeof t&&void 0!==t.animations&&(e.animations=t.animations),!0};return q.oninit=function(t,e){let i=l.call(t);i?console.error(i):t.setPlugins({charts:Y})},q.license=function(e){null===t&&(t=this)},q.getDataFromConfig=d,q}()},555:function(t){t.exports=function(){const t=function(t){return"string"==typeof t&&(t=t.trim()),!isNaN(t)&&null!==t&&""!==t},e=function(t,e){let i;const s=t.lastIndexOf("!");if(-1!==s){const n=t.slice(0,s);i=e.getWorksheetInstanceByName(n),t=t.slice(s+1)}else i=e;const n=e.helpers.getCoordsFromRange(t),o=n[3],a=n[2],r=[];if(i){const t=i.records;for(let e=n[1];e<=o;e++){const i=[],s=t[e];for(let t=n[0];t<=a;t++)i.push(s&&s[t]?s[t].v:0);r.push(i)}}return r},i=function(i,s){let n=0,o=0;(i=i?JSON.parse(JSON.stringify(i)):{}).range=i.range.split(",")[0];const a=void 0===i.labels||null===i.labels,r=void 0===i.datasets||null===i.datasets,l=void 0===i.orientation||null===i.orientation,c=void 0===i.headers||null===i.headers;if(!s){if(a||r||l||c)throw new Error("The chart do not have a property whose default value needs a jss instance to be generated");return i}let h=e(i.range,s);h&&h.length&&(n=h.length),h&&h[0]&&h[0].length&&(o=h[0].length);let d=0,u=0,f=[0,0];for(let e=0;e<n;e++){let i=0;for(let s=0;s<o;s++)t(h[e][s])?i++:0===e&&f[0]++;u=Math.max(u,i)}for(let e=0;e<o;e++){let i=0;for(let s=0;s<n;s++)t(h[s][e])?i++:0===e&&f[1]++;d=Math.max(d,i)}l&&(i.orientation=d>=u);const p=i.orientation?1:0;if(c&&(i.headers=p?d-n!=0:u-o!=0),a&&f[p]>0&&(i.labels=0),r){i.datasets=[];const t=p?o:n,e=i.headers;for(let s=0;s<t;s++)(!e||t<2||s>0)&&i.datasets.push(s)}else i.datasets||(i.datasets=[]);return i},s=["#1E88E5","#E53935","#43A047","#FDD835","#8E24AA","#00897B","#5D4037"],n=function(t,e){(t=i(t,e)).series||(t.series=[]);const n=t.series,o=t.datasets.length;for(let t=0;t<o;t++){n.length===t&&n.push({});const e=n[t];void 0===e.color&&(e.color=s[t%s.length])}return t},o=function(t,e,n){(t=i(t,e)).series||(t.series=[]);const o=t.series,a=t.datasets.length,r=n?"color":"borderColor";for(let t=0;t<a;t++){o.length===t&&o.push({});const e=o[t];void 0===e[r]&&(e[r]=s[t%s.length]),e.line||(e.line={});const i=e.line;i.width||(i.width=3)}return t},a=function(t,e){t=i(t,e);const n=e.helpers.getCoordsFromRange(t.range);let o=t.orientation?n[3]-n[1]:n[2]-n[0];o++,t.headers&&o--,t.series||(t.series=[]);const a=t.series,r=t.datasets.length;for(let t=0;t<r;t++){a.length===t&&a.push({});const e=a[t];void 0===e.color&&(e.color=[]);let i=0;const n=e.color;for(let t=0;t<n.length;t++)n[t]||(n[t]=s[i%s.length],i++);for(;n.length<o;)n.push(s[i%s.length]),i++}return t},r=function(t,e){(t=i(t,e)).series||(t.series=[]);const n=t.series,o=t.datasets.length,a="filled-radar"===t.type;for(let t=0;t<o;t++){n.length===t&&n.push({});const e=n[t];a?(void 0===e.color&&(e.color=s[t%s.length]),void 0===e.borderColor&&(e.borderColor=e.color)):(void 0===e.borderColor&&(e.borderColor=s[t%s.length]),void 0===e.color&&(e.color=e.borderColor)),void 0===e.line&&(e.line={});const i=e.line;void 0===i.width&&(i.width=3)}return t},l=function(t,e){const i=(t=n(t,e)).series,s=i.length;for(let t=0;t<s;t++){const e=i[t];void 0===e.point&&(e.point={});const s=e.point;void 0===s.radius&&(s.radius=3),void 0===s.style&&(s.style="circle")}return t},c=function(t,e){const n=(t=i(t,e)).datasets;n.length>1&&n.splice(1,n.length-1);t.series||(t.series=[]);const o=t.series;o.length>2&&o.splice(2,o.length-2),o[0]||(o[0]={});const a=o[0];void 0===a.color&&(a.color=s[0]),o[1]||(o[1]={});const r=o[1];return void 0===r.borderColor&&(r.borderColor=s[1]),void 0===r.color&&(r.color=r.borderColor),t},h={bar:n,column:n,histogram:n,line:function(t,e){return o(t,e)},area:function(t,e){return o(t,e,!0)},doughnut:a,pie:a,radar:r,scatter:l,pareto:c};return{isBlank:function(t){return null===t||""===t||void 0===t},isNumeric:t,getDataFromRange:e,fixCartesianChartConfig:n,fixLineChartConfig:o,fixPieChartConfig:a,fixRadarChartConfig:r,fixScatterChartConfig:l,fixParetoChartConfig:c,fillChartConfig:function(t,e){const{type:i}=t,s=i.lastIndexOf("-"),n=s>-1?i.slice(s+1):i;return h[n](t,e)}}}()},582:function(t){t.exports=function(){"use strict";function t(t){return t+.5|0}const e=(t,e,i)=>Math.max(Math.min(t,i),e);function i(i){return e(t(2.55*i),0,255)}function s(i){return e(t(255*i),0,255)}function n(i){return e(t(i/2.55)/100,0,1)}function o(i){return e(t(100*i),0,100)}const a={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},r=[..."0123456789ABCDEF"],l=t=>r[15&t],c=t=>r[(240&t)>>4]+r[15&t],h=t=>(240&t)>>4==(15&t);function d(t){var e,i=t.length;return"#"===t[0]&&(4===i||5===i?e={r:255&17*a[t[1]],g:255&17*a[t[2]],b:255&17*a[t[3]],a:5===i?17*a[t[4]]:255}:7!==i&&9!==i||(e={r:a[t[1]]<<4|a[t[2]],g:a[t[3]]<<4|a[t[4]],b:a[t[5]]<<4|a[t[6]],a:9===i?a[t[7]]<<4|a[t[8]]:255})),e}function u(t){var e=(t=>h(t.r)&&h(t.g)&&h(t.b)&&h(t.a))(t)?l:c;return t?"#"+e(t.r)+e(t.g)+e(t.b)+((t,e)=>t<255?e(t):"")(t.a,e):void 0}const f=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function p(t,e,i){const s=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-s*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function g(t,e,i){const s=(s,n=(s+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[s(5),s(3),s(1)]}function m(t,e,i){const s=p(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)s[n]*=1-e-i,s[n]+=e;return s}function b(t){const e=t.r/255,i=t.g/255,s=t.b/255,n=Math.max(e,i,s),o=Math.min(e,i,s),a=(n+o)/2;let r,l,c;return n!==o&&(c=n-o,l=a>.5?c/(2-n-o):c/(n+o),r=function(t,e,i,s,n){return t===n?(e-i)/s+(e<i?6:0):e===n?(i-t)/s+2:(t-e)/s+4}(e,i,s,c,n),r=60*r+.5),[0|r,l||0,a]}function x(t,e,i,n){return(Array.isArray(e)?t(e[0],e[1],e[2]):t(e,i,n)).map(s)}function _(t,e,i){return x(p,t,e,i)}function y(t,e,i){return x(m,t,e,i)}function v(t,e,i){return x(g,t,e,i)}function k(t){return(t%360+360)%360}function w(t){const e=f.exec(t);let n,o=255;if(!e)return;e[5]!==n&&(o=e[6]?i(+e[5]):s(+e[5]));const a=k(+e[2]),r=+e[3]/100,l=+e[4]/100;return n="hwb"===e[1]?y(a,r,l):"hsv"===e[1]?v(a,r,l):_(a,r,l),{r:n[0],g:n[1],b:n[2],a:o}}function M(t,e){var i=b(t);i[0]=k(i[0]+e),i=_(i),t.r=i[0],t.g=i[1],t.b=i[2]}function S(t){if(!t)return;const e=b(t),i=e[0],s=o(e[1]),a=o(e[2]);return t.a<255?`hsla(${i}, ${s}%, ${a}%, ${n(t.a)})`:`hsl(${i}, ${s}%, ${a}%)`}const C={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},P={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};let D;function O(t){D||(D=function(){const t={},e=Object.keys(P),i=Object.keys(C);let s,n,o,a,r;for(s=0;s<e.length;s++){for(a=r=e[s],n=0;n<i.length;n++)o=i[n],r=r.replace(o,C[o]);o=parseInt(P[a],16),t[r]=[o>>16&255,o>>8&255,255&o]}return t}(),D.transparent=[0,0,0,0]);const e=D[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}const A=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function T(t){const s=A.exec(t);let n,o,a,r=255;if(s){if(s[7]!==n){const t=+s[7];r=s[8]?i(t):e(255*t,0,255)}return n=+s[1],o=+s[3],a=+s[5],n=255&(s[2]?i(n):e(n,0,255)),o=255&(s[4]?i(o):e(o,0,255)),a=255&(s[6]?i(a):e(a,0,255)),{r:n,g:o,b:a,a:r}}}function L(t){return t&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${n(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`)}const R=t=>t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,E=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function I(t,e,i){if(t){let s=b(t);s[e]=Math.max(0,Math.min(s[e]+s[e]*i,0===e?360:1)),s=_(s),t.r=s[0],t.g=s[1],t.b=s[2]}}function F(t,e){return t?Object.assign(e||{},t):t}function j(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=s(t[3]))):(e=F(t,{r:0,g:0,b:0,a:1})).a=s(e.a),e}class z{constructor(t){if(t instanceof z)return t;const e=typeof t;let i;var s;"object"===e?i=j(t):"string"===e&&(i=d(t)||O(t)||("r"===(s=t).charAt(0)?T(s):w(s))),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=F(this._rgb);return t&&(t.a=n(t.a)),t}set rgb(t){this._rgb=j(t)}rgbString(){return this._valid?L(this._rgb):void 0}hexString(){return this._valid?u(this._rgb):void 0}hslString(){return this._valid?S(this._rgb):void 0}mix(t,e){if(t){const i=this.rgb,s=t.rgb;let n;const o=e===n?.5:e,a=2*o-1,r=i.a-s.a,l=((a*r==-1?a:(a+r)/(1+a*r))+1)/2;n=1-