@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) • 259 kB
JavaScript
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=11,i={};const 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=d(t,e,i).data;return s.labels?s.labels=s.labels.data.map((t=>t)):s.labels=new Array(s.datasets[0].data.length).fill(""),s},d=function(e,i,s){s||(s={}),i=i.split(",")[0];let o=n.getDataFromRange(i,e),a=n.analyzeData(o,s),r=o&&o.length?o.length:0,l=[],c=i;c=c.split("!"),c=c[c.length-1],c=c.split(":");let h=t.helpers.getCoordsFromColumnName(c[0]),d=t.helpers.getCoordsFromColumnName(c[1]);l=[];for(let e=h[1];e<=d[1];e++){let i=[];for(let s=h[0];s<=d[0];s++)i.push(t.helpers.getCellNameFromCoords(s,e));l.push(i)}const u=function(t,e){let i="",s=[],n=e[t];if(n){if(1===a.orientation){n=[];for(let i=0;i<r;i++)n.push(e[i][t])}let o=a.datapoints.indexOf(0);-1!==o&&(i=n[o]||""),n=a.datapoints.map(((t,e)=>{t>0&&s.push(n[e])}))}return{label:a.headers?i:"",data:s}};let f={data:{},ident:{},config:a};return f.data.datasets=a.datasets?.map((t=>u(t,o))),null!==a.labels?f.data.labels=u(a.labels,o):f.data.labels=null,f.ident.datasets=a.datasets?.map((t=>u(t,l))),null!==a.labels?f.ident.labels=u(a.labels,l):f.ident.labels=null,f},u=function(t){for(let e=0;e<t.length;e++){const i=t[e];""===i?t[e]=null:Array.isArray(i)&&u(i)}},f=function(t,e,i){e=e.split(",")[0];const s={data:h(t,e,i)},n={},o=S(i.title);o&&(n.title=o);const a=S(i.subtitle);a&&(n.subtitle=a);const r=P(i.legend);return r&&(n.legend=r),0!==Object.keys(n).length&&(s.options||(s.options={}),s.options.plugins=n),s},g=function(t,e,i){i||(i={});const s=f(t,e,i),n={base:D(i.axis?.base),side:O(i.axis?.side),side2:{type:"linear",display:!0,grid:{},...O(i.axis?.side2)}};return s.options||(s.options={}),s.options.scales=n,s},p={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("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(t,e,i){let s=d(t,e.range);e.type||(e.type="bar");let n={type:e.type,range:e.range};return i?n.orientation=void 0===e.orientation?s.config.orientation:e.orientation:s.config.orientation!==e.orientation&&(n.orientation=e.orientation),i?n.headers=void 0===e.headers?s.config.headers:e.headers:s.config.headers!==e.headers&&(n.headers=e.headers),i?n.labels=void 0===e.labels?s.config.labels:e.labels:s.config.labels!==e.labels&&(n.labels=e.labels),""===e.labels&&(e.labels=null),i?n.datasets=void 0===e.datasets?s.config.datasets:e.datasets:e.datasets&&e.datasets.length&&(n.datasets=e.datasets),Array.isArray(n.datasets)&&(n.datasets=n.datasets.filter((t=>null!=t&&""!==t))),e.title&&(n.title=e.title),(i||e.titleText)&&(n.title||(n.title={}),e.titleText&&(n.title.text=e.titleText),e.titlePosition&&(n.title.position=e.titlePosition),e.titleFont&&(n.title.font=e.titleFont)),e.legend&&(n.legend=e.legend),(i||e.legendText||e.legendDisplay)&&(n.legend||(n.legend={}),e.legendText&&(n.legend.text=e.legendText),e.legendPosition&&(n.legend.position=e.legendPosition),e.legendDisplay&&(n.legend.display=e.legendDisplay),e.legendLabels&&(n.legend.labels=e.legendLabels)),e.series&&(n.series=e.series),e.axis&&(n.axis=e.axis),n},b=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={type:"chart",width:400,height:300,options:{type:e.type,range:t}};i.setMedia(s),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>`},x=function(){let e=this;const i=function(){let i={orientation:e.orientation,headers:e.headers};i=d(e.worksheet,e.range,i);let s=i.data.datasets;i.data.labels&&s.unshift(i.data.labels);let n=i.ident.datasets;i.ident.labels&&n.unshift(i.ident.labels),e.headers||(s=n);let o=[];return s.map((function(i,s){if(e.headers){let e=i.label;if(!e){let i=n[s].data;n[s].label&&i.unshift(n[s].label),e=t.helpers.getRangeFromTokens(i)}o.push({text:e,value:o.length})}else{let e=i.data;i.label&&e.unshift(i.label);let s=t.helpers.getRangeFromTokens(e);o.push({text:s,value:o.length})}})),o};let s;return e.canvas=null,e.datasets=[],e.useHeaderText=e.orientation?o("Use the first column as headers"):o("Use the first row as headers"),e.dropdown=p,e.loadDropdownOptions=function(){let t=d(e.worksheet,e.range,{orientation:e.orientation,headers:e.headers}),s=i(),n=[];return n=e.datasets?e.datasets.map((t=>({value:t,datasets:a(s)}))):t.config.datasets.map((t=>({value:t,datasets:a(s)}))),{datasets:n,labels:a(s)}},e.open=function(t,i){let s=d(this,i.options.range,{orientation:i.options.orientation,headers:i.options.headers});e.options=a(i.options),e.worksheet=this,e.type=e.options.type,e.range=e.options.range,void 0===e.options.orientation?e.orientation=s.config.orientation:e.orientation=e.options.orientation?1:0,void 0===e.options.headers?e.headers=s.config.headers:e.headers=e.options.headers,e.datasets=e.options.datasets||null;let n=e.loadDropdownOptions();e.currentDatasets=n.datasets,e.currentLabels=n.labels,void 0===e.options.labels?e.labels=s.config.labels:e.labels=e.options.labels,e.titleText=e.options.title?.text||"",e.titlePosition=e.options.title?.position||"",e.titleFont=e.options.title?.font,e.legendText=e.options.legend?.text||"",e.legendPosition=e.options.legend?.position||"",e.legendDisplay=e.options.legend?.display||"",e.legendLabels=e.options.legend?.labels,e.axis=e.options.axis,e.series=e.options.series,e.update(),e.chart=t,e.canvas=t.children[0],e.modal.closed=!1},e.close=function(t){if(e.chart){if(!0===t){let t=m(e.worksheet,e);e.worksheet.setMedia([{id:e.chart.id,options:t}])}else e.chart.children[0]!==e.canvas&&(e.chart.children[0].remove(),e.chart.appendChild(e.canvas));e.options={},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")},e.onchange=function(t){if(e.chart){if("range"===t){let t=d(e.worksheet,e.range);e.orientation=t.config.orientation,e.headers=t.config.headers,e.labels=t.config.labels,e.datasets=null}if("orientation"===t||"headers"===t){let t=e.loadDropdownOptions(e.datasets),i=e.labels;e.currentDatasets=t.datasets,e.currentLabels=t.labels,e.labels=i}"orientation"===t&&(e.useHeaderText=e.orientation?o("Use the first column as headers"):o("Use the first row as headers")),s&&clearTimeout(s),s=setTimeout((function(){let t=m(e.worksheet,e,!0);X(e.worksheet,t,e.chart),s=null}),50)}},e.createRange=function(i){t.picker(i,{type:"picker",onchange:function(t){e.range=t}})},e.add=function(){e.currentDatasets.push({datasets:i()}),e.refresh("currentDatasets"),e.update()},e.remove=function(t,i){e.currentDatasets.splice(e.currentDatasets.indexOf(i),1),e.refresh("currentDatasets"),e.update()},e.update=function(){let i=d(e.worksheet,e.range,{orientation:e.orientation,headers:e.headers}),s=[];e.currentDatasets.forEach((t=>{s.push(t.value)})),t.helpers.compareArray(i.config.datasets,s)?e.datasets=null:e.datasets=s},`<div class="jss_object">\n <lm-modal icon="bar_chart" title="Chart settings" position="right" overflow="true" :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" :allowempty="false" 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" :allowempty="false" width="110" />\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.legendText" />\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>`},y=function(t,e,i){return"function"==typeof t.getCellObject?t.getCellObject(e,i):t.records[i][e]},_=function(i,s,n,o){if(e>11)i.setChain(s,n,o);else{let e=c.call(i,n);const a=e.length;for(let i=0;i<a;i++){let{cellNames:n,worksheet:a}=e[i];const r=n.length;for(let e=0;e<r;e++){const[i,r]=t.helpers.getCoordsFromColumnName(n[e]),l=y(a,i,r);l&&(l.chain||(l.chain=new Map),o?l.chain.set(s,!0):l.chain.delete(s,!0))}}}},v=function(t){return function(t){if(!Array.isArray(t))return t;if(1===t.length)return t[0];let e=!0;const i=t.length;for(let s=0;s<i;s++)if(1!==t[s].length){e=!1;break}if(!e)return t;const s=[];for(let e=0;e<i;e++){const i=t[e];s.push(i[0])}return s}(this.getValue(t))},k={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]}},w=function(t,e){if(t){const i=k[t];return"function"==typeof i?i(e):null}return null},M=function(t){const e={};void 0!==t.color&&(e.color=t.color);const{width:i}=t;if(e.width=i,t.dash){const s=k[t.dash];"function"==typeof s&&(e.dash=s(i))}return e},C=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},S=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}=C(t.font);return void 0!==i&&(e.color=i),0!==Object.keys(s).length&&(e.font=s),0!==Object.keys(e).length?e:null},P=function(t){if(!t)return null;if(!1===t.display)return{display:!1};const e={};if(void 0!==t.position&&(e.position=t.position),void 0!==t.align&&(e.align=t.align),t){const i={...t},{color:s,...n}=C(t.font);void 0!==s&&(i.color=s),0!==Object.keys(n).length&&(i.font=n),e.title=i}const i=t.labels;if(i){i.reverse&&(e.reverse=!0);const t={},{color:s,...n}=C(i.font);void 0!==s&&(t.color=s),0!==Object.keys(n).length&&(t.font=n),0!==Object.keys(t).length&&(e.labels=t)}return 0!==Object.keys(e).length?e:null},D=function(t){if(!t)return{};const e={},i=function(t){if(!t||!t.text)return null;const{color:e,...i}=C(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}=M(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}=C(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}=M(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},O=function(t){if(!t)return{};const e=D(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},A=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}=M(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}=M(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}=C(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}=C(t.pointLabels),n={};void 0!==i&&(n.color=i),0!==Object.keys(s).length&&(n.font=s),e.pointLabels=n}return e},T=function(t,e,i){t=n.fixCartesianChartConfig(t,e);const s={type:"bar",...g(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},L=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},R={style:"percent",maximumFractionDigits:0,minimumFractionDigits:0},E=function(t,e,i){t=n.fixLineChartConfig(t,e,i);const s={type:"line",...g(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=w(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},I=function(t,e){const i=E(t,e,!0),s=i.data.datasets;for(let t=0;t<s.length;t++)s[t].fill=!0;return i},F=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=k[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},j=/^(?:-|\+)?\d+(?:\.\d+)?$/,z=function(t){return j.test(t)},N=function(t,e,i,s,n){if(void 0!==e){const i=v.call(t,e);return s&&i.shift(),u(i),i}const o=[],a=n.length;for(let t=s?1:0;t<a;t++)o.push(n[t][i]);return u(o),o},B=function(t,e,i,s,n){const o=e?v.call(t,e):[...n[i]];return s&&o.shift(),u(o),o},V=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]+"]"]}},W=function(t,e,i){if(1===t)return V(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},H=function(t,e){t=n.fixCartesianChartConfig(t,e);const i={type:"bar",...g(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&&z(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?W(h.value,s,o):function(t,e,i){if(0===t)throw new Error("invalid chart");if(t>=e[1]-e[0])return V(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=W(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},U=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=w(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:A(t.axis?.r)},s},$=function(t,e=[]){const i=[],s=t.length;for(let n=0;n<s;n++)e.includes(n)||i.push(t[n]);return i},Y=function(e,i){return"bar"===i.type?T(i,e,!1):"stacked-bar"===i.type?function(t,e){const i=T(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}(i,e):"percent-bar"===i.type?function(t,e){const i=T(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?z(e)?i[t]=parseFloat(e):i[t]=0:"number"!==s&&(i[t]=0)}}const a=L(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=L(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=R),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=R),i}(i,e):"column"===i.type?T(i,e,!0):"stacked-column"===i.type?function(t,e){const i=T(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}(i,e):"percent-column"===i.type?function(t,e){const i=T(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?z(e)?i[t]=parseFloat(e):i[t]=0:"number"!==s&&(i[t]=0)}}const a=L(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=L(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=R),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=R),i}(i,e):"line"===i.type?E(i,e):"area"===i.type?I(i,e):"stacked-area"===i.type?function(t,e){const i=I(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}(i,e):"percent-area"===i.type?function(t,e){const i=I(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&&z(e)?parseFloat(e):0)}}const a=L(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=L(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=R),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=R),i}(i,e):"pie"===i.type?F(i,e,!0):"doughnut"===i.type?F(i,e,!1):"scatter"===i.type?function(t,e){t=n.fixScatterChartConfig(t,e);const i={type:"scatter",...g(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(!z(e))continue;e=parseFloat(e)}else if("number"!==o)continue;const a=typeof i;if("string"===a){if(!z(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}(i,e):"bubble"===i.type?function(e,i){const s={type:"bubble",data:{}};let n=e.range.split(",")[0].split(":"),o=t.helpers.getCoordsFromColumnName(n[0]),a=t.helpers.getCoordsFromColumnName(n[1]),r=i.getData([o[0],o[1],a[0],a[1]]);const l={};let c;if(e.orientation){let t=0;if(e.markers)l.labels=N(i,e.labels,t,e.headers,r),t++;else{const t=[];let i=r.length;for(let s=e.headers?1:0;s<i;s++)t.push("");l.labels=t}l.xAxis=N(i,e.xAxis,t,e.headers,r),t++,l.yAxis=N(i,e.yAxis,t,e.headers,r),t++,c=N(i,e.data,t,e.headers,r)}else{let t=0;if(options.markers)l.labels=B(i,options.labels,t,options.headers,r),t++;else{const t=[];let e=r[0].length;for(let i=options.headers?1:0;i<e;i++)t.push("");l.labels=t}l.xAxis=B(i,e.xAxis,nextUnusedColumn,e.headers,r),t++,l.yAxis=B(i,e.yAxis,nextUnusedColumn,e.headers,r),t++,c=B(i,e.data,nextUnusedColumn,e.headers,r)}l.data=c;const h=[];s.data.datasets=h;const d=[5,30];let u,f=[1/0,-1/0];for(let t=0;t<c.length;t++){let e=c[t];const i=typeof e;if("string"===i&&z(e)){if(e=c[t]=parseFloat(e),c[t]<0){c[t]=null;continue}}else if("number"!==i||e<0){c[t]=null;continue}e<f[0]&&(f[0]=e),e>f[1]&&(f[1]=e)}Number.isFinite(f[0])&&Number.isFinite(f[1])&&0!==f[1]?(f[0]===f[1]&&(f[0]=0),u=(f[1]-f[0])/(d[1]-d[0])):u=null;for(let t=0;t<l.data.length;t++){const e=l.xAxis[t],i=l.yAxis[t];let s,n=l.labels[t];"string"!=typeof n&&(n=n.toString()),null!==u?(s=l.data[t],null!==s&&(s=(s-f[0])/u+d[0],s=Math.round(100*s)/100)):s=null;const o={label:n,data:[{x:e,y:i,r:s}]};h.push(o)}const g=new Set,p=e.series,m=h.length;for(let t=0;t<m;t++){const e=p[t];if(!e)continue;const i=h[t];"right"===e.yAxis?(i.yAxisID="y2",g.add("end")):(i.yAxisID="y",g.add("start")),void 0!==e.color&&(i.backgroundColor=e.color),void 0!==e.borderColor&&(i.borderColor=e.borderColor);const s=e.point;s&&(i.borderWidth=void 0!==s.borderWidth?s.borderWidth:0,void 0!==s.rotation&&(i.rotation=s.rotation),void 0!==s.style&&(i.pointStyle=s.style))}let b={};if(2===g.size){b={y2:{type:"linear",display:!0,position:"right",grid:{}}};const t=O(e.axis?.side);b.y=t;const i=O(e.axis?.side2);Object.assign(b.y2,i),b.y2.grid.drawOnChartArea=!1}else if(g.has("end")){b={y:{display:!1},y2:{type:"linear",display:!0,position:"right"}};const t=O(e.axis?.side2);Object.assign(b.y2,t)}else b={y:O(e.axis?.side)};b.x=O(e.axis?.base),s.options={scales:b};const x={},y=S(e.title);y&&(x.title=y);const _=S(e.subtitle);_&&(x.subtitle=_);const v=P(e.legend);return v&&(x.legend=v),x.tooltip={callbacks:{label:function(t){let e=t.dataset.label+": (";return e+=t.parsed.x+", ",e+=t.parsed.y+", ",e+=l.data[t.datasetIndex]+")",e}}},s.options.plugins=x,s}(i,e):"histogram"===i.type?H(i,e):"radar"===i.type?U(i,e,!1):"filled-radar"===i.type?U(i,e,!0):"pareto"===i.type?function(t,e){t=n.fixParetoChartConfig(t,e);const i={type:"bar",...g(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&&z(e)?(r[t]=parseFloat(e),r[t]<0&&l.push(t)):("number"!==i||e<0)&&l.push(t)}a.data=$(a.data,l),i.data.labels=$(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 p=u.line;if(p){const{width:t}=p;f.borderWidth=t;const e=w(p.dash,t);e&&(f.borderDash=e),void 0!==p.curve?f.tension=p.curve:void 0!==p.stepped&&(f.stepped=p.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:y}=i.options.scales;let _={x:b,y:x,y2:{...y,position:"right"}};return _.y2.grid||(_.y2.grid={}),_.y2.grid.drawOnChartArea=!1,_.y2.ticks||(_.y2.ticks={}),_.y2.ticks.format=R,i.options.scales=_,i.options.plugins||(i.options.plugins={}),i.options.plugins.legend={display:!1},i}(i,e):void 0},q=function(t,e,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=Y(t,e);return e.backgroundColor&&(i.options||(i.options={}),i.options.plugins||(i.options.plugins={}),i.options.plugins.customBackgroundColor={color:e.backgroundColor}),i}(t,e);return l.options||(l.options={}),void 0!==i.animations&&(l.options.animations=i.animations),l.plugins=[r],l.options.maintainAspectRatio=!1,new s(o,l),o},X=function(t,e,i){i.classList.remove("jss_charts_error"),i.removeAttribute("data-error"),q(t,e,i)},K=function(t,e){let i=e.el;if("function"!=typeof e.handler){Object.defineProperty(e,"handler",{enumerable:!1,get:function(){return function(e){X(t,e.options,e.el)}}}),Object.defineProperty(e,"range",{enumerable:!1,get:()=>e.options.range}),Object.defineProperty(e,"w",{enumerable:!1,get:()=>t});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),X(t,e.options,i)},G=function(e){let i={init:function(t){const e=t.options.media;e&&e.forEach((function(e){if("chart"===e.type)try{K(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{K(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:b,EditionChart:x})}),s),i},J=function(t){return"object"==typeof t&&void 0!==t.animations&&(i.animations=t.animations),!0};return J.oninit=function(t,e){let i=l.call(t);i?console.error(i):t.setPlugins({charts:G})},J.license=function(i){if(null===t){t=this;let i=this.version();i&&i.version&&(e=parseInt(i.version))}},J.getDataFromConfig=d,J}()},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(t,i){(t=t?JSON.parse(JSON.stringify(t)):{}).range=t.range.split(",")[0];const s=void 0===t.labels||null===t.labels,n=void 0===t.datasets||null===t.datasets,o=void 0===t.orientation||null===t.orientation,a=void 0===t.headers||null===t.headers;if(!i){if(s||n||o||a)throw new Error("The chart do not have a property whose default value needs a jss instance to be generated");return t}let r=e(t.range,i),l=d(r,t);return{...t,...l}},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},d=function(e,i){let{orientation:s,headers:n,labels:o,datasets:a}=i;if(!0===s&&(s=1),!e||!Array.isArray(e)||0===e.length)return null;let r=e.length,l=e[0].length,c=[],h=[],d=0,u=0;for(let i=0;i<r;i++){let s=!1,n=!1;for(let o=0;o<l;o++)t(e[i][o])?s=!0:n=!0;let o=0;s&&!n?o=1:s&&n&&(o=2),c[i]=o,o&&u++}for(let i=0;i<l;i++){let s=!1,n=!1;for(let o=0;o<r;o++)t(e[o][i])?s=!0:n=!0;let o=0;s&&!n?o=1:s&&n&&(o=2),h[i]=o,o&&d++}if(null==s&&(s=h.includes(2)&&!c.includes(2)?1:!h.includes(2)&&c.includes(2)||d>=u?0:1),null==n&&(1===s&&[0,2].includes(h[0])||0===s&&[0,2].includes(c[0]))&&(n=!0),void 0===o&&(o=1===s?h.indexOf(0):c.indexOf(0),-1===o&&(o=null)),!Array.isArray(a))if(a=[],1===s)for(let t=0;t<h.length;t++)[1,2].includes(h[t])&&a.push(t);else for(let t=0;t<c.length;t++)[1,2].includes(c[t])&&a.push(t);return{headers:n,labels:o,orientation:s,datasets:a,datapoints:1===s?c:h}};return{analyzeData:d,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 g(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 p(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=g(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 y(t,e,i){return x(g,t,e,i)}function _(t,e,i){return x(m,t,e,i)}function v(t,e,i){return x(p,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]?_(a,r,l):"hsv"===e[1]?v(a,r,l):y(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=y(i),t.r=i[0],t.g=i[1],t.b=i[2]}function C(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 S={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: