From a1d7d4626d784b98dccd1c32082e3f5a848ff414 Mon Sep 17 00:00:00 2001 From: jiaming743 <743192023@qq.com> Date: Tue, 3 Sep 2019 11:07:45 +0800 Subject: [PATCH] update build process --- build/entry.js | 4 + build/index.js | 211 + build/plugin/exec.js | 19 + build/plugin/print.js | 22 + build/rollup.config.js | 22 + dist/datav.map.js | 23685 +++++++++++++++++++++++++++++++++++++++ publish.js | 3 - 7 files changed, 23963 insertions(+), 3 deletions(-) create mode 100644 build/entry.js create mode 100644 build/index.js create mode 100644 build/plugin/exec.js create mode 100644 build/plugin/print.js create mode 100644 build/rollup.config.js create mode 100644 dist/datav.map.js delete mode 100644 publish.js diff --git a/build/entry.js b/build/entry.js new file mode 100644 index 0000000..821208d --- /dev/null +++ b/build/entry.js @@ -0,0 +1,4 @@ +import Vue from 'vue' +import datav from '../src/index' + +Vue.use(datav) diff --git a/build/index.js b/build/index.js new file mode 100644 index 0000000..0028b6d --- /dev/null +++ b/build/index.js @@ -0,0 +1,211 @@ +const { copyDir, fileForEach, readFile, writeFile, unlinkDirFileByExtname, dirForEach } = require('@jiaminghi/fs') +const print = require('./plugin/print') +const path = require('path') +const exec = require('./plugin/exec') + +const PACKAGE_SRC = './src' +const COMPILE_SRC = './lib' +const COMPONENTS_DIR = '/components' +const ENTRANCE = '/index.js' +const libName = 'datav' + +async function start () { + // Compile for NPM + + const copyPackage = await copyDir(PACKAGE_SRC, COMPILE_SRC) + + if (!copyPackage) { + print.error('Exception in file copy!') + + return false + } + + print.success('Complete file copy!') + + const abstract = await abstractLessFromVue() + + if (!abstract) { + print.error('Exception in less file extraction!') + + return false + } + + print.success('Complete less file extraction!') + + await compileLessToCss() + + print.success('Complete less compilation to css!') + + const unlink = await unlinkDirFileByExtname(COMPILE_SRC, ['.less']) + + if (!unlink) { + print.error('Exception in less file deletion!') + + return false + } + + print.success('Complete less file deletion!') + + const addImport = await addCssImport() + + if (!addImport) { + print.error('Exception in adding css import statement!') + + return false + } + + print.success('Finish adding css import statement!') + + const componentsExport = await addComponentsExport() + + if (!componentsExport) { + print.error('Exception in adding components export statement!') + + return false + } + + print.success('Finish adding components export statement!') + + // Compile for UMD version + const rollupCompile = await exec(`rollup -c build/rollup.config.js`) + + if (!rollupCompile) { + print.error('Exception in rollupCompile') + + return + } + + print.tip('After rollupCompile') + + // const uglifyjs = await exec(`uglifyjs dist/${libName}.map.js -o dist/${libName}.min.js`) + + // if (!uglifyjs) { + // print.error('Exception in uglifyjs') + + // return + // } + + // print.tip('After uglifyjs') + + print.yellow('-------------------------------------') + print.success(' DataV Lib Compile Success! ') + print.yellow('-------------------------------------') + + return true +} + +async function abstractLessFromVue () { + let abstractSuccess = true + + await fileForEach(COMPILE_SRC, async src => { + if (path.extname(src) !== '.vue') return + + let template = await readFile(src) + + let style = template.match(/\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$5 = undefined; + /* module identifier */ + const __vue_module_identifier__$5 = undefined; + /* functional template */ + const __vue_is_functional_template__$5 = false; + /* style inject SSR */ + + + + var BorderBox4 = normalizeComponent_1( + { render: __vue_render__$5, staticRenderFns: __vue_staticRenderFns__$5 }, + __vue_inject_styles__$5, + __vue_script__$5, + __vue_scope_id__$5, + __vue_is_functional_template__$5, + __vue_module_identifier__$5, + browser, + undefined + ); + + function borderBox4 (Vue) { + Vue.component(BorderBox4.name, BorderBox4); + } + + // + var script$6 = { + name: 'DvBorderBox5', + mixins: [autoResize], + + data() { + return { + ref: 'border-box-5' + }; + }, + + props: { + reverse: { + type: Boolean, + default: false + } + } + }; + + /* script */ + const __vue_script__$6 = script$6; + + /* template */ + var __vue_render__$6 = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c("div", { ref: _vm.ref, staticClass: "dv-border-box-5" }, [ + _c( + "svg", + { + class: "dv-svg-container " + (_vm.reverse && "dv-reverse"), + attrs: { width: _vm.width, height: _vm.height } + }, + [ + _c("polyline", { + staticClass: "dv-bb5-line-1", + attrs: { + points: + "8, 5 " + + (_vm.width - 5) + + ", 5 " + + (_vm.width - 5) + + ", " + + (_vm.height - 100) + + "\n " + + (_vm.width - 100) + + ", " + + (_vm.height - 5) + + " 8, " + + (_vm.height - 5) + + " 8, 5" + } + }), + _vm._v(" "), + _c("polyline", { + staticClass: "dv-bb5-line-2", + attrs: { + points: + "3, 5 " + + (_vm.width - 20) + + ", 5 " + + (_vm.width - 20) + + ", " + + (_vm.height - 60) + + "\n " + + (_vm.width - 74) + + ", " + + (_vm.height - 5) + + " 3, " + + (_vm.height - 5) + + " 3, 5" + } + }), + _vm._v(" "), + _c("polyline", { + staticClass: "dv-bb5-line-3", + attrs: { points: "50, 13 " + (_vm.width - 35) + ", 13" } + }), + _vm._v(" "), + _c("polyline", { + staticClass: "dv-bb5-line-4", + attrs: { points: "15, 20 " + (_vm.width - 35) + ", 20" } + }), + _vm._v(" "), + _c("polyline", { + staticClass: "dv-bb5-line-5", + attrs: { + points: + "15, " + + (_vm.height - 20) + + " " + + (_vm.width - 110) + + ", " + + (_vm.height - 20) + } + }), + _vm._v(" "), + _c("polyline", { + staticClass: "dv-bb5-line-6", + attrs: { + points: + "15, " + + (_vm.height - 13) + + " " + + (_vm.width - 110) + + ", " + + (_vm.height - 13) + } + }) + ] + ), + _vm._v(" "), + _c("div", { staticClass: "border-box-content" }, [_vm._t("default")], 2) + ]) + }; + var __vue_staticRenderFns__$6 = []; + __vue_render__$6._withStripped = true; + + /* style */ + const __vue_inject_styles__$6 = function (inject) { + if (!inject) return + inject("data-v-775fac1b_0", { source: ".dv-border-box-5 {\n position: relative;\n width: 100%;\n height: 100%;\n}\n.dv-border-box-5 .dv-reverse {\n transform: rotate(180deg);\n}\n.dv-border-box-5 .dv-svg-container {\n position: absolute;\n top: 0px;\n left: 0px;\n width: 100%;\n height: 100%;\n}\n.dv-border-box-5 .dv-svg-container polyline {\n fill: none;\n}\n.dv-border-box-5 .dv-bb5-line-1 {\n stroke-width: 1;\n stroke: rgba(255, 255, 255, 0.35);\n}\n.dv-border-box-5 .dv-bb5-line-2 {\n stroke: rgba(255, 255, 255, 0.2);\n}\n.dv-border-box-5 .dv-bb5-line-3,\n.dv-border-box-5 .dv-bb5-line-6 {\n stroke-width: 5;\n stroke: rgba(255, 255, 255, 0.15);\n}\n.dv-border-box-5 .dv-bb5-line-4,\n.dv-border-box-5 .dv-bb5-line-5 {\n stroke-width: 2;\n stroke: rgba(255, 255, 255, 0.15);\n}\n.dv-border-box-5 .border-box-content {\n position: relative;\n width: 100%;\n height: 100%;\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;AACd;AACA;EACE,yBAAyB;AAC3B;AACA;EACE,kBAAkB;EAClB,QAAQ;EACR,SAAS;EACT,WAAW;EACX,YAAY;AACd;AACA;EACE,UAAU;AACZ;AACA;EACE,eAAe;EACf,iCAAiC;AACnC;AACA;EACE,gCAAgC;AAClC;AACA;;EAEE,eAAe;EACf,iCAAiC;AACnC;AACA;;EAEE,eAAe;EACf,iCAAiC;AACnC;AACA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;AACd","file":"main.vue","sourcesContent":[".dv-border-box-5 {\n position: relative;\n width: 100%;\n height: 100%;\n}\n.dv-border-box-5 .dv-reverse {\n transform: rotate(180deg);\n}\n.dv-border-box-5 .dv-svg-container {\n position: absolute;\n top: 0px;\n left: 0px;\n width: 100%;\n height: 100%;\n}\n.dv-border-box-5 .dv-svg-container polyline {\n fill: none;\n}\n.dv-border-box-5 .dv-bb5-line-1 {\n stroke-width: 1;\n stroke: rgba(255, 255, 255, 0.35);\n}\n.dv-border-box-5 .dv-bb5-line-2 {\n stroke: rgba(255, 255, 255, 0.2);\n}\n.dv-border-box-5 .dv-bb5-line-3,\n.dv-border-box-5 .dv-bb5-line-6 {\n stroke-width: 5;\n stroke: rgba(255, 255, 255, 0.15);\n}\n.dv-border-box-5 .dv-bb5-line-4,\n.dv-border-box-5 .dv-bb5-line-5 {\n stroke-width: 2;\n stroke: rgba(255, 255, 255, 0.15);\n}\n.dv-border-box-5 .border-box-content {\n position: relative;\n width: 100%;\n height: 100%;\n}\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$6 = undefined; + /* module identifier */ + const __vue_module_identifier__$6 = undefined; + /* functional template */ + const __vue_is_functional_template__$6 = false; + /* style inject SSR */ + + + + var BorderBox5 = normalizeComponent_1( + { render: __vue_render__$6, staticRenderFns: __vue_staticRenderFns__$6 }, + __vue_inject_styles__$6, + __vue_script__$6, + __vue_scope_id__$6, + __vue_is_functional_template__$6, + __vue_module_identifier__$6, + browser, + undefined + ); + + function borderBox5 (Vue) { + Vue.component(BorderBox5.name, BorderBox5); + } + + // + var script$7 = { + name: 'DvBorderBox6', + mixins: [autoResize], + + data() { + return { + ref: 'border-box-6' + }; + } + + }; + + /* script */ + const __vue_script__$7 = script$7; + + /* template */ + var __vue_render__$7 = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c("div", { ref: _vm.ref, staticClass: "dv-border-box-6" }, [ + _c( + "svg", + { + staticClass: "dv-svg-container", + attrs: { width: _vm.width, height: _vm.height } + }, + [ + _c("circle", { attrs: { cx: "5", cy: "5", r: "2" } }), + _vm._v(" "), + _c("circle", { attrs: { cx: _vm.width - 5, cy: "5", r: "2" } }), + _vm._v(" "), + _c("circle", { + attrs: { cx: _vm.width - 5, cy: _vm.height - 5, r: "2" } + }), + _vm._v(" "), + _c("circle", { attrs: { cx: "5", cy: _vm.height - 5, r: "2" } }), + _vm._v(" "), + _c("polyline", { + attrs: { points: "10, 4 " + (_vm.width - 10) + ", 4" } + }), + _vm._v(" "), + _c("polyline", { + attrs: { + points: + "10, " + + (_vm.height - 4) + + " " + + (_vm.width - 10) + + ", " + + (_vm.height - 4) + } + }), + _vm._v(" "), + _c("polyline", { attrs: { points: "5, 70 5, " + (_vm.height - 70) } }), + _vm._v(" "), + _c("polyline", { + attrs: { + points: + _vm.width - + 5 + + ", 70 " + + (_vm.width - 5) + + ", " + + (_vm.height - 70) + } + }), + _vm._v(" "), + _c("polyline", { attrs: { points: "3, 10, 3, 50" } }), + _vm._v(" "), + _c("polyline", { attrs: { points: "7, 30 7, 80" } }), + _vm._v(" "), + _c("polyline", { + attrs: { points: _vm.width - 3 + ", 10 " + (_vm.width - 3) + ", 50" } + }), + _vm._v(" "), + _c("polyline", { + attrs: { points: _vm.width - 7 + ", 30 " + (_vm.width - 7) + ", 80" } + }), + _vm._v(" "), + _c("polyline", { + attrs: { + points: "3, " + (_vm.height - 10) + " 3, " + (_vm.height - 50) + } + }), + _vm._v(" "), + _c("polyline", { + attrs: { + points: "7, " + (_vm.height - 30) + " 7, " + (_vm.height - 80) + } + }), + _vm._v(" "), + _c("polyline", { + attrs: { + points: + _vm.width - + 3 + + ", " + + (_vm.height - 10) + + " " + + (_vm.width - 3) + + ", " + + (_vm.height - 50) + } + }), + _vm._v(" "), + _c("polyline", { + attrs: { + points: + _vm.width - + 7 + + ", " + + (_vm.height - 30) + + " " + + (_vm.width - 7) + + ", " + + (_vm.height - 80) + } + }) + ] + ), + _vm._v(" "), + _c("div", { staticClass: "border-box-content" }, [_vm._t("default")], 2) + ]) + }; + var __vue_staticRenderFns__$7 = []; + __vue_render__$7._withStripped = true; + + /* style */ + const __vue_inject_styles__$7 = function (inject) { + if (!inject) return + inject("data-v-a61b75b4_0", { source: ".dv-border-box-6 {\n position: relative;\n width: 100%;\n height: 100%;\n}\n.dv-border-box-6 .dv-svg-container {\n position: absolute;\n top: 0px;\n left: 0px;\n width: 100%;\n height: 100%;\n}\n.dv-border-box-6 .dv-svg-container circle {\n fill: gray;\n}\n.dv-border-box-6 .dv-svg-container polyline {\n fill: none;\n stroke-width: 1;\n stroke: rgba(255, 255, 255, 0.35);\n}\n.dv-border-box-6 .border-box-content {\n position: relative;\n width: 100%;\n height: 100%;\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;AACd;AACA;EACE,kBAAkB;EAClB,QAAQ;EACR,SAAS;EACT,WAAW;EACX,YAAY;AACd;AACA;EACE,UAAU;AACZ;AACA;EACE,UAAU;EACV,eAAe;EACf,iCAAiC;AACnC;AACA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;AACd","file":"main.vue","sourcesContent":[".dv-border-box-6 {\n position: relative;\n width: 100%;\n height: 100%;\n}\n.dv-border-box-6 .dv-svg-container {\n position: absolute;\n top: 0px;\n left: 0px;\n width: 100%;\n height: 100%;\n}\n.dv-border-box-6 .dv-svg-container circle {\n fill: gray;\n}\n.dv-border-box-6 .dv-svg-container polyline {\n fill: none;\n stroke-width: 1;\n stroke: rgba(255, 255, 255, 0.35);\n}\n.dv-border-box-6 .border-box-content {\n position: relative;\n width: 100%;\n height: 100%;\n}\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$7 = undefined; + /* module identifier */ + const __vue_module_identifier__$7 = undefined; + /* functional template */ + const __vue_is_functional_template__$7 = false; + /* style inject SSR */ + + + + var BorderBox6 = normalizeComponent_1( + { render: __vue_render__$7, staticRenderFns: __vue_staticRenderFns__$7 }, + __vue_inject_styles__$7, + __vue_script__$7, + __vue_scope_id__$7, + __vue_is_functional_template__$7, + __vue_module_identifier__$7, + browser, + undefined + ); + + function borderBox6 (Vue) { + Vue.component(BorderBox6.name, BorderBox6); + } + + // + var script$8 = { + name: 'DvBorderBox7', + mixins: [autoResize], + + data() { + return { + ref: 'border-box-7' + }; + } + + }; + + /* script */ + const __vue_script__$8 = script$8; + + /* template */ + var __vue_render__$8 = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c("div", { ref: _vm.ref, staticClass: "dv-border-box-7" }, [ + _c( + "svg", + { + staticClass: "dv-svg-container", + attrs: { width: _vm.width, height: _vm.height } + }, + [ + _c("polyline", { + staticClass: "dv-bb7-line-width-2", + attrs: { points: "0, 25 0, 0 25, 0" } + }), + _vm._v(" "), + _c("polyline", { + staticClass: "dv-bb7-line-width-2", + attrs: { + points: + _vm.width - 25 + ", 0 " + _vm.width + ", 0 " + _vm.width + ", 25" + } + }), + _vm._v(" "), + _c("polyline", { + staticClass: "dv-bb7-line-width-2", + attrs: { + points: + _vm.width - + 25 + + ", " + + _vm.height + + " " + + _vm.width + + ", " + + _vm.height + + " " + + _vm.width + + ", " + + (_vm.height - 25) + } + }), + _vm._v(" "), + _c("polyline", { + staticClass: "dv-bb7-line-width-2", + attrs: { + points: + "0, " + + (_vm.height - 25) + + " 0, " + + _vm.height + + " 25, " + + _vm.height + } + }), + _vm._v(" "), + _c("polyline", { + staticClass: "dv-bb7-line-width-5", + attrs: { points: "0, 10 0, 0 10, 0" } + }), + _vm._v(" "), + _c("polyline", { + staticClass: "dv-bb7-line-width-5", + attrs: { + points: + _vm.width - 10 + ", 0 " + _vm.width + ", 0 " + _vm.width + ", 10" + } + }), + _vm._v(" "), + _c("polyline", { + staticClass: "dv-bb7-line-width-5", + attrs: { + points: + _vm.width - + 10 + + ", " + + _vm.height + + " " + + _vm.width + + ", " + + _vm.height + + " " + + _vm.width + + ", " + + (_vm.height - 10) + } + }), + _vm._v(" "), + _c("polyline", { + staticClass: "dv-bb7-line-width-5", + attrs: { + points: + "0, " + + (_vm.height - 10) + + " 0, " + + _vm.height + + " 10, " + + _vm.height + } + }) + ] + ), + _vm._v(" "), + _c("div", { staticClass: "border-box-content" }, [_vm._t("default")], 2) + ]) + }; + var __vue_staticRenderFns__$8 = []; + __vue_render__$8._withStripped = true; + + /* style */ + const __vue_inject_styles__$8 = function (inject) { + if (!inject) return + inject("data-v-4407270e_0", { source: ".dv-border-box-7 {\n position: relative;\n width: 100%;\n height: 100%;\n box-shadow: inset 0 0 40px rgba(128, 128, 128, 0.3);\n border: 1px solid rgba(128, 128, 128, 0.3);\n}\n.dv-border-box-7 .dv-svg-container {\n position: absolute;\n top: 0px;\n left: 0px;\n width: 100%;\n height: 100%;\n}\n.dv-border-box-7 .dv-svg-container polyline {\n fill: none;\n stroke-linecap: round;\n}\n.dv-border-box-7 .dv-bb7-line-width-2 {\n stroke: rgba(128, 128, 128, 0.3);\n stroke-width: 2;\n}\n.dv-border-box-7 .dv-bb7-line-width-5 {\n stroke: rgba(128, 128, 128, 0.5);\n stroke-width: 5;\n}\n.dv-border-box-7 .border-box-content {\n position: relative;\n width: 100%;\n height: 100%;\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;EACZ,mDAAmD;EACnD,0CAA0C;AAC5C;AACA;EACE,kBAAkB;EAClB,QAAQ;EACR,SAAS;EACT,WAAW;EACX,YAAY;AACd;AACA;EACE,UAAU;EACV,qBAAqB;AACvB;AACA;EACE,gCAAgC;EAChC,eAAe;AACjB;AACA;EACE,gCAAgC;EAChC,eAAe;AACjB;AACA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;AACd","file":"main.vue","sourcesContent":[".dv-border-box-7 {\n position: relative;\n width: 100%;\n height: 100%;\n box-shadow: inset 0 0 40px rgba(128, 128, 128, 0.3);\n border: 1px solid rgba(128, 128, 128, 0.3);\n}\n.dv-border-box-7 .dv-svg-container {\n position: absolute;\n top: 0px;\n left: 0px;\n width: 100%;\n height: 100%;\n}\n.dv-border-box-7 .dv-svg-container polyline {\n fill: none;\n stroke-linecap: round;\n}\n.dv-border-box-7 .dv-bb7-line-width-2 {\n stroke: rgba(128, 128, 128, 0.3);\n stroke-width: 2;\n}\n.dv-border-box-7 .dv-bb7-line-width-5 {\n stroke: rgba(128, 128, 128, 0.5);\n stroke-width: 5;\n}\n.dv-border-box-7 .border-box-content {\n position: relative;\n width: 100%;\n height: 100%;\n}\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$8 = undefined; + /* module identifier */ + const __vue_module_identifier__$8 = undefined; + /* functional template */ + const __vue_is_functional_template__$8 = false; + /* style inject SSR */ + + + + var BorderBox7 = normalizeComponent_1( + { render: __vue_render__$8, staticRenderFns: __vue_staticRenderFns__$8 }, + __vue_inject_styles__$8, + __vue_script__$8, + __vue_scope_id__$8, + __vue_is_functional_template__$8, + __vue_module_identifier__$8, + browser, + undefined + ); + + function borderBox7 (Vue) { + Vue.component(BorderBox7.name, BorderBox7); + } + + // + var script$9 = { + name: 'DvBorderBox8', + mixins: [autoResize], + + data() { + return { + ref: 'border-box-8', + path: `border-box-8-path-${new Date().getTime()}`, + gradient: `border-box-8-gradient-${new Date().getTime()}`, + mask: `border-box-8-mask-${new Date().getTime()}` + }; + }, + + computed: { + length() { + const { + width, + height + } = this; + return (width + height - 5) * 2; + } + + } + }; + + /* script */ + const __vue_script__$9 = script$9; + + /* template */ + var __vue_render__$9 = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c("div", { ref: _vm.ref, staticClass: "dv-border-box-8" }, [ + _c( + "svg", + { + staticClass: "dv-svg-container", + attrs: { width: _vm.width, height: _vm.height } + }, + [ + _c( + "defs", + [ + _c("path", { + attrs: { + id: _vm.path, + d: + "M2.5, 2.5 L" + + (_vm.width - 2.5) + + ", 2.5 L" + + (_vm.width - 2.5) + + ", " + + (_vm.height - 2.5) + + " L2.5, " + + (_vm.height - 2.5) + + " L2.5, 2.5", + fill: "transparent" + } + }), + _vm._v(" "), + _c( + "radialGradient", + { attrs: { id: _vm.gradient, cx: "50%", cy: "50%", r: "50%" } }, + [ + _c("stop", { + attrs: { + offset: "0%", + "stop-color": "#fff", + "stop-opacity": "1" + } + }), + _vm._v(" "), + _c("stop", { + attrs: { + offset: "100%", + "stop-color": "#fff", + "stop-opacity": "0" + } + }) + ], + 1 + ), + _vm._v(" "), + _c("mask", { attrs: { id: _vm.mask } }, [ + _c( + "circle", + { + attrs: { + cx: "0", + cy: "0", + r: "150", + fill: "url(#" + _vm.gradient + ")" + } + }, + [ + _c("animateMotion", { + attrs: { + dur: "3s", + path: + "M2.5, 2.5 L" + + (_vm.width - 2.5) + + ", 2.5 L" + + (_vm.width - 2.5) + + ", " + + (_vm.height - 2.5) + + " L2.5, " + + (_vm.height - 2.5) + + " L2.5, 2.5", + rotate: "auto", + repeatCount: "indefinite" + } + }) + ], + 1 + ) + ]) + ], + 1 + ), + _vm._v(" "), + _c("use", { + attrs: { + stroke: "#235fa7", + "stroke-width": "1", + "xlink:href": "#" + _vm.path + } + }), + _vm._v(" "), + _c( + "use", + { + attrs: { + stroke: "#4fd2dd", + "stroke-width": "3", + "xlink:href": "#" + _vm.path, + mask: "url(#" + _vm.mask + ")" + } + }, + [ + _c("animate", { + attrs: { + attributeName: "stroke-dasharray", + from: "0, " + _vm.length, + to: _vm.length + ", 0", + dur: "3s", + repeatCount: "indefinite" + } + }) + ] + ) + ] + ), + _vm._v(" "), + _c("div", { staticClass: "border-box-content" }, [_vm._t("default")], 2) + ]) + }; + var __vue_staticRenderFns__$9 = []; + __vue_render__$9._withStripped = true; + + /* style */ + const __vue_inject_styles__$9 = function (inject) { + if (!inject) return + inject("data-v-ab8dc534_0", { source: ".dv-border-box-8 {\n position: relative;\n width: 100%;\n height: 100%;\n}\n.dv-border-box-8 svg {\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0px;\n top: 0px;\n}\n.dv-border-box-8 .border-box-content {\n position: relative;\n width: 100%;\n height: 100%;\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;AACd;AACA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;EACZ,SAAS;EACT,QAAQ;AACV;AACA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;AACd","file":"main.vue","sourcesContent":[".dv-border-box-8 {\n position: relative;\n width: 100%;\n height: 100%;\n}\n.dv-border-box-8 svg {\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0px;\n top: 0px;\n}\n.dv-border-box-8 .border-box-content {\n position: relative;\n width: 100%;\n height: 100%;\n}\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$9 = undefined; + /* module identifier */ + const __vue_module_identifier__$9 = undefined; + /* functional template */ + const __vue_is_functional_template__$9 = false; + /* style inject SSR */ + + + + var BorderBox8 = normalizeComponent_1( + { render: __vue_render__$9, staticRenderFns: __vue_staticRenderFns__$9 }, + __vue_inject_styles__$9, + __vue_script__$9, + __vue_scope_id__$9, + __vue_is_functional_template__$9, + __vue_module_identifier__$9, + browser, + undefined + ); + + function borderBox8 (Vue) { + Vue.component(BorderBox8.name, BorderBox8); + } + + // + var script$a = { + name: 'DvBorderBox9', + mixins: [autoResize], + + data() { + return { + ref: 'border-box-9', + gradientId: `border-box-9-gradient-${new Date().getTime()}`, + maskId: `border-box-9-mask-${new Date().getTime()}` + }; + } + + }; + + /* script */ + const __vue_script__$a = script$a; + + /* template */ + var __vue_render__$a = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c("div", { ref: _vm.ref, staticClass: "dv-border-box-9" }, [ + _c( + "svg", + { + staticClass: "dv-svg-container", + attrs: { width: _vm.width, height: _vm.height } + }, + [ + _c( + "defs", + [ + _c( + "linearGradient", + { + attrs: { + id: _vm.gradientId, + x1: "0%", + y1: "0%", + x2: "100%", + y2: "100%" + } + }, + [ + _c("stop", { + attrs: { offset: "0%", "stop-color": "#11eefd" } + }), + _vm._v(" "), + _c("stop", { + attrs: { offset: "100%", "stop-color": "#0078d2" } + }) + ], + 1 + ), + _vm._v(" "), + _c("mask", { attrs: { id: _vm.maskId } }, [ + _c("polyline", { + attrs: { + stroke: "#fff", + "stroke-width": "3", + fill: "transparent", + points: + "8, " + + _vm.height * 0.4 + + " 8, 3, " + + (_vm.width * 0.4 + 7) + + ", 3" + } + }), + _vm._v(" "), + _c("polyline", { + attrs: { + fill: "#fff", + points: + "8, " + + _vm.height * 0.15 + + " 8, 3, " + + (_vm.width * 0.1 + 7) + + ", 3\n " + + _vm.width * 0.1 + + ", 8 14, 8 14, " + + (_vm.height * 0.15 - 7) + + "\n " + } + }), + _vm._v(" "), + _c("polyline", { + attrs: { + stroke: "#fff", + "stroke-width": "3", + fill: "transparent", + points: + _vm.width * 0.5 + + ", 3 " + + (_vm.width - 3) + + ", 3, " + + (_vm.width - 3) + + ", " + + _vm.height * 0.25 + } + }), + _vm._v(" "), + _c("polyline", { + attrs: { + fill: "#fff", + points: + "\n " + + _vm.width * 0.52 + + ", 3 " + + _vm.width * 0.58 + + ", 3\n " + + (_vm.width * 0.58 - 7) + + ", 9 " + + (_vm.width * 0.52 + 7) + + ", 9\n " + } + }), + _vm._v(" "), + _c("polyline", { + attrs: { + fill: "#fff", + points: + "\n " + + _vm.width * 0.9 + + ", 3 " + + (_vm.width - 3) + + ", 3 " + + (_vm.width - 3) + + ", " + + _vm.height * 0.1 + + "\n " + + (_vm.width - 9) + + ", " + + (_vm.height * 0.1 - 7) + + " " + + (_vm.width - 9) + + ", 9 " + + (_vm.width * 0.9 + 7) + + ", 9\n " + } + }), + _vm._v(" "), + _c("polyline", { + attrs: { + stroke: "#fff", + "stroke-width": "3", + fill: "transparent", + points: + "8, " + + _vm.height * 0.5 + + " 8, " + + (_vm.height - 3) + + " " + + (_vm.width * 0.3 + 7) + + ", " + + (_vm.height - 3) + } + }), + _vm._v(" "), + _c("polyline", { + attrs: { + fill: "#fff", + points: + "\n 8, " + + _vm.height * 0.55 + + " 8, " + + _vm.height * 0.7 + + "\n 2, " + + (_vm.height * 0.7 - 7) + + " 2, " + + (_vm.height * 0.55 + 7) + + "\n " + } + }), + _vm._v(" "), + _c("polyline", { + attrs: { + stroke: "#fff", + "stroke-width": "3", + fill: "transparent", + points: + _vm.width * 0.35 + + ", " + + (_vm.height - 3) + + " " + + (_vm.width - 3) + + ", " + + (_vm.height - 3) + + " " + + (_vm.width - 3) + + ", " + + _vm.height * 0.35 + } + }), + _vm._v(" "), + _c("polyline", { + attrs: { + fill: "#fff", + points: + "\n " + + _vm.width * 0.92 + + ", " + + (_vm.height - 3) + + " " + + (_vm.width - 3) + + ", " + + (_vm.height - 3) + + " " + + (_vm.width - 3) + + ", " + + _vm.height * 0.8 + + "\n " + + (_vm.width - 9) + + ", " + + (_vm.height * 0.8 + 7) + + " " + + (_vm.width - 9) + + ", " + + (_vm.height - 9) + + " " + + (_vm.width * 0.92 + 7) + + ", " + + (_vm.height - 9) + + "\n " + } + }) + ]) + ], + 1 + ), + _vm._v(" "), + _c("rect", { + attrs: { + x: "0", + y: "0", + width: _vm.width, + height: _vm.height, + fill: "url(#" + _vm.gradientId + ")", + mask: "url(#" + _vm.maskId + ")" + } + }) + ] + ), + _vm._v(" "), + _c("div", { staticClass: "border-box-content" }, [_vm._t("default")], 2) + ]) + }; + var __vue_staticRenderFns__$a = []; + __vue_render__$a._withStripped = true; + + /* style */ + const __vue_inject_styles__$a = function (inject) { + if (!inject) return + inject("data-v-3ccfbea8_0", { source: ".dv-border-box-9 {\n position: relative;\n width: 100%;\n height: 100%;\n}\n.dv-border-box-9 svg {\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0px;\n top: 0px;\n}\n.dv-border-box-9 .border-box-content {\n position: relative;\n width: 100%;\n height: 100%;\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;AACd;AACA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;EACZ,SAAS;EACT,QAAQ;AACV;AACA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;AACd","file":"main.vue","sourcesContent":[".dv-border-box-9 {\n position: relative;\n width: 100%;\n height: 100%;\n}\n.dv-border-box-9 svg {\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0px;\n top: 0px;\n}\n.dv-border-box-9 .border-box-content {\n position: relative;\n width: 100%;\n height: 100%;\n}\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$a = undefined; + /* module identifier */ + const __vue_module_identifier__$a = undefined; + /* functional template */ + const __vue_is_functional_template__$a = false; + /* style inject SSR */ + + + + var BorderBox9 = normalizeComponent_1( + { render: __vue_render__$a, staticRenderFns: __vue_staticRenderFns__$a }, + __vue_inject_styles__$a, + __vue_script__$a, + __vue_scope_id__$a, + __vue_is_functional_template__$a, + __vue_module_identifier__$a, + browser, + undefined + ); + + function borderBox9 (Vue) { + Vue.component(BorderBox9.name, BorderBox9); + } + + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + var script$b = { + name: 'DvBorderBox10', + + data() { + return { + border: ['left-top', 'right-top', 'left-bottom', 'right-bottom'] + }; + } + + }; + + /* script */ + const __vue_script__$b = script$b; + + /* template */ + var __vue_render__$b = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c( + "div", + { staticClass: "dv-border-box-10" }, + [ + _vm._l(_vm.border, function(item) { + return _c( + "svg", + { + key: item, + class: item + " border", + attrs: { width: "150px", height: "150px" } + }, + [ + _c("polygon", { + attrs: { + fill: "#d3e1f8", + points: "40, 0 5, 0 0, 5 0, 16 3, 19 3, 7 7, 3 35, 3" + } + }) + ] + ) + }), + _vm._v(" "), + _c("div", { staticClass: "border-box-content" }, [_vm._t("default")], 2) + ], + 2 + ) + }; + var __vue_staticRenderFns__$b = []; + __vue_render__$b._withStripped = true; + + /* style */ + const __vue_inject_styles__$b = function (inject) { + if (!inject) return + inject("data-v-4ca6df50_0", { source: ".dv-border-box-10 {\n position: relative;\n width: 100%;\n height: 100%;\n box-shadow: inset 0 0 25px 3px #1d48c4;\n border-radius: 6px;\n}\n.dv-border-box-10 .border {\n position: absolute;\n display: block;\n}\n.dv-border-box-10 .right-top {\n right: 0px;\n transform: rotateY(180deg);\n}\n.dv-border-box-10 .left-bottom {\n bottom: 0px;\n transform: rotateX(180deg);\n}\n.dv-border-box-10 .right-bottom {\n right: 0px;\n bottom: 0px;\n transform: rotateX(180deg) rotateY(180deg);\n}\n.dv-border-box-10 .border-box-content {\n position: relative;\n width: 100%;\n height: 100%;\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;EACZ,sCAAsC;EACtC,kBAAkB;AACpB;AACA;EACE,kBAAkB;EAClB,cAAc;AAChB;AACA;EACE,UAAU;EACV,0BAA0B;AAC5B;AACA;EACE,WAAW;EACX,0BAA0B;AAC5B;AACA;EACE,UAAU;EACV,WAAW;EACX,0CAA0C;AAC5C;AACA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;AACd","file":"main.vue","sourcesContent":[".dv-border-box-10 {\n position: relative;\n width: 100%;\n height: 100%;\n box-shadow: inset 0 0 25px 3px #1d48c4;\n border-radius: 6px;\n}\n.dv-border-box-10 .border {\n position: absolute;\n display: block;\n}\n.dv-border-box-10 .right-top {\n right: 0px;\n transform: rotateY(180deg);\n}\n.dv-border-box-10 .left-bottom {\n bottom: 0px;\n transform: rotateX(180deg);\n}\n.dv-border-box-10 .right-bottom {\n right: 0px;\n bottom: 0px;\n transform: rotateX(180deg) rotateY(180deg);\n}\n.dv-border-box-10 .border-box-content {\n position: relative;\n width: 100%;\n height: 100%;\n}\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$b = undefined; + /* module identifier */ + const __vue_module_identifier__$b = undefined; + /* functional template */ + const __vue_is_functional_template__$b = false; + /* style inject SSR */ + + + + var BorderBox10 = normalizeComponent_1( + { render: __vue_render__$b, staticRenderFns: __vue_staticRenderFns__$b }, + __vue_inject_styles__$b, + __vue_script__$b, + __vue_scope_id__$b, + __vue_is_functional_template__$b, + __vue_module_identifier__$b, + browser, + undefined + ); + + function borderBox10 (Vue) { + Vue.component(BorderBox10.name, BorderBox10); + } + + // + var script$c = { + name: 'DvDecoration1', + mixins: [autoResize], + + data() { + const pointSideLength = 2.5; + return { + ref: 'decoration-1', + svgWH: [200, 50], + svgScale: [1, 1], + rowNum: 4, + rowPoints: 20, + pointSideLength, + halfPointSideLength: pointSideLength / 2, + points: [], + rects: [] + }; + }, + + methods: { + afterAutoResizeMixinInit() { + const { + calcSVGData + } = this; + calcSVGData(); + }, + + calcSVGData() { + const { + calcPointsPosition, + calcRectsPosition, + calcScale + } = this; + calcPointsPosition(); + calcRectsPosition(); + calcScale(); + }, + + calcPointsPosition() { + const { + svgWH, + rowNum, + rowPoints + } = this; + const [w, h] = svgWH; + const horizontalGap = w / (rowPoints + 1); + const verticalGap = h / (rowNum + 1); + let points = new Array(rowNum).fill(0).map((foo, i) => new Array(rowPoints).fill(0).map((foo, j) => [horizontalGap * (j + 1), verticalGap * (i + 1)])); + this.points = points.reduce((all, item) => [...all, ...item], []); + }, + + calcRectsPosition() { + const { + points, + rowPoints + } = this; + const rect1 = points[rowPoints * 2 - 1]; + const rect2 = points[rowPoints * 2 - 3]; + this.rects = [rect1, rect2]; + }, + + calcScale() { + const { + width, + height, + svgWH + } = this; + const [w, h] = svgWH; + this.svgScale = [width / w, height / h]; + }, + + onResize() { + const { + calcSVGData + } = this; + calcSVGData(); + } + + } + }; + + /* script */ + const __vue_script__$c = script$c; + + /* template */ + var __vue_render__$c = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c("div", { ref: _vm.ref, staticClass: "dv-decoration-1" }, [ + _c( + "svg", + { + style: + "transform:scale(" + _vm.svgScale[0] + "," + _vm.svgScale[1] + ");", + attrs: { width: _vm.svgWH[0] + "px", height: _vm.svgWH[1] + "px" } + }, + [ + _vm._l(_vm.points, function(point, i) { + return [ + Math.random() > 0.6 + ? _c( + "rect", + { + key: i, + attrs: { + fill: "#fff", + x: point[0] - _vm.halfPointSideLength, + y: point[1] - _vm.halfPointSideLength, + width: _vm.pointSideLength, + height: _vm.pointSideLength + } + }, + [ + Math.random() > 0.6 + ? _c("animate", { + attrs: { + attributeName: "fill", + values: "#fff;transparent", + dur: "1s", + begin: Math.random() * 2, + repeatCount: "indefinite" + } + }) + : _vm._e() + ] + ) + : _vm._e() + ] + }), + _vm._v(" "), + _vm.rects[0] + ? _c( + "rect", + { + attrs: { + fill: "#0de7c2", + x: _vm.rects[0][0] - _vm.pointSideLength, + y: _vm.rects[0][1] - _vm.pointSideLength, + width: _vm.pointSideLength * 2, + height: _vm.pointSideLength * 2 + } + }, + [ + _c("animate", { + attrs: { + attributeName: "width", + values: "0;" + _vm.pointSideLength * 2, + dur: "2s", + repeatCount: "indefinite" + } + }), + _vm._v(" "), + _c("animate", { + attrs: { + attributeName: "height", + values: "0;" + _vm.pointSideLength * 2, + dur: "2s", + repeatCount: "indefinite" + } + }), + _vm._v(" "), + _c("animate", { + attrs: { + attributeName: "x", + values: + _vm.rects[0][0] + + ";" + + (_vm.rects[0][0] - _vm.pointSideLength), + dur: "2s", + repeatCount: "indefinite" + } + }), + _vm._v(" "), + _c("animate", { + attrs: { + attributeName: "y", + values: + _vm.rects[0][1] + + ";" + + (_vm.rects[0][1] - _vm.pointSideLength), + dur: "2s", + repeatCount: "indefinite" + } + }) + ] + ) + : _vm._e(), + _vm._v(" "), + _vm.rects[1] + ? _c( + "rect", + { + attrs: { + fill: "#0de7c2", + x: _vm.rects[1][0] - 40, + y: _vm.rects[1][1] - _vm.pointSideLength, + width: 40, + height: _vm.pointSideLength * 2 + } + }, + [ + _c("animate", { + attrs: { + attributeName: "width", + values: "0;40;0", + dur: "2s", + repeatCount: "indefinite" + } + }), + _vm._v(" "), + _c("animate", { + attrs: { + attributeName: "x", + values: + _vm.rects[1][0] + + ";" + + (_vm.rects[1][0] - 40) + + ";" + + _vm.rects[1][0], + dur: "2s", + repeatCount: "indefinite" + } + }) + ] + ) + : _vm._e() + ], + 2 + ) + ]) + }; + var __vue_staticRenderFns__$c = []; + __vue_render__$c._withStripped = true; + + /* style */ + const __vue_inject_styles__$c = function (inject) { + if (!inject) return + inject("data-v-37b4d8de_0", { source: ".dv-decoration-1 {\n width: 100%;\n height: 100%;\n}\n.dv-decoration-1 svg {\n transform-origin: left top;\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,WAAW;EACX,YAAY;AACd;AACA;EACE,0BAA0B;AAC5B","file":"main.vue","sourcesContent":[".dv-decoration-1 {\n width: 100%;\n height: 100%;\n}\n.dv-decoration-1 svg {\n transform-origin: left top;\n}\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$c = undefined; + /* module identifier */ + const __vue_module_identifier__$c = undefined; + /* functional template */ + const __vue_is_functional_template__$c = false; + /* style inject SSR */ + + + + var Decoration1 = normalizeComponent_1( + { render: __vue_render__$c, staticRenderFns: __vue_staticRenderFns__$c }, + __vue_inject_styles__$c, + __vue_script__$c, + __vue_scope_id__$c, + __vue_is_functional_template__$c, + __vue_module_identifier__$c, + browser, + undefined + ); + + function decoration1 (Vue) { + Vue.component(Decoration1.name, Decoration1); + } + + // + var script$d = { + name: 'DvDecoration2', + mixins: [autoResize], + props: { + reverse: { + type: Boolean, + default: false + } + }, + + data() { + return { + ref: 'decoration-2', + x: 0, + y: 0, + w: 0, + h: 0 + }; + }, + + watch: { + reverse() { + const { + calcSVGData + } = this; + calcSVGData(); + } + + }, + methods: { + afterAutoResizeMixinInit() { + const { + calcSVGData + } = this; + calcSVGData(); + }, + + calcSVGData() { + const { + reverse, + width, + height + } = this; + + if (reverse) { + this.w = 1; + this.h = height; + this.x = width / 2; + this.y = 0; + } else { + this.w = width; + this.h = 1; + this.x = 0; + this.y = height / 2; + } + }, + + onResize() { + const { + calcSVGData + } = this; + calcSVGData(); + } + + } + }; + + /* script */ + const __vue_script__$d = script$d; + + /* template */ + var __vue_render__$d = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c("div", { ref: _vm.ref, staticClass: "dv-decoration-2" }, [ + _c( + "svg", + { attrs: { width: _vm.width + "px", height: _vm.height + "px" } }, + [ + _c( + "rect", + { + attrs: { + x: _vm.x, + y: _vm.y, + width: _vm.w, + height: _vm.h, + fill: "#3faacb" + } + }, + [ + _c("animate", { + attrs: { + attributeName: _vm.reverse ? "height" : "width", + from: "0", + to: _vm.reverse ? _vm.height : _vm.width, + dur: "6s", + calcMode: "spline", + keyTimes: "0;1", + keySplines: ".42,0,.58,1", + repeatCount: "indefinite" + } + }) + ] + ), + _vm._v(" "), + _c( + "rect", + { + attrs: { x: _vm.x, y: _vm.y, width: "1", height: "1", fill: "#fff" } + }, + [ + _c("animate", { + attrs: { + attributeName: _vm.reverse ? "y" : "x", + from: "0", + to: _vm.reverse ? _vm.height : _vm.width, + dur: "6s", + calcMode: "spline", + keyTimes: "0;1", + keySplines: "0.42,0,0.58,1", + repeatCount: "indefinite" + } + }) + ] + ) + ] + ) + ]) + }; + var __vue_staticRenderFns__$d = []; + __vue_render__$d._withStripped = true; + + /* style */ + const __vue_inject_styles__$d = function (inject) { + if (!inject) return + inject("data-v-830db22e_0", { source: ".dv-decoration-2 {\n display: flex;\n width: 100%;\n height: 100%;\n justify-content: center;\n align-items: center;\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,aAAa;EACb,WAAW;EACX,YAAY;EACZ,uBAAuB;EACvB,mBAAmB;AACrB","file":"main.vue","sourcesContent":[".dv-decoration-2 {\n display: flex;\n width: 100%;\n height: 100%;\n justify-content: center;\n align-items: center;\n}\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$d = undefined; + /* module identifier */ + const __vue_module_identifier__$d = undefined; + /* functional template */ + const __vue_is_functional_template__$d = false; + /* style inject SSR */ + + + + var Decoration2 = normalizeComponent_1( + { render: __vue_render__$d, staticRenderFns: __vue_staticRenderFns__$d }, + __vue_inject_styles__$d, + __vue_script__$d, + __vue_scope_id__$d, + __vue_is_functional_template__$d, + __vue_module_identifier__$d, + browser, + undefined + ); + + function decoration2 (Vue) { + Vue.component(Decoration2.name, Decoration2); + } + + // + var script$e = { + name: 'DvDecoration3', + mixins: [autoResize], + + data() { + const pointSideLength = 7; + return { + ref: 'decoration-3', + svgWH: [300, 35], + svgScale: [1, 1], + rowNum: 2, + rowPoints: 25, + pointSideLength, + halfPointSideLength: pointSideLength / 2, + points: [] + }; + }, + + methods: { + afterAutoResizeMixinInit() { + const { + calcSVGData + } = this; + calcSVGData(); + }, + + calcSVGData() { + const { + calcPointsPosition, + calcScale + } = this; + calcPointsPosition(); + calcScale(); + }, + + calcPointsPosition() { + const { + svgWH, + rowNum, + rowPoints + } = this; + const [w, h] = svgWH; + const horizontalGap = w / (rowPoints + 1); + const verticalGap = h / (rowNum + 1); + let points = new Array(rowNum).fill(0).map((foo, i) => new Array(rowPoints).fill(0).map((foo, j) => [horizontalGap * (j + 1), verticalGap * (i + 1)])); + this.points = points.reduce((all, item) => [...all, ...item], []); + }, + + calcScale() { + const { + width, + height, + svgWH + } = this; + const [w, h] = svgWH; + this.svgScale = [width / w, height / h]; + }, + + onResize() { + const { + calcSVGData + } = this; + calcSVGData(); + } + + } + }; + + /* script */ + const __vue_script__$e = script$e; + + /* template */ + var __vue_render__$e = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c("div", { ref: _vm.ref, staticClass: "dv-decoration-3" }, [ + _c( + "svg", + { + style: + "transform:scale(" + _vm.svgScale[0] + "," + _vm.svgScale[1] + ");", + attrs: { width: _vm.svgWH[0] + "px", height: _vm.svgWH[1] + "px" } + }, + [ + _vm._l(_vm.points, function(point, i) { + return [ + _c( + "rect", + { + key: i, + attrs: { + fill: "#7acaec", + x: point[0] - _vm.halfPointSideLength, + y: point[1] - _vm.halfPointSideLength, + width: _vm.pointSideLength, + height: _vm.pointSideLength + } + }, + [ + Math.random() > 0.6 + ? _c("animate", { + attrs: { + attributeName: "fill", + values: "#7acaec;transparent", + dur: Math.random() + 1 + "s", + begin: Math.random() * 2, + repeatCount: "indefinite" + } + }) + : _vm._e() + ] + ) + ] + }) + ], + 2 + ) + ]) + }; + var __vue_staticRenderFns__$e = []; + __vue_render__$e._withStripped = true; + + /* style */ + const __vue_inject_styles__$e = function (inject) { + if (!inject) return + inject("data-v-557fdf18_0", { source: ".dv-decoration-3 {\n width: 100%;\n height: 100%;\n}\n.dv-decoration-3 svg {\n transform-origin: left top;\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,WAAW;EACX,YAAY;AACd;AACA;EACE,0BAA0B;AAC5B","file":"main.vue","sourcesContent":[".dv-decoration-3 {\n width: 100%;\n height: 100%;\n}\n.dv-decoration-3 svg {\n transform-origin: left top;\n}\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$e = undefined; + /* module identifier */ + const __vue_module_identifier__$e = undefined; + /* functional template */ + const __vue_is_functional_template__$e = false; + /* style inject SSR */ + + + + var Decoration3 = normalizeComponent_1( + { render: __vue_render__$e, staticRenderFns: __vue_staticRenderFns__$e }, + __vue_inject_styles__$e, + __vue_script__$e, + __vue_scope_id__$e, + __vue_is_functional_template__$e, + __vue_module_identifier__$e, + browser, + undefined + ); + + function decoration3 (Vue) { + Vue.component(Decoration3.name, Decoration3); + } + + // + var script$f = { + name: 'DvDecoration4', + mixins: [autoResize], + props: ['reverse'], + + data() { + return { + ref: 'decoration-4' + }; + } + + }; + + /* script */ + const __vue_script__$f = script$f; + + /* template */ + var __vue_render__$f = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c("div", { ref: _vm.ref, staticClass: "dv-decoration-4" }, [ + _c( + "div", + { + class: "container " + (_vm.reverse ? "reverse" : "normal"), + style: _vm.reverse + ? "width:" + _vm.width + "px;height:5px" + : "width:5px;height:" + _vm.height + "px;" + }, + [ + _c( + "svg", + { + attrs: { + width: _vm.reverse ? _vm.width : 5, + height: _vm.reverse ? 5 : _vm.height + } + }, + [ + _c("polyline", { + attrs: { + stroke: "rgba(255, 255, 255, 0.3)", + points: _vm.reverse + ? "0, 2.5 " + _vm.width + ", 2.5" + : "2.5, 0 2.5, " + _vm.height + } + }), + _vm._v(" "), + _c("polyline", { + staticClass: "bold-line", + attrs: { + stroke: "rgba(255, 255, 255, 0.3)", + "stroke-width": "3", + "stroke-dasharray": "20, 80", + "stroke-dashoffset": "-30", + points: _vm.reverse + ? "0, 2.5 " + _vm.width + ", 2.5" + : "2.5, 0 2.5, " + _vm.height + } + }) + ] + ) + ] + ) + ]) + }; + var __vue_staticRenderFns__$f = []; + __vue_render__$f._withStripped = true; + + /* style */ + const __vue_inject_styles__$f = function (inject) { + if (!inject) return + inject("data-v-15cdd0b4_0", { source: ".dv-decoration-4 {\n position: relative;\n width: 100%;\n height: 100%;\n}\n.dv-decoration-4 .container {\n display: flex;\n overflow: hidden;\n position: absolute;\n}\n.dv-decoration-4 .normal {\n height: 0% !important;\n animation: ani-height 3s ease-in-out infinite;\n left: 50%;\n margin-left: -2px;\n}\n.dv-decoration-4 .reverse {\n width: 0% !important;\n animation: ani-width 3s ease-in-out infinite;\n top: 50%;\n margin-top: -2px;\n}\n@keyframes ani-height {\n70% {\n height: 100%;\n}\n100% {\n height: 100%;\n}\n}\n@keyframes ani-width {\n70% {\n width: 100%;\n}\n100% {\n width: 100%;\n}\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;AACd;AACA;EACE,aAAa;EACb,gBAAgB;EAChB,kBAAkB;AACpB;AACA;EACE,qBAAqB;EACrB,6CAA6C;EAC7C,SAAS;EACT,iBAAiB;AACnB;AACA;EACE,oBAAoB;EACpB,4CAA4C;EAC5C,QAAQ;EACR,gBAAgB;AAClB;AACA;AACE;IACE,YAAY;AACd;AACA;IACE,YAAY;AACd;AACF;AACA;AACE;IACE,WAAW;AACb;AACA;IACE,WAAW;AACb;AACF","file":"main.vue","sourcesContent":[".dv-decoration-4 {\n position: relative;\n width: 100%;\n height: 100%;\n}\n.dv-decoration-4 .container {\n display: flex;\n overflow: hidden;\n position: absolute;\n}\n.dv-decoration-4 .normal {\n height: 0% !important;\n animation: ani-height 3s ease-in-out infinite;\n left: 50%;\n margin-left: -2px;\n}\n.dv-decoration-4 .reverse {\n width: 0% !important;\n animation: ani-width 3s ease-in-out infinite;\n top: 50%;\n margin-top: -2px;\n}\n@keyframes ani-height {\n 70% {\n height: 100%;\n }\n 100% {\n height: 100%;\n }\n}\n@keyframes ani-width {\n 70% {\n width: 100%;\n }\n 100% {\n width: 100%;\n }\n}\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$f = undefined; + /* module identifier */ + const __vue_module_identifier__$f = undefined; + /* functional template */ + const __vue_is_functional_template__$f = false; + /* style inject SSR */ + + + + var Decoration4 = normalizeComponent_1( + { render: __vue_render__$f, staticRenderFns: __vue_staticRenderFns__$f }, + __vue_inject_styles__$f, + __vue_script__$f, + __vue_scope_id__$f, + __vue_is_functional_template__$f, + __vue_module_identifier__$f, + browser, + undefined + ); + + function decoration4 (Vue) { + Vue.component(Decoration4.name, Decoration4); + } + + function unwrapExports (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; + } + + function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; + } + + var _global = createCommonjsModule(function (module) { + // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 + var global = module.exports = typeof window != 'undefined' && window.Math == Math + ? window : typeof self != 'undefined' && self.Math == Math ? self + // eslint-disable-next-line no-new-func + : Function('return this')(); + if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef + }); + + var _core = createCommonjsModule(function (module) { + var core = module.exports = { version: '2.6.9' }; + if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef + }); + var _core_1 = _core.version; + + var _isObject = function (it) { + return typeof it === 'object' ? it !== null : typeof it === 'function'; + }; + + var _anObject = function (it) { + if (!_isObject(it)) throw TypeError(it + ' is not an object!'); + return it; + }; + + var _fails = function (exec) { + try { + return !!exec(); + } catch (e) { + return true; + } + }; + + // Thank's IE8 for his funny defineProperty + var _descriptors = !_fails(function () { + return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; + }); + + var document$1 = _global.document; + // typeof document.createElement is 'object' in old IE + var is = _isObject(document$1) && _isObject(document$1.createElement); + var _domCreate = function (it) { + return is ? document$1.createElement(it) : {}; + }; + + var _ie8DomDefine = !_descriptors && !_fails(function () { + return Object.defineProperty(_domCreate('div'), 'a', { get: function () { return 7; } }).a != 7; + }); + + // 7.1.1 ToPrimitive(input [, PreferredType]) + + // instead of the ES6 spec version, we didn't implement @@toPrimitive case + // and the second argument - flag - preferred type is a string + var _toPrimitive = function (it, S) { + if (!_isObject(it)) return it; + var fn, val; + if (S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) return val; + if (typeof (fn = it.valueOf) == 'function' && !_isObject(val = fn.call(it))) return val; + if (!S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) return val; + throw TypeError("Can't convert object to primitive value"); + }; + + var dP = Object.defineProperty; + + var f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) { + _anObject(O); + P = _toPrimitive(P, true); + _anObject(Attributes); + if (_ie8DomDefine) try { + return dP(O, P, Attributes); + } catch (e) { /* empty */ } + if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); + if ('value' in Attributes) O[P] = Attributes.value; + return O; + }; + + var _objectDp = { + f: f + }; + + var _propertyDesc = function (bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; + }; + + var _hide = _descriptors ? function (object, key, value) { + return _objectDp.f(object, key, _propertyDesc(1, value)); + } : function (object, key, value) { + object[key] = value; + return object; + }; + + var hasOwnProperty = {}.hasOwnProperty; + var _has = function (it, key) { + return hasOwnProperty.call(it, key); + }; + + var id = 0; + var px = Math.random(); + var _uid = function (key) { + return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); + }; + + var _library = false; + + var _shared = createCommonjsModule(function (module) { + var SHARED = '__core-js_shared__'; + var store = _global[SHARED] || (_global[SHARED] = {}); + + (module.exports = function (key, value) { + return store[key] || (store[key] = value !== undefined ? value : {}); + })('versions', []).push({ + version: _core.version, + mode: 'global', + copyright: '© 2019 Denis Pushkarev (zloirock.ru)' + }); + }); + + var _functionToString = _shared('native-function-to-string', Function.toString); + + var _redefine = createCommonjsModule(function (module) { + var SRC = _uid('src'); + + var TO_STRING = 'toString'; + var TPL = ('' + _functionToString).split(TO_STRING); + + _core.inspectSource = function (it) { + return _functionToString.call(it); + }; + + (module.exports = function (O, key, val, safe) { + var isFunction = typeof val == 'function'; + if (isFunction) _has(val, 'name') || _hide(val, 'name', key); + if (O[key] === val) return; + if (isFunction) _has(val, SRC) || _hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); + if (O === _global) { + O[key] = val; + } else if (!safe) { + delete O[key]; + _hide(O, key, val); + } else if (O[key]) { + O[key] = val; + } else { + _hide(O, key, val); + } + // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative + })(Function.prototype, TO_STRING, function toString() { + return typeof this == 'function' && this[SRC] || _functionToString.call(this); + }); + }); + + var _aFunction = function (it) { + if (typeof it != 'function') throw TypeError(it + ' is not a function!'); + return it; + }; + + // optional / simple context binding + + var _ctx = function (fn, that, length) { + _aFunction(fn); + if (that === undefined) return fn; + switch (length) { + case 1: return function (a) { + return fn.call(that, a); + }; + case 2: return function (a, b) { + return fn.call(that, a, b); + }; + case 3: return function (a, b, c) { + return fn.call(that, a, b, c); + }; + } + return function (/* ...args */) { + return fn.apply(that, arguments); + }; + }; + + var PROTOTYPE = 'prototype'; + + var $export = function (type, name, source) { + var IS_FORCED = type & $export.F; + var IS_GLOBAL = type & $export.G; + var IS_STATIC = type & $export.S; + var IS_PROTO = type & $export.P; + var IS_BIND = type & $export.B; + var target = IS_GLOBAL ? _global : IS_STATIC ? _global[name] || (_global[name] = {}) : (_global[name] || {})[PROTOTYPE]; + var exports = IS_GLOBAL ? _core : _core[name] || (_core[name] = {}); + var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {}); + var key, own, out, exp; + if (IS_GLOBAL) source = name; + for (key in source) { + // contains in native + own = !IS_FORCED && target && target[key] !== undefined; + // export native or passed + out = (own ? target : source)[key]; + // bind timers to global for call from export context + exp = IS_BIND && own ? _ctx(out, _global) : IS_PROTO && typeof out == 'function' ? _ctx(Function.call, out) : out; + // extend global + if (target) _redefine(target, key, out, type & $export.U); + // export + if (exports[key] != out) _hide(exports, key, exp); + if (IS_PROTO && expProto[key] != out) expProto[key] = out; + } + }; + _global.core = _core; + // type bitmap + $export.F = 1; // forced + $export.G = 2; // global + $export.S = 4; // static + $export.P = 8; // proto + $export.B = 16; // bind + $export.W = 32; // wrap + $export.U = 64; // safe + $export.R = 128; // real proto method for `library` + var _export = $export; + + // 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) + _export(_export.S + _export.F * !_descriptors, 'Object', { defineProperty: _objectDp.f }); + + // 7.1.4 ToInteger + var ceil = Math.ceil; + var floor = Math.floor; + var _toInteger = function (it) { + return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); + }; + + // 7.2.1 RequireObjectCoercible(argument) + var _defined = function (it) { + if (it == undefined) throw TypeError("Can't call method on " + it); + return it; + }; + + // true -> String#at + // false -> String#codePointAt + var _stringAt = function (TO_STRING) { + return function (that, pos) { + var s = String(_defined(that)); + var i = _toInteger(pos); + var l = s.length; + var a, b; + if (i < 0 || i >= l) return TO_STRING ? '' : undefined; + a = s.charCodeAt(i); + return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff + ? TO_STRING ? s.charAt(i) : a + : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; + }; + }; + + var _iterators = {}; + + var toString = {}.toString; + + var _cof = function (it) { + return toString.call(it).slice(8, -1); + }; + + // fallback for non-array-like ES3 and non-enumerable old V8 strings + + // eslint-disable-next-line no-prototype-builtins + var _iobject = Object('z').propertyIsEnumerable(0) ? Object : function (it) { + return _cof(it) == 'String' ? it.split('') : Object(it); + }; + + // to indexed object, toObject with fallback for non-array-like ES3 strings + + + var _toIobject = function (it) { + return _iobject(_defined(it)); + }; + + // 7.1.15 ToLength + + var min = Math.min; + var _toLength = function (it) { + return it > 0 ? min(_toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 + }; + + var max = Math.max; + var min$1 = Math.min; + var _toAbsoluteIndex = function (index, length) { + index = _toInteger(index); + return index < 0 ? max(index + length, 0) : min$1(index, length); + }; + + // false -> Array#indexOf + // true -> Array#includes + + + + var _arrayIncludes = function (IS_INCLUDES) { + return function ($this, el, fromIndex) { + var O = _toIobject($this); + var length = _toLength(O.length); + var index = _toAbsoluteIndex(fromIndex, length); + var value; + // Array#includes uses SameValueZero equality algorithm + // eslint-disable-next-line no-self-compare + if (IS_INCLUDES && el != el) while (length > index) { + value = O[index++]; + // eslint-disable-next-line no-self-compare + if (value != value) return true; + // Array#indexOf ignores holes, Array#includes - not + } else for (;length > index; index++) if (IS_INCLUDES || index in O) { + if (O[index] === el) return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; + }; + + var shared = _shared('keys'); + + var _sharedKey = function (key) { + return shared[key] || (shared[key] = _uid(key)); + }; + + var arrayIndexOf = _arrayIncludes(false); + var IE_PROTO = _sharedKey('IE_PROTO'); + + var _objectKeysInternal = function (object, names) { + var O = _toIobject(object); + var i = 0; + var result = []; + var key; + for (key in O) if (key != IE_PROTO) _has(O, key) && result.push(key); + // Don't enum bug & hidden keys + while (names.length > i) if (_has(O, key = names[i++])) { + ~arrayIndexOf(result, key) || result.push(key); + } + return result; + }; + + // IE 8- don't enum bug keys + var _enumBugKeys = ( + 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' + ).split(','); + + // 19.1.2.14 / 15.2.3.14 Object.keys(O) + + + + var _objectKeys = Object.keys || function keys(O) { + return _objectKeysInternal(O, _enumBugKeys); + }; + + var _objectDps = _descriptors ? Object.defineProperties : function defineProperties(O, Properties) { + _anObject(O); + var keys = _objectKeys(Properties); + var length = keys.length; + var i = 0; + var P; + while (length > i) _objectDp.f(O, P = keys[i++], Properties[P]); + return O; + }; + + var document$2 = _global.document; + var _html = document$2 && document$2.documentElement; + + // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) + + + + var IE_PROTO$1 = _sharedKey('IE_PROTO'); + var Empty = function () { /* empty */ }; + var PROTOTYPE$1 = 'prototype'; + + // Create object with fake `null` prototype: use iframe Object with cleared prototype + var createDict = function () { + // Thrash, waste and sodomy: IE GC bug + var iframe = _domCreate('iframe'); + var i = _enumBugKeys.length; + var lt = '<'; + var gt = '>'; + var iframeDocument; + iframe.style.display = 'none'; + _html.appendChild(iframe); + iframe.src = 'javascript:'; // eslint-disable-line no-script-url + // createDict = iframe.contentWindow.Object; + // html.removeChild(iframe); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); + iframeDocument.close(); + createDict = iframeDocument.F; + while (i--) delete createDict[PROTOTYPE$1][_enumBugKeys[i]]; + return createDict(); + }; + + var _objectCreate = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + Empty[PROTOTYPE$1] = _anObject(O); + result = new Empty(); + Empty[PROTOTYPE$1] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO$1] = O; + } else result = createDict(); + return Properties === undefined ? result : _objectDps(result, Properties); + }; + + var _wks = createCommonjsModule(function (module) { + var store = _shared('wks'); + + var Symbol = _global.Symbol; + var USE_SYMBOL = typeof Symbol == 'function'; + + var $exports = module.exports = function (name) { + return store[name] || (store[name] = + USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : _uid)('Symbol.' + name)); + }; + + $exports.store = store; + }); + + var def = _objectDp.f; + + var TAG = _wks('toStringTag'); + + var _setToStringTag = function (it, tag, stat) { + if (it && !_has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); + }; + + var IteratorPrototype = {}; + + // 25.1.2.1.1 %IteratorPrototype%[@@iterator]() + _hide(IteratorPrototype, _wks('iterator'), function () { return this; }); + + var _iterCreate = function (Constructor, NAME, next) { + Constructor.prototype = _objectCreate(IteratorPrototype, { next: _propertyDesc(1, next) }); + _setToStringTag(Constructor, NAME + ' Iterator'); + }; + + // 7.1.13 ToObject(argument) + + var _toObject = function (it) { + return Object(_defined(it)); + }; + + // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) + + + var IE_PROTO$2 = _sharedKey('IE_PROTO'); + var ObjectProto = Object.prototype; + + var _objectGpo = Object.getPrototypeOf || function (O) { + O = _toObject(O); + if (_has(O, IE_PROTO$2)) return O[IE_PROTO$2]; + if (typeof O.constructor == 'function' && O instanceof O.constructor) { + return O.constructor.prototype; + } return O instanceof Object ? ObjectProto : null; + }; + + var ITERATOR = _wks('iterator'); + var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next` + var FF_ITERATOR = '@@iterator'; + var KEYS = 'keys'; + var VALUES = 'values'; + + var returnThis = function () { return this; }; + + var _iterDefine = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { + _iterCreate(Constructor, NAME, next); + var getMethod = function (kind) { + if (!BUGGY && kind in proto) return proto[kind]; + switch (kind) { + case KEYS: return function keys() { return new Constructor(this, kind); }; + case VALUES: return function values() { return new Constructor(this, kind); }; + } return function entries() { return new Constructor(this, kind); }; + }; + var TAG = NAME + ' Iterator'; + var DEF_VALUES = DEFAULT == VALUES; + var VALUES_BUG = false; + var proto = Base.prototype; + var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; + var $default = $native || getMethod(DEFAULT); + var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; + var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; + var methods, key, IteratorPrototype; + // Fix native + if ($anyNative) { + IteratorPrototype = _objectGpo($anyNative.call(new Base())); + if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { + // Set @@toStringTag to native iterators + _setToStringTag(IteratorPrototype, TAG, true); + // fix for some old engines + if ( typeof IteratorPrototype[ITERATOR] != 'function') _hide(IteratorPrototype, ITERATOR, returnThis); + } + } + // fix Array#{values, @@iterator}.name in V8 / FF + if (DEF_VALUES && $native && $native.name !== VALUES) { + VALUES_BUG = true; + $default = function values() { return $native.call(this); }; + } + // Define iterator + if ( (BUGGY || VALUES_BUG || !proto[ITERATOR])) { + _hide(proto, ITERATOR, $default); + } + // Plug for library + _iterators[NAME] = $default; + _iterators[TAG] = returnThis; + if (DEFAULT) { + methods = { + values: DEF_VALUES ? $default : getMethod(VALUES), + keys: IS_SET ? $default : getMethod(KEYS), + entries: $entries + }; + if (FORCED) for (key in methods) { + if (!(key in proto)) _redefine(proto, key, methods[key]); + } else _export(_export.P + _export.F * (BUGGY || VALUES_BUG), NAME, methods); + } + return methods; + }; + + var $at = _stringAt(true); + + // 21.1.3.27 String.prototype[@@iterator]() + _iterDefine(String, 'String', function (iterated) { + this._t = String(iterated); // target + this._i = 0; // next index + // 21.1.5.2.1 %StringIteratorPrototype%.next() + }, function () { + var O = this._t; + var index = this._i; + var point; + if (index >= O.length) return { value: undefined, done: true }; + point = $at(O, index); + this._i += point.length; + return { value: point, done: false }; + }); + + // call something on iterator step with safe closing on error + + var _iterCall = function (iterator, fn, value, entries) { + try { + return entries ? fn(_anObject(value)[0], value[1]) : fn(value); + // 7.4.6 IteratorClose(iterator, completion) + } catch (e) { + var ret = iterator['return']; + if (ret !== undefined) _anObject(ret.call(iterator)); + throw e; + } + }; + + // check on default Array iterator + + var ITERATOR$1 = _wks('iterator'); + var ArrayProto = Array.prototype; + + var _isArrayIter = function (it) { + return it !== undefined && (_iterators.Array === it || ArrayProto[ITERATOR$1] === it); + }; + + var _createProperty = function (object, index, value) { + if (index in object) _objectDp.f(object, index, _propertyDesc(0, value)); + else object[index] = value; + }; + + // getting tag from 19.1.3.6 Object.prototype.toString() + + var TAG$1 = _wks('toStringTag'); + // ES3 wrong here + var ARG = _cof(function () { return arguments; }()) == 'Arguments'; + + // fallback for IE11 Script Access Denied error + var tryGet = function (it, key) { + try { + return it[key]; + } catch (e) { /* empty */ } + }; + + var _classof = function (it) { + var O, T, B; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (T = tryGet(O = Object(it), TAG$1)) == 'string' ? T + // builtinTag case + : ARG ? _cof(O) + // ES3 arguments fallback + : (B = _cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; + }; + + var ITERATOR$2 = _wks('iterator'); + + var core_getIteratorMethod = _core.getIteratorMethod = function (it) { + if (it != undefined) return it[ITERATOR$2] + || it['@@iterator'] + || _iterators[_classof(it)]; + }; + + var ITERATOR$3 = _wks('iterator'); + var SAFE_CLOSING = false; + + try { + var riter = [7][ITERATOR$3](); + riter['return'] = function () { SAFE_CLOSING = true; }; + // eslint-disable-next-line no-throw-literal + Array.from(riter, function () { throw 2; }); + } catch (e) { /* empty */ } + + var _iterDetect = function (exec, skipClosing) { + if (!skipClosing && !SAFE_CLOSING) return false; + var safe = false; + try { + var arr = [7]; + var iter = arr[ITERATOR$3](); + iter.next = function () { return { done: safe = true }; }; + arr[ITERATOR$3] = function () { return iter; }; + exec(arr); + } catch (e) { /* empty */ } + return safe; + }; + + _export(_export.S + _export.F * !_iterDetect(function (iter) { Array.from(iter); }), 'Array', { + // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined) + from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) { + var O = _toObject(arrayLike); + var C = typeof this == 'function' ? this : Array; + var aLen = arguments.length; + var mapfn = aLen > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + var index = 0; + var iterFn = core_getIteratorMethod(O); + var length, result, step, iterator; + if (mapping) mapfn = _ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2); + // if object isn't iterable or it's array with default iterator - use simple case + if (iterFn != undefined && !(C == Array && _isArrayIter(iterFn))) { + for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) { + _createProperty(result, index, mapping ? _iterCall(iterator, mapfn, [step.value, index], true) : step.value); + } + } else { + length = _toLength(O.length); + for (result = new C(length); length > index; index++) { + _createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]); + } + } + result.length = index; + return result; + } + }); + + var f$1 = _wks; + + var _wksExt = { + f: f$1 + }; + + var defineProperty = _objectDp.f; + var _wksDefine = function (name) { + var $Symbol = _core.Symbol || (_core.Symbol = _global.Symbol || {}); + if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: _wksExt.f(name) }); + }; + + _wksDefine('asyncIterator'); + + var _meta = createCommonjsModule(function (module) { + var META = _uid('meta'); + + + var setDesc = _objectDp.f; + var id = 0; + var isExtensible = Object.isExtensible || function () { + return true; + }; + var FREEZE = !_fails(function () { + return isExtensible(Object.preventExtensions({})); + }); + var setMeta = function (it) { + setDesc(it, META, { value: { + i: 'O' + ++id, // object ID + w: {} // weak collections IDs + } }); + }; + var fastKey = function (it, create) { + // return primitive with prefix + if (!_isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; + if (!_has(it, META)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) return 'F'; + // not necessary to add metadata + if (!create) return 'E'; + // add missing metadata + setMeta(it); + // return object ID + } return it[META].i; + }; + var getWeak = function (it, create) { + if (!_has(it, META)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) return true; + // not necessary to add metadata + if (!create) return false; + // add missing metadata + setMeta(it); + // return hash weak collections IDs + } return it[META].w; + }; + // add metadata on freeze-family methods calling + var onFreeze = function (it) { + if (FREEZE && meta.NEED && isExtensible(it) && !_has(it, META)) setMeta(it); + return it; + }; + var meta = module.exports = { + KEY: META, + NEED: false, + fastKey: fastKey, + getWeak: getWeak, + onFreeze: onFreeze + }; + }); + var _meta_1 = _meta.KEY; + var _meta_2 = _meta.NEED; + var _meta_3 = _meta.fastKey; + var _meta_4 = _meta.getWeak; + var _meta_5 = _meta.onFreeze; + + var f$2 = Object.getOwnPropertySymbols; + + var _objectGops = { + f: f$2 + }; + + var f$3 = {}.propertyIsEnumerable; + + var _objectPie = { + f: f$3 + }; + + // all enumerable object keys, includes symbols + + + + var _enumKeys = function (it) { + var result = _objectKeys(it); + var getSymbols = _objectGops.f; + if (getSymbols) { + var symbols = getSymbols(it); + var isEnum = _objectPie.f; + var i = 0; + var key; + while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key); + } return result; + }; + + // 7.2.2 IsArray(argument) + + var _isArray = Array.isArray || function isArray(arg) { + return _cof(arg) == 'Array'; + }; + + // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) + + var hiddenKeys = _enumBugKeys.concat('length', 'prototype'); + + var f$4 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return _objectKeysInternal(O, hiddenKeys); + }; + + var _objectGopn = { + f: f$4 + }; + + // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window + + var gOPN = _objectGopn.f; + var toString$1 = {}.toString; + + var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames + ? Object.getOwnPropertyNames(window) : []; + + var getWindowNames = function (it) { + try { + return gOPN(it); + } catch (e) { + return windowNames.slice(); + } + }; + + var f$5 = function getOwnPropertyNames(it) { + return windowNames && toString$1.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(_toIobject(it)); + }; + + var _objectGopnExt = { + f: f$5 + }; + + var gOPD = Object.getOwnPropertyDescriptor; + + var f$6 = _descriptors ? gOPD : function getOwnPropertyDescriptor(O, P) { + O = _toIobject(O); + P = _toPrimitive(P, true); + if (_ie8DomDefine) try { + return gOPD(O, P); + } catch (e) { /* empty */ } + if (_has(O, P)) return _propertyDesc(!_objectPie.f.call(O, P), O[P]); + }; + + var _objectGopd = { + f: f$6 + }; + + // ECMAScript 6 symbols shim + + + + + + var META = _meta.KEY; + + + + + + + + + + + + + + + + + + + + + + var gOPD$1 = _objectGopd.f; + var dP$1 = _objectDp.f; + var gOPN$1 = _objectGopnExt.f; + var $Symbol = _global.Symbol; + var $JSON = _global.JSON; + var _stringify = $JSON && $JSON.stringify; + var PROTOTYPE$2 = 'prototype'; + var HIDDEN = _wks('_hidden'); + var TO_PRIMITIVE = _wks('toPrimitive'); + var isEnum = {}.propertyIsEnumerable; + var SymbolRegistry = _shared('symbol-registry'); + var AllSymbols = _shared('symbols'); + var OPSymbols = _shared('op-symbols'); + var ObjectProto$1 = Object[PROTOTYPE$2]; + var USE_NATIVE = typeof $Symbol == 'function' && !!_objectGops.f; + var QObject = _global.QObject; + // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 + var setter = !QObject || !QObject[PROTOTYPE$2] || !QObject[PROTOTYPE$2].findChild; + + // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 + var setSymbolDesc = _descriptors && _fails(function () { + return _objectCreate(dP$1({}, 'a', { + get: function () { return dP$1(this, 'a', { value: 7 }).a; } + })).a != 7; + }) ? function (it, key, D) { + var protoDesc = gOPD$1(ObjectProto$1, key); + if (protoDesc) delete ObjectProto$1[key]; + dP$1(it, key, D); + if (protoDesc && it !== ObjectProto$1) dP$1(ObjectProto$1, key, protoDesc); + } : dP$1; + + var wrap = function (tag) { + var sym = AllSymbols[tag] = _objectCreate($Symbol[PROTOTYPE$2]); + sym._k = tag; + return sym; + }; + + var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) { + return typeof it == 'symbol'; + } : function (it) { + return it instanceof $Symbol; + }; + + var $defineProperty = function defineProperty(it, key, D) { + if (it === ObjectProto$1) $defineProperty(OPSymbols, key, D); + _anObject(it); + key = _toPrimitive(key, true); + _anObject(D); + if (_has(AllSymbols, key)) { + if (!D.enumerable) { + if (!_has(it, HIDDEN)) dP$1(it, HIDDEN, _propertyDesc(1, {})); + it[HIDDEN][key] = true; + } else { + if (_has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false; + D = _objectCreate(D, { enumerable: _propertyDesc(0, false) }); + } return setSymbolDesc(it, key, D); + } return dP$1(it, key, D); + }; + var $defineProperties = function defineProperties(it, P) { + _anObject(it); + var keys = _enumKeys(P = _toIobject(P)); + var i = 0; + var l = keys.length; + var key; + while (l > i) $defineProperty(it, key = keys[i++], P[key]); + return it; + }; + var $create = function create(it, P) { + return P === undefined ? _objectCreate(it) : $defineProperties(_objectCreate(it), P); + }; + var $propertyIsEnumerable = function propertyIsEnumerable(key) { + var E = isEnum.call(this, key = _toPrimitive(key, true)); + if (this === ObjectProto$1 && _has(AllSymbols, key) && !_has(OPSymbols, key)) return false; + return E || !_has(this, key) || !_has(AllSymbols, key) || _has(this, HIDDEN) && this[HIDDEN][key] ? E : true; + }; + var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) { + it = _toIobject(it); + key = _toPrimitive(key, true); + if (it === ObjectProto$1 && _has(AllSymbols, key) && !_has(OPSymbols, key)) return; + var D = gOPD$1(it, key); + if (D && _has(AllSymbols, key) && !(_has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true; + return D; + }; + var $getOwnPropertyNames = function getOwnPropertyNames(it) { + var names = gOPN$1(_toIobject(it)); + var result = []; + var i = 0; + var key; + while (names.length > i) { + if (!_has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key); + } return result; + }; + var $getOwnPropertySymbols = function getOwnPropertySymbols(it) { + var IS_OP = it === ObjectProto$1; + var names = gOPN$1(IS_OP ? OPSymbols : _toIobject(it)); + var result = []; + var i = 0; + var key; + while (names.length > i) { + if (_has(AllSymbols, key = names[i++]) && (IS_OP ? _has(ObjectProto$1, key) : true)) result.push(AllSymbols[key]); + } return result; + }; + + // 19.4.1.1 Symbol([description]) + if (!USE_NATIVE) { + $Symbol = function Symbol() { + if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!'); + var tag = _uid(arguments.length > 0 ? arguments[0] : undefined); + var $set = function (value) { + if (this === ObjectProto$1) $set.call(OPSymbols, value); + if (_has(this, HIDDEN) && _has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; + setSymbolDesc(this, tag, _propertyDesc(1, value)); + }; + if (_descriptors && setter) setSymbolDesc(ObjectProto$1, tag, { configurable: true, set: $set }); + return wrap(tag); + }; + _redefine($Symbol[PROTOTYPE$2], 'toString', function toString() { + return this._k; + }); + + _objectGopd.f = $getOwnPropertyDescriptor; + _objectDp.f = $defineProperty; + _objectGopn.f = _objectGopnExt.f = $getOwnPropertyNames; + _objectPie.f = $propertyIsEnumerable; + _objectGops.f = $getOwnPropertySymbols; + + if (_descriptors && !_library) { + _redefine(ObjectProto$1, 'propertyIsEnumerable', $propertyIsEnumerable, true); + } + + _wksExt.f = function (name) { + return wrap(_wks(name)); + }; + } + + _export(_export.G + _export.W + _export.F * !USE_NATIVE, { Symbol: $Symbol }); + + for (var es6Symbols = ( + // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14 + 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables' + ).split(','), j = 0; es6Symbols.length > j;)_wks(es6Symbols[j++]); + + for (var wellKnownSymbols = _objectKeys(_wks.store), k = 0; wellKnownSymbols.length > k;) _wksDefine(wellKnownSymbols[k++]); + + _export(_export.S + _export.F * !USE_NATIVE, 'Symbol', { + // 19.4.2.1 Symbol.for(key) + 'for': function (key) { + return _has(SymbolRegistry, key += '') + ? SymbolRegistry[key] + : SymbolRegistry[key] = $Symbol(key); + }, + // 19.4.2.5 Symbol.keyFor(sym) + keyFor: function keyFor(sym) { + if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!'); + for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key; + }, + useSetter: function () { setter = true; }, + useSimple: function () { setter = false; } + }); + + _export(_export.S + _export.F * !USE_NATIVE, 'Object', { + // 19.1.2.2 Object.create(O [, Properties]) + create: $create, + // 19.1.2.4 Object.defineProperty(O, P, Attributes) + defineProperty: $defineProperty, + // 19.1.2.3 Object.defineProperties(O, Properties) + defineProperties: $defineProperties, + // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) + getOwnPropertyDescriptor: $getOwnPropertyDescriptor, + // 19.1.2.7 Object.getOwnPropertyNames(O) + getOwnPropertyNames: $getOwnPropertyNames, + // 19.1.2.8 Object.getOwnPropertySymbols(O) + getOwnPropertySymbols: $getOwnPropertySymbols + }); + + // Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives + // https://bugs.chromium.org/p/v8/issues/detail?id=3443 + var FAILS_ON_PRIMITIVES = _fails(function () { _objectGops.f(1); }); + + _export(_export.S + _export.F * FAILS_ON_PRIMITIVES, 'Object', { + getOwnPropertySymbols: function getOwnPropertySymbols(it) { + return _objectGops.f(_toObject(it)); + } + }); + + // 24.3.2 JSON.stringify(value [, replacer [, space]]) + $JSON && _export(_export.S + _export.F * (!USE_NATIVE || _fails(function () { + var S = $Symbol(); + // MS Edge converts symbol values to JSON as {} + // WebKit converts symbol values to JSON as null + // V8 throws on boxed symbols + return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}'; + })), 'JSON', { + stringify: function stringify(it) { + var args = [it]; + var i = 1; + var replacer, $replacer; + while (arguments.length > i) args.push(arguments[i++]); + $replacer = replacer = args[1]; + if (!_isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined + if (!_isArray(replacer)) replacer = function (key, value) { + if (typeof $replacer == 'function') value = $replacer.call(this, key, value); + if (!isSymbol(value)) return value; + }; + args[1] = replacer; + return _stringify.apply($JSON, args); + } + }); + + // 19.4.3.4 Symbol.prototype[@@toPrimitive](hint) + $Symbol[PROTOTYPE$2][TO_PRIMITIVE] || _hide($Symbol[PROTOTYPE$2], TO_PRIMITIVE, $Symbol[PROTOTYPE$2].valueOf); + // 19.4.3.5 Symbol.prototype[@@toStringTag] + _setToStringTag($Symbol, 'Symbol'); + // 20.2.1.9 Math[@@toStringTag] + _setToStringTag(Math, 'Math', true); + // 24.3.3 JSON[@@toStringTag] + _setToStringTag(_global.JSON, 'JSON', true); + + // 22.1.3.31 Array.prototype[@@unscopables] + var UNSCOPABLES = _wks('unscopables'); + var ArrayProto$1 = Array.prototype; + if (ArrayProto$1[UNSCOPABLES] == undefined) _hide(ArrayProto$1, UNSCOPABLES, {}); + var _addToUnscopables = function (key) { + ArrayProto$1[UNSCOPABLES][key] = true; + }; + + var _iterStep = function (done, value) { + return { value: value, done: !!done }; + }; + + // 22.1.3.4 Array.prototype.entries() + // 22.1.3.13 Array.prototype.keys() + // 22.1.3.29 Array.prototype.values() + // 22.1.3.30 Array.prototype[@@iterator]() + var es6_array_iterator = _iterDefine(Array, 'Array', function (iterated, kind) { + this._t = _toIobject(iterated); // target + this._i = 0; // next index + this._k = kind; // kind + // 22.1.5.2.1 %ArrayIteratorPrototype%.next() + }, function () { + var O = this._t; + var kind = this._k; + var index = this._i++; + if (!O || index >= O.length) { + this._t = undefined; + return _iterStep(1); + } + if (kind == 'keys') return _iterStep(0, index); + if (kind == 'values') return _iterStep(0, O[index]); + return _iterStep(0, [index, O[index]]); + }, 'values'); + + // argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) + _iterators.Arguments = _iterators.Array; + + _addToUnscopables('keys'); + _addToUnscopables('values'); + _addToUnscopables('entries'); + + var ITERATOR$4 = _wks('iterator'); + var TO_STRING_TAG = _wks('toStringTag'); + var ArrayValues = _iterators.Array; + + var DOMIterables = { + CSSRuleList: true, // TODO: Not spec compliant, should be false. + CSSStyleDeclaration: false, + CSSValueList: false, + ClientRectList: false, + DOMRectList: false, + DOMStringList: false, + DOMTokenList: true, + DataTransferItemList: false, + FileList: false, + HTMLAllCollection: false, + HTMLCollection: false, + HTMLFormElement: false, + HTMLSelectElement: false, + MediaList: true, // TODO: Not spec compliant, should be false. + MimeTypeArray: false, + NamedNodeMap: false, + NodeList: true, + PaintRequestList: false, + Plugin: false, + PluginArray: false, + SVGLengthList: false, + SVGNumberList: false, + SVGPathSegList: false, + SVGPointList: false, + SVGStringList: false, + SVGTransformList: false, + SourceBufferList: false, + StyleSheetList: true, // TODO: Not spec compliant, should be false. + TextTrackCueList: false, + TextTrackList: false, + TouchList: false + }; + + for (var collections = _objectKeys(DOMIterables), i = 0; i < collections.length; i++) { + var NAME = collections[i]; + var explicit = DOMIterables[NAME]; + var Collection = _global[NAME]; + var proto = Collection && Collection.prototype; + var key; + if (proto) { + if (!proto[ITERATOR$4]) _hide(proto, ITERATOR$4, ArrayValues); + if (!proto[TO_STRING_TAG]) _hide(proto, TO_STRING_TAG, NAME); + _iterators[NAME] = ArrayValues; + if (explicit) for (key in es6_array_iterator) if (!proto[key]) _redefine(proto, key, es6_array_iterator[key], true); + } + } + + // 22.1.2.2 / 15.4.3.2 Array.isArray(arg) + + + _export(_export.S, 'Array', { isArray: _isArray }); + + var SPECIES = _wks('species'); + + var _arraySpeciesConstructor = function (original) { + var C; + if (_isArray(original)) { + C = original.constructor; + // cross-realm fallback + if (typeof C == 'function' && (C === Array || _isArray(C.prototype))) C = undefined; + if (_isObject(C)) { + C = C[SPECIES]; + if (C === null) C = undefined; + } + } return C === undefined ? Array : C; + }; + + // 9.4.2.3 ArraySpeciesCreate(originalArray, length) + + + var _arraySpeciesCreate = function (original, length) { + return new (_arraySpeciesConstructor(original))(length); + }; + + // 0 -> Array#forEach + // 1 -> Array#map + // 2 -> Array#filter + // 3 -> Array#some + // 4 -> Array#every + // 5 -> Array#find + // 6 -> Array#findIndex + + + + + + var _arrayMethods = function (TYPE, $create) { + var IS_MAP = TYPE == 1; + var IS_FILTER = TYPE == 2; + var IS_SOME = TYPE == 3; + var IS_EVERY = TYPE == 4; + var IS_FIND_INDEX = TYPE == 6; + var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; + var create = $create || _arraySpeciesCreate; + return function ($this, callbackfn, that) { + var O = _toObject($this); + var self = _iobject(O); + var f = _ctx(callbackfn, that, 3); + var length = _toLength(self.length); + var index = 0; + var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; + var val, res; + for (;length > index; index++) if (NO_HOLES || index in self) { + val = self[index]; + res = f(val, index, O); + if (TYPE) { + if (IS_MAP) result[index] = res; // map + else if (res) switch (TYPE) { + case 3: return true; // some + case 5: return val; // find + case 6: return index; // findIndex + case 2: result.push(val); // filter + } else if (IS_EVERY) return false; // every + } + } + return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result; + }; + }; + + var _strictMethod = function (method, arg) { + return !!method && _fails(function () { + // eslint-disable-next-line no-useless-call + arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null); + }); + }; + + var $forEach = _arrayMethods(0); + var STRICT = _strictMethod([].forEach, true); + + _export(_export.P + _export.F * !STRICT, 'Array', { + // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg]) + forEach: function forEach(callbackfn /* , thisArg */) { + return $forEach(this, callbackfn, arguments[1]); + } + }); + + var _arrayFill = function fill(value /* , start = 0, end = @length */) { + var O = _toObject(this); + var length = _toLength(O.length); + var aLen = arguments.length; + var index = _toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length); + var end = aLen > 2 ? arguments[2] : undefined; + var endPos = end === undefined ? length : _toAbsoluteIndex(end, length); + while (endPos > index) O[index++] = value; + return O; + }; + + // 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length) + + + _export(_export.P, 'Array', { fill: _arrayFill }); + + _addToUnscopables('fill'); + + var $map = _arrayMethods(1); + + _export(_export.P + _export.F * !_strictMethod([].map, true), 'Array', { + // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg]) + map: function map(callbackfn /* , thisArg */) { + return $map(this, callbackfn, arguments[1]); + } + }); + + // 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined) + + var $find = _arrayMethods(6); + var KEY = 'findIndex'; + var forced = true; + // Shouldn't skip holes + if (KEY in []) Array(1)[KEY](function () { forced = false; }); + _export(_export.P + _export.F * forced, 'Array', { + findIndex: function findIndex(callbackfn /* , that = undefined */) { + return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } + }); + _addToUnscopables(KEY); + + var _arrayReduce = function (that, callbackfn, aLen, memo, isRight) { + _aFunction(callbackfn); + var O = _toObject(that); + var self = _iobject(O); + var length = _toLength(O.length); + var index = isRight ? length - 1 : 0; + var i = isRight ? -1 : 1; + if (aLen < 2) for (;;) { + if (index in self) { + memo = self[index]; + index += i; + break; + } + index += i; + if (isRight ? index < 0 : length <= index) { + throw TypeError('Reduce of empty array with no initial value'); + } + } + for (;isRight ? index >= 0 : length > index; index += i) if (index in self) { + memo = callbackfn(memo, self[index], index, O); + } + return memo; + }; + + _export(_export.P + _export.F * !_strictMethod([].reduce, true), 'Array', { + // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue]) + reduce: function reduce(callbackfn /* , initialValue */) { + return _arrayReduce(this, callbackfn, arguments.length, arguments[1], false); + } + }); + + // 21.2.5.3 get RegExp.prototype.flags + + var _flags = function () { + var that = _anObject(this); + var result = ''; + if (that.global) result += 'g'; + if (that.ignoreCase) result += 'i'; + if (that.multiline) result += 'm'; + if (that.unicode) result += 'u'; + if (that.sticky) result += 'y'; + return result; + }; + + // 21.2.5.3 get RegExp.prototype.flags() + if (_descriptors && /./g.flags != 'g') _objectDp.f(RegExp.prototype, 'flags', { + configurable: true, + get: _flags + }); + + var TO_STRING = 'toString'; + var $toString = /./[TO_STRING]; + + var define = function (fn) { + _redefine(RegExp.prototype, TO_STRING, fn, true); + }; + + // 21.2.5.14 RegExp.prototype.toString() + if (_fails(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) { + define(function toString() { + var R = _anObject(this); + return '/'.concat(R.source, '/', + 'flags' in R ? R.flags : !_descriptors && R instanceof RegExp ? _flags.call(R) : undefined); + }); + // FF44- RegExp#toString has a wrong name + } else if ($toString.name != TO_STRING) { + define(function toString() { + return $toString.call(this); + }); + } + + var DateProto = Date.prototype; + var INVALID_DATE = 'Invalid Date'; + var TO_STRING$1 = 'toString'; + var $toString$1 = DateProto[TO_STRING$1]; + var getTime = DateProto.getTime; + if (new Date(NaN) + '' != INVALID_DATE) { + _redefine(DateProto, TO_STRING$1, function toString() { + var value = getTime.call(this); + // eslint-disable-next-line no-self-compare + return value === value ? $toString$1.call(this) : INVALID_DATE; + }); + } + + // 19.1.3.6 Object.prototype.toString() + + var test = {}; + test[_wks('toStringTag')] = 'z'; + if (test + '' != '[object z]') { + _redefine(Object.prototype, 'toString', function toString() { + return '[object ' + _classof(this) + ']'; + }, true); + } + + var $filter = _arrayMethods(2); + + _export(_export.P + _export.F * !_strictMethod([].filter, true), 'Array', { + // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg]) + filter: function filter(callbackfn /* , thisArg */) { + return $filter(this, callbackfn, arguments[1]); + } + }); + + var util = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.deepClone = deepClone; + exports.eliminateBlur = eliminateBlur; + exports.checkPointIsInCircle = checkPointIsInCircle; + exports.getTwoPointDistance = getTwoPointDistance; + exports.checkPointIsInPolygon = checkPointIsInPolygon; + exports.checkPointIsInSector = checkPointIsInSector; + exports.checkPointIsNearPolyline = checkPointIsNearPolyline; + exports.checkPointIsInRect = checkPointIsInRect; + exports.getRotatePointPos = getRotatePointPos; + exports.getScalePointPos = getScalePointPos; + exports.getTranslatePointPos = getTranslatePointPos; + exports.getDistanceBetweenPointAndLine = getDistanceBetweenPointAndLine; + exports.getCircleRadianPoint = getCircleRadianPoint; + exports.getRegularPolygonPoints = getRegularPolygonPoints; + exports.filterNull = filterNull; + exports["default"] = void 0; + + + + + + + + + + + + + + + + + + + + + + + + + + function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } + + function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } + + function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } + + function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } + + function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } + + function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + + function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + + function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + + function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + + var abs = Math.abs, + sqrt = Math.sqrt, + sin = Math.sin, + cos = Math.cos, + max = Math.max, + min = Math.min, + PI = Math.PI; + /** + * @description Clone an object or array + * @param {Object|Array} object Cloned object + * @param {Boolean} recursion Whether to use recursive cloning + * @return {Object|Array} Clone object + */ + + function deepClone(object) { + var recursion = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var parse = JSON.parse, + stringify = JSON.stringify; + if (!recursion) return parse(stringify(object)); + var clonedObj = object instanceof Array ? [] : {}; + + if (object && _typeof(object) === 'object') { + for (var key in object) { + if (object.hasOwnProperty(key)) { + if (object[key] && _typeof(object[key]) === 'object') { + clonedObj[key] = deepClone(object[key], true); + } else { + clonedObj[key] = object[key]; + } + } + } + } + + return clonedObj; + } + /** + * @description Eliminate line blur due to 1px line width + * @param {Array} points Line points + * @return {Array} Line points after processed + */ + + + function eliminateBlur(points) { + return points.map(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + x = _ref2[0], + y = _ref2[1]; + + return [parseInt(x) + 0.5, parseInt(y) + 0.5]; + }); + } + /** + * @description Check if the point is inside the circle + * @param {Array} point Postion of point + * @param {Number} rx Circle x coordinate + * @param {Number} ry Circle y coordinate + * @param {Number} r Circle radius + * @return {Boolean} Result of check + */ + + + function checkPointIsInCircle(point, rx, ry, r) { + return getTwoPointDistance(point, [rx, ry]) <= r; + } + /** + * @description Get the distance between two points + * @param {Array} point1 point1 + * @param {Array} point2 point2 + * @return {Number} Distance between two points + */ + + + function getTwoPointDistance(_ref3, _ref4) { + var _ref5 = _slicedToArray(_ref3, 2), + xa = _ref5[0], + ya = _ref5[1]; + + var _ref6 = _slicedToArray(_ref4, 2), + xb = _ref6[0], + yb = _ref6[1]; + + var minusX = abs(xa - xb); + var minusY = abs(ya - yb); + return sqrt(minusX * minusX + minusY * minusY); + } + /** + * @description Check if the point is inside the polygon + * @param {Array} point Postion of point + * @param {Array} points The points that makes up a polyline + * @return {Boolean} Result of check + */ + + + function checkPointIsInPolygon(point, polygon) { + var counter = 0; + + var _point = _slicedToArray(point, 2), + x = _point[0], + y = _point[1]; + + var pointNum = polygon.length; + + for (var i = 1, p1 = polygon[0]; i <= pointNum; i++) { + var p2 = polygon[i % pointNum]; + + if (x > min(p1[0], p2[0]) && x <= max(p1[0], p2[0])) { + if (y <= max(p1[1], p2[1])) { + if (p1[0] !== p2[0]) { + var xinters = (x - p1[0]) * (p2[1] - p1[1]) / (p2[0] - p1[0]) + p1[1]; + + if (p1[1] === p2[1] || y <= xinters) { + counter++; + } + } + } + } + + p1 = p2; + } + + return counter % 2 === 1; + } + /** + * @description Check if the point is inside the sector + * @param {Array} point Postion of point + * @param {Number} rx Sector x coordinate + * @param {Number} ry Sector y coordinate + * @param {Number} r Sector radius + * @param {Number} startAngle Sector start angle + * @param {Number} endAngle Sector end angle + * @param {Boolean} clockWise Whether the sector angle is clockwise + * @return {Boolean} Result of check + */ + + + function checkPointIsInSector(point, rx, ry, r, startAngle, endAngle, clockWise) { + if (!point) return false; + if (getTwoPointDistance(point, [rx, ry]) > r) return false; + + if (!clockWise) { + var _deepClone = deepClone([endAngle, startAngle]); + + var _deepClone2 = _slicedToArray(_deepClone, 2); + + startAngle = _deepClone2[0]; + endAngle = _deepClone2[1]; + } + + var reverseBE = startAngle > endAngle; + + if (reverseBE) { + var _ref7 = [endAngle, startAngle]; + startAngle = _ref7[0]; + endAngle = _ref7[1]; + } + + var minus = endAngle - startAngle; + if (minus >= PI * 2) return true; + + var _point2 = _slicedToArray(point, 2), + x = _point2[0], + y = _point2[1]; + + var _getCircleRadianPoint = getCircleRadianPoint(rx, ry, r, startAngle), + _getCircleRadianPoint2 = _slicedToArray(_getCircleRadianPoint, 2), + bx = _getCircleRadianPoint2[0], + by = _getCircleRadianPoint2[1]; + + var _getCircleRadianPoint3 = getCircleRadianPoint(rx, ry, r, endAngle), + _getCircleRadianPoint4 = _slicedToArray(_getCircleRadianPoint3, 2), + ex = _getCircleRadianPoint4[0], + ey = _getCircleRadianPoint4[1]; + + var vPoint = [x - rx, y - ry]; + var vBArm = [bx - rx, by - ry]; + var vEArm = [ex - rx, ey - ry]; + var reverse = minus > PI; + + if (reverse) { + var _deepClone3 = deepClone([vEArm, vBArm]); + + var _deepClone4 = _slicedToArray(_deepClone3, 2); + + vBArm = _deepClone4[0]; + vEArm = _deepClone4[1]; + } + + var inSector = isClockWise(vBArm, vPoint) && !isClockWise(vEArm, vPoint); + if (reverse) inSector = !inSector; + if (reverseBE) inSector = !inSector; + return inSector; + } + /** + * @description Determine if the point is in the clockwise direction of the vector + * @param {Array} vArm Vector + * @param {Array} vPoint Point + * @return {Boolean} Result of check + */ + + + function isClockWise(vArm, vPoint) { + var _vArm = _slicedToArray(vArm, 2), + ax = _vArm[0], + ay = _vArm[1]; + + var _vPoint = _slicedToArray(vPoint, 2), + px = _vPoint[0], + py = _vPoint[1]; + + return -ay * px + ax * py > 0; + } + /** + * @description Check if the point is inside the polyline + * @param {Array} point Postion of point + * @param {Array} polyline The points that makes up a polyline + * @param {Number} lineWidth Polyline linewidth + * @return {Boolean} Result of check + */ + + + function checkPointIsNearPolyline(point, polyline, lineWidth) { + var halfLineWidth = lineWidth / 2; + var moveUpPolyline = polyline.map(function (_ref8) { + var _ref9 = _slicedToArray(_ref8, 2), + x = _ref9[0], + y = _ref9[1]; + + return [x, y - halfLineWidth]; + }); + var moveDownPolyline = polyline.map(function (_ref10) { + var _ref11 = _slicedToArray(_ref10, 2), + x = _ref11[0], + y = _ref11[1]; + + return [x, y + halfLineWidth]; + }); + var polygon = [].concat(_toConsumableArray(moveUpPolyline), _toConsumableArray(moveDownPolyline.reverse())); + return checkPointIsInPolygon(point, polygon); + } + /** + * @description Check if the point is inside the rect + * @param {Array} point Postion of point + * @param {Number} x Rect start x coordinate + * @param {Number} y Rect start y coordinate + * @param {Number} width Rect width + * @param {Number} height Rect height + * @return {Boolean} Result of check + */ + + + function checkPointIsInRect(_ref12, x, y, width, height) { + var _ref13 = _slicedToArray(_ref12, 2), + px = _ref13[0], + py = _ref13[1]; + + if (px < x) return false; + if (py < y) return false; + if (px > x + width) return false; + if (py > y + height) return false; + return true; + } + /** + * @description Get the coordinates of the rotated point + * @param {Number} rotate Degree of rotation + * @param {Array} point Postion of point + * @param {Array} origin Rotation center + * @param {Array} origin Rotation center + * @return {Number} Coordinates after rotation + */ + + + function getRotatePointPos() { + var rotate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + var point = arguments.length > 1 ? arguments[1] : undefined; + var origin = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [0, 0]; + if (!point) return false; + if (rotate % 360 === 0) return point; + + var _point3 = _slicedToArray(point, 2), + x = _point3[0], + y = _point3[1]; + + var _origin = _slicedToArray(origin, 2), + ox = _origin[0], + oy = _origin[1]; + + rotate *= PI / 180; + return [(x - ox) * cos(rotate) - (y - oy) * sin(rotate) + ox, (x - ox) * sin(rotate) + (y - oy) * cos(rotate) + oy]; + } + /** + * @description Get the coordinates of the scaled point + * @param {Array} scale Scale factor + * @param {Array} point Postion of point + * @param {Array} origin Scale center + * @return {Number} Coordinates after scale + */ + + + function getScalePointPos() { + var scale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [1, 1]; + var point = arguments.length > 1 ? arguments[1] : undefined; + var origin = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [0, 0]; + if (!point) return false; + if (scale === 1) return point; + + var _point4 = _slicedToArray(point, 2), + x = _point4[0], + y = _point4[1]; + + var _origin2 = _slicedToArray(origin, 2), + ox = _origin2[0], + oy = _origin2[1]; + + var _scale = _slicedToArray(scale, 2), + xs = _scale[0], + ys = _scale[1]; + + var relativePosX = x - ox; + var relativePosY = y - oy; + return [relativePosX * xs + ox, relativePosY * ys + oy]; + } + /** + * @description Get the coordinates of the scaled point + * @param {Array} translate Translation distance + * @param {Array} point Postion of point + * @return {Number} Coordinates after translation + */ + + + function getTranslatePointPos(translate, point) { + if (!translate || !point) return false; + + var _point5 = _slicedToArray(point, 2), + x = _point5[0], + y = _point5[1]; + + var _translate = _slicedToArray(translate, 2), + tx = _translate[0], + ty = _translate[1]; + + return [x + tx, y + ty]; + } + /** + * @description Get the distance from the point to the line + * @param {Array} point Postion of point + * @param {Array} lineBegin Line start position + * @param {Array} lineEnd Line end position + * @return {Number} Distance between point and line + */ + + + function getDistanceBetweenPointAndLine(point, lineBegin, lineEnd) { + if (!point || !lineBegin || !lineEnd) return false; + + var _point6 = _slicedToArray(point, 2), + x = _point6[0], + y = _point6[1]; + + var _lineBegin = _slicedToArray(lineBegin, 2), + x1 = _lineBegin[0], + y1 = _lineBegin[1]; + + var _lineEnd = _slicedToArray(lineEnd, 2), + x2 = _lineEnd[0], + y2 = _lineEnd[1]; + + var a = y2 - y1; + var b = x1 - x2; + var c = y1 * (x2 - x1) - x1 * (y2 - y1); + var molecule = abs(a * x + b * y + c); + var denominator = sqrt(a * a + b * b); + return molecule / denominator; + } + /** + * @description Get the coordinates of the specified radian on the circle + * @param {Number} x Circle x coordinate + * @param {Number} y Circle y coordinate + * @param {Number} radius Circle radius + * @param {Number} radian Specfied radian + * @return {Array} Postion of point + */ + + + function getCircleRadianPoint(x, y, radius, radian) { + return [x + cos(radian) * radius, y + sin(radian) * radius]; + } + /** + * @description Get the points that make up a regular polygon + * @param {Number} x X coordinate of the polygon inscribed circle + * @param {Number} y Y coordinate of the polygon inscribed circle + * @param {Number} r Radius of the polygon inscribed circle + * @param {Number} side Side number + * @param {Number} minus Radian offset + * @return {Array} Points that make up a regular polygon + */ + + + function getRegularPolygonPoints(rx, ry, r, side) { + var minus = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : PI * -0.5; + var radianGap = PI * 2 / side; + var radians = new Array(side).fill('').map(function (t, i) { + return i * radianGap + minus; + }); + return radians.map(function (radian) { + return getCircleRadianPoint(rx, ry, r, radian); + }); + } + /** + * @description Filter array nulls (''|false|null|undefined) + * @param {Array} arr The array to be filtered + * @return {Array} Filtered array + */ + + + function filterNull(arr) { + return arr.filter(function (v) { + return v || v === 0; + }); + } + + var _default = { + deepClone: deepClone, + eliminateBlur: eliminateBlur, + checkPointIsInCircle: checkPointIsInCircle, + checkPointIsInPolygon: checkPointIsInPolygon, + checkPointIsInSector: checkPointIsInSector, + checkPointIsNearPolyline: checkPointIsNearPolyline, + getTwoPointDistance: getTwoPointDistance, + getRotatePointPos: getRotatePointPos, + getScalePointPos: getScalePointPos, + getTranslatePointPos: getTranslatePointPos, + getCircleRadianPoint: getCircleRadianPoint, + getRegularPolygonPoints: getRegularPolygonPoints, + getDistanceBetweenPointAndLine: getDistanceBetweenPointAndLine + }; + exports["default"] = _default; + }); + + unwrapExports(util); + var util_1 = util.deepClone; + var util_2 = util.eliminateBlur; + var util_3 = util.checkPointIsInCircle; + var util_4 = util.getTwoPointDistance; + var util_5 = util.checkPointIsInPolygon; + var util_6 = util.checkPointIsInSector; + var util_7 = util.checkPointIsNearPolyline; + var util_8 = util.checkPointIsInRect; + var util_9 = util.getRotatePointPos; + var util_10 = util.getScalePointPos; + var util_11 = util.getTranslatePointPos; + var util_12 = util.getDistanceBetweenPointAndLine; + var util_13 = util.getCircleRadianPoint; + var util_14 = util.getRegularPolygonPoints; + var util_15 = util.filterNull; + + var util$1 = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.filterNonNumber = filterNonNumber; + exports.deepMerge = deepMerge; + exports.mulAdd = mulAdd; + exports.mergeSameStackData = mergeSameStackData; + exports.getTwoPointDistance = getTwoPointDistance; + exports.getLinearGradientColor = getLinearGradientColor; + exports.getPolylineLength = getPolylineLength; + exports.getPointToLineDistance = getPointToLineDistance; + exports.initNeedSeries = initNeedSeries; + exports.radianToAngle = radianToAngle; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } + + function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } + + function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } + + function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } + + function filterNonNumber(array) { + return array.filter(function (n) { + return typeof n === 'number'; + }); + } + + function deepMerge(target, merged) { + for (var key in merged) { + target[key] = target[key] && target[key].toString() === "[object Object]" ? deepMerge(target[key], merged[key]) : target[key] = merged[key]; + } + + return target; + } + + function mulAdd(nums) { + nums = filterNonNumber(nums); + return nums.reduce(function (all, num) { + return all + num; + }, 0); + } + + function mergeSameStackData(item, series) { + var stack = item.stack; + if (!stack) return _toConsumableArray(item.data); + var stacks = series.filter(function (_ref) { + var s = _ref.stack; + return s === stack; + }); + var index = stacks.findIndex(function (_ref2) { + var d = _ref2.data; + return d === item.data; + }); + var datas = stacks.splice(0, index + 1).map(function (_ref3) { + var data = _ref3.data; + return data; + }); + var dataLength = datas[0].length; + return new Array(dataLength).fill(0).map(function (foo, i) { + return mulAdd(datas.map(function (d) { + return d[i]; + })); + }); + } + + function getTwoPointDistance(pointOne, pointTwo) { + var minusX = Math.abs(pointOne[0] - pointTwo[0]); + var minusY = Math.abs(pointOne[1] - pointTwo[1]); + return Math.sqrt(minusX * minusX + minusY * minusY); + } + + function getLinearGradientColor(ctx, begin, end, color) { + if (!ctx || !begin || !end || !color.length) return; + var colors = color; + typeof colors === 'string' && (colors = [color, color]); + var linearGradientColor = ctx.createLinearGradient.apply(ctx, _toConsumableArray(begin).concat(_toConsumableArray(end))); + var colorGap = 1 / (colors.length - 1); + colors.forEach(function (c, i) { + return linearGradientColor.addColorStop(colorGap * i, c); + }); + return linearGradientColor; + } + + function getPolylineLength(points) { + var lineSegments = new Array(points.length - 1).fill(0).map(function (foo, i) { + return [points[i], points[i + 1]]; + }); + var lengths = lineSegments.map(function (item) { + return getTwoPointDistance.apply(void 0, _toConsumableArray(item)); + }); + return mulAdd(lengths); + } + + function getPointToLineDistance(point, linePointOne, linePointTwo) { + var a = getTwoPointDistance(point, linePointOne); + var b = getTwoPointDistance(point, linePointTwo); + var c = getTwoPointDistance(linePointOne, linePointTwo); + return 0.5 * Math.sqrt((a + b + c) * (a + b - c) * (a + c - b) * (b + c - a)) / c; + } + + function initNeedSeries(series, config, type) { + series = series.filter(function (_ref4) { + var st = _ref4.type; + return st === type; + }); + series = series.map(function (item) { + return deepMerge((0, util.deepClone)(config, true), item); + }); + return series.filter(function (_ref5) { + var show = _ref5.show; + return show; + }); + } + + function radianToAngle(radian) { + return radian / Math.PI * 180; + } + }); + + unwrapExports(util$1); + var util_1$1 = util$1.filterNonNumber; + var util_2$1 = util$1.deepMerge; + var util_3$1 = util$1.mulAdd; + var util_4$1 = util$1.mergeSameStackData; + var util_5$1 = util$1.getTwoPointDistance; + var util_6$1 = util$1.getLinearGradientColor; + var util_7$1 = util$1.getPolylineLength; + var util_8$1 = util$1.getPointToLineDistance; + var util_9$1 = util$1.initNeedSeries; + var util_10$1 = util$1.radianToAngle; + + // + var script$g = { + name: 'DvDecoration5', + mixins: [autoResize], + + data() { + return { + ref: 'decoration-5', + line1Points: '', + line2Points: '', + line1Length: 0, + line2Length: 0 + }; + }, + + methods: { + afterAutoResizeMixinInit() { + const { + calcSVGData + } = this; + calcSVGData(); + }, + + calcSVGData() { + const { + width, + height + } = this; + let line1Points = [[0, height * 0.2], [width * 0.18, height * 0.2], [width * 0.2, height * 0.4], [width * 0.25, height * 0.4], [width * 0.27, height * 0.6], [width * 0.72, height * 0.6], [width * 0.75, height * 0.4], [width * 0.8, height * 0.4], [width * 0.82, height * 0.2], [width, height * 0.2]]; + let line2Points = [[width * 0.3, height * 0.8], [width * 0.7, height * 0.8]]; + const line1Length = util_7$1(line1Points); + const line2Length = util_7$1(line2Points); + line1Points = line1Points.map(point => point.join(',')).join(' '); + line2Points = line2Points.map(point => point.join(',')).join(' '); + this.line1Points = line1Points; + this.line2Points = line2Points; + this.line1Length = line1Length; + this.line2Length = line2Length; + }, + + onResize() { + const { + calcSVGData + } = this; + calcSVGData(); + } + + } + }; + + /* script */ + const __vue_script__$g = script$g; + + /* template */ + var __vue_render__$g = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c("div", { ref: _vm.ref, staticClass: "dv-decoration-5" }, [ + _c("svg", { attrs: { width: _vm.width, height: _vm.height } }, [ + _c( + "polyline", + { + attrs: { + fill: "transparent", + stroke: "#3f96a5", + "stroke-width": "3", + points: _vm.line1Points + } + }, + [ + _c("animate", { + attrs: { + attributeName: "stroke-dasharray", + attributeType: "XML", + from: "0, " + _vm.line1Length / 2 + ", 0, " + _vm.line1Length / 2, + to: "0, 0, " + _vm.line1Length + ", 0", + dur: "1.2s", + begin: "0s", + calcMode: "spline", + keyTimes: "0;1", + keySplines: "0.4,1,0.49,0.98", + repeatCount: "indefinite" + } + }) + ] + ), + _vm._v(" "), + _c( + "polyline", + { + attrs: { + fill: "transparent", + stroke: "#3f96a5", + "stroke-width": "2", + points: _vm.line2Points + } + }, + [ + _c("animate", { + attrs: { + attributeName: "stroke-dasharray", + attributeType: "XML", + from: "0, " + _vm.line2Length / 2 + ", 0, " + _vm.line2Length / 2, + to: "0, 0, " + _vm.line2Length + ", 0", + dur: "1.2s", + begin: "0s", + calcMode: "spline", + keyTimes: "0;1", + keySplines: ".4,1,.49,.98", + repeatCount: "indefinite" + } + }) + ] + ) + ]) + ]) + }; + var __vue_staticRenderFns__$g = []; + __vue_render__$g._withStripped = true; + + /* style */ + const __vue_inject_styles__$g = function (inject) { + if (!inject) return + inject("data-v-77cc82b8_0", { source: ".dv-decoration-5 {\n width: 100%;\n height: 100%;\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,WAAW;EACX,YAAY;AACd","file":"main.vue","sourcesContent":[".dv-decoration-5 {\n width: 100%;\n height: 100%;\n}\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$g = undefined; + /* module identifier */ + const __vue_module_identifier__$g = undefined; + /* functional template */ + const __vue_is_functional_template__$g = false; + /* style inject SSR */ + + + + var Decoration5 = normalizeComponent_1( + { render: __vue_render__$g, staticRenderFns: __vue_staticRenderFns__$g }, + __vue_inject_styles__$g, + __vue_script__$g, + __vue_scope_id__$g, + __vue_is_functional_template__$g, + __vue_module_identifier__$g, + browser, + undefined + ); + + function decoration5 (Vue) { + Vue.component(Decoration5.name, Decoration5); + } + + // + var script$h = { + name: 'DvDecoration6', + mixins: [autoResize], + + data() { + const rectWidth = 7; + return { + ref: 'decoration-6', + svgWH: [300, 35], + svgScale: [1, 1], + rowNum: 1, + rowPoints: 40, + rectWidth, + halfRectWidth: rectWidth / 2, + points: [], + heights: [], + minHeights: [], + randoms: [] + }; + }, + + methods: { + afterAutoResizeMixinInit() { + const { + calcSVGData + } = this; + calcSVGData(); + }, + + calcSVGData() { + const { + calcPointsPosition, + calcScale + } = this; + calcPointsPosition(); + calcScale(); + }, + + calcPointsPosition() { + const { + svgWH, + rowNum, + rowPoints + } = this; + const [w, h] = svgWH; + const horizontalGap = w / (rowPoints + 1); + const verticalGap = h / (rowNum + 1); + let points = new Array(rowNum).fill(0).map((foo, i) => new Array(rowPoints).fill(0).map((foo, j) => [horizontalGap * (j + 1), verticalGap * (i + 1)])); + this.points = points.reduce((all, item) => [...all, ...item], []); + const heights = this.heights = new Array(rowNum * rowPoints).fill(0).map(foo => Math.random() > 0.8 ? randomExtend(0.7 * h, h) : randomExtend(0.2 * h, 0.5 * h)); + this.minHeights = new Array(rowNum * rowPoints).fill(0).map((foo, i) => heights[i] * Math.random()); + this.randoms = new Array(rowNum * rowPoints).fill(0).map(foo => Math.random() + 1.5); + }, + + calcScale() { + const { + width, + height, + svgWH + } = this; + const [w, h] = svgWH; + this.svgScale = [width / w, height / h]; + }, + + onResize() { + const { + calcSVGData + } = this; + calcSVGData(); + } + + } + }; + + /* script */ + const __vue_script__$h = script$h; + + /* template */ + var __vue_render__$h = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c("div", { ref: _vm.ref, staticClass: "dv-decoration-6" }, [ + _c( + "svg", + { + style: + "transform:scale(" + _vm.svgScale[0] + "," + _vm.svgScale[1] + ");", + attrs: { width: _vm.svgWH[0] + "px", height: _vm.svgWH[1] + "px" } + }, + [ + _vm._l(_vm.points, function(point, i) { + return [ + _c( + "rect", + { + key: i, + attrs: { + fill: "#7acaec", + x: point[0] - _vm.halfRectWidth, + y: point[1] - _vm.heights[i] / 2, + width: _vm.rectWidth, + height: _vm.heights[i] + } + }, + [ + _c("animate", { + attrs: { + attributeName: "y", + values: + point[1] - + _vm.minHeights[i] / 2 + + ";" + + (point[1] - _vm.heights[i] / 2) + + ";" + + (point[1] - _vm.minHeights[i] / 2), + dur: _vm.randoms[i] + "s", + keyTimes: "0;0.5;1", + calcMode: "spline", + keySplines: "0.42,0,0.58,1;0.42,0,0.58,1", + begin: "0s", + repeatCount: "indefinite" + } + }), + _vm._v(" "), + _c("animate", { + attrs: { + attributeName: "height", + values: + _vm.minHeights[i] + + ";" + + _vm.heights[i] + + ";" + + _vm.minHeights[i], + dur: _vm.randoms[i] + "s", + keyTimes: "0;0.5;1", + calcMode: "spline", + keySplines: "0.42,0,0.58,1;0.42,0,0.58,1", + begin: "0s", + repeatCount: "indefinite" + } + }) + ] + ) + ] + }) + ], + 2 + ) + ]) + }; + var __vue_staticRenderFns__$h = []; + __vue_render__$h._withStripped = true; + + /* style */ + const __vue_inject_styles__$h = function (inject) { + if (!inject) return + inject("data-v-0c456aa4_0", { source: ".dv-decoration-6 {\n width: 100%;\n height: 100%;\n}\n.dv-decoration-6 svg {\n transform-origin: left top;\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,WAAW;EACX,YAAY;AACd;AACA;EACE,0BAA0B;AAC5B","file":"main.vue","sourcesContent":[".dv-decoration-6 {\n width: 100%;\n height: 100%;\n}\n.dv-decoration-6 svg {\n transform-origin: left top;\n}\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$h = undefined; + /* module identifier */ + const __vue_module_identifier__$h = undefined; + /* functional template */ + const __vue_is_functional_template__$h = false; + /* style inject SSR */ + + + + var Decoration6 = normalizeComponent_1( + { render: __vue_render__$h, staticRenderFns: __vue_staticRenderFns__$h }, + __vue_inject_styles__$h, + __vue_script__$h, + __vue_scope_id__$h, + __vue_is_functional_template__$h, + __vue_module_identifier__$h, + browser, + undefined + ); + + function decoration6 (Vue) { + Vue.component(Decoration6.name, Decoration6); + } + + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + // + var script$i = { + name: 'DvDecoration7' + }; + + /* script */ + const __vue_script__$i = script$i; + + /* template */ + var __vue_render__$i = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c( + "div", + { staticClass: "dv-decoration-7" }, + [ + _c("svg", { attrs: { width: "21px", height: "20px" } }, [ + _c("polyline", { + attrs: { + "stroke-width": "4", + fill: "transparent", + stroke: "#1dc1f5", + points: "10, 0 19, 10 10, 20" + } + }), + _vm._v(" "), + _c("polyline", { + attrs: { + "stroke-width": "2", + fill: "transparent", + stroke: "#1dc1f5", + points: "2, 0 11, 10 2, 20" + } + }) + ]), + _vm._v(" "), + _vm._t("default"), + _vm._v(" "), + _c("svg", { attrs: { width: "21px", height: "20px" } }, [ + _c("polyline", { + attrs: { + "stroke-width": "4", + fill: "transparent", + stroke: "#1dc1f5", + points: "11, 0 2, 10 11, 20" + } + }), + _vm._v(" "), + _c("polyline", { + attrs: { + "stroke-width": "2", + fill: "transparent", + stroke: "#1dc1f5", + points: "19, 0 10, 10 19, 20" + } + }) + ]) + ], + 2 + ) + }; + var __vue_staticRenderFns__$i = []; + __vue_render__$i._withStripped = true; + + /* style */ + const __vue_inject_styles__$i = function (inject) { + if (!inject) return + inject("data-v-284b76c6_0", { source: ".dv-decoration-7 {\n display: flex;\n width: 100%;\n height: 100%;\n justify-content: center;\n align-items: center;\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,aAAa;EACb,WAAW;EACX,YAAY;EACZ,uBAAuB;EACvB,mBAAmB;AACrB","file":"main.vue","sourcesContent":[".dv-decoration-7 {\n display: flex;\n width: 100%;\n height: 100%;\n justify-content: center;\n align-items: center;\n}\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$i = undefined; + /* module identifier */ + const __vue_module_identifier__$i = undefined; + /* functional template */ + const __vue_is_functional_template__$i = false; + /* style inject SSR */ + + + + var Decoration7 = normalizeComponent_1( + { render: __vue_render__$i, staticRenderFns: __vue_staticRenderFns__$i }, + __vue_inject_styles__$i, + __vue_script__$i, + __vue_scope_id__$i, + __vue_is_functional_template__$i, + __vue_module_identifier__$i, + browser, + undefined + ); + + function decoration7 (Vue) { + Vue.component(Decoration7.name, Decoration7); + } + + // + var script$j = { + name: 'DvDecoration8', + mixins: [autoResize], + props: { + reverse: { + type: Boolean, + default: false + } + }, + + data() { + return { + ref: 'decoration-8' + }; + }, + + methods: { + xPos(pos) { + const { + reverse, + width + } = this; + if (!reverse) return pos; + return width - pos; + } + + } + }; + + /* script */ + const __vue_script__$j = script$j; + + /* template */ + var __vue_render__$j = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c("div", { ref: _vm.ref, staticClass: "dv-decoration-8" }, [ + _c("svg", { attrs: { width: _vm.width, height: _vm.height } }, [ + _c("polyline", { + attrs: { + stroke: "#3f96a5", + "stroke-width": "2", + fill: "transparent", + points: _vm.xPos(0) + ", 0 " + _vm.xPos(30) + ", " + _vm.height / 2 + } + }), + _vm._v(" "), + _c("polyline", { + attrs: { + stroke: "#3f96a5", + "stroke-width": "2", + fill: "transparent", + points: + _vm.xPos(20) + + ", 0 " + + _vm.xPos(50) + + ", " + + _vm.height / 2 + + " " + + _vm.xPos(_vm.width) + + ", " + + _vm.height / 2 + } + }), + _vm._v(" "), + _c("polyline", { + attrs: { + stroke: "#3f96a5", + fill: "transparent", + "stroke-width": "3", + points: + _vm.xPos(0) + + ", " + + (_vm.height - 3) + + ", " + + _vm.xPos(200) + + ", " + + (_vm.height - 3) + } + }) + ]) + ]) + }; + var __vue_staticRenderFns__$j = []; + __vue_render__$j._withStripped = true; + + /* style */ + const __vue_inject_styles__$j = function (inject) { + if (!inject) return + inject("data-v-75375dbc_0", { source: ".dv-decoration-8 {\n display: flex;\n width: 100%;\n height: 100%;\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,aAAa;EACb,WAAW;EACX,YAAY;AACd","file":"main.vue","sourcesContent":[".dv-decoration-8 {\n display: flex;\n width: 100%;\n height: 100%;\n}\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$j = undefined; + /* module identifier */ + const __vue_module_identifier__$j = undefined; + /* functional template */ + const __vue_is_functional_template__$j = false; + /* style inject SSR */ + + + + var Decoration8 = normalizeComponent_1( + { render: __vue_render__$j, staticRenderFns: __vue_staticRenderFns__$j }, + __vue_inject_styles__$j, + __vue_script__$j, + __vue_scope_id__$j, + __vue_is_functional_template__$j, + __vue_module_identifier__$j, + browser, + undefined + ); + + function decoration8 (Vue) { + Vue.component(Decoration8.name, Decoration8); + } + + // + var script$k = { + name: 'DvDecoration9', + mixins: [autoResize], + + data() { + return { + ref: 'decoration-9', + polygonId: `decoration-9-polygon-${new Date().getTime()}`, + svgWH: [100, 100], + svgScale: [1, 1] + }; + }, + + methods: { + afterAutoResizeMixinInit() { + const { + calcScale + } = this; + calcScale(); + }, + + calcScale() { + const { + width, + height, + svgWH + } = this; + const [w, h] = svgWH; + this.svgScale = [width / w, height / h]; + }, + + onResize() { + const { + calcScale + } = this; + calcScale(); + } + + } + }; + + /* script */ + const __vue_script__$k = script$k; + + /* template */ + var __vue_render__$k = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c( + "div", + { ref: _vm.ref, staticClass: "dv-decoration-9" }, + [ + _c( + "svg", + { + style: + "transform:scale(" + _vm.svgScale[0] + "," + _vm.svgScale[1] + ");", + attrs: { width: _vm.svgWH[0] + "px", height: _vm.svgWH[1] + "px" } + }, + [ + _c("defs", [ + _c("polygon", { + attrs: { + id: _vm.polygonId, + points: "15, 46.5, 21, 47.5, 21, 52.5, 15, 53.5" + } + }) + ]), + _vm._v(" "), + _c( + "circle", + { + attrs: { + cx: "50", + cy: "50", + r: "45", + fill: "transparent", + stroke: "rgba(3, 166, 224, 0.5)", + "stroke-width": "10", + "stroke-dasharray": "80, 100, 30, 100" + } + }, + [ + _c("animateTransform", { + attrs: { + attributeName: "transform", + type: "rotate", + values: "0 50 50;360 50 50", + dur: "3s", + repeatCount: "indefinite" + } + }) + ], + 1 + ), + _vm._v(" "), + _c( + "circle", + { + attrs: { + cx: "50", + cy: "50", + r: "45", + fill: "transparent", + stroke: "rgba(3, 166, 224, 0.8)", + "stroke-width": "6", + "stroke-dasharray": "50, 66, 100, 66" + } + }, + [ + _c("animateTransform", { + attrs: { + attributeName: "transform", + type: "rotate", + values: "0 50 50;-360 50 50", + dur: "3s", + repeatCount: "indefinite" + } + }) + ], + 1 + ), + _vm._v(" "), + _c("circle", { + attrs: { + cx: "50", + cy: "50", + r: "38", + fill: "transparent", + stroke: "rgba(3, 166, 224, 0.2)", + "stroke-width": "1", + "stroke-dasharray": "5, 1" + } + }), + _vm._v(" "), + _vm._l(new Array(20).fill(0), function(foo, i) { + return _c( + "use", + { + key: i, + attrs: { + "xlink:href": "#" + _vm.polygonId, + stroke: "rgba(3, 166, 224, 0.6)", + fill: + Math.random() > 0.4 + ? "transparent" + : "rgba(3, 166, 224, 0.8)" + } + }, + [ + _c("animateTransform", { + attrs: { + attributeName: "transform", + type: "rotate", + values: "0 50 50;360 50 50", + dur: "3s", + begin: i * 0.15 + "s", + repeatCount: "indefinite" + } + }) + ], + 1 + ) + }), + _vm._v(" "), + _c("circle", { + attrs: { + cx: "50", + cy: "50", + r: "26", + fill: "transparent", + stroke: "rgba(3, 166, 224, 0.2)", + "stroke-width": "1", + "stroke-dasharray": "5, 1" + } + }) + ], + 2 + ), + _vm._v(" "), + _vm._t("default") + ], + 2 + ) + }; + var __vue_staticRenderFns__$k = []; + __vue_render__$k._withStripped = true; + + /* style */ + const __vue_inject_styles__$k = function (inject) { + if (!inject) return + inject("data-v-fd6bf3c2_0", { source: ".dv-decoration-9 {\n position: relative;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.dv-decoration-9 svg {\n position: absolute;\n left: 0px;\n top: 0px;\n transform-origin: left top;\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;EACZ,aAAa;EACb,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,kBAAkB;EAClB,SAAS;EACT,QAAQ;EACR,0BAA0B;AAC5B","file":"main.vue","sourcesContent":[".dv-decoration-9 {\n position: relative;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.dv-decoration-9 svg {\n position: absolute;\n left: 0px;\n top: 0px;\n transform-origin: left top;\n}\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$k = undefined; + /* module identifier */ + const __vue_module_identifier__$k = undefined; + /* functional template */ + const __vue_is_functional_template__$k = false; + /* style inject SSR */ + + + + var Decoration9 = normalizeComponent_1( + { render: __vue_render__$k, staticRenderFns: __vue_staticRenderFns__$k }, + __vue_inject_styles__$k, + __vue_script__$k, + __vue_scope_id__$k, + __vue_is_functional_template__$k, + __vue_module_identifier__$k, + browser, + undefined + ); + + function decoration9 (Vue) { + Vue.component(Decoration9.name, Decoration9); + } + + // + var script$l = { + name: 'DvDecoration10', + mixins: [autoResize], + + data() { + return { + ref: 'decoration-10', + animationId1: `d10ani1${new Date().getTime()}`, + animationId2: `d10ani2${new Date().getTime()}`, + animationId3: `d10ani3${new Date().getTime()}`, + animationId4: `d10ani4${new Date().getTime()}`, + animationId5: `d10ani5${new Date().getTime()}`, + animationId6: `d10ani6${new Date().getTime()}`, + animationId7: `d10ani7${new Date().getTime()}` + }; + } + + }; + + /* script */ + const __vue_script__$l = script$l; + + /* template */ + var __vue_render__$l = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c("div", { ref: _vm.ref, staticClass: "dv-decoration-10" }, [ + _c("svg", { attrs: { width: _vm.width, height: _vm.height } }, [ + _c("polyline", { + attrs: { + stroke: "rgba(0, 194, 255, 0.3)", + "stroke-width": "2", + points: + "0, " + _vm.height / 2 + " " + _vm.width + ", " + _vm.height / 2 + } + }), + _vm._v(" "), + _c( + "polyline", + { + attrs: { + stroke: "rgba(0, 194, 255, 1)", + "stroke-width": "2", + points: + "5, " + + _vm.height / 2 + + " " + + (_vm.width * 0.2 - 3) + + ", " + + _vm.height / 2, + "stroke-dasharray": "0, " + _vm.width * 0.2, + fill: "freeze" + } + }, + [ + _c("animate", { + attrs: { + id: _vm.animationId2, + attributeName: "stroke-dasharray", + values: "0, " + _vm.width * 0.2 + ";" + _vm.width * 0.2 + ", 0;", + dur: "3s", + begin: _vm.animationId1 + ".end", + fill: "freeze" + } + }), + _vm._v(" "), + _c("animate", { + attrs: { + attributeName: "stroke-dasharray", + values: _vm.width * 0.2 + ", 0;0, " + _vm.width * 0.2, + dur: "0.01s", + begin: _vm.animationId7 + ".end", + fill: "freeze" + } + }) + ] + ), + _vm._v(" "), + _c( + "polyline", + { + attrs: { + stroke: "rgba(0, 194, 255, 1)", + "stroke-width": "2", + points: + _vm.width * 0.2 + + 3 + + ", " + + _vm.height / 2 + + " " + + (_vm.width * 0.8 - 3) + + ", " + + _vm.height / 2, + "stroke-dasharray": "0, " + _vm.width * 0.6 + } + }, + [ + _c("animate", { + attrs: { + id: _vm.animationId4, + attributeName: "stroke-dasharray", + values: "0, " + _vm.width * 0.6 + ";" + _vm.width * 0.6 + ", 0", + dur: "3s", + begin: _vm.animationId3 + ".end + 1s", + fill: "freeze" + } + }), + _vm._v(" "), + _c("animate", { + attrs: { + attributeName: "stroke-dasharray", + values: _vm.width * 0.6 + ", 0;0, " + _vm.width * 0.6, + dur: "0.01s", + begin: _vm.animationId7 + ".end", + fill: "freeze" + } + }) + ] + ), + _vm._v(" "), + _c( + "polyline", + { + attrs: { + stroke: "rgba(0, 194, 255, 1)", + "stroke-width": "2", + points: + _vm.width * 0.8 + + 3 + + ", " + + _vm.height / 2 + + " " + + (_vm.width - 5) + + ", " + + _vm.height / 2, + "stroke-dasharray": "0, " + _vm.width * 0.2 + } + }, + [ + _c("animate", { + attrs: { + id: _vm.animationId6, + attributeName: "stroke-dasharray", + values: "0, " + _vm.width * 0.2 + ";" + _vm.width * 0.2 + ", 0", + dur: "3s", + begin: _vm.animationId5 + ".end + 1s", + fill: "freeze" + } + }), + _vm._v(" "), + _c("animate", { + attrs: { + attributeName: "stroke-dasharray", + values: _vm.width * 0.2 + ", 0;0, " + _vm.width * 0.3, + dur: "0.01s", + begin: _vm.animationId7 + ".end", + fill: "freeze" + } + }) + ] + ), + _vm._v(" "), + _c( + "circle", + { attrs: { cx: "2", cy: _vm.height / 2, r: "2", fill: "#03709f" } }, + [ + _c("animate", { + attrs: { + id: _vm.animationId1, + attributeName: "fill", + values: "#03709f;#00c2ff", + begin: "0s;" + _vm.animationId7 + ".end", + dur: "0.3s", + fill: "freeze" + } + }) + ] + ), + _vm._v(" "), + _c( + "circle", + { + attrs: { + cx: _vm.width * 0.2, + cy: _vm.height / 2, + r: "2", + fill: "#03709f" + } + }, + [ + _c("animate", { + attrs: { + id: _vm.animationId3, + attributeName: "fill", + values: "#03709f;#00c2ff", + begin: _vm.animationId2 + ".end", + dur: "0.3s", + fill: "freeze" + } + }), + _vm._v(" "), + _c("animate", { + attrs: { + attributeName: "fill", + values: "#03709f;#03709f", + dur: "0.01s", + begin: _vm.animationId7 + ".end", + fill: "freeze" + } + }) + ] + ), + _vm._v(" "), + _c( + "circle", + { + attrs: { + cx: _vm.width * 0.8, + cy: _vm.height / 2, + r: "2", + fill: "#03709f" + } + }, + [ + _c("animate", { + attrs: { + id: _vm.animationId5, + attributeName: "fill", + values: "#03709f;#00c2ff", + begin: _vm.animationId4 + ".end", + dur: "0.3s", + fill: "freeze" + } + }), + _vm._v(" "), + _c("animate", { + attrs: { + attributeName: "fill", + values: "#03709f;#03709f", + dur: "0.01s", + begin: _vm.animationId7 + ".end", + fill: "freeze" + } + }) + ] + ), + _vm._v(" "), + _c( + "circle", + { + attrs: { + cx: _vm.width - 2, + cy: _vm.height / 2, + r: "2", + fill: "#03709f" + } + }, + [ + _c("animate", { + attrs: { + id: _vm.animationId7, + attributeName: "fill", + values: "#03709f;#00c2ff", + begin: _vm.animationId6 + ".end", + dur: "0.3s", + fill: "freeze" + } + }), + _vm._v(" "), + _c("animate", { + attrs: { + attributeName: "fill", + values: "#03709f;#03709f", + dur: "0.01s", + begin: _vm.animationId7 + ".end", + fill: "freeze" + } + }) + ] + ) + ]) + ]) + }; + var __vue_staticRenderFns__$l = []; + __vue_render__$l._withStripped = true; + + /* style */ + const __vue_inject_styles__$l = function (inject) { + if (!inject) return + inject("data-v-223a3e5b_0", { source: ".dv-decoration-10 {\n width: 100%;\n height: 100%;\n display: flex;\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,WAAW;EACX,YAAY;EACZ,aAAa;AACf","file":"main.vue","sourcesContent":[".dv-decoration-10 {\n width: 100%;\n height: 100%;\n display: flex;\n}\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$l = undefined; + /* module identifier */ + const __vue_module_identifier__$l = undefined; + /* functional template */ + const __vue_is_functional_template__$l = false; + /* style inject SSR */ + + + + var Decoration10 = normalizeComponent_1( + { render: __vue_render__$l, staticRenderFns: __vue_staticRenderFns__$l }, + __vue_inject_styles__$l, + __vue_script__$l, + __vue_scope_id__$l, + __vue_is_functional_template__$l, + __vue_module_identifier__$l, + browser, + undefined + ); + + function decoration10 (Vue) { + Vue.component(Decoration10.name, Decoration10); + } + + // 19.1.2.1 Object.assign(target, source, ...) + + + + + + + var $assign = Object.assign; + + // should work with symbols and should have deterministic property order (V8 bug) + var _objectAssign = !$assign || _fails(function () { + var A = {}; + var B = {}; + // eslint-disable-next-line no-undef + var S = Symbol(); + var K = 'abcdefghijklmnopqrst'; + A[S] = 7; + K.split('').forEach(function (k) { B[k] = k; }); + return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K; + }) ? function assign(target, source) { // eslint-disable-line no-unused-vars + var T = _toObject(target); + var aLen = arguments.length; + var index = 1; + var getSymbols = _objectGops.f; + var isEnum = _objectPie.f; + while (aLen > index) { + var S = _iobject(arguments[index++]); + var keys = getSymbols ? _objectKeys(S).concat(getSymbols(S)) : _objectKeys(S); + var length = keys.length; + var j = 0; + var key; + while (length > j) { + key = keys[j++]; + if (!_descriptors || isEnum.call(S, key)) T[key] = S[key]; + } + } return T; + } : $assign; + + // 19.1.3.1 Object.assign(target, source) + + + _export(_export.S + _export.F, 'Object', { assign: _objectAssign }); + + // 7.2.8 IsRegExp(argument) + + + var MATCH = _wks('match'); + var _isRegexp = function (it) { + var isRegExp; + return _isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : _cof(it) == 'RegExp'); + }; + + // 7.3.20 SpeciesConstructor(O, defaultConstructor) + + + var SPECIES$1 = _wks('species'); + var _speciesConstructor = function (O, D) { + var C = _anObject(O).constructor; + var S; + return C === undefined || (S = _anObject(C)[SPECIES$1]) == undefined ? D : _aFunction(S); + }; + + var at = _stringAt(true); + + // `AdvanceStringIndex` abstract operation + // https://tc39.github.io/ecma262/#sec-advancestringindex + var _advanceStringIndex = function (S, index, unicode) { + return index + (unicode ? at(S, index).length : 1); + }; + + var builtinExec = RegExp.prototype.exec; + + // `RegExpExec` abstract operation + // https://tc39.github.io/ecma262/#sec-regexpexec + var _regexpExecAbstract = function (R, S) { + var exec = R.exec; + if (typeof exec === 'function') { + var result = exec.call(R, S); + if (typeof result !== 'object') { + throw new TypeError('RegExp exec method returned something other than an Object or null'); + } + return result; + } + if (_classof(R) !== 'RegExp') { + throw new TypeError('RegExp#exec called on incompatible receiver'); + } + return builtinExec.call(R, S); + }; + + var nativeExec = RegExp.prototype.exec; + // This always refers to the native implementation, because the + // String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js, + // which loads this file before patching the method. + var nativeReplace = String.prototype.replace; + + var patchedExec = nativeExec; + + var LAST_INDEX = 'lastIndex'; + + var UPDATES_LAST_INDEX_WRONG = (function () { + var re1 = /a/, + re2 = /b*/g; + nativeExec.call(re1, 'a'); + nativeExec.call(re2, 'a'); + return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0; + })(); + + // nonparticipating capturing group, copied from es5-shim's String#split patch. + var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; + + var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED; + + if (PATCH) { + patchedExec = function exec(str) { + var re = this; + var lastIndex, reCopy, match, i; + + if (NPCG_INCLUDED) { + reCopy = new RegExp('^' + re.source + '$(?!\\s)', _flags.call(re)); + } + if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX]; + + match = nativeExec.call(re, str); + + if (UPDATES_LAST_INDEX_WRONG && match) { + re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex; + } + if (NPCG_INCLUDED && match && match.length > 1) { + // Fix browsers whose `exec` methods don't consistently return `undefined` + // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/ + // eslint-disable-next-line no-loop-func + nativeReplace.call(match[0], reCopy, function () { + for (i = 1; i < arguments.length - 2; i++) { + if (arguments[i] === undefined) match[i] = undefined; + } + }); + } + + return match; + }; + } + + var _regexpExec = patchedExec; + + _export({ + target: 'RegExp', + proto: true, + forced: _regexpExec !== /./.exec + }, { + exec: _regexpExec + }); + + var SPECIES$2 = _wks('species'); + + var REPLACE_SUPPORTS_NAMED_GROUPS = !_fails(function () { + // #replace needs built-in support for named groups. + // #match works fine because it just return the exec results, even if it has + // a "grops" property. + var re = /./; + re.exec = function () { + var result = []; + result.groups = { a: '7' }; + return result; + }; + return ''.replace(re, '$') !== '7'; + }); + + var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () { + // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec + var re = /(?:)/; + var originalExec = re.exec; + re.exec = function () { return originalExec.apply(this, arguments); }; + var result = 'ab'.split(re); + return result.length === 2 && result[0] === 'a' && result[1] === 'b'; + })(); + + var _fixReWks = function (KEY, length, exec) { + var SYMBOL = _wks(KEY); + + var DELEGATES_TO_SYMBOL = !_fails(function () { + // String methods call symbol-named RegEp methods + var O = {}; + O[SYMBOL] = function () { return 7; }; + return ''[KEY](O) != 7; + }); + + var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !_fails(function () { + // Symbol-named RegExp methods call .exec + var execCalled = false; + var re = /a/; + re.exec = function () { execCalled = true; return null; }; + if (KEY === 'split') { + // RegExp[@@split] doesn't call the regex's exec method, but first creates + // a new one. We need to return the patched regex when creating the new one. + re.constructor = {}; + re.constructor[SPECIES$2] = function () { return re; }; + } + re[SYMBOL](''); + return !execCalled; + }) : undefined; + + if ( + !DELEGATES_TO_SYMBOL || + !DELEGATES_TO_EXEC || + (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) || + (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC) + ) { + var nativeRegExpMethod = /./[SYMBOL]; + var fns = exec( + _defined, + SYMBOL, + ''[KEY], + function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) { + if (regexp.exec === _regexpExec) { + if (DELEGATES_TO_SYMBOL && !forceStringMethod) { + // The native String method already delegates to @@method (this + // polyfilled function), leasing to infinite recursion. + // We avoid it by directly calling the native @@method method. + return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) }; + } + return { done: true, value: nativeMethod.call(str, regexp, arg2) }; + } + return { done: false }; + } + ); + var strfn = fns[0]; + var rxfn = fns[1]; + + _redefine(String.prototype, KEY, strfn); + _hide(RegExp.prototype, SYMBOL, length == 2 + // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue) + // 21.2.5.11 RegExp.prototype[@@split](string, limit) + ? function (string, arg) { return rxfn.call(string, this, arg); } + // 21.2.5.6 RegExp.prototype[@@match](string) + // 21.2.5.9 RegExp.prototype[@@search](string) + : function (string) { return rxfn.call(string, this); } + ); + } + }; + + var $min = Math.min; + var $push = [].push; + var $SPLIT = 'split'; + var LENGTH = 'length'; + var LAST_INDEX$1 = 'lastIndex'; + var MAX_UINT32 = 0xffffffff; + + // babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError + var SUPPORTS_Y = !_fails(function () { RegExp(MAX_UINT32, 'y'); }); + + // @@split logic + _fixReWks('split', 2, function (defined, SPLIT, $split, maybeCallNative) { + var internalSplit; + if ( + 'abbc'[$SPLIT](/(b)*/)[1] == 'c' || + 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 || + 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 || + '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 || + '.'[$SPLIT](/()()/)[LENGTH] > 1 || + ''[$SPLIT](/.?/)[LENGTH] + ) { + // based on es5-shim implementation, need to rework it + internalSplit = function (separator, limit) { + var string = String(this); + if (separator === undefined && limit === 0) return []; + // If `separator` is not a regex, use native split + if (!_isRegexp(separator)) return $split.call(string, separator, limit); + var output = []; + var flags = (separator.ignoreCase ? 'i' : '') + + (separator.multiline ? 'm' : '') + + (separator.unicode ? 'u' : '') + + (separator.sticky ? 'y' : ''); + var lastLastIndex = 0; + var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0; + // Make `global` and avoid `lastIndex` issues by working with a copy + var separatorCopy = new RegExp(separator.source, flags + 'g'); + var match, lastIndex, lastLength; + while (match = _regexpExec.call(separatorCopy, string)) { + lastIndex = separatorCopy[LAST_INDEX$1]; + if (lastIndex > lastLastIndex) { + output.push(string.slice(lastLastIndex, match.index)); + if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1)); + lastLength = match[0][LENGTH]; + lastLastIndex = lastIndex; + if (output[LENGTH] >= splitLimit) break; + } + if (separatorCopy[LAST_INDEX$1] === match.index) separatorCopy[LAST_INDEX$1]++; // Avoid an infinite loop + } + if (lastLastIndex === string[LENGTH]) { + if (lastLength || !separatorCopy.test('')) output.push(''); + } else output.push(string.slice(lastLastIndex)); + return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output; + }; + // Chakra, V8 + } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) { + internalSplit = function (separator, limit) { + return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit); + }; + } else { + internalSplit = $split; + } + + return [ + // `String.prototype.split` method + // https://tc39.github.io/ecma262/#sec-string.prototype.split + function split(separator, limit) { + var O = defined(this); + var splitter = separator == undefined ? undefined : separator[SPLIT]; + return splitter !== undefined + ? splitter.call(separator, O, limit) + : internalSplit.call(String(O), separator, limit); + }, + // `RegExp.prototype[@@split]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split + // + // NOTE: This cannot be properly polyfilled in engines that don't support + // the 'y' flag. + function (regexp, limit) { + var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split); + if (res.done) return res.value; + + var rx = _anObject(regexp); + var S = String(this); + var C = _speciesConstructor(rx, RegExp); + + var unicodeMatching = rx.unicode; + var flags = (rx.ignoreCase ? 'i' : '') + + (rx.multiline ? 'm' : '') + + (rx.unicode ? 'u' : '') + + (SUPPORTS_Y ? 'y' : 'g'); + + // ^(? + rx + ) is needed, in combination with some S slicing, to + // simulate the 'y' flag. + var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags); + var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; + if (lim === 0) return []; + if (S.length === 0) return _regexpExecAbstract(splitter, S) === null ? [S] : []; + var p = 0; + var q = 0; + var A = []; + while (q < S.length) { + splitter.lastIndex = SUPPORTS_Y ? q : 0; + var z = _regexpExecAbstract(splitter, SUPPORTS_Y ? S : S.slice(q)); + var e; + if ( + z === null || + (e = $min(_toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p + ) { + q = _advanceStringIndex(S, q, unicodeMatching); + } else { + A.push(S.slice(p, q)); + if (A.length === lim) return A; + for (var i = 1; i <= z.length - 1; i++) { + A.push(z[i]); + if (A.length === lim) return A; + } + q = p = e; + } + } + A.push(S.slice(p)); + return A; + } + ]; + }); + + // 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined) + + var $find$1 = _arrayMethods(5); + var KEY$1 = 'find'; + var forced$1 = true; + // Shouldn't skip holes + if (KEY$1 in []) Array(1)[KEY$1](function () { forced$1 = false; }); + _export(_export.P + _export.F * forced$1, 'Array', { + find: function find(callbackfn /* , that = undefined */) { + return $find$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } + }); + _addToUnscopables(KEY$1); + + // most Object methods by ES6 should accept primitives + + + + var _objectSap = function (KEY, exec) { + var fn = (_core.Object || {})[KEY] || Object[KEY]; + var exp = {}; + exp[KEY] = exec(fn); + _export(_export.S + _export.F * _fails(function () { fn(1); }), 'Object', exp); + }; + + // 19.1.2.14 Object.keys(O) + + + + _objectSap('keys', function () { + return function keys(it) { + return _objectKeys(_toObject(it)); + }; + }); + + // 20.3.3.1 / 15.9.4.4 Date.now() + + + _export(_export.S, 'Date', { now: function () { return new Date().getTime(); } }); + + var _anInstance = function (it, Constructor, name, forbiddenField) { + if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) { + throw TypeError(name + ': incorrect invocation!'); + } return it; + }; + + var _forOf = createCommonjsModule(function (module) { + var BREAK = {}; + var RETURN = {}; + var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) { + var iterFn = ITERATOR ? function () { return iterable; } : core_getIteratorMethod(iterable); + var f = _ctx(fn, that, entries ? 2 : 1); + var index = 0; + var length, step, iterator, result; + if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!'); + // fast case for arrays with default iterator + if (_isArrayIter(iterFn)) for (length = _toLength(iterable.length); length > index; index++) { + result = entries ? f(_anObject(step = iterable[index])[0], step[1]) : f(iterable[index]); + if (result === BREAK || result === RETURN) return result; + } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) { + result = _iterCall(iterator, f, step.value, entries); + if (result === BREAK || result === RETURN) return result; + } + }; + exports.BREAK = BREAK; + exports.RETURN = RETURN; + }); + + // fast apply, http://jsperf.lnkit.com/fast-apply/5 + var _invoke = function (fn, args, that) { + var un = that === undefined; + switch (args.length) { + case 0: return un ? fn() + : fn.call(that); + case 1: return un ? fn(args[0]) + : fn.call(that, args[0]); + case 2: return un ? fn(args[0], args[1]) + : fn.call(that, args[0], args[1]); + case 3: return un ? fn(args[0], args[1], args[2]) + : fn.call(that, args[0], args[1], args[2]); + case 4: return un ? fn(args[0], args[1], args[2], args[3]) + : fn.call(that, args[0], args[1], args[2], args[3]); + } return fn.apply(that, args); + }; + + var process = _global.process; + var setTask = _global.setImmediate; + var clearTask = _global.clearImmediate; + var MessageChannel = _global.MessageChannel; + var Dispatch = _global.Dispatch; + var counter = 0; + var queue = {}; + var ONREADYSTATECHANGE = 'onreadystatechange'; + var defer, channel, port; + var run = function () { + var id = +this; + // eslint-disable-next-line no-prototype-builtins + if (queue.hasOwnProperty(id)) { + var fn = queue[id]; + delete queue[id]; + fn(); + } + }; + var listener = function (event) { + run.call(event.data); + }; + // Node.js 0.9+ & IE10+ has setImmediate, otherwise: + if (!setTask || !clearTask) { + setTask = function setImmediate(fn) { + var args = []; + var i = 1; + while (arguments.length > i) args.push(arguments[i++]); + queue[++counter] = function () { + // eslint-disable-next-line no-new-func + _invoke(typeof fn == 'function' ? fn : Function(fn), args); + }; + defer(counter); + return counter; + }; + clearTask = function clearImmediate(id) { + delete queue[id]; + }; + // Node.js 0.8- + if (_cof(process) == 'process') { + defer = function (id) { + process.nextTick(_ctx(run, id, 1)); + }; + // Sphere (JS game engine) Dispatch API + } else if (Dispatch && Dispatch.now) { + defer = function (id) { + Dispatch.now(_ctx(run, id, 1)); + }; + // Browsers with MessageChannel, includes WebWorkers + } else if (MessageChannel) { + channel = new MessageChannel(); + port = channel.port2; + channel.port1.onmessage = listener; + defer = _ctx(port.postMessage, port, 1); + // Browsers with postMessage, skip WebWorkers + // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' + } else if (_global.addEventListener && typeof postMessage == 'function' && !_global.importScripts) { + defer = function (id) { + _global.postMessage(id + '', '*'); + }; + _global.addEventListener('message', listener, false); + // IE8- + } else if (ONREADYSTATECHANGE in _domCreate('script')) { + defer = function (id) { + _html.appendChild(_domCreate('script'))[ONREADYSTATECHANGE] = function () { + _html.removeChild(this); + run.call(id); + }; + }; + // Rest old browsers + } else { + defer = function (id) { + setTimeout(_ctx(run, id, 1), 0); + }; + } + } + var _task = { + set: setTask, + clear: clearTask + }; + + var macrotask = _task.set; + var Observer = _global.MutationObserver || _global.WebKitMutationObserver; + var process$1 = _global.process; + var Promise$1 = _global.Promise; + var isNode = _cof(process$1) == 'process'; + + var _microtask = function () { + var head, last, notify; + + var flush = function () { + var parent, fn; + if (isNode && (parent = process$1.domain)) parent.exit(); + while (head) { + fn = head.fn; + head = head.next; + try { + fn(); + } catch (e) { + if (head) notify(); + else last = undefined; + throw e; + } + } last = undefined; + if (parent) parent.enter(); + }; + + // Node.js + if (isNode) { + notify = function () { + process$1.nextTick(flush); + }; + // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339 + } else if (Observer && !(_global.navigator && _global.navigator.standalone)) { + var toggle = true; + var node = document.createTextNode(''); + new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new + notify = function () { + node.data = toggle = !toggle; + }; + // environments with maybe non-completely correct, but existent Promise + } else if (Promise$1 && Promise$1.resolve) { + // Promise.resolve without an argument throws an error in LG WebOS 2 + var promise = Promise$1.resolve(undefined); + notify = function () { + promise.then(flush); + }; + // for other environments - macrotask based on: + // - setImmediate + // - MessageChannel + // - window.postMessag + // - onreadystatechange + // - setTimeout + } else { + notify = function () { + // strange IE + webpack dev server bug - use .call(global) + macrotask.call(_global, flush); + }; + } + + return function (fn) { + var task = { fn: fn, next: undefined }; + if (last) last.next = task; + if (!head) { + head = task; + notify(); + } last = task; + }; + }; + + // 25.4.1.5 NewPromiseCapability(C) + + + function PromiseCapability(C) { + var resolve, reject; + this.promise = new C(function ($$resolve, $$reject) { + if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor'); + resolve = $$resolve; + reject = $$reject; + }); + this.resolve = _aFunction(resolve); + this.reject = _aFunction(reject); + } + + var f$7 = function (C) { + return new PromiseCapability(C); + }; + + var _newPromiseCapability = { + f: f$7 + }; + + var _perform = function (exec) { + try { + return { e: false, v: exec() }; + } catch (e) { + return { e: true, v: e }; + } + }; + + var navigator$1 = _global.navigator; + + var _userAgent = navigator$1 && navigator$1.userAgent || ''; + + var _promiseResolve = function (C, x) { + _anObject(C); + if (_isObject(x) && x.constructor === C) return x; + var promiseCapability = _newPromiseCapability.f(C); + var resolve = promiseCapability.resolve; + resolve(x); + return promiseCapability.promise; + }; + + var _redefineAll = function (target, src, safe) { + for (var key in src) _redefine(target, key, src[key], safe); + return target; + }; + + var SPECIES$3 = _wks('species'); + + var _setSpecies = function (KEY) { + var C = _global[KEY]; + if (_descriptors && C && !C[SPECIES$3]) _objectDp.f(C, SPECIES$3, { + configurable: true, + get: function () { return this; } + }); + }; + + var task = _task.set; + var microtask = _microtask(); + + + + + var PROMISE = 'Promise'; + var TypeError$1 = _global.TypeError; + var process$2 = _global.process; + var versions = process$2 && process$2.versions; + var v8 = versions && versions.v8 || ''; + var $Promise = _global[PROMISE]; + var isNode$1 = _classof(process$2) == 'process'; + var empty = function () { /* empty */ }; + var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper; + var newPromiseCapability = newGenericPromiseCapability = _newPromiseCapability.f; + + var USE_NATIVE$1 = !!function () { + try { + // correct subclassing with @@species support + var promise = $Promise.resolve(1); + var FakePromise = (promise.constructor = {})[_wks('species')] = function (exec) { + exec(empty, empty); + }; + // unhandled rejections tracking support, NodeJS Promise without it fails @@species test + return (isNode$1 || typeof PromiseRejectionEvent == 'function') + && promise.then(empty) instanceof FakePromise + // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables + // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 + // we can't detect it synchronously, so just check versions + && v8.indexOf('6.6') !== 0 + && _userAgent.indexOf('Chrome/66') === -1; + } catch (e) { /* empty */ } + }(); + + // helpers + var isThenable = function (it) { + var then; + return _isObject(it) && typeof (then = it.then) == 'function' ? then : false; + }; + var notify = function (promise, isReject) { + if (promise._n) return; + promise._n = true; + var chain = promise._c; + microtask(function () { + var value = promise._v; + var ok = promise._s == 1; + var i = 0; + var run = function (reaction) { + var handler = ok ? reaction.ok : reaction.fail; + var resolve = reaction.resolve; + var reject = reaction.reject; + var domain = reaction.domain; + var result, then, exited; + try { + if (handler) { + if (!ok) { + if (promise._h == 2) onHandleUnhandled(promise); + promise._h = 1; + } + if (handler === true) result = value; + else { + if (domain) domain.enter(); + result = handler(value); // may throw + if (domain) { + domain.exit(); + exited = true; + } + } + if (result === reaction.promise) { + reject(TypeError$1('Promise-chain cycle')); + } else if (then = isThenable(result)) { + then.call(result, resolve, reject); + } else resolve(result); + } else reject(value); + } catch (e) { + if (domain && !exited) domain.exit(); + reject(e); + } + }; + while (chain.length > i) run(chain[i++]); // variable length - can't use forEach + promise._c = []; + promise._n = false; + if (isReject && !promise._h) onUnhandled(promise); + }); + }; + var onUnhandled = function (promise) { + task.call(_global, function () { + var value = promise._v; + var unhandled = isUnhandled(promise); + var result, handler, console; + if (unhandled) { + result = _perform(function () { + if (isNode$1) { + process$2.emit('unhandledRejection', value, promise); + } else if (handler = _global.onunhandledrejection) { + handler({ promise: promise, reason: value }); + } else if ((console = _global.console) && console.error) { + console.error('Unhandled promise rejection', value); + } + }); + // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should + promise._h = isNode$1 || isUnhandled(promise) ? 2 : 1; + } promise._a = undefined; + if (unhandled && result.e) throw result.v; + }); + }; + var isUnhandled = function (promise) { + return promise._h !== 1 && (promise._a || promise._c).length === 0; + }; + var onHandleUnhandled = function (promise) { + task.call(_global, function () { + var handler; + if (isNode$1) { + process$2.emit('rejectionHandled', promise); + } else if (handler = _global.onrejectionhandled) { + handler({ promise: promise, reason: promise._v }); + } + }); + }; + var $reject = function (value) { + var promise = this; + if (promise._d) return; + promise._d = true; + promise = promise._w || promise; // unwrap + promise._v = value; + promise._s = 2; + if (!promise._a) promise._a = promise._c.slice(); + notify(promise, true); + }; + var $resolve = function (value) { + var promise = this; + var then; + if (promise._d) return; + promise._d = true; + promise = promise._w || promise; // unwrap + try { + if (promise === value) throw TypeError$1("Promise can't be resolved itself"); + if (then = isThenable(value)) { + microtask(function () { + var wrapper = { _w: promise, _d: false }; // wrap + try { + then.call(value, _ctx($resolve, wrapper, 1), _ctx($reject, wrapper, 1)); + } catch (e) { + $reject.call(wrapper, e); + } + }); + } else { + promise._v = value; + promise._s = 1; + notify(promise, false); + } + } catch (e) { + $reject.call({ _w: promise, _d: false }, e); // wrap + } + }; + + // constructor polyfill + if (!USE_NATIVE$1) { + // 25.4.3.1 Promise(executor) + $Promise = function Promise(executor) { + _anInstance(this, $Promise, PROMISE, '_h'); + _aFunction(executor); + Internal.call(this); + try { + executor(_ctx($resolve, this, 1), _ctx($reject, this, 1)); + } catch (err) { + $reject.call(this, err); + } + }; + // eslint-disable-next-line no-unused-vars + Internal = function Promise(executor) { + this._c = []; // <- awaiting reactions + this._a = undefined; // <- checked in isUnhandled reactions + this._s = 0; // <- state + this._d = false; // <- done + this._v = undefined; // <- value + this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled + this._n = false; // <- notify + }; + Internal.prototype = _redefineAll($Promise.prototype, { + // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected) + then: function then(onFulfilled, onRejected) { + var reaction = newPromiseCapability(_speciesConstructor(this, $Promise)); + reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; + reaction.fail = typeof onRejected == 'function' && onRejected; + reaction.domain = isNode$1 ? process$2.domain : undefined; + this._c.push(reaction); + if (this._a) this._a.push(reaction); + if (this._s) notify(this, false); + return reaction.promise; + }, + // 25.4.5.1 Promise.prototype.catch(onRejected) + 'catch': function (onRejected) { + return this.then(undefined, onRejected); + } + }); + OwnPromiseCapability = function () { + var promise = new Internal(); + this.promise = promise; + this.resolve = _ctx($resolve, promise, 1); + this.reject = _ctx($reject, promise, 1); + }; + _newPromiseCapability.f = newPromiseCapability = function (C) { + return C === $Promise || C === Wrapper + ? new OwnPromiseCapability(C) + : newGenericPromiseCapability(C); + }; + } + + _export(_export.G + _export.W + _export.F * !USE_NATIVE$1, { Promise: $Promise }); + _setToStringTag($Promise, PROMISE); + _setSpecies(PROMISE); + Wrapper = _core[PROMISE]; + + // statics + _export(_export.S + _export.F * !USE_NATIVE$1, PROMISE, { + // 25.4.4.5 Promise.reject(r) + reject: function reject(r) { + var capability = newPromiseCapability(this); + var $$reject = capability.reject; + $$reject(r); + return capability.promise; + } + }); + _export(_export.S + _export.F * ( !USE_NATIVE$1), PROMISE, { + // 25.4.4.6 Promise.resolve(x) + resolve: function resolve(x) { + return _promiseResolve( this, x); + } + }); + _export(_export.S + _export.F * !(USE_NATIVE$1 && _iterDetect(function (iter) { + $Promise.all(iter)['catch'](empty); + })), PROMISE, { + // 25.4.4.1 Promise.all(iterable) + all: function all(iterable) { + var C = this; + var capability = newPromiseCapability(C); + var resolve = capability.resolve; + var reject = capability.reject; + var result = _perform(function () { + var values = []; + var index = 0; + var remaining = 1; + _forOf(iterable, false, function (promise) { + var $index = index++; + var alreadyCalled = false; + values.push(undefined); + remaining++; + C.resolve(promise).then(function (value) { + if (alreadyCalled) return; + alreadyCalled = true; + values[$index] = value; + --remaining || resolve(values); + }, reject); + }); + --remaining || resolve(values); + }); + if (result.e) reject(result.v); + return capability.promise; + }, + // 25.4.4.4 Promise.race(iterable) + race: function race(iterable) { + var C = this; + var capability = newPromiseCapability(C); + var reject = capability.reject; + var result = _perform(function () { + _forOf(iterable, false, function (promise) { + C.resolve(promise).then(capability.resolve, reject); + }); + }); + if (result.e) reject(result.v); + return capability.promise; + } + }); + + var $sort = [].sort; + var test$1 = [1, 2, 3]; + + _export(_export.P + _export.F * (_fails(function () { + // IE8- + test$1.sort(undefined); + }) || !_fails(function () { + // V8 bug + test$1.sort(null); + // Old WebKit + }) || !_strictMethod($sort)), 'Array', { + // 22.1.3.25 Array.prototype.sort(comparefn) + sort: function sort(comparefn) { + return comparefn === undefined + ? $sort.call(_toObject(this)) + : $sort.call(_toObject(this), _aFunction(comparefn)); + } + }); + + var dP$2 = _objectDp.f; + var FProto = Function.prototype; + var nameRE = /^\s*function ([^ (]*)/; + var NAME$1 = 'name'; + + // 19.2.4.2 name + NAME$1 in FProto || _descriptors && dP$2(FProto, NAME$1, { + configurable: true, + get: function () { + try { + return ('' + this).match(nameRE)[1]; + } catch (e) { + return ''; + } + } + }); + + var arraySlice = [].slice; + var factories = {}; + + var construct = function (F, len, args) { + if (!(len in factories)) { + for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']'; + // eslint-disable-next-line no-new-func + factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')'); + } return factories[len](F, args); + }; + + var _bind = Function.bind || function bind(that /* , ...args */) { + var fn = _aFunction(this); + var partArgs = arraySlice.call(arguments, 1); + var bound = function (/* args... */) { + var args = partArgs.concat(arraySlice.call(arguments)); + return this instanceof bound ? construct(fn, args.length, args) : _invoke(fn, args, that); + }; + if (_isObject(fn.prototype)) bound.prototype = fn.prototype; + return bound; + }; + + // 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...) + + + _export(_export.P, 'Function', { bind: _bind }); + + var interopRequireDefault = createCommonjsModule(function (module) { + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + "default": obj + }; + } + + module.exports = _interopRequireDefault; + }); + + unwrapExports(interopRequireDefault); + + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { + arr2[i] = arr[i]; + } + + return arr2; + } + } + + var arrayWithoutHoles = _arrayWithoutHoles; + + function _iterableToArray(iter) { + if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); + } + + var iterableToArray = _iterableToArray; + + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance"); + } + + var nonIterableSpread = _nonIterableSpread; + + function _toConsumableArray(arr) { + return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread(); + } + + var toConsumableArray = _toConsumableArray; + + var keywords = createCommonjsModule(function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports["default"] = void 0; + + var _default = new Map([['transparent', 'rgba(0,0,0,0)'], ['black', '#000000'], ['silver', '#C0C0C0'], ['gray', '#808080'], ['white', '#FFFFFF'], ['maroon', '#800000'], ['red', '#FF0000'], ['purple', '#800080'], ['fuchsia', '#FF00FF'], ['green', '#008000'], ['lime', '#00FF00'], ['olive', '#808000'], ['yellow', '#FFFF00'], ['navy', '#000080'], ['blue', '#0000FF'], ['teal', '#008080'], ['aqua', '#00FFFF'], ['aliceblue', '#f0f8ff'], ['antiquewhite', '#faebd7'], ['aquamarine', '#7fffd4'], ['azure', '#f0ffff'], ['beige', '#f5f5dc'], ['bisque', '#ffe4c4'], ['blanchedalmond', '#ffebcd'], ['blueviolet', '#8a2be2'], ['brown', '#a52a2a'], ['burlywood', '#deb887'], ['cadetblue', '#5f9ea0'], ['chartreuse', '#7fff00'], ['chocolate', '#d2691e'], ['coral', '#ff7f50'], ['cornflowerblue', '#6495ed'], ['cornsilk', '#fff8dc'], ['crimson', '#dc143c'], ['cyan', '#00ffff'], ['darkblue', '#00008b'], ['darkcyan', '#008b8b'], ['darkgoldenrod', '#b8860b'], ['darkgray', '#a9a9a9'], ['darkgreen', '#006400'], ['darkgrey', '#a9a9a9'], ['darkkhaki', '#bdb76b'], ['darkmagenta', '#8b008b'], ['darkolivegreen', '#556b2f'], ['darkorange', '#ff8c00'], ['darkorchid', '#9932cc'], ['darkred', '#8b0000'], ['darksalmon', '#e9967a'], ['darkseagreen', '#8fbc8f'], ['darkslateblue', '#483d8b'], ['darkslategray', '#2f4f4f'], ['darkslategrey', '#2f4f4f'], ['darkturquoise', '#00ced1'], ['darkviolet', '#9400d3'], ['deeppink', '#ff1493'], ['deepskyblue', '#00bfff'], ['dimgray', '#696969'], ['dimgrey', '#696969'], ['dodgerblue', '#1e90ff'], ['firebrick', '#b22222'], ['floralwhite', '#fffaf0'], ['forestgreen', '#228b22'], ['gainsboro', '#dcdcdc'], ['ghostwhite', '#f8f8ff'], ['gold', '#ffd700'], ['goldenrod', '#daa520'], ['greenyellow', '#adff2f'], ['grey', '#808080'], ['honeydew', '#f0fff0'], ['hotpink', '#ff69b4'], ['indianred', '#cd5c5c'], ['indigo', '#4b0082'], ['ivory', '#fffff0'], ['khaki', '#f0e68c'], ['lavender', '#e6e6fa'], ['lavenderblush', '#fff0f5'], ['lawngreen', '#7cfc00'], ['lemonchiffon', '#fffacd'], ['lightblue', '#add8e6'], ['lightcoral', '#f08080'], ['lightcyan', '#e0ffff'], ['lightgoldenrodyellow', '#fafad2'], ['lightgray', '#d3d3d3'], ['lightgreen', '#90ee90'], ['lightgrey', '#d3d3d3'], ['lightpink', '#ffb6c1'], ['lightsalmon', '#ffa07a'], ['lightseagreen', '#20b2aa'], ['lightskyblue', '#87cefa'], ['lightslategray', '#778899'], ['lightslategrey', '#778899'], ['lightsteelblue', '#b0c4de'], ['lightyellow', '#ffffe0'], ['limegreen', '#32cd32'], ['linen', '#faf0e6'], ['magenta', '#ff00ff'], ['mediumaquamarine', '#66cdaa'], ['mediumblue', '#0000cd'], ['mediumorchid', '#ba55d3'], ['mediumpurple', '#9370db'], ['mediumseagreen', '#3cb371'], ['mediumslateblue', '#7b68ee'], ['mediumspringgreen', '#00fa9a'], ['mediumturquoise', '#48d1cc'], ['mediumvioletred', '#c71585'], ['midnightblue', '#191970'], ['mintcream', '#f5fffa'], ['mistyrose', '#ffe4e1'], ['moccasin', '#ffe4b5'], ['navajowhite', '#ffdead'], ['oldlace', '#fdf5e6'], ['olivedrab', '#6b8e23'], ['orange', '#ffa500'], ['orangered', '#ff4500'], ['orchid', '#da70d6'], ['palegoldenrod', '#eee8aa'], ['palegreen', '#98fb98'], ['paleturquoise', '#afeeee'], ['palevioletred', '#db7093'], ['papayawhip', '#ffefd5'], ['peachpuff', '#ffdab9'], ['peru', '#cd853f'], ['pink', '#ffc0cb'], ['plum', '#dda0dd'], ['powderblue', '#b0e0e6'], ['rosybrown', '#bc8f8f'], ['royalblue', '#4169e1'], ['saddlebrown', '#8b4513'], ['salmon', '#fa8072'], ['sandybrown', '#f4a460'], ['seagreen', '#2e8b57'], ['seashell', '#fff5ee'], ['sienna', '#a0522d'], ['skyblue', '#87ceeb'], ['slateblue', '#6a5acd'], ['slategray', '#708090'], ['slategrey', '#708090'], ['snow', '#fffafa'], ['springgreen', '#00ff7f'], ['steelblue', '#4682b4'], ['tan', '#d2b48c'], ['thistle', '#d8bfd8'], ['tomato', '#ff6347'], ['turquoise', '#40e0d0'], ['violet', '#ee82ee'], ['wheat', '#f5deb3'], ['whitesmoke', '#f5f5f5'], ['yellowgreen', '#9acd32']]); + + exports["default"] = _default; + }); + + unwrapExports(keywords); + + var lib = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getRgbValue = getRgbValue; + exports.getRgbaValue = getRgbaValue; + exports.getOpacity = getOpacity; + exports.toRgb = toRgb; + exports.toHex = toHex; + exports.getColorFromRgbValue = getColorFromRgbValue; + exports.darken = darken; + exports.lighten = lighten; + exports.fade = fade; + exports["default"] = void 0; + + var _toConsumableArray2 = interopRequireDefault(toConsumableArray); + + var _keywords = interopRequireDefault(keywords); + + var hexReg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; + var rgbReg = /^(rgb|rgba|RGB|RGBA)/; + var rgbaReg = /^(rgba|RGBA)/; + /** + * @description Color validator + * @param {String} color Hex|Rgb|Rgba color or color keyword + * @return {String|Boolean} Valid color Or false + */ + + function validator(color) { + var isHex = hexReg.test(color); + var isRgb = rgbReg.test(color); + if (isHex || isRgb) return color; + color = getColorByKeyword(color); + + if (!color) { + console.error('Color: Invalid color!'); + return false; + } + + return color; + } + /** + * @description Get color by keyword + * @param {String} keyword Color keyword like red, green and etc. + * @return {String|Boolean} Hex or rgba color (Invalid keyword will return false) + */ + + + function getColorByKeyword(keyword) { + if (!keyword) { + console.error('getColorByKeywords: Missing parameters!'); + return false; + } + + if (!_keywords["default"].has(keyword)) return false; + return _keywords["default"].get(keyword); + } + /** + * @description Get the Rgb value of the color + * @param {String} color Hex|Rgb|Rgba color or color keyword + * @return {Array|Boolean} Rgb value of the color (Invalid input will return false) + */ + + + function getRgbValue(color) { + if (!color) { + console.error('getRgbValue: Missing parameters!'); + return false; + } + + color = validator(color); + if (!color) return false; + var isHex = hexReg.test(color); + var isRgb = rgbReg.test(color); + var lowerColor = color.toLowerCase(); + if (isHex) return getRgbValueFromHex(lowerColor); + if (isRgb) return getRgbValueFromRgb(lowerColor); + } + /** + * @description Get the rgb value of the hex color + * @param {String} color Hex color + * @return {Array} Rgb value of the color + */ + + + function getRgbValueFromHex(color) { + color = color.replace('#', ''); + if (color.length === 3) color = Array.from(color).map(function (hexNum) { + return hexNum + hexNum; + }).join(''); + color = color.split(''); + return new Array(3).fill(0).map(function (t, i) { + return parseInt("0x".concat(color[i * 2]).concat(color[i * 2 + 1])); + }); + } + /** + * @description Get the rgb value of the rgb/rgba color + * @param {String} color Hex color + * @return {Array} Rgb value of the color + */ + + + function getRgbValueFromRgb(color) { + return color.replace(/rgb\(|rgba\(|\)/g, '').split(',').slice(0, 3).map(function (n) { + return parseInt(n); + }); + } + /** + * @description Get the Rgba value of the color + * @param {String} color Hex|Rgb|Rgba color or color keyword + * @return {Array|Boolean} Rgba value of the color (Invalid input will return false) + */ + + + function getRgbaValue(color) { + if (!color) { + console.error('getRgbaValue: Missing parameters!'); + return false; + } + + var colorValue = getRgbValue(color); + if (!colorValue) return false; + colorValue.push(getOpacity(color)); + return colorValue; + } + /** + * @description Get the opacity of color + * @param {String} color Hex|Rgb|Rgba color or color keyword + * @return {Number|Boolean} Color opacity (Invalid input will return false) + */ + + + function getOpacity(color) { + if (!color) { + console.error('getOpacity: Missing parameters!'); + return false; + } + + color = validator(color); + if (!color) return false; + var isRgba = rgbaReg.test(color); + if (!isRgba) return 1; + color = color.toLowerCase(); + return Number(color.split(',').slice(-1)[0].replace(/[)|\s]/g, '')); + } + /** + * @description Convert color to Rgb|Rgba color + * @param {String} color Hex|Rgb|Rgba color or color keyword + * @param {Number} opacity The opacity of color + * @return {String|Boolean} Rgb|Rgba color (Invalid input will return false) + */ + + + function toRgb(color, opacity) { + if (!color) { + console.error('toRgb: Missing parameters!'); + return false; + } + + var rgbValue = getRgbValue(color); + if (!rgbValue) return false; + var addOpacity = typeof opacity === 'number'; + if (addOpacity) return 'rgba(' + rgbValue.join(',') + ",".concat(opacity, ")"); + return 'rgb(' + rgbValue.join(',') + ')'; + } + /** + * @description Convert color to Hex color + * @param {String} color Hex|Rgb|Rgba color or color keyword + * @return {String|Boolean} Hex color (Invalid input will return false) + */ + + + function toHex(color) { + if (!color) { + console.error('toHex: Missing parameters!'); + return false; + } + + if (hexReg.test(color)) return color; + color = getRgbValue(color); + if (!color) return false; + return '#' + color.map(function (n) { + return Number(n).toString(16); + }).map(function (n) { + return n === '0' ? '00' : n; + }).join(''); + } + /** + * @description Get Color from Rgb|Rgba value + * @param {Array} value Rgb|Rgba color value + * @return {String|Boolean} Rgb|Rgba color (Invalid input will return false) + */ + + + function getColorFromRgbValue(value) { + if (!value) { + console.error('getColorFromRgbValue: Missing parameters!'); + return false; + } + + var valueLength = value.length; + + if (valueLength !== 3 && valueLength !== 4) { + console.error('getColorFromRgbValue: Value is illegal!'); + return false; + } + + var color = valueLength === 3 ? 'rgb(' : 'rgba('; + color += value.join(',') + ')'; + return color; + } + /** + * @description Deepen color + * @param {String} color Hex|Rgb|Rgba color or color keyword + * @return {Number} Percent of Deepen (1-100) + * @return {String|Boolean} Rgba color (Invalid input will return false) + */ + + + function darken(color) { + var percent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + + if (!color) { + console.error('darken: Missing parameters!'); + return false; + } + + var rgbaValue = getRgbaValue(color); + if (!rgbaValue) return false; + rgbaValue = rgbaValue.map(function (v, i) { + return i === 3 ? v : v - Math.ceil(2.55 * percent); + }).map(function (v) { + return v < 0 ? 0 : v; + }); + return getColorFromRgbValue(rgbaValue); + } + /** + * @description Brighten color + * @param {String} color Hex|Rgb|Rgba color or color keyword + * @return {Number} Percent of brighten (1-100) + * @return {String|Boolean} Rgba color (Invalid input will return false) + */ + + + function lighten(color) { + var percent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + + if (!color) { + console.error('lighten: Missing parameters!'); + return false; + } + + var rgbaValue = getRgbaValue(color); + if (!rgbaValue) return false; + rgbaValue = rgbaValue.map(function (v, i) { + return i === 3 ? v : v + Math.ceil(2.55 * percent); + }).map(function (v) { + return v > 255 ? 255 : v; + }); + return getColorFromRgbValue(rgbaValue); + } + /** + * @description Adjust color opacity + * @param {String} color Hex|Rgb|Rgba color or color keyword + * @param {Number} Percent of opacity + * @return {String|Boolean} Rgba color (Invalid input will return false) + */ + + + function fade(color) { + var percent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100; + + if (!color) { + console.error('fade: Missing parameters!'); + return false; + } + + var rgbValue = getRgbValue(color); + if (!rgbValue) return false; + var rgbaValue = [].concat((0, _toConsumableArray2["default"])(rgbValue), [percent / 100]); + return getColorFromRgbValue(rgbaValue); + } + + var _default = { + fade: fade, + toHex: toHex, + toRgb: toRgb, + darken: darken, + lighten: lighten, + getOpacity: getOpacity, + getRgbValue: getRgbValue, + getRgbaValue: getRgbaValue, + getColorFromRgbValue: getColorFromRgbValue + }; + exports["default"] = _default; + }); + + unwrapExports(lib); + var lib_1 = lib.getRgbValue; + var lib_2 = lib.getRgbaValue; + var lib_3 = lib.getOpacity; + var lib_4 = lib.toRgb; + var lib_5 = lib.toHex; + var lib_6 = lib.getColorFromRgbValue; + var lib_7 = lib.darken; + var lib_8 = lib.lighten; + var lib_9 = lib.fade; + + function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; + } + + var arrayWithHoles = _arrayWithHoles; + + function _iterableToArrayLimit(arr, i) { + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"] != null) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; + } + + var iterableToArrayLimit = _iterableToArrayLimit; + + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance"); + } + + var nonIterableRest = _nonIterableRest; + + function _slicedToArray(arr, i) { + return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest(); + } + + var slicedToArray = _slicedToArray; + + var bezierCurveToPolyline_1 = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.bezierCurveToPolyline = bezierCurveToPolyline; + exports.getBezierCurveLength = getBezierCurveLength; + exports["default"] = void 0; + + var _slicedToArray2 = interopRequireDefault(slicedToArray); + + var _toConsumableArray2 = interopRequireDefault(toConsumableArray); + + var sqrt = Math.sqrt, + pow = Math.pow, + ceil = Math.ceil, + abs = Math.abs; // Initialize the number of points per curve + + var defaultSegmentPointsNum = 50; + /** + * @example data structure of bezierCurve + * bezierCurve = [ + * // Starting point of the curve + * [10, 10], + * // BezierCurve segment data (controlPoint1, controlPoint2, endPoint) + * [ + * [20, 20], [40, 20], [50, 10] + * ], + * ... + * ] + */ + + /** + * @description Abstract the curve as a polyline consisting of N points + * @param {Array} bezierCurve bezierCurve data + * @param {Number} precision calculation accuracy. Recommended for 1-20. Default = 5 + * @return {Object} Calculation results and related data + * @return {Array} Option.segmentPoints Point data that constitutes a polyline after calculation + * @return {Number} Option.cycles Number of iterations + * @return {Number} Option.rounds The number of recursions for the last iteration + */ + + function abstractBezierCurveToPolyline(bezierCurve) { + var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5; + var segmentsNum = bezierCurve.length - 1; + var startPoint = bezierCurve[0]; + var endPoint = bezierCurve[segmentsNum][2]; + var segments = bezierCurve.slice(1); + var getSegmentTPointFuns = segments.map(function (seg, i) { + var beginPoint = i === 0 ? startPoint : segments[i - 1][2]; + return createGetBezierCurveTPointFun.apply(void 0, [beginPoint].concat((0, _toConsumableArray2["default"])(seg))); + }); // Initialize the curve to a polyline + + var segmentPointsNum = new Array(segmentsNum).fill(defaultSegmentPointsNum); + var segmentPoints = getSegmentPointsByNum(getSegmentTPointFuns, segmentPointsNum); // Calculate uniformly distributed points by iteratively + + var result = calcUniformPointsByIteration(segmentPoints, getSegmentTPointFuns, segments, precision); + result.segmentPoints.push(endPoint); + return result; + } + /** + * @description Generate a method for obtaining corresponding point by t according to curve data + * @param {Array} beginPoint BezierCurve begin point. [x, y] + * @param {Array} controlPoint1 BezierCurve controlPoint1. [x, y] + * @param {Array} controlPoint2 BezierCurve controlPoint2. [x, y] + * @param {Array} endPoint BezierCurve end point. [x, y] + * @return {Function} Expected function + */ + + + function createGetBezierCurveTPointFun(beginPoint, controlPoint1, controlPoint2, endPoint) { + return function (t) { + var tSubed1 = 1 - t; + var tSubed1Pow3 = pow(tSubed1, 3); + var tSubed1Pow2 = pow(tSubed1, 2); + var tPow3 = pow(t, 3); + var tPow2 = pow(t, 2); + return [beginPoint[0] * tSubed1Pow3 + 3 * controlPoint1[0] * t * tSubed1Pow2 + 3 * controlPoint2[0] * tPow2 * tSubed1 + endPoint[0] * tPow3, beginPoint[1] * tSubed1Pow3 + 3 * controlPoint1[1] * t * tSubed1Pow2 + 3 * controlPoint2[1] * tPow2 * tSubed1 + endPoint[1] * tPow3]; + }; + } + /** + * @description Get the distance between two points + * @param {Array} point1 BezierCurve begin point. [x, y] + * @param {Array} point2 BezierCurve controlPoint1. [x, y] + * @return {Number} Expected distance + */ + + + function getTwoPointDistance(_ref, _ref2) { + var _ref3 = (0, _slicedToArray2["default"])(_ref, 2), + ax = _ref3[0], + ay = _ref3[1]; + + var _ref4 = (0, _slicedToArray2["default"])(_ref2, 2), + bx = _ref4[0], + by = _ref4[1]; + + return sqrt(pow(ax - bx, 2) + pow(ay - by, 2)); + } + /** + * @description Get the sum of the array of numbers + * @param {Array} nums An array of numbers + * @return {Number} Expected sum + */ + + + function getNumsSum(nums) { + return nums.reduce(function (sum, num) { + return sum + num; + }, 0); + } + /** + * @description Get the distance of multiple sets of points + * @param {Array} segmentPoints Multiple sets of point data + * @return {Array} Distance of multiple sets of point data + */ + + + function getSegmentPointsDistance(segmentPoints) { + return segmentPoints.map(function (points, i) { + return new Array(points.length - 1).fill(0).map(function (temp, j) { + return getTwoPointDistance(points[j], points[j + 1]); + }); + }); + } + /** + * @description Get the distance of multiple sets of points + * @param {Array} segmentPoints Multiple sets of point data + * @return {Array} Distance of multiple sets of point data + */ + + + function getSegmentPointsByNum(getSegmentTPointFuns, segmentPointsNum) { + return getSegmentTPointFuns.map(function (getSegmentTPointFun, i) { + var tGap = 1 / segmentPointsNum[i]; + return new Array(segmentPointsNum[i]).fill('').map(function (foo, j) { + return getSegmentTPointFun(j * tGap); + }); + }); + } + /** + * @description Get the sum of deviations between line segment and the average length + * @param {Array} segmentPointsDistance Segment length of polyline + * @param {Number} avgLength Average length of the line segment + * @return {Number} Deviations + */ + + + function getAllDeviations(segmentPointsDistance, avgLength) { + return segmentPointsDistance.map(function (seg) { + return seg.map(function (s) { + return abs(s - avgLength); + }); + }).map(function (seg) { + return getNumsSum(seg); + }).reduce(function (total, v) { + return total + v; + }, 0); + } + /** + * @description Calculate uniformly distributed points by iteratively + * @param {Array} segmentPoints Multiple setd of points that make up a polyline + * @param {Array} getSegmentTPointFuns Functions of get a point on the curve with t + * @param {Array} segments BezierCurve data + * @param {Number} precision Calculation accuracy + * @return {Object} Calculation results and related data + * @return {Array} Option.segmentPoints Point data that constitutes a polyline after calculation + * @return {Number} Option.cycles Number of iterations + * @return {Number} Option.rounds The number of recursions for the last iteration + */ + + + function calcUniformPointsByIteration(segmentPoints, getSegmentTPointFuns, segments, precision) { + // The number of loops for the current iteration + var rounds = 4; // Number of iterations + + var cycles = 1; + + var _loop = function _loop() { + // Recalculate the number of points per curve based on the last iteration data + var totalPointsNum = segmentPoints.reduce(function (total, seg) { + return total + seg.length; + }, 0); // Add last points of segment to calc exact segment length + + segmentPoints.forEach(function (seg, i) { + return seg.push(segments[i][2]); + }); + var segmentPointsDistance = getSegmentPointsDistance(segmentPoints); + var lineSegmentNum = segmentPointsDistance.reduce(function (total, seg) { + return total + seg.length; + }, 0); + var segmentlength = segmentPointsDistance.map(function (seg) { + return getNumsSum(seg); + }); + var totalLength = getNumsSum(segmentlength); + var avgLength = totalLength / lineSegmentNum; // Check if precision is reached + + var allDeviations = getAllDeviations(segmentPointsDistance, avgLength); + if (allDeviations <= precision) return "break"; + totalPointsNum = ceil(avgLength / precision * totalPointsNum * 1.1); + var segmentPointsNum = segmentlength.map(function (length) { + return ceil(length / totalLength * totalPointsNum); + }); // Calculate the points after redistribution + + segmentPoints = getSegmentPointsByNum(getSegmentTPointFuns, segmentPointsNum); + totalPointsNum = segmentPoints.reduce(function (total, seg) { + return total + seg.length; + }, 0); + var segmentPointsForLength = JSON.parse(JSON.stringify(segmentPoints)); + segmentPointsForLength.forEach(function (seg, i) { + return seg.push(segments[i][2]); + }); + segmentPointsDistance = getSegmentPointsDistance(segmentPointsForLength); + lineSegmentNum = segmentPointsDistance.reduce(function (total, seg) { + return total + seg.length; + }, 0); + segmentlength = segmentPointsDistance.map(function (seg) { + return getNumsSum(seg); + }); + totalLength = getNumsSum(segmentlength); + avgLength = totalLength / lineSegmentNum; + var stepSize = 1 / totalPointsNum / 10; // Recursively for each segment of the polyline + + getSegmentTPointFuns.forEach(function (getSegmentTPointFun, i) { + var currentSegmentPointsNum = segmentPointsNum[i]; + var t = new Array(currentSegmentPointsNum).fill('').map(function (foo, j) { + return j / segmentPointsNum[i]; + }); // Repeated recursive offset + + for (var r = 0; r < rounds; r++) { + var distance = getSegmentPointsDistance([segmentPoints[i]])[0]; + var deviations = distance.map(function (d) { + return d - avgLength; + }); + var offset = 0; + + for (var j = 0; j < currentSegmentPointsNum; j++) { + if (j === 0) return; + offset += deviations[j - 1]; + t[j] -= stepSize * offset; + if (t[j] > 1) t[j] = 1; + if (t[j] < 0) t[j] = 0; + segmentPoints[i][j] = getSegmentTPointFun(t[j]); + } + } + }); + rounds *= 4; + cycles++; + }; + + do { + var _ret = _loop(); + + if (_ret === "break") break; + } while (rounds <= 1025); + + segmentPoints = segmentPoints.reduce(function (all, seg) { + return all.concat(seg); + }, []); + return { + segmentPoints: segmentPoints, + cycles: cycles, + rounds: rounds + }; + } + /** + * @description Get the polyline corresponding to the Bezier curve + * @param {Array} bezierCurve BezierCurve data + * @param {Number} precision Calculation accuracy. Recommended for 1-20. Default = 5 + * @return {Array|Boolean} Point data that constitutes a polyline after calculation (Invalid input will return false) + */ + + + function bezierCurveToPolyline(bezierCurve) { + var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5; + + if (!bezierCurve) { + console.error('bezierCurveToPolyline: Missing parameters!'); + return false; + } + + if (!(bezierCurve instanceof Array)) { + console.error('bezierCurveToPolyline: Parameter bezierCurve must be an array!'); + return false; + } + + if (typeof precision !== 'number') { + console.error('bezierCurveToPolyline: Parameter precision must be a number!'); + return false; + } + + var _abstractBezierCurveT = abstractBezierCurveToPolyline(bezierCurve, precision), + segmentPoints = _abstractBezierCurveT.segmentPoints; + + return segmentPoints; + } + /** + * @description Get the bezier curve length + * @param {Array} bezierCurve bezierCurve data + * @param {Number} precision calculation accuracy. Recommended for 5-10. Default = 5 + * @return {Number|Boolean} BezierCurve length (Invalid input will return false) + */ + + + function getBezierCurveLength(bezierCurve) { + var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5; + + if (!bezierCurve) { + console.error('getBezierCurveLength: Missing parameters!'); + return false; + } + + if (!(bezierCurve instanceof Array)) { + console.error('getBezierCurveLength: Parameter bezierCurve must be an array!'); + return false; + } + + if (typeof precision !== 'number') { + console.error('getBezierCurveLength: Parameter precision must be a number!'); + return false; + } + + var _abstractBezierCurveT2 = abstractBezierCurveToPolyline(bezierCurve, precision), + segmentPoints = _abstractBezierCurveT2.segmentPoints; // Calculate the total length of the points that make up the polyline + + + var pointsDistance = getSegmentPointsDistance([segmentPoints])[0]; + var length = getNumsSum(pointsDistance); + return length; + } + + var _default = bezierCurveToPolyline; + exports["default"] = _default; + }); + + unwrapExports(bezierCurveToPolyline_1); + var bezierCurveToPolyline_2 = bezierCurveToPolyline_1.bezierCurveToPolyline; + var bezierCurveToPolyline_3 = bezierCurveToPolyline_1.getBezierCurveLength; + + var polylineToBezierCurve_1 = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports["default"] = void 0; + + var _slicedToArray2 = interopRequireDefault(slicedToArray); + + var _toConsumableArray2 = interopRequireDefault(toConsumableArray); + + /** + * @description Abstract the polyline formed by N points into a set of bezier curve + * @param {Array} polyline A set of points that make up a polyline + * @param {Boolean} close Closed curve + * @param {Number} offsetA Smoothness + * @param {Number} offsetB Smoothness + * @return {Array|Boolean} A set of bezier curve (Invalid input will return false) + */ + function polylineToBezierCurve(polyline) { + var close = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var offsetA = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0.25; + var offsetB = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0.25; + + if (!(polyline instanceof Array)) { + console.error('polylineToBezierCurve: Parameter polyline must be an array!'); + return false; + } + + if (polyline.length <= 2) { + console.error('polylineToBezierCurve: Converting to a curve requires at least 3 points!'); + return false; + } + + var startPoint = polyline[0]; + var bezierCurveLineNum = polyline.length - 1; + var bezierCurvePoints = new Array(bezierCurveLineNum).fill(0).map(function (foo, i) { + return [].concat((0, _toConsumableArray2["default"])(getBezierCurveLineControlPoints(polyline, i, close, offsetA, offsetB)), [polyline[i + 1]]); + }); + if (close) closeBezierCurve(bezierCurvePoints, startPoint); + bezierCurvePoints.unshift(polyline[0]); + return bezierCurvePoints; + } + /** + * @description Get the control points of the Bezier curve + * @param {Array} polyline A set of points that make up a polyline + * @param {Number} index The index of which get controls points's point in polyline + * @param {Boolean} close Closed curve + * @param {Number} offsetA Smoothness + * @param {Number} offsetB Smoothness + * @return {Array} Control points + */ + + + function getBezierCurveLineControlPoints(polyline, index) { + var close = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + var offsetA = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0.25; + var offsetB = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0.25; + var pointNum = polyline.length; + if (pointNum < 3 || index >= pointNum) return; + var beforePointIndex = index - 1; + if (beforePointIndex < 0) beforePointIndex = close ? pointNum + beforePointIndex : 0; + var afterPointIndex = index + 1; + if (afterPointIndex >= pointNum) afterPointIndex = close ? afterPointIndex - pointNum : pointNum - 1; + var afterNextPointIndex = index + 2; + if (afterNextPointIndex >= pointNum) afterNextPointIndex = close ? afterNextPointIndex - pointNum : pointNum - 1; + var pointBefore = polyline[beforePointIndex]; + var pointMiddle = polyline[index]; + var pointAfter = polyline[afterPointIndex]; + var pointAfterNext = polyline[afterNextPointIndex]; + return [[pointMiddle[0] + offsetA * (pointAfter[0] - pointBefore[0]), pointMiddle[1] + offsetA * (pointAfter[1] - pointBefore[1])], [pointAfter[0] - offsetB * (pointAfterNext[0] - pointMiddle[0]), pointAfter[1] - offsetB * (pointAfterNext[1] - pointMiddle[1])]]; + } + /** + * @description Get the last curve of the closure + * @param {Array} bezierCurve A set of sub-curve + * @param {Array} startPoint Start point + * @return {Array} The last curve for closure + */ + + + function closeBezierCurve(bezierCurve, startPoint) { + var firstSubCurve = bezierCurve[0]; + var lastSubCurve = bezierCurve.slice(-1)[0]; + bezierCurve.push([getSymmetryPoint(lastSubCurve[1], lastSubCurve[2]), getSymmetryPoint(firstSubCurve[0], startPoint), startPoint]); + return bezierCurve; + } + /** + * @description Get the symmetry point + * @param {Array} point Symmetric point + * @param {Array} centerPoint Symmetric center + * @return {Array} Symmetric point + */ + + + function getSymmetryPoint(point, centerPoint) { + var _point = (0, _slicedToArray2["default"])(point, 2), + px = _point[0], + py = _point[1]; + + var _centerPoint = (0, _slicedToArray2["default"])(centerPoint, 2), + cx = _centerPoint[0], + cy = _centerPoint[1]; + + var minusX = cx - px; + var minusY = cy - py; + return [cx + minusX, cy + minusY]; + } + + var _default = polylineToBezierCurve; + exports["default"] = _default; + }); + + unwrapExports(polylineToBezierCurve_1); + + var lib$1 = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "bezierCurveToPolyline", { + enumerable: true, + get: function get() { + return bezierCurveToPolyline_1.bezierCurveToPolyline; + } + }); + Object.defineProperty(exports, "getBezierCurveLength", { + enumerable: true, + get: function get() { + return bezierCurveToPolyline_1.getBezierCurveLength; + } + }); + Object.defineProperty(exports, "polylineToBezierCurve", { + enumerable: true, + get: function get() { + return _polylineToBezierCurve["default"]; + } + }); + exports["default"] = void 0; + + + + var _polylineToBezierCurve = interopRequireDefault(polylineToBezierCurve_1); + + var _default = { + bezierCurveToPolyline: bezierCurveToPolyline_1.bezierCurveToPolyline, + getBezierCurveLength: bezierCurveToPolyline_1.getBezierCurveLength, + polylineToBezierCurve: _polylineToBezierCurve["default"] + }; + exports["default"] = _default; + }); + + unwrapExports(lib$1); + + var _validateCollection = function (it, TYPE) { + if (!_isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!'); + return it; + }; + + var dP$3 = _objectDp.f; + + + + + + + + + + var fastKey = _meta.fastKey; + + var SIZE = _descriptors ? '_s' : 'size'; + + var getEntry = function (that, key) { + // fast case + var index = fastKey(key); + var entry; + if (index !== 'F') return that._i[index]; + // frozen object case + for (entry = that._f; entry; entry = entry.n) { + if (entry.k == key) return entry; + } + }; + + var _collectionStrong = { + getConstructor: function (wrapper, NAME, IS_MAP, ADDER) { + var C = wrapper(function (that, iterable) { + _anInstance(that, C, NAME, '_i'); + that._t = NAME; // collection type + that._i = _objectCreate(null); // index + that._f = undefined; // first entry + that._l = undefined; // last entry + that[SIZE] = 0; // size + if (iterable != undefined) _forOf(iterable, IS_MAP, that[ADDER], that); + }); + _redefineAll(C.prototype, { + // 23.1.3.1 Map.prototype.clear() + // 23.2.3.2 Set.prototype.clear() + clear: function clear() { + for (var that = _validateCollection(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) { + entry.r = true; + if (entry.p) entry.p = entry.p.n = undefined; + delete data[entry.i]; + } + that._f = that._l = undefined; + that[SIZE] = 0; + }, + // 23.1.3.3 Map.prototype.delete(key) + // 23.2.3.4 Set.prototype.delete(value) + 'delete': function (key) { + var that = _validateCollection(this, NAME); + var entry = getEntry(that, key); + if (entry) { + var next = entry.n; + var prev = entry.p; + delete that._i[entry.i]; + entry.r = true; + if (prev) prev.n = next; + if (next) next.p = prev; + if (that._f == entry) that._f = next; + if (that._l == entry) that._l = prev; + that[SIZE]--; + } return !!entry; + }, + // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined) + // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined) + forEach: function forEach(callbackfn /* , that = undefined */) { + _validateCollection(this, NAME); + var f = _ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + var entry; + while (entry = entry ? entry.n : this._f) { + f(entry.v, entry.k, this); + // revert to the last existing entry + while (entry && entry.r) entry = entry.p; + } + }, + // 23.1.3.7 Map.prototype.has(key) + // 23.2.3.7 Set.prototype.has(value) + has: function has(key) { + return !!getEntry(_validateCollection(this, NAME), key); + } + }); + if (_descriptors) dP$3(C.prototype, 'size', { + get: function () { + return _validateCollection(this, NAME)[SIZE]; + } + }); + return C; + }, + def: function (that, key, value) { + var entry = getEntry(that, key); + var prev, index; + // change existing entry + if (entry) { + entry.v = value; + // create new entry + } else { + that._l = entry = { + i: index = fastKey(key, true), // <- index + k: key, // <- key + v: value, // <- value + p: prev = that._l, // <- previous entry + n: undefined, // <- next entry + r: false // <- removed + }; + if (!that._f) that._f = entry; + if (prev) prev.n = entry; + that[SIZE]++; + // add to index + if (index !== 'F') that._i[index] = entry; + } return that; + }, + getEntry: getEntry, + setStrong: function (C, NAME, IS_MAP) { + // add .keys, .values, .entries, [@@iterator] + // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11 + _iterDefine(C, NAME, function (iterated, kind) { + this._t = _validateCollection(iterated, NAME); // target + this._k = kind; // kind + this._l = undefined; // previous + }, function () { + var that = this; + var kind = that._k; + var entry = that._l; + // revert to the last existing entry + while (entry && entry.r) entry = entry.p; + // get next entry + if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) { + // or finish the iteration + that._t = undefined; + return _iterStep(1); + } + // return step by kind + if (kind == 'keys') return _iterStep(0, entry.k); + if (kind == 'values') return _iterStep(0, entry.v); + return _iterStep(0, [entry.k, entry.v]); + }, IS_MAP ? 'entries' : 'values', !IS_MAP, true); + + // add [@@species], 23.1.2.2, 23.2.2.2 + _setSpecies(NAME); + } + }; + + // Works with __proto__ only. Old v8 can't work with null proto objects. + /* eslint-disable no-proto */ + + + var check = function (O, proto) { + _anObject(O); + if (!_isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!"); + }; + var _setProto = { + set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line + function (test, buggy, set) { + try { + set = _ctx(Function.call, _objectGopd.f(Object.prototype, '__proto__').set, 2); + set(test, []); + buggy = !(test instanceof Array); + } catch (e) { buggy = true; } + return function setPrototypeOf(O, proto) { + check(O, proto); + if (buggy) O.__proto__ = proto; + else set(O, proto); + return O; + }; + }({}, false) : undefined), + check: check + }; + + var setPrototypeOf = _setProto.set; + var _inheritIfRequired = function (that, target, C) { + var S = target.constructor; + var P; + if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && _isObject(P) && setPrototypeOf) { + setPrototypeOf(that, P); + } return that; + }; + + var _collection = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) { + var Base = _global[NAME]; + var C = Base; + var ADDER = IS_MAP ? 'set' : 'add'; + var proto = C && C.prototype; + var O = {}; + var fixMethod = function (KEY) { + var fn = proto[KEY]; + _redefine(proto, KEY, + KEY == 'delete' ? function (a) { + return IS_WEAK && !_isObject(a) ? false : fn.call(this, a === 0 ? 0 : a); + } : KEY == 'has' ? function has(a) { + return IS_WEAK && !_isObject(a) ? false : fn.call(this, a === 0 ? 0 : a); + } : KEY == 'get' ? function get(a) { + return IS_WEAK && !_isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a); + } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; } + : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; } + ); + }; + if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !_fails(function () { + new C().entries().next(); + }))) { + // create collection constructor + C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER); + _redefineAll(C.prototype, methods); + _meta.NEED = true; + } else { + var instance = new C(); + // early implementations not supports chaining + var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance; + // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false + var THROWS_ON_PRIMITIVES = _fails(function () { instance.has(1); }); + // most early implementations doesn't supports iterables, most modern - not close it correctly + var ACCEPT_ITERABLES = _iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new + // for early implementations -0 and +0 not the same + var BUGGY_ZERO = !IS_WEAK && _fails(function () { + // V8 ~ Chromium 42- fails only with 5+ elements + var $instance = new C(); + var index = 5; + while (index--) $instance[ADDER](index, index); + return !$instance.has(-0); + }); + if (!ACCEPT_ITERABLES) { + C = wrapper(function (target, iterable) { + _anInstance(target, C, NAME); + var that = _inheritIfRequired(new Base(), target, C); + if (iterable != undefined) _forOf(iterable, IS_MAP, that[ADDER], that); + return that; + }); + C.prototype = proto; + proto.constructor = C; + } + if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) { + fixMethod('delete'); + fixMethod('has'); + IS_MAP && fixMethod('get'); + } + if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER); + // weak collections should not contains .clear method + if (IS_WEAK && proto.clear) delete proto.clear; + } + + _setToStringTag(C, NAME); + + O[NAME] = C; + _export(_export.G + _export.W + _export.F * (C != Base), O); + + if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP); + + return C; + }; + + var MAP = 'Map'; + + // 23.1 Map Objects + var es6_map = _collection(MAP, function (get) { + return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); }; + }, { + // 23.1.3.6 Map.prototype.get(key) + get: function get(key) { + var entry = _collectionStrong.getEntry(_validateCollection(this, MAP), key); + return entry && entry.v; + }, + // 23.1.3.9 Map.prototype.set(key, value) + set: function set(key, value) { + return _collectionStrong.def(_validateCollection(this, MAP), key === 0 ? 0 : key, value); + } + }, _collectionStrong, true); + + var max$1 = Math.max; + var min$2 = Math.min; + var floor$1 = Math.floor; + var SUBSTITUTION_SYMBOLS = /\$([$&`']|\d\d?|<[^>]*>)/g; + var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&`']|\d\d?)/g; + + var maybeToString = function (it) { + return it === undefined ? it : String(it); + }; + + // @@replace logic + _fixReWks('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) { + return [ + // `String.prototype.replace` method + // https://tc39.github.io/ecma262/#sec-string.prototype.replace + function replace(searchValue, replaceValue) { + var O = defined(this); + var fn = searchValue == undefined ? undefined : searchValue[REPLACE]; + return fn !== undefined + ? fn.call(searchValue, O, replaceValue) + : $replace.call(String(O), searchValue, replaceValue); + }, + // `RegExp.prototype[@@replace]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace + function (regexp, replaceValue) { + var res = maybeCallNative($replace, regexp, this, replaceValue); + if (res.done) return res.value; + + var rx = _anObject(regexp); + var S = String(this); + var functionalReplace = typeof replaceValue === 'function'; + if (!functionalReplace) replaceValue = String(replaceValue); + var global = rx.global; + if (global) { + var fullUnicode = rx.unicode; + rx.lastIndex = 0; + } + var results = []; + while (true) { + var result = _regexpExecAbstract(rx, S); + if (result === null) break; + results.push(result); + if (!global) break; + var matchStr = String(result[0]); + if (matchStr === '') rx.lastIndex = _advanceStringIndex(S, _toLength(rx.lastIndex), fullUnicode); + } + var accumulatedResult = ''; + var nextSourcePosition = 0; + for (var i = 0; i < results.length; i++) { + result = results[i]; + var matched = String(result[0]); + var position = max$1(min$2(_toInteger(result.index), S.length), 0); + var captures = []; + // NOTE: This is equivalent to + // captures = result.slice(1).map(maybeToString) + // but for some reason `nativeSlice.call(result, 1, result.length)` (called in + // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and + // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. + for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j])); + var namedCaptures = result.groups; + if (functionalReplace) { + var replacerArgs = [matched].concat(captures, position, S); + if (namedCaptures !== undefined) replacerArgs.push(namedCaptures); + var replacement = String(replaceValue.apply(undefined, replacerArgs)); + } else { + replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); + } + if (position >= nextSourcePosition) { + accumulatedResult += S.slice(nextSourcePosition, position) + replacement; + nextSourcePosition = position + matched.length; + } + } + return accumulatedResult + S.slice(nextSourcePosition); + } + ]; + + // https://tc39.github.io/ecma262/#sec-getsubstitution + function getSubstitution(matched, str, position, captures, namedCaptures, replacement) { + var tailPos = position + matched.length; + var m = captures.length; + var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; + if (namedCaptures !== undefined) { + namedCaptures = _toObject(namedCaptures); + symbols = SUBSTITUTION_SYMBOLS; + } + return $replace.call(replacement, symbols, function (match, ch) { + var capture; + switch (ch.charAt(0)) { + case '$': return '$'; + case '&': return matched; + case '`': return str.slice(0, position); + case "'": return str.slice(tailPos); + case '<': + capture = namedCaptures[ch.slice(1, -1)]; + break; + default: // \d\d? + var n = +ch; + if (n === 0) return match; + if (n > m) { + var f = floor$1(n / 10); + if (f === 0) return match; + if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1); + return match; + } + capture = captures[n - 1]; + } + return capture === undefined ? '' : capture; + }); + } + }); + + var canvas = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.drawPolylinePath = drawPolylinePath; + exports.drawBezierCurvePath = drawBezierCurvePath; + exports["default"] = void 0; + + + + + + + + + + + + + + + + + + + + + + function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } + + function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } + + function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } + + function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } + + /** + * @description Draw a polyline path + * @param {Object} ctx Canvas 2d context + * @param {Array} points The points that makes up a polyline + * @param {Boolean} beginPath Whether to execute beginPath + * @param {Boolean} closePath Whether to execute closePath + * @return {Undefined} Void + */ + function drawPolylinePath(ctx, points) { + var beginPath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + var closePath = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; + if (!ctx || points.length < 2) return false; + if (beginPath) ctx.beginPath(); + points.forEach(function (point, i) { + return point && (i === 0 ? ctx.moveTo.apply(ctx, _toConsumableArray(point)) : ctx.lineTo.apply(ctx, _toConsumableArray(point))); + }); + if (closePath) ctx.closePath(); + } + /** + * @description Draw a bezier curve path + * @param {Object} ctx Canvas 2d context + * @param {Array} points The points that makes up a bezier curve + * @param {Array} moveTo The point need to excute moveTo + * @param {Boolean} beginPath Whether to execute beginPath + * @param {Boolean} closePath Whether to execute closePath + * @return {Undefined} Void + */ + + + function drawBezierCurvePath(ctx, points) { + var moveTo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + var beginPath = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; + var closePath = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; + if (!ctx || !points) return false; + if (beginPath) ctx.beginPath(); + if (moveTo) ctx.moveTo.apply(ctx, _toConsumableArray(moveTo)); + points.forEach(function (item) { + return item && ctx.bezierCurveTo.apply(ctx, _toConsumableArray(item[0]).concat(_toConsumableArray(item[1]), _toConsumableArray(item[2]))); + }); + if (closePath) ctx.closePath(); + } + + var _default = { + drawPolylinePath: drawPolylinePath, + drawBezierCurvePath: drawBezierCurvePath + }; + exports["default"] = _default; + }); + + unwrapExports(canvas); + var canvas_1 = canvas.drawPolylinePath; + var canvas_2 = canvas.drawBezierCurvePath; + + var graphs_1 = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.extendNewGraph = extendNewGraph; + exports["default"] = exports.text = exports.bezierCurve = exports.smoothline = exports.polyline = exports.regPolygon = exports.sector = exports.arc = exports.ring = exports.rect = exports.ellipse = exports.circle = void 0; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + var _bezierCurve2 = _interopRequireDefault(lib$1); + + + + + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + + function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } + + function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } + + function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } + + function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } + + function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } + + function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + + function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + + function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + + var polylineToBezierCurve = _bezierCurve2["default"].polylineToBezierCurve, + bezierCurveToPolyline = _bezierCurve2["default"].bezierCurveToPolyline; + var circle = { + shape: { + rx: 0, + ry: 0, + r: 0 + }, + validator: function validator(_ref) { + var shape = _ref.shape; + var rx = shape.rx, + ry = shape.ry, + r = shape.r; + + if (typeof rx !== 'number' || typeof ry !== 'number' || typeof r !== 'number') { + console.error('Circle shape configuration is abnormal!'); + return false; + } + + return true; + }, + draw: function draw(_ref2, _ref3) { + var ctx = _ref2.ctx; + var shape = _ref3.shape; + ctx.beginPath(); + var rx = shape.rx, + ry = shape.ry, + r = shape.r; + ctx.arc(rx, ry, r > 0 ? r : 0.01, 0, Math.PI * 2); + ctx.fill(); + ctx.stroke(); + ctx.closePath(); + }, + hoverCheck: function hoverCheck(position, _ref4) { + var shape = _ref4.shape; + var rx = shape.rx, + ry = shape.ry, + r = shape.r; + return (0, util.checkPointIsInCircle)(position, rx, ry, r); + }, + setGraphCenter: function setGraphCenter(e, _ref5) { + var shape = _ref5.shape, + style = _ref5.style; + var rx = shape.rx, + ry = shape.ry; + style.graphCenter = [rx, ry]; + }, + move: function move(_ref6, _ref7) { + var movementX = _ref6.movementX, + movementY = _ref6.movementY; + var shape = _ref7.shape; + this.attr('shape', { + rx: shape.rx + movementX, + ry: shape.ry + movementY + }); + } + }; + exports.circle = circle; + var ellipse = { + shape: { + rx: 0, + ry: 0, + hr: 0, + vr: 0 + }, + validator: function validator(_ref8) { + var shape = _ref8.shape; + var rx = shape.rx, + ry = shape.ry, + hr = shape.hr, + vr = shape.vr; + + if (typeof rx !== 'number' || typeof ry !== 'number' || typeof hr !== 'number' || typeof vr !== 'number') { + console.error('Ellipse shape configuration is abnormal!'); + return false; + } + + return true; + }, + draw: function draw(_ref9, _ref10) { + var ctx = _ref9.ctx; + var shape = _ref10.shape; + ctx.beginPath(); + var rx = shape.rx, + ry = shape.ry, + hr = shape.hr, + vr = shape.vr; + ctx.ellipse(rx, ry, hr > 0 ? hr : 0.01, vr > 0 ? vr : 0.01, 0, 0, Math.PI * 2); + ctx.fill(); + ctx.stroke(); + ctx.closePath(); + }, + hoverCheck: function hoverCheck(position, _ref11) { + var shape = _ref11.shape; + var rx = shape.rx, + ry = shape.ry, + hr = shape.hr, + vr = shape.vr; + var a = Math.max(hr, vr); + var b = Math.min(hr, vr); + var c = Math.sqrt(a * a - b * b); + var leftFocusPoint = [rx - c, ry]; + var rightFocusPoint = [rx + c, ry]; + var distance = (0, util.getTwoPointDistance)(position, leftFocusPoint) + (0, util.getTwoPointDistance)(position, rightFocusPoint); + return distance <= 2 * a; + }, + setGraphCenter: function setGraphCenter(e, _ref12) { + var shape = _ref12.shape, + style = _ref12.style; + var rx = shape.rx, + ry = shape.ry; + style.graphCenter = [rx, ry]; + }, + move: function move(_ref13, _ref14) { + var movementX = _ref13.movementX, + movementY = _ref13.movementY; + var shape = _ref14.shape; + this.attr('shape', { + rx: shape.rx + movementX, + ry: shape.ry + movementY + }); + } + }; + exports.ellipse = ellipse; + var rect = { + shape: { + x: 0, + y: 0, + w: 0, + h: 0 + }, + validator: function validator(_ref15) { + var shape = _ref15.shape; + var x = shape.x, + y = shape.y, + w = shape.w, + h = shape.h; + + if (typeof x !== 'number' || typeof y !== 'number' || typeof w !== 'number' || typeof h !== 'number') { + console.error('Rect shape configuration is abnormal!'); + return false; + } + + return true; + }, + draw: function draw(_ref16, _ref17) { + var ctx = _ref16.ctx; + var shape = _ref17.shape; + ctx.beginPath(); + var x = shape.x, + y = shape.y, + w = shape.w, + h = shape.h; + ctx.rect(x, y, w, h); + ctx.fill(); + ctx.stroke(); + ctx.closePath(); + }, + hoverCheck: function hoverCheck(position, _ref18) { + var shape = _ref18.shape; + var x = shape.x, + y = shape.y, + w = shape.w, + h = shape.h; + return (0, util.checkPointIsInRect)(position, x, y, w, h); + }, + setGraphCenter: function setGraphCenter(e, _ref19) { + var shape = _ref19.shape, + style = _ref19.style; + var x = shape.x, + y = shape.y, + w = shape.w, + h = shape.h; + style.graphCenter = [x + w / 2, y + h / 2]; + }, + move: function move(_ref20, _ref21) { + var movementX = _ref20.movementX, + movementY = _ref20.movementY; + var shape = _ref21.shape; + this.attr('shape', { + x: shape.x + movementX, + y: shape.y + movementY + }); + } + }; + exports.rect = rect; + var ring = { + shape: { + rx: 0, + ry: 0, + r: 0 + }, + validator: function validator(_ref22) { + var shape = _ref22.shape; + var rx = shape.rx, + ry = shape.ry, + r = shape.r; + + if (typeof rx !== 'number' || typeof ry !== 'number' || typeof r !== 'number') { + console.error('Ring shape configuration is abnormal!'); + return false; + } + + return true; + }, + draw: function draw(_ref23, _ref24) { + var ctx = _ref23.ctx; + var shape = _ref24.shape; + ctx.beginPath(); + var rx = shape.rx, + ry = shape.ry, + r = shape.r; + ctx.arc(rx, ry, r > 0 ? r : 0.01, 0, Math.PI * 2); + ctx.stroke(); + ctx.closePath(); + }, + hoverCheck: function hoverCheck(position, _ref25) { + var shape = _ref25.shape, + style = _ref25.style; + var rx = shape.rx, + ry = shape.ry, + r = shape.r; + var lineWidth = style.lineWidth; + var halfLineWidth = lineWidth / 2; + var minDistance = r - halfLineWidth; + var maxDistance = r + halfLineWidth; + var distance = (0, util.getTwoPointDistance)(position, [rx, ry]); + return distance >= minDistance && distance <= maxDistance; + }, + setGraphCenter: function setGraphCenter(e, _ref26) { + var shape = _ref26.shape, + style = _ref26.style; + var rx = shape.rx, + ry = shape.ry; + style.graphCenter = [rx, ry]; + }, + move: function move(_ref27, _ref28) { + var movementX = _ref27.movementX, + movementY = _ref27.movementY; + var shape = _ref28.shape; + this.attr('shape', { + rx: shape.rx + movementX, + ry: shape.ry + movementY + }); + } + }; + exports.ring = ring; + var arc = { + shape: { + rx: 0, + ry: 0, + r: 0, + startAngle: 0, + endAngle: 0, + clockWise: true + }, + validator: function validator(_ref29) { + var shape = _ref29.shape; + var keys = ['rx', 'ry', 'r', 'startAngle', 'endAngle']; + + if (keys.find(function (key) { + return typeof shape[key] !== 'number'; + })) { + console.error('Arc shape configuration is abnormal!'); + return false; + } + + return true; + }, + draw: function draw(_ref30, _ref31) { + var ctx = _ref30.ctx; + var shape = _ref31.shape; + ctx.beginPath(); + var rx = shape.rx, + ry = shape.ry, + r = shape.r, + startAngle = shape.startAngle, + endAngle = shape.endAngle, + clockWise = shape.clockWise; + ctx.arc(rx, ry, r > 0 ? r : 0.001, startAngle, endAngle, !clockWise); + ctx.stroke(); + ctx.closePath(); + }, + hoverCheck: function hoverCheck(position, _ref32) { + var shape = _ref32.shape, + style = _ref32.style; + var rx = shape.rx, + ry = shape.ry, + r = shape.r, + startAngle = shape.startAngle, + endAngle = shape.endAngle, + clockWise = shape.clockWise; + var lineWidth = style.lineWidth; + var halfLineWidth = lineWidth / 2; + var insideRadius = r - halfLineWidth; + var outsideRadius = r + halfLineWidth; + return !(0, util.checkPointIsInSector)(position, rx, ry, insideRadius, startAngle, endAngle, clockWise) && (0, util.checkPointIsInSector)(position, rx, ry, outsideRadius, startAngle, endAngle, clockWise); + }, + setGraphCenter: function setGraphCenter(e, _ref33) { + var shape = _ref33.shape, + style = _ref33.style; + var rx = shape.rx, + ry = shape.ry; + style.graphCenter = [rx, ry]; + }, + move: function move(_ref34, _ref35) { + var movementX = _ref34.movementX, + movementY = _ref34.movementY; + var shape = _ref35.shape; + this.attr('shape', { + rx: shape.rx + movementX, + ry: shape.ry + movementY + }); + } + }; + exports.arc = arc; + var sector = { + shape: { + rx: 0, + ry: 0, + r: 0, + startAngle: 0, + endAngle: 0, + clockWise: true + }, + validator: function validator(_ref36) { + var shape = _ref36.shape; + var keys = ['rx', 'ry', 'r', 'startAngle', 'endAngle']; + + if (keys.find(function (key) { + return typeof shape[key] !== 'number'; + })) { + console.error('Sector shape configuration is abnormal!'); + return false; + } + + return true; + }, + draw: function draw(_ref37, _ref38) { + var ctx = _ref37.ctx; + var shape = _ref38.shape; + ctx.beginPath(); + var rx = shape.rx, + ry = shape.ry, + r = shape.r, + startAngle = shape.startAngle, + endAngle = shape.endAngle, + clockWise = shape.clockWise; + ctx.arc(rx, ry, r > 0 ? r : 0.01, startAngle, endAngle, !clockWise); + ctx.lineTo(rx, ry); + ctx.closePath(); + ctx.stroke(); + ctx.fill(); + }, + hoverCheck: function hoverCheck(position, _ref39) { + var shape = _ref39.shape; + var rx = shape.rx, + ry = shape.ry, + r = shape.r, + startAngle = shape.startAngle, + endAngle = shape.endAngle, + clockWise = shape.clockWise; + return (0, util.checkPointIsInSector)(position, rx, ry, r, startAngle, endAngle, clockWise); + }, + setGraphCenter: function setGraphCenter(e, _ref40) { + var shape = _ref40.shape, + style = _ref40.style; + var rx = shape.rx, + ry = shape.ry; + style.graphCenter = [rx, ry]; + }, + move: function move(_ref41, _ref42) { + var movementX = _ref41.movementX, + movementY = _ref41.movementY; + var shape = _ref42.shape; + var rx = shape.rx, + ry = shape.ry; + this.attr('shape', { + rx: rx + movementX, + ry: ry + movementY + }); + } + }; + exports.sector = sector; + var regPolygon = { + shape: { + rx: 0, + ry: 0, + r: 0, + side: 0 + }, + validator: function validator(_ref43) { + var shape = _ref43.shape; + var side = shape.side; + var keys = ['rx', 'ry', 'r', 'side']; + + if (keys.find(function (key) { + return typeof shape[key] !== 'number'; + })) { + console.error('RegPolygon shape configuration is abnormal!'); + return false; + } + + if (side < 3) { + console.error('RegPolygon at least trigon!'); + return false; + } + + return true; + }, + draw: function draw(_ref44, _ref45) { + var ctx = _ref44.ctx; + var shape = _ref45.shape, + cache = _ref45.cache; + ctx.beginPath(); + var rx = shape.rx, + ry = shape.ry, + r = shape.r, + side = shape.side; + + if (!cache.points || cache.rx !== rx || cache.ry !== ry || cache.r !== r || cache.side !== side) { + var _points = (0, util.getRegularPolygonPoints)(rx, ry, r, side); + + Object.assign(cache, { + points: _points, + rx: rx, + ry: ry, + r: r, + side: side + }); + } + + var points = cache.points; + (0, canvas.drawPolylinePath)(ctx, points); + ctx.closePath(); + ctx.stroke(); + ctx.fill(); + }, + hoverCheck: function hoverCheck(position, _ref46) { + var cache = _ref46.cache; + var points = cache.points; + return (0, util.checkPointIsInPolygon)(position, points); + }, + setGraphCenter: function setGraphCenter(e, _ref47) { + var shape = _ref47.shape, + style = _ref47.style; + var rx = shape.rx, + ry = shape.ry; + style.graphCenter = [rx, ry]; + }, + move: function move(_ref48, _ref49) { + var movementX = _ref48.movementX, + movementY = _ref48.movementY; + var shape = _ref49.shape, + cache = _ref49.cache; + var rx = shape.rx, + ry = shape.ry; + cache.rx += movementX; + cache.ry += movementY; + this.attr('shape', { + rx: rx + movementX, + ry: ry + movementY + }); + cache.points = cache.points.map(function (_ref50) { + var _ref51 = _slicedToArray(_ref50, 2), + x = _ref51[0], + y = _ref51[1]; + + return [x + movementX, y + movementY]; + }); + } + }; + exports.regPolygon = regPolygon; + var polyline = { + shape: { + points: [], + close: false + }, + validator: function validator(_ref52) { + var shape = _ref52.shape; + var points = shape.points; + + if (!(points instanceof Array)) { + console.error('Polyline points should be an array!'); + return false; + } + + return true; + }, + draw: function draw(_ref53, _ref54) { + var ctx = _ref53.ctx; + var shape = _ref54.shape, + lineWidth = _ref54.style.lineWidth; + ctx.beginPath(); + var points = shape.points, + close = shape.close; + if (lineWidth === 1) points = (0, util.eliminateBlur)(points); + (0, canvas.drawPolylinePath)(ctx, points); + + if (close) { + ctx.closePath(); + ctx.fill(); + ctx.stroke(); + } else { + ctx.stroke(); + } + }, + hoverCheck: function hoverCheck(position, _ref55) { + var shape = _ref55.shape, + style = _ref55.style; + var points = shape.points, + close = shape.close; + var lineWidth = style.lineWidth; + + if (close) { + return (0, util.checkPointIsInPolygon)(position, points); + } else { + return (0, util.checkPointIsNearPolyline)(position, points, lineWidth); + } + }, + setGraphCenter: function setGraphCenter(e, _ref56) { + var shape = _ref56.shape, + style = _ref56.style; + var points = shape.points; + style.graphCenter = points[0]; + }, + move: function move(_ref57, _ref58) { + var movementX = _ref57.movementX, + movementY = _ref57.movementY; + var shape = _ref58.shape; + var points = shape.points; + var moveAfterPoints = points.map(function (_ref59) { + var _ref60 = _slicedToArray(_ref59, 2), + x = _ref60[0], + y = _ref60[1]; + + return [x + movementX, y + movementY]; + }); + this.attr('shape', { + points: moveAfterPoints + }); + } + }; + exports.polyline = polyline; + var smoothline = { + shape: { + points: [], + close: false + }, + validator: function validator(_ref61) { + var shape = _ref61.shape; + var points = shape.points; + + if (!(points instanceof Array)) { + console.error('Smoothline points should be an array!'); + return false; + } + + return true; + }, + draw: function draw(_ref62, _ref63) { + var ctx = _ref62.ctx; + var shape = _ref63.shape, + cache = _ref63.cache; + var points = shape.points, + close = shape.close; + + if (!cache.points || cache.points.toString() !== points.toString()) { + var _bezierCurve = polylineToBezierCurve(points, close); + + var hoverPoints = bezierCurveToPolyline(_bezierCurve); + Object.assign(cache, { + points: (0, util.deepClone)(points, true), + bezierCurve: _bezierCurve, + hoverPoints: hoverPoints + }); + } + + var bezierCurve = cache.bezierCurve; + ctx.beginPath(); + (0, canvas.drawBezierCurvePath)(ctx, bezierCurve.slice(1), bezierCurve[0]); + + if (close) { + ctx.closePath(); + ctx.fill(); + ctx.stroke(); + } else { + ctx.stroke(); + } + }, + hoverCheck: function hoverCheck(position, _ref64) { + var cache = _ref64.cache, + shape = _ref64.shape, + style = _ref64.style; + var hoverPoints = cache.hoverPoints; + var close = shape.close; + var lineWidth = style.lineWidth; + + if (close) { + return (0, util.checkPointIsInPolygon)(position, hoverPoints); + } else { + return (0, util.checkPointIsNearPolyline)(position, hoverPoints, lineWidth); + } + }, + setGraphCenter: function setGraphCenter(e, _ref65) { + var shape = _ref65.shape, + style = _ref65.style; + var points = shape.points; + style.graphCenter = points[0]; + }, + move: function move(_ref66, _ref67) { + var movementX = _ref66.movementX, + movementY = _ref66.movementY; + var shape = _ref67.shape, + cache = _ref67.cache; + var points = shape.points; + var moveAfterPoints = points.map(function (_ref68) { + var _ref69 = _slicedToArray(_ref68, 2), + x = _ref69[0], + y = _ref69[1]; + + return [x + movementX, y + movementY]; + }); + cache.points = moveAfterPoints; + + var _cache$bezierCurve$ = _slicedToArray(cache.bezierCurve[0], 2), + fx = _cache$bezierCurve$[0], + fy = _cache$bezierCurve$[1]; + + var curves = cache.bezierCurve.slice(1); + cache.bezierCurve = [[fx + movementX, fy + movementY]].concat(_toConsumableArray(curves.map(function (curve) { + return curve.map(function (_ref70) { + var _ref71 = _slicedToArray(_ref70, 2), + x = _ref71[0], + y = _ref71[1]; + + return [x + movementX, y + movementY]; + }); + }))); + cache.hoverPoints = cache.hoverPoints.map(function (_ref72) { + var _ref73 = _slicedToArray(_ref72, 2), + x = _ref73[0], + y = _ref73[1]; + + return [x + movementX, y + movementY]; + }); + this.attr('shape', { + points: moveAfterPoints + }); + } + }; + exports.smoothline = smoothline; + var bezierCurve = { + shape: { + points: [], + close: false + }, + validator: function validator(_ref74) { + var shape = _ref74.shape; + var points = shape.points; + + if (!(points instanceof Array)) { + console.error('BezierCurve points should be an array!'); + return false; + } + + return true; + }, + draw: function draw(_ref75, _ref76) { + var ctx = _ref75.ctx; + var shape = _ref76.shape, + cache = _ref76.cache; + var points = shape.points, + close = shape.close; + + if (!cache.points || cache.points.toString() !== points.toString()) { + var hoverPoints = bezierCurveToPolyline(points, 20); + Object.assign(cache, { + points: (0, util.deepClone)(points, true), + hoverPoints: hoverPoints + }); + } + + ctx.beginPath(); + (0, canvas.drawBezierCurvePath)(ctx, points.slice(1), points[0]); + + if (close) { + ctx.closePath(); + ctx.fill(); + ctx.stroke(); + } else { + ctx.stroke(); + } + }, + hoverCheck: function hoverCheck(position, _ref77) { + var cache = _ref77.cache, + shape = _ref77.shape, + style = _ref77.style; + var hoverPoints = cache.hoverPoints; + var close = shape.close; + var lineWidth = style.lineWidth; + + if (close) { + return (0, util.checkPointIsInPolygon)(position, hoverPoints); + } else { + return (0, util.checkPointIsNearPolyline)(position, hoverPoints, lineWidth); + } + }, + setGraphCenter: function setGraphCenter(e, _ref78) { + var shape = _ref78.shape, + style = _ref78.style; + var points = shape.points; + style.graphCenter = points[0]; + }, + move: function move(_ref79, _ref80) { + var movementX = _ref79.movementX, + movementY = _ref79.movementY; + var shape = _ref80.shape, + cache = _ref80.cache; + var points = shape.points; + + var _points$ = _slicedToArray(points[0], 2), + fx = _points$[0], + fy = _points$[1]; + + var curves = points.slice(1); + var bezierCurve = [[fx + movementX, fy + movementY]].concat(_toConsumableArray(curves.map(function (curve) { + return curve.map(function (_ref81) { + var _ref82 = _slicedToArray(_ref81, 2), + x = _ref82[0], + y = _ref82[1]; + + return [x + movementX, y + movementY]; + }); + }))); + cache.points = bezierCurve; + cache.hoverPoints = cache.hoverPoints.map(function (_ref83) { + var _ref84 = _slicedToArray(_ref83, 2), + x = _ref84[0], + y = _ref84[1]; + + return [x + movementX, y + movementY]; + }); + this.attr('shape', { + points: bezierCurve + }); + } + }; + exports.bezierCurve = bezierCurve; + var text = { + shape: { + content: '', + position: [], + maxWidth: undefined, + rowGap: 0 + }, + validator: function validator(_ref85) { + var shape = _ref85.shape; + var content = shape.content, + position = shape.position, + rowGap = shape.rowGap; + + if (typeof content !== 'string') { + console.error('Text content should be a string!'); + return false; + } + + if (!(position instanceof Array)) { + console.error('Text position should be an array!'); + return false; + } + + if (typeof rowGap !== 'number') { + console.error('Text rowGap should be a number!'); + return false; + } + + return true; + }, + draw: function draw(_ref86, _ref87) { + var ctx = _ref86.ctx; + var shape = _ref87.shape; + var content = shape.content, + position = shape.position, + maxWidth = shape.maxWidth, + rowGap = shape.rowGap; + var textBaseline = ctx.textBaseline, + font = ctx.font; + var fontSize = parseInt(font.replace(/\D/g, '')); + + var _position = position, + _position2 = _slicedToArray(_position, 2), + x = _position2[0], + y = _position2[1]; + + content = content.split('\n'); + var rowNum = content.length; + var lineHeight = fontSize + rowGap; + var allHeight = rowNum * lineHeight - rowGap; + var offset = 0; + + if (textBaseline === 'middle') { + offset = allHeight / 2; + y += fontSize / 2; + } + + if (textBaseline === 'bottom') { + offset = allHeight; + y += fontSize; + } + + position = new Array(rowNum).fill(0).map(function (foo, i) { + return [x, y + i * lineHeight - offset]; + }); + ctx.beginPath(); + content.forEach(function (text, i) { + ctx.fillText.apply(ctx, [text].concat(_toConsumableArray(position[i]), [maxWidth])); + ctx.strokeText.apply(ctx, [text].concat(_toConsumableArray(position[i]), [maxWidth])); + }); + ctx.closePath(); + }, + hoverCheck: function hoverCheck(position, _ref88) { + var shape = _ref88.shape, + style = _ref88.style; + return false; + }, + setGraphCenter: function setGraphCenter(e, _ref89) { + var shape = _ref89.shape, + style = _ref89.style; + var position = shape.position; + style.graphCenter = _toConsumableArray(position); + }, + move: function move(_ref90, _ref91) { + var movementX = _ref90.movementX, + movementY = _ref90.movementY; + var shape = _ref91.shape; + + var _shape$position = _slicedToArray(shape.position, 2), + x = _shape$position[0], + y = _shape$position[1]; + + this.attr('shape', { + position: [x + movementX, y + movementY] + }); + } + }; + exports.text = text; + var graphs = new Map([['circle', circle], ['ellipse', ellipse], ['rect', rect], ['ring', ring], ['arc', arc], ['sector', sector], ['regPolygon', regPolygon], ['polyline', polyline], ['smoothline', smoothline], ['bezierCurve', bezierCurve], ['text', text]]); + var _default = graphs; + /** + * @description Extend new graph + * @param {String} name Name of Graph + * @param {Object} config Configuration of Graph + * @return {Undefined} Void + */ + + exports["default"] = _default; + + function extendNewGraph(name, config) { + if (!name || !config) { + console.error('ExtendNewGraph Missing Parameters!'); + return; + } + + if (!config.shape) { + console.error('Required attribute of shape to extendNewGraph!'); + return; + } + + if (!config.validator) { + console.error('Required function of validator to extendNewGraph!'); + return; + } + + if (!config.draw) { + console.error('Required function of draw to extendNewGraph!'); + return; + } + + graphs.set(name, config); + } + }); + + unwrapExports(graphs_1); + var graphs_2 = graphs_1.extendNewGraph; + var graphs_3 = graphs_1.text; + var graphs_4 = graphs_1.bezierCurve; + var graphs_5 = graphs_1.smoothline; + var graphs_6 = graphs_1.polyline; + var graphs_7 = graphs_1.regPolygon; + var graphs_8 = graphs_1.sector; + var graphs_9 = graphs_1.arc; + var graphs_10 = graphs_1.ring; + var graphs_11 = graphs_1.rect; + var graphs_12 = graphs_1.ellipse; + var graphs_13 = graphs_1.circle; + + var runtime_1 = createCommonjsModule(function (module) { + /** + * Copyright (c) 2014-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + var runtime = (function (exports) { + + var Op = Object.prototype; + var hasOwn = Op.hasOwnProperty; + var undefined$1; // More compressible than void 0. + var $Symbol = typeof Symbol === "function" ? Symbol : {}; + var iteratorSymbol = $Symbol.iterator || "@@iterator"; + var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator"; + var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; + + function wrap(innerFn, outerFn, self, tryLocsList) { + // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator. + var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; + var generator = Object.create(protoGenerator.prototype); + var context = new Context(tryLocsList || []); + + // The ._invoke method unifies the implementations of the .next, + // .throw, and .return methods. + generator._invoke = makeInvokeMethod(innerFn, self, context); + + return generator; + } + exports.wrap = wrap; + + // Try/catch helper to minimize deoptimizations. Returns a completion + // record like context.tryEntries[i].completion. This interface could + // have been (and was previously) designed to take a closure to be + // invoked without arguments, but in all the cases we care about we + // already have an existing method we want to call, so there's no need + // to create a new function object. We can even get away with assuming + // the method takes exactly one argument, since that happens to be true + // in every case, so we don't have to touch the arguments object. The + // only additional allocation required is the completion record, which + // has a stable shape and so hopefully should be cheap to allocate. + function tryCatch(fn, obj, arg) { + try { + return { type: "normal", arg: fn.call(obj, arg) }; + } catch (err) { + return { type: "throw", arg: err }; + } + } + + var GenStateSuspendedStart = "suspendedStart"; + var GenStateSuspendedYield = "suspendedYield"; + var GenStateExecuting = "executing"; + var GenStateCompleted = "completed"; + + // Returning this object from the innerFn has the same effect as + // breaking out of the dispatch switch statement. + var ContinueSentinel = {}; + + // Dummy constructor functions that we use as the .constructor and + // .constructor.prototype properties for functions that return Generator + // objects. For full spec compliance, you may wish to configure your + // minifier not to mangle the names of these two functions. + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + + // This is a polyfill for %IteratorPrototype% for environments that + // don't natively support it. + var IteratorPrototype = {}; + IteratorPrototype[iteratorSymbol] = function () { + return this; + }; + + var getProto = Object.getPrototypeOf; + var NativeIteratorPrototype = getProto && getProto(getProto(values([]))); + if (NativeIteratorPrototype && + NativeIteratorPrototype !== Op && + hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) { + // This environment has a native %IteratorPrototype%; use it instead + // of the polyfill. + IteratorPrototype = NativeIteratorPrototype; + } + + var Gp = GeneratorFunctionPrototype.prototype = + Generator.prototype = Object.create(IteratorPrototype); + GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype; + GeneratorFunctionPrototype.constructor = GeneratorFunction; + GeneratorFunctionPrototype[toStringTagSymbol] = + GeneratorFunction.displayName = "GeneratorFunction"; + + // Helper for defining the .next, .throw, and .return methods of the + // Iterator interface in terms of a single ._invoke method. + function defineIteratorMethods(prototype) { + ["next", "throw", "return"].forEach(function(method) { + prototype[method] = function(arg) { + return this._invoke(method, arg); + }; + }); + } + + exports.isGeneratorFunction = function(genFun) { + var ctor = typeof genFun === "function" && genFun.constructor; + return ctor + ? ctor === GeneratorFunction || + // For the native GeneratorFunction constructor, the best we can + // do is to check its .name property. + (ctor.displayName || ctor.name) === "GeneratorFunction" + : false; + }; + + exports.mark = function(genFun) { + if (Object.setPrototypeOf) { + Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); + } else { + genFun.__proto__ = GeneratorFunctionPrototype; + if (!(toStringTagSymbol in genFun)) { + genFun[toStringTagSymbol] = "GeneratorFunction"; + } + } + genFun.prototype = Object.create(Gp); + return genFun; + }; + + // Within the body of any async function, `await x` is transformed to + // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test + // `hasOwn.call(value, "__await")` to determine if the yielded value is + // meant to be awaited. + exports.awrap = function(arg) { + return { __await: arg }; + }; + + function AsyncIterator(generator) { + function invoke(method, arg, resolve, reject) { + var record = tryCatch(generator[method], generator, arg); + if (record.type === "throw") { + reject(record.arg); + } else { + var result = record.arg; + var value = result.value; + if (value && + typeof value === "object" && + hasOwn.call(value, "__await")) { + return Promise.resolve(value.__await).then(function(value) { + invoke("next", value, resolve, reject); + }, function(err) { + invoke("throw", err, resolve, reject); + }); + } + + return Promise.resolve(value).then(function(unwrapped) { + // When a yielded Promise is resolved, its final value becomes + // the .value of the Promise<{value,done}> result for the + // current iteration. + result.value = unwrapped; + resolve(result); + }, function(error) { + // If a rejected Promise was yielded, throw the rejection back + // into the async generator function so it can be handled there. + return invoke("throw", error, resolve, reject); + }); + } + } + + var previousPromise; + + function enqueue(method, arg) { + function callInvokeWithMethodAndArg() { + return new Promise(function(resolve, reject) { + invoke(method, arg, resolve, reject); + }); + } + + return previousPromise = + // If enqueue has been called before, then we want to wait until + // all previous Promises have been resolved before calling invoke, + // so that results are always delivered in the correct order. If + // enqueue has not been called before, then it is important to + // call invoke immediately, without waiting on a callback to fire, + // so that the async generator function has the opportunity to do + // any necessary setup in a predictable way. This predictability + // is why the Promise constructor synchronously invokes its + // executor callback, and why async functions synchronously + // execute code before the first await. Since we implement simple + // async functions in terms of async generators, it is especially + // important to get this right, even though it requires care. + previousPromise ? previousPromise.then( + callInvokeWithMethodAndArg, + // Avoid propagating failures to Promises returned by later + // invocations of the iterator. + callInvokeWithMethodAndArg + ) : callInvokeWithMethodAndArg(); + } + + // Define the unified helper method that is used to implement .next, + // .throw, and .return (see defineIteratorMethods). + this._invoke = enqueue; + } + + defineIteratorMethods(AsyncIterator.prototype); + AsyncIterator.prototype[asyncIteratorSymbol] = function () { + return this; + }; + exports.AsyncIterator = AsyncIterator; + + // Note that simple async functions are implemented on top of + // AsyncIterator objects; they just return a Promise for the value of + // the final result produced by the iterator. + exports.async = function(innerFn, outerFn, self, tryLocsList) { + var iter = new AsyncIterator( + wrap(innerFn, outerFn, self, tryLocsList) + ); + + return exports.isGeneratorFunction(outerFn) + ? iter // If outerFn is a generator, return the full iterator. + : iter.next().then(function(result) { + return result.done ? result.value : iter.next(); + }); + }; + + function makeInvokeMethod(innerFn, self, context) { + var state = GenStateSuspendedStart; + + return function invoke(method, arg) { + if (state === GenStateExecuting) { + throw new Error("Generator is already running"); + } + + if (state === GenStateCompleted) { + if (method === "throw") { + throw arg; + } + + // Be forgiving, per 25.3.3.3.3 of the spec: + // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume + return doneResult(); + } + + context.method = method; + context.arg = arg; + + while (true) { + var delegate = context.delegate; + if (delegate) { + var delegateResult = maybeInvokeDelegate(delegate, context); + if (delegateResult) { + if (delegateResult === ContinueSentinel) continue; + return delegateResult; + } + } + + if (context.method === "next") { + // Setting context._sent for legacy support of Babel's + // function.sent implementation. + context.sent = context._sent = context.arg; + + } else if (context.method === "throw") { + if (state === GenStateSuspendedStart) { + state = GenStateCompleted; + throw context.arg; + } + + context.dispatchException(context.arg); + + } else if (context.method === "return") { + context.abrupt("return", context.arg); + } + + state = GenStateExecuting; + + var record = tryCatch(innerFn, self, context); + if (record.type === "normal") { + // If an exception is thrown from innerFn, we leave state === + // GenStateExecuting and loop back for another invocation. + state = context.done + ? GenStateCompleted + : GenStateSuspendedYield; + + if (record.arg === ContinueSentinel) { + continue; + } + + return { + value: record.arg, + done: context.done + }; + + } else if (record.type === "throw") { + state = GenStateCompleted; + // Dispatch the exception by looping back around to the + // context.dispatchException(context.arg) call above. + context.method = "throw"; + context.arg = record.arg; + } + } + }; + } + + // Call delegate.iterator[context.method](context.arg) and handle the + // result, either by returning a { value, done } result from the + // delegate iterator, or by modifying context.method and context.arg, + // setting context.delegate to null, and returning the ContinueSentinel. + function maybeInvokeDelegate(delegate, context) { + var method = delegate.iterator[context.method]; + if (method === undefined$1) { + // A .throw or .return when the delegate iterator has no .throw + // method always terminates the yield* loop. + context.delegate = null; + + if (context.method === "throw") { + // Note: ["return"] must be used for ES3 parsing compatibility. + if (delegate.iterator["return"]) { + // If the delegate iterator has a return method, give it a + // chance to clean up. + context.method = "return"; + context.arg = undefined$1; + maybeInvokeDelegate(delegate, context); + + if (context.method === "throw") { + // If maybeInvokeDelegate(context) changed context.method from + // "return" to "throw", let that override the TypeError below. + return ContinueSentinel; + } + } + + context.method = "throw"; + context.arg = new TypeError( + "The iterator does not provide a 'throw' method"); + } + + return ContinueSentinel; + } + + var record = tryCatch(method, delegate.iterator, context.arg); + + if (record.type === "throw") { + context.method = "throw"; + context.arg = record.arg; + context.delegate = null; + return ContinueSentinel; + } + + var info = record.arg; + + if (! info) { + context.method = "throw"; + context.arg = new TypeError("iterator result is not an object"); + context.delegate = null; + return ContinueSentinel; + } + + if (info.done) { + // Assign the result of the finished delegate to the temporary + // variable specified by delegate.resultName (see delegateYield). + context[delegate.resultName] = info.value; + + // Resume execution at the desired location (see delegateYield). + context.next = delegate.nextLoc; + + // If context.method was "throw" but the delegate handled the + // exception, let the outer generator proceed normally. If + // context.method was "next", forget context.arg since it has been + // "consumed" by the delegate iterator. If context.method was + // "return", allow the original .return call to continue in the + // outer generator. + if (context.method !== "return") { + context.method = "next"; + context.arg = undefined$1; + } + + } else { + // Re-yield the result returned by the delegate method. + return info; + } + + // The delegate iterator is finished, so forget it and continue with + // the outer generator. + context.delegate = null; + return ContinueSentinel; + } + + // Define Generator.prototype.{next,throw,return} in terms of the + // unified ._invoke helper method. + defineIteratorMethods(Gp); + + Gp[toStringTagSymbol] = "Generator"; + + // A Generator should always return itself as the iterator object when the + // @@iterator function is called on it. Some browsers' implementations of the + // iterator prototype chain incorrectly implement this, causing the Generator + // object to not be returned from this call. This ensures that doesn't happen. + // See https://github.com/facebook/regenerator/issues/274 for more details. + Gp[iteratorSymbol] = function() { + return this; + }; + + Gp.toString = function() { + return "[object Generator]"; + }; + + function pushTryEntry(locs) { + var entry = { tryLoc: locs[0] }; + + if (1 in locs) { + entry.catchLoc = locs[1]; + } + + if (2 in locs) { + entry.finallyLoc = locs[2]; + entry.afterLoc = locs[3]; + } + + this.tryEntries.push(entry); + } + + function resetTryEntry(entry) { + var record = entry.completion || {}; + record.type = "normal"; + delete record.arg; + entry.completion = record; + } + + function Context(tryLocsList) { + // The root entry object (effectively a try statement without a catch + // or a finally block) gives us a place to store values thrown from + // locations where there is no enclosing try statement. + this.tryEntries = [{ tryLoc: "root" }]; + tryLocsList.forEach(pushTryEntry, this); + this.reset(true); + } + + exports.keys = function(object) { + var keys = []; + for (var key in object) { + keys.push(key); + } + keys.reverse(); + + // Rather than returning an object with a next method, we keep + // things simple and return the next function itself. + return function next() { + while (keys.length) { + var key = keys.pop(); + if (key in object) { + next.value = key; + next.done = false; + return next; + } + } + + // To avoid creating an additional object, we just hang the .value + // and .done properties off the next function object itself. This + // also ensures that the minifier will not anonymize the function. + next.done = true; + return next; + }; + }; + + function values(iterable) { + if (iterable) { + var iteratorMethod = iterable[iteratorSymbol]; + if (iteratorMethod) { + return iteratorMethod.call(iterable); + } + + if (typeof iterable.next === "function") { + return iterable; + } + + if (!isNaN(iterable.length)) { + var i = -1, next = function next() { + while (++i < iterable.length) { + if (hasOwn.call(iterable, i)) { + next.value = iterable[i]; + next.done = false; + return next; + } + } + + next.value = undefined$1; + next.done = true; + + return next; + }; + + return next.next = next; + } + } + + // Return an iterator with no values. + return { next: doneResult }; + } + exports.values = values; + + function doneResult() { + return { value: undefined$1, done: true }; + } + + Context.prototype = { + constructor: Context, + + reset: function(skipTempReset) { + this.prev = 0; + this.next = 0; + // Resetting context._sent for legacy support of Babel's + // function.sent implementation. + this.sent = this._sent = undefined$1; + this.done = false; + this.delegate = null; + + this.method = "next"; + this.arg = undefined$1; + + this.tryEntries.forEach(resetTryEntry); + + if (!skipTempReset) { + for (var name in this) { + // Not sure about the optimal order of these conditions: + if (name.charAt(0) === "t" && + hasOwn.call(this, name) && + !isNaN(+name.slice(1))) { + this[name] = undefined$1; + } + } + } + }, + + stop: function() { + this.done = true; + + var rootEntry = this.tryEntries[0]; + var rootRecord = rootEntry.completion; + if (rootRecord.type === "throw") { + throw rootRecord.arg; + } + + return this.rval; + }, + + dispatchException: function(exception) { + if (this.done) { + throw exception; + } + + var context = this; + function handle(loc, caught) { + record.type = "throw"; + record.arg = exception; + context.next = loc; + + if (caught) { + // If the dispatched exception was caught by a catch block, + // then let that catch block handle the exception normally. + context.method = "next"; + context.arg = undefined$1; + } + + return !! caught; + } + + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + var record = entry.completion; + + if (entry.tryLoc === "root") { + // Exception thrown outside of any try block that could handle + // it, so set the completion value of the entire function to + // throw the exception. + return handle("end"); + } + + if (entry.tryLoc <= this.prev) { + var hasCatch = hasOwn.call(entry, "catchLoc"); + var hasFinally = hasOwn.call(entry, "finallyLoc"); + + if (hasCatch && hasFinally) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } else if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else if (hasCatch) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } + + } else if (hasFinally) { + if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else { + throw new Error("try statement without catch or finally"); + } + } + } + }, + + abrupt: function(type, arg) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc <= this.prev && + hasOwn.call(entry, "finallyLoc") && + this.prev < entry.finallyLoc) { + var finallyEntry = entry; + break; + } + } + + if (finallyEntry && + (type === "break" || + type === "continue") && + finallyEntry.tryLoc <= arg && + arg <= finallyEntry.finallyLoc) { + // Ignore the finally entry if control is not jumping to a + // location outside the try/catch block. + finallyEntry = null; + } + + var record = finallyEntry ? finallyEntry.completion : {}; + record.type = type; + record.arg = arg; + + if (finallyEntry) { + this.method = "next"; + this.next = finallyEntry.finallyLoc; + return ContinueSentinel; + } + + return this.complete(record); + }, + + complete: function(record, afterLoc) { + if (record.type === "throw") { + throw record.arg; + } + + if (record.type === "break" || + record.type === "continue") { + this.next = record.arg; + } else if (record.type === "return") { + this.rval = this.arg = record.arg; + this.method = "return"; + this.next = "end"; + } else if (record.type === "normal" && afterLoc) { + this.next = afterLoc; + } + + return ContinueSentinel; + }, + + finish: function(finallyLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.finallyLoc === finallyLoc) { + this.complete(entry.completion, entry.afterLoc); + resetTryEntry(entry); + return ContinueSentinel; + } + } + }, + + "catch": function(tryLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc === tryLoc) { + var record = entry.completion; + if (record.type === "throw") { + var thrown = record.arg; + resetTryEntry(entry); + } + return thrown; + } + } + + // The context.catch method must only be called with a location + // argument that corresponds to a known catch block. + throw new Error("illegal catch attempt"); + }, + + delegateYield: function(iterable, resultName, nextLoc) { + this.delegate = { + iterator: values(iterable), + resultName: resultName, + nextLoc: nextLoc + }; + + if (this.method === "next") { + // Deliberately forget the last sent value so that we don't + // accidentally pass it on to the delegate. + this.arg = undefined$1; + } + + return ContinueSentinel; + } + }; + + // Regardless of whether this script is executing as a CommonJS module + // or not, return the runtime object so that we can declare the variable + // regeneratorRuntime in the outer scope, which allows this module to be + // injected easily by `bin/regenerator --include-runtime script.js`. + return exports; + + }( + // If this script is executing as a CommonJS module, use module.exports + // as the regeneratorRuntime namespace. Otherwise create a new empty + // object. Either way, the resulting object will be used to initialize + // the regeneratorRuntime variable at the top of this file. + module.exports + )); + + try { + regeneratorRuntime = runtime; + } catch (accidentalStrictMode) { + // This module should not be running in strict mode, so the above + // assignment should always work unless something is misconfigured. Just + // in case runtime.js accidentally runs in strict mode, we can escape + // strict mode using a global Function call. This could conceivably fail + // if a Content Security Policy forbids using Function, but in that case + // the proper solution is to fix the accidental strict mode problem. If + // you've misconfigured your bundler to force strict mode and applied a + // CSP to forbid Function, and you're not willing to fix either of those + // problems, please detail your unique predicament in a GitHub issue. + Function("r", "regeneratorRuntime = r")(runtime); + } + }); + + var style_class = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports["default"] = void 0; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } + + function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } + + function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } + + function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + /** + * @description Class Style + * @param {Object} style Style configuration + * @return {Style} Instance of Style + */ + var Style = function Style(style) { + _classCallCheck(this, Style); + + this.colorProcessor(style); + var defaultStyle = { + /** + * @description Rgba value of graph fill color + * @type {Array} + * @default fill = [0, 0, 0, 1] + */ + fill: [0, 0, 0, 1], + + /** + * @description Rgba value of graph stroke color + * @type {Array} + * @default stroke = [0, 0, 0, 1] + */ + stroke: [0, 0, 0, 0], + + /** + * @description Opacity of graph + * @type {Number} + * @default opacity = 1 + */ + opacity: 1, + + /** + * @description LineCap of Ctx + * @type {String} + * @default lineCap = null + * @example lineCap = 'butt'|'round'|'square' + */ + lineCap: null, + + /** + * @description Linejoin of Ctx + * @type {String} + * @default lineJoin = null + * @example lineJoin = 'round'|'bevel'|'miter' + */ + lineJoin: null, + + /** + * @description LineDash of Ctx + * @type {Array} + * @default lineDash = null + * @example lineDash = [10, 10] + */ + lineDash: null, + + /** + * @description LineDashOffset of Ctx + * @type {Number} + * @default lineDashOffset = null + * @example lineDashOffset = 10 + */ + lineDashOffset: null, + + /** + * @description ShadowBlur of Ctx + * @type {Number} + * @default shadowBlur = 0 + */ + shadowBlur: 0, + + /** + * @description Rgba value of graph shadow color + * @type {Array} + * @default shadowColor = [0, 0, 0, 0] + */ + shadowColor: [0, 0, 0, 0], + + /** + * @description ShadowOffsetX of Ctx + * @type {Number} + * @default shadowOffsetX = 0 + */ + shadowOffsetX: 0, + + /** + * @description ShadowOffsetY of Ctx + * @type {Number} + * @default shadowOffsetY = 0 + */ + shadowOffsetY: 0, + + /** + * @description LineWidth of Ctx + * @type {Number} + * @default lineWidth = 0 + */ + lineWidth: 0, + + /** + * @description Stroke width is not scaled + * @type {Boolean} + * @default strokeNoScale = false + */ + strokeNoScale: false, + + /** + * @description Center point of the graph + * @type {Array} + * @default graphCenter = null + * @example graphCenter = [10, 10] + */ + graphCenter: null, + + /** + * @description Graph scale + * @type {Array} + * @default scale = null + * @example scale = [1.5, 1.5] + */ + scale: null, + + /** + * @description Graph rotation degree + * @type {Number} + * @default rotate = null + * @example rotate = 10 + */ + rotate: null, + + /** + * @description Graph translate distance + * @type {Array} + * @default translate = null + * @example translate = [10, 10] + */ + translate: null, + + /** + * @description Cursor status when hover + * @type {String} + * @default hoverCursor = 'pointer' + * @example hoverCursor = 'default'|'pointer'|'auto'|'crosshair'|'move'|'wait'|... + */ + hoverCursor: 'pointer', + + /** + * @description Font style of Ctx + * @type {String} + * @default fontStyle = 'normal' + * @example fontStyle = 'normal'|'italic'|'oblique' + */ + fontStyle: 'normal', + + /** + * @description Font varient of Ctx + * @type {String} + * @default fontVarient = 'normal' + * @example fontVarient = 'normal'|'small-caps' + */ + fontVarient: 'normal', + + /** + * @description Font weight of Ctx + * @type {String|Number} + * @default fontWeight = 'normal' + * @example fontWeight = 'normal'|'bold'|'bolder'|'lighter'|Number + */ + fontWeight: 'normal', + + /** + * @description Font size of Ctx + * @type {Number} + * @default fontSize = 10 + */ + fontSize: 10, + + /** + * @description Font family of Ctx + * @type {String} + * @default fontFamily = 'Arial' + */ + fontFamily: 'Arial', + + /** + * @description TextAlign of Ctx + * @type {String} + * @default textAlign = 'center' + * @example textAlign = 'start'|'end'|'left'|'right'|'center' + */ + textAlign: 'center', + + /** + * @description TextBaseline of Ctx + * @type {String} + * @default textBaseline = 'middle' + * @example textBaseline = 'top'|'bottom'|'middle'|'alphabetic'|'hanging' + */ + textBaseline: 'middle', + + /** + * @description The color used to create the gradient + * @type {Array} + * @default gradientColor = null + * @example gradientColor = ['#000', '#111', '#222'] + */ + gradientColor: null, + + /** + * @description Gradient type + * @type {String} + * @default gradientType = 'linear' + * @example gradientType = 'linear' | 'radial' + */ + gradientType: 'linear', + + /** + * @description Gradient params + * @type {Array} + * @default gradientParams = null + * @example gradientParams = [x0, y0, x1, y1] (Linear Gradient) + * @example gradientParams = [x0, y0, r0, x1, y1, r1] (Radial Gradient) + */ + gradientParams: null, + + /** + * @description When to use gradients + * @type {String} + * @default gradientWith = 'stroke' + * @example gradientWith = 'stroke' | 'fill' + */ + gradientWith: 'stroke', + + /** + * @description Gradient color stops + * @type {String} + * @default gradientStops = 'auto' + * @example gradientStops = 'auto' | [0, .2, .3, 1] + */ + gradientStops: 'auto', + + /** + * @description Extended color that supports animation transition + * @type {Array|Object} + * @default colors = null + * @example colors = ['#000', '#111', '#222'] + * @example colors = { a: '#000', b: '#111' } + */ + colors: null + }; + Object.assign(this, defaultStyle, style); + }; + /** + * @description Set colors to rgba value + * @param {Object} style style config + * @param {Boolean} reverse Whether to perform reverse operation + * @return {Undefined} Void + */ + + + exports["default"] = Style; + + Style.prototype.colorProcessor = function (style) { + var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var processor = reverse ? lib.getColorFromRgbValue : lib.getRgbaValue; + var colorProcessorKeys = ['fill', 'stroke', 'shadowColor']; + var allKeys = Object.keys(style); + var colorKeys = allKeys.filter(function (key) { + return colorProcessorKeys.find(function (k) { + return k === key; + }); + }); + colorKeys.forEach(function (key) { + return style[key] = processor(style[key]); + }); + var gradientColor = style.gradientColor, + colors = style.colors; + if (gradientColor) style.gradientColor = gradientColor.map(function (c) { + return processor(c); + }); + + if (colors) { + var colorsKeys = Object.keys(colors); + colorsKeys.forEach(function (key) { + return colors[key] = processor(colors[key]); + }); + } + }; + /** + * @description Init graph style + * @param {Object} ctx Context of canvas + * @return {Undefined} Void + */ + + + Style.prototype.initStyle = function (ctx) { + initTransform(ctx, this); + initGraphStyle(ctx, this); + initGradient(ctx, this); + }; + /** + * @description Init canvas transform + * @param {Object} ctx Context of canvas + * @param {Style} style Instance of Style + * @return {Undefined} Void + */ + + + function initTransform(ctx, style) { + ctx.save(); + var graphCenter = style.graphCenter, + rotate = style.rotate, + scale = style.scale, + translate = style.translate; + if (!(graphCenter instanceof Array)) return; + ctx.translate.apply(ctx, _toConsumableArray(graphCenter)); + if (rotate) ctx.rotate(rotate * Math.PI / 180); + if (scale instanceof Array) ctx.scale.apply(ctx, _toConsumableArray(scale)); + if (translate) ctx.translate.apply(ctx, _toConsumableArray(translate)); + ctx.translate(-graphCenter[0], -graphCenter[1]); + } + + var autoSetStyleKeys = ['lineCap', 'lineJoin', 'lineDashOffset', 'shadowOffsetX', 'shadowOffsetY', 'lineWidth', 'textAlign', 'textBaseline']; + /** + * @description Set the style of canvas ctx + * @param {Object} ctx Context of canvas + * @param {Style} style Instance of Style + * @return {Undefined} Void + */ + + function initGraphStyle(ctx, style) { + var fill = style.fill, + stroke = style.stroke, + shadowColor = style.shadowColor, + opacity = style.opacity; + autoSetStyleKeys.forEach(function (key) { + if (key || typeof key === 'number') ctx[key] = style[key]; + }); + fill = _toConsumableArray(fill); + stroke = _toConsumableArray(stroke); + shadowColor = _toConsumableArray(shadowColor); + fill[3] *= opacity; + stroke[3] *= opacity; + shadowColor[3] *= opacity; + ctx.fillStyle = (0, lib.getColorFromRgbValue)(fill); + ctx.strokeStyle = (0, lib.getColorFromRgbValue)(stroke); + ctx.shadowColor = (0, lib.getColorFromRgbValue)(shadowColor); + var lineDash = style.lineDash, + shadowBlur = style.shadowBlur; + + if (lineDash) { + lineDash = lineDash.map(function (v) { + return v >= 0 ? v : 0; + }); + ctx.setLineDash(lineDash); + } + + if (typeof shadowBlur === 'number') ctx.shadowBlur = shadowBlur > 0 ? shadowBlur : 0.001; + var fontStyle = style.fontStyle, + fontVarient = style.fontVarient, + fontWeight = style.fontWeight, + fontSize = style.fontSize, + fontFamily = style.fontFamily; + ctx.font = fontStyle + ' ' + fontVarient + ' ' + fontWeight + ' ' + fontSize + 'px' + ' ' + fontFamily; + } + /** + * @description Set the gradient color of canvas ctx + * @param {Object} ctx Context of canvas + * @param {Style} style Instance of Style + * @return {Undefined} Void + */ + + + function initGradient(ctx, style) { + if (!gradientValidator(style)) return; + var gradientColor = style.gradientColor, + gradientParams = style.gradientParams, + gradientType = style.gradientType, + gradientWith = style.gradientWith, + gradientStops = style.gradientStops, + opacity = style.opacity; + gradientColor = gradientColor.map(function (color) { + var colorOpacity = color[3] * opacity; + + var clonedColor = _toConsumableArray(color); + + clonedColor[3] = colorOpacity; + return clonedColor; + }); + gradientColor = gradientColor.map(function (c) { + return (0, lib.getColorFromRgbValue)(c); + }); + if (gradientStops === 'auto') gradientStops = getAutoColorStops(gradientColor); + var gradient = ctx["create".concat(gradientType.slice(0, 1).toUpperCase() + gradientType.slice(1), "Gradient")].apply(ctx, _toConsumableArray(gradientParams)); + gradientStops.forEach(function (stop, i) { + return gradient.addColorStop(stop, gradientColor[i]); + }); + ctx["".concat(gradientWith, "Style")] = gradient; + } + /** + * @description Check if the gradient configuration is legal + * @param {Style} style Instance of Style + * @return {Boolean} Check Result + */ + + + function gradientValidator(style) { + var gradientColor = style.gradientColor, + gradientParams = style.gradientParams, + gradientType = style.gradientType, + gradientWith = style.gradientWith, + gradientStops = style.gradientStops; + if (!gradientColor || !gradientParams) return false; + + if (gradientColor.length === 1) { + console.warn('The gradient needs to provide at least two colors'); + return false; + } + + if (gradientType !== 'linear' && gradientType !== 'radial') { + console.warn('GradientType only supports linear or radial, current value is ' + gradientType); + return false; + } + + var gradientParamsLength = gradientParams.length; + + if (gradientType === 'linear' && gradientParamsLength !== 4 || gradientType === 'radial' && gradientParamsLength !== 6) { + console.warn('The expected length of gradientParams is ' + (gradientType === 'linear' ? '4' : '6')); + return false; + } + + if (gradientWith !== 'fill' && gradientWith !== 'stroke') { + console.warn('GradientWith only supports fill or stroke, current value is ' + gradientWith); + return false; + } + + if (gradientStops !== 'auto' && !(gradientStops instanceof Array)) { + console.warn("gradientStops only supports 'auto' or Number Array ([0, .5, 1]), current value is " + gradientStops); + return false; + } + + return true; + } + /** + * @description Get a uniform gradient color stop + * @param {Array} color Gradient color + * @return {Array} Gradient color stop + */ + + + function getAutoColorStops(color) { + var stopGap = 1 / (color.length - 1); + return color.map(function (foo, i) { + return stopGap * i; + }); + } + /** + * @description Restore canvas ctx transform + * @param {Object} ctx Context of canvas + * @return {Undefined} Void + */ + + + Style.prototype.restoreTransform = function (ctx) { + ctx.restore(); + }; + /** + * @description Update style data + * @param {Object} change Changed data + * @return {Undefined} Void + */ + + + Style.prototype.update = function (change) { + this.colorProcessor(change); + Object.assign(this, change); + }; + /** + * @description Get the current style configuration + * @return {Object} Style configuration + */ + + + Style.prototype.getStyle = function () { + var clonedStyle = (0, util.deepClone)(this, true); + this.colorProcessor(clonedStyle, true); + return clonedStyle; + }; + }); + + unwrapExports(style_class); + + var _typeof_1 = createCommonjsModule(function (module) { + function _typeof2(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); } + + function _typeof(obj) { + if (typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol") { + module.exports = _typeof = function _typeof(obj) { + return _typeof2(obj); + }; + } else { + module.exports = _typeof = function _typeof(obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj); + }; + } + + return _typeof(obj); + } + + module.exports = _typeof; + }); + + var curves = createCommonjsModule(function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports["default"] = exports.easeInOutBounce = exports.easeOutBounce = exports.easeInBounce = exports.easeInOutElastic = exports.easeOutElastic = exports.easeInElastic = exports.easeInOutBack = exports.easeOutBack = exports.easeInBack = exports.easeInOutQuint = exports.easeOutQuint = exports.easeInQuint = exports.easeInOutQuart = exports.easeOutQuart = exports.easeInQuart = exports.easeInOutCubic = exports.easeOutCubic = exports.easeInCubic = exports.easeInOutQuad = exports.easeOutQuad = exports.easeInQuad = exports.easeInOutSine = exports.easeOutSine = exports.easeInSine = exports.linear = void 0; + var linear = [[[0, 1], '', [0.33, 0.67]], [[1, 0], [0.67, 0.33]]]; + /** + * @description Sine + */ + + exports.linear = linear; + var easeInSine = [[[0, 1]], [[0.538, 0.564], [0.169, 0.912], [0.880, 0.196]], [[1, 0]]]; + exports.easeInSine = easeInSine; + var easeOutSine = [[[0, 1]], [[0.444, 0.448], [0.169, 0.736], [0.718, 0.16]], [[1, 0]]]; + exports.easeOutSine = easeOutSine; + var easeInOutSine = [[[0, 1]], [[0.5, 0.5], [0.2, 1], [0.8, 0]], [[1, 0]]]; + /** + * @description Quad + */ + + exports.easeInOutSine = easeInOutSine; + var easeInQuad = [[[0, 1]], [[0.550, 0.584], [0.231, 0.904], [0.868, 0.264]], [[1, 0]]]; + exports.easeInQuad = easeInQuad; + var easeOutQuad = [[[0, 1]], [[0.413, 0.428], [0.065, 0.816], [0.760, 0.04]], [[1, 0]]]; + exports.easeOutQuad = easeOutQuad; + var easeInOutQuad = [[[0, 1]], [[0.5, 0.5], [0.3, 0.9], [0.7, 0.1]], [[1, 0]]]; + /** + * @description Cubic + */ + + exports.easeInOutQuad = easeInOutQuad; + var easeInCubic = [[[0, 1]], [[0.679, 0.688], [0.366, 0.992], [0.992, 0.384]], [[1, 0]]]; + exports.easeInCubic = easeInCubic; + var easeOutCubic = [[[0, 1]], [[0.321, 0.312], [0.008, 0.616], [0.634, 0.008]], [[1, 0]]]; + exports.easeOutCubic = easeOutCubic; + var easeInOutCubic = [[[0, 1]], [[0.5, 0.5], [0.3, 1], [0.7, 0]], [[1, 0]]]; + /** + * @description Quart + */ + + exports.easeInOutCubic = easeInOutCubic; + var easeInQuart = [[[0, 1]], [[0.812, 0.74], [0.611, 0.988], [1.013, 0.492]], [[1, 0]]]; + exports.easeInQuart = easeInQuart; + var easeOutQuart = [[[0, 1]], [[0.152, 0.244], [0.001, 0.448], [0.285, -0.02]], [[1, 0]]]; + exports.easeOutQuart = easeOutQuart; + var easeInOutQuart = [[[0, 1]], [[0.5, 0.5], [0.4, 1], [0.6, 0]], [[1, 0]]]; + /** + * @description Quint + */ + + exports.easeInOutQuart = easeInOutQuart; + var easeInQuint = [[[0, 1]], [[0.857, 0.856], [0.714, 1], [1, 0.712]], [[1, 0]]]; + exports.easeInQuint = easeInQuint; + var easeOutQuint = [[[0, 1]], [[0.108, 0.2], [0.001, 0.4], [0.214, -0.012]], [[1, 0]]]; + exports.easeOutQuint = easeOutQuint; + var easeInOutQuint = [[[0, 1]], [[0.5, 0.5], [0.5, 1], [0.5, 0]], [[1, 0]]]; + /** + * @description Back + */ + + exports.easeInOutQuint = easeInOutQuint; + var easeInBack = [[[0, 1]], [[0.667, 0.896], [0.380, 1.184], [0.955, 0.616]], [[1, 0]]]; + exports.easeInBack = easeInBack; + var easeOutBack = [[[0, 1]], [[0.335, 0.028], [0.061, 0.22], [0.631, -0.18]], [[1, 0]]]; + exports.easeOutBack = easeOutBack; + var easeInOutBack = [[[0, 1]], [[0.5, 0.5], [0.4, 1.4], [0.6, -0.4]], [[1, 0]]]; + /** + * @description Elastic + */ + + exports.easeInOutBack = easeInOutBack; + var easeInElastic = [[[0, 1]], [[0.474, 0.964], [0.382, 0.988], [0.557, 0.952]], [[0.619, 1.076], [0.565, 1.088], [0.669, 1.08]], [[0.770, 0.916], [0.712, 0.924], [0.847, 0.904]], [[0.911, 1.304], [0.872, 1.316], [0.961, 1.34]], [[1, 0]]]; + exports.easeInElastic = easeInElastic; + var easeOutElastic = [[[0, 1]], [[0.073, -0.32], [0.034, -0.328], [0.104, -0.344]], [[0.191, 0.092], [0.110, 0.06], [0.256, 0.08]], [[0.310, -0.076], [0.260, -0.068], [0.357, -0.076]], [[0.432, 0.032], [0.362, 0.028], [0.683, -0.004]], [[1, 0]]]; + exports.easeOutElastic = easeOutElastic; + var easeInOutElastic = [[[0, 1]], [[0.210, 0.94], [0.167, 0.884], [0.252, 0.98]], [[0.299, 1.104], [0.256, 1.092], [0.347, 1.108]], [[0.5, 0.496], [0.451, 0.672], [0.548, 0.324]], [[0.696, -0.108], [0.652, -0.112], [0.741, -0.124]], [[0.805, 0.064], [0.756, 0.012], [0.866, 0.096]], [[1, 0]]]; + /** + * @description Bounce + */ + + exports.easeInOutElastic = easeInOutElastic; + var easeInBounce = [[[0, 1]], [[0.148, 1], [0.075, 0.868], [0.193, 0.848]], [[0.326, 1], [0.276, 0.836], [0.405, 0.712]], [[0.600, 1], [0.511, 0.708], [0.671, 0.348]], [[1, 0]]]; + exports.easeInBounce = easeInBounce; + var easeOutBounce = [[[0, 1]], [[0.357, 0.004], [0.270, 0.592], [0.376, 0.252]], [[0.604, -0.004], [0.548, 0.312], [0.669, 0.184]], [[0.820, 0], [0.749, 0.184], [0.905, 0.132]], [[1, 0]]]; + exports.easeOutBounce = easeOutBounce; + var easeInOutBounce = [[[0, 1]], [[0.102, 1], [0.050, 0.864], [0.117, 0.86]], [[0.216, 0.996], [0.208, 0.844], [0.227, 0.808]], [[0.347, 0.996], [0.343, 0.8], [0.480, 0.292]], [[0.635, 0.004], [0.511, 0.676], [0.656, 0.208]], [[0.787, 0], [0.760, 0.2], [0.795, 0.144]], [[0.905, -0.004], [0.899, 0.164], [0.944, 0.144]], [[1, 0]]]; + exports.easeInOutBounce = easeInOutBounce; + + var _default = new Map([['linear', linear], ['easeInSine', easeInSine], ['easeOutSine', easeOutSine], ['easeInOutSine', easeInOutSine], ['easeInQuad', easeInQuad], ['easeOutQuad', easeOutQuad], ['easeInOutQuad', easeInOutQuad], ['easeInCubic', easeInCubic], ['easeOutCubic', easeOutCubic], ['easeInOutCubic', easeInOutCubic], ['easeInQuart', easeInQuart], ['easeOutQuart', easeOutQuart], ['easeInOutQuart', easeInOutQuart], ['easeInQuint', easeInQuint], ['easeOutQuint', easeOutQuint], ['easeInOutQuint', easeInOutQuint], ['easeInBack', easeInBack], ['easeOutBack', easeOutBack], ['easeInOutBack', easeInOutBack], ['easeInElastic', easeInElastic], ['easeOutElastic', easeOutElastic], ['easeInOutElastic', easeInOutElastic], ['easeInBounce', easeInBounce], ['easeOutBounce', easeOutBounce], ['easeInOutBounce', easeInOutBounce]]); + + exports["default"] = _default; + }); + + unwrapExports(curves); + var curves_1 = curves.easeInOutBounce; + var curves_2 = curves.easeOutBounce; + var curves_3 = curves.easeInBounce; + var curves_4 = curves.easeInOutElastic; + var curves_5 = curves.easeOutElastic; + var curves_6 = curves.easeInElastic; + var curves_7 = curves.easeInOutBack; + var curves_8 = curves.easeOutBack; + var curves_9 = curves.easeInBack; + var curves_10 = curves.easeInOutQuint; + var curves_11 = curves.easeOutQuint; + var curves_12 = curves.easeInQuint; + var curves_13 = curves.easeInOutQuart; + var curves_14 = curves.easeOutQuart; + var curves_15 = curves.easeInQuart; + var curves_16 = curves.easeInOutCubic; + var curves_17 = curves.easeOutCubic; + var curves_18 = curves.easeInCubic; + var curves_19 = curves.easeInOutQuad; + var curves_20 = curves.easeOutQuad; + var curves_21 = curves.easeInQuad; + var curves_22 = curves.easeInOutSine; + var curves_23 = curves.easeOutSine; + var curves_24 = curves.easeInSine; + var curves_25 = curves.linear; + + var lib$2 = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.transition = transition; + exports.injectNewCurve = injectNewCurve; + exports["default"] = void 0; + + var _slicedToArray2 = interopRequireDefault(slicedToArray); + + var _typeof2 = interopRequireDefault(_typeof_1); + + var _curves = interopRequireDefault(curves); + + var defaultTransitionBC = 'linear'; + /** + * @description Get the N-frame animation state by the start and end state + * of the animation and the easing curve + * @param {String|Array} tBC Easing curve name or data + * @param {Number|Array|Object} startState Animation start state + * @param {Number|Array|Object} endState Animation end state + * @param {Number} frameNum Number of Animation frames + * @param {Boolean} deep Whether to use recursive mode + * @return {Array|Boolean} State of each frame of the animation (Invalid input will return false) + */ + + function transition(tBC) { + var startState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + var endState = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + var frameNum = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 30; + var deep = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; + if (!checkParams.apply(void 0, arguments)) return false; + + try { + // Get the transition bezier curve + var bezierCurve = getBezierCurve(tBC); // Get the progress of each frame state + + var frameStateProgress = getFrameStateProgress(bezierCurve, frameNum); // If the recursion mode is not enabled or the state type is Number, the shallow state calculation is performed directly. + + if (!deep || typeof endState === 'number') return getTransitionState(startState, endState, frameStateProgress); + return recursionTransitionState(startState, endState, frameStateProgress); + } catch (_unused) { + console.warn('Transition parameter may be abnormal!'); + return [endState]; + } + } + /** + * @description Check if the parameters are legal + * @param {String} tBC Name of transition bezier curve + * @param {Any} startState Transition start state + * @param {Any} endState Transition end state + * @param {Number} frameNum Number of transition frames + * @return {Boolean} Is the parameter legal + */ + + + function checkParams(tBC) { + var startState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var endState = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + var frameNum = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 30; + + if (!tBC || startState === false || endState === false || !frameNum) { + console.error('transition: Missing Parameters!'); + return false; + } + + if ((0, _typeof2["default"])(startState) !== (0, _typeof2["default"])(endState)) { + console.error('transition: Inconsistent Status Types!'); + return false; + } + + var stateType = (0, _typeof2["default"])(endState); + + if (stateType === 'string' || stateType === 'boolean' || !tBC.length) { + console.error('transition: Unsupported Data Type of State!'); + return false; + } + + if (!_curves["default"].has(tBC) && !(tBC instanceof Array)) { + console.warn('transition: Transition curve not found, default curve will be used!'); + } + + return true; + } + /** + * @description Get the transition bezier curve + * @param {String} tBC Name of transition bezier curve + * @return {Array} Bezier curve data + */ + + + function getBezierCurve(tBC) { + var bezierCurve = ''; + + if (_curves["default"].has(tBC)) { + bezierCurve = _curves["default"].get(tBC); + } else if (tBC instanceof Array) { + bezierCurve = tBC; + } else { + bezierCurve = _curves["default"].get(defaultTransitionBC); + } + + return bezierCurve; + } + /** + * @description Get the progress of each frame state + * @param {Array} bezierCurve Transition bezier curve + * @param {Number} frameNum Number of transition frames + * @return {Array} Progress of each frame state + */ + + + function getFrameStateProgress(bezierCurve, frameNum) { + var tMinus = 1 / (frameNum - 1); + var tState = new Array(frameNum).fill(0).map(function (t, i) { + return i * tMinus; + }); + var frameState = tState.map(function (t) { + return getFrameStateFromT(bezierCurve, t); + }); + return frameState; + } + /** + * @description Get the progress of the corresponding frame according to t + * @param {Array} bezierCurve Transition bezier curve + * @param {Number} t Current frame t + * @return {Number} Progress of current frame + */ + + + function getFrameStateFromT(bezierCurve, t) { + var tBezierCurvePoint = getBezierCurvePointFromT(bezierCurve, t); + var bezierCurvePointT = getBezierCurvePointTFromReT(tBezierCurvePoint, t); + return getBezierCurveTState(tBezierCurvePoint, bezierCurvePointT); + } + /** + * @description Get the corresponding sub-curve according to t + * @param {Array} bezierCurve Transition bezier curve + * @param {Number} t Current frame t + * @return {Array} Sub-curve of t + */ + + + function getBezierCurvePointFromT(bezierCurve, t) { + var lastIndex = bezierCurve.length - 1; + var begin = '', + end = ''; + bezierCurve.findIndex(function (item, i) { + if (i === lastIndex) return; + begin = item; + end = bezierCurve[i + 1]; + var currentMainPointX = begin[0][0]; + var nextMainPointX = end[0][0]; + return t >= currentMainPointX && t < nextMainPointX; + }); + var p0 = begin[0]; + var p1 = begin[2] || begin[0]; + var p2 = end[1] || end[0]; + var p3 = end[0]; + return [p0, p1, p2, p3]; + } + /** + * @description Get local t based on t and sub-curve + * @param {Array} bezierCurve Sub-curve + * @param {Number} t Current frame t + * @return {Number} local t of sub-curve + */ + + + function getBezierCurvePointTFromReT(bezierCurve, t) { + var reBeginX = bezierCurve[0][0]; + var reEndX = bezierCurve[3][0]; + var xMinus = reEndX - reBeginX; + var tMinus = t - reBeginX; + return tMinus / xMinus; + } + /** + * @description Get the curve progress of t + * @param {Array} bezierCurve Sub-curve + * @param {Number} t Current frame t + * @return {Number} Progress of current frame + */ + + + function getBezierCurveTState(_ref, t) { + var _ref2 = (0, _slicedToArray2["default"])(_ref, 4), + _ref2$ = (0, _slicedToArray2["default"])(_ref2[0], 2), + p0 = _ref2$[1], + _ref2$2 = (0, _slicedToArray2["default"])(_ref2[1], 2), + p1 = _ref2$2[1], + _ref2$3 = (0, _slicedToArray2["default"])(_ref2[2], 2), + p2 = _ref2$3[1], + _ref2$4 = (0, _slicedToArray2["default"])(_ref2[3], 2), + p3 = _ref2$4[1]; + + var pow = Math.pow; + var tMinus = 1 - t; + var result1 = p0 * pow(tMinus, 3); + var result2 = 3 * p1 * t * pow(tMinus, 2); + var result3 = 3 * p2 * pow(t, 2) * tMinus; + var result4 = p3 * pow(t, 3); + return 1 - (result1 + result2 + result3 + result4); + } + /** + * @description Get transition state according to frame progress + * @param {Any} startState Transition start state + * @param {Any} endState Transition end state + * @param {Array} frameState Frame state progress + * @return {Array} Transition frame state + */ + + + function getTransitionState(begin, end, frameState) { + var stateType = 'object'; + if (typeof begin === 'number') stateType = 'number'; + if (begin instanceof Array) stateType = 'array'; + if (stateType === 'number') return getNumberTransitionState(begin, end, frameState); + if (stateType === 'array') return getArrayTransitionState(begin, end, frameState); + if (stateType === 'object') return getObjectTransitionState(begin, end, frameState); + return frameState.map(function (t) { + return end; + }); + } + /** + * @description Get the transition data of the number type + * @param {Number} startState Transition start state + * @param {Number} endState Transition end state + * @param {Array} frameState Frame state progress + * @return {Array} Transition frame state + */ + + + function getNumberTransitionState(begin, end, frameState) { + var minus = end - begin; + return frameState.map(function (s) { + return begin + minus * s; + }); + } + /** + * @description Get the transition data of the array type + * @param {Array} startState Transition start state + * @param {Array} endState Transition end state + * @param {Array} frameState Frame state progress + * @return {Array} Transition frame state + */ + + + function getArrayTransitionState(begin, end, frameState) { + var minus = end.map(function (v, i) { + if (typeof v !== 'number') return false; + return v - begin[i]; + }); + return frameState.map(function (s) { + return minus.map(function (v, i) { + if (v === false) return end[i]; + return begin[i] + v * s; + }); + }); + } + /** + * @description Get the transition data of the object type + * @param {Object} startState Transition start state + * @param {Object} endState Transition end state + * @param {Array} frameState Frame state progress + * @return {Array} Transition frame state + */ + + + function getObjectTransitionState(begin, end, frameState) { + var keys = Object.keys(end); + var beginValue = keys.map(function (k) { + return begin[k]; + }); + var endValue = keys.map(function (k) { + return end[k]; + }); + var arrayState = getArrayTransitionState(beginValue, endValue, frameState); + return arrayState.map(function (item) { + var frameData = {}; + item.forEach(function (v, i) { + return frameData[keys[i]] = v; + }); + return frameData; + }); + } + /** + * @description Get the transition state data by recursion + * @param {Array|Object} startState Transition start state + * @param {Array|Object} endState Transition end state + * @param {Array} frameState Frame state progress + * @return {Array} Transition frame state + */ + + + function recursionTransitionState(begin, end, frameState) { + var state = getTransitionState(begin, end, frameState); + + var _loop = function _loop(key) { + var bTemp = begin[key]; + var eTemp = end[key]; + if ((0, _typeof2["default"])(eTemp) !== 'object') return "continue"; + var data = recursionTransitionState(bTemp, eTemp, frameState); + state.forEach(function (fs, i) { + return fs[key] = data[i]; + }); + }; + + for (var key in end) { + var _ret = _loop(key); + + if (_ret === "continue") continue; + } + + return state; + } + /** + * @description Inject new curve into curves as config + * @param {Any} key The key of curve + * @param {Array} curve Bezier curve data + * @return {Undefined} No return + */ + + + function injectNewCurve(key, curve) { + if (!key || !curve) { + console.error('InjectNewCurve Missing Parameters!'); + return; + } + + _curves["default"].set(key, curve); + } + + var _default = transition; + exports["default"] = _default; + }); + + unwrapExports(lib$2); + var lib_1$1 = lib$2.transition; + var lib_2$1 = lib$2.injectNewCurve; + + var graph_class = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports["default"] = void 0; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + var _style = _interopRequireDefault(style_class); + + var _transition = _interopRequireDefault(lib$2); + + + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + + function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + + function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + + function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + + function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } + + function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } + + function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } + + function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + /** + * @description Class Graph + * @param {Object} graph Graph default configuration + * @param {Object} config Graph config + * @return {Graph} Instance of Graph + */ + var Graph = function Graph(graph, config) { + _classCallCheck(this, Graph); + + config = (0, util.deepClone)(config, true); + var defaultConfig = { + /** + * @description Weather to render graph + * @type {Boolean} + * @default visible = true + */ + visible: true, + + /** + * @description Whether to enable drag + * @type {Boolean} + * @default drag = false + */ + drag: false, + + /** + * @description Whether to enable hover + * @type {Boolean} + * @default hover = false + */ + hover: false, + + /** + * @description Graph rendering index + * Give priority to index high graph in rendering + * @type {Number} + * @example index = 1 + */ + index: 1, + + /** + * @description Animation delay time(ms) + * @type {Number} + * @default animationDelay = 0 + */ + animationDelay: 0, + + /** + * @description Number of animation frames + * @type {Number} + * @default animationFrame = 30 + */ + animationFrame: 30, + + /** + * @description Animation dynamic curve (Supported by transition) + * @type {String} + * @default animationCurve = 'linear' + * @link https://github.com/jiaming743/Transition + */ + animationCurve: 'linear', + + /** + * @description Weather to pause graph animation + * @type {Boolean} + * @default animationPause = false + */ + animationPause: false, + + /** + * @description Rectangular hover detection zone + * Use this method for hover detection first + * @type {Null|Array} + * @default hoverRect = null + * @example hoverRect = [0, 0, 100, 100] // [Rect start x, y, Rect width, height] + */ + hoverRect: null, + + /** + * @description Mouse enter event handler + * @type {Function|Null} + * @default mouseEnter = null + */ + mouseEnter: null, + + /** + * @description Mouse outer event handler + * @type {Function|Null} + * @default mouseOuter = null + */ + mouseOuter: null, + + /** + * @description Mouse click event handler + * @type {Function|Null} + * @default click = null + */ + click: null + }; + var configAbleNot = { + status: 'static', + animationRoot: [], + animationKeys: [], + animationFrameState: [], + cache: {} + }; + if (!config.shape) config.shape = {}; + if (!config.style) config.style = {}; + var shape = Object.assign({}, graph.shape, config.shape); + Object.assign(defaultConfig, config, configAbleNot); + Object.assign(this, graph, defaultConfig); + this.shape = shape; + this.style = new _style["default"](config.style); + this.addedProcessor(); + }; + /** + * @description Processor of added + * @return {Undefined} Void + */ + + + exports["default"] = Graph; + + Graph.prototype.addedProcessor = function () { + if (typeof this.setGraphCenter === 'function') this.setGraphCenter(null, this); // The life cycle 'added" + + if (typeof this.added === 'function') this.added(this); + }; + /** + * @description Processor of draw + * @param {CRender} render Instance of CRender + * @param {Graph} graph Instance of Graph + * @return {Undefined} Void + */ + + + Graph.prototype.drawProcessor = function (render, graph) { + var ctx = render.ctx; + graph.style.initStyle(ctx); + if (typeof this.beforeDraw === 'function') this.beforeDraw(this, render); + graph.draw(render, graph); + if (typeof this.drawed === 'function') this.drawed(this, render); + graph.style.restoreTransform(ctx); + }; + /** + * @description Processor of hover check + * @param {Array} position Mouse Position + * @param {Graph} graph Instance of Graph + * @return {Boolean} Result of hover check + */ + + + Graph.prototype.hoverCheckProcessor = function (position, _ref) { + var hoverRect = _ref.hoverRect, + style = _ref.style, + hoverCheck = _ref.hoverCheck; + var graphCenter = style.graphCenter, + rotate = style.rotate, + scale = style.scale, + translate = style.translate; + + if (graphCenter) { + if (rotate) position = (0, util.getRotatePointPos)(-rotate, position, graphCenter); + if (scale) position = (0, util.getScalePointPos)(scale.map(function (s) { + return 1 / s; + }), position, graphCenter); + if (translate) position = (0, util.getTranslatePointPos)(translate.map(function (v) { + return v * -1; + }), position); + } + + if (hoverRect) return util.checkPointIsInRect.apply(void 0, [position].concat(_toConsumableArray(hoverRect))); + return hoverCheck(position, this); + }; + /** + * @description Processor of move + * @param {Event} e Mouse movement event + * @return {Undefined} Void + */ + + + Graph.prototype.moveProcessor = function (e) { + this.move(e, this); + if (typeof this.beforeMove === 'function') this.beforeMove(e, this); + if (typeof this.setGraphCenter === 'function') this.setGraphCenter(e, this); + if (typeof this.moved === 'function') this.moved(e, this); + }; + /** + * @description Update graph state + * @param {String} attrName Updated attribute name + * @param {Any} change Updated value + * @return {Undefined} Void + */ + + + Graph.prototype.attr = function (attrName) { + var change = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; + if (!attrName || change === undefined) return false; + var isObject = _typeof(this[attrName]) === 'object'; + if (isObject) change = (0, util.deepClone)(change, true); + var render = this.render; + + if (attrName === 'style') { + this.style.update(change); + } else if (isObject) { + Object.assign(this[attrName], change); + } else { + this[attrName] = change; + } + + if (attrName === 'index') render.sortGraphsByIndex(); + render.drawAllGraph(); + }; + /** + * @description Update graphics state (with animation) + * Only shape and style attributes are supported + * @param {String} attrName Updated attribute name + * @param {Any} change Updated value + * @param {Boolean} wait Whether to store the animation waiting + * for the next animation request + * @return {Promise} Animation Promise + */ + + + Graph.prototype.animation = + /*#__PURE__*/ + function () { + var _ref2 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee2(attrName, change) { + var wait, + changeRoot, + changeKeys, + beforeState, + animationFrame, + animationCurve, + animationDelay, + animationFrameState, + render, + _args2 = arguments; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + wait = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : false; + + if (!(attrName !== 'shape' && attrName !== 'style')) { + _context2.next = 4; + break; + } + + console.error('Only supported shape and style animation!'); + return _context2.abrupt("return"); + + case 4: + change = (0, util.deepClone)(change, true); + if (attrName === 'style') this.style.colorProcessor(change); + changeRoot = this[attrName]; + changeKeys = Object.keys(change); + beforeState = {}; + changeKeys.forEach(function (key) { + return beforeState[key] = changeRoot[key]; + }); + animationFrame = this.animationFrame, animationCurve = this.animationCurve, animationDelay = this.animationDelay; + animationFrameState = (0, _transition["default"])(animationCurve, beforeState, change, animationFrame, true); + this.animationRoot.push(changeRoot); + this.animationKeys.push(changeKeys); + this.animationFrameState.push(animationFrameState); + + if (!wait) { + _context2.next = 17; + break; + } + + return _context2.abrupt("return"); + + case 17: + if (!(animationDelay > 0)) { + _context2.next = 20; + break; + } + + _context2.next = 20; + return delay(animationDelay); + + case 20: + render = this.render; + return _context2.abrupt("return", new Promise( + /*#__PURE__*/ + function () { + var _ref3 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee(resolve) { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return render.launchAnimation(); + + case 2: + resolve(); + + case 3: + case "end": + return _context.stop(); + } + } + }, _callee); + })); + + return function (_x3) { + return _ref3.apply(this, arguments); + }; + }())); + + case 22: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + + return function (_x, _x2) { + return _ref2.apply(this, arguments); + }; + }(); + /** + * @description Extract the next frame of data from the animation queue + * and update the graph state + * @return {Undefined} Void + */ + + + Graph.prototype.turnNextAnimationFrame = function (timeStamp) { + var animationDelay = this.animationDelay, + animationRoot = this.animationRoot, + animationKeys = this.animationKeys, + animationFrameState = this.animationFrameState, + animationPause = this.animationPause; + if (animationPause) return; + if (Date.now() - timeStamp < animationDelay) return; + animationRoot.forEach(function (root, i) { + animationKeys[i].forEach(function (key) { + root[key] = animationFrameState[i][0][key]; + }); + }); + animationFrameState.forEach(function (stateItem, i) { + stateItem.shift(); + var noFrame = stateItem.length === 0; + if (noFrame) animationRoot[i] = null; + if (noFrame) animationKeys[i] = null; + }); + this.animationFrameState = animationFrameState.filter(function (state) { + return state.length; + }); + this.animationRoot = animationRoot.filter(function (root) { + return root; + }); + this.animationKeys = animationKeys.filter(function (keys) { + return keys; + }); + }; + /** + * @description Skip to the last frame of animation + * @return {Undefined} Void + */ + + + Graph.prototype.animationEnd = function () { + var animationFrameState = this.animationFrameState, + animationKeys = this.animationKeys, + animationRoot = this.animationRoot, + render = this.render; + animationRoot.forEach(function (root, i) { + var currentKeys = animationKeys[i]; + var lastState = animationFrameState[i].pop(); + currentKeys.forEach(function (key) { + return root[key] = lastState[key]; + }); + }); + this.animationFrameState = []; + this.animationKeys = []; + this.animationRoot = []; + return render.drawAllGraph(); + }; + /** + * @description Pause animation behavior + * @return {Undefined} Void + */ + + + Graph.prototype.pauseAnimation = function () { + this.attr('animationPause', true); + }; + /** + * @description Try animation behavior + * @return {Undefined} Void + */ + + + Graph.prototype.playAnimation = function () { + var render = this.render; + this.attr('animationPause', false); + return new Promise( + /*#__PURE__*/ + function () { + var _ref4 = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee3(resolve) { + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + _context3.next = 2; + return render.launchAnimation(); + + case 2: + resolve(); + + case 3: + case "end": + return _context3.stop(); + } + } + }, _callee3); + })); + + return function (_x4) { + return _ref4.apply(this, arguments); + }; + }()); + }; + /** + * @description Processor of delete + * @param {CRender} render Instance of CRender + * @return {Undefined} Void + */ + + + Graph.prototype.delProcessor = function (render) { + var _this = this; + + var graphs = render.graphs; + var index = graphs.findIndex(function (graph) { + return graph === _this; + }); + if (index === -1) return; + if (typeof this.beforeDelete === 'function') this.beforeDelete(this); + graphs.splice(index, 1, null); + if (typeof this.deleted === 'function') this.deleted(this); + }; + /** + * @description Return a timed release Promise + * @param {Number} time Release time + * @return {Promise} A timed release Promise + */ + + + function delay(time) { + return new Promise(function (resolve) { + setTimeout(resolve, time); + }); + } + }); + + unwrapExports(graph_class); + + var crender_class = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports["default"] = void 0; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + var _color = _interopRequireDefault(lib); + + var _bezierCurve = _interopRequireDefault(lib$1); + + + + var _graphs = _interopRequireDefault(graphs_1); + + var _graph = _interopRequireDefault(graph_class); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + + function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } + + function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + + function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } + + function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } + + function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } + + function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + /** + * @description Class of CRender + * @param {Object} canvas Canvas DOM + * @return {CRender} Instance of CRender + */ + var CRender = function CRender(canvas) { + _classCallCheck(this, CRender); + + if (!canvas) { + console.error('CRender Missing parameters!'); + return; + } + + var ctx = canvas.getContext('2d'); + var clientWidth = canvas.clientWidth, + clientHeight = canvas.clientHeight; + var area = [clientWidth, clientHeight]; + canvas.setAttribute('width', clientWidth); + canvas.setAttribute('height', clientHeight); + /** + * @description Context of the canvas + * @type {Object} + * @example ctx = canvas.getContext('2d') + */ + + this.ctx = ctx; + /** + * @description Width and height of the canvas + * @type {Array} + * @example area = [300,100] + */ + + this.area = area; + /** + * @description Whether render is in animation rendering + * @type {Boolean} + * @example animationStatus = true|false + */ + + this.animationStatus = false; + /** + * @description Added graph + * @type {[Graph]} + * @example graphs = [Graph, Graph, ...] + */ + + this.graphs = []; + /** + * @description Color plugin + * @type {Object} + * @link https://github.com/jiaming743/color + */ + + this.color = _color["default"]; + /** + * @description Bezier Curve plugin + * @type {Object} + * @link https://github.com/jiaming743/BezierCurve + */ + + this.bezierCurve = _bezierCurve["default"]; // bind event handler + + canvas.addEventListener('mousedown', mouseDown.bind(this)); + canvas.addEventListener('mousemove', mouseMove.bind(this)); + canvas.addEventListener('mouseup', mouseUp.bind(this)); + }; + /** + * @description Clear canvas drawing area + * @return {Undefined} Void + */ + + + exports["default"] = CRender; + + CRender.prototype.clearArea = function () { + var _this$ctx; + + var area = this.area; + + (_this$ctx = this.ctx).clearRect.apply(_this$ctx, [0, 0].concat(_toConsumableArray(area))); + }; + /** + * @description Add graph to render + * @param {Object} config Graph configuration + * @return {Graph} Graph instance + */ + + + CRender.prototype.add = function () { + var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var name = config.name; + + if (!name) { + console.error('add Missing parameters!'); + return; + } + + var graphConfig = _graphs["default"].get(name); + + if (!graphConfig) { + console.warn('No corresponding graph configuration found!'); + return; + } + + var graph = new _graph["default"](graphConfig, config); + if (!graph.validator(graph)) return; + graph.render = this; + this.graphs.push(graph); + this.sortGraphsByIndex(); + this.drawAllGraph(); + return graph; + }; + /** + * @description Sort the graph by index + * @return {Undefined} Void + */ + + + CRender.prototype.sortGraphsByIndex = function () { + var graphs = this.graphs; + graphs.sort(function (a, b) { + if (a.index > b.index) return 1; + if (a.index === b.index) return 0; + if (a.index < b.index) return -1; + }); + }; + /** + * @description Delete graph in render + * @param {Graph} graph The graph to be deleted + * @return {Undefined} Void + */ + + + CRender.prototype.delGraph = function (graph) { + if (typeof graph.delProcessor !== 'function') return; + graph.delProcessor(this); + this.graphs = this.graphs.filter(function (graph) { + return graph; + }); + this.drawAllGraph(); + }; + /** + * @description Delete all graph in render + * @return {Undefined} Void + */ + + + CRender.prototype.delAllGraph = function () { + var _this = this; + + this.graphs.forEach(function (graph) { + return graph.delProcessor(_this); + }); + this.graphs = this.graphs.filter(function (graph) { + return graph; + }); + this.drawAllGraph(); + }; + /** + * @description Draw all the graphs in the render + * @return {Undefined} Void + */ + + + CRender.prototype.drawAllGraph = function () { + var _this2 = this; + + this.clearArea(); + this.graphs.filter(function (graph) { + return graph && graph.visible; + }).forEach(function (graph) { + return graph.drawProcessor(_this2, graph); + }); + }; + /** + * @description Animate the graph whose animation queue is not empty + * and the animationPause is equal to false + * @return {Promise} Animation Promise + */ + + + CRender.prototype.launchAnimation = function () { + var _this3 = this; + + var animationStatus = this.animationStatus; + if (animationStatus) return; + this.animationStatus = true; + return new Promise(function (resolve) { + animation.call(_this3, function () { + _this3.animationStatus = false; + resolve(); + }, Date.now()); + }); + }; + /** + * @description Try to animate every graph + * @param {Function} callback Callback in animation end + * @param {Number} timeStamp Time stamp of animation start + * @return {Undefined} Void + */ + + + function animation(callback, timeStamp) { + var graphs = this.graphs; + + if (!animationAble(graphs)) { + callback(); + return; + } + + graphs.forEach(function (graph) { + return graph.turnNextAnimationFrame(timeStamp); + }); + this.drawAllGraph(); + requestAnimationFrame(animation.bind(this, callback, timeStamp)); + } + /** + * @description Find if there are graph that can be animated + * @param {[Graph]} graphs + * @return {Boolean} + */ + + + function animationAble(graphs) { + return graphs.find(function (graph) { + return !graph.animationPause && graph.animationFrameState.length; + }); + } + /** + * @description Handler of CRender mousedown event + * @return {Undefined} Void + */ + + + function mouseDown(e) { + var graphs = this.graphs; + var hoverGraph = graphs.find(function (graph) { + return graph.status === 'hover'; + }); + if (!hoverGraph) return; + hoverGraph.status = 'active'; + } + /** + * @description Handler of CRender mousemove event + * @return {Undefined} Void + */ + + + function mouseMove(e) { + var offsetX = e.offsetX, + offsetY = e.offsetY; + var position = [offsetX, offsetY]; + var graphs = this.graphs; + var activeGraph = graphs.find(function (graph) { + return graph.status === 'active' || graph.status === 'drag'; + }); + + if (activeGraph) { + if (!activeGraph.drag) return; + + if (typeof activeGraph.move !== 'function') { + console.error('No move method is provided, cannot be dragged!'); + return; + } + + activeGraph.moveProcessor(e); + activeGraph.status = 'drag'; + return; + } + + var hoverGraph = graphs.find(function (graph) { + return graph.status === 'hover'; + }); + var hoverAbleGraphs = graphs.filter(function (graph) { + return graph.hover && (typeof graph.hoverCheck === 'function' || graph.hoverRect); + }); + var hoveredGraph = hoverAbleGraphs.find(function (graph) { + return graph.hoverCheckProcessor(position, graph); + }); + + if (hoveredGraph) { + document.body.style.cursor = hoveredGraph.style.hoverCursor; + } else { + document.body.style.cursor = 'default'; + } + + var hoverGraphMouseOuterIsFun = false, + hoveredGraphMouseEnterIsFun = false; + if (hoverGraph) hoverGraphMouseOuterIsFun = typeof hoverGraph.mouseOuter === 'function'; + if (hoveredGraph) hoveredGraphMouseEnterIsFun = typeof hoveredGraph.mouseEnter === 'function'; + if (!hoveredGraph && !hoverGraph) return; + + if (!hoveredGraph && hoverGraph) { + if (hoverGraphMouseOuterIsFun) hoverGraph.mouseOuter(e, hoverGraph); + hoverGraph.status = 'static'; + return; + } + + if (hoveredGraph && hoveredGraph === hoverGraph) return; + + if (hoveredGraph && !hoverGraph) { + if (hoveredGraphMouseEnterIsFun) hoveredGraph.mouseEnter(e, hoveredGraph); + hoveredGraph.status = 'hover'; + return; + } + + if (hoveredGraph && hoverGraph && hoveredGraph !== hoverGraph) { + if (hoverGraphMouseOuterIsFun) hoverGraph.mouseOuter(e, hoverGraph); + hoverGraph.status = 'static'; + if (hoveredGraphMouseEnterIsFun) hoveredGraph.mouseEnter(e, hoveredGraph); + hoveredGraph.status = 'hover'; + } + } + /** + * @description Handler of CRender mouseup event + * @return {Undefined} Void + */ + + + function mouseUp(e) { + var graphs = this.graphs; + var activeGraph = graphs.find(function (graph) { + return graph.status === 'active'; + }); + var dragGraph = graphs.find(function (graph) { + return graph.status === 'drag'; + }); + if (activeGraph && typeof activeGraph.click === 'function') activeGraph.click(e, activeGraph); + graphs.forEach(function (graph) { + return graph && (graph.status = 'static'); + }); + if (activeGraph) activeGraph.status = 'hover'; + if (dragGraph) dragGraph.status = 'hover'; + } + /** + * @description Clone Graph + * @param {Graph} graph The target to be cloned + * @return {Graph} Cloned graph + */ + + + CRender.prototype.clone = function (graph) { + var style = graph.style.getStyle(); + + var clonedGraph = _objectSpread({}, graph, { + style: style + }); + + delete clonedGraph.render; + clonedGraph = (0, util.deepClone)(clonedGraph, true); + return this.add(clonedGraph); + }; + }); + + unwrapExports(crender_class); + + var lib$3 = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "extendNewGraph", { + enumerable: true, + get: function get() { + return graphs_1.extendNewGraph; + } + }); + Object.defineProperty(exports, "injectNewCurve", { + enumerable: true, + get: function get() { + return lib$2.injectNewCurve; + } + }); + exports["default"] = void 0; + + var _crender = _interopRequireDefault(crender_class); + + + + + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + + var _default = _crender["default"]; + exports["default"] = _default; + }); + + var CRender = unwrapExports(lib$3); + + function _toConsumableArray$1(arr) { return _arrayWithoutHoles$1(arr) || _iterableToArray$1(arr) || _nonIterableSpread$1(); } + + function _nonIterableSpread$1() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } + + function _iterableToArray$1(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } + + function _arrayWithoutHoles$1(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } + + var pie = { + shape: { + rx: 0, + ry: 0, + ir: 0, + or: 0, + startAngle: 0, + endAngle: 0, + clockWise: true + }, + validator: function validator(_ref) { + var shape = _ref.shape; + var keys = ['rx', 'ry', 'ir', 'or', 'startAngle', 'endAngle']; + + if (keys.find(function (key) { + return typeof shape[key] !== 'number'; + })) { + console.error('Pie shape configuration is abnormal!'); + return false; + } + + return true; + }, + draw: function draw(_ref2, _ref3) { + var ctx = _ref2.ctx; + var shape = _ref3.shape; + ctx.beginPath(); + var rx = shape.rx, + ry = shape.ry, + ir = shape.ir, + or = shape.or, + startAngle = shape.startAngle, + endAngle = shape.endAngle, + clockWise = shape.clockWise; + rx = parseInt(rx) + 0.5; + ry = parseInt(ry) + 0.5; + ctx.arc(rx, ry, ir > 0 ? ir : 0, startAngle, endAngle, !clockWise); + var connectPoint1 = (0, util.getCircleRadianPoint)(rx, ry, or, endAngle).map(function (p) { + return parseInt(p) + 0.5; + }); + var connectPoint2 = (0, util.getCircleRadianPoint)(rx, ry, ir, startAngle).map(function (p) { + return parseInt(p) + 0.5; + }); + ctx.lineTo.apply(ctx, _toConsumableArray$1(connectPoint1)); + ctx.arc(rx, ry, or > 0 ? or : 0, endAngle, startAngle, clockWise); + ctx.lineTo.apply(ctx, _toConsumableArray$1(connectPoint2)); + ctx.closePath(); + ctx.stroke(); + ctx.fill(); + } + }; + var agArc = { + shape: { + rx: 0, + ry: 0, + r: 0, + startAngle: 0, + endAngle: 0, + gradientStartAngle: null, + gradientEndAngle: null + }, + validator: function validator(_ref4) { + var shape = _ref4.shape; + var keys = ['rx', 'ry', 'r', 'startAngle', 'endAngle']; + + if (keys.find(function (key) { + return typeof shape[key] !== 'number'; + })) { + console.error('AgArc shape configuration is abnormal!'); + return false; + } + + return true; + }, + draw: function draw(_ref5, _ref6) { + var ctx = _ref5.ctx; + var shape = _ref6.shape, + style = _ref6.style; + var gradient = style.gradient; + gradient = gradient.map(function (cv) { + return (0, lib.getColorFromRgbValue)(cv); + }); + + if (gradient.length === 1) { + gradient = [gradient[0], gradient[0]]; + } + + var gradientArcNum = gradient.length - 1; + var gradientStartAngle = shape.gradientStartAngle, + gradientEndAngle = shape.gradientEndAngle, + startAngle = shape.startAngle, + endAngle = shape.endAngle, + r = shape.r, + rx = shape.rx, + ry = shape.ry; + if (gradientStartAngle === null) gradientStartAngle = startAngle; + if (gradientEndAngle === null) gradientEndAngle = endAngle; + var angleGap = (gradientEndAngle - gradientStartAngle) / gradientArcNum; + if (angleGap === Math.PI * 2) angleGap = Math.PI * 2 - 0.001; + + for (var i = 0; i < gradientArcNum; i++) { + ctx.beginPath(); + var startPoint = (0, util.getCircleRadianPoint)(rx, ry, r, startAngle + angleGap * i); + var endPoint = (0, util.getCircleRadianPoint)(rx, ry, r, startAngle + angleGap * (i + 1)); + var color = (0, util$1.getLinearGradientColor)(ctx, startPoint, endPoint, [gradient[i], gradient[i + 1]]); + var arcStartAngle = startAngle + angleGap * i; + var arcEndAngle = startAngle + angleGap * (i + 1); + var doBreak = false; + + if (arcEndAngle > endAngle) { + arcEndAngle = endAngle; + doBreak = true; + } + + ctx.arc(rx, ry, r, arcStartAngle, arcEndAngle); + ctx.strokeStyle = color; + ctx.stroke(); + if (doBreak) break; + } + } + }; + var numberText = { + shape: { + number: [], + content: '', + position: [0, 0], + toFixed: 0 + }, + validator: function validator(_ref7) { + var shape = _ref7.shape; + var number = shape.number, + content = shape.content, + position = shape.position; + + if (!(number instanceof Array) || typeof content !== 'string' || !(position instanceof Array)) { + console.error('NumberText shape configuration is abnormal!'); + return false; + } + + return true; + }, + draw: function draw(_ref8, _ref9) { + var ctx = _ref8.ctx; + var shape = _ref9.shape; + ctx.beginPath(); + var number = shape.number, + content = shape.content, + position = shape.position, + toFixed = shape.toFixed; + var textSegments = content.split('{nt}'); + var lastSegmentIndex = textSegments.length - 1; + var textString = ''; + textSegments.forEach(function (t, i) { + var currentNumber = number[i]; + if (i === lastSegmentIndex) currentNumber = ''; + if (typeof currentNumber === 'number') currentNumber = currentNumber.toFixed(toFixed); + textString += t + (currentNumber || ''); + }); + ctx.closePath(); + ctx.strokeText.apply(ctx, [textString].concat(_toConsumableArray$1(position))); + ctx.fillText.apply(ctx, [textString].concat(_toConsumableArray$1(position))); + } + }; + var lineIcon = { + shape: { + x: 0, + y: 0, + w: 0, + h: 0 + }, + validator: function validator(_ref10) { + var shape = _ref10.shape; + var x = shape.x, + y = shape.y, + w = shape.w, + h = shape.h; + + if (typeof x !== 'number' || typeof y !== 'number' || typeof w !== 'number' || typeof h !== 'number') { + console.error('lineIcon shape configuration is abnormal!'); + return false; + } + + return true; + }, + draw: function draw(_ref11, _ref12) { + var ctx = _ref11.ctx; + var shape = _ref12.shape; + ctx.beginPath(); + var x = shape.x, + y = shape.y, + w = shape.w, + h = shape.h; + var halfH = h / 2; + ctx.strokeStyle = ctx.fillStyle; + ctx.moveTo(x, y + halfH); + ctx.lineTo(x + w, y + halfH); + ctx.lineWidth = 1; + ctx.stroke(); + ctx.beginPath(); + var radius = halfH - 5 * 2; + if (radius <= 0) radius = 3; + ctx.arc(x + w / 2, y + halfH, radius, 0, Math.PI * 2); + ctx.lineWidth = 5; + ctx.stroke(); + ctx.fillStyle = '#fff'; + ctx.fill(); + }, + hoverCheck: function hoverCheck(position, _ref13) { + var shape = _ref13.shape; + var x = shape.x, + y = shape.y, + w = shape.w, + h = shape.h; + return (0, util.checkPointIsInRect)(position, x, y, w, h); + }, + setGraphCenter: function setGraphCenter(e, _ref14) { + var shape = _ref14.shape, + style = _ref14.style; + var x = shape.x, + y = shape.y, + w = shape.w, + h = shape.h; + style.graphCenter = [x + w / 2, y + h / 2]; + } + }; + (0, lib$3.extendNewGraph)('pie', pie); + (0, lib$3.extendNewGraph)('agArc', agArc); + (0, lib$3.extendNewGraph)('numberText', numberText); + (0, lib$3.extendNewGraph)('lineIcon', lineIcon); + + var color = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.colorConfig = void 0; + var colorConfig = ['#37a2da', '#32c5e9', '#67e0e3', '#9fe6b8', '#ffdb5c', '#ff9f7f', '#fb7293', '#e062ae', '#e690d1', '#e7bcf3', '#9d96f5', '#8378ea', '#96bfff']; + exports.colorConfig = colorConfig; + }); + + unwrapExports(color); + var color_1 = color.colorConfig; + + var grid = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.gridConfig = void 0; + var gridConfig = { + /** + * @description Grid left margin + * @type {String|Number} + * @default left = '10%' + * @example left = '10%' | 10 + */ + left: '10%', + + /** + * @description Grid right margin + * @type {String|Number} + * @default right = '10%' + * @example right = '10%' | 10 + */ + right: '10%', + + /** + * @description Grid top margin + * @type {String|Number} + * @default top = 60 + * @example top = '10%' | 60 + */ + top: 60, + + /** + * @description Grid bottom margin + * @type {String|Number} + * @default bottom = 60 + * @example bottom = '10%' | 60 + */ + bottom: 60, + + /** + * @description Grid default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: { + fill: 'rgba(0, 0, 0, 0)' + }, + + /** + * @description Grid render level + * Priority rendering high level + * @type {Number} + * @default rLevel = -30 + */ + rLevel: -30, + + /** + * @description Grid animation curve + * @type {String} + * @default animationCurve = 'easeOutCubic' + */ + animationCurve: 'easeOutCubic', + + /** + * @description Grid animation frame + * @type {Number} + * @default animationFrame = 50 + */ + animationFrame: 30 + }; + exports.gridConfig = gridConfig; + }); + + unwrapExports(grid); + var grid_1 = grid.gridConfig; + + var axis = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.yAxisConfig = exports.xAxisConfig = void 0; + var xAxisConfig = { + /** + * @description Axis name + * @type {String} + * @default name = '' + */ + name: '', + + /** + * @description Whether to display this axis + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Axis position + * @type {String} + * @default position = 'bottom' + * @example position = 'bottom' | 'top' + */ + position: 'bottom', + + /** + * @description Name gap + * @type {Number} + * @default nameGap = 15 + */ + nameGap: 15, + + /** + * @description Name location + * @type {String} + * @default nameLocation = 'end' + * @example nameLocation = 'end' | 'center' | 'start' + */ + nameLocation: 'end', + + /** + * @description Name default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + nameTextStyle: { + fill: '#333', + fontSize: 10 + }, + + /** + * @description Axis min value + * @type {String|Number} + * @default min = '20%' + * @example min = '20%' | 0 + */ + min: '20%', + + /** + * @description Axis max value + * @type {String|Number} + * @default max = '20%' + * @example max = '20%' | 0 + */ + max: '20%', + + /** + * @description Axis value interval + * @type {Number} + * @default interval = null + * @example interval = 100 + */ + interval: null, + + /** + * @description Min interval + * @type {Number} + * @default minInterval = null + * @example minInterval = 1 + */ + minInterval: null, + + /** + * @description Max interval + * @type {Number} + * @default maxInterval = null + * @example maxInterval = 100 + */ + maxInterval: null, + + /** + * @description Boundary gap + * @type {Boolean} + * @default boundaryGap = null + * @example boundaryGap = true + */ + boundaryGap: null, + + /** + * @description Axis split number + * @type {Number} + * @default splitNumber = 5 + */ + splitNumber: 5, + + /** + * @description Axis line configuration + * @type {Object} + */ + axisLine: { + /** + * @description Whether to display axis line + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Axis line default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: { + stroke: '#333', + lineWidth: 1 + } + }, + + /** + * @description Axis tick configuration + * @type {Object} + */ + axisTick: { + /** + * @description Whether to display axis tick + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Axis tick default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: { + stroke: '#333', + lineWidth: 1 + } + }, + + /** + * @description Axis label configuration + * @type {Object} + */ + axisLabel: { + /** + * @description Whether to display axis label + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Axis label formatter + * @type {String|Function} + * @default formatter = null + * @example formatter = '{value}件' + * @example formatter = (dataItem) => (dataItem.value) + */ + formatter: null, + + /** + * @description Axis label default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: { + fill: '#333', + fontSize: 10, + rotate: 0 + } + }, + + /** + * @description Axis split line configuration + * @type {Object} + */ + splitLine: { + /** + * @description Whether to display axis split line + * @type {Boolean} + * @default show = false + */ + show: false, + + /** + * @description Axis split line default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: { + stroke: '#d4d4d4', + lineWidth: 1 + } + }, + + /** + * @description X axis render level + * Priority rendering high level + * @type {Number} + * @default rLevel = -20 + */ + rLevel: -20, + + /** + * @description X axis animation curve + * @type {String} + * @default animationCurve = 'easeOutCubic' + */ + animationCurve: 'easeOutCubic', + + /** + * @description X axis animation frame + * @type {Number} + * @default animationFrame = 50 + */ + animationFrame: 50 + }; + exports.xAxisConfig = xAxisConfig; + var yAxisConfig = { + /** + * @description Axis name + * @type {String} + * @default name = '' + */ + name: '', + + /** + * @description Whether to display this axis + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Axis position + * @type {String} + * @default position = 'left' + * @example position = 'left' | 'right' + */ + position: 'left', + + /** + * @description Name gap + * @type {Number} + * @default nameGap = 15 + */ + nameGap: 15, + + /** + * @description Name location + * @type {String} + * @default nameLocation = 'end' + * @example nameLocation = 'end' | 'center' | 'start' + */ + nameLocation: 'end', + + /** + * @description name default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + nameTextStyle: { + fill: '#333', + fontSize: 10 + }, + + /** + * @description Axis min value + * @type {String|Number} + * @default min = '20%' + * @example min = '20%' | 0 + */ + min: '20%', + + /** + * @description Axis max value + * @type {String|Number} + * @default max = '20%' + * @example max = '20%' | 0 + */ + max: '20%', + + /** + * @description Axis value interval + * @type {Number} + * @default interval = null + * @example interval = 100 + */ + interval: null, + + /** + * @description Min interval + * @type {Number} + * @default minInterval = null + * @example minInterval = 1 + */ + minInterval: null, + + /** + * @description Max interval + * @type {Number} + * @default maxInterval = null + * @example maxInterval = 100 + */ + maxInterval: null, + + /** + * @description Boundary gap + * @type {Boolean} + * @default boundaryGap = null + * @example boundaryGap = true + */ + boundaryGap: null, + + /** + * @description Axis split number + * @type {Number} + * @default splitNumber = 5 + */ + splitNumber: 5, + + /** + * @description Axis line configuration + * @type {Object} + */ + axisLine: { + /** + * @description Whether to display axis line + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Axis line default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: { + stroke: '#333', + lineWidth: 1 + } + }, + + /** + * @description Axis tick configuration + * @type {Object} + */ + axisTick: { + /** + * @description Whether to display axis tick + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Axis tick default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: { + stroke: '#333', + lineWidth: 1 + } + }, + + /** + * @description Axis label configuration + * @type {Object} + */ + axisLabel: { + /** + * @description Whether to display axis label + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Axis label formatter + * @type {String|Function} + * @default formatter = null + * @example formatter = '{value}件' + * @example formatter = (dataItem) => (dataItem.value) + */ + formatter: null, + + /** + * @description Axis label default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: { + fill: '#333', + fontSize: 10, + rotate: 0 + } + }, + + /** + * @description Axis split line configuration + * @type {Object} + */ + splitLine: { + /** + * @description Whether to display axis split line + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Axis split line default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: { + stroke: '#d4d4d4', + lineWidth: 1 + } + }, + + /** + * @description Y axis render level + * Priority rendering high level + * @type {Number} + * @default rLevel = -20 + */ + rLevel: -20, + + /** + * @description Y axis animation curve + * @type {String} + * @default animationCurve = 'easeOutCubic' + */ + animationCurve: 'easeOutCubic', + + /** + * @description Y axis animation frame + * @type {Number} + * @default animationFrame = 50 + */ + animationFrame: 50 + }; + exports.yAxisConfig = yAxisConfig; + }); + + unwrapExports(axis); + var axis_1 = axis.yAxisConfig; + var axis_2 = axis.xAxisConfig; + + var title = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.titleConfig = void 0; + var titleConfig = { + /** + * @description Whether to display title + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Title text + * @type {String} + * @default text = '' + */ + text: '', + + /** + * @description Title offset + * @type {Array} + * @default offset = [0, -20] + */ + offset: [0, -20], + + /** + * @description Title default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: { + fill: '#333', + fontSize: 17, + fontWeight: 'bold', + textAlign: 'center', + textBaseline: 'bottom' + }, + + /** + * @description Title render level + * Priority rendering high level + * @type {Number} + * @default rLevel = 20 + */ + rLevel: 20, + + /** + * @description Title animation curve + * @type {String} + * @default animationCurve = 'easeOutCubic' + */ + animationCurve: 'easeOutCubic', + + /** + * @description Title animation frame + * @type {Number} + * @default animationFrame = 50 + */ + animationFrame: 50 + }; + exports.titleConfig = titleConfig; + }); + + unwrapExports(title); + var title_1 = title.titleConfig; + + var line = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.lineConfig = void 0; + var lineConfig = { + /** + * @description Whether to display this line chart + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Legend name + * @type {String} + * @default name = '' + */ + name: '', + + /** + * @description Smooth line + * @type {Boolean} + * @default smooth = false + */ + smooth: false, + + /** + * @description Line x axis index + * @type {Number} + * @default xAxisIndex = 0 + * @example xAxisIndex = 0 | 1 + */ + xAxisIndex: 0, + + /** + * @description Line y axis index + * @type {Number} + * @default yAxisIndex = 0 + * @example yAxisIndex = 0 | 1 + */ + yAxisIndex: 0, + + /** + * @description Line chart data + * @type {Array} + * @default data = [] + * @example data = [100, 200, 300] + */ + data: [], + + /** + * @description Line default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + lineStyle: { + lineWidth: 1 + }, + + /** + * @description Line point configuration + * @type {Object} + */ + linePoint: { + /** + * @description Whether to display line point + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Line point radius + * @type {Number} + * @default radius = 2 + */ + radius: 2, + + /** + * @description Line point default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: { + fill: '#fff', + lineWidth: 1 + } + }, + + /** + * @description Line area configuration + * @type {Object} + */ + lineArea: { + /** + * @description Whether to display line area + * @type {Boolean} + * @default show = false + */ + show: false, + + /** + * @description Line area gradient color (Hex|rgb|rgba) + * @type {Array} + * @default gradient = [] + */ + gradient: [], + + /** + * @description Line area style default configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: { + opacity: 0.5 + } + }, + + /** + * @description Line label configuration + * @type {Object} + */ + label: { + /** + * @description Whether to display line label + * @type {Boolean} + * @default show = false + */ + show: false, + + /** + * @description Line label position + * @type {String} + * @default position = 'top' + * @example position = 'top' | 'center' | 'bottom' + */ + position: 'top', + + /** + * @description Line label offset + * @type {Array} + * @default offset = [0, -10] + */ + offset: [0, -10], + + /** + * @description Line label formatter + * @type {String|Function} + * @default formatter = null + * @example formatter = '{value}件' + * @example formatter = (dataItem) => (dataItem.value) + */ + formatter: null, + + /** + * @description Line label default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: { + fontSize: 10 + } + }, + + /** + * @description Line chart render level + * Priority rendering high level + * @type {Number} + * @default rLevel = 10 + */ + rLevel: 10, + + /** + * @description Line animation curve + * @type {String} + * @default animationCurve = 'easeOutCubic' + */ + animationCurve: 'easeOutCubic', + + /** + * @description Line animation frame + * @type {Number} + * @default animationFrame = 50 + */ + animationFrame: 50 + }; + exports.lineConfig = lineConfig; + }); + + unwrapExports(line); + var line_1 = line.lineConfig; + + var bar = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.barConfig = void 0; + var barConfig = { + /** + * @description Whether to display this bar chart + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Legend name + * @type {String} + * @default name = '' + */ + name: '', + + /** + * @description Bar shape type + * @type {String} + * @default shapeType = 'normal' + * @example shapeType = 'normal' | 'leftEchelon' | 'rightEchelon' + */ + shapeType: 'normal', + + /** + * @description Echelon bar sharpness offset + * @type {Number} + * @default echelonOffset = 10 + */ + echelonOffset: 10, + + /** + * @description Bar width + * This property should be set on the last 'bar' series + * in this coordinate system to take effect and will be in effect + * for all 'bar' series in this coordinate system + * @type {String|Number} + * @default barWidth = 'auto' + * @example barWidth = 'auto' | '10%' | 20 + */ + barWidth: 'auto', + + /** + * @description Bar gap + * This property should be set on the last 'bar' series + * in this coordinate system to take effect and will be in effect + * for all 'bar' series in this coordinate system + * @type {String|Number} + * @default barGap = '30%' + * @example barGap = '30%' | 30 + */ + barGap: '30%', + + /** + * @description Bar category gap + * This property should be set on the last 'bar' series + * in this coordinate system to take effect and will be in effect + * for all 'bar' series in this coordinate system + * @type {String|Number} + * @default barCategoryGap = '20%' + * @example barCategoryGap = '20%' | 20 + */ + barCategoryGap: '20%', + + /** + * @description Bar x axis index + * @type {Number} + * @default xAxisIndex = 0 + * @example xAxisIndex = 0 | 1 + */ + xAxisIndex: 0, + + /** + * @description Bar y axis index + * @type {Number} + * @default yAxisIndex = 0 + * @example yAxisIndex = 0 | 1 + */ + yAxisIndex: 0, + + /** + * @description Bar chart data + * @type {Array} + * @default data = [] + * @example data = [100, 200, 300] + */ + data: [], + + /** + * @description Background bar configuration + * @type {Object} + */ + backgroundBar: { + /** + * @description Whether to display background bar + * @type {Boolean} + * @default show = false + */ + show: false, + + /** + * @description Background bar width + * @type {String|Number} + * @default width = 'auto' + * @example width = 'auto' | '30%' | 30 + */ + width: 'auto', + + /** + * @description Background bar default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: { + fill: 'rgba(200, 200, 200, .4)' + } + }, + + /** + * @description Bar label configuration + * @type {Object} + */ + label: { + /** + * @description Whether to display bar label + * @type {Boolean} + * @default show = false + */ + show: false, + + /** + * @description Bar label position + * @type {String} + * @default position = 'top' + * @example position = 'top' | 'center' | 'bottom' + */ + position: 'top', + + /** + * @description Bar label offset + * @type {Array} + * @default offset = [0, -10] + */ + offset: [0, -10], + + /** + * @description Bar label formatter + * @type {String|Function} + * @default formatter = null + * @example formatter = '{value}件' + * @example formatter = (dataItem) => (dataItem.value) + */ + formatter: null, + + /** + * @description Bar label default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: { + fontSize: 10 + } + }, + + /** + * @description Bar gradient configuration + * @type {Object} + */ + gradient: { + /** + * @description Gradient color (Hex|rgb|rgba) + * @type {Array} + * @default color = [] + */ + color: [], + + /** + * @description Local gradient + * @type {Boolean} + * @default local = true + */ + local: true + }, + + /** + * @description Bar style default configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + barStyle: {}, + + /** + * @description Bar chart render level + * Priority rendering high level + * @type {Number} + * @default rLevel = 0 + */ + rLevel: 0, + + /** + * @description Bar animation curve + * @type {String} + * @default animationCurve = 'easeOutCubic' + */ + animationCurve: 'easeOutCubic', + + /** + * @description Bar animation frame + * @type {Number} + * @default animationFrame = 50 + */ + animationFrame: 50 + }; + exports.barConfig = barConfig; + }); + + unwrapExports(bar); + var bar_1 = bar.barConfig; + + var pie$1 = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.pieConfig = void 0; + var pieConfig = { + /** + * @description Whether to display this pie chart + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Legend name + * @type {String} + * @default name = '' + */ + name: '', + + /** + * @description Radius of pie + * @type {String|Number} + * @default radius = '50%' + * @example radius = '50%' | 100 + */ + radius: '50%', + + /** + * @description Center point of pie + * @type {Array} + * @default center = ['50%','50%'] + * @example center = ['50%','50%'] | [100, 100] + */ + center: ['50%', '50%'], + + /** + * @description Pie chart start angle + * @type {Number} + * @default startAngle = -Math.PI / 2 + * @example startAngle = -Math.PI + */ + startAngle: -Math.PI / 2, + + /** + * @description Whether to enable rose type + * @type {Boolean} + * @default roseType = false + */ + roseType: false, + + /** + * @description Automatic sorting in rose type + * @type {Boolean} + * @default roseSort = true + */ + roseSort: true, + + /** + * @description Rose radius increasing + * @type {String|Number} + * @default roseIncrement = 'auto' + * @example roseIncrement = 'auto' | '10%' | 10 + */ + roseIncrement: 'auto', + + /** + * @description Pie chart data + * @type {Array} + * @default data = [] + */ + data: [], + + /** + * @description Pie inside label configuration + * @type {Object} + */ + insideLabel: { + /** + * @description Whether to display inside label + * @type {Boolean} + * @default show = false + */ + show: false, + + /** + * @description Label formatter + * @type {String|Function} + * @default formatter = '{percent}%' + * @example formatter = '${name}-{value}-{percent}%' + * @example formatter = (dataItem) => (dataItem.name) + */ + formatter: '{percent}%', + + /** + * @description Label default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: { + fontSize: 10, + fill: '#fff', + textAlign: 'center', + textBaseline: 'middle' + } + }, + + /** + * @description Pie Outside label configuration + * @type {Object} + */ + outsideLabel: { + /** + * @description Whether to display outside label + * @type {Boolean} + * @default show = false + */ + show: true, + + /** + * @description Label formatter + * @type {String|Function} + * @default formatter = '{name}' + * @example formatter = '${name}-{value}-{percent}%' + * @example formatter = (dataItem) => (dataItem.name) + */ + formatter: '{name}', + + /** + * @description Label default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: { + fontSize: 11 + }, + + /** + * @description Gap beteen label line bended place and pie + * @type {String|Number} + * @default labelLineBendGap = '20%' + * @example labelLineBendGap = '20%' | 20 + */ + labelLineBendGap: '20%', + + /** + * @description Label line end length + * @type {Number} + * @default labelLineEndLength = 50 + */ + labelLineEndLength: 50, + + /** + * @description Label line default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + labelLineStyle: { + lineWidth: 1 + } + }, + + /** + * @description Pie default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + pieStyle: {}, + + /** + * @description Percentage fractional precision + * @type {Number} + * @default percentToFixed = 0 + */ + percentToFixed: 0, + + /** + * @description Pie chart render level + * Priority rendering high level + * @type {Number} + * @default rLevel = 10 + */ + rLevel: 10, + + /** + * @description Animation delay gap + * @type {Number} + * @default animationDelayGap = 60 + */ + animationDelayGap: 60, + + /** + * @description Pie animation curve + * @type {String} + * @default animationCurve = 'easeOutCubic' + */ + animationCurve: 'easeOutCubic', + + /** + * @description Pie start animation curve + * @type {String} + * @default startAnimationCurve = 'easeOutBack' + */ + startAnimationCurve: 'easeOutBack', + + /** + * @description Pie animation frame + * @type {Number} + * @default animationFrame = 50 + */ + animationFrame: 50 + }; + exports.pieConfig = pieConfig; + }); + + unwrapExports(pie$1); + var pie_1 = pie$1.pieConfig; + + var radarAxis = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.radarAxisConfig = void 0; + var radarAxisConfig = { + /** + * @description Whether to display this radar axis + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Center point of radar axis + * @type {Array} + * @default center = ['50%','50%'] + * @example center = ['50%','50%'] | [100, 100] + */ + center: ['50%', '50%'], + + /** + * @description Radius of radar axis + * @type {String|Number} + * @default radius = '65%' + * @example radius = '65%' | 100 + */ + radius: '65%', + + /** + * @description Radar axis start angle + * @type {Number} + * @default startAngle = -Math.PI / 2 + * @example startAngle = -Math.PI + */ + startAngle: -Math.PI / 2, + + /** + * @description Radar axis split number + * @type {Number} + * @default splitNum = 5 + */ + splitNum: 5, + + /** + * @description Whether to enable polygon radar axis + * @type {Boolean} + * @default polygon = false + */ + polygon: false, + + /** + * @description Axis label configuration + * @type {Object} + */ + axisLabel: { + /** + * @description Whether to display axis label + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Label gap between label and radar axis + * @type {Number} + * @default labelGap = 15 + */ + labelGap: 15, + + /** + * @description Label color (Hex|rgb|rgba), will cover style.fill + * @type {Array} + * @default color = [] + */ + color: [], + + /** + * @description Axis label default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: { + fill: '#333' + } + }, + + /** + * @description Axis line configuration + * @type {Object} + */ + axisLine: { + /** + * @description Whether to display axis line + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Line color (Hex|rgb|rgba), will cover style.stroke + * @type {Array} + * @default color = [] + */ + color: [], + + /** + * @description Axis label default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: { + stroke: '#999', + lineWidth: 1 + } + }, + + /** + * @description Split line configuration + * @type {Object} + */ + splitLine: { + /** + * @description Whether to display split line + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Line color (Hex|rgb|rgba), will cover style.stroke + * @type {Array} + * @default color = [] + */ + color: [], + + /** + * @description Split line default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: { + stroke: '#d4d4d4', + lineWidth: 1 + } + }, + + /** + * @description Split area configuration + * @type {Object} + */ + splitArea: { + /** + * @description Whether to display split area + * @type {Boolean} + * @default show = false + */ + show: false, + + /** + * @description Area color (Hex|rgb|rgba), will cover style.stroke + * @type {Array} + * @default color = [] + */ + color: ['#f5f5f5', '#e6e6e6'], + + /** + * @description Split area default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: {} + }, + + /** + * @description Bar chart render level + * Priority rendering high level + * @type {Number} + * @default rLevel = -10 + */ + rLevel: -10, + + /** + * @description Radar axis animation curve + * @type {String} + * @default animationCurve = 'easeOutCubic' + */ + animationCurve: 'easeOutCubic', + + /** + * @description Radar axis animation frame + * @type {Number} + * @default animationFrame = 50 + */ + animationFrane: 50 + }; + exports.radarAxisConfig = radarAxisConfig; + }); + + unwrapExports(radarAxis); + var radarAxis_1 = radarAxis.radarAxisConfig; + + var radar = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.radarConfig = void 0; + var radarConfig = { + /** + * @description Whether to display this radar + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Legend name + * @type {String} + * @default name = '' + */ + name: '', + + /** + * @description Radar chart data + * @type {Array} + * @default data = [] + * @example data = [100, 200, 300] + */ + data: [], + + /** + * @description Radar default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + radarStyle: { + lineWidth: 1 + }, + + /** + * @description Radar point configuration + * @type {Object} + */ + point: { + /** + * @description Whether to display radar point + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Point radius + * @type {Number} + * @default radius = 2 + */ + radius: 2, + + /** + * @description Radar point default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: { + fill: '#fff' + } + }, + + /** + * @description Radar label configuration + * @type {Object} + */ + label: { + /** + * @description Whether to display radar label + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Label position offset + * @type {Array} + * @default offset = [0, 0] + */ + offset: [0, 0], + + /** + * @description Label gap between label and radar + * @type {Number} + * @default labelGap = 5 + */ + labelGap: 5, + + /** + * @description Label formatter + * @type {String|Function} + * @default formatter = null + * @example formatter = 'Score-{value}' + * @example formatter = (label) => (label) + */ + formatter: null, + + /** + * @description Radar label default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: { + fontSize: 10 + } + }, + + /** + * @description Radar chart render level + * Priority rendering high level + * @type {Number} + * @default rLevel = 10 + */ + rLevel: 10, + + /** + * @description Radar animation curve + * @type {String} + * @default animationCurve = 'easeOutCubic' + */ + animationCurve: 'easeOutCubic', + + /** + * @description Radar animation frame + * @type {Number} + * @default animationFrame = 50 + */ + animationFrane: 50 + }; + exports.radarConfig = radarConfig; + }); + + unwrapExports(radar); + var radar_1 = radar.radarConfig; + + var gauge = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.gaugeConfig = void 0; + var gaugeConfig = { + /** + * @description Whether to display this gauge + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Legend name + * @type {String} + * @default name = '' + */ + name: '', + + /** + * @description Radius of gauge + * @type {String|Number} + * @default radius = '60%' + * @example radius = '60%' | 100 + */ + radius: '60%', + + /** + * @description Center point of gauge + * @type {Array} + * @default center = ['50%','50%'] + * @example center = ['50%','50%'] | [100, 100] + */ + center: ['50%', '50%'], + + /** + * @description Gauge start angle + * @type {Number} + * @default startAngle = -(Math.PI / 4) * 5 + * @example startAngle = -Math.PI + */ + startAngle: -(Math.PI / 4) * 5, + + /** + * @description Gauge end angle + * @type {Number} + * @default endAngle = Math.PI / 4 + * @example endAngle = 0 + */ + endAngle: Math.PI / 4, + + /** + * @description Gauge min value + * @type {Number} + * @default min = 0 + */ + min: 0, + + /** + * @description Gauge max value + * @type {Number} + * @default max = 100 + */ + max: 100, + + /** + * @description Gauge split number + * @type {Number} + * @default splitNum = 5 + */ + splitNum: 5, + + /** + * @description Gauge arc line width + * @type {Number} + * @default arcLineWidth = 15 + */ + arcLineWidth: 15, + + /** + * @description Gauge chart data + * @type {Array} + * @default data = [] + */ + data: [], + + /** + * @description Data item arc default style configuration + * @type {Object} + * @default dataItemStyle = {Configuration Of Class Style} + */ + dataItemStyle: {}, + + /** + * @description Axis tick configuration + * @type {Object} + */ + axisTick: { + /** + * @description Whether to display axis tick + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Axis tick length + * @type {Number} + * @default tickLength = 6 + */ + tickLength: 6, + + /** + * @description Axis tick default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: { + stroke: '#999', + lineWidth: 1 + } + }, + + /** + * @description Axis label configuration + * @type {Object} + */ + axisLabel: { + /** + * @description Whether to display axis label + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Axis label data (Can be calculated automatically) + * @type {Array} + * @default data = [Number...] + */ + data: [], + + /** + * @description Axis label formatter + * @type {String|Function} + * @default formatter = null + * @example formatter = '{value}%' + * @example formatter = (labelItem) => (labelItem.value) + */ + formatter: null, + + /** + * @description Axis label gap between label and axis tick + * @type {String|Function} + * @default labelGap = 5 + */ + labelGap: 5, + + /** + * @description Axis label default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: {} + }, + + /** + * @description Gauge pointer configuration + * @type {Object} + */ + pointer: { + /** + * @description Whether to display pointer + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Pointer value index of data + * @type {Number} + * @default valueIndex = 0 (pointer.value = data[0].value) + */ + valueIndex: 0, + + /** + * @description Pointer default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: { + scale: [1, 1], + fill: '#fb7293' + } + }, + + /** + * @description Data item arc detail configuration + * @type {Object} + */ + details: { + /** + * @description Whether to display details + * @type {Boolean} + * @default show = false + */ + show: false, + + /** + * @description Details formatter + * @type {String|Function} + * @default formatter = null + * @example formatter = '{value}%' + * @example formatter = '{name}%' + * @example formatter = (dataItem) => (dataItem.value) + */ + formatter: null, + + /** + * @description Details position offset + * @type {Array} + * @default offset = [0, 0] + * @example offset = [10, 10] + */ + offset: [0, 0], + + /** + * @description Value fractional precision + * @type {Number} + * @default valueToFixed = 0 + */ + valueToFixed: 0, + + /** + * @description Details position + * @type {String} + * @default position = 'center' + * @example position = 'start' | 'center' | 'end' + */ + position: 'center', + + /** + * @description Details default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: { + fontSize: 20, + fontWeight: 'bold', + textAlign: 'center', + textBaseline: 'middle' + } + }, + + /** + * @description Gauge background arc configuration + * @type {Object} + */ + backgroundArc: { + /** + * @description Whether to display background arc + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Background arc default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + style: { + stroke: '#e0e0e0' + } + }, + + /** + * @description Gauge chart render level + * Priority rendering high level + * @type {Number} + * @default rLevel = 10 + */ + rLevel: 10, + + /** + * @description Gauge animation curve + * @type {String} + * @default animationCurve = 'easeOutCubic' + */ + animationCurve: 'easeOutCubic', + + /** + * @description Gauge animation frame + * @type {Number} + * @default animationFrame = 50 + */ + animationFrame: 50 + }; + exports.gaugeConfig = gaugeConfig; + }); + + unwrapExports(gauge); + var gauge_1 = gauge.gaugeConfig; + + var legend = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.legendConfig = void 0; + var legendConfig = { + /** + * @description Whether to display legend + * @type {Boolean} + * @default show = true + */ + show: true, + + /** + * @description Legend orient + * @type {String} + * @default orient = 'horizontal' + * @example orient = 'horizontal' | 'vertical' + */ + orient: 'horizontal', + + /** + * @description Legend left + * @type {String|Number} + * @default left = 'auto' + * @example left = 'auto' | '10%' | 10 + */ + left: 'auto', + + /** + * @description Legend right + * @type {String|Number} + * @default right = 'auto' + * @example right = 'auto' | '10%' | 10 + */ + right: 'auto', + + /** + * @description Legend top + * @type {String|Number} + * @default top = 'auto' + * @example top = 'auto' | '10%' | 10 + */ + top: 'auto', + + /** + * @description Legend bottom + * @type {String|Number} + * @default bottom = 'auto' + * @example bottom = 'auto' | '10%' | 10 + */ + bottom: 'auto', + + /** + * @description Legend item gap + * @type {Number} + * @default itemGap = 10 + */ + itemGap: 10, + + /** + * @description Icon width + * @type {Number} + * @default iconWidth = 25 + */ + iconWidth: 25, + + /** + * @description Icon height + * @type {Number} + * @default iconHeight = 10 + */ + iconHeight: 10, + + /** + * @description Whether legend is optional + * @type {Boolean} + * @default selectAble = true + */ + selectAble: true, + + /** + * @description Legend data + * @type {Array} + * @default data = [] + */ + data: [], + + /** + * @description Legend text default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + textStyle: { + fontFamily: 'Arial', + fontSize: 13, + fill: '#000' + }, + + /** + * @description Legend icon default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + iconStyle: {}, + + /** + * @description Legend text unselected default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + textUnselectedStyle: { + fontFamily: 'Arial', + fontSize: 13, + fill: '#999' + }, + + /** + * @description Legend icon unselected default style configuration + * @type {Object} + * @default style = {Configuration Of Class Style} + */ + iconUnselectedStyle: { + fill: '#999' + }, + + /** + * @description Legend render level + * Priority rendering high level + * @type {Number} + * @default rLevel = 20 + */ + rLevel: 20, + + /** + * @description Legend animation curve + * @type {String} + * @default animationCurve = 'easeOutCubic' + */ + animationCurve: 'easeOutCubic', + + /** + * @description Legend animation frame + * @type {Number} + * @default animationFrame = 50 + */ + animationFrame: 50 + }; + exports.legendConfig = legendConfig; + }); + + unwrapExports(legend); + var legend_1 = legend.legendConfig; + + var config = createCommonjsModule(function (module, exports) { + + + + + + + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.changeDefaultConfig = changeDefaultConfig; + Object.defineProperty(exports, "colorConfig", { + enumerable: true, + get: function get() { + return color.colorConfig; + } + }); + Object.defineProperty(exports, "gridConfig", { + enumerable: true, + get: function get() { + return grid.gridConfig; + } + }); + Object.defineProperty(exports, "xAxisConfig", { + enumerable: true, + get: function get() { + return axis.xAxisConfig; + } + }); + Object.defineProperty(exports, "yAxisConfig", { + enumerable: true, + get: function get() { + return axis.yAxisConfig; + } + }); + Object.defineProperty(exports, "titleConfig", { + enumerable: true, + get: function get() { + return title.titleConfig; + } + }); + Object.defineProperty(exports, "lineConfig", { + enumerable: true, + get: function get() { + return line.lineConfig; + } + }); + Object.defineProperty(exports, "barConfig", { + enumerable: true, + get: function get() { + return bar.barConfig; + } + }); + Object.defineProperty(exports, "pieConfig", { + enumerable: true, + get: function get() { + return pie$1.pieConfig; + } + }); + Object.defineProperty(exports, "radarAxisConfig", { + enumerable: true, + get: function get() { + return radarAxis.radarAxisConfig; + } + }); + Object.defineProperty(exports, "radarConfig", { + enumerable: true, + get: function get() { + return radar.radarConfig; + } + }); + Object.defineProperty(exports, "gaugeConfig", { + enumerable: true, + get: function get() { + return gauge.gaugeConfig; + } + }); + Object.defineProperty(exports, "legendConfig", { + enumerable: true, + get: function get() { + return legend.legendConfig; + } + }); + exports.keys = void 0; + + + + + + + + + + + + + + + + + + + + + + + + + + var allConfig = { + colorConfig: color.colorConfig, + gridConfig: grid.gridConfig, + xAxisConfig: axis.xAxisConfig, + yAxisConfig: axis.yAxisConfig, + titleConfig: title.titleConfig, + lineConfig: line.lineConfig, + barConfig: bar.barConfig, + pieConfig: pie$1.pieConfig, + radarAxisConfig: radarAxis.radarAxisConfig, + radarConfig: radar.radarConfig, + gaugeConfig: gauge.gaugeConfig, + legendConfig: legend.legendConfig + /** + * @description Change default configuration + * @param {String} key Configuration key + * @param {Object|Array} config Your config + * @return {Undefined} No return + */ + + }; + + function changeDefaultConfig(key, config) { + if (!allConfig["".concat(key, "Config")]) { + console.warn('Change default config Error - Invalid key!'); + return; + } + + (0, util$1.deepMerge)(allConfig["".concat(key, "Config")], config); + } + + var keys = ['color', 'title', 'legend', 'xAxis', 'yAxis', 'grid', 'radarAxis', 'line', 'bar', 'pie', 'radar', 'gauge']; + exports.keys = keys; + }); + + unwrapExports(config); + var config_1 = config.changeDefaultConfig; + var config_2 = config.keys; + + var mergeColor_1 = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.mergeColor = mergeColor; + + + + + + + + + + + + function mergeColor(chart) { + var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var defaultColor = (0, util.deepClone)(config.colorConfig, true); + var color = option.color, + series = option.series; + if (!series) series = []; + if (!color) color = []; + option.color = color = (0, util$1.deepMerge)(defaultColor, color); + if (!series.length) return; + var colorNum = color.length; + series.forEach(function (item, i) { + if (item.color) return; + item.color = color[i % colorNum]; + }); + var pies = series.filter(function (_ref) { + var type = _ref.type; + return type === 'pie'; + }); + pies.forEach(function (pie) { + return pie.data.forEach(function (di, i) { + return di.color = color[i % colorNum]; + }); + }); + var gauges = series.filter(function (_ref2) { + var type = _ref2.type; + return type === 'gauge'; + }); + gauges.forEach(function (gauge) { + return gauge.data.forEach(function (di, i) { + return di.color = color[i % colorNum]; + }); + }); + } + }); + + unwrapExports(mergeColor_1); + var mergeColor_2 = mergeColor_1.mergeColor; + + var updater_class = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.doUpdate = doUpdate; + exports.Updater = void 0; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } + + function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } + + function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } + + function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } + + function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var Updater = function Updater(config, series) { + _classCallCheck(this, Updater); + + var chart = config.chart, + key = config.key, + getGraphConfig = config.getGraphConfig; + + if (typeof getGraphConfig !== 'function') { + console.warn('Updater need function getGraphConfig!'); + return; + } + + if (!chart[key]) this.graphs = chart[key] = []; + Object.assign(this, config); + this.update(series); + }; + + exports.Updater = Updater; + + Updater.prototype.update = function (series) { + var _this = this; + + var graphs = this.graphs, + beforeUpdate = this.beforeUpdate; + delRedundanceGraph(this, series); + if (!series.length) return; + + var beforeUpdateType = _typeof(beforeUpdate); + + series.forEach(function (seriesItem, i) { + if (beforeUpdateType === 'function') beforeUpdate(graphs, seriesItem, i, _this); + var cache = graphs[i]; + + if (cache) { + changeGraphs(cache, seriesItem, i, _this); + } else { + addGraphs(graphs, seriesItem, i, _this); + } + }); + }; + + function delRedundanceGraph(updater, series) { + var graphs = updater.graphs, + render = updater.chart.render; + var cacheGraphNum = graphs.length; + var needGraphNum = series.length; + + if (cacheGraphNum > needGraphNum) { + var needDelGraphs = graphs.splice(needGraphNum); + needDelGraphs.forEach(function (item) { + return item.forEach(function (g) { + return render.delGraph(g); + }); + }); + } + } + + function changeGraphs(cache, seriesItem, i, updater) { + var getGraphConfig = updater.getGraphConfig, + render = updater.chart.render, + beforeChange = updater.beforeChange; + var configs = getGraphConfig(seriesItem, updater); + balanceGraphsNum(cache, configs, render); + cache.forEach(function (graph, j) { + var config = configs[j]; + if (typeof beforeChange === 'function') beforeChange(graph, config); + updateGraphConfigByKey(graph, config); + }); + } + + function balanceGraphsNum(graphs, graphConfig, render) { + var cacheGraphNum = graphs.length; + var needGraphNum = graphConfig.length; + + if (needGraphNum > cacheGraphNum) { + var lastCacheGraph = graphs.slice(-1)[0]; + var needAddGraphNum = needGraphNum - cacheGraphNum; + var needAddGraphs = new Array(needAddGraphNum).fill(0).map(function (foo) { + return render.clone(lastCacheGraph); + }); + graphs.push.apply(graphs, _toConsumableArray(needAddGraphs)); + } else if (needGraphNum < cacheGraphNum) { + var needDelCache = graphs.splice(needGraphNum); + needDelCache.forEach(function (g) { + return render.delGraph(g); + }); + } + } + + function addGraphs(graphs, seriesItem, i, updater) { + var getGraphConfig = updater.getGraphConfig, + getStartGraphConfig = updater.getStartGraphConfig, + chart = updater.chart; + var render = chart.render; + var startConfigs = null; + if (typeof getStartGraphConfig === 'function') startConfigs = getStartGraphConfig(seriesItem, updater); + var configs = getGraphConfig(seriesItem, updater); + if (!configs.length) return; + + if (startConfigs) { + graphs[i] = startConfigs.map(function (config) { + return render.add(config); + }); + graphs[i].forEach(function (graph, i) { + var config = configs[i]; + updateGraphConfigByKey(graph, config); + }); + } else { + graphs[i] = configs.map(function (config) { + return render.add(config); + }); + } + + var afterAddGraph = updater.afterAddGraph; + if (typeof afterAddGraph === 'function') afterAddGraph(graphs[i]); + } + + function updateGraphConfigByKey(graph, config) { + var keys = Object.keys(config); + keys.forEach(function (key) { + if (key === 'shape' || key === 'style') { + graph.animation(key, config[key], true); + } else { + graph[key] = config[key]; + } + }); + } + + function doUpdate() { + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + chart = _ref.chart, + series = _ref.series, + key = _ref.key, + getGraphConfig = _ref.getGraphConfig, + getStartGraphConfig = _ref.getStartGraphConfig, + beforeChange = _ref.beforeChange, + beforeUpdate = _ref.beforeUpdate, + afterAddGraph = _ref.afterAddGraph; + + if (chart[key]) { + chart[key].update(series); + } else { + chart[key] = new Updater({ + chart: chart, + key: key, + getGraphConfig: getGraphConfig, + getStartGraphConfig: getStartGraphConfig, + beforeChange: beforeChange, + beforeUpdate: beforeUpdate, + afterAddGraph: afterAddGraph + }, series); + } + } + }); + + unwrapExports(updater_class); + var updater_class_1 = updater_class.doUpdate; + var updater_class_2 = updater_class.Updater; + + var title_1$1 = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.title = title; + + + + + + + + + + + + + + + + + + function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } + + function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + + function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + + function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + + function title(chart) { + var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var title = []; + + if (option.title) { + title[0] = (0, util$1.deepMerge)((0, util.deepClone)(config.titleConfig, true), option.title); + } + + (0, updater_class.doUpdate)({ + chart: chart, + series: title, + key: 'title', + getGraphConfig: getTitleConfig + }); + } + + function getTitleConfig(titleItem, updater) { + var animationCurve = config.titleConfig.animationCurve, + animationFrame = config.titleConfig.animationFrame, + rLevel = config.titleConfig.rLevel; + var shape = getTitleShape(titleItem, updater); + var style = getTitleStyle(titleItem); + return [{ + name: 'text', + index: rLevel, + visible: titleItem.show, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: shape, + style: style + }]; + } + + function getTitleShape(titleItem, updater) { + var offset = titleItem.offset, + text = titleItem.text; + var _updater$chart$gridAr = updater.chart.gridArea, + x = _updater$chart$gridAr.x, + y = _updater$chart$gridAr.y, + w = _updater$chart$gridAr.w; + + var _offset = _slicedToArray(offset, 2), + ox = _offset[0], + oy = _offset[1]; + + return { + content: text, + position: [x + w / 2 + ox, y + oy] + }; + } + + function getTitleStyle(titleItem) { + var style = titleItem.style; + return style; + } + }); + + unwrapExports(title_1$1); + var title_2 = title_1$1.title; + + var grid_1$1 = createCommonjsModule(function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.grid = grid; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } + + function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + + function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + + function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + + function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } + + function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + + function grid(chart) { + var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var grid = option.grid; + grid = (0, util$1.deepMerge)((0, util.deepClone)(config.gridConfig, true), grid || {}); + (0, updater_class.doUpdate)({ + chart: chart, + series: [grid], + key: 'grid', + getGraphConfig: getGridConfig + }); + } + + function getGridConfig(gridItem, updater) { + var animationCurve = gridItem.animationCurve, + animationFrame = gridItem.animationFrame, + rLevel = gridItem.rLevel; + var shape = getGridShape(gridItem, updater); + var style = getGridStyle(gridItem); + updater.chart.gridArea = _objectSpread({}, shape); + return [{ + name: 'rect', + index: rLevel, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: shape, + style: style + }]; + } + + function getGridShape(gridItem, updater) { + var _updater$chart$render = _slicedToArray(updater.chart.render.area, 2), + w = _updater$chart$render[0], + h = _updater$chart$render[1]; + + var left = getNumberValue(gridItem.left, w); + var right = getNumberValue(gridItem.right, w); + var top = getNumberValue(gridItem.top, h); + var bottom = getNumberValue(gridItem.bottom, h); + var width = w - left - right; + var height = h - top - bottom; + return { + x: left, + y: top, + w: width, + h: height + }; + } + + function getNumberValue(val, all) { + if (typeof val === 'number') return val; + if (typeof val !== 'string') return 0; + return all * parseInt(val) / 100; + } + + function getGridStyle(gridItem) { + var style = gridItem.style; + return style; + } + }); + + unwrapExports(grid_1$1); + var grid_2 = grid_1$1.grid; + + var $indexOf = _arrayIncludes(false); + var $native = [].indexOf; + var NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0; + + _export(_export.P + _export.F * (NEGATIVE_ZERO || !_strictMethod($native)), 'Array', { + // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex]) + indexOf: function indexOf(searchElement /* , fromIndex = 0 */) { + return NEGATIVE_ZERO + // convert -0 to +0 + ? $native.apply(this, arguments) || 0 + : $indexOf(this, searchElement, arguments[1]); + } + }); + + var axis_1$1 = createCommonjsModule(function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.axis = axis; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + + function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } + + function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + + function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + + function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + + function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } + + function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + + function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } + + function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } + + function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } + + function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } + + var axisConfig = { + xAxisConfig: config.xAxisConfig, + yAxisConfig: config.yAxisConfig + }; + var min = Math.min, + max = Math.max, + abs = Math.abs, + pow = Math.pow; + + function axis(chart) { + var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var xAxis = option.xAxis, + yAxis = option.yAxis, + series = option.series; + var allAxis = []; + + if (xAxis && yAxis && series) { + allAxis = getAllAxis(xAxis, yAxis); + allAxis = mergeDefaultAxisConfig(allAxis); + allAxis = allAxis.filter(function (_ref) { + var show = _ref.show; + return show; + }); + allAxis = mergeDefaultBoundaryGap(allAxis); + allAxis = calcAxisLabelData(allAxis, series); + allAxis = setAxisPosition(allAxis); + allAxis = calcAxisLinePosition(allAxis, chart); + allAxis = calcAxisTickPosition(allAxis); + allAxis = calcAxisNamePosition(allAxis); + allAxis = calcSplitLinePosition(allAxis, chart); + } + + (0, updater_class.doUpdate)({ + chart: chart, + series: allAxis, + key: 'axisLine', + getGraphConfig: getLineConfig + }); + (0, updater_class.doUpdate)({ + chart: chart, + series: allAxis, + key: 'axisTick', + getGraphConfig: getTickConfig + }); + (0, updater_class.doUpdate)({ + chart: chart, + series: allAxis, + key: 'axisLabel', + getGraphConfig: getLabelConfig + }); + (0, updater_class.doUpdate)({ + chart: chart, + series: allAxis, + key: 'axisName', + getGraphConfig: getNameConfig + }); + (0, updater_class.doUpdate)({ + chart: chart, + series: allAxis, + key: 'splitLine', + getGraphConfig: getSplitLineConfig + }); + chart.axisData = allAxis; + } + + function getAllAxis(xAxis, yAxis) { + var allXAxis = [], + allYAxis = []; + + if (xAxis instanceof Array) { + var _allXAxis; + + (_allXAxis = allXAxis).push.apply(_allXAxis, _toConsumableArray(xAxis)); + } else { + allXAxis.push(xAxis); + } + + if (yAxis instanceof Array) { + var _allYAxis; + + (_allYAxis = allYAxis).push.apply(_allYAxis, _toConsumableArray(yAxis)); + } else { + allYAxis.push(yAxis); + } + + allXAxis.splice(2); + allYAxis.splice(2); + allXAxis = allXAxis.map(function (axis, i) { + return _objectSpread({}, axis, { + index: i, + axis: 'x' + }); + }); + allYAxis = allYAxis.map(function (axis, i) { + return _objectSpread({}, axis, { + index: i, + axis: 'y' + }); + }); + return [].concat(_toConsumableArray(allXAxis), _toConsumableArray(allYAxis)); + } + + function mergeDefaultAxisConfig(allAxis) { + var xAxis = allAxis.filter(function (_ref2) { + var axis = _ref2.axis; + return axis === 'x'; + }); + var yAxis = allAxis.filter(function (_ref3) { + var axis = _ref3.axis; + return axis === 'y'; + }); + xAxis = xAxis.map(function (axis) { + return (0, util$1.deepMerge)((0, util.deepClone)(config.xAxisConfig), axis); + }); + yAxis = yAxis.map(function (axis) { + return (0, util$1.deepMerge)((0, util.deepClone)(config.yAxisConfig), axis); + }); + return [].concat(_toConsumableArray(xAxis), _toConsumableArray(yAxis)); + } + + function mergeDefaultBoundaryGap(allAxis) { + var valueAxis = allAxis.filter(function (_ref4) { + var data = _ref4.data; + return data === 'value'; + }); + var labelAxis = allAxis.filter(function (_ref5) { + var data = _ref5.data; + return data !== 'value'; + }); + valueAxis.forEach(function (axis) { + if (typeof axis.boundaryGap === 'boolean') return; + axis.boundaryGap = false; + }); + labelAxis.forEach(function (axis) { + if (typeof axis.boundaryGap === 'boolean') return; + axis.boundaryGap = true; + }); + return [].concat(_toConsumableArray(valueAxis), _toConsumableArray(labelAxis)); + } + + function calcAxisLabelData(allAxis, series) { + var valueAxis = allAxis.filter(function (_ref6) { + var data = _ref6.data; + return data === 'value'; + }); + var labelAxis = allAxis.filter(function (_ref7) { + var data = _ref7.data; + return data instanceof Array; + }); + valueAxis = calcValueAxisLabelData(valueAxis, series); + labelAxis = calcLabelAxisLabelData(labelAxis); + return [].concat(_toConsumableArray(valueAxis), _toConsumableArray(labelAxis)); + } + + function calcValueAxisLabelData(valueAxis, series) { + return valueAxis.map(function (axis) { + var minMaxValue = getValueAxisMaxMinValue(axis, series); + + var _getTrueMinMax = getTrueMinMax(axis, minMaxValue), + _getTrueMinMax2 = _slicedToArray(_getTrueMinMax, 2), + min = _getTrueMinMax2[0], + max = _getTrueMinMax2[1]; + + var interval = getValueInterval(min, max, axis); + var formatter = axis.axisLabel.formatter; + var label = []; + + if (minMaxValue[0] === minMaxValue[1]) { + label = minMaxValue; + } else if (min < 0 && max > 0) { + label = getValueAxisLabelFromZero(min, max, interval); + } else { + label = getValueAxisLabelFromMin(min, max, interval); + } + + label = label.map(function (l) { + return parseFloat(l.toFixed(2)); + }); + return _objectSpread({}, axis, { + maxValue: label.slice(-1)[0], + minValue: label[0], + label: getAfterFormatterLabel(label, formatter) + }); + }); + } + + function getValueAxisMaxMinValue(axis, series) { + series = series.filter(function (_ref8) { + var show = _ref8.show, + type = _ref8.type; + if (show === false) return false; + if (type === 'pie') return false; + return true; + }); + if (series.length === 0) return [0, 0]; + var index = axis.index, + axisType = axis.axis; + series = mergeStackData(series); + var axisName = axisType + 'Axis'; + var valueSeries = series.filter(function (s) { + return s[axisName] === index; + }); + if (!valueSeries.length) valueSeries = series; + return getSeriesMinMaxValue(valueSeries); + } + + function getSeriesMinMaxValue(series) { + if (!series) return; + var minValue = min.apply(void 0, _toConsumableArray(series.map(function (_ref9) { + var data = _ref9.data; + return min.apply(void 0, _toConsumableArray((0, util$1.filterNonNumber)(data))); + }))); + var maxValue = max.apply(void 0, _toConsumableArray(series.map(function (_ref10) { + var data = _ref10.data; + return max.apply(void 0, _toConsumableArray((0, util$1.filterNonNumber)(data))); + }))); + return [minValue, maxValue]; + } + + function mergeStackData(series) { + var seriesCloned = (0, util.deepClone)(series, true); + series.forEach(function (item, i) { + var data = (0, util$1.mergeSameStackData)(item, series); + seriesCloned[i].data = data; + }); + return seriesCloned; + } + + function getTrueMinMax(_ref11, _ref12) { + var min = _ref11.min, + max = _ref11.max, + axis = _ref11.axis; + + var _ref13 = _slicedToArray(_ref12, 2), + minValue = _ref13[0], + maxValue = _ref13[1]; + + var minType = _typeof(min), + maxType = _typeof(max); + + if (!testMinMaxType(min)) { + min = axisConfig[axis + 'AxisConfig'].min; + minType = 'string'; + } + + if (!testMinMaxType(max)) { + max = axisConfig[axis + 'AxisConfig'].max; + maxType = 'string'; + } + + if (minType === 'string') { + min = parseInt(minValue - abs(minValue * parseFloat(min) / 100)); + var lever = getValueLever(min); + min = parseFloat((min / lever - 0.1).toFixed(1)) * lever; + } + + if (maxType === 'string') { + max = parseInt(maxValue + abs(maxValue * parseFloat(max) / 100)); + + var _lever = getValueLever(max); + + max = parseFloat((max / _lever + 0.1).toFixed(1)) * _lever; + } + + return [min, max]; + } + + function getValueLever(value) { + var valueString = abs(value).toString(); + var valueLength = valueString.length; + var firstZeroIndex = valueString.replace(/0*$/g, '').indexOf('0'); + var pow10Num = valueLength - 1; + if (firstZeroIndex !== -1) pow10Num -= firstZeroIndex; + return pow(10, pow10Num); + } + + function testMinMaxType(val) { + var valType = _typeof(val); + + var isValidString = valType === 'string' && /^\d+%$/.test(val); + var isValidNumber = valType === 'number'; + return isValidString || isValidNumber; + } + + function getValueAxisLabelFromZero(min, max, interval) { + var negative = [], + positive = []; + var currentNegative = 0, + currentPositive = 0; + + do { + negative.push(currentNegative -= interval); + } while (currentNegative > min); + + do { + positive.push(currentPositive += interval); + } while (currentPositive < max); + + return [].concat(_toConsumableArray(negative.reverse()), [0], _toConsumableArray(positive)); + } + + function getValueAxisLabelFromMin(min, max, interval) { + var label = [min], + currentValue = min; + + do { + label.push(currentValue += interval); + } while (currentValue < max); + + return label; + } + + function getAfterFormatterLabel(label, formatter) { + if (!formatter) return label; + if (typeof formatter === 'string') label = label.map(function (l) { + return formatter.replace('{value}', l); + }); + if (typeof formatter === 'function') label = label.map(function (value, index) { + return formatter({ + value: value, + index: index + }); + }); + return label; + } + + function calcLabelAxisLabelData(labelAxis) { + return labelAxis.map(function (axis) { + var data = axis.data, + formatter = axis.axisLabel.formatter; + return _objectSpread({}, axis, { + label: getAfterFormatterLabel(data, formatter) + }); + }); + } + + function getValueInterval(min, max, axis) { + var interval = axis.interval, + minInterval = axis.minInterval, + maxInterval = axis.maxInterval, + splitNumber = axis.splitNumber, + axisType = axis.axis; + var config = axisConfig[axisType + 'AxisConfig']; + if (typeof interval !== 'number') interval = config.interval; + if (typeof minInterval !== 'number') minInterval = config.minInterval; + if (typeof maxInterval !== 'number') maxInterval = config.maxInterval; + if (typeof splitNumber !== 'number') splitNumber = config.splitNumber; + if (typeof interval === 'number') return interval; + var valueInterval = parseInt((max - min) / (splitNumber - 1)); + if (valueInterval.toString().length > 1) valueInterval = parseInt(valueInterval.toString().replace(/\d$/, '0')); + if (valueInterval === 0) valueInterval = 1; + if (typeof minInterval === 'number' && valueInterval < minInterval) return minInterval; + if (typeof maxInterval === 'number' && valueInterval > maxInterval) return maxInterval; + return valueInterval; + } + + function setAxisPosition(allAxis) { + var xAxis = allAxis.filter(function (_ref14) { + var axis = _ref14.axis; + return axis === 'x'; + }); + var yAxis = allAxis.filter(function (_ref15) { + var axis = _ref15.axis; + return axis === 'y'; + }); + if (xAxis[0] && !xAxis[0].position) xAxis[0].position = config.xAxisConfig.position; + + if (xAxis[1] && !xAxis[1].position) { + xAxis[1].position = xAxis[0].position === 'bottom' ? 'top' : 'bottom'; + } + + if (yAxis[0] && !yAxis[0].position) yAxis[0].position = config.yAxisConfig.position; + + if (yAxis[1] && !yAxis[1].position) { + yAxis[1].position = yAxis[0].position === 'left' ? 'right' : 'left'; + } + + return [].concat(_toConsumableArray(xAxis), _toConsumableArray(yAxis)); + } + + function calcAxisLinePosition(allAxis, chart) { + var _chart$gridArea = chart.gridArea, + x = _chart$gridArea.x, + y = _chart$gridArea.y, + w = _chart$gridArea.w, + h = _chart$gridArea.h; + allAxis = allAxis.map(function (axis) { + var position = axis.position; + var linePosition = []; + + if (position === 'left') { + linePosition = [[x, y], [x, y + h]].reverse(); + } else if (position === 'right') { + linePosition = [[x + w, y], [x + w, y + h]].reverse(); + } else if (position === 'top') { + linePosition = [[x, y], [x + w, y]]; + } else if (position === 'bottom') { + linePosition = [[x, y + h], [x + w, y + h]]; + } + + return _objectSpread({}, axis, { + linePosition: linePosition + }); + }); + return allAxis; + } + + function calcAxisTickPosition(allAxis, chart) { + return allAxis.map(function (axisItem) { + var axis = axisItem.axis, + linePosition = axisItem.linePosition, + position = axisItem.position, + label = axisItem.label, + boundaryGap = axisItem.boundaryGap; + if (typeof boundaryGap !== 'boolean') boundaryGap = axisConfig[axis + 'AxisConfig'].boundaryGap; + var labelNum = label.length; + + var _linePosition = _slicedToArray(linePosition, 2), + _linePosition$ = _slicedToArray(_linePosition[0], 2), + startX = _linePosition$[0], + startY = _linePosition$[1], + _linePosition$2 = _slicedToArray(_linePosition[1], 2), + endX = _linePosition$2[0], + endY = _linePosition$2[1]; + + var gapLength = axis === 'x' ? endX - startX : endY - startY; + var gap = gapLength / (boundaryGap ? labelNum : labelNum - 1); + var tickPosition = new Array(labelNum).fill(0).map(function (foo, i) { + if (axis === 'x') { + return [startX + gap * (boundaryGap ? i + 0.5 : i), startY]; + } + + return [startX, startY + gap * (boundaryGap ? i + 0.5 : i)]; + }); + var tickLinePosition = getTickLinePosition(axis, boundaryGap, position, tickPosition, gap); + return _objectSpread({}, axisItem, { + tickPosition: tickPosition, + tickLinePosition: tickLinePosition, + tickGap: gap + }); + }); + } + + function getTickLinePosition(axisType, boundaryGap, position, tickPosition, gap) { + var index = axisType === 'x' ? 1 : 0; + var plus = 5; + if (axisType === 'x' && position === 'top') plus = -5; + if (axisType === 'y' && position === 'left') plus = -5; + var tickLinePosition = tickPosition.map(function (lineStart) { + var lineEnd = (0, util.deepClone)(lineStart); + lineEnd[index] += plus; + return [(0, util.deepClone)(lineStart), lineEnd]; + }); + if (!boundaryGap) return tickLinePosition; + index = axisType === 'x' ? 0 : 1; + plus = gap / 2; + tickLinePosition.forEach(function (_ref16) { + var _ref17 = _slicedToArray(_ref16, 2), + lineStart = _ref17[0], + lineEnd = _ref17[1]; + + lineStart[index] += plus; + lineEnd[index] += plus; + }); + return tickLinePosition; + } + + function calcAxisNamePosition(allAxis, chart) { + return allAxis.map(function (axisItem) { + var nameGap = axisItem.nameGap, + nameLocation = axisItem.nameLocation, + position = axisItem.position, + linePosition = axisItem.linePosition; + + var _linePosition2 = _slicedToArray(linePosition, 2), + lineStart = _linePosition2[0], + lineEnd = _linePosition2[1]; + + var namePosition = _toConsumableArray(lineStart); + + if (nameLocation === 'end') namePosition = _toConsumableArray(lineEnd); + + if (nameLocation === 'center') { + namePosition[0] = (lineStart[0] + lineEnd[0]) / 2; + namePosition[1] = (lineStart[1] + lineEnd[1]) / 2; + } + + var index = 0; + if (position === 'top' && nameLocation === 'center') index = 1; + if (position === 'bottom' && nameLocation === 'center') index = 1; + if (position === 'left' && nameLocation !== 'center') index = 1; + if (position === 'right' && nameLocation !== 'center') index = 1; + var plus = nameGap; + if (position === 'top' && nameLocation !== 'end') plus *= -1; + if (position === 'left' && nameLocation !== 'start') plus *= -1; + if (position === 'bottom' && nameLocation === 'start') plus *= -1; + if (position === 'right' && nameLocation === 'end') plus *= -1; + namePosition[index] += plus; + return _objectSpread({}, axisItem, { + namePosition: namePosition + }); + }); + } + + function calcSplitLinePosition(allAxis, chart) { + var _chart$gridArea2 = chart.gridArea, + w = _chart$gridArea2.w, + h = _chart$gridArea2.h; + return allAxis.map(function (axisItem) { + var tickLinePosition = axisItem.tickLinePosition, + position = axisItem.position, + boundaryGap = axisItem.boundaryGap; + var index = 0, + plus = w; + if (position === 'top' || position === 'bottom') index = 1; + if (position === 'top' || position === 'bottom') plus = h; + if (position === 'right' || position === 'bottom') plus *= -1; + var splitLinePosition = tickLinePosition.map(function (_ref18) { + var _ref19 = _slicedToArray(_ref18, 1), + startPoint = _ref19[0]; + + var endPoint = _toConsumableArray(startPoint); + + endPoint[index] += plus; + return [_toConsumableArray(startPoint), endPoint]; + }); + if (!boundaryGap) splitLinePosition.shift(); + return _objectSpread({}, axisItem, { + splitLinePosition: splitLinePosition + }); + }); + } + + function getLineConfig(axisItem) { + var animationCurve = axisItem.animationCurve, + animationFrame = axisItem.animationFrame, + rLevel = axisItem.rLevel; + return [{ + name: 'polyline', + index: rLevel, + visible: axisItem.axisLine.show, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: getLineShape(axisItem), + style: getLineStyle(axisItem) + }]; + } + + function getLineShape(axisItem) { + var linePosition = axisItem.linePosition; + return { + points: linePosition + }; + } + + function getLineStyle(axisItem) { + return axisItem.axisLine.style; + } + + function getTickConfig(axisItem) { + var animationCurve = axisItem.animationCurve, + animationFrame = axisItem.animationFrame, + rLevel = axisItem.rLevel; + var shapes = getTickShapes(axisItem); + var style = getTickStyle(axisItem); + return shapes.map(function (shape) { + return { + name: 'polyline', + index: rLevel, + visible: axisItem.axisTick.show, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: shape, + style: style + }; + }); + } + + function getTickShapes(axisItem) { + var tickLinePosition = axisItem.tickLinePosition; + return tickLinePosition.map(function (points) { + return { + points: points + }; + }); + } + + function getTickStyle(axisItem) { + return axisItem.axisTick.style; + } + + function getLabelConfig(axisItem) { + var animationCurve = axisItem.animationCurve, + animationFrame = axisItem.animationFrame, + rLevel = axisItem.rLevel; + var shapes = getLabelShapes(axisItem); + var styles = getLabelStyle(axisItem, shapes); + return shapes.map(function (shape, i) { + return { + name: 'text', + index: rLevel, + visible: axisItem.axisLabel.show, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: shape, + style: styles[i], + setGraphCenter: function setGraphCenter() { + return void 0; + } + }; + }); + } + + function getLabelShapes(axisItem) { + var label = axisItem.label, + tickPosition = axisItem.tickPosition, + position = axisItem.position; + return tickPosition.map(function (point, i) { + return { + position: getLabelRealPosition(point, position), + content: label[i].toString() + }; + }); + } + + function getLabelRealPosition(points, position) { + var index = 0, + plus = 10; + if (position === 'top' || position === 'bottom') index = 1; + if (position === 'top' || position === 'left') plus = -10; + points = (0, util.deepClone)(points); + points[index] += plus; + return points; + } + + function getLabelStyle(axisItem, shapes) { + var position = axisItem.position; + var style = axisItem.axisLabel.style; + var align = getAxisLabelRealAlign(position); + style = (0, util$1.deepMerge)(align, style); + var styles = shapes.map(function (_ref20) { + var position = _ref20.position; + return _objectSpread({}, style, { + graphCenter: position + }); + }); + return styles; + } + + function getAxisLabelRealAlign(position) { + if (position === 'left') return { + textAlign: 'right', + textBaseline: 'middle' + }; + if (position === 'right') return { + textAlign: 'left', + textBaseline: 'middle' + }; + if (position === 'top') return { + textAlign: 'center', + textBaseline: 'bottom' + }; + if (position === 'bottom') return { + textAlign: 'center', + textBaseline: 'top' + }; + } + + function getNameConfig(axisItem) { + var animationCurve = axisItem.animationCurve, + animationFrame = axisItem.animationFrame, + rLevel = axisItem.rLevel; + return [{ + name: 'text', + index: rLevel, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: getNameShape(axisItem), + style: getNameStyle(axisItem) + }]; + } + + function getNameShape(axisItem) { + var name = axisItem.name, + namePosition = axisItem.namePosition; + return { + content: name, + position: namePosition + }; + } + + function getNameStyle(axisItem) { + var nameLocation = axisItem.nameLocation, + position = axisItem.position, + style = axisItem.nameTextStyle; + var align = getNameRealAlign(position, nameLocation); + return (0, util$1.deepMerge)(align, style); + } + + function getNameRealAlign(position, location) { + if (position === 'top' && location === 'start' || position === 'bottom' && location === 'start' || position === 'left' && location === 'center') return { + textAlign: 'right', + textBaseline: 'middle' + }; + if (position === 'top' && location === 'end' || position === 'bottom' && location === 'end' || position === 'right' && location === 'center') return { + textAlign: 'left', + textBaseline: 'middle' + }; + if (position === 'top' && location === 'center' || position === 'left' && location === 'end' || position === 'right' && location === 'end') return { + textAlign: 'center', + textBaseline: 'bottom' + }; + if (position === 'bottom' && location === 'center' || position === 'left' && location === 'start' || position === 'right' && location === 'start') return { + textAlign: 'center', + textBaseline: 'top' + }; + } + + function getSplitLineConfig(axisItem) { + var animationCurve = axisItem.animationCurve, + animationFrame = axisItem.animationFrame, + rLevel = axisItem.rLevel; + var shapes = getSplitLineShapes(axisItem); + var style = getSplitLineStyle(axisItem); + return shapes.map(function (shape) { + return { + name: 'polyline', + index: rLevel, + visible: axisItem.splitLine.show, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: shape, + style: style + }; + }); + } + + function getSplitLineShapes(axisItem) { + var splitLinePosition = axisItem.splitLinePosition; + return splitLinePosition.map(function (points) { + return { + points: points + }; + }); + } + + function getSplitLineStyle(axisItem) { + return axisItem.splitLine.style; + } + }); + + unwrapExports(axis_1$1); + var axis_2$1 = axis_1$1.axis; + + var line_1$1 = createCommonjsModule(function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.line = line; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + var _bezierCurve = _interopRequireDefault(lib$1); + + + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + + function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + + function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } + + function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + + function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + + function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + + function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } + + function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } + + function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } + + function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } + + function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } + + function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + + var polylineToBezierCurve = _bezierCurve["default"].polylineToBezierCurve, + getBezierCurveLength = _bezierCurve["default"].getBezierCurveLength; + + function line(chart) { + var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var xAxis = option.xAxis, + yAxis = option.yAxis, + series = option.series; + var lines = []; + + if (xAxis && yAxis && series) { + lines = (0, util$1.initNeedSeries)(series, config.lineConfig, 'line'); + lines = calcLinesPosition(lines, chart); + } + + (0, updater_class.doUpdate)({ + chart: chart, + series: lines, + key: 'lineArea', + getGraphConfig: getLineAreaConfig, + getStartGraphConfig: getStartLineAreaConfig, + beforeUpdate: beforeUpdateLineAndArea, + beforeChange: beforeChangeLineAndArea + }); + (0, updater_class.doUpdate)({ + chart: chart, + series: lines, + key: 'line', + getGraphConfig: getLineConfig, + getStartGraphConfig: getStartLineConfig, + beforeUpdate: beforeUpdateLineAndArea, + beforeChange: beforeChangeLineAndArea + }); + (0, updater_class.doUpdate)({ + chart: chart, + series: lines, + key: 'linePoint', + getGraphConfig: getPointConfig, + getStartGraphConfig: getStartPointConfig + }); + (0, updater_class.doUpdate)({ + chart: chart, + series: lines, + key: 'lineLabel', + getGraphConfig: getLabelConfig + }); + } + + function calcLinesPosition(lines, chart) { + var axisData = chart.axisData; + return lines.map(function (lineItem) { + var lineData = (0, util$1.mergeSameStackData)(lineItem, lines); + lineData = mergeNonNumber(lineItem, lineData); + var lineAxis = getLineAxis(lineItem, axisData); + var linePosition = getLinePosition(lineData, lineAxis); + var lineFillBottomPos = getLineFillBottomPos(lineAxis); + return _objectSpread({}, lineItem, { + linePosition: linePosition.filter(function (p) { + return p; + }), + lineFillBottomPos: lineFillBottomPos + }); + }); + } + + function mergeNonNumber(lineItem, lineData) { + var data = lineItem.data; + return lineData.map(function (v, i) { + return typeof data[i] === 'number' ? v : null; + }); + } + + function getLineAxis(line, axisData) { + var xAxisIndex = line.xAxisIndex, + yAxisIndex = line.yAxisIndex; + var xAxis = axisData.find(function (_ref) { + var axis = _ref.axis, + index = _ref.index; + return axis === 'x' && index === xAxisIndex; + }); + var yAxis = axisData.find(function (_ref2) { + var axis = _ref2.axis, + index = _ref2.index; + return axis === 'y' && index === yAxisIndex; + }); + return [xAxis, yAxis]; + } + + function getLinePosition(lineData, lineAxis) { + var valueAxisIndex = lineAxis.findIndex(function (_ref3) { + var data = _ref3.data; + return data === 'value'; + }); + var valueAxis = lineAxis[valueAxisIndex]; + var labelAxis = lineAxis[1 - valueAxisIndex]; + var linePosition = valueAxis.linePosition, + axis = valueAxis.axis; + var tickPosition = labelAxis.tickPosition; + var tickNum = tickPosition.length; + var valueAxisPosIndex = axis === 'x' ? 0 : 1; + var valueAxisStartPos = linePosition[0][valueAxisPosIndex]; + var valueAxisEndPos = linePosition[1][valueAxisPosIndex]; + var valueAxisPosMinus = valueAxisEndPos - valueAxisStartPos; + var maxValue = valueAxis.maxValue, + minValue = valueAxis.minValue; + var valueMinus = maxValue - minValue; + var position = new Array(tickNum).fill(0).map(function (foo, i) { + var v = lineData[i]; + if (typeof v !== 'number') return null; + var valuePercent = (v - minValue) / valueMinus; + if (valueMinus === 0) valuePercent = 0; + return valuePercent * valueAxisPosMinus + valueAxisStartPos; + }); + return position.map(function (vPos, i) { + if (i >= tickNum || typeof vPos !== 'number') return null; + var pos = [vPos, tickPosition[i][1 - valueAxisPosIndex]]; + if (valueAxisPosIndex === 0) return pos; + pos.reverse(); + return pos; + }); + } + + function getLineFillBottomPos(lineAxis) { + var valueAxis = lineAxis.find(function (_ref4) { + var data = _ref4.data; + return data === 'value'; + }); + var axis = valueAxis.axis, + linePosition = valueAxis.linePosition, + minValue = valueAxis.minValue, + maxValue = valueAxis.maxValue; + var changeIndex = axis === 'x' ? 0 : 1; + var changeValue = linePosition[0][changeIndex]; + + if (minValue < 0 && maxValue > 0) { + var valueMinus = maxValue - minValue; + var posMinus = Math.abs(linePosition[0][changeIndex] - linePosition[1][changeIndex]); + var offset = Math.abs(minValue) / valueMinus * posMinus; + if (axis === 'y') offset *= -1; + changeValue += offset; + } + + return { + changeIndex: changeIndex, + changeValue: changeValue + }; + } + + function getLineAreaConfig(lineItem) { + var animationCurve = lineItem.animationCurve, + animationFrame = lineItem.animationFrame, + lineFillBottomPos = lineItem.lineFillBottomPos, + rLevel = lineItem.rLevel; + return [{ + name: getLineGraphName(lineItem), + index: rLevel, + animationCurve: animationCurve, + animationFrame: animationFrame, + visible: lineItem.lineArea.show, + lineFillBottomPos: lineFillBottomPos, + shape: getLineAndAreaShape(lineItem), + style: getLineAreaStyle(lineItem), + drawed: lineAreaDrawed + }]; + } + + function getLineAndAreaShape(lineItem) { + var linePosition = lineItem.linePosition; + return { + points: linePosition + }; + } + + function getLineAreaStyle(lineItem) { + var lineArea = lineItem.lineArea, + color = lineItem.color; + var gradient = lineArea.gradient, + style = lineArea.style; + var fillColor = [style.fill || color]; + var gradientColor = (0, util$1.deepMerge)(fillColor, gradient); + if (gradientColor.length === 1) gradientColor.push(gradientColor[0]); + var gradientParams = getGradientParams(lineItem); + style = _objectSpread({}, style, { + stroke: 'rgba(0, 0, 0, 0)' + }); + return (0, util$1.deepMerge)({ + gradientColor: gradientColor, + gradientParams: gradientParams, + gradientType: 'linear', + gradientWith: 'fill' + }, style); + } + + function getGradientParams(lineItem) { + var lineFillBottomPos = lineItem.lineFillBottomPos, + linePosition = lineItem.linePosition; + var changeIndex = lineFillBottomPos.changeIndex, + changeValue = lineFillBottomPos.changeValue; + var mainPos = linePosition.map(function (p) { + return p[changeIndex]; + }); + var maxPos = Math.max.apply(Math, _toConsumableArray(mainPos)); + var minPos = Math.min.apply(Math, _toConsumableArray(mainPos)); + var beginPos = maxPos; + if (changeIndex === 1) beginPos = minPos; + + if (changeIndex === 1) { + return [0, beginPos, 0, changeValue]; + } else { + return [beginPos, 0, changeValue, 0]; + } + } + + function lineAreaDrawed(_ref5, _ref6) { + var lineFillBottomPos = _ref5.lineFillBottomPos, + shape = _ref5.shape; + var ctx = _ref6.ctx; + var points = shape.points; + var changeIndex = lineFillBottomPos.changeIndex, + changeValue = lineFillBottomPos.changeValue; + + var linePoint1 = _toConsumableArray(points[points.length - 1]); + + var linePoint2 = _toConsumableArray(points[0]); + + linePoint1[changeIndex] = changeValue; + linePoint2[changeIndex] = changeValue; + ctx.lineTo.apply(ctx, _toConsumableArray(linePoint1)); + ctx.lineTo.apply(ctx, _toConsumableArray(linePoint2)); + ctx.closePath(); + ctx.fill(); + } + + function getStartLineAreaConfig(lineItem) { + var config = getLineAreaConfig(lineItem)[0]; + + var style = _objectSpread({}, config.style); + + style.opacity = 0; + config.style = style; + return [config]; + } + + function beforeUpdateLineAndArea(graphs, lineItem, i, updater) { + var cache = graphs[i]; + if (!cache) return; + var currentName = getLineGraphName(lineItem); + var render = updater.chart.render; + var name = cache[0].name; + var delAll = currentName !== name; + if (!delAll) return; + cache.forEach(function (g) { + return render.delGraph(g); + }); + graphs[i] = null; + } + + function beforeChangeLineAndArea(graph, config) { + var points = config.shape.points; + var graphPoints = graph.shape.points; + var graphPointsNum = graphPoints.length; + var pointsNum = points.length; + + if (pointsNum > graphPointsNum) { + var lastPoint = graphPoints.slice(-1)[0]; + var newAddPoints = new Array(pointsNum - graphPointsNum).fill(0).map(function (foo) { + return _toConsumableArray(lastPoint); + }); + graphPoints.push.apply(graphPoints, _toConsumableArray(newAddPoints)); + } else if (pointsNum < graphPointsNum) { + graphPoints.splice(pointsNum); + } + } + + function getLineConfig(lineItem) { + var animationCurve = lineItem.animationCurve, + animationFrame = lineItem.animationFrame, + rLevel = lineItem.rLevel; + return [{ + name: getLineGraphName(lineItem), + index: rLevel + 1, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: getLineAndAreaShape(lineItem), + style: getLineStyle(lineItem) + }]; + } + + function getLineGraphName(lineItem) { + var smooth = lineItem.smooth; + return smooth ? 'smoothline' : 'polyline'; + } + + function getLineStyle(lineItem) { + var lineStyle = lineItem.lineStyle, + color = lineItem.color, + smooth = lineItem.smooth, + linePosition = lineItem.linePosition; + var lineLength = getLineLength(linePosition, smooth); + return (0, util$1.deepMerge)({ + stroke: color, + lineDash: [lineLength, 0] + }, lineStyle); + } + + function getLineLength(points) { + var smooth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + if (!smooth) return (0, util$1.getPolylineLength)(points); + var curve = polylineToBezierCurve(points); + return getBezierCurveLength(curve); + } + + function getStartLineConfig(lineItem) { + var lineDash = lineItem.lineStyle.lineDash; + var config = getLineConfig(lineItem)[0]; + var realLineDash = config.style.lineDash; + + if (lineDash) { + realLineDash = [0, 0]; + } else { + realLineDash = _toConsumableArray(realLineDash).reverse(); + } + + config.style.lineDash = realLineDash; + return [config]; + } + + function getPointConfig(lineItem) { + var animationCurve = lineItem.animationCurve, + animationFrame = lineItem.animationFrame, + rLevel = lineItem.rLevel; + var shapes = getPointShapes(lineItem); + var style = getPointStyle(lineItem); + return shapes.map(function (shape) { + return { + name: 'circle', + index: rLevel + 2, + visible: lineItem.linePoint.show, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: shape, + style: style + }; + }); + } + + function getPointShapes(lineItem) { + var linePosition = lineItem.linePosition, + radius = lineItem.linePoint.radius; + return linePosition.map(function (_ref7) { + var _ref8 = _slicedToArray(_ref7, 2), + rx = _ref8[0], + ry = _ref8[1]; + + return { + r: radius, + rx: rx, + ry: ry + }; + }); + } + + function getPointStyle(lineItem) { + var color = lineItem.color, + style = lineItem.linePoint.style; + return (0, util$1.deepMerge)({ + stroke: color + }, style); + } + + function getStartPointConfig(lineItem) { + var configs = getPointConfig(lineItem); + configs.forEach(function (config) { + config.shape.r = 0.1; + }); + return configs; + } + + function getLabelConfig(lineItem) { + var animationCurve = lineItem.animationCurve, + animationFrame = lineItem.animationFrame, + rLevel = lineItem.rLevel; + var shapes = getLabelShapes(lineItem); + var style = getLabelStyle(lineItem); + return shapes.map(function (shape, i) { + return { + name: 'text', + index: rLevel + 3, + visible: lineItem.label.show, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: shape, + style: style + }; + }); + } + + function getLabelShapes(lineItem) { + var contents = formatterLabel(lineItem); + var position = getLabelPosition(lineItem); + return contents.map(function (content, i) { + return { + content: content, + position: position[i] + }; + }); + } + + function getLabelPosition(lineItem) { + var linePosition = lineItem.linePosition, + lineFillBottomPos = lineItem.lineFillBottomPos, + label = lineItem.label; + var position = label.position, + offset = label.offset; + var changeIndex = lineFillBottomPos.changeIndex, + changeValue = lineFillBottomPos.changeValue; + return linePosition.map(function (pos) { + if (position === 'bottom') { + pos = _toConsumableArray(pos); + pos[changeIndex] = changeValue; + } + + if (position === 'center') { + var bottom = _toConsumableArray(pos); + + bottom[changeIndex] = changeValue; + pos = getCenterLabelPoint(pos, bottom); + } + + return getOffsetedPoint(pos, offset); + }); + } + + function getOffsetedPoint(_ref9, _ref10) { + var _ref11 = _slicedToArray(_ref9, 2), + x = _ref11[0], + y = _ref11[1]; + + var _ref12 = _slicedToArray(_ref10, 2), + ox = _ref12[0], + oy = _ref12[1]; + + return [x + ox, y + oy]; + } + + function getCenterLabelPoint(_ref13, _ref14) { + var _ref15 = _slicedToArray(_ref13, 2), + ax = _ref15[0], + ay = _ref15[1]; + + var _ref16 = _slicedToArray(_ref14, 2), + bx = _ref16[0], + by = _ref16[1]; + + return [(ax + bx) / 2, (ay + by) / 2]; + } + + function formatterLabel(lineItem) { + var data = lineItem.data, + formatter = lineItem.label.formatter; + data = data.filter(function (d) { + return typeof d === 'number'; + }).map(function (d) { + return d.toString(); + }); + if (!formatter) return data; + + var type = _typeof(formatter); + + if (type === 'string') return data.map(function (d) { + return formatter.replace('{value}', d); + }); + if (type === 'function') return data.map(function (value, index) { + return formatter({ + value: value, + index: index + }); + }); + return data; + } + + function getLabelStyle(lineItem) { + var color = lineItem.color, + style = lineItem.label.style; + return (0, util$1.deepMerge)({ + fill: color + }, style); + } + }); + + unwrapExports(line_1$1); + var line_2 = line_1$1.line; + + var SET = 'Set'; + + // 23.2 Set Objects + var es6_set = _collection(SET, function (get) { + return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); }; + }, { + // 23.2.3.1 Set.prototype.add(value) + add: function add(value) { + return _collectionStrong.def(_validateCollection(this, SET), value = value === 0 ? 0 : value, value); + } + }, _collectionStrong); + + var bar_1$1 = createCommonjsModule(function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.bar = bar; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + + function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } + + function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + + function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } + + function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + + function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + + function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + + function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } + + function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } + + function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } + + function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } + + function bar(chart) { + var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var xAxis = option.xAxis, + yAxis = option.yAxis, + series = option.series; + var bars = []; + + if (xAxis && yAxis && series) { + bars = (0, util$1.initNeedSeries)(series, config.barConfig, 'bar'); + bars = setBarAxis(bars, chart); + bars = setBarPositionData(bars); + bars = calcBarsPosition(bars); + } + + (0, updater_class.doUpdate)({ + chart: chart, + series: bars.slice(-1), + key: 'backgroundBar', + getGraphConfig: getBackgroundBarConfig + }); + bars.reverse(); + (0, updater_class.doUpdate)({ + chart: chart, + series: bars, + key: 'bar', + getGraphConfig: getBarConfig, + getStartGraphConfig: getStartBarConfig, + beforeUpdate: beforeUpdateBar + }); + (0, updater_class.doUpdate)({ + chart: chart, + series: bars, + key: 'barLabel', + getGraphConfig: getLabelConfig + }); + } + + function setBarAxis(bars, chart) { + var axisData = chart.axisData; + bars.forEach(function (bar) { + var xAxisIndex = bar.xAxisIndex, + yAxisIndex = bar.yAxisIndex; + if (typeof xAxisIndex !== 'number') xAxisIndex = 0; + if (typeof yAxisIndex !== 'number') yAxisIndex = 0; + var xAxis = axisData.find(function (_ref) { + var axis = _ref.axis, + index = _ref.index; + return "".concat(axis).concat(index) === "x".concat(xAxisIndex); + }); + var yAxis = axisData.find(function (_ref2) { + var axis = _ref2.axis, + index = _ref2.index; + return "".concat(axis).concat(index) === "y".concat(yAxisIndex); + }); + var axis = [xAxis, yAxis]; + var valueAxisIndex = axis.findIndex(function (_ref3) { + var data = _ref3.data; + return data === 'value'; + }); + bar.valueAxis = axis[valueAxisIndex]; + bar.labelAxis = axis[1 - valueAxisIndex]; + }); + return bars; + } + + function setBarPositionData(bars, chart) { + var labelBarGroup = groupBarByLabelAxis(bars); + labelBarGroup.forEach(function (group) { + setBarIndex(group); + setBarNum(group); + setBarCategoryWidth(group); + setBarWidthAndGap(group); + setBarAllWidthAndGap(group); + }); + return bars; + } + + function setBarIndex(bars) { + var stacks = getBarStack(bars); + stacks = stacks.map(function (stack) { + return { + stack: stack, + index: -1 + }; + }); + var currentIndex = 0; + bars.forEach(function (bar) { + var stack = bar.stack; + + if (!stack) { + bar.barIndex = currentIndex; + currentIndex++; + } else { + var stackData = stacks.find(function (_ref4) { + var s = _ref4.stack; + return s === stack; + }); + + if (stackData.index === -1) { + stackData.index = currentIndex; + currentIndex++; + } + + bar.barIndex = stackData.index; + } + }); + } + + function groupBarByLabelAxis(bars) { + var labelAxis = bars.map(function (_ref5) { + var _ref5$labelAxis = _ref5.labelAxis, + axis = _ref5$labelAxis.axis, + index = _ref5$labelAxis.index; + return axis + index; + }); + labelAxis = _toConsumableArray(new Set(labelAxis)); + return labelAxis.map(function (axisIndex) { + return bars.filter(function (_ref6) { + var _ref6$labelAxis = _ref6.labelAxis, + axis = _ref6$labelAxis.axis, + index = _ref6$labelAxis.index; + return axis + index === axisIndex; + }); + }); + } + + function getBarStack(bars) { + var stacks = []; + bars.forEach(function (_ref7) { + var stack = _ref7.stack; + if (stack) stacks.push(stack); + }); + return _toConsumableArray(new Set(stacks)); + } + + function setBarNum(bars) { + var barNum = _toConsumableArray(new Set(bars.map(function (_ref8) { + var barIndex = _ref8.barIndex; + return barIndex; + }))).length; + + bars.forEach(function (bar) { + return bar.barNum = barNum; + }); + } + + function setBarCategoryWidth(bars) { + var lastBar = bars.slice(-1)[0]; + var barCategoryGap = lastBar.barCategoryGap, + tickGap = lastBar.labelAxis.tickGap; + var barCategoryWidth = 0; + + if (typeof barCategoryGap === 'number') { + barCategoryWidth = barCategoryGap; + } else { + barCategoryWidth = (1 - parseInt(barCategoryGap) / 100) * tickGap; + } + + bars.forEach(function (bar) { + return bar.barCategoryWidth = barCategoryWidth; + }); + } + + function setBarWidthAndGap(bars) { + var _bars$slice$ = bars.slice(-1)[0], + barCategoryWidth = _bars$slice$.barCategoryWidth, + barWidth = _bars$slice$.barWidth, + barGap = _bars$slice$.barGap, + barNum = _bars$slice$.barNum; + var widthAndGap = []; + + if (typeof barWidth === 'number' || barWidth !== 'auto') { + widthAndGap = getBarWidthAndGapWithPercentOrNumber(barCategoryWidth, barWidth, barGap); + } else if (barWidth === 'auto') { + widthAndGap = getBarWidthAndGapWidthAuto(barCategoryWidth, barWidth, barGap, barNum); + } + + var _widthAndGap = widthAndGap, + _widthAndGap2 = _slicedToArray(_widthAndGap, 2), + width = _widthAndGap2[0], + gap = _widthAndGap2[1]; + + bars.forEach(function (bar) { + bar.barWidth = width; + bar.barGap = gap; + }); + } + + function getBarWidthAndGapWithPercentOrNumber(barCategoryWidth, barWidth, barGap) { + var width = 0, + gap = 0; + + if (typeof barWidth === 'number') { + width = barWidth; + } else { + width = parseInt(barWidth) / 100 * barCategoryWidth; + } + + if (typeof barGap === 'number') { + gap = barGap; + } else { + gap = parseInt(barGap) / 100 * width; + } + + return [width, gap]; + } + + function getBarWidthAndGapWidthAuto(barCategoryWidth, barWidth, barGap, barNum) { + var width = 0, + gap = 0; + var barItemWidth = barCategoryWidth / barNum; + + if (typeof barGap === 'number') { + gap = barGap; + width = barItemWidth - gap; + } else { + var percent = 10 + parseInt(barGap) / 10; + + if (percent === 0) { + width = barItemWidth * 2; + gap = -width; + } else { + width = barItemWidth / percent * 10; + gap = barItemWidth - width; + } + } + + return [width, gap]; + } + + function setBarAllWidthAndGap(bars) { + var _bars$slice$2 = bars.slice(-1)[0], + barGap = _bars$slice$2.barGap, + barWidth = _bars$slice$2.barWidth, + barNum = _bars$slice$2.barNum; + var barAllWidthAndGap = (barGap + barWidth) * barNum - barGap; + bars.forEach(function (bar) { + return bar.barAllWidthAndGap = barAllWidthAndGap; + }); + } + + function calcBarsPosition(bars, chart) { + bars = calcBarValueAxisCoordinate(bars); + bars = calcBarLabelAxisCoordinate(bars); + bars = eliminateNullBarLabelAxis(bars); + bars = keepSameNumBetweenBarAndData(bars); + return bars; + } + + function calcBarLabelAxisCoordinate(bars) { + return bars.map(function (bar) { + var labelAxis = bar.labelAxis, + barAllWidthAndGap = bar.barAllWidthAndGap, + barGap = bar.barGap, + barWidth = bar.barWidth, + barIndex = bar.barIndex; + var tickGap = labelAxis.tickGap, + tickPosition = labelAxis.tickPosition, + axis = labelAxis.axis; + var coordinateIndex = axis === 'x' ? 0 : 1; + var barLabelAxisPos = tickPosition.map(function (tick, i) { + var barCategoryStartPos = tickPosition[i][coordinateIndex] - tickGap / 2; + var barItemsStartPos = barCategoryStartPos + (tickGap - barAllWidthAndGap) / 2; + return barItemsStartPos + (barIndex + 0.5) * barWidth + barIndex * barGap; + }); + return _objectSpread({}, bar, { + barLabelAxisPos: barLabelAxisPos + }); + }); + } + + function calcBarValueAxisCoordinate(bars) { + return bars.map(function (bar) { + var data = (0, util$1.mergeSameStackData)(bar, bars); + data = eliminateNonNumberData(bar, data); + var _bar$valueAxis = bar.valueAxis, + axis = _bar$valueAxis.axis, + minValue = _bar$valueAxis.minValue, + maxValue = _bar$valueAxis.maxValue, + linePosition = _bar$valueAxis.linePosition; + var startPos = getValuePos(minValue, maxValue, minValue < 0 ? 0 : minValue, linePosition, axis); + var endPos = data.map(function (v) { + return getValuePos(minValue, maxValue, v, linePosition, axis); + }); + var barValueAxisPos = endPos.map(function (p) { + return [startPos, p]; + }); + return _objectSpread({}, bar, { + barValueAxisPos: barValueAxisPos + }); + }); + } + + function eliminateNonNumberData(barItem, barData) { + var data = barItem.data; + return barData.map(function (v, i) { + return typeof data[i] === 'number' ? v : null; + }).filter(function (d) { + return d !== null; + }); + } + + function eliminateNullBarLabelAxis(bars) { + return bars.map(function (bar) { + var barLabelAxisPos = bar.barLabelAxisPos, + data = bar.data; + data.forEach(function (d, i) { + if (typeof d === 'number') return; + barLabelAxisPos[i] = null; + }); + return _objectSpread({}, bar, { + barLabelAxisPos: barLabelAxisPos.filter(function (p) { + return p !== null; + }) + }); + }); + } + + function keepSameNumBetweenBarAndData(bars) { + bars.forEach(function (bar) { + var data = bar.data, + barLabelAxisPos = bar.barLabelAxisPos, + barValueAxisPos = bar.barValueAxisPos; + var dataNum = data.filter(function (d) { + return typeof d === 'number'; + }).length; + var axisPosNum = barLabelAxisPos.length; + + if (axisPosNum > dataNum) { + barLabelAxisPos.splice(dataNum); + barValueAxisPos.splice(dataNum); + } + }); + return bars; + } + + function getValuePos(min, max, value, linePosition, axis) { + if (typeof value !== 'number') return null; + var valueMinus = max - min; + var coordinateIndex = axis === 'x' ? 0 : 1; + var posMinus = linePosition[1][coordinateIndex] - linePosition[0][coordinateIndex]; + var percent = (value - min) / valueMinus; + if (valueMinus === 0) percent = 0; + var pos = percent * posMinus; + return pos + linePosition[0][coordinateIndex]; + } + + function getBackgroundBarConfig(barItem) { + var animationCurve = barItem.animationCurve, + animationFrame = barItem.animationFrame, + rLevel = barItem.rLevel; + var shapes = getBackgroundBarShapes(barItem); + var style = getBackgroundBarStyle(barItem); + return shapes.map(function (shape) { + return { + name: 'rect', + index: rLevel, + visible: barItem.backgroundBar.show, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: shape, + style: style + }; + }); + } + + function getBackgroundBarShapes(barItem) { + var labelAxis = barItem.labelAxis, + valueAxis = barItem.valueAxis; + var tickPosition = labelAxis.tickPosition; + var axis = valueAxis.axis, + linePosition = valueAxis.linePosition; + var width = getBackgroundBarWidth(barItem); + var haltWidth = width / 2; + var posIndex = axis === 'x' ? 0 : 1; + var centerPos = tickPosition.map(function (p) { + return p[1 - posIndex]; + }); + var _ref9 = [linePosition[0][posIndex], linePosition[1][posIndex]], + start = _ref9[0], + end = _ref9[1]; + return centerPos.map(function (center) { + if (axis === 'x') { + return { + x: start, + y: center - haltWidth, + w: end - start, + h: width + }; + } else { + return { + x: center - haltWidth, + y: end, + w: width, + h: start - end + }; + } + }); + } + + function getBackgroundBarWidth(barItem) { + var barAllWidthAndGap = barItem.barAllWidthAndGap, + barCategoryWidth = barItem.barCategoryWidth, + backgroundBar = barItem.backgroundBar; + var width = backgroundBar.width; + if (typeof width === 'number') return width; + if (width === 'auto') return barAllWidthAndGap; + return parseInt(width) / 100 * barCategoryWidth; + } + + function getBackgroundBarStyle(barItem) { + return barItem.backgroundBar.style; + } + + function getBarConfig(barItem) { + var barLabelAxisPos = barItem.barLabelAxisPos, + animationCurve = barItem.animationCurve, + animationFrame = barItem.animationFrame, + rLevel = barItem.rLevel; + var name = getBarName(barItem); + return barLabelAxisPos.map(function (foo, i) { + return { + name: name, + index: rLevel, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: getBarShape(barItem, i), + style: getBarStyle(barItem, i) + }; + }); + } + + function getBarName(barItem) { + var shapeType = barItem.shapeType; + if (shapeType === 'leftEchelon' || shapeType === 'rightEchelon') return 'polyline'; + return 'rect'; + } + + function getBarShape(barItem, i) { + var shapeType = barItem.shapeType; + + if (shapeType === 'leftEchelon') { + return getLeftEchelonShape(barItem, i); + } else if (shapeType === 'rightEchelon') { + return getRightEchelonShape(barItem, i); + } else { + return getNormalBarShape(barItem, i); + } + } + + function getLeftEchelonShape(barItem, i) { + var barValueAxisPos = barItem.barValueAxisPos, + barLabelAxisPos = barItem.barLabelAxisPos, + barWidth = barItem.barWidth, + echelonOffset = barItem.echelonOffset; + + var _barValueAxisPos$i = _slicedToArray(barValueAxisPos[i], 2), + start = _barValueAxisPos$i[0], + end = _barValueAxisPos$i[1]; + + var labelAxisPos = barLabelAxisPos[i]; + var halfWidth = barWidth / 2; + var valueAxis = barItem.valueAxis.axis; + var points = []; + + if (valueAxis === 'x') { + points[0] = [end, labelAxisPos - halfWidth]; + points[1] = [end, labelAxisPos + halfWidth]; + points[2] = [start, labelAxisPos + halfWidth]; + points[3] = [start + echelonOffset, labelAxisPos - halfWidth]; + if (end - start < echelonOffset) points.splice(3, 1); + } else { + points[0] = [labelAxisPos - halfWidth, end]; + points[1] = [labelAxisPos + halfWidth, end]; + points[2] = [labelAxisPos + halfWidth, start]; + points[3] = [labelAxisPos - halfWidth, start - echelonOffset]; + if (start - end < echelonOffset) points.splice(3, 1); + } + + return { + points: points, + close: true + }; + } + + function getRightEchelonShape(barItem, i) { + var barValueAxisPos = barItem.barValueAxisPos, + barLabelAxisPos = barItem.barLabelAxisPos, + barWidth = barItem.barWidth, + echelonOffset = barItem.echelonOffset; + + var _barValueAxisPos$i2 = _slicedToArray(barValueAxisPos[i], 2), + start = _barValueAxisPos$i2[0], + end = _barValueAxisPos$i2[1]; + + var labelAxisPos = barLabelAxisPos[i]; + var halfWidth = barWidth / 2; + var valueAxis = barItem.valueAxis.axis; + var points = []; + + if (valueAxis === 'x') { + points[0] = [end, labelAxisPos + halfWidth]; + points[1] = [end, labelAxisPos - halfWidth]; + points[2] = [start, labelAxisPos - halfWidth]; + points[3] = [start + echelonOffset, labelAxisPos + halfWidth]; + if (end - start < echelonOffset) points.splice(2, 1); + } else { + points[0] = [labelAxisPos + halfWidth, end]; + points[1] = [labelAxisPos - halfWidth, end]; + points[2] = [labelAxisPos - halfWidth, start]; + points[3] = [labelAxisPos + halfWidth, start - echelonOffset]; + if (start - end < echelonOffset) points.splice(2, 1); + } + + return { + points: points, + close: true + }; + } + + function getNormalBarShape(barItem, i) { + var barValueAxisPos = barItem.barValueAxisPos, + barLabelAxisPos = barItem.barLabelAxisPos, + barWidth = barItem.barWidth; + + var _barValueAxisPos$i3 = _slicedToArray(barValueAxisPos[i], 2), + start = _barValueAxisPos$i3[0], + end = _barValueAxisPos$i3[1]; + + var labelAxisPos = barLabelAxisPos[i]; + var valueAxis = barItem.valueAxis.axis; + var shape = {}; + + if (valueAxis === 'x') { + shape.x = start; + shape.y = labelAxisPos - barWidth / 2; + shape.w = end - start; + shape.h = barWidth; + } else { + shape.x = labelAxisPos - barWidth / 2; + shape.y = end; + shape.w = barWidth; + shape.h = start - end; + } + + return shape; + } + + function getBarStyle(barItem, i) { + var barStyle = barItem.barStyle, + gradient = barItem.gradient, + color = barItem.color; + var fillColor = [barStyle.fill || color]; + var gradientColor = (0, util$1.deepMerge)(fillColor, gradient.color); + if (gradientColor.length === 1) gradientColor.push(gradientColor[0]); + var gradientParams = getGradientParams(barItem, i); + return (0, util$1.deepMerge)({ + gradientColor: gradientColor, + gradientParams: gradientParams, + gradientType: 'linear', + gradientWith: 'fill' + }, barStyle); + } + + function getGradientParams(barItem, i) { + var barValueAxisPos = barItem.barValueAxisPos, + barLabelAxisPos = barItem.barLabelAxisPos, + data = barItem.data; + var _barItem$valueAxis = barItem.valueAxis, + linePosition = _barItem$valueAxis.linePosition, + axis = _barItem$valueAxis.axis; + + var _barValueAxisPos$i4 = _slicedToArray(barValueAxisPos[i], 2), + start = _barValueAxisPos$i4[0], + end = _barValueAxisPos$i4[1]; + + var labelAxisPos = barLabelAxisPos[i]; + var value = data[i]; + + var _linePosition = _slicedToArray(linePosition, 2), + lineStart = _linePosition[0], + lineEnd = _linePosition[1]; + + var valueAxisIndex = axis === 'x' ? 0 : 1; + var endPos = end; + + if (!barItem.gradient.local) { + endPos = value < 0 ? lineStart[valueAxisIndex] : lineEnd[valueAxisIndex]; + } + + if (axis === 'y') { + return [labelAxisPos, endPos, labelAxisPos, start]; + } else { + return [endPos, labelAxisPos, start, labelAxisPos]; + } + } + + function getStartBarConfig(barItem) { + var configs = getBarConfig(barItem); + var shapeType = barItem.shapeType; + configs.forEach(function (config) { + var shape = config.shape; + + if (shapeType === 'leftEchelon') { + shape = getStartLeftEchelonShape(shape, barItem); + } else if (shapeType === 'rightEchelon') { + shape = getStartRightEchelonShape(shape, barItem); + } else { + shape = getStartNormalBarShape(shape, barItem); + } + + config.shape = shape; + }); + return configs; + } + + function getStartLeftEchelonShape(shape, barItem) { + var axis = barItem.valueAxis.axis; + shape = (0, util.deepClone)(shape); + var _shape = shape, + points = _shape.points; + var index = axis === 'x' ? 0 : 1; + var start = points[2][index]; + points.forEach(function (point) { + return point[index] = start; + }); + return shape; + } + + function getStartRightEchelonShape(shape, barItem) { + var axis = barItem.valueAxis.axis; + shape = (0, util.deepClone)(shape); + var _shape2 = shape, + points = _shape2.points; + var index = axis === 'x' ? 0 : 1; + var start = points[2][index]; + points.forEach(function (point) { + return point[index] = start; + }); + return shape; + } + + function getStartNormalBarShape(shape, barItem) { + var axis = barItem.valueAxis.axis; + var x = shape.x, + y = shape.y, + w = shape.w, + h = shape.h; + + if (axis === 'x') { + w = 0; + } else { + y = y + h; + h = 0; + } + + return { + x: x, + y: y, + w: w, + h: h + }; + } + + function beforeUpdateBar(graphs, barItem, i, updater) { + var render = updater.chart.render; + var name = getBarName(barItem); + + if (graphs[i] && graphs[i][0].name !== name) { + graphs[i].forEach(function (g) { + return render.delGraph(g); + }); + graphs[i] = null; + } + } + + function getLabelConfig(barItem) { + var animationCurve = barItem.animationCurve, + animationFrame = barItem.animationFrame, + rLevel = barItem.rLevel; + var shapes = getLabelShapes(barItem); + var style = getLabelStyle(barItem); + return shapes.map(function (shape) { + return { + name: 'text', + index: rLevel, + visible: barItem.label.show, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: shape, + style: style + }; + }); + } + + function getLabelShapes(barItem) { + var contents = getFormatterLabels(barItem); + var position = getLabelsPosition(barItem); + return position.map(function (pos, i) { + return { + position: pos, + content: contents[i] + }; + }); + } + + function getFormatterLabels(barItem) { + var data = barItem.data, + label = barItem.label; + var formatter = label.formatter; + data = data.filter(function (d) { + return typeof d === 'number'; + }).map(function (d) { + return d.toString(); + }); + if (!formatter) return data; + + var type = _typeof(formatter); + + if (type === 'string') return data.map(function (d) { + return formatter.replace('{value}', d); + }); + if (type === 'function') return data.map(function (d, i) { + return formatter({ + value: d, + index: i + }); + }); + return data; + } + + function getLabelsPosition(barItem) { + var label = barItem.label, + barValueAxisPos = barItem.barValueAxisPos, + barLabelAxisPos = barItem.barLabelAxisPos; + var position = label.position, + offset = label.offset; + var axis = barItem.valueAxis.axis; + return barValueAxisPos.map(function (_ref10, i) { + var _ref11 = _slicedToArray(_ref10, 2), + start = _ref11[0], + end = _ref11[1]; + + var labelAxisPos = barLabelAxisPos[i]; + var pos = [end, labelAxisPos]; + + if (position === 'bottom') { + pos = [start, labelAxisPos]; + } + + if (position === 'center') { + pos = [(start + end) / 2, labelAxisPos]; + } + + if (axis === 'y') pos.reverse(); + return getOffsetedPoint(pos, offset); + }); + } + + function getOffsetedPoint(_ref12, _ref13) { + var _ref14 = _slicedToArray(_ref12, 2), + x = _ref14[0], + y = _ref14[1]; + + var _ref15 = _slicedToArray(_ref13, 2), + ox = _ref15[0], + oy = _ref15[1]; + + return [x + ox, y + oy]; + } + + function getLabelStyle(barItem) { + var color = barItem.color, + style = barItem.label.style, + gc = barItem.gradient.color; + if (gc.length) color = gc[0]; + style = (0, util$1.deepMerge)({ + fill: color + }, style); + return style; + } + }); + + unwrapExports(bar_1$1); + var bar_2 = bar_1$1.bar; + + var pie_1$1 = createCommonjsModule(function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.pie = pie; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } + + function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + + function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + + function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } + + function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + + function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + + function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + + function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } + + function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } + + function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } + + function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } + + function pie(chart) { + var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var series = option.series; + if (!series) series = []; + var pies = (0, util$1.initNeedSeries)(series, pie$1.pieConfig, 'pie'); + pies = calcPiesCenter(pies, chart); + pies = calcPiesRadius(pies, chart); + pies = calcRosePiesRadius(pies); + pies = calcPiesPercent(pies); + pies = calcPiesAngle(pies); + pies = calcPiesInsideLabelPos(pies); + pies = calcPiesEdgeCenterPos(pies); + pies = calcPiesOutSideLabelPos(pies); + (0, updater_class.doUpdate)({ + chart: chart, + series: pies, + key: 'pie', + getGraphConfig: getPieConfig, + getStartGraphConfig: getStartPieConfig, + beforeChange: beforeChangePie + }); + (0, updater_class.doUpdate)({ + chart: chart, + series: pies, + key: 'pieInsideLabel', + getGraphConfig: getInsideLabelConfig + }); + (0, updater_class.doUpdate)({ + chart: chart, + series: pies, + key: 'pieOutsideLabelLine', + getGraphConfig: getOutsideLabelLineConfig, + getStartGraphConfig: getStartOutsideLabelLineConfig + }); + (0, updater_class.doUpdate)({ + chart: chart, + series: pies, + key: 'pieOutsideLabel', + getGraphConfig: getOutsideLabelConfig, + getStartGraphConfig: getStartOutsideLabelConfig + }); + } + + function calcPiesCenter(pies, chart) { + var area = chart.render.area; + pies.forEach(function (pie) { + var center = pie.center; + center = center.map(function (pos, i) { + if (typeof pos === 'number') return pos; + return parseInt(pos) / 100 * area[i]; + }); + pie.center = center; + }); + return pies; + } + + function calcPiesRadius(pies, chart) { + var maxRadius = Math.min.apply(Math, _toConsumableArray(chart.render.area)) / 2; + pies.forEach(function (pie) { + var radius = pie.radius, + data = pie.data; + radius = getNumberRadius(radius, maxRadius); + data.forEach(function (item) { + var itemRadius = item.radius; + if (!itemRadius) itemRadius = radius; + itemRadius = getNumberRadius(itemRadius, maxRadius); + item.radius = itemRadius; + }); + pie.radius = radius; + }); + return pies; + } + + function getNumberRadius(radius, maxRadius) { + if (!(radius instanceof Array)) radius = [0, radius]; + radius = radius.map(function (r) { + if (typeof r === 'number') return r; + return parseInt(r) / 100 * maxRadius; + }); + return radius; + } + + function calcRosePiesRadius(pies, chart) { + var rosePie = pies.filter(function (_ref) { + var roseType = _ref.roseType; + return roseType; + }); + rosePie.forEach(function (pie) { + var radius = pie.radius, + data = pie.data, + roseSort = pie.roseSort; + var roseIncrement = getRoseIncrement(pie); + + var dataCopy = _toConsumableArray(data); + + data = sortData(data); + data.forEach(function (item, i) { + item.radius[1] = radius[1] - roseIncrement * i; + }); + + if (roseSort) { + data.reverse(); + } else { + pie.data = dataCopy; + } + + pie.roseIncrement = roseIncrement; + }); + return pies; + } + + function sortData(data) { + return data.sort(function (_ref2, _ref3) { + var a = _ref2.value; + var b = _ref3.value; + if (a === b) return 0; + if (a > b) return -1; + if (a < b) return 1; + }); + } + + function getRoseIncrement(pie) { + var radius = pie.radius, + roseIncrement = pie.roseIncrement; + if (typeof roseIncrement === 'number') return roseIncrement; + + if (roseIncrement === 'auto') { + var data = pie.data; + var allRadius = data.reduce(function (all, _ref4) { + var radius = _ref4.radius; + return [].concat(_toConsumableArray(all), _toConsumableArray(radius)); + }, []); + var minRadius = Math.min.apply(Math, _toConsumableArray(allRadius)); + var maxRadius = Math.max.apply(Math, _toConsumableArray(allRadius)); + return (maxRadius - minRadius) * 0.6 / (data.length - 1 || 1); + } + + return parseInt(roseIncrement) / 100 * radius[1]; + } + + function calcPiesPercent(pies) { + pies.forEach(function (pie) { + var data = pie.data, + percentToFixed = pie.percentToFixed; + var sum = getDataSum(data); + data.forEach(function (item) { + var value = item.value; + item.percent = parseFloat((value / sum * 100).toFixed(percentToFixed)); + }); + var percentSumNoLast = (0, util$1.mulAdd)(data.slice(0, -1).map(function (_ref5) { + var percent = _ref5.percent; + return percent; + })); + data.slice(-1)[0].percent = 100 - percentSumNoLast; + }); + return pies; + } + + function getDataSum(data) { + return (0, util$1.mulAdd)(data.map(function (_ref6) { + var value = _ref6.value; + return value; + })); + } + + function calcPiesAngle(pies) { + pies.forEach(function (pie) { + var start = pie.startAngle, + data = pie.data; + data.forEach(function (item, i) { + var _getDataAngle = getDataAngle(data, i), + _getDataAngle2 = _slicedToArray(_getDataAngle, 2), + startAngle = _getDataAngle2[0], + endAngle = _getDataAngle2[1]; + + item.startAngle = start + startAngle; + item.endAngle = start + endAngle; + }); + }); + return pies; + } + + function getDataAngle(data, i) { + var fullAngle = Math.PI * 2; + var needAddData = data.slice(0, i + 1); + var percentSum = (0, util$1.mulAdd)(needAddData.map(function (_ref7) { + var percent = _ref7.percent; + return percent; + })); + var percent = data[i].percent; + var startPercent = percentSum - percent; + return [fullAngle * startPercent / 100, fullAngle * percentSum / 100]; + } + + function calcPiesInsideLabelPos(pies) { + pies.forEach(function (pieItem) { + var data = pieItem.data; + data.forEach(function (item) { + item.insideLabelPos = getPieInsideLabelPos(pieItem, item); + }); + }); + return pies; + } + + function getPieInsideLabelPos(pieItem, dataItem) { + var center = pieItem.center; + + var startAngle = dataItem.startAngle, + endAngle = dataItem.endAngle, + _dataItem$radius = _slicedToArray(dataItem.radius, 2), + ir = _dataItem$radius[0], + or = _dataItem$radius[1]; + + var radius = (ir + or) / 2; + var angle = (startAngle + endAngle) / 2; + return util.getCircleRadianPoint.apply(void 0, _toConsumableArray(center).concat([radius, angle])); + } + + function calcPiesEdgeCenterPos(pies) { + pies.forEach(function (pie) { + var data = pie.data, + center = pie.center; + data.forEach(function (item) { + var startAngle = item.startAngle, + endAngle = item.endAngle, + radius = item.radius; + var centerAngle = (startAngle + endAngle) / 2; + + var pos = util.getCircleRadianPoint.apply(void 0, _toConsumableArray(center).concat([radius[1], centerAngle])); + + item.edgeCenterPos = pos; + }); + }); + return pies; + } + + function calcPiesOutSideLabelPos(pies) { + pies.forEach(function (pieItem) { + var leftPieDataItems = getLeftOrRightPieDataItems(pieItem); + var rightPieDataItems = getLeftOrRightPieDataItems(pieItem, false); + leftPieDataItems = sortPiesFromTopToBottom(leftPieDataItems); + rightPieDataItems = sortPiesFromTopToBottom(rightPieDataItems); + addLabelLineAndAlign(leftPieDataItems, pieItem); + addLabelLineAndAlign(rightPieDataItems, pieItem, false); + }); + return pies; + } + + function getLabelLineBendRadius(pieItem) { + var labelLineBendGap = pieItem.outsideLabel.labelLineBendGap; + var maxRadius = getPieMaxRadius(pieItem); + + if (typeof labelLineBendGap !== 'number') { + labelLineBendGap = parseInt(labelLineBendGap) / 100 * maxRadius; + } + + return labelLineBendGap + maxRadius; + } + + function getPieMaxRadius(pieItem) { + var data = pieItem.data; + var radius = data.map(function (_ref8) { + var _ref8$radius = _slicedToArray(_ref8.radius, 2), + foo = _ref8$radius[0], + r = _ref8$radius[1]; + + return r; + }); + return Math.max.apply(Math, _toConsumableArray(radius)); + } + + function getLeftOrRightPieDataItems(pieItem) { + var left = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var data = pieItem.data, + center = pieItem.center; + var centerXPos = center[0]; + return data.filter(function (_ref9) { + var edgeCenterPos = _ref9.edgeCenterPos; + var xPos = edgeCenterPos[0]; + if (left) return xPos <= centerXPos; + return xPos > centerXPos; + }); + } + + function sortPiesFromTopToBottom(dataItem) { + dataItem.sort(function (_ref10, _ref11) { + var _ref10$edgeCenterPos = _slicedToArray(_ref10.edgeCenterPos, 2), + t = _ref10$edgeCenterPos[0], + ay = _ref10$edgeCenterPos[1]; + + var _ref11$edgeCenterPos = _slicedToArray(_ref11.edgeCenterPos, 2), + tt = _ref11$edgeCenterPos[0], + by = _ref11$edgeCenterPos[1]; + + if (ay > by) return 1; + if (ay < by) return -1; + if (ay === by) return 0; + }); + return dataItem; + } + + function addLabelLineAndAlign(dataItem, pieItem) { + var left = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + var center = pieItem.center, + outsideLabel = pieItem.outsideLabel; + var radius = getLabelLineBendRadius(pieItem); + dataItem.forEach(function (item) { + var edgeCenterPos = item.edgeCenterPos, + startAngle = item.startAngle, + endAngle = item.endAngle; + var labelLineEndLength = outsideLabel.labelLineEndLength; + var angle = (startAngle + endAngle) / 2; + + var bendPoint = util.getCircleRadianPoint.apply(void 0, _toConsumableArray(center).concat([radius, angle])); + + var endPoint = _toConsumableArray(bendPoint); + + endPoint[0] += labelLineEndLength * (left ? -1 : 1); + item.labelLine = [edgeCenterPos, bendPoint, endPoint]; + item.labelLineLength = (0, util$1.getPolylineLength)(item.labelLine); + item.align = { + textAlign: 'left', + textBaseline: 'middle' + }; + if (left) item.align.textAlign = 'right'; + }); + } + + function getPieConfig(pieItem) { + var data = pieItem.data, + animationCurve = pieItem.animationCurve, + animationFrame = pieItem.animationFrame, + rLevel = pieItem.rLevel; + return data.map(function (foo, i) { + return { + name: 'pie', + index: rLevel, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: getPieShape(pieItem, i), + style: getPieStyle(pieItem, i) + }; + }); + } + + function getStartPieConfig(pieItem) { + var animationDelayGap = pieItem.animationDelayGap, + startAnimationCurve = pieItem.startAnimationCurve; + var configs = getPieConfig(pieItem); + configs.forEach(function (config, i) { + config.animationCurve = startAnimationCurve; + config.animationDelay = i * animationDelayGap; + config.shape.or = config.shape.ir; + }); + return configs; + } + + function beforeChangePie(graph) { + graph.animationDelay = 0; + } + + function getPieShape(pieItem, i) { + var center = pieItem.center, + data = pieItem.data; + var dataItem = data[i]; + var radius = dataItem.radius, + startAngle = dataItem.startAngle, + endAngle = dataItem.endAngle; + return { + startAngle: startAngle, + endAngle: endAngle, + ir: radius[0], + or: radius[1], + rx: center[0], + ry: center[1] + }; + } + + function getPieStyle(pieItem, i) { + var pieStyle = pieItem.pieStyle, + data = pieItem.data; + var dataItem = data[i]; + var color = dataItem.color; + return (0, util$1.deepMerge)({ + fill: color + }, pieStyle); + } + + function getInsideLabelConfig(pieItem) { + var animationCurve = pieItem.animationCurve, + animationFrame = pieItem.animationFrame, + data = pieItem.data, + rLevel = pieItem.rLevel; + return data.map(function (foo, i) { + return { + name: 'text', + index: rLevel, + visible: pieItem.insideLabel.show, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: getInsideLabelShape(pieItem, i), + style: getInsideLabelStyle(pieItem) + }; + }); + } + + function getInsideLabelShape(pieItem, i) { + var insideLabel = pieItem.insideLabel, + data = pieItem.data; + var formatter = insideLabel.formatter; + var dataItem = data[i]; + + var formatterType = _typeof(formatter); + + var label = ''; + + if (formatterType === 'string') { + label = formatter.replace('{name}', dataItem.name); + label = label.replace('{percent}', dataItem.percent); + label = label.replace('{value}', dataItem.value); + } + + if (formatterType === 'function') { + label = formatter(dataItem); + } + + return { + content: label, + position: dataItem.insideLabelPos + }; + } + + function getInsideLabelStyle(pieItem, i) { + var style = pieItem.insideLabel.style; + return style; + } + + function getOutsideLabelLineConfig(pieItem) { + var animationCurve = pieItem.animationCurve, + animationFrame = pieItem.animationFrame, + data = pieItem.data, + rLevel = pieItem.rLevel; + return data.map(function (foo, i) { + return { + name: 'polyline', + index: rLevel, + visible: pieItem.outsideLabel.show, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: getOutsideLabelLineShape(pieItem, i), + style: getOutsideLabelLineStyle(pieItem, i) + }; + }); + } + + function getStartOutsideLabelLineConfig(pieItem) { + var data = pieItem.data; + var configs = getOutsideLabelLineConfig(pieItem); + configs.forEach(function (config, i) { + config.style.lineDash = [0, data[i].labelLineLength]; + }); + return configs; + } + + function getOutsideLabelLineShape(pieItem, i) { + var data = pieItem.data; + var dataItem = data[i]; + return { + points: dataItem.labelLine + }; + } + + function getOutsideLabelLineStyle(pieItem, i) { + var outsideLabel = pieItem.outsideLabel, + data = pieItem.data; + var labelLineStyle = outsideLabel.labelLineStyle; + var color = data[i].color; + return (0, util$1.deepMerge)({ + stroke: color, + lineDash: [data[i].labelLineLength, 0] + }, labelLineStyle); + } + + function getOutsideLabelConfig(pieItem) { + var animationCurve = pieItem.animationCurve, + animationFrame = pieItem.animationFrame, + data = pieItem.data, + rLevel = pieItem.rLevel; + return data.map(function (foo, i) { + return { + name: 'text', + index: rLevel, + visible: pieItem.outsideLabel.show, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: getOutsideLabelShape(pieItem, i), + style: getOutsideLabelStyle(pieItem, i) + }; + }); + } + + function getStartOutsideLabelConfig(pieItem) { + var data = pieItem.data; + var configs = getOutsideLabelConfig(pieItem); + configs.forEach(function (config, i) { + config.shape.position = data[i].labelLine[1]; + }); + return configs; + } + + function getOutsideLabelShape(pieItem, i) { + var outsideLabel = pieItem.outsideLabel, + data = pieItem.data; + var formatter = outsideLabel.formatter; + var _data$i = data[i], + labelLine = _data$i.labelLine, + name = _data$i.name, + percent = _data$i.percent, + value = _data$i.value; + + var formatterType = _typeof(formatter); + + var label = ''; + + if (formatterType === 'string') { + label = formatter.replace('{name}', name); + label = label.replace('{percent}', percent); + label = label.replace('{value}', value); + } + + if (formatterType === 'function') { + label = formatter(data[i]); + } + + return { + content: label, + position: labelLine[2] + }; + } + + function getOutsideLabelStyle(pieItem, i) { + var outsideLabel = pieItem.outsideLabel, + data = pieItem.data; + var _data$i2 = data[i], + color = _data$i2.color, + align = _data$i2.align; + var style = outsideLabel.style; + return (0, util$1.deepMerge)(_objectSpread({ + fill: color + }, align), style); + } + }); + + unwrapExports(pie_1$1); + var pie_2 = pie_1$1.pie; + + var radarAxis_1$1 = createCommonjsModule(function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.radarAxis = radarAxis; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } + + function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + + function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + + function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + + function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } + + function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + + function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } + + function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } + + function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } + + function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } + + function radarAxis(chart) { + var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var radar = option.radar; + var radarAxis = []; + + if (radar) { + radarAxis = mergeRadarAxisDefaultConfig(radar); + radarAxis = calcRadarAxisCenter(radarAxis, chart); + radarAxis = calcRadarAxisRingRadius(radarAxis, chart); + radarAxis = calcRadarAxisLinePosition(radarAxis); + radarAxis = calcRadarAxisAreaRadius(radarAxis); + radarAxis = calcRadarAxisLabelPosition(radarAxis); + radarAxis = [radarAxis]; + } + + var radarAxisForUpdate = radarAxis; + if (radarAxis.length && !radarAxis[0].show) radarAxisForUpdate = []; + (0, updater_class.doUpdate)({ + chart: chart, + series: radarAxisForUpdate, + key: 'radarAxisSplitArea', + getGraphConfig: getSplitAreaConfig, + beforeUpdate: beforeUpdateSplitArea, + beforeChange: beforeChangeSplitArea + }); + (0, updater_class.doUpdate)({ + chart: chart, + series: radarAxisForUpdate, + key: 'radarAxisSplitLine', + getGraphConfig: getSplitLineConfig, + beforeUpdate: beforeUpdateSplitLine, + beforeChange: beforeChangeSplitLine + }); + (0, updater_class.doUpdate)({ + chart: chart, + series: radarAxisForUpdate, + key: 'radarAxisLine', + getGraphConfig: getAxisLineConfig + }); + (0, updater_class.doUpdate)({ + chart: chart, + series: radarAxisForUpdate, + key: 'radarAxisLable', + getGraphConfig: getAxisLabelConfig + }); + chart.radarAxis = radarAxis[0]; + } + + function mergeRadarAxisDefaultConfig(radar) { + return (0, util$1.deepMerge)((0, util.deepClone)(config.radarAxisConfig), radar); + } + + function calcRadarAxisCenter(radarAxis, chart) { + var area = chart.render.area; + var center = radarAxis.center; + radarAxis.centerPos = center.map(function (v, i) { + if (typeof v === 'number') return v; + return parseInt(v) / 100 * area[i]; + }); + return radarAxis; + } + + function calcRadarAxisRingRadius(radarAxis, chart) { + var area = chart.render.area; + var splitNum = radarAxis.splitNum, + radius = radarAxis.radius; + var maxRadius = Math.min.apply(Math, _toConsumableArray(area)) / 2; + if (typeof radius !== 'number') radius = parseInt(radius) / 100 * maxRadius; + var splitGap = radius / splitNum; + radarAxis.ringRadius = new Array(splitNum).fill(0).map(function (foo, i) { + return splitGap * (i + 1); + }); + radarAxis.radius = radius; + return radarAxis; + } + + function calcRadarAxisLinePosition(radarAxis) { + var indicator = radarAxis.indicator, + centerPos = radarAxis.centerPos, + radius = radarAxis.radius, + startAngle = radarAxis.startAngle; + var fullAngle = Math.PI * 2; + var indicatorNum = indicator.length; + var indicatorGap = fullAngle / indicatorNum; + var angles = new Array(indicatorNum).fill(0).map(function (foo, i) { + return indicatorGap * i + startAngle; + }); + radarAxis.axisLineAngles = angles; + radarAxis.axisLinePosition = angles.map(function (g) { + return util.getCircleRadianPoint.apply(void 0, _toConsumableArray(centerPos).concat([radius, g])); + }); + return radarAxis; + } + + function calcRadarAxisAreaRadius(radarAxis) { + var ringRadius = radarAxis.ringRadius; + var subRadius = ringRadius[0] / 2; + radarAxis.areaRadius = ringRadius.map(function (r) { + return r - subRadius; + }); + return radarAxis; + } + + function calcRadarAxisLabelPosition(radarAxis) { + var axisLineAngles = radarAxis.axisLineAngles, + centerPos = radarAxis.centerPos, + radius = radarAxis.radius, + axisLabel = radarAxis.axisLabel; + radius += axisLabel.labelGap; + radarAxis.axisLabelPosition = axisLineAngles.map(function (angle) { + return util.getCircleRadianPoint.apply(void 0, _toConsumableArray(centerPos).concat([radius, angle])); + }); + return radarAxis; + } + + function getSplitAreaConfig(radarAxis) { + var areaRadius = radarAxis.areaRadius, + polygon = radarAxis.polygon, + animationCurve = radarAxis.animationCurve, + animationFrame = radarAxis.animationFrame, + rLevel = radarAxis.rLevel; + var name = polygon ? 'regPolygon' : 'ring'; + return areaRadius.map(function (foo, i) { + return { + name: name, + index: rLevel, + visible: radarAxis.splitArea.show, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: getSplitAreaShape(radarAxis, i), + style: getSplitAreaStyle(radarAxis, i) + }; + }); + } + + function getSplitAreaShape(radarAxis, i) { + var polygon = radarAxis.polygon, + areaRadius = radarAxis.areaRadius, + indicator = radarAxis.indicator, + centerPos = radarAxis.centerPos; + var indicatorNum = indicator.length; + var shape = { + rx: centerPos[0], + ry: centerPos[1], + r: areaRadius[i] + }; + if (polygon) shape.side = indicatorNum; + return shape; + } + + function getSplitAreaStyle(radarAxis, i) { + var splitArea = radarAxis.splitArea, + ringRadius = radarAxis.ringRadius, + axisLineAngles = radarAxis.axisLineAngles, + polygon = radarAxis.polygon, + centerPos = radarAxis.centerPos; + var color = splitArea.color, + style = splitArea.style; + style = _objectSpread({ + fill: 'rgba(0, 0, 0, 0)' + }, style); + var lineWidth = ringRadius[0] - 0; + + if (polygon) { + var point1 = util.getCircleRadianPoint.apply(void 0, _toConsumableArray(centerPos).concat([ringRadius[0], axisLineAngles[0]])); + + var point2 = util.getCircleRadianPoint.apply(void 0, _toConsumableArray(centerPos).concat([ringRadius[0], axisLineAngles[1]])); + + lineWidth = (0, util$1.getPointToLineDistance)(centerPos, point1, point2); + } + + style = (0, util$1.deepMerge)((0, util.deepClone)(style, true), { + lineWidth: lineWidth + }); + if (!color.length) return style; + var colorNum = color.length; + return (0, util$1.deepMerge)(style, { + stroke: color[i % colorNum] + }); + } + + function beforeUpdateSplitArea(graphs, radarAxis, i, updater) { + var cache = graphs[i]; + if (!cache) return; + var render = updater.chart.render; + var polygon = radarAxis.polygon; + var name = cache[0].name; + var currentName = polygon ? 'regPolygon' : 'ring'; + var delAll = currentName !== name; + if (!delAll) return; + cache.forEach(function (g) { + return render.delGraph(g); + }); + graphs[i] = null; + } + + function beforeChangeSplitArea(graph, config) { + var side = config.shape.side; + if (typeof side !== 'number') return; + graph.shape.side = side; + } + + function getSplitLineConfig(radarAxis) { + var ringRadius = radarAxis.ringRadius, + polygon = radarAxis.polygon, + animationCurve = radarAxis.animationCurve, + animationFrame = radarAxis.animationFrame, + rLevel = radarAxis.rLevel; + var name = polygon ? 'regPolygon' : 'ring'; + return ringRadius.map(function (foo, i) { + return { + name: name, + index: rLevel, + animationCurve: animationCurve, + animationFrame: animationFrame, + visible: radarAxis.splitLine.show, + shape: getSplitLineShape(radarAxis, i), + style: getSplitLineStyle(radarAxis, i) + }; + }); + } + + function getSplitLineShape(radarAxis, i) { + var ringRadius = radarAxis.ringRadius, + centerPos = radarAxis.centerPos, + indicator = radarAxis.indicator, + polygon = radarAxis.polygon; + var shape = { + rx: centerPos[0], + ry: centerPos[1], + r: ringRadius[i] + }; + var indicatorNum = indicator.length; + if (polygon) shape.side = indicatorNum; + return shape; + } + + function getSplitLineStyle(radarAxis, i) { + var splitLine = radarAxis.splitLine; + var color = splitLine.color, + style = splitLine.style; + style = _objectSpread({ + fill: 'rgba(0, 0, 0, 0)' + }, style); + if (!color.length) return style; + var colorNum = color.length; + return (0, util$1.deepMerge)(style, { + stroke: color[i % colorNum] + }); + } + + function beforeUpdateSplitLine(graphs, radarAxis, i, updater) { + var cache = graphs[i]; + if (!cache) return; + var render = updater.chart.render; + var polygon = radarAxis.polygon; + var name = cache[0].name; + var currenName = polygon ? 'regPolygon' : 'ring'; + var delAll = currenName !== name; + if (!delAll) return; + cache.forEach(function (g) { + return render.delGraph(g); + }); + graphs[i] = null; + } + + function beforeChangeSplitLine(graph, config) { + var side = config.shape.side; + if (typeof side !== 'number') return; + graph.shape.side = side; + } + + function getAxisLineConfig(radarAxis) { + var axisLinePosition = radarAxis.axisLinePosition, + animationCurve = radarAxis.animationCurve, + animationFrame = radarAxis.animationFrame, + rLevel = radarAxis.rLevel; + return axisLinePosition.map(function (foo, i) { + return { + name: 'polyline', + index: rLevel, + visible: radarAxis.axisLine.show, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: getAxisLineShape(radarAxis, i), + style: getAxisLineStyle(radarAxis, i) + }; + }); + } + + function getAxisLineShape(radarAxis, i) { + var centerPos = radarAxis.centerPos, + axisLinePosition = radarAxis.axisLinePosition; + var points = [centerPos, axisLinePosition[i]]; + return { + points: points + }; + } + + function getAxisLineStyle(radarAxis, i) { + var axisLine = radarAxis.axisLine; + var color = axisLine.color, + style = axisLine.style; + if (!color.length) return style; + var colorNum = color.length; + return (0, util$1.deepMerge)(style, { + stroke: color[i % colorNum] + }); + } + + function getAxisLabelConfig(radarAxis) { + var axisLabelPosition = radarAxis.axisLabelPosition, + animationCurve = radarAxis.animationCurve, + animationFrame = radarAxis.animationFrame, + rLevel = radarAxis.rLevel; + return axisLabelPosition.map(function (foo, i) { + return { + name: 'text', + index: rLevel, + visible: radarAxis.axisLabel.show, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: getAxisLableShape(radarAxis, i), + style: getAxisLableStyle(radarAxis, i) + }; + }); + } + + function getAxisLableShape(radarAxis, i) { + var axisLabelPosition = radarAxis.axisLabelPosition, + indicator = radarAxis.indicator; + return { + content: indicator[i].name, + position: axisLabelPosition[i] + }; + } + + function getAxisLableStyle(radarAxis, i) { + var axisLabel = radarAxis.axisLabel, + _radarAxis$centerPos = _slicedToArray(radarAxis.centerPos, 2), + x = _radarAxis$centerPos[0], + y = _radarAxis$centerPos[1], + axisLabelPosition = radarAxis.axisLabelPosition; + + var color = axisLabel.color, + style = axisLabel.style; + + var _axisLabelPosition$i = _slicedToArray(axisLabelPosition[i], 2), + labelXpos = _axisLabelPosition$i[0], + labelYPos = _axisLabelPosition$i[1]; + + var textAlign = labelXpos > x ? 'left' : 'right'; + var textBaseline = labelYPos > y ? 'top' : 'bottom'; + style = (0, util$1.deepMerge)({ + textAlign: textAlign, + textBaseline: textBaseline + }, style); + if (!color.length) return style; + var colorNum = color.length; + return (0, util$1.deepMerge)(style, { + fill: color[i % colorNum] + }); + } + }); + + unwrapExports(radarAxis_1$1); + var radarAxis_2 = radarAxis_1$1.radarAxis; + + var radar_1$1 = createCommonjsModule(function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.radar = radar; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } + + function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + + function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + + function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } + + function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + + function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + + function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + + function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } + + function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } + + function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } + + function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } + + function radar(chart) { + var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var series = option.series; + if (!series) series = []; + var radars = (0, util$1.initNeedSeries)(series, config.radarConfig, 'radar'); + radars = calcRadarPosition(radars, chart); + radars = calcRadarLabelPosition(radars, chart); + radars = calcRadarLabelAlign(radars, chart); + (0, updater_class.doUpdate)({ + chart: chart, + series: radars, + key: 'radar', + getGraphConfig: getRadarConfig, + getStartGraphConfig: getStartRadarConfig, + beforeChange: beforeChangeRadar + }); + (0, updater_class.doUpdate)({ + chart: chart, + series: radars, + key: 'radarPoint', + getGraphConfig: getPointConfig, + getStartGraphConfig: getStartPointConfig + }); + (0, updater_class.doUpdate)({ + chart: chart, + series: radars, + key: 'radarLabel', + getGraphConfig: getLabelConfig + }); + } + + function calcRadarPosition(radars, chart) { + var radarAxis = chart.radarAxis; + if (!radarAxis) return []; + var indicator = radarAxis.indicator, + axisLineAngles = radarAxis.axisLineAngles, + radius = radarAxis.radius, + centerPos = radarAxis.centerPos; + radars.forEach(function (radarItem) { + var data = radarItem.data; + radarItem.dataRadius = []; + radarItem.radarPosition = indicator.map(function (_ref, i) { + var max = _ref.max, + min = _ref.min; + var v = data[i]; + if (typeof max !== 'number') max = v; + if (typeof min !== 'number') min = 0; + if (typeof v !== 'number') v = min; + var dataRadius = (v - min) / (max - min) * radius; + radarItem.dataRadius[i] = dataRadius; + return util.getCircleRadianPoint.apply(void 0, _toConsumableArray(centerPos).concat([dataRadius, axisLineAngles[i]])); + }); + }); + return radars; + } + + function calcRadarLabelPosition(radars, chart) { + var radarAxis = chart.radarAxis; + if (!radarAxis) return []; + var centerPos = radarAxis.centerPos, + axisLineAngles = radarAxis.axisLineAngles; + radars.forEach(function (radarItem) { + var dataRadius = radarItem.dataRadius, + label = radarItem.label; + var labelGap = label.labelGap; + radarItem.labelPosition = dataRadius.map(function (r, i) { + return util.getCircleRadianPoint.apply(void 0, _toConsumableArray(centerPos).concat([r + labelGap, axisLineAngles[i]])); + }); + }); + return radars; + } + + function calcRadarLabelAlign(radars, chart) { + var radarAxis = chart.radarAxis; + if (!radarAxis) return []; + + var _radarAxis$centerPos = _slicedToArray(radarAxis.centerPos, 2), + x = _radarAxis$centerPos[0], + y = _radarAxis$centerPos[1]; + + radars.forEach(function (radarItem) { + var labelPosition = radarItem.labelPosition; + var labelAlign = labelPosition.map(function (_ref2) { + var _ref3 = _slicedToArray(_ref2, 2), + lx = _ref3[0], + ly = _ref3[1]; + + var textAlign = lx > x ? 'left' : 'right'; + var textBaseline = ly > y ? 'top' : 'bottom'; + return { + textAlign: textAlign, + textBaseline: textBaseline + }; + }); + radarItem.labelAlign = labelAlign; + }); + return radars; + } + + function getRadarConfig(radarItem) { + var animationCurve = radarItem.animationCurve, + animationFrame = radarItem.animationFrame, + rLevel = radarItem.rLevel; + return [{ + name: 'polyline', + index: rLevel, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: getRadarShape(radarItem), + style: getRadarStyle(radarItem) + }]; + } + + function getStartRadarConfig(radarItem, updater) { + var centerPos = updater.chart.radarAxis.centerPos; + var config = getRadarConfig(radarItem)[0]; + var pointNum = config.shape.points.length; + var points = new Array(pointNum).fill(0).map(function (foo) { + return _toConsumableArray(centerPos); + }); + config.shape.points = points; + return [config]; + } + + function getRadarShape(radarItem) { + var radarPosition = radarItem.radarPosition; + return { + points: radarPosition, + close: true + }; + } + + function getRadarStyle(radarItem) { + var radarStyle = radarItem.radarStyle, + color = radarItem.color; + var colorRgbaValue = (0, lib.getRgbaValue)(color); + colorRgbaValue[3] = 0.5; + var radarDefaultColor = { + stroke: color, + fill: (0, lib.getColorFromRgbValue)(colorRgbaValue) + }; + return (0, util$1.deepMerge)(radarDefaultColor, radarStyle); + } + + function beforeChangeRadar(graph, _ref4) { + var shape = _ref4.shape; + var graphPoints = graph.shape.points; + var graphPointsNum = graphPoints.length; + var pointsNum = shape.points.length; + + if (pointsNum > graphPointsNum) { + var lastPoint = graphPoints.slice(-1)[0]; + var newAddPoints = new Array(pointsNum - graphPointsNum).fill(0).map(function (foo) { + return _toConsumableArray(lastPoint); + }); + graphPoints.push.apply(graphPoints, _toConsumableArray(newAddPoints)); + } else if (pointsNum < graphPointsNum) { + graphPoints.splice(pointsNum); + } + } + + function getPointConfig(radarItem) { + var radarPosition = radarItem.radarPosition, + animationCurve = radarItem.animationCurve, + animationFrame = radarItem.animationFrame, + rLevel = radarItem.rLevel; + return radarPosition.map(function (foo, i) { + return { + name: 'circle', + index: rLevel, + animationCurve: animationCurve, + animationFrame: animationFrame, + visible: radarItem.point.show, + shape: getPointShape(radarItem, i), + style: getPointStyle(radarItem) + }; + }); + } + + function getStartPointConfig(radarItem) { + var configs = getPointConfig(radarItem); + configs.forEach(function (config) { + return config.shape.r = 0.01; + }); + return configs; + } + + function getPointShape(radarItem, i) { + var radarPosition = radarItem.radarPosition, + point = radarItem.point; + var radius = point.radius; + var position = radarPosition[i]; + return { + rx: position[0], + ry: position[1], + r: radius + }; + } + + function getPointStyle(radarItem, i) { + var point = radarItem.point, + color = radarItem.color; + var style = point.style; + return (0, util$1.deepMerge)({ + stroke: color + }, style); + } + + function getLabelConfig(radarItem) { + var labelPosition = radarItem.labelPosition, + animationCurve = radarItem.animationCurve, + animationFrame = radarItem.animationFrame, + rLevel = radarItem.rLevel; + return labelPosition.map(function (foo, i) { + return { + name: 'text', + index: rLevel, + visible: radarItem.label.show, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: getLabelShape(radarItem, i), + style: getLabelStyle(radarItem, i) + }; + }); + } + + function getLabelShape(radarItem, i) { + var labelPosition = radarItem.labelPosition, + label = radarItem.label, + data = radarItem.data; + var offset = label.offset, + formatter = label.formatter; + var position = mergePointOffset(labelPosition[i], offset); + var labelText = data[i] ? data[i].toString() : '0'; + + var formatterType = _typeof(formatter); + + if (formatterType === 'string') labelText = formatter.replace('{value}', labelText); + if (formatterType === 'function') labelText = formatter(labelText); + return { + content: labelText, + position: position + }; + } + + function mergePointOffset(_ref5, _ref6) { + var _ref7 = _slicedToArray(_ref5, 2), + x = _ref7[0], + y = _ref7[1]; + + var _ref8 = _slicedToArray(_ref6, 2), + ox = _ref8[0], + oy = _ref8[1]; + + return [x + ox, y + oy]; + } + + function getLabelStyle(radarItem, i) { + var label = radarItem.label, + color = radarItem.color, + labelAlign = radarItem.labelAlign; + var style = label.style; + + var defaultColorAndAlign = _objectSpread({ + fill: color + }, labelAlign[i]); + + return (0, util$1.deepMerge)(defaultColorAndAlign, style); + } + }); + + unwrapExports(radar_1$1); + var radar_2 = radar_1$1.radar; + + var gauge_1$1 = createCommonjsModule(function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.gauge = gauge$1; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } + + function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + + function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + + function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } + + function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + + function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + + function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + + function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } + + function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } + + function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } + + function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } + + function gauge$1(chart) { + var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var series = option.series; + if (!series) series = []; + var gauges = (0, util$1.initNeedSeries)(series, gauge.gaugeConfig, 'gauge'); + gauges = calcGaugesCenter(gauges, chart); + gauges = calcGaugesRadius(gauges, chart); + gauges = calcGaugesDataRadiusAndLineWidth(gauges, chart); + gauges = calcGaugesDataAngles(gauges); + gauges = calcGaugesDataGradient(gauges); + gauges = calcGaugesAxisTickPosition(gauges); + gauges = calcGaugesLabelPositionAndAlign(gauges); + gauges = calcGaugesLabelData(gauges); + gauges = calcGaugesDetailsPosition(gauges); + gauges = calcGaugesDetailsContent(gauges); + (0, updater_class.doUpdate)({ + chart: chart, + series: gauges, + key: 'gaugeAxisTick', + getGraphConfig: getAxisTickConfig + }); + (0, updater_class.doUpdate)({ + chart: chart, + series: gauges, + key: 'gaugeAxisLabel', + getGraphConfig: getAxisLabelConfig + }); + (0, updater_class.doUpdate)({ + chart: chart, + series: gauges, + key: 'gaugeBackgroundArc', + getGraphConfig: getBackgroundArcConfig, + getStartGraphConfig: getStartBackgroundArcConfig + }); + (0, updater_class.doUpdate)({ + chart: chart, + series: gauges, + key: 'gaugeArc', + getGraphConfig: getArcConfig, + getStartGraphConfig: getStartArcConfig, + beforeChange: beforeChangeArc + }); + (0, updater_class.doUpdate)({ + chart: chart, + series: gauges, + key: 'gaugePointer', + getGraphConfig: getPointerConfig, + getStartGraphConfig: getStartPointerConfig + }); + (0, updater_class.doUpdate)({ + chart: chart, + series: gauges, + key: 'gaugeDetails', + getGraphConfig: getDetailsConfig + }); + } + + function calcGaugesCenter(gauges, chart) { + var area = chart.render.area; + gauges.forEach(function (gaugeItem) { + var center = gaugeItem.center; + center = center.map(function (pos, i) { + if (typeof pos === 'number') return pos; + return parseInt(pos) / 100 * area[i]; + }); + gaugeItem.center = center; + }); + return gauges; + } + + function calcGaugesRadius(gauges, chart) { + var area = chart.render.area; + var maxRadius = Math.min.apply(Math, _toConsumableArray(area)) / 2; + gauges.forEach(function (gaugeItem) { + var radius = gaugeItem.radius; + + if (typeof radius !== 'number') { + radius = parseInt(radius) / 100 * maxRadius; + } + + gaugeItem.radius = radius; + }); + return gauges; + } + + function calcGaugesDataRadiusAndLineWidth(gauges, chart) { + var area = chart.render.area; + var maxRadius = Math.min.apply(Math, _toConsumableArray(area)) / 2; + gauges.forEach(function (gaugeItem) { + var radius = gaugeItem.radius, + data = gaugeItem.data, + arcLineWidth = gaugeItem.arcLineWidth; + data.forEach(function (item) { + var arcRadius = item.radius, + lineWidth = item.lineWidth; + if (!arcRadius) arcRadius = radius; + if (typeof arcRadius !== 'number') arcRadius = parseInt(arcRadius) / 100 * maxRadius; + item.radius = arcRadius; + if (!lineWidth) lineWidth = arcLineWidth; + item.lineWidth = lineWidth; + }); + }); + return gauges; + } + + function calcGaugesDataAngles(gauges, chart) { + gauges.forEach(function (gaugeItem) { + var startAngle = gaugeItem.startAngle, + endAngle = gaugeItem.endAngle, + data = gaugeItem.data, + min = gaugeItem.min, + max = gaugeItem.max; + var angleMinus = endAngle - startAngle; + var valueMinus = max - min; + data.forEach(function (item) { + var value = item.value; + var itemAngle = Math.abs((value - min) / valueMinus * angleMinus); + item.startAngle = startAngle; + item.endAngle = startAngle + itemAngle; + }); + }); + return gauges; + } + + function calcGaugesDataGradient(gauges, chart) { + gauges.forEach(function (gaugeItem) { + var data = gaugeItem.data; + data.forEach(function (item) { + var color = item.color, + gradient = item.gradient; + if (!gradient || !gradient.length) gradient = color; + if (!(gradient instanceof Array)) gradient = [gradient]; + item.gradient = gradient; + }); + }); + return gauges; + } + + function calcGaugesAxisTickPosition(gauges, chart) { + gauges.forEach(function (gaugeItem) { + var startAngle = gaugeItem.startAngle, + endAngle = gaugeItem.endAngle, + splitNum = gaugeItem.splitNum, + center = gaugeItem.center, + radius = gaugeItem.radius, + arcLineWidth = gaugeItem.arcLineWidth, + axisTick = gaugeItem.axisTick; + var tickLength = axisTick.tickLength, + lineWidth = axisTick.style.lineWidth; + var angles = endAngle - startAngle; + var outerRadius = radius - arcLineWidth / 2; + var innerRadius = outerRadius - tickLength; + var angleGap = angles / (splitNum - 1); + var arcLength = 2 * Math.PI * radius * angles / (Math.PI * 2); + var offset = Math.ceil(lineWidth / 2) / arcLength * angles; + gaugeItem.tickAngles = []; + gaugeItem.tickInnerRadius = []; + gaugeItem.tickPosition = new Array(splitNum).fill(0).map(function (foo, i) { + var angle = startAngle + angleGap * i; + if (i === 0) angle += offset; + if (i === splitNum - 1) angle -= offset; + gaugeItem.tickAngles[i] = angle; + gaugeItem.tickInnerRadius[i] = innerRadius; + return [util.getCircleRadianPoint.apply(void 0, _toConsumableArray(center).concat([outerRadius, angle])), util.getCircleRadianPoint.apply(void 0, _toConsumableArray(center).concat([innerRadius, angle]))]; + }); + }); + return gauges; + } + + function calcGaugesLabelPositionAndAlign(gauges, chart) { + gauges.forEach(function (gaugeItem) { + var center = gaugeItem.center, + tickInnerRadius = gaugeItem.tickInnerRadius, + tickAngles = gaugeItem.tickAngles, + labelGap = gaugeItem.axisLabel.labelGap; + var position = tickAngles.map(function (angle, i) { + return util.getCircleRadianPoint.apply(void 0, _toConsumableArray(center).concat([tickInnerRadius[i] - labelGap, tickAngles[i]])); + }); + var align = position.map(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + x = _ref2[0], + y = _ref2[1]; + + return { + textAlign: x > center[0] ? 'right' : 'left', + textBaseline: y > center[1] ? 'bottom' : 'top' + }; + }); + gaugeItem.labelPosition = position; + gaugeItem.labelAlign = align; + }); + return gauges; + } + + function calcGaugesLabelData(gauges, chart) { + gauges.forEach(function (gaugeItem) { + var axisLabel = gaugeItem.axisLabel, + min = gaugeItem.min, + max = gaugeItem.max, + splitNum = gaugeItem.splitNum; + var data = axisLabel.data, + formatter = axisLabel.formatter; + var valueGap = (max - min) / (splitNum - 1); + var value = new Array(splitNum).fill(0).map(function (foo, i) { + return parseInt(min + valueGap * i); + }); + + var formatterType = _typeof(formatter); + + data = (0, util$1.deepMerge)(value, data).map(function (v, i) { + var label = v; + + if (formatterType === 'string') { + label = formatter.replace('{value}', v); + } + + if (formatterType === 'function') { + label = formatter({ + value: v, + index: i + }); + } + + return label; + }); + axisLabel.data = data; + }); + return gauges; + } + + function calcGaugesDetailsPosition(gauges, chart) { + gauges.forEach(function (gaugeItem) { + var data = gaugeItem.data, + details = gaugeItem.details, + center = gaugeItem.center; + var position = details.position, + offset = details.offset; + var detailsPosition = data.map(function (_ref3) { + var startAngle = _ref3.startAngle, + endAngle = _ref3.endAngle, + radius = _ref3.radius; + var point = null; + + if (position === 'center') { + point = center; + } else if (position === 'start') { + point = util.getCircleRadianPoint.apply(void 0, _toConsumableArray(center).concat([radius, startAngle])); + } else if (position === 'end') { + point = util.getCircleRadianPoint.apply(void 0, _toConsumableArray(center).concat([radius, endAngle])); + } + + return getOffsetedPoint(point, offset); + }); + gaugeItem.detailsPosition = detailsPosition; + }); + return gauges; + } + + function calcGaugesDetailsContent(gauges, chart) { + gauges.forEach(function (gaugeItem) { + var data = gaugeItem.data, + details = gaugeItem.details; + var formatter = details.formatter; + + var formatterType = _typeof(formatter); + + var contents = data.map(function (dataItem) { + var content = dataItem.value; + + if (formatterType === 'string') { + content = formatter.replace('{value}', '{nt}'); + content = content.replace('{name}', dataItem.name); + } + + if (formatterType === 'function') content = formatter(dataItem); + return content.toString(); + }); + gaugeItem.detailsContent = contents; + }); + return gauges; + } + + function getOffsetedPoint(_ref4, _ref5) { + var _ref6 = _slicedToArray(_ref4, 2), + x = _ref6[0], + y = _ref6[1]; + + var _ref7 = _slicedToArray(_ref5, 2), + ox = _ref7[0], + oy = _ref7[1]; + + return [x + ox, y + oy]; + } + + function getAxisTickConfig(gaugeItem) { + var tickPosition = gaugeItem.tickPosition, + animationCurve = gaugeItem.animationCurve, + animationFrame = gaugeItem.animationFrame, + rLevel = gaugeItem.rLevel; + return tickPosition.map(function (foo, i) { + return { + name: 'polyline', + index: rLevel, + visible: gaugeItem.axisTick.show, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: getAxisTickShape(gaugeItem, i), + style: getAxisTickStyle(gaugeItem) + }; + }); + } + + function getAxisTickShape(gaugeItem, i) { + var tickPosition = gaugeItem.tickPosition; + return { + points: tickPosition[i] + }; + } + + function getAxisTickStyle(gaugeItem, i) { + var style = gaugeItem.axisTick.style; + return style; + } + + function getAxisLabelConfig(gaugeItem) { + var labelPosition = gaugeItem.labelPosition, + animationCurve = gaugeItem.animationCurve, + animationFrame = gaugeItem.animationFrame, + rLevel = gaugeItem.rLevel; + return labelPosition.map(function (foo, i) { + return { + name: 'text', + index: rLevel, + visible: gaugeItem.axisLabel.show, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: getAxisLabelShape(gaugeItem, i), + style: getAxisLabelStyle(gaugeItem, i) + }; + }); + } + + function getAxisLabelShape(gaugeItem, i) { + var labelPosition = gaugeItem.labelPosition, + data = gaugeItem.axisLabel.data; + return { + content: data[i].toString(), + position: labelPosition[i] + }; + } + + function getAxisLabelStyle(gaugeItem, i) { + var labelAlign = gaugeItem.labelAlign, + axisLabel = gaugeItem.axisLabel; + var style = axisLabel.style; + return (0, util$1.deepMerge)(_objectSpread({}, labelAlign[i]), style); + } + + function getBackgroundArcConfig(gaugeItem) { + var animationCurve = gaugeItem.animationCurve, + animationFrame = gaugeItem.animationFrame, + rLevel = gaugeItem.rLevel; + return [{ + name: 'arc', + index: rLevel, + visible: gaugeItem.backgroundArc.show, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: getGaugeBackgroundArcShape(gaugeItem), + style: getGaugeBackgroundArcStyle(gaugeItem) + }]; + } + + function getGaugeBackgroundArcShape(gaugeItem) { + var startAngle = gaugeItem.startAngle, + endAngle = gaugeItem.endAngle, + center = gaugeItem.center, + radius = gaugeItem.radius; + return { + rx: center[0], + ry: center[1], + r: radius, + startAngle: startAngle, + endAngle: endAngle + }; + } + + function getGaugeBackgroundArcStyle(gaugeItem) { + var backgroundArc = gaugeItem.backgroundArc, + arcLineWidth = gaugeItem.arcLineWidth; + var style = backgroundArc.style; + return (0, util$1.deepMerge)({ + lineWidth: arcLineWidth + }, style); + } + + function getStartBackgroundArcConfig(gaugeItem) { + var config = getBackgroundArcConfig(gaugeItem)[0]; + + var shape = _objectSpread({}, config.shape); + + shape.endAngle = config.shape.startAngle; + config.shape = shape; + return [config]; + } + + function getArcConfig(gaugeItem) { + var data = gaugeItem.data, + animationCurve = gaugeItem.animationCurve, + animationFrame = gaugeItem.animationFrame, + rLevel = gaugeItem.rLevel; + return data.map(function (foo, i) { + return { + name: 'agArc', + index: rLevel, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: getGaugeArcShape(gaugeItem, i), + style: getGaugeArcStyle(gaugeItem, i) + }; + }); + } + + function getGaugeArcShape(gaugeItem, i) { + var data = gaugeItem.data, + center = gaugeItem.center, + gradientEndAngle = gaugeItem.endAngle; + var _data$i = data[i], + radius = _data$i.radius, + startAngle = _data$i.startAngle, + endAngle = _data$i.endAngle, + localGradient = _data$i.localGradient; + if (localGradient) gradientEndAngle = endAngle; + return { + rx: center[0], + ry: center[1], + r: radius, + startAngle: startAngle, + endAngle: endAngle, + gradientEndAngle: gradientEndAngle + }; + } + + function getGaugeArcStyle(gaugeItem, i) { + var data = gaugeItem.data, + dataItemStyle = gaugeItem.dataItemStyle; + var _data$i2 = data[i], + lineWidth = _data$i2.lineWidth, + gradient = _data$i2.gradient; + gradient = gradient.map(function (c) { + return (0, lib.getRgbaValue)(c); + }); + return (0, util$1.deepMerge)({ + lineWidth: lineWidth, + gradient: gradient + }, dataItemStyle); + } + + function getStartArcConfig(gaugeItem) { + var configs = getArcConfig(gaugeItem); + configs.map(function (config) { + var shape = _objectSpread({}, config.shape); + + shape.endAngle = config.shape.startAngle; + config.shape = shape; + }); + return configs; + } + + function beforeChangeArc(graph, config) { + var graphGradient = graph.style.gradient; + var cacheNum = graphGradient.length; + var needNum = config.style.gradient.length; + + if (cacheNum > needNum) { + graphGradient.splice(needNum); + } else { + var last = graphGradient.slice(-1)[0]; + graphGradient.push.apply(graphGradient, _toConsumableArray(new Array(needNum - cacheNum).fill(0).map(function (foo) { + return _toConsumableArray(last); + }))); + } + } + + function getPointerConfig(gaugeItem) { + var animationCurve = gaugeItem.animationCurve, + animationFrame = gaugeItem.animationFrame, + center = gaugeItem.center, + rLevel = gaugeItem.rLevel; + return [{ + name: 'polyline', + index: rLevel, + visible: gaugeItem.pointer.show, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: getPointerShape(gaugeItem), + style: getPointerStyle(gaugeItem), + setGraphCenter: function setGraphCenter(foo, graph) { + graph.style.graphCenter = center; + } + }]; + } + + function getPointerShape(gaugeItem) { + var center = gaugeItem.center; + return { + points: getPointerPoints(center), + close: true + }; + } + + function getPointerStyle(gaugeItem) { + var startAngle = gaugeItem.startAngle, + endAngle = gaugeItem.endAngle, + min = gaugeItem.min, + max = gaugeItem.max, + data = gaugeItem.data, + pointer = gaugeItem.pointer, + center = gaugeItem.center; + var valueIndex = pointer.valueIndex, + style = pointer.style; + var value = data[valueIndex] ? data[valueIndex].value : 0; + var angle = (value - min) / (max - min) * (endAngle - startAngle) + startAngle + Math.PI / 2; + return (0, util$1.deepMerge)({ + rotate: (0, util$1.radianToAngle)(angle), + scale: [1, 1], + graphCenter: center + }, style); + } + + function getPointerPoints(_ref8) { + var _ref9 = _slicedToArray(_ref8, 2), + x = _ref9[0], + y = _ref9[1]; + + var point1 = [x, y - 40]; + var point2 = [x + 5, y]; + var point3 = [x, y + 10]; + var point4 = [x - 5, y]; + return [point1, point2, point3, point4]; + } + + function getStartPointerConfig(gaugeItem) { + var startAngle = gaugeItem.startAngle; + var config = getPointerConfig(gaugeItem)[0]; + config.style.rotate = (0, util$1.radianToAngle)(startAngle + Math.PI / 2); + return [config]; + } + + function getDetailsConfig(gaugeItem) { + var detailsPosition = gaugeItem.detailsPosition, + animationCurve = gaugeItem.animationCurve, + animationFrame = gaugeItem.animationFrame, + rLevel = gaugeItem.rLevel; + var visible = gaugeItem.details.show; + return detailsPosition.map(function (foo, i) { + return { + name: 'numberText', + index: rLevel, + visible: visible, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: getDetailsShape(gaugeItem, i), + style: getDetailsStyle(gaugeItem, i) + }; + }); + } + + function getDetailsShape(gaugeItem, i) { + var detailsPosition = gaugeItem.detailsPosition, + detailsContent = gaugeItem.detailsContent, + data = gaugeItem.data, + details = gaugeItem.details; + var position = detailsPosition[i]; + var content = detailsContent[i]; + var dataValue = data[i].value; + var toFixed = details.valueToFixed; + return { + number: [dataValue], + content: content, + position: position, + toFixed: toFixed + }; + } + + function getDetailsStyle(gaugeItem, i) { + var details = gaugeItem.details, + data = gaugeItem.data; + var style = details.style; + var color = data[i].color; + return (0, util$1.deepMerge)({ + fill: color + }, style); + } + }); + + unwrapExports(gauge_1$1); + var gauge_2 = gauge_1$1.gauge; + + var legend_1$1 = createCommonjsModule(function (module, exports) { + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.legend = legend; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + + function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } + + function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + + function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + + function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + + function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + + function legend(chart) { + var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var legend = option.legend; + + if (legend) { + legend = (0, util$1.deepMerge)((0, util.deepClone)(config.legendConfig, true), legend); + legend = initLegendData(legend); + legend = filterInvalidData(legend, option, chart); + legend = calcLegendTextWidth(legend, chart); + legend = calcLegendPosition(legend, chart); + legend = [legend]; + } else { + legend = []; + } + + (0, updater_class.doUpdate)({ + chart: chart, + series: legend, + key: 'legendIcon', + getGraphConfig: getIconConfig + }); + (0, updater_class.doUpdate)({ + chart: chart, + series: legend, + key: 'legendText', + getGraphConfig: getTextConfig + }); + } + + function initLegendData(legend) { + var data = legend.data; + legend.data = data.map(function (item) { + var itemType = _typeof(item); + + if (itemType === 'string') { + return { + name: item + }; + } else if (itemType === 'object') { + return item; + } + + return { + name: '' + }; + }); + return legend; + } + + function filterInvalidData(legend, option, chart) { + var series = option.series; + var legendStatus = chart.legendStatus; + var data = legend.data.filter(function (item) { + var name = item.name; + var result = series.find(function (_ref) { + var sn = _ref.name; + return name === sn; + }); + if (!result) return false; + if (!item.color) item.color = result.color; + if (!item.icon) item.icon = result.type; + return item; + }); + if (!legendStatus || legendStatus.length !== legend.data.length) legendStatus = new Array(legend.data.length).fill(true); + data.forEach(function (item, i) { + return item.status = legendStatus[i]; + }); + legend.data = data; + chart.legendStatus = legendStatus; + return legend; + } + + function calcLegendTextWidth(legend, chart) { + var ctx = chart.render.ctx; + var data = legend.data, + textStyle = legend.textStyle, + textUnselectedStyle = legend.textUnselectedStyle; + data.forEach(function (item) { + var status = item.status, + name = item.name; + item.textWidth = getTextWidth(ctx, name, status ? textStyle : textUnselectedStyle); + }); + return legend; + } + + function getTextWidth(ctx, text, style) { + ctx.font = getFontConfig(style); + return ctx.measureText(text).width; + } + + function getFontConfig(style) { + var fontFamily = style.fontFamily, + fontSize = style.fontSize; + return "".concat(fontSize, "px ").concat(fontFamily); + } + + function calcLegendPosition(legend, chart) { + var orient = legend.orient; + + if (orient === 'vertical') { + calcVerticalPosition(legend, chart); + } else { + calcHorizontalPosition(legend, chart); + } + + return legend; + } + + function calcHorizontalPosition(legend, chart) { + var iconHeight = legend.iconHeight, + itemGap = legend.itemGap; + var lines = calcDefaultHorizontalPosition(legend, chart); + var xOffsets = lines.map(function (line) { + return getHorizontalXOffset(line, legend, chart); + }); + var yOffset = getHorizontalYOffset(legend, chart); + var align = { + textAlign: 'left', + textBaseline: 'middle' + }; + lines.forEach(function (line, i) { + return line.forEach(function (item) { + var iconPosition = item.iconPosition, + textPosition = item.textPosition; + var xOffset = xOffsets[i]; + var realYOffset = yOffset + i * (itemGap + iconHeight); + item.iconPosition = mergeOffset(iconPosition, [xOffset, realYOffset]); + item.textPosition = mergeOffset(textPosition, [xOffset, realYOffset]); + item.align = align; + }); + }); + } + + function calcDefaultHorizontalPosition(legend, chart) { + var data = legend.data, + iconWidth = legend.iconWidth; + var w = chart.render.area[0]; + var startIndex = 0; + var lines = [[]]; + data.forEach(function (item, i) { + var beforeWidth = getBeforeWidth(startIndex, i, legend); + var endXPos = beforeWidth + iconWidth + 5 + item.textWidth; + + if (endXPos >= w) { + startIndex = i; + beforeWidth = getBeforeWidth(startIndex, i, legend); + lines.push([]); + } + + item.iconPosition = [beforeWidth, 0]; + item.textPosition = [beforeWidth + iconWidth + 5, 0]; + lines.slice(-1)[0].push(item); + }); + return lines; + } + + function getBeforeWidth(startIndex, currentIndex, legend) { + var data = legend.data, + iconWidth = legend.iconWidth, + itemGap = legend.itemGap; + var beforeItem = data.slice(startIndex, currentIndex); + return (0, util$1.mulAdd)(beforeItem.map(function (_ref2) { + var textWidth = _ref2.textWidth; + return textWidth; + })) + (currentIndex - startIndex) * (itemGap + 5 + iconWidth); + } + + function getHorizontalXOffset(data, legend, chart) { + var left = legend.left, + right = legend.right, + iconWidth = legend.iconWidth, + itemGap = legend.itemGap; + var w = chart.render.area[0]; + var dataNum = data.length; + var allWidth = (0, util$1.mulAdd)(data.map(function (_ref3) { + var textWidth = _ref3.textWidth; + return textWidth; + })) + dataNum * (5 + iconWidth) + (dataNum - 1) * itemGap; + var horizontal = [left, right].findIndex(function (pos) { + return pos !== 'auto'; + }); + + if (horizontal === -1) { + return (w - allWidth) / 2; + } else if (horizontal === 0) { + if (typeof left === 'number') return left; + return parseInt(left) / 100 * w; + } else { + if (typeof right !== 'number') right = parseInt(right) / 100 * w; + return w - (allWidth + right); + } + } + + function getHorizontalYOffset(legend, chart) { + var top = legend.top, + bottom = legend.bottom, + iconHeight = legend.iconHeight; + var h = chart.render.area[1]; + var vertical = [top, bottom].findIndex(function (pos) { + return pos !== 'auto'; + }); + var halfIconHeight = iconHeight / 2; + + if (vertical === -1) { + var _chart$gridArea = chart.gridArea, + y = _chart$gridArea.y, + height = _chart$gridArea.h; + return y + height + 45 - halfIconHeight; + } else if (vertical === 0) { + if (typeof top === 'number') return top - halfIconHeight; + return parseInt(top) / 100 * h - halfIconHeight; + } else { + if (typeof bottom !== 'number') bottom = parseInt(bottom) / 100 * h; + return h - bottom - halfIconHeight; + } + } + + function mergeOffset(_ref4, _ref5) { + var _ref6 = _slicedToArray(_ref4, 2), + x = _ref6[0], + y = _ref6[1]; + + var _ref7 = _slicedToArray(_ref5, 2), + ox = _ref7[0], + oy = _ref7[1]; + + return [x + ox, y + oy]; + } + + function calcVerticalPosition(legend, chart) { + var _getVerticalXOffset = getVerticalXOffset(legend, chart), + _getVerticalXOffset2 = _slicedToArray(_getVerticalXOffset, 2), + isRight = _getVerticalXOffset2[0], + xOffset = _getVerticalXOffset2[1]; + + var yOffset = getVerticalYOffset(legend, chart); + calcDefaultVerticalPosition(legend, isRight); + var align = { + textAlign: 'left', + textBaseline: 'middle' + }; + legend.data.forEach(function (item) { + var textPosition = item.textPosition, + iconPosition = item.iconPosition; + item.textPosition = mergeOffset(textPosition, [xOffset, yOffset]); + item.iconPosition = mergeOffset(iconPosition, [xOffset, yOffset]); + item.align = align; + }); + } + + function getVerticalXOffset(legend, chart) { + var left = legend.left, + right = legend.right; + var w = chart.render.area[0]; + var horizontal = [left, right].findIndex(function (pos) { + return pos !== 'auto'; + }); + + if (horizontal === -1) { + return [true, w - 10]; + } else { + var offset = [left, right][horizontal]; + if (typeof offset !== 'number') offset = parseInt(offset) / 100 * w; + return [Boolean(horizontal), offset]; + } + } + + function getVerticalYOffset(legend, chart) { + var iconHeight = legend.iconHeight, + itemGap = legend.itemGap, + data = legend.data, + top = legend.top, + bottom = legend.bottom; + var h = chart.render.area[1]; + var dataNum = data.length; + var allHeight = dataNum * iconHeight + (dataNum - 1) * itemGap; + var vertical = [top, bottom].findIndex(function (pos) { + return pos !== 'auto'; + }); + + if (vertical === -1) { + return (h - allHeight) / 2; + } else { + var offset = [top, bottom][vertical]; + if (typeof offset !== 'number') offset = parseInt(offset) / 100 * h; + if (vertical === 1) offset = h - offset - allHeight; + return offset; + } + } + + function calcDefaultVerticalPosition(legend, isRight) { + var data = legend.data, + iconWidth = legend.iconWidth, + iconHeight = legend.iconHeight, + itemGap = legend.itemGap; + var halfIconHeight = iconHeight / 2; + data.forEach(function (item, i) { + var textWidth = item.textWidth; + var yPos = (iconHeight + itemGap) * i + halfIconHeight; + var iconXPos = isRight ? 0 - iconWidth : 0; + var textXpos = isRight ? iconXPos - 5 - textWidth : iconWidth + 5; + item.iconPosition = [iconXPos, yPos]; + item.textPosition = [textXpos, yPos]; + }); + } + + function getIconConfig(legendItem, updater) { + var data = legendItem.data, + selectAble = legendItem.selectAble, + animationCurve = legendItem.animationCurve, + animationFrame = legendItem.animationFrame, + rLevel = legendItem.rLevel; + return data.map(function (item, i) { + return _defineProperty({ + name: item.icon === 'line' ? 'lineIcon' : 'rect', + index: rLevel, + visible: legendItem.show, + hover: selectAble, + click: selectAble, + animationCurve: animationCurve, + animationFrame: animationFrame, + shape: getIconShape(legendItem, i), + style: getIconStyle(legendItem, i) + }, "click", createClickCallBack(legendItem, i, updater)); + }); + } + + function getIconShape(legendItem, i) { + var data = legendItem.data, + iconWidth = legendItem.iconWidth, + iconHeight = legendItem.iconHeight; + + var _data$i$iconPosition = _slicedToArray(data[i].iconPosition, 2), + x = _data$i$iconPosition[0], + y = _data$i$iconPosition[1]; + + var halfIconHeight = iconHeight / 2; + return { + x: x, + y: y - halfIconHeight, + w: iconWidth, + h: iconHeight + }; + } + + function getIconStyle(legendItem, i) { + var data = legendItem.data, + iconStyle = legendItem.iconStyle, + iconUnselectedStyle = legendItem.iconUnselectedStyle; + var _data$i = data[i], + status = _data$i.status, + color = _data$i.color; + var style = status ? iconStyle : iconUnselectedStyle; + return (0, util$1.deepMerge)({ + fill: color + }, style); + } + + function getTextConfig(legendItem, updater) { + var data = legendItem.data, + selectAble = legendItem.selectAble, + animationCurve = legendItem.animationCurve, + animationFrame = legendItem.animationFrame, + rLevel = legendItem.rLevel; + return data.map(function (foo, i) { + return { + name: 'text', + index: rLevel, + visible: legendItem.show, + hover: selectAble, + animationCurve: animationCurve, + animationFrame: animationFrame, + hoverRect: getTextHoverRect(legendItem, i), + shape: getTextShape(legendItem, i), + style: getTextStyle(legendItem, i), + click: createClickCallBack(legendItem, i, updater) + }; + }); + } + + function getTextShape(legendItem, i) { + var _legendItem$data$i = legendItem.data[i], + textPosition = _legendItem$data$i.textPosition, + name = _legendItem$data$i.name; + return { + content: name, + position: textPosition + }; + } + + function getTextStyle(legendItem, i) { + var textStyle = legendItem.textStyle, + textUnselectedStyle = legendItem.textUnselectedStyle; + var _legendItem$data$i2 = legendItem.data[i], + status = _legendItem$data$i2.status, + align = _legendItem$data$i2.align; + var style = status ? textStyle : textUnselectedStyle; + return (0, util$1.deepMerge)((0, util.deepClone)(style, true), align); + } + + function getTextHoverRect(legendItem, i) { + var textStyle = legendItem.textStyle, + textUnselectedStyle = legendItem.textUnselectedStyle; + + var _legendItem$data$i3 = legendItem.data[i], + status = _legendItem$data$i3.status, + _legendItem$data$i3$t = _slicedToArray(_legendItem$data$i3.textPosition, 2), + x = _legendItem$data$i3$t[0], + y = _legendItem$data$i3$t[1], + textWidth = _legendItem$data$i3.textWidth; + + var style = status ? textStyle : textUnselectedStyle; + var fontSize = style.fontSize; + return [x, y - fontSize / 2, textWidth, fontSize]; + } + + function createClickCallBack(legendItem, index, updater) { + var name = legendItem.data[index].name; + return function () { + var _updater$chart = updater.chart, + legendStatus = _updater$chart.legendStatus, + option = _updater$chart.option; + var status = !legendStatus[index]; + var change = option.series.find(function (_ref9) { + var sn = _ref9.name; + return sn === name; + }); + change.show = status; + legendStatus[index] = status; + updater.chart.setOption(option); + }; + } + }); + + unwrapExports(legend_1$1); + var legend_2 = legend_1$1.legend; + + var core = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "mergeColor", { + enumerable: true, + get: function get() { + return mergeColor_1.mergeColor; + } + }); + Object.defineProperty(exports, "title", { + enumerable: true, + get: function get() { + return title_1$1.title; + } + }); + Object.defineProperty(exports, "grid", { + enumerable: true, + get: function get() { + return grid_1$1.grid; + } + }); + Object.defineProperty(exports, "axis", { + enumerable: true, + get: function get() { + return axis_1$1.axis; + } + }); + Object.defineProperty(exports, "line", { + enumerable: true, + get: function get() { + return line_1$1.line; + } + }); + Object.defineProperty(exports, "bar", { + enumerable: true, + get: function get() { + return bar_1$1.bar; + } + }); + Object.defineProperty(exports, "pie", { + enumerable: true, + get: function get() { + return pie_1$1.pie; + } + }); + Object.defineProperty(exports, "radarAxis", { + enumerable: true, + get: function get() { + return radarAxis_1$1.radarAxis; + } + }); + Object.defineProperty(exports, "radar", { + enumerable: true, + get: function get() { + return radar_1$1.radar; + } + }); + Object.defineProperty(exports, "gauge", { + enumerable: true, + get: function get() { + return gauge_1$1.gauge; + } + }); + Object.defineProperty(exports, "legend", { + enumerable: true, + get: function get() { + return legend_1$1.legend; + } + }); + }); + + unwrapExports(core); + + var charts_class = createCommonjsModule(function (module, exports) { + + + + + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports["default"] = void 0; + + + + + + var _cRender = _interopRequireDefault(lib$3); + + + + + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var Charts = function Charts(dom) { + _classCallCheck(this, Charts); + + if (!dom) { + console.error('Charts Missing parameters!'); + return false; + } + + var clientWidth = dom.clientWidth, + clientHeight = dom.clientHeight; + var canvas = document.createElement('canvas'); + canvas.setAttribute('width', clientWidth); + canvas.setAttribute('height', clientHeight); + dom.appendChild(canvas); + var attribute = { + container: dom, + canvas: canvas, + render: new _cRender["default"](canvas), + option: null + }; + Object.assign(this, attribute); + }; + /** + * @description Set chart option + * @param {Object} option Chart option + * @return {Undefined} No return + */ + + + exports["default"] = Charts; + + Charts.prototype.setOption = function (option) { + if (!option || _typeof(option) !== 'object') { + console.error('setOption Missing parameters!'); + return false; + } + + var optionCloned = (0, util.deepClone)(option, true); + (0, core.mergeColor)(this, optionCloned); + (0, core.grid)(this, optionCloned); + (0, core.axis)(this, optionCloned); + (0, core.radarAxis)(this, optionCloned); + (0, core.title)(this, optionCloned); + (0, core.bar)(this, optionCloned); + (0, core.line)(this, optionCloned); + (0, core.pie)(this, optionCloned); + (0, core.radar)(this, optionCloned); + (0, core.gauge)(this, optionCloned); + (0, core.legend)(this, optionCloned); + this.option = option; + this.render.launchAnimation(); // console.warn(this) + }; + /** + * @description Resize chart + * @return {Undefined} No return + */ + + + Charts.prototype.resize = function () { + var container = this.container, + canvas = this.canvas, + render = this.render, + option = this.option; + var clientWidth = container.clientWidth, + clientHeight = container.clientHeight; + canvas.setAttribute('width', clientWidth); + canvas.setAttribute('height', clientHeight); + render.area = [clientWidth, clientHeight]; + this.setOption(option); + }; + }); + + unwrapExports(charts_class); + + var lib$4 = createCommonjsModule(function (module, exports) { + + + + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "changeDefaultConfig", { + enumerable: true, + get: function get() { + return config.changeDefaultConfig; + } + }); + exports["default"] = void 0; + + var _charts = _interopRequireDefault(charts_class); + + + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + + var _default = _charts["default"]; + exports["default"] = _default; + }); + + var Charts = unwrapExports(lib$4); + + // + var script$m = { + name: 'DvCharts', + mixins: [autoResize], + props: { + option: { + type: Object, + default: () => ({}) + } + }, + + data() { + return { + ref: `charts-container-${new Date().getTime()}`, + chartRef: `chart-${new Date().getTime()}`, + chart: null + }; + }, + + watch: { + option() { + let { + chart, + option + } = this; + if (!chart) return; + if (!option) option = {}; + chart.setOption(option); + } + + }, + methods: { + afterAutoResizeMixinInit() { + const { + initChart + } = this; + initChart(); + }, + + initChart() { + const { + $refs, + chartRef, + option + } = this; + const chart = this.chart = new Charts($refs[chartRef]); + if (!option) return; + chart.setOption(option); + }, + + onResize() { + const { + chart + } = this; + if (!chart) return; + chart.resize(); + } + + } + }; + + /* script */ + const __vue_script__$m = script$m; + + /* template */ + var __vue_render__$m = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c("div", { ref: _vm.ref, staticClass: "dv-charts-container" }, [ + _c("div", { ref: _vm.chartRef, staticClass: "charts-canvas-container" }) + ]) + }; + var __vue_staticRenderFns__$m = []; + __vue_render__$m._withStripped = true; + + /* style */ + const __vue_inject_styles__$m = function (inject) { + if (!inject) return + inject("data-v-8a293874_0", { source: ".dv-charts-container {\n position: relative;\n width: 100%;\n height: 100%;\n}\n.dv-charts-container .charts-canvas-container {\n width: 100%;\n height: 100%;\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;AACd;AACA;EACE,WAAW;EACX,YAAY;AACd","file":"main.vue","sourcesContent":[".dv-charts-container {\n position: relative;\n width: 100%;\n height: 100%;\n}\n.dv-charts-container .charts-canvas-container {\n width: 100%;\n height: 100%;\n}\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$m = undefined; + /* module identifier */ + const __vue_module_identifier__$m = undefined; + /* functional template */ + const __vue_is_functional_template__$m = false; + /* style inject SSR */ + + + + var Charts$1 = normalizeComponent_1( + { render: __vue_render__$m, staticRenderFns: __vue_staticRenderFns__$m }, + __vue_inject_styles__$m, + __vue_script__$m, + __vue_scope_id__$m, + __vue_is_functional_template__$m, + __vue_module_identifier__$m, + browser, + undefined + ); + + function charts (Vue) { + Vue.component(Charts$1.name, Charts$1); + } + + // + var script$n = { + name: 'DvDigitalFlop', + props: { + config: { + type: Object, + default: () => ({}) + } + }, + + data() { + return { + renderer: null, + defaultConfig: { + /** + * @description Number for digital flop + * @type {Array} + * @default number = [] + * @example number = [10] + */ + number: [], + + /** + * @description Content formatter + * @type {String} + * @default content = '' + * @example content = '{nt}个' + */ + content: '', + + /** + * @description Number toFixed + * @type {Number} + * @default toFixed = 0 + */ + toFixed: 0, + + /** + * @description Text align + * @type {String} + * @default textAlign = 'center' + * @example textAlign = 'center' | 'left' | 'right' + */ + textAlign: 'center', + + /** + * @description Text style configuration + * @type {Object} {CRender Class Style} + */ + style: { + fontSize: 30, + fill: '#3de7c9' + }, + + /** + * @description CRender animationCurve + * @type {String} + * @default animationCurve = 'easeOutCubic' + */ + animationCurve: 'easeOutCubic', + + /** + * @description CRender animationFrame + * @type {String} + * @default animationFrame = 50 + */ + animationFrame: 50 + }, + mergedConfig: null, + graph: null + }; + }, + + watch: { + config() { + const { + update + } = this; + update(); + } + + }, + methods: { + init() { + const { + initRender, + mergeConfig, + initGraph + } = this; + initRender(); + mergeConfig(); + initGraph(); + }, + + initRender() { + const { + $refs + } = this; + this.renderer = new CRender($refs['digital-flop']); + }, + + mergeConfig() { + const { + defaultConfig, + config + } = this; + this.mergedConfig = util_2$1(util_1(defaultConfig, true), config || {}); + }, + + initGraph() { + const { + getShape, + getStyle, + renderer, + mergedConfig + } = this; + const { + animationCurve, + animationFrame + } = mergedConfig; + const shape = getShape(); + const style = getStyle(); + this.graph = renderer.add({ + name: 'numberText', + animationCurve, + animationFrame, + shape, + style + }); + }, + + getShape() { + const { + number, + content, + toFixed, + textAlign + } = this.mergedConfig; + const [w, h] = this.renderer.area; + const position = [w / 2, h / 2]; + if (textAlign === 'left') position[0] = 0; + if (textAlign === 'right') position[0] = w; + return { + number, + content, + toFixed, + position + }; + }, + + getStyle() { + const { + style, + textAlign + } = this.mergedConfig; + return util_2$1(style, { + textAlign, + textBaseline: 'middle' + }); + }, + + update() { + const { + mergeConfig, + mergeShape, + getShape, + getStyle, + graph, + mergedConfig + } = this; + mergeConfig(); + if (!graph) return; + const { + animationCurve, + animationFrame + } = mergedConfig; + const shape = getShape(); + const style = getStyle(); + mergeShape(graph, shape); + graph.animationCurve = animationCurve; + graph.animationFrame = animationFrame; + graph.animation('style', style, true); + graph.animation('shape', shape); + }, + + mergeShape(graph, shape) { + const cacheNum = graph.shape.number.length; + const shapeNum = shape.number.length; + if (cacheNum !== shapeNum) graph.shape.number = shape.number; + } + + }, + + mounted() { + const { + init + } = this; + init(); + } + + }; + + /* script */ + const __vue_script__$n = script$n; + + /* template */ + var __vue_render__$n = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c("div", { staticClass: "dv-digital-flop" }, [ + _c("canvas", { ref: "digital-flop" }) + ]) + }; + var __vue_staticRenderFns__$n = []; + __vue_render__$n._withStripped = true; + + /* style */ + const __vue_inject_styles__$n = function (inject) { + if (!inject) return + inject("data-v-ba7262c4_0", { source: ".dv-digital-flop canvas {\n width: 100%;\n height: 100%;\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,WAAW;EACX,YAAY;AACd","file":"main.vue","sourcesContent":[".dv-digital-flop canvas {\n width: 100%;\n height: 100%;\n}\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$n = undefined; + /* module identifier */ + const __vue_module_identifier__$n = undefined; + /* functional template */ + const __vue_is_functional_template__$n = false; + /* style inject SSR */ + + + + var DigitalFlop = normalizeComponent_1( + { render: __vue_render__$n, staticRenderFns: __vue_staticRenderFns__$n }, + __vue_inject_styles__$n, + __vue_script__$n, + __vue_scope_id__$n, + __vue_is_functional_template__$n, + __vue_module_identifier__$n, + browser, + undefined + ); + + // + var script$o = { + name: 'DvActiveRingChart', + components: { + dvDigitalFlop: DigitalFlop + }, + props: { + config: { + type: Object, + default: () => ({}) + } + }, + + data() { + return { + defaultConfig: { + /** + * @description Ring radius + * @type {String|Number} + * @default radius = '50%' + * @example radius = '50%' | 100 + */ + radius: '50%', + + /** + * @description Active ring radius + * @type {String|Number} + * @default activeRadius = '55%' + * @example activeRadius = '55%' | 110 + */ + activeRadius: '55%', + + /** + * @description Ring data + * @type {Array} + * @default data = [{ name: '', value: 0 }] + */ + data: [{ + name: '', + value: 0 + }], + + /** + * @description Ring line width + * @type {Number} + * @default lineWidth = 20 + */ + lineWidth: 20, + + /** + * @description Active time gap (ms) + * @type {Number} + * @default activeTimeGap = 3000 + */ + activeTimeGap: 3000, + + /** + * @description Ring color (hex|rgb|rgba|color keywords) + * @type {Array} + * @default color = [Charts Default Color] + * @example color = ['#000', 'rgb(0, 0, 0)', 'rgba(0, 0, 0, 1)', 'red'] + */ + color: [], + + /** + * @description Digital flop style + * @type {Object} + */ + digitalFlopStyle: { + fontSize: 25, + fill: '#fff' + }, + + /** + * @description CRender animationCurve + * @type {String} + * @default animationCurve = 'easeOutCubic' + */ + animationCurve: 'easeOutCubic', + + /** + * @description CRender animationFrame + * @type {String} + * @default animationFrame = 50 + */ + animationFrame: 50 + }, + mergedConfig: null, + chart: null, + activeIndex: 0, + animationHandler: '' + }; + }, + + computed: { + digitalFlop() { + const { + mergedConfig, + activeIndex + } = this; + if (!mergedConfig) return {}; + const { + digitalFlopStyle, + data + } = mergedConfig; + const value = data.map(({ + value + }) => value); + const sum = value.reduce((all, v) => all + v, 0); + const percent = parseInt(value[activeIndex] / sum * 100); + return { + content: '{nt}%', + number: [percent], + style: digitalFlopStyle + }; + }, + + ringName() { + const { + mergedConfig, + activeIndex + } = this; + if (!mergedConfig) return ''; + return mergedConfig.data[activeIndex].name; + }, + + fontSize() { + const { + mergedConfig + } = this; + if (!mergedConfig) return ''; + return `font-size: ${mergedConfig.digitalFlopStyle.fontSize}px;`; + } + + }, + watch: { + config() { + const { + animationHandler, + mergeConfig, + setRingOption + } = this; + clearTimeout(animationHandler); + this.activeIndex = 0; + mergeConfig(); + setRingOption(); + } + + }, + methods: { + init() { + const { + initChart, + mergeConfig, + setRingOption + } = this; + initChart(); + mergeConfig(); + setRingOption(); + }, + + initChart() { + const { + $refs + } = this; + this.chart = new Charts($refs['active-ring-chart']); + }, + + mergeConfig() { + const { + defaultConfig, + config + } = this; + this.mergedConfig = util_2$1(util_1(defaultConfig, true), config || {}); + }, + + setRingOption() { + const { + getRingOption, + chart, + ringAnimation + } = this; + const option = getRingOption(); + chart.setOption(option); + ringAnimation(); + }, + + getRingOption() { + const { + mergedConfig, + getRealRadius + } = this; + const radius = getRealRadius(); + mergedConfig.data.forEach(dataItem => { + dataItem.radius = radius; + }); + return { + series: [{ + type: 'pie', + ...mergedConfig, + outsideLabel: { + show: false + } + }], + color: mergedConfig.color + }; + }, + + getRealRadius(active = false) { + const { + mergedConfig, + chart + } = this; + const { + radius, + activeRadius, + lineWidth + } = mergedConfig; + const maxRadius = Math.min(...chart.render.area) / 2; + const halfLineWidth = lineWidth / 2; + let realRadius = active ? activeRadius : radius; + if (typeof realRadius !== 'number') realRadius = parseInt(realRadius) / 100 * maxRadius; + const insideRadius = realRadius - halfLineWidth; + const outSideRadius = realRadius + halfLineWidth; + return [insideRadius, outSideRadius]; + }, + + ringAnimation() { + let { + activeIndex, + getRingOption, + chart, + getRealRadius + } = this; + const radius = getRealRadius(); + const active = getRealRadius(true); + const option = getRingOption(); + const { + data + } = option.series[0]; + data.forEach((dataItem, i) => { + if (i === activeIndex) { + dataItem.radius = active; + } else { + dataItem.radius = radius; + } + }); + chart.setOption(option); + const { + activeTimeGap + } = option.series[0]; + this.animationHandler = setTimeout(foo => { + activeIndex += 1; + if (activeIndex >= data.length) activeIndex = 0; + this.activeIndex = activeIndex; + this.ringAnimation(); + }, activeTimeGap); + } + + }, + + mounted() { + const { + init + } = this; + init(); + }, + + beforeDestroy() { + const { + animationHandler + } = this; + clearTimeout(animationHandler); + } + + }; + + /* script */ + const __vue_script__$o = script$o; + + /* template */ + var __vue_render__$o = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c("div", { staticClass: "dv-active-ring-chart" }, [ + _c("div", { + ref: "active-ring-chart", + staticClass: "active-ring-chart-container" + }), + _vm._v(" "), + _c( + "div", + { staticClass: "active-ring-info" }, + [ + _c("dv-digital-flop", { attrs: { config: _vm.digitalFlop } }), + _vm._v(" "), + _c("div", { staticClass: "active-ring-name", style: _vm.fontSize }, [ + _vm._v(_vm._s(_vm.ringName)) + ]) + ], + 1 + ) + ]) + }; + var __vue_staticRenderFns__$o = []; + __vue_render__$o._withStripped = true; + + /* style */ + const __vue_inject_styles__$o = function (inject) { + if (!inject) return + inject("data-v-fce58c90_0", { source: ".dv-active-ring-chart {\n position: relative;\n}\n.dv-active-ring-chart .active-ring-chart-container {\n width: 100%;\n height: 100%;\n}\n.dv-active-ring-chart .active-ring-info {\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0px;\n top: 0px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n.dv-active-ring-chart .active-ring-info .dv-digital-flop {\n width: 100px;\n height: 30px;\n}\n.dv-active-ring-chart .active-ring-info .active-ring-name {\n width: 100px;\n height: 30px;\n color: #fff;\n text-align: center;\n vertical-align: middle;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,kBAAkB;AACpB;AACA;EACE,WAAW;EACX,YAAY;AACd;AACA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;EACZ,SAAS;EACT,QAAQ;EACR,aAAa;EACb,sBAAsB;EACtB,uBAAuB;EACvB,mBAAmB;AACrB;AACA;EACE,YAAY;EACZ,YAAY;AACd;AACA;EACE,YAAY;EACZ,YAAY;EACZ,WAAW;EACX,kBAAkB;EAClB,sBAAsB;EACtB,uBAAuB;EACvB,gBAAgB;EAChB,mBAAmB;AACrB","file":"main.vue","sourcesContent":[".dv-active-ring-chart {\n position: relative;\n}\n.dv-active-ring-chart .active-ring-chart-container {\n width: 100%;\n height: 100%;\n}\n.dv-active-ring-chart .active-ring-info {\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0px;\n top: 0px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n.dv-active-ring-chart .active-ring-info .dv-digital-flop {\n width: 100px;\n height: 30px;\n}\n.dv-active-ring-chart .active-ring-info .active-ring-name {\n width: 100px;\n height: 30px;\n color: #fff;\n text-align: center;\n vertical-align: middle;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n}\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$o = undefined; + /* module identifier */ + const __vue_module_identifier__$o = undefined; + /* functional template */ + const __vue_is_functional_template__$o = false; + /* style inject SSR */ + + + + var ActiveRingChart = normalizeComponent_1( + { render: __vue_render__$o, staticRenderFns: __vue_staticRenderFns__$o }, + __vue_inject_styles__$o, + __vue_script__$o, + __vue_scope_id__$o, + __vue_is_functional_template__$o, + __vue_module_identifier__$o, + browser, + undefined + ); + + function activeRingChart (Vue) { + Vue.component(ActiveRingChart.name, ActiveRingChart); + } + + // + var script$p = { + name: 'DvCapsuleChart', + props: { + config: { + type: Object, + default: () => ({}) + } + }, + + data() { + return { + defaultConfig: { + /** + * @description Capsule chart data + * @type {Array} + * @default data = [] + * @example data = [{ name: 'foo1', value: 100 }, { name: 'foo2', value: 100 }] + */ + data: [], + + /** + * @description Colors (hex|rgb|rgba|color keywords) + * @type {Array} + * @default color = ['#37a2da', '#32c5e9', '#67e0e3', '#9fe6b8', '#ffdb5c', '#ff9f7f', '#fb7293'] + * @example color = ['#000', 'rgb(0, 0, 0)', 'rgba(0, 0, 0, 1)', 'red'] + */ + colors: ['#37a2da', '#32c5e9', '#67e0e3', '#9fe6b8', '#ffdb5c', '#ff9f7f', '#fb7293'], + + /** + * @description Chart unit + * @type {String} + * @default unit = '' + */ + unit: '' + }, + mergedConfig: null, + capsuleLength: [], + labelData: [] + }; + }, + + watch: { + config() { + const { + calcData + } = this; + calcData(); + } + + }, + methods: { + calcData() { + const { + mergeConfig, + calcCapsuleLengthAndLabelData + } = this; + mergeConfig(); + calcCapsuleLengthAndLabelData(); + }, + + mergeConfig() { + let { + config, + defaultConfig + } = this; + this.mergedConfig = util_2$1(util_1(defaultConfig, true), config || {}); + }, + + calcCapsuleLengthAndLabelData() { + const { + data + } = this.mergedConfig; + if (!data.length) return; + const capsuleValue = data.map(({ + value + }) => value); + const maxValue = Math.max(...capsuleValue); + this.capsuleLength = capsuleValue.map(v => maxValue ? v / maxValue : 0); + const oneFifth = maxValue / 5; + this.labelData = new Array(6).fill(0).map((v, i) => Math.ceil(i * oneFifth)); + } + + }, + + mounted() { + const { + calcData + } = this; + calcData(); + } + + }; + + /* script */ + const __vue_script__$p = script$p; + + /* template */ + var __vue_render__$p = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c( + "div", + { staticClass: "dv-capsule-chart" }, + [ + _vm.mergedConfig + ? [ + _c( + "div", + { staticClass: "label-column" }, + [ + _vm._l(_vm.mergedConfig.data, function(item) { + return _c("div", { key: item.name }, [ + _vm._v(_vm._s(item.name)) + ]) + }), + _vm._v(" "), + _c("div", [_vm._v(" ")]) + ], + 2 + ), + _vm._v(" "), + _c( + "div", + { staticClass: "capsule-container" }, + [ + _vm._l(_vm.capsuleLength, function(capsule, index) { + return _c( + "div", + { key: index, staticClass: "capsule-item" }, + [ + _c("div", { + style: + "width: " + + capsule * 100 + + "%; background-color: " + + _vm.mergedConfig.colors[ + index % _vm.mergedConfig.colors.length + ] + + ";" + }) + ] + ) + }), + _vm._v(" "), + _c( + "div", + { staticClass: "unit-label" }, + _vm._l(_vm.labelData, function(label, index) { + return _c("div", { key: label + index }, [ + _vm._v(_vm._s(label)) + ]) + }), + 0 + ) + ], + 2 + ), + _vm._v(" "), + _vm.mergedConfig.unit + ? _c("div", { staticClass: "unit-text" }, [ + _vm._v(_vm._s(_vm.mergedConfig.unit)) + ]) + : _vm._e() + ] + : _vm._e() + ], + 2 + ) + }; + var __vue_staticRenderFns__$p = []; + __vue_render__$p._withStripped = true; + + /* style */ + const __vue_inject_styles__$p = function (inject) { + if (!inject) return + inject("data-v-7421b956_0", { source: ".dv-capsule-chart {\n position: relative;\n display: flex;\n flex-direction: row;\n box-sizing: border-box;\n padding: 10px;\n color: #fff;\n}\n.dv-capsule-chart .label-column {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n box-sizing: border-box;\n padding-right: 10px;\n text-align: right;\n font-size: 12px;\n}\n.dv-capsule-chart .label-column div {\n height: 20px;\n line-height: 20px;\n}\n.dv-capsule-chart .capsule-container {\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n}\n.dv-capsule-chart .capsule-item {\n box-shadow: 0 0 3px #999;\n height: 10px;\n margin: 5px 0px;\n border-radius: 5px;\n}\n.dv-capsule-chart .capsule-item div {\n height: 8px;\n margin-top: 1px;\n border-radius: 5px;\n transition: all 0.3s;\n}\n.dv-capsule-chart .unit-label {\n height: 20px;\n font-size: 12px;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n}\n.dv-capsule-chart .unit-text {\n text-align: right;\n display: flex;\n align-items: flex-end;\n font-size: 12px;\n line-height: 20px;\n margin-left: 10px;\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,kBAAkB;EAClB,aAAa;EACb,mBAAmB;EACnB,sBAAsB;EACtB,aAAa;EACb,WAAW;AACb;AACA;EACE,aAAa;EACb,sBAAsB;EACtB,8BAA8B;EAC9B,sBAAsB;EACtB,mBAAmB;EACnB,iBAAiB;EACjB,eAAe;AACjB;AACA;EACE,YAAY;EACZ,iBAAiB;AACnB;AACA;EACE,OAAO;EACP,aAAa;EACb,sBAAsB;EACtB,8BAA8B;AAChC;AACA;EACE,wBAAwB;EACxB,YAAY;EACZ,eAAe;EACf,kBAAkB;AACpB;AACA;EACE,WAAW;EACX,eAAe;EACf,kBAAkB;EAClB,oBAAoB;AACtB;AACA;EACE,YAAY;EACZ,eAAe;EACf,aAAa;EACb,mBAAmB;EACnB,mBAAmB;EACnB,8BAA8B;AAChC;AACA;EACE,iBAAiB;EACjB,aAAa;EACb,qBAAqB;EACrB,eAAe;EACf,iBAAiB;EACjB,iBAAiB;AACnB","file":"main.vue","sourcesContent":[".dv-capsule-chart {\n position: relative;\n display: flex;\n flex-direction: row;\n box-sizing: border-box;\n padding: 10px;\n color: #fff;\n}\n.dv-capsule-chart .label-column {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n box-sizing: border-box;\n padding-right: 10px;\n text-align: right;\n font-size: 12px;\n}\n.dv-capsule-chart .label-column div {\n height: 20px;\n line-height: 20px;\n}\n.dv-capsule-chart .capsule-container {\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n}\n.dv-capsule-chart .capsule-item {\n box-shadow: 0 0 3px #999;\n height: 10px;\n margin: 5px 0px;\n border-radius: 5px;\n}\n.dv-capsule-chart .capsule-item div {\n height: 8px;\n margin-top: 1px;\n border-radius: 5px;\n transition: all 0.3s;\n}\n.dv-capsule-chart .unit-label {\n height: 20px;\n font-size: 12px;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n}\n.dv-capsule-chart .unit-text {\n text-align: right;\n display: flex;\n align-items: flex-end;\n font-size: 12px;\n line-height: 20px;\n margin-left: 10px;\n}\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$p = undefined; + /* module identifier */ + const __vue_module_identifier__$p = undefined; + /* functional template */ + const __vue_is_functional_template__$p = false; + /* style inject SSR */ + + + + var CapsuleChart = normalizeComponent_1( + { render: __vue_render__$p, staticRenderFns: __vue_staticRenderFns__$p }, + __vue_inject_styles__$p, + __vue_script__$p, + __vue_scope_id__$p, + __vue_is_functional_template__$p, + __vue_module_identifier__$p, + browser, + undefined + ); + + function capsuleChart (Vue) { + Vue.component(CapsuleChart.name, CapsuleChart); + } + + // + var script$q = { + name: 'DvWaterLevelPond', + props: { + config: Object, + default: () => ({}) + }, + + data() { + return { + gradientId: `water-level-pond-${new Date().getTime()}`, + defaultConfig: { + /** + * @description Data + * @type {Array} + * @default data = [] + * @example data = [60, 40] + */ + data: [], + + /** + * @description Shape of wanter level pond + * @type {String} + * @default shape = 'rect' + * @example shape = 'rect' | 'roundRect' | 'round' + */ + shape: 'rect', + + /** + * @description Water wave number + * @type {Number} + * @default waveNum = 3 + */ + waveNum: 3, + + /** + * @description Water wave height (px) + * @type {Number} + * @default waveHeight = 40 + */ + waveHeight: 40, + + /** + * @description Wave opacity + * @type {Number} + * @default waveOpacity = 0.4 + */ + waveOpacity: 0.4, + + /** + * @description Colors (hex|rgb|rgba|color keywords) + * @type {Array} + * @default colors = ['#00BAFF', '#3DE7C9'] + * @example colors = ['#000', 'rgb(0, 0, 0)', 'rgba(0, 0, 0, 1)', 'red'] + */ + colors: ['#3DE7C9', '#00BAFF'], + + /** + * @description Formatter + * @type {String} + * @default formatter = '{value}%' + */ + formatter: '{value}%' + }, + mergedConfig: {}, + renderer: null, + svgBorderGradient: [], + details: '', + waves: [], + animation: false + }; + }, + + computed: { + radius() { + const { + shape + } = this.mergedConfig; + if (shape === 'round') return '50%'; + if (shape === 'rect') return '0'; + if (shape === 'roundRect') return '10px'; + return '0'; + }, + + shape() { + const { + shape + } = this.mergedConfig; + if (!shape) return 'rect'; + return shape; + } + + }, + watch: { + config() { + const { + calcData, + renderer + } = this; + renderer.delAllGraph(); + this.waves = []; + setTimeout(calcData, 0); + } + + }, + methods: { + init() { + const { + initRender, + config, + calcData + } = this; + initRender(); + if (!config) return; + calcData(); + }, + + initRender() { + const { + $refs + } = this; + this.renderer = new CRender($refs['water-pond-level']); + }, + + calcData() { + const { + mergeConfig, + calcSvgBorderGradient, + calcDetails + } = this; + mergeConfig(); + calcSvgBorderGradient(); + calcDetails(); + const { + addWave, + animationWave + } = this; + addWave(); + animationWave(); + }, + + mergeConfig() { + const { + config, + defaultConfig + } = this; + this.mergedConfig = util_2$1(util_1(defaultConfig, true), config); + }, + + calcSvgBorderGradient() { + const { + colors + } = this.mergedConfig; + const colorNum = colors.length; + const colorOffsetGap = 100 / (colorNum - 1); + this.svgBorderGradient = colors.map((c, i) => [colorOffsetGap * i, c]); + }, + + calcDetails() { + const { + data, + formatter + } = this.mergedConfig; + + if (!data.length) { + this.details = ''; + return; + } + + const maxValue = Math.max(...data); + this.details = formatter.replace('{value}', maxValue); + }, + + addWave() { + const { + renderer, + getWaveShapes, + getWaveStyle, + drawed + } = this; + const shapes = getWaveShapes(); + const style = getWaveStyle(); + this.waves = shapes.map(shape => renderer.add({ + name: 'smoothline', + animationFrame: 300, + shape, + style, + drawed + })); + }, + + getWaveShapes() { + const { + mergedConfig, + renderer, + mergeOffset + } = this; + const { + waveNum, + waveHeight, + data + } = mergedConfig; + const [w, h] = renderer.area; + const pointsNum = waveNum * 4 + 4; + const pointXGap = w / waveNum / 2; + return data.map(v => { + let points = new Array(pointsNum).fill(0).map((foo, j) => { + const x = w - pointXGap * j; + const startY = (1 - v / 100) * h; + const y = j % 2 === 0 ? startY : startY - waveHeight; + return [x, y]; + }); + points = points.map(p => mergeOffset(p, [pointXGap * 2, 0])); + return { + points + }; + }); + }, + + mergeOffset([x, y], [ox, oy]) { + return [x + ox, y + oy]; + }, + + getWaveStyle() { + const { + renderer, + mergedConfig + } = this; + const h = renderer.area[1]; + return { + gradientColor: mergedConfig.colors, + gradientType: 'linear', + gradientParams: [0, 0, 0, h], + gradientWith: 'fill', + opacity: mergedConfig.waveOpacity, + translate: [0, 0] + }; + }, + + drawed({ + shape: { + points + } + }, { + ctx, + area + }) { + const firstPoint = points[0]; + const lastPoint = points.slice(-1)[0]; + const h = area[1]; + ctx.lineTo(lastPoint[0], h); + ctx.lineTo(firstPoint[0], h); + ctx.closePath(); + ctx.fill(); + }, + + async animationWave(repeat = 1) { + const { + waves, + renderer, + animation + } = this; + if (animation) return; + this.animation = true; + const w = renderer.area[0]; + waves.forEach(graph => { + graph.attr('style', { + translate: [0, 0] + }); + graph.animation('style', { + translate: [w, 0] + }, true); + }); + await renderer.launchAnimation(); + this.animation = false; + if (!renderer.graphs.length) return; + this.animationWave(repeat + 1); + } + + }, + + mounted() { + const { + init + } = this; + init(); + }, + + beforeDestroy() { + const { + renderer + } = this; + renderer.delAllGraph(); + this.waves = []; + } + + }; + + /* script */ + const __vue_script__$q = script$q; + + /* template */ + var __vue_render__$q = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c("div", { staticClass: "dv-water-pond-level" }, [ + _vm.renderer + ? _c("svg", [ + _c( + "defs", + [ + _c( + "linearGradient", + { + attrs: { + id: _vm.gradientId, + x1: "0%", + y1: "0%", + x2: "0%", + y2: "100%" + } + }, + _vm._l(_vm.svgBorderGradient, function(lc) { + return _c("stop", { + key: lc[0], + attrs: { offset: lc[0], "stop-color": lc[1] } + }) + }), + 1 + ) + ], + 1 + ), + _vm._v(" "), + _vm.renderer + ? _c( + "text", + { + attrs: { + stroke: "url(#" + _vm.gradientId + ")", + fill: "url(#" + _vm.gradientId + ")", + x: _vm.renderer.area[0] / 2 + 8, + y: _vm.renderer.area[1] / 2 + 8 + } + }, + [_vm._v("\n " + _vm._s(_vm.details) + "\n ")] + ) + : _vm._e(), + _vm._v(" "), + !_vm.shape || _vm.shape === "round" + ? _c("ellipse", { + attrs: { + cx: _vm.renderer.area[0] / 2 + 8, + cy: _vm.renderer.area[1] / 2 + 8, + rx: _vm.renderer.area[0] / 2 + 5, + ry: _vm.renderer.area[1] / 2 + 5, + stroke: "url(#" + _vm.gradientId + ")" + } + }) + : _c("rect", { + attrs: { + x: "2", + y: "2", + rx: _vm.shape === "roundRect" ? 10 : 0, + ry: _vm.shape === "roundRect" ? 10 : 0, + width: _vm.renderer.area[0] + 12, + height: _vm.renderer.area[1] + 12, + stroke: "url(#" + _vm.gradientId + ")" + } + }) + ]) + : _vm._e(), + _vm._v(" "), + _c("canvas", { + ref: "water-pond-level", + style: "border-radius: " + _vm.radius + ";" + }) + ]) + }; + var __vue_staticRenderFns__$q = []; + __vue_render__$q._withStripped = true; + + /* style */ + const __vue_inject_styles__$q = function (inject) { + if (!inject) return + inject("data-v-4101c79a_0", { source: ".dv-water-pond-level {\n position: relative;\n}\n.dv-water-pond-level svg {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0px;\n left: 0px;\n}\n.dv-water-pond-level text {\n font-size: 25px;\n font-weight: bold;\n text-anchor: middle;\n dominant-baseline: middle;\n}\n.dv-water-pond-level ellipse,\n.dv-water-pond-level rect {\n fill: none;\n stroke-width: 3;\n}\n.dv-water-pond-level canvas {\n margin-top: 8px;\n margin-left: 8px;\n width: calc(100% - 16px);\n height: calc(100% - 16px);\n box-sizing: border-box;\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,kBAAkB;AACpB;AACA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;EACZ,QAAQ;EACR,SAAS;AACX;AACA;EACE,eAAe;EACf,iBAAiB;EACjB,mBAAmB;EACnB,yBAAyB;AAC3B;AACA;;EAEE,UAAU;EACV,eAAe;AACjB;AACA;EACE,eAAe;EACf,gBAAgB;EAChB,wBAAwB;EACxB,yBAAyB;EACzB,sBAAsB;AACxB","file":"main.vue","sourcesContent":[".dv-water-pond-level {\n position: relative;\n}\n.dv-water-pond-level svg {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0px;\n left: 0px;\n}\n.dv-water-pond-level text {\n font-size: 25px;\n font-weight: bold;\n text-anchor: middle;\n dominant-baseline: middle;\n}\n.dv-water-pond-level ellipse,\n.dv-water-pond-level rect {\n fill: none;\n stroke-width: 3;\n}\n.dv-water-pond-level canvas {\n margin-top: 8px;\n margin-left: 8px;\n width: calc(100% - 16px);\n height: calc(100% - 16px);\n box-sizing: border-box;\n}\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$q = undefined; + /* module identifier */ + const __vue_module_identifier__$q = undefined; + /* functional template */ + const __vue_is_functional_template__$q = false; + /* style inject SSR */ + + + + var WaterLevelPond = normalizeComponent_1( + { render: __vue_render__$q, staticRenderFns: __vue_staticRenderFns__$q }, + __vue_inject_styles__$q, + __vue_script__$q, + __vue_scope_id__$q, + __vue_is_functional_template__$q, + __vue_module_identifier__$q, + browser, + undefined + ); + + function waterLevelPond (Vue) { + Vue.component(WaterLevelPond.name, WaterLevelPond); + } + + // + var script$r = { + name: 'DvPercentPond', + props: { + config: { + type: Object, + default: () => ({}) + } + }, + + data() { + return { + gradientId1: `percent-pond-gradientId1-${new Date().getTime()}`, + gradientId2: `percent-pond-gradientId2-${new Date().getTime()}`, + width: 0, + height: 0, + defaultConfig: { + /** + * @description Value + * @type {Number} + * @default value = 0 + */ + value: 0, + + /** + * @description Colors (hex|rgb|rgba|color keywords) + * @type {Array} + * @default colors = ['#00BAFF', '#3DE7C9'] + * @example colors = ['#000', 'rgb(0, 0, 0)', 'rgba(0, 0, 0, 1)', 'red'] + */ + colors: ['#3DE7C9', '#00BAFF'], + + /** + * @description Border width + * @type {Number} + * @default borderWidth = 3 + */ + borderWidth: 3, + + /** + * @description Gap between border and pond + * @type {Number} + * @default borderGap = 3 + */ + borderGap: 3, + + /** + * @description Line dash + * @type {Array} + * @default lineDash = [5, 1] + */ + lineDash: [5, 1], + + /** + * @description Text color + * @type {String} + * @default textColor = '#fff' + */ + textColor: '#fff', + + /** + * @description Border radius + * @type {Number} + * @default borderRadius = 5 + */ + borderRadius: 5, + + /** + * @description Local Gradient + * @type {Boolean} + * @default localGradient = false + * @example localGradient = false | true + */ + localGradient: false, + + /** + * @description Formatter + * @type {String} + * @default formatter = '{value}%' + */ + formatter: '{value}%' + }, + mergedConfig: null + }; + }, + + computed: { + rectWidth() { + const { + mergedConfig, + width + } = this; + if (!mergedConfig) return 0; + const { + borderWidth + } = mergedConfig; + return width - borderWidth; + }, + + rectHeight() { + const { + mergedConfig, + height + } = this; + if (!mergedConfig) return 0; + const { + borderWidth + } = mergedConfig; + return height - borderWidth; + }, + + points() { + const { + mergedConfig, + width, + height + } = this; + const halfHeight = height / 2; + if (!mergedConfig) return `0, ${halfHeight} 0, ${halfHeight}`; + const { + borderWidth, + borderGap, + value + } = mergedConfig; + const polylineLength = (width - (borderWidth + borderGap) * 2) / 100 * value; + return ` + ${borderWidth + borderGap}, ${halfHeight} + ${borderWidth + borderGap + polylineLength}, ${halfHeight + 0.001} + `; + }, + + polylineWidth() { + const { + mergedConfig, + height + } = this; + if (!mergedConfig) return 0; + const { + borderWidth, + borderGap + } = mergedConfig; + return height - (borderWidth + borderGap) * 2; + }, + + linearGradient() { + const { + mergedConfig + } = this; + if (!mergedConfig) return []; + const { + colors + } = mergedConfig; + const colorNum = colors.length; + const colorOffsetGap = 100 / (colorNum - 1); + return colors.map((c, i) => [colorOffsetGap * i, c]); + }, + + polylineGradient() { + const { + gradientId1, + gradientId2, + mergedConfig + } = this; + if (!mergedConfig) return gradientId2; + if (mergedConfig.localGradient) return gradientId1; + return gradientId2; + }, + + gradient2XPos() { + const { + mergedConfig + } = this; + if (!mergedConfig) return '100%'; + const { + value + } = mergedConfig; + return `${200 - value}%`; + }, + + details() { + const { + mergedConfig + } = this; + if (!mergedConfig) return ''; + const { + value, + formatter + } = mergedConfig; + return formatter.replace('{value}', value); + } + + }, + watch: { + config() { + const { + mergeConfig + } = this; + mergeConfig(); + } + + }, + methods: { + async init() { + const { + initWH, + config, + mergeConfig + } = this; + await initWH(); + if (!config) return; + mergeConfig(); + }, + + async initWH() { + const { + $nextTick, + $refs + } = this; + await $nextTick(); + const dom = $refs['percent-pond']; + this.width = dom.clientWidth; + this.height = dom.clientHeight; + }, + + mergeConfig() { + let { + config, + defaultConfig + } = this; + this.mergedConfig = util_2$1(util_1(defaultConfig, true), config || {}); + } + + }, + + mounted() { + const { + init + } = this; + init(); + } + + }; + + /* script */ + const __vue_script__$r = script$r; + + /* template */ + var __vue_render__$r = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c("div", { ref: "percent-pond", staticClass: "dv-percent-pond" }, [ + _c("svg", [ + _c( + "defs", + [ + _c( + "linearGradient", + { + attrs: { + id: _vm.gradientId1, + x1: "0%", + y1: "0%", + x2: "100%", + y2: "0%" + } + }, + _vm._l(_vm.linearGradient, function(lc) { + return _c("stop", { + key: lc[0], + attrs: { offset: lc[0] + "%", "stop-color": lc[1] } + }) + }), + 1 + ), + _vm._v(" "), + _c( + "linearGradient", + { + attrs: { + id: _vm.gradientId2, + x1: "0%", + y1: "0%", + x2: _vm.gradient2XPos, + y2: "0%" + } + }, + _vm._l(_vm.linearGradient, function(lc) { + return _c("stop", { + key: lc[0], + attrs: { offset: lc[0] + "%", "stop-color": lc[1] } + }) + }), + 1 + ) + ], + 1 + ), + _vm._v(" "), + _c("rect", { + attrs: { + x: _vm.mergedConfig ? _vm.mergedConfig.borderWidth / 2 : "0", + y: _vm.mergedConfig ? _vm.mergedConfig.borderWidth / 2 : "0", + rx: _vm.mergedConfig ? _vm.mergedConfig.borderRadius : "0", + ry: _vm.mergedConfig ? _vm.mergedConfig.borderRadius : "0", + fill: "transparent", + "stroke-width": _vm.mergedConfig ? _vm.mergedConfig.borderWidth : "0", + stroke: "url(#" + _vm.gradientId1 + ")", + width: _vm.rectWidth > 0 ? _vm.rectWidth : 0, + height: _vm.rectHeight > 0 ? _vm.rectHeight : 0 + } + }), + _vm._v(" "), + _c("polyline", { + attrs: { + "stroke-width": _vm.polylineWidth, + "stroke-dasharray": _vm.mergedConfig + ? _vm.mergedConfig.lineDash.join(",") + : "0", + stroke: "url(#" + _vm.polylineGradient + ")", + points: _vm.points + } + }), + _vm._v(" "), + _c( + "text", + { + attrs: { + stroke: _vm.mergedConfig ? _vm.mergedConfig.textColor : "#fff", + fill: _vm.mergedConfig ? _vm.mergedConfig.textColor : "#fff", + x: _vm.width / 2, + y: _vm.height / 2 + } + }, + [_vm._v("\n " + _vm._s(_vm.details) + "\n ")] + ) + ]) + ]) + }; + var __vue_staticRenderFns__$r = []; + __vue_render__$r._withStripped = true; + + /* style */ + const __vue_inject_styles__$r = function (inject) { + if (!inject) return + inject("data-v-7801b40e_0", { source: ".dv-percent-pond {\n position: relative;\n display: flex;\n flex-direction: column;\n}\n.dv-percent-pond svg {\n position: absolute;\n left: 0px;\n top: 0px;\n width: 100%;\n height: 100%;\n}\n.dv-percent-pond polyline {\n transition: all 0.3s;\n}\n.dv-percent-pond text {\n font-size: 25px;\n font-weight: bold;\n text-anchor: middle;\n dominant-baseline: middle;\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,kBAAkB;EAClB,aAAa;EACb,sBAAsB;AACxB;AACA;EACE,kBAAkB;EAClB,SAAS;EACT,QAAQ;EACR,WAAW;EACX,YAAY;AACd;AACA;EACE,oBAAoB;AACtB;AACA;EACE,eAAe;EACf,iBAAiB;EACjB,mBAAmB;EACnB,yBAAyB;AAC3B","file":"main.vue","sourcesContent":[".dv-percent-pond {\n position: relative;\n display: flex;\n flex-direction: column;\n}\n.dv-percent-pond svg {\n position: absolute;\n left: 0px;\n top: 0px;\n width: 100%;\n height: 100%;\n}\n.dv-percent-pond polyline {\n transition: all 0.3s;\n}\n.dv-percent-pond text {\n font-size: 25px;\n font-weight: bold;\n text-anchor: middle;\n dominant-baseline: middle;\n}\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$r = undefined; + /* module identifier */ + const __vue_module_identifier__$r = undefined; + /* functional template */ + const __vue_is_functional_template__$r = false; + /* style inject SSR */ + + + + var PercentPond = normalizeComponent_1( + { render: __vue_render__$r, staticRenderFns: __vue_staticRenderFns__$r }, + __vue_inject_styles__$r, + __vue_script__$r, + __vue_scope_id__$r, + __vue_is_functional_template__$r, + __vue_module_identifier__$r, + browser, + undefined + ); + + function percentPond (Vue) { + Vue.component(PercentPond.name, PercentPond); + } + + // + var script$s = { + name: 'DvFlylineChart', + mixins: [autoResize], + props: { + config: { + type: Object, + default: () => ({}) + }, + dev: { + type: Boolean, + default: false + } + }, + + data() { + return { + ref: 'dv-flyline-chart', + unique: Math.random(), + maskId: `flyline-mask-id-${new Date().getTime()}`, + maskCircleId: `mask-circle-id-${new Date().getTime()}`, + gradientId: `gradient-id-${new Date().getTime()}`, + gradient2Id: `gradient2-id-${new Date().getTime()}`, + defaultConfig: { + /** + * @description Flyline chart center point + * @type {Array} + * @default centerPoint = [0, 0] + */ + centerPoint: [0, 0], + + /** + * @description Flyline start points + * @type {Array>} + * @default points = [] + * @example points = [[10, 10], [100, 100]] + */ + points: [], + + /** + * @description Flyline width + * @type {Number} + * @default lineWidth = 1 + */ + lineWidth: 1, + + /** + * @description Orbit color + * @type {String} + * @default orbitColor = 'rgba(103, 224, 227, .2)' + */ + orbitColor: 'rgba(103, 224, 227, .2)', + + /** + * @description Flyline color + * @type {String} + * @default orbitColor = '#ffde93' + */ + flylineColor: '#ffde93', + + /** + * @description K value + * @type {Number} + * @default k = -0.5 + * @example k = -1 ~ 1 + */ + k: -0.5, + + /** + * @description Flyline curvature + * @type {Number} + * @default curvature = 5 + */ + curvature: 5, + + /** + * @description Flyline radius + * @type {Number} + * @default flylineRadius = 100 + */ + flylineRadius: 100, + + /** + * @description Flyline animation duration + * @type {Array} + * @default duration = [20, 30] + */ + duration: [20, 30], + + /** + * @description Relative points position + * @type {Boolean} + * @default relative = true + */ + relative: true, + + /** + * @description Back ground image url + * @type {String} + * @default bgImgUrl = '' + * @example bgImgUrl = './img/bg.jpg' + */ + bgImgUrl: '', + + /** + * @description Text configuration + * @type {Object} + */ + text: { + /** + * @description Text offset + * @type {Array} + * @default offset = [0, 15] + */ + offset: [0, 15], + + /** + * @description Text color + * @type {String} + * @default color = '#ffdb5c' + */ + color: '#ffdb5c', + + /** + * @description Text font size + * @type {Number} + * @default fontSize = 12 + */ + fontSize: 12 + }, + + /** + * @description Halo configuration + * @type {Object} + */ + halo: { + /** + * @description Weather to show halo + * @type {Boolean} + * @default show = true + * @example show = true | false + */ + show: true, + + /** + * @description Halo animation duration (10 = 1s) + * @type {Number} + * @default duration = 30 + */ + duration: 30, + + /** + * @description Halo color + * @type {String} + * @default color = '#fb7293' + */ + color: '#fb7293', + + /** + * @description Halo max radius + * @type {Number} + * @default radius = 120 + */ + radius: 120 + }, + + /** + * @description Center point img configuration + * @type {Object} + */ + centerPointImg: { + /** + * @description Center point img width + * @type {Number} + * @default width = 40 + */ + width: 40, + + /** + * @description Center point img height + * @type {Number} + * @default height = 40 + */ + height: 40, + + /** + * @description Center point img url + * @type {String} + * @default url = '' + */ + url: '' + }, + + /** + * @description Points img configuration + * @type {Object} + * @default radius = 120 + */ + pointsImg: { + /** + * @description Points img width + * @type {Number} + * @default width = 15 + */ + width: 15, + + /** + * @description Points img height + * @type {Number} + * @default height = 15 + */ + height: 15, + + /** + * @description Points img url + * @type {String} + * @default url = '' + */ + url: '' + } + }, + mergedConfig: null, + paths: [], + lengths: [], + times: [], + texts: [] + }; + }, + + watch: { + config() { + const { + calcData + } = this; + calcData(); + } + + }, + methods: { + afterAutoResizeMixinInit() { + const { + calcData + } = this; + calcData(); + }, + + onResize() { + const { + calcData + } = this; + calcData(); + }, + + async calcData() { + const { + mergeConfig, + createFlylinePaths, + calcLineLengths + } = this; + mergeConfig(); + createFlylinePaths(); + await calcLineLengths(); + const { + calcTimes, + calcTexts + } = this; + calcTimes(); + calcTexts(); + }, + + mergeConfig() { + let { + config, + defaultConfig + } = this; + const mergedConfig = util_2$1(util_1(defaultConfig, true), config || {}); + const { + points + } = mergedConfig; + mergedConfig.points = points.map(item => { + if (item instanceof Array) { + return { + position: item, + text: '' + }; + } + + return item; + }); + this.mergedConfig = mergedConfig; + }, + + createFlylinePaths() { + const { + getPath, + mergedConfig, + width, + height + } = this; + let { + centerPoint, + points, + relative + } = mergedConfig; + points = points.map(({ + position + }) => position); + + if (relative) { + centerPoint = [width * centerPoint[0], height * centerPoint[1]]; + points = points.map(([x, y]) => [width * x, height * y]); + } + + this.paths = points.map(point => getPath(centerPoint, point)); + }, + + getPath(center, point) { + const { + getControlPoint + } = this; + const controlPoint = getControlPoint(center, point); + return [point, controlPoint, center]; + }, + + getControlPoint([sx, sy], [ex, ey]) { + const { + getKLinePointByx, + mergedConfig + } = this; + const { + curvature, + k + } = mergedConfig; + const [mx, my] = [(sx + ex) / 2, (sy + ey) / 2]; + const distance = getPointDistance([sx, sy], [ex, ey]); + const targetLength = distance / curvature; + const disDived = targetLength / 2; + let [dx, dy] = [mx, my]; + + do { + dx += disDived; + dy = getKLinePointByx(k, [mx, my], dx)[1]; + } while (getPointDistance([mx, my], [dx, dy]) < targetLength); + + return [dx, dy]; + }, + + getKLinePointByx(k, [lx, ly], x) { + const y = ly - k * lx + k * x; + return [x, y]; + }, + + async calcLineLengths() { + const { + $nextTick, + paths, + $refs + } = this; + await $nextTick(); + this.lengths = paths.map((foo, i) => $refs[`path${i}`][0].getTotalLength()); + }, + + calcTimes() { + const { + duration, + points + } = this.mergedConfig; + this.times = points.map(foo => randomExtend(...duration) / 10); + }, + + calcTexts() { + const { + points + } = this.mergedConfig; + this.texts = points.map(({ + text + }) => text); + }, + + consoleClickPos({ + offsetX, + offsetY + }) { + const { + width, + height, + dev + } = this; + if (!dev) return; + const relativeX = (offsetX / width).toFixed(2); + const relativeY = (offsetY / height).toFixed(2); + console.warn(`dv-flyline-chart DEV: \n Click Position is [${offsetX}, ${offsetY}] \n Relative Position is [${relativeX}, ${relativeY}]`); + } + + } + }; + + /* script */ + const __vue_script__$s = script$s; + + /* template */ + var __vue_render__$s = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c( + "div", + { + ref: "dv-flyline-chart", + staticClass: "dv-flyline-chart", + style: + "background-image: url(" + + (_vm.mergedConfig ? _vm.mergedConfig.bgImgUrl : "") + + ")", + on: { click: _vm.consoleClickPos } + }, + [ + _vm.mergedConfig + ? _c( + "svg", + { attrs: { width: _vm.width, height: _vm.height } }, + [ + _c( + "defs", + [ + _c( + "radialGradient", + { + attrs: { + id: _vm.gradientId, + cx: "50%", + cy: "50%", + r: "50%" + } + }, + [ + _c("stop", { + attrs: { + offset: "0%", + "stop-color": "#fff", + "stop-opacity": "1" + } + }), + _vm._v(" "), + _c("stop", { + attrs: { + offset: "100%", + "stop-color": "#fff", + "stop-opacity": "0" + } + }) + ], + 1 + ), + _vm._v(" "), + _c( + "radialGradient", + { + attrs: { + id: _vm.gradient2Id, + cx: "50%", + cy: "50%", + r: "50%" + } + }, + [ + _c("stop", { + attrs: { + offset: "0%", + "stop-color": "#fff", + "stop-opacity": "0" + } + }), + _vm._v(" "), + _c("stop", { + attrs: { + offset: "100%", + "stop-color": "#fff", + "stop-opacity": "1" + } + }) + ], + 1 + ), + _vm._v(" "), + _vm.paths[0] + ? _c( + "circle", + { + attrs: { + id: "circle" + _vm.paths[0].toString(), + cx: _vm.paths[0][2][0], + cy: _vm.paths[0][2][1] + } + }, + [ + _c("animate", { + attrs: { + attributeName: "r", + values: "1;" + _vm.mergedConfig.halo.radius, + dur: _vm.mergedConfig.halo.duration / 10 + "s", + repeatCount: "indefinite" + } + }), + _vm._v(" "), + _c("animate", { + attrs: { + attributeName: "opacity", + values: "1;0", + dur: _vm.mergedConfig.halo.duration / 10 + "s", + repeatCount: "indefinite" + } + }) + ] + ) + : _vm._e() + ], + 1 + ), + _vm._v(" "), + _vm.paths[0] + ? _c("image", { + attrs: { + "xlink:href": _vm.mergedConfig.centerPointImg.url, + width: _vm.mergedConfig.centerPointImg.width, + height: _vm.mergedConfig.centerPointImg.height, + x: + _vm.paths[0][2][0] - + _vm.mergedConfig.centerPointImg.width / 2, + y: + _vm.paths[0][2][1] - + _vm.mergedConfig.centerPointImg.height / 2 + } + }) + : _vm._e(), + _vm._v(" "), + _c( + "mask", + { attrs: { id: "maskhalo" + _vm.paths[0].toString() } }, + [ + _vm.paths[0] + ? _c("use", { + attrs: { + "xlink:href": "#circle" + _vm.paths[0].toString(), + fill: "url(#" + _vm.gradient2Id + ")" + } + }) + : _vm._e() + ] + ), + _vm._v(" "), + _vm.paths[0] && _vm.mergedConfig.halo.show + ? _c("use", { + attrs: { + "xlink:href": "#circle" + _vm.paths[0].toString(), + fill: _vm.mergedConfig.halo.color, + mask: "url(#maskhalo" + _vm.paths[0].toString() + ")" + } + }) + : _vm._e(), + _vm._v(" "), + _vm._l(_vm.paths, function(path, i) { + return _c("g", { key: i }, [ + _c("defs", [ + _c("path", { + ref: "path" + i, + refInFor: true, + attrs: { + id: "path" + path.toString(), + d: + "M" + + path[0].toString() + + " Q" + + path[1].toString() + + " " + + path[2].toString(), + fill: "transparent" + } + }) + ]), + _vm._v(" "), + _c("use", { + attrs: { + "xlink:href": "#path" + path.toString(), + "stroke-width": _vm.mergedConfig.lineWidth, + stroke: _vm.mergedConfig.orbitColor + } + }), + _vm._v(" "), + _vm.lengths[i] + ? _c( + "use", + { + attrs: { + "xlink:href": "#path" + path.toString(), + "stroke-width": _vm.mergedConfig.lineWidth, + stroke: _vm.mergedConfig.flylineColor, + mask: + "url(#mask" + _vm.unique + path.toString() + ")" + } + }, + [ + _c("animate", { + attrs: { + attributeName: "stroke-dasharray", + from: "0, " + _vm.lengths[i], + to: _vm.lengths[i] + ", 0", + dur: _vm.times[i] || 0, + repeatCount: "indefinite" + } + }) + ] + ) + : _vm._e(), + _vm._v(" "), + _c( + "mask", + { attrs: { id: "mask" + _vm.unique + path.toString() } }, + [ + _c( + "circle", + { + attrs: { + cx: "0", + cy: "0", + r: _vm.mergedConfig.flylineRadius, + fill: "url(#" + _vm.gradientId + ")" + } + }, + [ + _c("animateMotion", { + attrs: { + dur: _vm.times[i] || 0, + path: + "M" + + path[0].toString() + + " Q" + + path[1].toString() + + " " + + path[2].toString(), + rotate: "auto", + repeatCount: "indefinite" + } + }) + ], + 1 + ) + ] + ), + _vm._v(" "), + _c("image", { + attrs: { + "xlink:href": _vm.mergedConfig.pointsImg.url, + width: _vm.mergedConfig.pointsImg.width, + height: _vm.mergedConfig.pointsImg.height, + x: path[0][0] - _vm.mergedConfig.pointsImg.width / 2, + y: path[0][1] - _vm.mergedConfig.pointsImg.height / 2 + } + }), + _vm._v(" "), + _c( + "text", + { + style: + "fontSize:" + _vm.mergedConfig.text.fontSize + "px;", + attrs: { + fill: _vm.mergedConfig.text.color, + x: path[0][0] + _vm.mergedConfig.text.offset[0], + y: path[0][1] + _vm.mergedConfig.text.offset[1] + } + }, + [_vm._v("\n " + _vm._s(_vm.texts[i]) + "\n ")] + ) + ]) + }) + ], + 2 + ) + : _vm._e() + ] + ) + }; + var __vue_staticRenderFns__$s = []; + __vue_render__$s._withStripped = true; + + /* style */ + const __vue_inject_styles__$s = function (inject) { + if (!inject) return + inject("data-v-65ea4c14_0", { source: ".dv-flyline-chart {\n display: flex;\n flex-direction: column;\n background-size: 100% 100%;\n}\n.dv-flyline-chart polyline {\n transition: all 0.3s;\n}\n.dv-flyline-chart text {\n text-anchor: middle;\n dominant-baseline: middle;\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,aAAa;EACb,sBAAsB;EACtB,0BAA0B;AAC5B;AACA;EACE,oBAAoB;AACtB;AACA;EACE,mBAAmB;EACnB,yBAAyB;AAC3B","file":"main.vue","sourcesContent":[".dv-flyline-chart {\n display: flex;\n flex-direction: column;\n background-size: 100% 100%;\n}\n.dv-flyline-chart polyline {\n transition: all 0.3s;\n}\n.dv-flyline-chart text {\n text-anchor: middle;\n dominant-baseline: middle;\n}\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$s = undefined; + /* module identifier */ + const __vue_module_identifier__$s = undefined; + /* functional template */ + const __vue_is_functional_template__$s = false; + /* style inject SSR */ + + + + var FlylineChart = normalizeComponent_1( + { render: __vue_render__$s, staticRenderFns: __vue_staticRenderFns__$s }, + __vue_inject_styles__$s, + __vue_script__$s, + __vue_scope_id__$s, + __vue_is_functional_template__$s, + __vue_module_identifier__$s, + browser, + undefined + ); + + function flylineChart (Vue) { + Vue.component(FlylineChart.name, FlylineChart); + } + + // + var script$t = { + name: 'DvConicalColumnChart', + mixins: [autoResize], + props: { + config: { + type: Object, + default: () => ({}) + } + }, + + data() { + return { + ref: 'conical-column-chart', + defaultConfig: { + /** + * @description Chart data + * @type {Array} + * @default data = [] + */ + data: [], + + /** + * @description Chart img + * @type {Array} + * @default img = [] + */ + img: [], + + /** + * @description Chart font size + * @type {Number} + * @default fontSize = 12 + */ + fontSize: 12, + + /** + * @description Img side length + * @type {Number} + * @default imgSideLength = 30 + */ + imgSideLength: 30, + + /** + * @description Column color + * @type {String} + * @default columnColor = 'rgba(0, 194, 255, 0.4)' + */ + columnColor: 'rgba(0, 194, 255, 0.4)', + + /** + * @description Text color + * @type {String} + * @default textColor = '#fff' + */ + textColor: '#fff', + + /** + * @description Show value + * @type {Boolean} + * @default showValue = false + */ + showValue: false + }, + mergedConfig: null, + column: [] + }; + }, + + watch: { + config() { + const { + calcData + } = this; + calcData(); + } + + }, + methods: { + afterAutoResizeMixinInit() { + const { + calcData + } = this; + calcData(); + }, + + onResize() { + const { + calcData + } = this; + calcData(); + }, + + calcData() { + const { + mergeConfig, + initData, + calcSVGPath + } = this; + mergeConfig(); + initData(); + calcSVGPath(); + }, + + mergeConfig() { + const { + defaultConfig, + config + } = this; + this.mergedConfig = util_2$1(util_1(defaultConfig, true), config || {}); + }, + + initData() { + const { + mergedConfig + } = this; + let { + data + } = mergedConfig; + data = util_1(data, true); + data.sort(({ + value: a + }, { + value: b + }) => { + if (a > b) return -1; + if (a < b) return 1; + if (a === b) return 0; + }); + const max = data[0] ? data[0].value : 10; + data = data.map(item => ({ ...item, + percent: item.value / max + })); + mergedConfig.data = data; + }, + + calcSVGPath() { + const { + mergedConfig, + width, + height + } = this; + const { + imgSideLength, + fontSize, + data + } = mergedConfig; + const itemNum = data.length; + const gap = width / (itemNum + 1); + const useAbleHeight = height - imgSideLength - fontSize - 5; + const svgBottom = height - fontSize - 5; + this.column = data.map((item, i) => { + const { + percent + } = item; + const middleXPos = gap * (i + 1); + const leftXPos = gap * i; + const rightXpos = gap * (i + 2); + const middleYPos = svgBottom - useAbleHeight * percent; + const controlYPos = useAbleHeight * percent * 0.6 + middleYPos; + const d = ` + M${leftXPos}, ${svgBottom} + Q${middleXPos}, ${controlYPos} ${middleXPos},${middleYPos} + M${middleXPos},${middleYPos} + Q${middleXPos}, ${controlYPos} ${rightXpos},${svgBottom} + L${leftXPos}, ${svgBottom} + Z + `; + const textY = (svgBottom + middleYPos) / 2 + fontSize / 2; + return { ...item, + d, + x: middleXPos, + y: middleYPos, + textY + }; + }); + } + + } + }; + + /* script */ + const __vue_script__$t = script$t; + + /* template */ + var __vue_render__$t = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c("div", { ref: _vm.ref, staticClass: "dv-conical-column-chart" }, [ + _c( + "svg", + { attrs: { width: _vm.width, height: _vm.height } }, + _vm._l(_vm.column, function(item, i) { + return _c("g", { key: i }, [ + _c("path", { + attrs: { d: item.d, fill: _vm.mergedConfig.columnColor } + }), + _vm._v(" "), + _c( + "text", + { + style: "fontSize:" + _vm.mergedConfig.fontSize + "px", + attrs: { + fill: _vm.mergedConfig.textColor, + x: item.x, + y: _vm.height - 4 + } + }, + [_vm._v("\n " + _vm._s(item.name) + "\n ")] + ), + _vm._v(" "), + _vm.mergedConfig.img.length + ? _c("image", { + attrs: { + "xlink:href": + _vm.mergedConfig.img[i % _vm.mergedConfig.img.length], + width: _vm.mergedConfig.imgSideLength, + height: _vm.mergedConfig.imgSideLength, + x: item.x - _vm.mergedConfig.imgSideLength / 2, + y: item.y - _vm.mergedConfig.imgSideLength + } + }) + : _vm._e(), + _vm._v(" "), + _vm.mergedConfig.showValue + ? _c( + "text", + { + style: "fontSize:" + _vm.mergedConfig.fontSize + "px", + attrs: { + fill: _vm.mergedConfig.textColor, + x: item.x, + y: item.textY + } + }, + [_vm._v("\n " + _vm._s(item.value) + "\n ")] + ) + : _vm._e() + ]) + }), + 0 + ) + ]) + }; + var __vue_staticRenderFns__$t = []; + __vue_render__$t._withStripped = true; + + /* style */ + const __vue_inject_styles__$t = function (inject) { + if (!inject) return + inject("data-v-774de7d0_0", { source: ".dv-conical-column-chart {\n width: 100%;\n height: 100%;\n}\n.dv-conical-column-chart text {\n text-anchor: middle;\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,WAAW;EACX,YAAY;AACd;AACA;EACE,mBAAmB;AACrB","file":"main.vue","sourcesContent":[".dv-conical-column-chart {\n width: 100%;\n height: 100%;\n}\n.dv-conical-column-chart text {\n text-anchor: middle;\n}\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$t = undefined; + /* module identifier */ + const __vue_module_identifier__$t = undefined; + /* functional template */ + const __vue_is_functional_template__$t = false; + /* style inject SSR */ + + + + var ConicalColumnChart = normalizeComponent_1( + { render: __vue_render__$t, staticRenderFns: __vue_staticRenderFns__$t }, + __vue_inject_styles__$t, + __vue_script__$t, + __vue_scope_id__$t, + __vue_is_functional_template__$t, + __vue_module_identifier__$t, + browser, + undefined + ); + + function conicalColumnChart (Vue) { + Vue.component(ConicalColumnChart.name, ConicalColumnChart); + } + + function digitalFlop (Vue) { + Vue.component(DigitalFlop.name, DigitalFlop); + } + + // + var script$u = { + name: 'DvScrollBoard', + mixins: [autoResize], + props: { + config: { + type: Object, + default: () => ({}) + } + }, + + data() { + return { + ref: 'scroll-board', + defaultConfig: { + /** + * @description Board header + * @type {Array} + * @default header = [] + * @example header = ['column1', 'column2', 'column3'] + */ + header: [], + + /** + * @description Board data + * @type {Array} + * @default data = [] + */ + data: [], + + /** + * @description Row num + * @type {Number} + * @default rowNum = 5 + */ + rowNum: 5, + + /** + * @description Header background color + * @type {String} + * @default headerBGC = '#00BAFF' + */ + headerBGC: '#00BAFF', + + /** + * @description Odd row background color + * @type {String} + * @default oddRowBGC = '#003B51' + */ + oddRowBGC: '#003B51', + + /** + * @description Even row background color + * @type {String} + * @default evenRowBGC = '#003B51' + */ + evenRowBGC: '#0A2732', + + /** + * @description Scroll wait time + * @type {Number} + * @default waitTime = 2000 + */ + waitTime: 2000, + + /** + * @description Header height + * @type {Number} + * @default headerHeight = 35 + */ + headerHeight: 35, + + /** + * @description Column width + * @type {Array} + * @default columnWidth = [] + */ + columnWidth: [], + + /** + * @description Column align + * @type {Array} + * @default align = [] + * @example align = ['left', 'center', 'right'] + */ + align: [], + + /** + * @description Show index + * @type {Boolean} + * @default index = false + */ + index: false, + + /** + * @description Carousel type + * @type {String} + * @default carousel = 'single' + * @example carousel = 'single' | 'page' + */ + carousel: 'single' + }, + mergedConfig: null, + header: [], + rowsData: [], + rows: [], + widths: [], + heights: [], + avgHeight: 0, + aligns: [], + animationIndex: 0, + animationHandler: '' + }; + }, + + watch: { + config() { + const { + stopAnimation, + calcData + } = this; + stopAnimation(); + calcData(); + } + + }, + methods: { + afterAutoResizeMixinInit() { + const { + calcData + } = this; + calcData(); + }, + + onResize() { + const { + mergedConfig, + calcWidths, + calcHeights + } = this; + if (!mergedConfig) return; + calcWidths(); + calcHeights(); + }, + + calcData() { + const { + mergeConfig, + calcHeaderData, + calcRowsData + } = this; + mergeConfig(); + calcHeaderData(); + calcRowsData(); + const { + calcWidths, + calcHeights, + calcAligns + } = this; + calcWidths(); + calcHeights(); + calcAligns(); + const { + animation + } = this; + animation(true); + }, + + mergeConfig() { + let { + config, + defaultConfig + } = this; + this.mergedConfig = util_2$1(util_1(defaultConfig, true), config || {}); + }, + + calcHeaderData() { + let { + header, + index + } = this.mergedConfig; + + if (!header.length) { + this.header = []; + return; + } + + header = [...header]; + if (index) header.unshift('#'); + this.header = header; + }, + + calcRowsData() { + let { + data, + index, + headerBGC, + rowNum + } = this.mergedConfig; + + if (index) { + data = data.map((row, i) => { + row = [...row]; + const indexTag = `${i + 1}`; + row.unshift(indexTag); + return row; + }); + } + + data = data.map((ceils, i) => ({ + ceils, + rowIndex: i + })); + const rowLength = data.length; + + if (rowLength > rowNum && rowLength < 2 * rowNum) { + data = [...data, ...data]; + } + + data = data.map((d, i) => ({ ...d, + scroll: i + })); + this.rowsData = data; + this.rows = data; + }, + + calcWidths() { + const { + width, + mergedConfig, + rowsData + } = this; + const { + columnWidth + } = mergedConfig; + const usedWidth = columnWidth.reduce((all, w) => all + w, 0); + const columnNum = rowsData[0] ? rowsData[0].ceils.length : 0; + const avgWidth = (width - usedWidth) / (columnNum - columnWidth.length); + const widths = new Array(columnNum).fill(avgWidth); + this.widths = util_2$1(widths, columnWidth); + }, + + calcHeights(onresize = false) { + const { + height, + mergedConfig, + header + } = this; + const { + headerHeight, + rowNum, + data + } = mergedConfig; + let allHeight = height; + if (header.length) allHeight -= headerHeight; + const avgHeight = allHeight / rowNum; + this.avgHeight = avgHeight; + if (!onresize) this.heights = new Array(data.length).fill(avgHeight); + }, + + calcAligns() { + const { + header, + mergedConfig + } = this; + const columnNum = header.length; + let aligns = new Array(columnNum).fill('left'); + const { + align + } = mergedConfig; + this.aligns = util_2$1(aligns, align); + }, + + async animation(start = false) { + let { + avgHeight, + animationIndex, + mergedConfig, + rowsData, + animation + } = this; + const { + waitTime, + carousel, + rowNum + } = mergedConfig; + const rowLength = rowsData.length; + if (rowNum >= rowLength) return; + if (start) await new Promise(resolve => setTimeout(resolve, waitTime)); + const animationNum = carousel === 'single' ? 1 : rowNum; + let rows = rowsData.slice(animationIndex); + rows.push(...rowsData.slice(0, animationIndex)); + this.rows = rows; + this.heights = new Array(rowLength).fill(avgHeight); + await new Promise(resolve => setTimeout(resolve, 300)); + this.heights.splice(0, animationNum, ...new Array(animationNum).fill(0)); + animationIndex += animationNum; + const back = animationIndex - rowLength; + if (back >= 0) animationIndex = back; + this.animationIndex = animationIndex; + this.animationHandler = setTimeout(animation, waitTime - 300); + }, + + stopAnimation() { + const { + animationHandler + } = this; + if (!animationHandler) return; + clearTimeout(animationHandler); + }, + + emitEvent(ri, ci, row, ceil) { + const { + ceils, + rowIndex + } = row; + this.$emit('click', { + row: ceils, + ceil, + rowIndex, + columnIndex: ci + }); + } + + }, + + destroyed() { + const { + stopAnimation + } = this; + stopAnimation(); + } + + }; + + /* script */ + const __vue_script__$u = script$u; + + /* template */ + var __vue_render__$u = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c("div", { ref: _vm.ref, staticClass: "dv-scroll-board" }, [ + _vm.header.length && _vm.mergedConfig + ? _c( + "div", + { + staticClass: "header", + style: "background-color: " + _vm.mergedConfig.headerBGC + ";" + }, + _vm._l(_vm.header, function(headerItem, i) { + return _c("div", { + key: headerItem + i, + staticClass: "header-item", + style: + "\n height: " + + _vm.mergedConfig.headerHeight + + "px;\n line-height: " + + _vm.mergedConfig.headerHeight + + "px;\n width: " + + _vm.widths[i] + + "px;\n ", + attrs: { align: _vm.aligns[i] }, + domProps: { innerHTML: _vm._s(headerItem) } + }) + }), + 0 + ) + : _vm._e(), + _vm._v(" "), + _vm.mergedConfig + ? _c( + "div", + { + staticClass: "rows", + style: + "height: " + + (_vm.height - + (_vm.header.length ? _vm.mergedConfig.headerHeight : 0)) + + "px;" + }, + _vm._l(_vm.rows, function(row, ri) { + return _c( + "div", + { + key: row.toString() + row.scroll, + staticClass: "row-item", + style: + "\n height: " + + _vm.heights[ri] + + "px;\n line-height: " + + _vm.heights[ri] + + "px;\n background-color: " + + _vm.mergedConfig[ + row.rowIndex % 2 === 0 ? "evenRowBGC" : "oddRowBGC" + ] + + ";\n " + }, + _vm._l(row.ceils, function(ceil, ci) { + return _c("div", { + key: ceil + ri + ci, + staticClass: "ceil", + style: "width: " + _vm.widths[ci] + "px;", + attrs: { align: _vm.aligns[ci] }, + domProps: { innerHTML: _vm._s(ceil) }, + on: { + click: function($event) { + return _vm.emitEvent(ri, ci, row, ceil) + } + } + }) + }), + 0 + ) + }), + 0 + ) + : _vm._e() + ]) + }; + var __vue_staticRenderFns__$u = []; + __vue_render__$u._withStripped = true; + + /* style */ + const __vue_inject_styles__$u = function (inject) { + if (!inject) return + inject("data-v-87495252_0", { source: ".dv-scroll-board {\n position: relative;\n width: 100%;\n height: 100%;\n color: #fff;\n}\n.dv-scroll-board .text {\n padding: 0 10px;\n box-sizing: border-box;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.dv-scroll-board .header {\n display: flex;\n flex-direction: row;\n font-size: 15px;\n}\n.dv-scroll-board .header .header-item {\n padding: 0 10px;\n box-sizing: border-box;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n transition: all 0.3s;\n}\n.dv-scroll-board .rows {\n overflow: hidden;\n}\n.dv-scroll-board .rows .row-item {\n display: flex;\n font-size: 14px;\n transition: all 0.3s;\n}\n.dv-scroll-board .rows .ceil {\n padding: 0 10px;\n box-sizing: border-box;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.dv-scroll-board .rows .index {\n border-radius: 3px;\n padding: 0px 3px;\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;EACZ,WAAW;AACb;AACA;EACE,eAAe;EACf,sBAAsB;EACtB,mBAAmB;EACnB,gBAAgB;EAChB,uBAAuB;AACzB;AACA;EACE,aAAa;EACb,mBAAmB;EACnB,eAAe;AACjB;AACA;EACE,eAAe;EACf,sBAAsB;EACtB,mBAAmB;EACnB,gBAAgB;EAChB,uBAAuB;EACvB,oBAAoB;AACtB;AACA;EACE,gBAAgB;AAClB;AACA;EACE,aAAa;EACb,eAAe;EACf,oBAAoB;AACtB;AACA;EACE,eAAe;EACf,sBAAsB;EACtB,mBAAmB;EACnB,gBAAgB;EAChB,uBAAuB;AACzB;AACA;EACE,kBAAkB;EAClB,gBAAgB;AAClB","file":"main.vue","sourcesContent":[".dv-scroll-board {\n position: relative;\n width: 100%;\n height: 100%;\n color: #fff;\n}\n.dv-scroll-board .text {\n padding: 0 10px;\n box-sizing: border-box;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.dv-scroll-board .header {\n display: flex;\n flex-direction: row;\n font-size: 15px;\n}\n.dv-scroll-board .header .header-item {\n padding: 0 10px;\n box-sizing: border-box;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n transition: all 0.3s;\n}\n.dv-scroll-board .rows {\n overflow: hidden;\n}\n.dv-scroll-board .rows .row-item {\n display: flex;\n font-size: 14px;\n transition: all 0.3s;\n}\n.dv-scroll-board .rows .ceil {\n padding: 0 10px;\n box-sizing: border-box;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.dv-scroll-board .rows .index {\n border-radius: 3px;\n padding: 0px 3px;\n}\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$u = undefined; + /* module identifier */ + const __vue_module_identifier__$u = undefined; + /* functional template */ + const __vue_is_functional_template__$u = false; + /* style inject SSR */ + + + + var ScrollBoard = normalizeComponent_1( + { render: __vue_render__$u, staticRenderFns: __vue_staticRenderFns__$u }, + __vue_inject_styles__$u, + __vue_script__$u, + __vue_scope_id__$u, + __vue_is_functional_template__$u, + __vue_module_identifier__$u, + browser, + undefined + ); + + function scrollBoard (Vue) { + Vue.component(ScrollBoard.name, ScrollBoard); + } + + // + var script$v = { + name: 'DvScrollRankingBoard', + mixins: [autoResize], + props: { + config: { + type: Object, + default: () => ({}) + } + }, + + data() { + return { + ref: 'scroll-ranking-board', + defaultConfig: { + /** + * @description Board data + * @type {Array} + * @default data = [] + */ + data: [], + + /** + * @description Row num + * @type {Number} + * @default rowNum = 5 + */ + rowNum: 5, + + /** + * @description Scroll wait time + * @type {Number} + * @default waitTime = 2000 + */ + waitTime: 2000, + + /** + * @description Carousel type + * @type {String} + * @default carousel = 'single' + * @example carousel = 'single' | 'page' + */ + carousel: 'single' + }, + mergedConfig: null, + rowsData: [], + rows: [], + heights: [], + animationIndex: 0, + animationHandler: '' + }; + }, + + watch: { + config() { + const { + stopAnimation, + calcData + } = this; + stopAnimation(); + calcData(); + } + + }, + methods: { + afterAutoResizeMixinInit() { + const { + calcData + } = this; + calcData(); + }, + + onResize() { + const { + mergedConfig, + calcHeights + } = this; + if (!mergedConfig) return; + calcHeights(true); + }, + + calcData() { + const { + mergeConfig, + calcRowsData + } = this; + mergeConfig(); + calcRowsData(); + const { + calcHeights + } = this; + calcHeights(); + const { + animation + } = this; + animation(true); + }, + + mergeConfig() { + let { + config, + defaultConfig + } = this; + this.mergedConfig = util_2$1(util_1(defaultConfig, true), config || {}); + }, + + calcRowsData() { + let { + data, + rowNum + } = this.mergedConfig; + data.sort(({ + value: a + }, { + value: b + }) => { + if (a > b) return -1; + if (a < b) return 1; + if (a === b) return 0; + }); + const value = data.map(({ + value + }) => value); + const max = Math.max(...value) || 0; + data = data.map((row, i) => ({ ...row, + ranking: i + 1, + percent: row.value / max * 100 + })); + const rowLength = data.length; + + if (rowLength > rowNum && rowLength < 2 * rowNum) { + data = [...data, ...data]; + } + + data = data.map((d, i) => ({ ...d, + scroll: i + })); + this.rowsData = data; + this.rows = data; + }, + + calcHeights(onresize = false) { + const { + height, + mergedConfig + } = this; + const { + rowNum, + data + } = mergedConfig; + const avgHeight = height / rowNum; + this.avgHeight = avgHeight; + if (!onresize) this.heights = new Array(data.length).fill(avgHeight); + }, + + async animation(start = false) { + let { + avgHeight, + animationIndex, + mergedConfig, + rowsData, + animation + } = this; + const { + waitTime, + carousel, + rowNum + } = mergedConfig; + const rowLength = rowsData.length; + if (rowNum >= rowLength) return; + if (start) await new Promise(resolve => setTimeout(resolve, waitTime)); + const animationNum = carousel === 'single' ? 1 : rowNum; + let rows = rowsData.slice(animationIndex); + rows.push(...rowsData.slice(0, animationIndex)); + this.rows = rows; + this.heights = new Array(rowLength).fill(avgHeight); + await new Promise(resolve => setTimeout(resolve, 300)); + this.heights.splice(0, animationNum, ...new Array(animationNum).fill(0)); + animationIndex += animationNum; + const back = animationIndex - rowLength; + if (back >= 0) animationIndex = back; + this.animationIndex = animationIndex; + this.animationHandler = setTimeout(animation, waitTime - 300); + }, + + stopAnimation() { + const { + animationHandler + } = this; + if (!animationHandler) return; + clearTimeout(animationHandler); + } + + }, + + destroyed() { + const { + stopAnimation + } = this; + stopAnimation(); + } + + }; + + /* script */ + const __vue_script__$v = script$v; + + /* template */ + var __vue_render__$v = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c( + "div", + { ref: _vm.ref, staticClass: "dv-scroll-ranking-board" }, + _vm._l(_vm.rows, function(item, i) { + return _c( + "div", + { + key: item.toString() + item.scroll, + staticClass: "row-item", + style: "height: " + _vm.heights[i] + "px;" + }, + [ + _c("div", { staticClass: "ranking-info" }, [ + _c("div", { staticClass: "rank" }, [ + _vm._v("No." + _vm._s(item.ranking)) + ]), + _vm._v(" "), + _c("div", { staticClass: "info-name" }, [ + _vm._v(_vm._s(item.name)) + ]), + _vm._v(" "), + _c("div", { staticClass: "ranking-value" }, [ + _vm._v(_vm._s(item.value)) + ]) + ]), + _vm._v(" "), + _c("div", { staticClass: "ranking-column" }, [ + _c( + "div", + { + staticClass: "inside-column", + style: "width: " + item.percent + "%;" + }, + [_c("div", { staticClass: "shine" })] + ) + ]) + ] + ) + }), + 0 + ) + }; + var __vue_staticRenderFns__$v = []; + __vue_render__$v._withStripped = true; + + /* style */ + const __vue_inject_styles__$v = function (inject) { + if (!inject) return + inject("data-v-7a8c5f54_0", { source: ".dv-scroll-ranking-board {\n width: 100%;\n height: 100%;\n color: #fff;\n overflow: hidden;\n}\n.dv-scroll-ranking-board .row-item {\n transition: all 0.3s;\n display: flex;\n flex-direction: column;\n justify-content: center;\n overflow: hidden;\n}\n.dv-scroll-ranking-board .ranking-info {\n display: flex;\n width: 100%;\n font-size: 13px;\n}\n.dv-scroll-ranking-board .ranking-info .rank {\n width: 40px;\n color: #1370fb;\n}\n.dv-scroll-ranking-board .ranking-info .info-name {\n flex: 1;\n}\n.dv-scroll-ranking-board .ranking-column {\n border-bottom: 2px solid rgba(19, 112, 251, 0.5);\n margin-top: 5px;\n}\n.dv-scroll-ranking-board .ranking-column .inside-column {\n position: relative;\n height: 6px;\n background-color: #1370fb;\n margin-bottom: 2px;\n border-radius: 1px;\n overflow: hidden;\n}\n.dv-scroll-ranking-board .ranking-column .shine {\n position: absolute;\n left: 0%;\n top: 2px;\n height: 2px;\n width: 50px;\n transform: translateX(-100%);\n background: radial-gradient(#28f8ff 5%, transparent 80%);\n animation: shine 3s ease-in-out infinite alternate;\n}\n@keyframes shine {\n80% {\n left: 0%;\n transform: translateX(-100%);\n}\n100% {\n left: 100%;\n transform: translateX(0%);\n}\n}\n", map: {"version":3,"sources":["main.vue"],"names":[],"mappings":"AAAA;EACE,WAAW;EACX,YAAY;EACZ,WAAW;EACX,gBAAgB;AAClB;AACA;EACE,oBAAoB;EACpB,aAAa;EACb,sBAAsB;EACtB,uBAAuB;EACvB,gBAAgB;AAClB;AACA;EACE,aAAa;EACb,WAAW;EACX,eAAe;AACjB;AACA;EACE,WAAW;EACX,cAAc;AAChB;AACA;EACE,OAAO;AACT;AACA;EACE,gDAAgD;EAChD,eAAe;AACjB;AACA;EACE,kBAAkB;EAClB,WAAW;EACX,yBAAyB;EACzB,kBAAkB;EAClB,kBAAkB;EAClB,gBAAgB;AAClB;AACA;EACE,kBAAkB;EAClB,QAAQ;EACR,QAAQ;EACR,WAAW;EACX,WAAW;EACX,4BAA4B;EAC5B,wDAAwD;EACxD,kDAAkD;AACpD;AACA;AACE;IACE,QAAQ;IACR,4BAA4B;AAC9B;AACA;IACE,UAAU;IACV,yBAAyB;AAC3B;AACF","file":"main.vue","sourcesContent":[".dv-scroll-ranking-board {\n width: 100%;\n height: 100%;\n color: #fff;\n overflow: hidden;\n}\n.dv-scroll-ranking-board .row-item {\n transition: all 0.3s;\n display: flex;\n flex-direction: column;\n justify-content: center;\n overflow: hidden;\n}\n.dv-scroll-ranking-board .ranking-info {\n display: flex;\n width: 100%;\n font-size: 13px;\n}\n.dv-scroll-ranking-board .ranking-info .rank {\n width: 40px;\n color: #1370fb;\n}\n.dv-scroll-ranking-board .ranking-info .info-name {\n flex: 1;\n}\n.dv-scroll-ranking-board .ranking-column {\n border-bottom: 2px solid rgba(19, 112, 251, 0.5);\n margin-top: 5px;\n}\n.dv-scroll-ranking-board .ranking-column .inside-column {\n position: relative;\n height: 6px;\n background-color: #1370fb;\n margin-bottom: 2px;\n border-radius: 1px;\n overflow: hidden;\n}\n.dv-scroll-ranking-board .ranking-column .shine {\n position: absolute;\n left: 0%;\n top: 2px;\n height: 2px;\n width: 50px;\n transform: translateX(-100%);\n background: radial-gradient(#28f8ff 5%, transparent 80%);\n animation: shine 3s ease-in-out infinite alternate;\n}\n@keyframes shine {\n 80% {\n left: 0%;\n transform: translateX(-100%);\n }\n 100% {\n left: 100%;\n transform: translateX(0%);\n }\n}\n"]}, media: undefined }); + + }; + /* scoped */ + const __vue_scope_id__$v = undefined; + /* module identifier */ + const __vue_module_identifier__$v = undefined; + /* functional template */ + const __vue_is_functional_template__$v = false; + /* style inject SSR */ + + + + var ScrollRankingBoard = normalizeComponent_1( + { render: __vue_render__$v, staticRenderFns: __vue_staticRenderFns__$v }, + __vue_inject_styles__$v, + __vue_script__$v, + __vue_scope_id__$v, + __vue_is_functional_template__$v, + __vue_module_identifier__$v, + browser, + undefined + ); + + function scrollRankingBoard (Vue) { + Vue.component(ScrollRankingBoard.name, ScrollRankingBoard); + } + + /** + * IMPORT COMPONENTS + */ + /** + * USE COMPONENTS + */ + + function datav (Vue) { + Vue.use(fullScreenContainer); + Vue.use(loading); // border box + + Vue.use(borderBox1); + Vue.use(borderBox2); + Vue.use(borderBox3); + Vue.use(borderBox4); + Vue.use(borderBox5); + Vue.use(borderBox6); + Vue.use(borderBox7); + Vue.use(borderBox8); + Vue.use(borderBox9); + Vue.use(borderBox10); // decoration + + Vue.use(decoration1); + Vue.use(decoration2); + Vue.use(decoration3); + Vue.use(decoration4); + Vue.use(decoration5); + Vue.use(decoration6); + Vue.use(decoration7); + Vue.use(decoration8); + Vue.use(decoration9); + Vue.use(decoration10); // charts + + Vue.use(charts); + Vue.use(activeRingChart); + Vue.use(capsuleChart); + Vue.use(waterLevelPond); + Vue.use(percentPond); + Vue.use(flylineChart); + Vue.use(conicalColumnChart); + Vue.use(digitalFlop); + Vue.use(scrollBoard); + Vue.use(scrollRankingBoard); + } + + Vue.use(datav); + +})); diff --git a/publish.js b/publish.js deleted file mode 100644 index 23db25d..0000000 --- a/publish.js +++ /dev/null @@ -1,3 +0,0 @@ -const start = require('./publish/index') - -start()