From 93b8a2b6c13e990d7ef7502f13d4b7a2f4663067 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Fri, 11 Nov 2022 20:02:11 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E4=BF=AE=E5=A4=8D=E6=BB=91=E5=9D=97?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E7=A0=81=EF=BC=8C=E5=AD=98=E5=9C=A8=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E7=9A=84=E6=83=85=E5=86=B5=202.=20=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=20demo=20=E9=A2=84=E8=A7=88=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/captcha/CaptchaController.java | 42 + .../admin-ui/static/img/401.fea349c2.gif | Bin 0 -> 5580 bytes .../admin-ui/static/img/404.fa349ddc.png | Bin 0 -> 17840 bytes .../admin-ui/static/img/bg.c05ff27e.png | Bin 0 -> 61222 bytes .../admin-ui/static/img/dark.16937467.svg | 1 + .../admin-ui/static/img/default.6b914f9c.jpg | Bin 0 -> 20200 bytes .../admin-ui/static/img/light.c2aad012.svg | 1 + .../admin-ui/static/img/profile.b87e3d56.jpg | Bin 0 -> 7885 bytes .../main/resources/admin-ui/static/js/0.js | 72 +- .../main/resources/admin-ui/static/js/0.js.gz | Bin 6413 -> 3450 bytes .../main/resources/admin-ui/static/js/1.js | 342 +- .../main/resources/admin-ui/static/js/1.js.gz | Bin 36384 -> 4690 bytes .../main/resources/admin-ui/static/js/10.js | 224 +- .../resources/admin-ui/static/js/10.js.gz | Bin 9030 -> 9606 bytes .../main/resources/admin-ui/static/js/11.js | 154 +- .../resources/admin-ui/static/js/11.js.gz | Bin 3831 -> 7985 bytes .../main/resources/admin-ui/static/js/12.js | 140 +- .../resources/admin-ui/static/js/12.js.gz | Bin 8990 -> 6098 bytes .../main/resources/admin-ui/static/js/13.js | 108 +- .../resources/admin-ui/static/js/13.js.gz | Bin 4836 -> 7973 bytes .../main/resources/admin-ui/static/js/14.js | 96 +- .../resources/admin-ui/static/js/14.js.gz | Bin 6435 -> 4572 bytes .../main/resources/admin-ui/static/js/15.js | 98 +- .../resources/admin-ui/static/js/15.js.gz | Bin 5022 -> 6132 bytes .../main/resources/admin-ui/static/js/16.js | 90 +- .../resources/admin-ui/static/js/16.js.gz | Bin 5668 -> 6668 bytes .../main/resources/admin-ui/static/js/17.js | 5113 +------------ .../resources/admin-ui/static/js/17.js.gz | Bin 268982 -> 4546 bytes .../main/resources/admin-ui/static/js/18.js | 97 +- .../resources/admin-ui/static/js/18.js.gz | Bin 3293 -> 5210 bytes .../main/resources/admin-ui/static/js/19.js | 5956 ++++++++++++++- .../resources/admin-ui/static/js/19.js.gz | Bin 3236 -> 264814 bytes .../main/resources/admin-ui/static/js/2.js | 668 +- .../main/resources/admin-ui/static/js/2.js.gz | Bin 22093 -> 89847 bytes .../main/resources/admin-ui/static/js/20.js | 109 +- .../resources/admin-ui/static/js/20.js.gz | Bin 3060 -> 3171 bytes .../main/resources/admin-ui/static/js/21.js | 42 +- .../resources/admin-ui/static/js/21.js.gz | Bin 2599 -> 2869 bytes .../main/resources/admin-ui/static/js/22.js | 101 +- .../resources/admin-ui/static/js/22.js.gz | Bin 2601 -> 2463 bytes .../main/resources/admin-ui/static/js/23.js | 75 +- .../resources/admin-ui/static/js/23.js.gz | Bin 1191 -> 3788 bytes .../main/resources/admin-ui/static/js/24.js | 55 +- .../resources/admin-ui/static/js/24.js.gz | Bin 908 -> 2632 bytes .../main/resources/admin-ui/static/js/25.js | 55 +- .../resources/admin-ui/static/js/25.js.gz | Bin 1352 -> 3957 bytes .../main/resources/admin-ui/static/js/26.js | 30 +- .../resources/admin-ui/static/js/26.js.gz | Bin 2307 -> 1187 bytes .../main/resources/admin-ui/static/js/27.js | 10 +- .../resources/admin-ui/static/js/27.js.gz | Bin 1812 -> 600 bytes .../main/resources/admin-ui/static/js/28.js | 6 +- .../resources/admin-ui/static/js/28.js.gz | Bin 1812 -> 1124 bytes .../main/resources/admin-ui/static/js/29.js | 15 + .../resources/admin-ui/static/js/29.js.gz | Bin 0 -> 1791 bytes .../main/resources/admin-ui/static/js/3.js | 310 +- .../main/resources/admin-ui/static/js/3.js.gz | Bin 27259 -> 36378 bytes .../main/resources/admin-ui/static/js/30.js | 15 + .../resources/admin-ui/static/js/30.js.gz | Bin 0 -> 1791 bytes .../main/resources/admin-ui/static/js/4.js | 5969 +-------------- .../main/resources/admin-ui/static/js/4.js.gz | Bin 676901 -> 27260 bytes .../main/resources/admin-ui/static/js/5.js | 6427 +++++++++++++++-- .../main/resources/admin-ui/static/js/5.js.gz | Bin 165161 -> 676769 bytes .../main/resources/admin-ui/static/js/6.js | 1023 ++- .../main/resources/admin-ui/static/js/6.js.gz | Bin 22158 -> 164695 bytes .../main/resources/admin-ui/static/js/7.js | 413 +- .../main/resources/admin-ui/static/js/7.js.gz | Bin 10665 -> 21683 bytes .../main/resources/admin-ui/static/js/8.js | 407 +- .../main/resources/admin-ui/static/js/8.js.gz | Bin 11681 -> 10374 bytes .../main/resources/admin-ui/static/js/9.js | 311 +- .../main/resources/admin-ui/static/js/9.js.gz | Bin 10563 -> 10468 bytes .../main/resources/admin-ui/static/js/app.js | 2028 +++--- .../resources/admin-ui/static/js/app.js.gz | Bin 293504 -> 286209 bytes .../admin-ui/static/js/chunk-vendors.js | 1277 +++- .../admin-ui/static/js/chunk-vendors.js.gz | Bin 1112879 -> 1144269 bytes .../src/main/resources/application.yaml | 8 +- yudao-ui-admin-uniapp/api/login.js | 26 - .../verifition/verifyPoint/verifyPoint.vue | 14 +- .../verifition/verifySlider/verifySlider.vue | 8 +- yudao-ui-admin-vue3/pnpm-lock.yaml | 187 +- .../components/Verifition/src/api/index.ts | 6 +- .../src/components/Verifition/api/index.js | 6 +- 81 files changed, 17106 insertions(+), 15029 deletions(-) create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/captcha/CaptchaController.java create mode 100644 yudao-server/src/main/resources/admin-ui/static/img/401.fea349c2.gif create mode 100644 yudao-server/src/main/resources/admin-ui/static/img/404.fa349ddc.png create mode 100644 yudao-server/src/main/resources/admin-ui/static/img/bg.c05ff27e.png create mode 100644 yudao-server/src/main/resources/admin-ui/static/img/dark.16937467.svg create mode 100644 yudao-server/src/main/resources/admin-ui/static/img/default.6b914f9c.jpg create mode 100644 yudao-server/src/main/resources/admin-ui/static/img/light.c2aad012.svg create mode 100644 yudao-server/src/main/resources/admin-ui/static/img/profile.b87e3d56.jpg create mode 100644 yudao-server/src/main/resources/admin-ui/static/js/29.js create mode 100644 yudao-server/src/main/resources/admin-ui/static/js/29.js.gz create mode 100644 yudao-server/src/main/resources/admin-ui/static/js/30.js create mode 100644 yudao-server/src/main/resources/admin-ui/static/js/30.js.gz diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/captcha/CaptchaController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/captcha/CaptchaController.java new file mode 100644 index 0000000000..db2bc0cd47 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/captcha/CaptchaController.java @@ -0,0 +1,42 @@ +package cn.iocoder.yudao.module.system.controller.admin.captcha; + +import com.anji.captcha.model.common.ResponseModel; +import com.anji.captcha.model.vo.CaptchaVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.security.PermitAll; +import javax.servlet.http.HttpServletRequest; + +/** + * 验证码 + * + * 问题:为什么不直接使用 anji 提供的 CaptchaController,而要另外继承? + * 回答:管理使用 /admin-api/* 作为前缀,所以需要继承! + * + * @author 芋道源码 + */ +@Api(tags = "管理后台 - 验证码") +@RestController("adminCaptchaController") +@RequestMapping("/captcha") +public class CaptchaController extends com.anji.captcha.controller.CaptchaController { + + @PostMapping({"/get"}) + @ApiOperation("获得验证码") + @PermitAll + public ResponseModel get(@RequestBody CaptchaVO data, HttpServletRequest request) { + return super.get(data, request); + } + + @PostMapping({"/check"}) + @ApiOperation("校验验证码") + @PermitAll + public ResponseModel check(@RequestBody CaptchaVO data, HttpServletRequest request) { + return super.check(data, request); + } + +} diff --git a/yudao-server/src/main/resources/admin-ui/static/img/401.fea349c2.gif b/yudao-server/src/main/resources/admin-ui/static/img/401.fea349c2.gif new file mode 100644 index 0000000000000000000000000000000000000000..18bc461f6dc42ed1b9a4cfe06bef0f287fe05fc4 GIT binary patch literal 5580 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%0ARBW%k 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 \ No newline at end of file diff --git a/yudao-server/src/main/resources/admin-ui/static/img/default.6b914f9c.jpg b/yudao-server/src/main/resources/admin-ui/static/img/default.6b914f9c.jpg new file mode 100644 index 0000000000000000000000000000000000000000..aa0237bb9afb81a6080db11e085fc90632084a9a GIT binary patch literal 20200 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%0DhU#n?ioy`d|OqI_>#0 literal 0 HcmV?d00001 diff --git a/yudao-server/src/main/resources/admin-ui/static/img/light.c2aad012.svg b/yudao-server/src/main/resources/admin-ui/static/img/light.c2aad012.svg new file mode 100644 index 0000000000..424d35577b --- /dev/null +++ b/yudao-server/src/main/resources/admin-ui/static/img/light.c2aad012.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/yudao-server/src/main/resources/admin-ui/static/img/profile.b87e3d56.jpg b/yudao-server/src/main/resources/admin-ui/static/img/profile.b87e3d56.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e4bcf879884f76657292f2e792bf9efbb4090f63 GIT binary patch literal 7885 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 NvOP|&09Jii_#cBOpN9Yd literal 0 HcmV?d00001 diff --git a/yudao-server/src/main/resources/admin-ui/static/js/0.js b/yudao-server/src/main/resources/admin-ui/static/js/0.js index ee10ce46c4..9c855685fa 100644 --- a/yudao-server/src/main/resources/admin-ui/static/js/0.js +++ b/yudao-server/src/main/resources/admin-ui/static/js/0.js @@ -1,65 +1,5 @@ (window["webpackJsonp"] = window["webpackJsonp"] || []).push([[0],{ -/***/ "./node_modules/@vue/babel-helper-vue-jsx-merge-props/dist/helper.js": -/*!***************************************************************************!*\ - !*** ./node_modules/@vue/babel-helper-vue-jsx-merge-props/dist/helper.js ***! - \***************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("function _extends(){return _extends=Object.assign||function(a){for(var b,c=1;c#vi_Y*BGTzgDPJ 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 literal 6413 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 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n mouseDownHandler.call.apply(mouseDownHandler, [this, evt].concat(args));\n }\n };\n}\n// CONCATENATED MODULE: ./src/utils/scrollIntoView.js\nfunction scrollIntoView($scrollingEl, $focusedEl) {\n var scrollingReact = $scrollingEl.getBoundingClientRect();\n var focusedRect = $focusedEl.getBoundingClientRect();\n var overScroll = $focusedEl.offsetHeight / 3;\n\n if (focusedRect.bottom + overScroll > scrollingReact.bottom) {\n $scrollingEl.scrollTop = Math.min($focusedEl.offsetTop + $focusedEl.clientHeight - $scrollingEl.offsetHeight + overScroll, $scrollingEl.scrollHeight);\n } else if (focusedRect.top - overScroll < scrollingReact.top) {\n $scrollingEl.scrollTop = Math.max($focusedEl.offsetTop - overScroll, 0);\n }\n}\n// EXTERNAL MODULE: external \"lodash/debounce\"\nvar debounce_ = __webpack_require__(5);\nvar debounce_default = /*#__PURE__*/__webpack_require__.n(debounce_);\n\n// CONCATENATED MODULE: ./src/utils/debounce.js\n\n// EXTERNAL MODULE: external \"watch-size\"\nvar external_watch_size_ = __webpack_require__(6);\nvar external_watch_size_default = /*#__PURE__*/__webpack_require__.n(external_watch_size_);\n\n// CONCATENATED MODULE: ./src/utils/removeFromArray.js\nfunction removeFromArray(arr, elem) {\n var idx = arr.indexOf(elem);\n if (idx !== -1) arr.splice(idx, 1);\n}\n// CONCATENATED MODULE: ./src/utils/watchSize.js\n\n\nvar intervalId;\nvar registered = [];\nvar INTERVAL_DURATION = 100;\n\nfunction run() {\n intervalId = setInterval(function () {\n registered.forEach(test);\n }, INTERVAL_DURATION);\n}\n\nfunction stop() {\n clearInterval(intervalId);\n intervalId = null;\n}\n\nfunction test(item) {\n var $el = item.$el,\n listener = item.listener,\n lastWidth = item.lastWidth,\n lastHeight = item.lastHeight;\n var width = $el.offsetWidth;\n var height = $el.offsetHeight;\n\n if (lastWidth !== width || lastHeight !== height) {\n item.lastWidth = width;\n item.lastHeight = height;\n listener({\n width: width,\n height: height\n });\n }\n}\n\nfunction watchSizeForIE9($el, listener) {\n var item = {\n $el: $el,\n listener: listener,\n lastWidth: null,\n lastHeight: null\n };\n\n var unwatch = function unwatch() {\n removeFromArray(registered, item);\n if (!registered.length) stop();\n };\n\n registered.push(item);\n test(item);\n run();\n return unwatch;\n}\n\nfunction watchSize($el, listener) {\n var isIE9 = document.documentMode === 9;\n var locked = true;\n\n var wrappedListener = function wrappedListener() {\n return locked || listener.apply(void 0, arguments);\n };\n\n var implementation = isIE9 ? watchSizeForIE9 : external_watch_size_default.a;\n var removeSizeWatcher = implementation($el, wrappedListener);\n locked = false;\n return removeSizeWatcher;\n}\n// CONCATENATED MODULE: ./src/utils/setupResizeAndScrollEventListeners.js\nfunction findScrollParents($el) {\n var $scrollParents = [];\n var $parent = $el.parentNode;\n\n while ($parent && $parent.nodeName !== 'BODY' && $parent.nodeType === document.ELEMENT_NODE) {\n if (isScrollElment($parent)) $scrollParents.push($parent);\n $parent = $parent.parentNode;\n }\n\n $scrollParents.push(window);\n return $scrollParents;\n}\n\nfunction isScrollElment($el) {\n var _getComputedStyle = getComputedStyle($el),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /(auto|scroll|overlay)/.test(overflow + overflowY + overflowX);\n}\n\nfunction setupResizeAndScrollEventListeners($el, listener) {\n var $scrollParents = findScrollParents($el);\n window.addEventListener('resize', listener, {\n passive: true\n });\n $scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', listener, {\n passive: true\n });\n });\n return function removeEventListeners() {\n window.removeEventListener('resize', listener, {\n passive: true\n });\n $scrollParents.forEach(function ($scrollParent) {\n $scrollParent.removeEventListener('scroll', listener, {\n passive: true\n });\n });\n };\n}\n// CONCATENATED MODULE: ./src/utils/isNaN.js\nfunction isNaN_isNaN(x) {\n return x !== x;\n}\n// EXTERNAL MODULE: external \"is-promise\"\nvar external_is_promise_ = __webpack_require__(7);\nvar external_is_promise_default = /*#__PURE__*/__webpack_require__.n(external_is_promise_);\n\n// CONCATENATED MODULE: ./src/utils/isPromise.js\n\n// EXTERNAL MODULE: external \"lodash/once\"\nvar once_ = __webpack_require__(8);\nvar once_default = /*#__PURE__*/__webpack_require__.n(once_);\n\n// CONCATENATED MODULE: ./src/utils/once.js\n\n// EXTERNAL MODULE: external \"lodash/identity\"\nvar identity_ = __webpack_require__(9);\nvar identity_default = /*#__PURE__*/__webpack_require__.n(identity_);\n\n// CONCATENATED MODULE: ./src/utils/identity.js\n\n// EXTERNAL MODULE: external \"lodash/constant\"\nvar constant_ = __webpack_require__(10);\nvar constant_default = /*#__PURE__*/__webpack_require__.n(constant_);\n\n// CONCATENATED MODULE: ./src/utils/constant.js\n\n// CONCATENATED MODULE: ./src/utils/createMap.js\nvar createMap = function createMap() {\n return Object.create(null);\n};\n// EXTERNAL MODULE: external \"@babel/runtime/helpers/typeof\"\nvar typeof_ = __webpack_require__(11);\nvar typeof_default = /*#__PURE__*/__webpack_require__.n(typeof_);\n\n// CONCATENATED MODULE: ./src/utils/deepExtend.js\n\n\nfunction isPlainObject(value) {\n if (value == null || typeof_default()(value) !== 'object') return false;\n return Object.getPrototypeOf(value) === Object.prototype;\n}\n\nfunction copy(obj, key, value) {\n if (isPlainObject(value)) {\n obj[key] || (obj[key] = {});\n deepExtend(obj[key], value);\n } else {\n obj[key] = value;\n }\n}\n\nfunction deepExtend(target, source) {\n if (isPlainObject(source)) {\n var keys = Object.keys(source);\n\n for (var i = 0, len = keys.length; i < len; i++) {\n copy(target, keys[i], source[keys[i]]);\n }\n }\n\n return target;\n}\n// EXTERNAL MODULE: external \"lodash/last\"\nvar last_ = __webpack_require__(12);\nvar last_default = /*#__PURE__*/__webpack_require__.n(last_);\n\n// CONCATENATED MODULE: ./src/utils/last.js\n\n// CONCATENATED MODULE: ./src/utils/includes.js\nfunction includes(arrOrStr, elem) {\n return arrOrStr.indexOf(elem) !== -1;\n}\n// CONCATENATED MODULE: ./src/utils/find.js\nfunction find(arr, predicate, ctx) {\n for (var i = 0, len = arr.length; i < len; i++) {\n if (predicate.call(ctx, arr[i], i, arr)) return arr[i];\n }\n\n return undefined;\n}\n// CONCATENATED MODULE: ./src/utils/quickDiff.js\nfunction quickDiff(arrA, arrB) {\n if (arrA.length !== arrB.length) return true;\n\n for (var i = 0; i < arrA.length; i++) {\n if (arrA[i] !== arrB[i]) return true;\n }\n\n return false;\n}\n// CONCATENATED MODULE: ./src/utils/index.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// CONCATENATED MODULE: ./src/constants.js\nvar NO_PARENT_NODE = null;\nvar UNCHECKED = 0;\nvar INDETERMINATE = 1;\nvar CHECKED = 2;\nvar ALL_CHILDREN = 'ALL_CHILDREN';\nvar ALL_DESCENDANTS = 'ALL_DESCENDANTS';\nvar LEAF_CHILDREN = 'LEAF_CHILDREN';\nvar LEAF_DESCENDANTS = 'LEAF_DESCENDANTS';\nvar LOAD_ROOT_OPTIONS = 'LOAD_ROOT_OPTIONS';\nvar LOAD_CHILDREN_OPTIONS = 'LOAD_CHILDREN_OPTIONS';\nvar ASYNC_SEARCH = 'ASYNC_SEARCH';\nvar ALL = 'ALL';\nvar BRANCH_PRIORITY = 'BRANCH_PRIORITY';\nvar LEAF_PRIORITY = 'LEAF_PRIORITY';\nvar ALL_WITH_INDETERMINATE = 'ALL_WITH_INDETERMINATE';\nvar ORDER_SELECTED = 'ORDER_SELECTED';\nvar LEVEL = 'LEVEL';\nvar INDEX = 'INDEX';\nvar KEY_CODES = {\n BACKSPACE: 8,\n ENTER: 13,\n ESCAPE: 27,\n END: 35,\n HOME: 36,\n ARROW_LEFT: 37,\n ARROW_UP: 38,\n ARROW_RIGHT: 39,\n ARROW_DOWN: 40,\n DELETE: 46\n};\nvar INPUT_DEBOUNCE_DELAY = false ? undefined : 200;\nvar MIN_INPUT_WIDTH = 5;\nvar MENU_BUFFER = 40;\n// CONCATENATED MODULE: ./src/mixins/treeselectMixin.js\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { defineProperty_default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\n\nfunction sortValueByIndex(a, b) {\n var i = 0;\n\n do {\n if (a.level < i) return -1;\n if (b.level < i) return 1;\n if (a.index[i] !== b.index[i]) return a.index[i] - b.index[i];\n i++;\n } while (true);\n}\n\nfunction sortValueByLevel(a, b) {\n return a.level === b.level ? sortValueByIndex(a, b) : a.level - b.level;\n}\n\nfunction createAsyncOptionsStates() {\n return {\n isLoaded: false,\n isLoading: false,\n loadingError: ''\n };\n}\n\nfunction stringifyOptionPropValue(value) {\n if (typeof value === 'string') return value;\n if (typeof value === 'number' && !isNaN_isNaN(value)) return value + '';\n return '';\n}\n\nfunction match(enableFuzzyMatch, needle, haystack) {\n return enableFuzzyMatch ? external_fuzzysearch_default()(needle, haystack) : includes(haystack, needle);\n}\n\nfunction getErrorMessage(err) {\n return err.message || String(err);\n}\n\nvar instanceId = 0;\n/* harmony default export */ var treeselectMixin = ({\n provide: function provide() {\n return {\n instance: this\n };\n },\n props: {\n allowClearingDisabled: {\n type: Boolean,\n default: false\n },\n allowSelectingDisabledDescendants: {\n type: Boolean,\n default: false\n },\n alwaysOpen: {\n type: Boolean,\n default: false\n },\n appendToBody: {\n type: Boolean,\n default: false\n },\n async: {\n type: Boolean,\n default: false\n },\n autoFocus: {\n type: Boolean,\n default: false\n },\n autoLoadRootOptions: {\n type: Boolean,\n default: true\n },\n autoDeselectAncestors: {\n type: Boolean,\n default: false\n },\n autoDeselectDescendants: {\n type: Boolean,\n default: false\n },\n autoSelectAncestors: {\n type: Boolean,\n default: false\n },\n autoSelectDescendants: {\n type: Boolean,\n default: false\n },\n backspaceRemoves: {\n type: Boolean,\n default: true\n },\n beforeClearAll: {\n type: Function,\n default: constant_default()(true)\n },\n branchNodesFirst: {\n type: Boolean,\n default: false\n },\n cacheOptions: {\n type: Boolean,\n default: true\n },\n clearable: {\n type: Boolean,\n default: true\n },\n clearAllText: {\n type: String,\n default: 'Clear all'\n },\n clearOnSelect: {\n type: Boolean,\n default: false\n },\n clearValueText: {\n type: String,\n default: 'Clear value'\n },\n closeOnSelect: {\n type: Boolean,\n default: true\n },\n defaultExpandLevel: {\n type: Number,\n default: 0\n },\n defaultOptions: {\n default: false\n },\n deleteRemoves: {\n type: Boolean,\n default: true\n },\n delimiter: {\n type: String,\n default: ','\n },\n flattenSearchResults: {\n type: Boolean,\n default: false\n },\n disableBranchNodes: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n disableFuzzyMatching: {\n type: Boolean,\n default: false\n },\n flat: {\n type: Boolean,\n default: false\n },\n instanceId: {\n default: function _default() {\n return \"\".concat(instanceId++, \"$$\");\n },\n type: [String, Number]\n },\n joinValues: {\n type: Boolean,\n default: false\n },\n limit: {\n type: Number,\n default: Infinity\n },\n limitText: {\n type: Function,\n default: function limitTextDefault(count) {\n return \"and \".concat(count, \" more\");\n }\n },\n loadingText: {\n type: String,\n default: 'Loading...'\n },\n loadOptions: {\n type: Function\n },\n matchKeys: {\n type: Array,\n default: constant_default()(['label'])\n },\n maxHeight: {\n type: Number,\n default: 300\n },\n multiple: {\n type: Boolean,\n default: false\n },\n name: {\n type: String\n },\n noChildrenText: {\n type: String,\n default: 'No sub-options.'\n },\n noOptionsText: {\n type: String,\n default: 'No options available.'\n },\n noResultsText: {\n type: String,\n default: 'No results found...'\n },\n normalizer: {\n type: Function,\n default: identity_default.a\n },\n openDirection: {\n type: String,\n default: 'auto',\n validator: function validator(value) {\n var acceptableValues = ['auto', 'top', 'bottom', 'above', 'below'];\n return includes(acceptableValues, value);\n }\n },\n openOnClick: {\n type: Boolean,\n default: true\n },\n openOnFocus: {\n type: Boolean,\n default: false\n },\n options: {\n type: Array\n },\n placeholder: {\n type: String,\n default: 'Select...'\n },\n required: {\n type: Boolean,\n default: false\n },\n retryText: {\n type: String,\n default: 'Retry?'\n },\n retryTitle: {\n type: String,\n default: 'Click to retry'\n },\n searchable: {\n type: Boolean,\n default: true\n },\n searchNested: {\n type: Boolean,\n default: false\n },\n searchPromptText: {\n type: String,\n default: 'Type to search...'\n },\n showCount: {\n type: Boolean,\n default: false\n },\n showCountOf: {\n type: String,\n default: ALL_CHILDREN,\n validator: function validator(value) {\n var acceptableValues = [ALL_CHILDREN, ALL_DESCENDANTS, LEAF_CHILDREN, LEAF_DESCENDANTS];\n return includes(acceptableValues, value);\n }\n },\n showCountOnSearch: null,\n sortValueBy: {\n type: String,\n default: ORDER_SELECTED,\n validator: function validator(value) {\n var acceptableValues = [ORDER_SELECTED, LEVEL, INDEX];\n return includes(acceptableValues, value);\n }\n },\n tabIndex: {\n type: Number,\n default: 0\n },\n value: null,\n valueConsistsOf: {\n type: String,\n default: BRANCH_PRIORITY,\n validator: function validator(value) {\n var acceptableValues = [ALL, BRANCH_PRIORITY, LEAF_PRIORITY, ALL_WITH_INDETERMINATE];\n return includes(acceptableValues, value);\n }\n },\n valueFormat: {\n type: String,\n default: 'id'\n },\n zIndex: {\n type: [Number, String],\n default: 999\n }\n },\n data: function data() {\n return {\n trigger: {\n isFocused: false,\n searchQuery: ''\n },\n menu: {\n isOpen: false,\n current: null,\n lastScrollPosition: 0,\n placement: 'bottom'\n },\n forest: {\n normalizedOptions: [],\n nodeMap: createMap(),\n checkedStateMap: createMap(),\n selectedNodeIds: this.extractCheckedNodeIdsFromValue(),\n selectedNodeMap: createMap()\n },\n rootOptionsStates: createAsyncOptionsStates(),\n localSearch: {\n active: false,\n noResults: true,\n countMap: createMap()\n },\n remoteSearch: createMap()\n };\n },\n computed: {\n selectedNodes: function selectedNodes() {\n return this.forest.selectedNodeIds.map(this.getNode);\n },\n internalValue: function internalValue() {\n var _this = this;\n\n var internalValue;\n\n if (this.single || this.flat || this.disableBranchNodes || this.valueConsistsOf === ALL) {\n internalValue = this.forest.selectedNodeIds.slice();\n } else if (this.valueConsistsOf === BRANCH_PRIORITY) {\n internalValue = this.forest.selectedNodeIds.filter(function (id) {\n var node = _this.getNode(id);\n\n if (node.isRootNode) return true;\n return !_this.isSelected(node.parentNode);\n });\n } else if (this.valueConsistsOf === LEAF_PRIORITY) {\n internalValue = this.forest.selectedNodeIds.filter(function (id) {\n var node = _this.getNode(id);\n\n if (node.isLeaf) return true;\n return node.children.length === 0;\n });\n } else if (this.valueConsistsOf === ALL_WITH_INDETERMINATE) {\n var _internalValue;\n\n var indeterminateNodeIds = [];\n internalValue = this.forest.selectedNodeIds.slice();\n this.selectedNodes.forEach(function (selectedNode) {\n selectedNode.ancestors.forEach(function (ancestor) {\n if (includes(indeterminateNodeIds, ancestor.id)) return;\n if (includes(internalValue, ancestor.id)) return;\n indeterminateNodeIds.push(ancestor.id);\n });\n });\n\n (_internalValue = internalValue).push.apply(_internalValue, indeterminateNodeIds);\n }\n\n if (this.sortValueBy === LEVEL) {\n internalValue.sort(function (a, b) {\n return sortValueByLevel(_this.getNode(a), _this.getNode(b));\n });\n } else if (this.sortValueBy === INDEX) {\n internalValue.sort(function (a, b) {\n return sortValueByIndex(_this.getNode(a), _this.getNode(b));\n });\n }\n\n return internalValue;\n },\n hasValue: function hasValue() {\n return this.internalValue.length > 0;\n },\n single: function single() {\n return !this.multiple;\n },\n visibleOptionIds: function visibleOptionIds() {\n var _this2 = this;\n\n var visibleOptionIds = [];\n this.traverseAllNodesByIndex(function (node) {\n if (!_this2.localSearch.active || _this2.shouldOptionBeIncludedInSearchResult(node)) {\n visibleOptionIds.push(node.id);\n }\n\n if (node.isBranch && !_this2.shouldExpand(node)) {\n return false;\n }\n });\n return visibleOptionIds;\n },\n hasVisibleOptions: function hasVisibleOptions() {\n return this.visibleOptionIds.length !== 0;\n },\n showCountOnSearchComputed: function showCountOnSearchComputed() {\n return typeof this.showCountOnSearch === 'boolean' ? this.showCountOnSearch : this.showCount;\n },\n hasBranchNodes: function hasBranchNodes() {\n return this.forest.normalizedOptions.some(function (rootNode) {\n return rootNode.isBranch;\n });\n },\n shouldFlattenOptions: function shouldFlattenOptions() {\n return this.localSearch.active && this.flattenSearchResults;\n }\n },\n watch: {\n alwaysOpen: function alwaysOpen(newValue) {\n if (newValue) this.openMenu();else this.closeMenu();\n },\n branchNodesFirst: function branchNodesFirst() {\n this.initialize();\n },\n disabled: function disabled(newValue) {\n if (newValue && this.menu.isOpen) this.closeMenu();else if (!newValue && !this.menu.isOpen && this.alwaysOpen) this.openMenu();\n },\n flat: function flat() {\n this.initialize();\n },\n internalValue: function internalValue(newValue, oldValue) {\n var hasChanged = quickDiff(newValue, oldValue);\n if (hasChanged) this.$emit('input', this.getValue(), this.getInstanceId());\n },\n matchKeys: function matchKeys() {\n this.initialize();\n },\n multiple: function multiple(newValue) {\n if (newValue) this.buildForestState();\n },\n options: {\n handler: function handler() {\n if (this.async) return;\n this.initialize();\n this.rootOptionsStates.isLoaded = Array.isArray(this.options);\n },\n deep: true,\n immediate: true\n },\n 'trigger.searchQuery': function triggerSearchQuery() {\n if (this.async) {\n this.handleRemoteSearch();\n } else {\n this.handleLocalSearch();\n }\n\n this.$emit('search-change', this.trigger.searchQuery, this.getInstanceId());\n },\n value: function value() {\n var nodeIdsFromValue = this.extractCheckedNodeIdsFromValue();\n var hasChanged = quickDiff(nodeIdsFromValue, this.internalValue);\n if (hasChanged) this.fixSelectedNodeIds(nodeIdsFromValue);\n }\n },\n methods: {\n verifyProps: function verifyProps() {\n var _this3 = this;\n\n warning_warning(function () {\n return _this3.async ? _this3.searchable : true;\n }, function () {\n return 'For async search mode, the value of \"searchable\" prop must be true.';\n });\n\n if (this.options == null && !this.loadOptions) {\n warning_warning(function () {\n return false;\n }, function () {\n return 'Are you meant to dynamically load options? You need to use \"loadOptions\" prop.';\n });\n }\n\n if (this.flat) {\n warning_warning(function () {\n return _this3.multiple;\n }, function () {\n return 'You are using flat mode. But you forgot to add \"multiple=true\"?';\n });\n }\n\n if (!this.flat) {\n var propNames = ['autoSelectAncestors', 'autoSelectDescendants', 'autoDeselectAncestors', 'autoDeselectDescendants'];\n propNames.forEach(function (propName) {\n warning_warning(function () {\n return !_this3[propName];\n }, function () {\n return \"\\\"\".concat(propName, \"\\\" only applies to flat mode.\");\n });\n });\n }\n },\n resetFlags: function resetFlags() {\n this._blurOnSelect = false;\n },\n initialize: function initialize() {\n var options = this.async ? this.getRemoteSearchEntry().options : this.options;\n\n if (Array.isArray(options)) {\n var prevNodeMap = this.forest.nodeMap;\n this.forest.nodeMap = createMap();\n this.keepDataOfSelectedNodes(prevNodeMap);\n this.forest.normalizedOptions = this.normalize(NO_PARENT_NODE, options, prevNodeMap);\n this.fixSelectedNodeIds(this.internalValue);\n } else {\n this.forest.normalizedOptions = [];\n }\n },\n getInstanceId: function getInstanceId() {\n return this.instanceId == null ? this.id : this.instanceId;\n },\n getValue: function getValue() {\n var _this4 = this;\n\n if (this.valueFormat === 'id') {\n return this.multiple ? this.internalValue.slice() : this.internalValue[0];\n }\n\n var rawNodes = this.internalValue.map(function (id) {\n return _this4.getNode(id).raw;\n });\n return this.multiple ? rawNodes : rawNodes[0];\n },\n getNode: function getNode(nodeId) {\n warning_warning(function () {\n return nodeId != null;\n }, function () {\n return \"Invalid node id: \".concat(nodeId);\n });\n if (nodeId == null) return null;\n return nodeId in this.forest.nodeMap ? this.forest.nodeMap[nodeId] : this.createFallbackNode(nodeId);\n },\n createFallbackNode: function createFallbackNode(id) {\n var raw = this.extractNodeFromValue(id);\n var label = this.enhancedNormalizer(raw).label || \"\".concat(id, \" (unknown)\");\n var fallbackNode = {\n id: id,\n label: label,\n ancestors: [],\n parentNode: NO_PARENT_NODE,\n isFallbackNode: true,\n isRootNode: true,\n isLeaf: true,\n isBranch: false,\n isDisabled: false,\n isNew: false,\n index: [-1],\n level: 0,\n raw: raw\n };\n return this.$set(this.forest.nodeMap, id, fallbackNode);\n },\n extractCheckedNodeIdsFromValue: function extractCheckedNodeIdsFromValue() {\n var _this5 = this;\n\n if (this.value == null) return [];\n\n if (this.valueFormat === 'id') {\n return this.multiple ? this.value.slice() : [this.value];\n }\n\n return (this.multiple ? this.value : [this.value]).map(function (node) {\n return _this5.enhancedNormalizer(node);\n }).map(function (node) {\n return node.id;\n });\n },\n extractNodeFromValue: function extractNodeFromValue(id) {\n var _this6 = this;\n\n var defaultNode = {\n id: id\n };\n\n if (this.valueFormat === 'id') {\n return defaultNode;\n }\n\n var valueArray = this.multiple ? Array.isArray(this.value) ? this.value : [] : this.value ? [this.value] : [];\n var matched = find(valueArray, function (node) {\n return node && _this6.enhancedNormalizer(node).id === id;\n });\n return matched || defaultNode;\n },\n fixSelectedNodeIds: function fixSelectedNodeIds(nodeIdListOfPrevValue) {\n var _this7 = this;\n\n var nextSelectedNodeIds = [];\n\n if (this.single || this.flat || this.disableBranchNodes || this.valueConsistsOf === ALL) {\n nextSelectedNodeIds = nodeIdListOfPrevValue;\n } else if (this.valueConsistsOf === BRANCH_PRIORITY) {\n nodeIdListOfPrevValue.forEach(function (nodeId) {\n nextSelectedNodeIds.push(nodeId);\n\n var node = _this7.getNode(nodeId);\n\n if (node.isBranch) _this7.traverseDescendantsBFS(node, function (descendant) {\n nextSelectedNodeIds.push(descendant.id);\n });\n });\n } else if (this.valueConsistsOf === LEAF_PRIORITY) {\n var map = createMap();\n var queue = nodeIdListOfPrevValue.slice();\n\n while (queue.length) {\n var nodeId = queue.shift();\n var node = this.getNode(nodeId);\n nextSelectedNodeIds.push(nodeId);\n if (node.isRootNode) continue;\n if (!(node.parentNode.id in map)) map[node.parentNode.id] = node.parentNode.children.length;\n if (--map[node.parentNode.id] === 0) queue.push(node.parentNode.id);\n }\n } else if (this.valueConsistsOf === ALL_WITH_INDETERMINATE) {\n var _map = createMap();\n\n var _queue = nodeIdListOfPrevValue.filter(function (nodeId) {\n var node = _this7.getNode(nodeId);\n\n return node.isLeaf || node.children.length === 0;\n });\n\n while (_queue.length) {\n var _nodeId = _queue.shift();\n\n var _node = this.getNode(_nodeId);\n\n nextSelectedNodeIds.push(_nodeId);\n if (_node.isRootNode) continue;\n if (!(_node.parentNode.id in _map)) _map[_node.parentNode.id] = _node.parentNode.children.length;\n if (--_map[_node.parentNode.id] === 0) _queue.push(_node.parentNode.id);\n }\n }\n\n var hasChanged = quickDiff(this.forest.selectedNodeIds, nextSelectedNodeIds);\n if (hasChanged) this.forest.selectedNodeIds = nextSelectedNodeIds;\n this.buildForestState();\n },\n keepDataOfSelectedNodes: function keepDataOfSelectedNodes(prevNodeMap) {\n var _this8 = this;\n\n this.forest.selectedNodeIds.forEach(function (id) {\n if (!prevNodeMap[id]) return;\n\n var node = _objectSpread({}, prevNodeMap[id], {\n isFallbackNode: true\n });\n\n _this8.$set(_this8.forest.nodeMap, id, node);\n });\n },\n isSelected: function isSelected(node) {\n return this.forest.selectedNodeMap[node.id] === true;\n },\n traverseDescendantsBFS: function traverseDescendantsBFS(parentNode, callback) {\n if (!parentNode.isBranch) return;\n var queue = parentNode.children.slice();\n\n while (queue.length) {\n var currNode = queue[0];\n if (currNode.isBranch) queue.push.apply(queue, toConsumableArray_default()(currNode.children));\n callback(currNode);\n queue.shift();\n }\n },\n traverseDescendantsDFS: function traverseDescendantsDFS(parentNode, callback) {\n var _this9 = this;\n\n if (!parentNode.isBranch) return;\n parentNode.children.forEach(function (child) {\n _this9.traverseDescendantsDFS(child, callback);\n\n callback(child);\n });\n },\n traverseAllNodesDFS: function traverseAllNodesDFS(callback) {\n var _this10 = this;\n\n this.forest.normalizedOptions.forEach(function (rootNode) {\n _this10.traverseDescendantsDFS(rootNode, callback);\n\n callback(rootNode);\n });\n },\n traverseAllNodesByIndex: function traverseAllNodesByIndex(callback) {\n var walk = function walk(parentNode) {\n parentNode.children.forEach(function (child) {\n if (callback(child) !== false && child.isBranch) {\n walk(child);\n }\n });\n };\n\n walk({\n children: this.forest.normalizedOptions\n });\n },\n toggleClickOutsideEvent: function toggleClickOutsideEvent(enabled) {\n if (enabled) {\n document.addEventListener('mousedown', this.handleClickOutside, false);\n } else {\n document.removeEventListener('mousedown', this.handleClickOutside, false);\n }\n },\n getValueContainer: function getValueContainer() {\n return this.$refs.control.$refs['value-container'];\n },\n getInput: function getInput() {\n return this.getValueContainer().$refs.input;\n },\n focusInput: function focusInput() {\n this.getInput().focus();\n },\n blurInput: function blurInput() {\n this.getInput().blur();\n },\n handleMouseDown: onLeftClick(function handleMouseDown(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n if (this.disabled) return;\n var isClickedOnValueContainer = this.getValueContainer().$el.contains(evt.target);\n\n if (isClickedOnValueContainer && !this.menu.isOpen && (this.openOnClick || this.trigger.isFocused)) {\n this.openMenu();\n }\n\n if (this._blurOnSelect) {\n this.blurInput();\n } else {\n this.focusInput();\n }\n\n this.resetFlags();\n }),\n handleClickOutside: function handleClickOutside(evt) {\n if (this.$refs.wrapper && !this.$refs.wrapper.contains(evt.target)) {\n this.blurInput();\n this.closeMenu();\n }\n },\n handleLocalSearch: function handleLocalSearch() {\n var _this11 = this;\n\n var searchQuery = this.trigger.searchQuery;\n\n var done = function done() {\n return _this11.resetHighlightedOptionWhenNecessary(true);\n };\n\n if (!searchQuery) {\n this.localSearch.active = false;\n return done();\n }\n\n this.localSearch.active = true;\n this.localSearch.noResults = true;\n this.traverseAllNodesDFS(function (node) {\n if (node.isBranch) {\n var _this11$$set;\n\n node.isExpandedOnSearch = false;\n node.showAllChildrenOnSearch = false;\n node.isMatched = false;\n node.hasMatchedDescendants = false;\n\n _this11.$set(_this11.localSearch.countMap, node.id, (_this11$$set = {}, defineProperty_default()(_this11$$set, ALL_CHILDREN, 0), defineProperty_default()(_this11$$set, ALL_DESCENDANTS, 0), defineProperty_default()(_this11$$set, LEAF_CHILDREN, 0), defineProperty_default()(_this11$$set, LEAF_DESCENDANTS, 0), _this11$$set));\n }\n });\n var lowerCasedSearchQuery = searchQuery.trim().toLocaleLowerCase();\n var splitSearchQuery = lowerCasedSearchQuery.replace(/\\s+/g, ' ').split(' ');\n this.traverseAllNodesDFS(function (node) {\n if (_this11.searchNested && splitSearchQuery.length > 1) {\n node.isMatched = splitSearchQuery.every(function (filterValue) {\n return match(false, filterValue, node.nestedSearchLabel);\n });\n } else {\n node.isMatched = _this11.matchKeys.some(function (matchKey) {\n return match(!_this11.disableFuzzyMatching, lowerCasedSearchQuery, node.lowerCased[matchKey]);\n });\n }\n\n if (node.isMatched) {\n _this11.localSearch.noResults = false;\n node.ancestors.forEach(function (ancestor) {\n return _this11.localSearch.countMap[ancestor.id][ALL_DESCENDANTS]++;\n });\n if (node.isLeaf) node.ancestors.forEach(function (ancestor) {\n return _this11.localSearch.countMap[ancestor.id][LEAF_DESCENDANTS]++;\n });\n\n if (node.parentNode !== NO_PARENT_NODE) {\n _this11.localSearch.countMap[node.parentNode.id][ALL_CHILDREN] += 1;\n if (node.isLeaf) _this11.localSearch.countMap[node.parentNode.id][LEAF_CHILDREN] += 1;\n }\n }\n\n if ((node.isMatched || node.isBranch && node.isExpandedOnSearch) && node.parentNode !== NO_PARENT_NODE) {\n node.parentNode.isExpandedOnSearch = true;\n node.parentNode.hasMatchedDescendants = true;\n }\n });\n done();\n },\n handleRemoteSearch: function handleRemoteSearch() {\n var _this12 = this;\n\n var searchQuery = this.trigger.searchQuery;\n var entry = this.getRemoteSearchEntry();\n\n var done = function done() {\n _this12.initialize();\n\n _this12.resetHighlightedOptionWhenNecessary(true);\n };\n\n if ((searchQuery === '' || this.cacheOptions) && entry.isLoaded) {\n return done();\n }\n\n this.callLoadOptionsProp({\n action: ASYNC_SEARCH,\n args: {\n searchQuery: searchQuery\n },\n isPending: function isPending() {\n return entry.isLoading;\n },\n start: function start() {\n entry.isLoading = true;\n entry.isLoaded = false;\n entry.loadingError = '';\n },\n succeed: function succeed(options) {\n entry.isLoaded = true;\n entry.options = options;\n if (_this12.trigger.searchQuery === searchQuery) done();\n },\n fail: function fail(err) {\n entry.loadingError = getErrorMessage(err);\n },\n end: function end() {\n entry.isLoading = false;\n }\n });\n },\n getRemoteSearchEntry: function getRemoteSearchEntry() {\n var _this13 = this;\n\n var searchQuery = this.trigger.searchQuery;\n\n var entry = this.remoteSearch[searchQuery] || _objectSpread({}, createAsyncOptionsStates(), {\n options: []\n });\n\n this.$watch(function () {\n return entry.options;\n }, function () {\n if (_this13.trigger.searchQuery === searchQuery) _this13.initialize();\n }, {\n deep: true\n });\n\n if (searchQuery === '') {\n if (Array.isArray(this.defaultOptions)) {\n entry.options = this.defaultOptions;\n entry.isLoaded = true;\n return entry;\n } else if (this.defaultOptions !== true) {\n entry.isLoaded = true;\n return entry;\n }\n }\n\n if (!this.remoteSearch[searchQuery]) {\n this.$set(this.remoteSearch, searchQuery, entry);\n }\n\n return entry;\n },\n shouldExpand: function shouldExpand(node) {\n return this.localSearch.active ? node.isExpandedOnSearch : node.isExpanded;\n },\n shouldOptionBeIncludedInSearchResult: function shouldOptionBeIncludedInSearchResult(node) {\n if (node.isMatched) return true;\n if (node.isBranch && node.hasMatchedDescendants && !this.flattenSearchResults) return true;\n if (!node.isRootNode && node.parentNode.showAllChildrenOnSearch) return true;\n return false;\n },\n shouldShowOptionInMenu: function shouldShowOptionInMenu(node) {\n if (this.localSearch.active && !this.shouldOptionBeIncludedInSearchResult(node)) {\n return false;\n }\n\n return true;\n },\n getControl: function getControl() {\n return this.$refs.control.$el;\n },\n getMenu: function getMenu() {\n var ref = this.appendToBody ? this.$refs.portal.portalTarget : this;\n var $menu = ref.$refs.menu.$refs.menu;\n return $menu && $menu.nodeName !== '#comment' ? $menu : null;\n },\n setCurrentHighlightedOption: function setCurrentHighlightedOption(node) {\n var _this14 = this;\n\n var scroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var prev = this.menu.current;\n\n if (prev != null && prev in this.forest.nodeMap) {\n this.forest.nodeMap[prev].isHighlighted = false;\n }\n\n this.menu.current = node.id;\n node.isHighlighted = true;\n\n if (this.menu.isOpen && scroll) {\n var scrollToOption = function scrollToOption() {\n var $menu = _this14.getMenu();\n\n var $option = $menu.querySelector(\".vue-treeselect__option[data-id=\\\"\".concat(node.id, \"\\\"]\"));\n if ($option) scrollIntoView($menu, $option);\n };\n\n if (this.getMenu()) {\n scrollToOption();\n } else {\n this.$nextTick(scrollToOption);\n }\n }\n },\n resetHighlightedOptionWhenNecessary: function resetHighlightedOptionWhenNecessary() {\n var forceReset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var current = this.menu.current;\n\n if (forceReset || current == null || !(current in this.forest.nodeMap) || !this.shouldShowOptionInMenu(this.getNode(current))) {\n this.highlightFirstOption();\n }\n },\n highlightFirstOption: function highlightFirstOption() {\n if (!this.hasVisibleOptions) return;\n var first = this.visibleOptionIds[0];\n this.setCurrentHighlightedOption(this.getNode(first));\n },\n highlightPrevOption: function highlightPrevOption() {\n if (!this.hasVisibleOptions) return;\n var prev = this.visibleOptionIds.indexOf(this.menu.current) - 1;\n if (prev === -1) return this.highlightLastOption();\n this.setCurrentHighlightedOption(this.getNode(this.visibleOptionIds[prev]));\n },\n highlightNextOption: function highlightNextOption() {\n if (!this.hasVisibleOptions) return;\n var next = this.visibleOptionIds.indexOf(this.menu.current) + 1;\n if (next === this.visibleOptionIds.length) return this.highlightFirstOption();\n this.setCurrentHighlightedOption(this.getNode(this.visibleOptionIds[next]));\n },\n highlightLastOption: function highlightLastOption() {\n if (!this.hasVisibleOptions) return;\n var last = last_default()(this.visibleOptionIds);\n this.setCurrentHighlightedOption(this.getNode(last));\n },\n resetSearchQuery: function resetSearchQuery() {\n this.trigger.searchQuery = '';\n },\n closeMenu: function closeMenu() {\n if (!this.menu.isOpen || !this.disabled && this.alwaysOpen) return;\n this.saveMenuScrollPosition();\n this.menu.isOpen = false;\n this.toggleClickOutsideEvent(false);\n this.resetSearchQuery();\n this.$emit('close', this.getValue(), this.getInstanceId());\n },\n openMenu: function openMenu() {\n if (this.disabled || this.menu.isOpen) return;\n this.menu.isOpen = true;\n this.$nextTick(this.resetHighlightedOptionWhenNecessary);\n this.$nextTick(this.restoreMenuScrollPosition);\n if (!this.options && !this.async) this.loadRootOptions();\n this.toggleClickOutsideEvent(true);\n this.$emit('open', this.getInstanceId());\n },\n toggleMenu: function toggleMenu() {\n if (this.menu.isOpen) {\n this.closeMenu();\n } else {\n this.openMenu();\n }\n },\n toggleExpanded: function toggleExpanded(node) {\n var nextState;\n\n if (this.localSearch.active) {\n nextState = node.isExpandedOnSearch = !node.isExpandedOnSearch;\n if (nextState) node.showAllChildrenOnSearch = true;\n } else {\n nextState = node.isExpanded = !node.isExpanded;\n }\n\n if (nextState && !node.childrenStates.isLoaded) {\n this.loadChildrenOptions(node);\n }\n },\n buildForestState: function buildForestState() {\n var _this15 = this;\n\n var selectedNodeMap = createMap();\n this.forest.selectedNodeIds.forEach(function (selectedNodeId) {\n selectedNodeMap[selectedNodeId] = true;\n });\n this.forest.selectedNodeMap = selectedNodeMap;\n var checkedStateMap = createMap();\n\n if (this.multiple) {\n this.traverseAllNodesByIndex(function (node) {\n checkedStateMap[node.id] = UNCHECKED;\n });\n this.selectedNodes.forEach(function (selectedNode) {\n checkedStateMap[selectedNode.id] = CHECKED;\n\n if (!_this15.flat && !_this15.disableBranchNodes) {\n selectedNode.ancestors.forEach(function (ancestorNode) {\n if (!_this15.isSelected(ancestorNode)) {\n checkedStateMap[ancestorNode.id] = INDETERMINATE;\n }\n });\n }\n });\n }\n\n this.forest.checkedStateMap = checkedStateMap;\n },\n enhancedNormalizer: function enhancedNormalizer(raw) {\n return _objectSpread({}, raw, {}, this.normalizer(raw, this.getInstanceId()));\n },\n normalize: function normalize(parentNode, nodes, prevNodeMap) {\n var _this16 = this;\n\n var normalizedOptions = nodes.map(function (node) {\n return [_this16.enhancedNormalizer(node), node];\n }).map(function (_ref, index) {\n var _ref2 = slicedToArray_default()(_ref, 2),\n node = _ref2[0],\n raw = _ref2[1];\n\n _this16.checkDuplication(node);\n\n _this16.verifyNodeShape(node);\n\n var id = node.id,\n label = node.label,\n children = node.children,\n isDefaultExpanded = node.isDefaultExpanded;\n var isRootNode = parentNode === NO_PARENT_NODE;\n var level = isRootNode ? 0 : parentNode.level + 1;\n var isBranch = Array.isArray(children) || children === null;\n var isLeaf = !isBranch;\n var isDisabled = !!node.isDisabled || !_this16.flat && !isRootNode && parentNode.isDisabled;\n var isNew = !!node.isNew;\n\n var lowerCased = _this16.matchKeys.reduce(function (prev, key) {\n return _objectSpread({}, prev, defineProperty_default()({}, key, stringifyOptionPropValue(node[key]).toLocaleLowerCase()));\n }, {});\n\n var nestedSearchLabel = isRootNode ? lowerCased.label : parentNode.nestedSearchLabel + ' ' + lowerCased.label;\n\n var normalized = _this16.$set(_this16.forest.nodeMap, id, createMap());\n\n _this16.$set(normalized, 'id', id);\n\n _this16.$set(normalized, 'label', label);\n\n _this16.$set(normalized, 'level', level);\n\n _this16.$set(normalized, 'ancestors', isRootNode ? [] : [parentNode].concat(parentNode.ancestors));\n\n _this16.$set(normalized, 'index', (isRootNode ? [] : parentNode.index).concat(index));\n\n _this16.$set(normalized, 'parentNode', parentNode);\n\n _this16.$set(normalized, 'lowerCased', lowerCased);\n\n _this16.$set(normalized, 'nestedSearchLabel', nestedSearchLabel);\n\n _this16.$set(normalized, 'isDisabled', isDisabled);\n\n _this16.$set(normalized, 'isNew', isNew);\n\n _this16.$set(normalized, 'isMatched', false);\n\n _this16.$set(normalized, 'isHighlighted', false);\n\n _this16.$set(normalized, 'isBranch', isBranch);\n\n _this16.$set(normalized, 'isLeaf', isLeaf);\n\n _this16.$set(normalized, 'isRootNode', isRootNode);\n\n _this16.$set(normalized, 'raw', raw);\n\n if (isBranch) {\n var _this16$$set;\n\n var isLoaded = Array.isArray(children);\n\n _this16.$set(normalized, 'childrenStates', _objectSpread({}, createAsyncOptionsStates(), {\n isLoaded: isLoaded\n }));\n\n _this16.$set(normalized, 'isExpanded', typeof isDefaultExpanded === 'boolean' ? isDefaultExpanded : level < _this16.defaultExpandLevel);\n\n _this16.$set(normalized, 'hasMatchedDescendants', false);\n\n _this16.$set(normalized, 'hasDisabledDescendants', false);\n\n _this16.$set(normalized, 'isExpandedOnSearch', false);\n\n _this16.$set(normalized, 'showAllChildrenOnSearch', false);\n\n _this16.$set(normalized, 'count', (_this16$$set = {}, defineProperty_default()(_this16$$set, ALL_CHILDREN, 0), defineProperty_default()(_this16$$set, ALL_DESCENDANTS, 0), defineProperty_default()(_this16$$set, LEAF_CHILDREN, 0), defineProperty_default()(_this16$$set, LEAF_DESCENDANTS, 0), _this16$$set));\n\n _this16.$set(normalized, 'children', isLoaded ? _this16.normalize(normalized, children, prevNodeMap) : []);\n\n if (isDefaultExpanded === true) normalized.ancestors.forEach(function (ancestor) {\n ancestor.isExpanded = true;\n });\n\n if (!isLoaded && typeof _this16.loadOptions !== 'function') {\n warning_warning(function () {\n return false;\n }, function () {\n return 'Unloaded branch node detected. \"loadOptions\" prop is required to load its children.';\n });\n } else if (!isLoaded && normalized.isExpanded) {\n _this16.loadChildrenOptions(normalized);\n }\n }\n\n normalized.ancestors.forEach(function (ancestor) {\n return ancestor.count[ALL_DESCENDANTS]++;\n });\n if (isLeaf) normalized.ancestors.forEach(function (ancestor) {\n return ancestor.count[LEAF_DESCENDANTS]++;\n });\n\n if (!isRootNode) {\n parentNode.count[ALL_CHILDREN] += 1;\n if (isLeaf) parentNode.count[LEAF_CHILDREN] += 1;\n if (isDisabled) parentNode.hasDisabledDescendants = true;\n }\n\n if (prevNodeMap && prevNodeMap[id]) {\n var prev = prevNodeMap[id];\n normalized.isMatched = prev.isMatched;\n normalized.showAllChildrenOnSearch = prev.showAllChildrenOnSearch;\n normalized.isHighlighted = prev.isHighlighted;\n\n if (prev.isBranch && normalized.isBranch) {\n normalized.isExpanded = prev.isExpanded;\n normalized.isExpandedOnSearch = prev.isExpandedOnSearch;\n\n if (prev.childrenStates.isLoaded && !normalized.childrenStates.isLoaded) {\n normalized.isExpanded = false;\n } else {\n normalized.childrenStates = _objectSpread({}, prev.childrenStates);\n }\n }\n }\n\n return normalized;\n });\n\n if (this.branchNodesFirst) {\n var branchNodes = normalizedOptions.filter(function (option) {\n return option.isBranch;\n });\n var leafNodes = normalizedOptions.filter(function (option) {\n return option.isLeaf;\n });\n normalizedOptions = branchNodes.concat(leafNodes);\n }\n\n return normalizedOptions;\n },\n loadRootOptions: function loadRootOptions() {\n var _this17 = this;\n\n this.callLoadOptionsProp({\n action: LOAD_ROOT_OPTIONS,\n isPending: function isPending() {\n return _this17.rootOptionsStates.isLoading;\n },\n start: function start() {\n _this17.rootOptionsStates.isLoading = true;\n _this17.rootOptionsStates.loadingError = '';\n },\n succeed: function succeed() {\n _this17.rootOptionsStates.isLoaded = true;\n\n _this17.$nextTick(function () {\n _this17.resetHighlightedOptionWhenNecessary(true);\n });\n },\n fail: function fail(err) {\n _this17.rootOptionsStates.loadingError = getErrorMessage(err);\n },\n end: function end() {\n _this17.rootOptionsStates.isLoading = false;\n }\n });\n },\n loadChildrenOptions: function loadChildrenOptions(parentNode) {\n var _this18 = this;\n\n var id = parentNode.id,\n raw = parentNode.raw;\n this.callLoadOptionsProp({\n action: LOAD_CHILDREN_OPTIONS,\n args: {\n parentNode: raw\n },\n isPending: function isPending() {\n return _this18.getNode(id).childrenStates.isLoading;\n },\n start: function start() {\n _this18.getNode(id).childrenStates.isLoading = true;\n _this18.getNode(id).childrenStates.loadingError = '';\n },\n succeed: function succeed() {\n _this18.getNode(id).childrenStates.isLoaded = true;\n },\n fail: function fail(err) {\n _this18.getNode(id).childrenStates.loadingError = getErrorMessage(err);\n },\n end: function end() {\n _this18.getNode(id).childrenStates.isLoading = false;\n }\n });\n },\n callLoadOptionsProp: function callLoadOptionsProp(_ref3) {\n var action = _ref3.action,\n args = _ref3.args,\n isPending = _ref3.isPending,\n start = _ref3.start,\n succeed = _ref3.succeed,\n fail = _ref3.fail,\n end = _ref3.end;\n\n if (!this.loadOptions || isPending()) {\n return;\n }\n\n start();\n var callback = once_default()(function (err, result) {\n if (err) {\n fail(err);\n } else {\n succeed(result);\n }\n\n end();\n });\n var result = this.loadOptions(_objectSpread({\n id: this.getInstanceId(),\n instanceId: this.getInstanceId(),\n action: action\n }, args, {\n callback: callback\n }));\n\n if (external_is_promise_default()(result)) {\n result.then(function () {\n callback();\n }, function (err) {\n callback(err);\n }).catch(function (err) {\n console.error(err);\n });\n }\n },\n checkDuplication: function checkDuplication(node) {\n var _this19 = this;\n\n warning_warning(function () {\n return !(node.id in _this19.forest.nodeMap && !_this19.forest.nodeMap[node.id].isFallbackNode);\n }, function () {\n return \"Detected duplicate presence of node id \".concat(JSON.stringify(node.id), \". \") + \"Their labels are \\\"\".concat(_this19.forest.nodeMap[node.id].label, \"\\\" and \\\"\").concat(node.label, \"\\\" respectively.\");\n });\n },\n verifyNodeShape: function verifyNodeShape(node) {\n warning_warning(function () {\n return !(node.children === undefined && node.isBranch === true);\n }, function () {\n return 'Are you meant to declare an unloaded branch node? ' + '`isBranch: true` is no longer supported, please use `children: null` instead.';\n });\n },\n select: function select(node) {\n if (this.disabled || node.isDisabled) {\n return;\n }\n\n if (this.single) {\n this.clear();\n }\n\n var nextState = this.multiple && !this.flat ? this.forest.checkedStateMap[node.id] === UNCHECKED : !this.isSelected(node);\n\n if (nextState) {\n this._selectNode(node);\n } else {\n this._deselectNode(node);\n }\n\n this.buildForestState();\n\n if (nextState) {\n this.$emit('select', node.raw, this.getInstanceId());\n } else {\n this.$emit('deselect', node.raw, this.getInstanceId());\n }\n\n if (this.localSearch.active && nextState && (this.single || this.clearOnSelect)) {\n this.resetSearchQuery();\n }\n\n if (this.single && this.closeOnSelect) {\n this.closeMenu();\n\n if (this.searchable) {\n this._blurOnSelect = true;\n }\n }\n },\n clear: function clear() {\n var _this20 = this;\n\n if (this.hasValue) {\n if (this.single || this.allowClearingDisabled) {\n this.forest.selectedNodeIds = [];\n } else {\n this.forest.selectedNodeIds = this.forest.selectedNodeIds.filter(function (nodeId) {\n return _this20.getNode(nodeId).isDisabled;\n });\n }\n\n this.buildForestState();\n }\n },\n _selectNode: function _selectNode(node) {\n var _this21 = this;\n\n if (this.single || this.disableBranchNodes) {\n return this.addValue(node);\n }\n\n if (this.flat) {\n this.addValue(node);\n\n if (this.autoSelectAncestors) {\n node.ancestors.forEach(function (ancestor) {\n if (!_this21.isSelected(ancestor) && !ancestor.isDisabled) _this21.addValue(ancestor);\n });\n } else if (this.autoSelectDescendants) {\n this.traverseDescendantsBFS(node, function (descendant) {\n if (!_this21.isSelected(descendant) && !descendant.isDisabled) _this21.addValue(descendant);\n });\n }\n\n return;\n }\n\n var isFullyChecked = node.isLeaf || !node.hasDisabledDescendants || this.allowSelectingDisabledDescendants;\n\n if (isFullyChecked) {\n this.addValue(node);\n }\n\n if (node.isBranch) {\n this.traverseDescendantsBFS(node, function (descendant) {\n if (!descendant.isDisabled || _this21.allowSelectingDisabledDescendants) {\n _this21.addValue(descendant);\n }\n });\n }\n\n if (isFullyChecked) {\n var curr = node;\n\n while ((curr = curr.parentNode) !== NO_PARENT_NODE) {\n if (curr.children.every(this.isSelected)) this.addValue(curr);else break;\n }\n }\n },\n _deselectNode: function _deselectNode(node) {\n var _this22 = this;\n\n if (this.disableBranchNodes) {\n return this.removeValue(node);\n }\n\n if (this.flat) {\n this.removeValue(node);\n\n if (this.autoDeselectAncestors) {\n node.ancestors.forEach(function (ancestor) {\n if (_this22.isSelected(ancestor) && !ancestor.isDisabled) _this22.removeValue(ancestor);\n });\n } else if (this.autoDeselectDescendants) {\n this.traverseDescendantsBFS(node, function (descendant) {\n if (_this22.isSelected(descendant) && !descendant.isDisabled) _this22.removeValue(descendant);\n });\n }\n\n return;\n }\n\n var hasUncheckedSomeDescendants = false;\n\n if (node.isBranch) {\n this.traverseDescendantsDFS(node, function (descendant) {\n if (!descendant.isDisabled || _this22.allowSelectingDisabledDescendants) {\n _this22.removeValue(descendant);\n\n hasUncheckedSomeDescendants = true;\n }\n });\n }\n\n if (node.isLeaf || hasUncheckedSomeDescendants || node.children.length === 0) {\n this.removeValue(node);\n var curr = node;\n\n while ((curr = curr.parentNode) !== NO_PARENT_NODE) {\n if (this.isSelected(curr)) this.removeValue(curr);else break;\n }\n }\n },\n addValue: function addValue(node) {\n this.forest.selectedNodeIds.push(node.id);\n this.forest.selectedNodeMap[node.id] = true;\n },\n removeValue: function removeValue(node) {\n removeFromArray(this.forest.selectedNodeIds, node.id);\n delete this.forest.selectedNodeMap[node.id];\n },\n removeLastValue: function removeLastValue() {\n if (!this.hasValue) return;\n if (this.single) return this.clear();\n var lastValue = last_default()(this.internalValue);\n var lastSelectedNode = this.getNode(lastValue);\n this.select(lastSelectedNode);\n },\n saveMenuScrollPosition: function saveMenuScrollPosition() {\n var $menu = this.getMenu();\n if ($menu) this.menu.lastScrollPosition = $menu.scrollTop;\n },\n restoreMenuScrollPosition: function restoreMenuScrollPosition() {\n var $menu = this.getMenu();\n if ($menu) $menu.scrollTop = this.menu.lastScrollPosition;\n }\n },\n created: function created() {\n this.verifyProps();\n this.resetFlags();\n },\n mounted: function mounted() {\n if (this.autoFocus) this.focusInput();\n if (!this.options && !this.async && this.autoLoadRootOptions) this.loadRootOptions();\n if (this.alwaysOpen) this.openMenu();\n if (this.async && this.defaultOptions) this.handleRemoteSearch();\n },\n destroyed: function destroyed() {\n this.toggleClickOutsideEvent(false);\n }\n});\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/HiddenFields.vue?vue&type=script&lang=js&\n\n\nfunction stringifyValue(value) {\n if (typeof value === 'string') return value;\n if (value != null && !isNaN_isNaN(value)) return JSON.stringify(value);\n return '';\n}\n\n/* harmony default export */ var HiddenFieldsvue_type_script_lang_js_ = ({\n name: 'vue-treeselect--hidden-fields',\n inject: ['instance'],\n functional: true,\n render: function render(_, context) {\n var h = arguments[0];\n var instance = context.injections.instance;\n if (!instance.name || instance.disabled || !instance.hasValue) return null;\n var stringifiedValues = instance.internalValue.map(stringifyValue);\n if (instance.multiple && instance.joinValues) stringifiedValues = [stringifiedValues.join(instance.delimiter)];\n return stringifiedValues.map(function (stringifiedValue, i) {\n return h(\"input\", {\n attrs: {\n type: \"hidden\",\n name: instance.name\n },\n domProps: {\n \"value\": stringifiedValue\n },\n key: 'hidden-field-' + i\n });\n });\n }\n});\n// CONCATENATED MODULE: ./src/components/HiddenFields.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_HiddenFieldsvue_type_script_lang_js_ = (HiddenFieldsvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n// CONCATENATED MODULE: ./src/components/HiddenFields.vue\nvar HiddenFields_render, staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar component = normalizeComponent(\n components_HiddenFieldsvue_type_script_lang_js_,\n HiddenFields_render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/HiddenFields.vue\"\n/* harmony default export */ var HiddenFields = (component.exports);\n// EXTERNAL MODULE: external \"babel-helper-vue-jsx-merge-props\"\nvar external_babel_helper_vue_jsx_merge_props_ = __webpack_require__(13);\nvar external_babel_helper_vue_jsx_merge_props_default = /*#__PURE__*/__webpack_require__.n(external_babel_helper_vue_jsx_merge_props_);\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Input.vue?vue&type=script&lang=js&\n\n\n\nvar keysThatRequireMenuBeingOpen = [KEY_CODES.ENTER, KEY_CODES.END, KEY_CODES.HOME, KEY_CODES.ARROW_LEFT, KEY_CODES.ARROW_UP, KEY_CODES.ARROW_RIGHT, KEY_CODES.ARROW_DOWN];\n/* harmony default export */ var Inputvue_type_script_lang_js_ = ({\n name: 'vue-treeselect--input',\n inject: ['instance'],\n data: function data() {\n return {\n inputWidth: MIN_INPUT_WIDTH,\n value: ''\n };\n },\n computed: {\n needAutoSize: function needAutoSize() {\n var instance = this.instance;\n return instance.searchable && !instance.disabled && instance.multiple;\n },\n inputStyle: function inputStyle() {\n return {\n width: this.needAutoSize ? \"\".concat(this.inputWidth, \"px\") : null\n };\n }\n },\n watch: {\n 'instance.trigger.searchQuery': function instanceTriggerSearchQuery(newValue) {\n this.value = newValue;\n },\n value: function value() {\n if (this.needAutoSize) this.$nextTick(this.updateInputWidth);\n }\n },\n created: function created() {\n this.debouncedCallback = debounce_default()(this.updateSearchQuery, INPUT_DEBOUNCE_DELAY, {\n leading: true,\n trailing: true\n });\n },\n methods: {\n clear: function clear() {\n this.onInput({\n target: {\n value: ''\n }\n });\n },\n focus: function focus() {\n var instance = this.instance;\n\n if (!instance.disabled) {\n this.$refs.input && this.$refs.input.focus();\n }\n },\n blur: function blur() {\n this.$refs.input && this.$refs.input.blur();\n },\n onFocus: function onFocus() {\n var instance = this.instance;\n instance.trigger.isFocused = true;\n if (instance.openOnFocus) instance.openMenu();\n },\n onBlur: function onBlur() {\n var instance = this.instance;\n var menu = instance.getMenu();\n\n if (menu && document.activeElement === menu) {\n return this.focus();\n }\n\n instance.trigger.isFocused = false;\n instance.closeMenu();\n },\n onInput: function onInput(evt) {\n var value = evt.target.value;\n this.value = value;\n\n if (value) {\n this.debouncedCallback();\n } else {\n this.debouncedCallback.cancel();\n this.updateSearchQuery();\n }\n },\n onKeyDown: function onKeyDown(evt) {\n var instance = this.instance;\n var key = 'which' in evt ? evt.which : evt.keyCode;\n if (evt.ctrlKey || evt.shiftKey || evt.altKey || evt.metaKey) return;\n\n if (!instance.menu.isOpen && includes(keysThatRequireMenuBeingOpen, key)) {\n evt.preventDefault();\n return instance.openMenu();\n }\n\n switch (key) {\n case KEY_CODES.BACKSPACE:\n {\n if (instance.backspaceRemoves && !this.value.length) {\n instance.removeLastValue();\n }\n\n break;\n }\n\n case KEY_CODES.ENTER:\n {\n evt.preventDefault();\n if (instance.menu.current === null) return;\n var current = instance.getNode(instance.menu.current);\n if (current.isBranch && instance.disableBranchNodes) return;\n instance.select(current);\n break;\n }\n\n case KEY_CODES.ESCAPE:\n {\n if (this.value.length) {\n this.clear();\n } else if (instance.menu.isOpen) {\n instance.closeMenu();\n }\n\n break;\n }\n\n case KEY_CODES.END:\n {\n evt.preventDefault();\n instance.highlightLastOption();\n break;\n }\n\n case KEY_CODES.HOME:\n {\n evt.preventDefault();\n instance.highlightFirstOption();\n break;\n }\n\n case KEY_CODES.ARROW_LEFT:\n {\n var _current = instance.getNode(instance.menu.current);\n\n if (_current.isBranch && instance.shouldExpand(_current)) {\n evt.preventDefault();\n instance.toggleExpanded(_current);\n } else if (!_current.isRootNode && (_current.isLeaf || _current.isBranch && !instance.shouldExpand(_current))) {\n evt.preventDefault();\n instance.setCurrentHighlightedOption(_current.parentNode);\n }\n\n break;\n }\n\n case KEY_CODES.ARROW_UP:\n {\n evt.preventDefault();\n instance.highlightPrevOption();\n break;\n }\n\n case KEY_CODES.ARROW_RIGHT:\n {\n var _current2 = instance.getNode(instance.menu.current);\n\n if (_current2.isBranch && !instance.shouldExpand(_current2)) {\n evt.preventDefault();\n instance.toggleExpanded(_current2);\n }\n\n break;\n }\n\n case KEY_CODES.ARROW_DOWN:\n {\n evt.preventDefault();\n instance.highlightNextOption();\n break;\n }\n\n case KEY_CODES.DELETE:\n {\n if (instance.deleteRemoves && !this.value.length) {\n instance.removeLastValue();\n }\n\n break;\n }\n\n default:\n {\n instance.openMenu();\n }\n }\n },\n onMouseDown: function onMouseDown(evt) {\n if (this.value.length) {\n evt.stopPropagation();\n }\n },\n renderInputContainer: function renderInputContainer() {\n var h = this.$createElement;\n var instance = this.instance;\n var props = {};\n var children = [];\n\n if (instance.searchable && !instance.disabled) {\n children.push(this.renderInput());\n if (this.needAutoSize) children.push(this.renderSizer());\n }\n\n if (!instance.searchable) {\n deepExtend(props, {\n on: {\n focus: this.onFocus,\n blur: this.onBlur,\n keydown: this.onKeyDown\n },\n ref: 'input'\n });\n }\n\n if (!instance.searchable && !instance.disabled) {\n deepExtend(props, {\n attrs: {\n tabIndex: instance.tabIndex\n }\n });\n }\n\n return h(\"div\", external_babel_helper_vue_jsx_merge_props_default()([{\n \"class\": \"vue-treeselect__input-container\"\n }, props]), [children]);\n },\n renderInput: function renderInput() {\n var h = this.$createElement;\n var instance = this.instance;\n return h(\"input\", {\n ref: \"input\",\n \"class\": \"vue-treeselect__input\",\n attrs: {\n type: \"text\",\n autocomplete: \"off\",\n tabIndex: instance.tabIndex,\n required: instance.required && !instance.hasValue\n },\n domProps: {\n \"value\": this.value\n },\n style: this.inputStyle,\n on: {\n \"focus\": this.onFocus,\n \"input\": this.onInput,\n \"blur\": this.onBlur,\n \"keydown\": this.onKeyDown,\n \"mousedown\": this.onMouseDown\n }\n });\n },\n renderSizer: function renderSizer() {\n var h = this.$createElement;\n return h(\"div\", {\n ref: \"sizer\",\n \"class\": \"vue-treeselect__sizer\"\n }, [this.value]);\n },\n updateInputWidth: function updateInputWidth() {\n this.inputWidth = Math.max(MIN_INPUT_WIDTH, this.$refs.sizer.scrollWidth + 15);\n },\n updateSearchQuery: function updateSearchQuery() {\n var instance = this.instance;\n instance.trigger.searchQuery = this.value;\n }\n },\n render: function render() {\n return this.renderInputContainer();\n }\n});\n// CONCATENATED MODULE: ./src/components/Input.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_Inputvue_type_script_lang_js_ = (Inputvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/Input.vue\nvar Input_render, Input_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar Input_component = normalizeComponent(\n components_Inputvue_type_script_lang_js_,\n Input_render,\n Input_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var Input_api; }\nInput_component.options.__file = \"src/components/Input.vue\"\n/* harmony default export */ var Input = (Input_component.exports);\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Placeholder.vue?vue&type=script&lang=js&\n/* harmony default export */ var Placeholdervue_type_script_lang_js_ = ({\n name: 'vue-treeselect--placeholder',\n inject: ['instance'],\n render: function render() {\n var h = arguments[0];\n var instance = this.instance;\n var placeholderClass = {\n 'vue-treeselect__placeholder': true,\n 'vue-treeselect-helper-zoom-effect-off': true,\n 'vue-treeselect-helper-hide': instance.hasValue || instance.trigger.searchQuery\n };\n return h(\"div\", {\n \"class\": placeholderClass\n }, [instance.placeholder]);\n }\n});\n// CONCATENATED MODULE: ./src/components/Placeholder.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_Placeholdervue_type_script_lang_js_ = (Placeholdervue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/Placeholder.vue\nvar Placeholder_render, Placeholder_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar Placeholder_component = normalizeComponent(\n components_Placeholdervue_type_script_lang_js_,\n Placeholder_render,\n Placeholder_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var Placeholder_api; }\nPlaceholder_component.options.__file = \"src/components/Placeholder.vue\"\n/* harmony default export */ var Placeholder = (Placeholder_component.exports);\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/SingleValue.vue?vue&type=script&lang=js&\n\n\n/* harmony default export */ var SingleValuevue_type_script_lang_js_ = ({\n name: 'vue-treeselect--single-value',\n inject: ['instance'],\n methods: {\n renderSingleValueLabel: function renderSingleValueLabel() {\n var instance = this.instance;\n var node = instance.selectedNodes[0];\n var customValueLabelRenderer = instance.$scopedSlots['value-label'];\n return customValueLabelRenderer ? customValueLabelRenderer({\n node: node\n }) : node.label;\n }\n },\n render: function render() {\n var h = arguments[0];\n var instance = this.instance,\n renderValueContainer = this.$parent.renderValueContainer;\n var shouldShowValue = instance.hasValue && !instance.trigger.searchQuery;\n return renderValueContainer([shouldShowValue && h(\"div\", {\n \"class\": \"vue-treeselect__single-value\"\n }, [this.renderSingleValueLabel()]), h(Placeholder), h(Input, {\n ref: \"input\"\n })]);\n }\n});\n// CONCATENATED MODULE: ./src/components/SingleValue.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_SingleValuevue_type_script_lang_js_ = (SingleValuevue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/SingleValue.vue\nvar SingleValue_render, SingleValue_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar SingleValue_component = normalizeComponent(\n components_SingleValuevue_type_script_lang_js_,\n SingleValue_render,\n SingleValue_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var SingleValue_api; }\nSingleValue_component.options.__file = \"src/components/SingleValue.vue\"\n/* harmony default export */ var SingleValue = (SingleValue_component.exports);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js!./node_modules/vue-loader/lib??vue-loader-options!./src/components/icons/Delete.vue?vue&type=template&id=364b6320&\nvar Deletevue_type_template_id_364b6320_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"svg\",\n {\n attrs: {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 348.333 348.333\"\n }\n },\n [\n _c(\"path\", {\n attrs: {\n d:\n \"M336.559 68.611L231.016 174.165l105.543 105.549c15.699 15.705 15.699 41.145 0 56.85-7.844 7.844-18.128 11.769-28.407 11.769-10.296 0-20.581-3.919-28.419-11.769L174.167 231.003 68.609 336.563c-7.843 7.844-18.128 11.769-28.416 11.769-10.285 0-20.563-3.919-28.413-11.769-15.699-15.698-15.699-41.139 0-56.85l105.54-105.549L11.774 68.611c-15.699-15.699-15.699-41.145 0-56.844 15.696-15.687 41.127-15.687 56.829 0l105.563 105.554L279.721 11.767c15.705-15.687 41.139-15.687 56.832 0 15.705 15.699 15.705 41.145.006 56.844z\"\n }\n })\n ]\n )\n}\nvar Deletevue_type_template_id_364b6320_staticRenderFns = []\nDeletevue_type_template_id_364b6320_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./src/components/icons/Delete.vue?vue&type=template&id=364b6320&\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/icons/Delete.vue?vue&type=script&lang=js&\n/* harmony default export */ var Deletevue_type_script_lang_js_ = ({\n name: 'vue-treeselect--x'\n});\n// CONCATENATED MODULE: ./src/components/icons/Delete.vue?vue&type=script&lang=js&\n /* harmony default export */ var icons_Deletevue_type_script_lang_js_ = (Deletevue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/icons/Delete.vue\n\n\n\n\n\n/* normalize component */\n\nvar Delete_component = normalizeComponent(\n icons_Deletevue_type_script_lang_js_,\n Deletevue_type_template_id_364b6320_render,\n Deletevue_type_template_id_364b6320_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var Delete_api; }\nDelete_component.options.__file = \"src/components/icons/Delete.vue\"\n/* harmony default export */ var Delete = (Delete_component.exports);\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/MultiValueItem.vue?vue&type=script&lang=js&\n\n\n/* harmony default export */ var MultiValueItemvue_type_script_lang_js_ = ({\n name: 'vue-treeselect--multi-value-item',\n inject: ['instance'],\n props: {\n node: {\n type: Object,\n required: true\n }\n },\n methods: {\n handleMouseDown: onLeftClick(function handleMouseDown() {\n var instance = this.instance,\n node = this.node;\n instance.select(node);\n })\n },\n render: function render() {\n var h = arguments[0];\n var instance = this.instance,\n node = this.node;\n var itemClass = {\n 'vue-treeselect__multi-value-item': true,\n 'vue-treeselect__multi-value-item-disabled': node.isDisabled,\n 'vue-treeselect__multi-value-item-new': node.isNew\n };\n var customValueLabelRenderer = instance.$scopedSlots['value-label'];\n var labelRenderer = customValueLabelRenderer ? customValueLabelRenderer({\n node: node\n }) : node.label;\n return h(\"div\", {\n \"class\": \"vue-treeselect__multi-value-item-container\"\n }, [h(\"div\", {\n \"class\": itemClass,\n on: {\n \"mousedown\": this.handleMouseDown\n }\n }, [h(\"span\", {\n \"class\": \"vue-treeselect__multi-value-label\"\n }, [labelRenderer]), h(\"span\", {\n \"class\": \"vue-treeselect__icon vue-treeselect__value-remove\"\n }, [h(Delete)])])]);\n }\n});\n// CONCATENATED MODULE: ./src/components/MultiValueItem.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_MultiValueItemvue_type_script_lang_js_ = (MultiValueItemvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/MultiValueItem.vue\nvar MultiValueItem_render, MultiValueItem_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar MultiValueItem_component = normalizeComponent(\n components_MultiValueItemvue_type_script_lang_js_,\n MultiValueItem_render,\n MultiValueItem_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var MultiValueItem_api; }\nMultiValueItem_component.options.__file = \"src/components/MultiValueItem.vue\"\n/* harmony default export */ var MultiValueItem = (MultiValueItem_component.exports);\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/MultiValue.vue?vue&type=script&lang=js&\n\n\n\n\n/* harmony default export */ var MultiValuevue_type_script_lang_js_ = ({\n name: 'vue-treeselect--multi-value',\n inject: ['instance'],\n methods: {\n renderMultiValueItems: function renderMultiValueItems() {\n var h = this.$createElement;\n var instance = this.instance;\n return instance.internalValue.slice(0, instance.limit).map(instance.getNode).map(function (node) {\n return h(MultiValueItem, {\n key: \"multi-value-item-\".concat(node.id),\n attrs: {\n node: node\n }\n });\n });\n },\n renderExceedLimitTip: function renderExceedLimitTip() {\n var h = this.$createElement;\n var instance = this.instance;\n var count = instance.internalValue.length - instance.limit;\n if (count <= 0) return null;\n return h(\"div\", {\n \"class\": \"vue-treeselect__limit-tip vue-treeselect-helper-zoom-effect-off\",\n key: \"exceed-limit-tip\"\n }, [h(\"span\", {\n \"class\": \"vue-treeselect__limit-tip-text\"\n }, [instance.limitText(count)])]);\n }\n },\n render: function render() {\n var h = arguments[0];\n var renderValueContainer = this.$parent.renderValueContainer;\n var transitionGroupProps = {\n props: {\n tag: 'div',\n name: 'vue-treeselect__multi-value-item--transition',\n appear: true\n }\n };\n return renderValueContainer(h(\"transition-group\", external_babel_helper_vue_jsx_merge_props_default()([{\n \"class\": \"vue-treeselect__multi-value\"\n }, transitionGroupProps]), [this.renderMultiValueItems(), this.renderExceedLimitTip(), h(Placeholder, {\n key: \"placeholder\"\n }), h(Input, {\n ref: \"input\",\n key: \"input\"\n })]));\n }\n});\n// CONCATENATED MODULE: ./src/components/MultiValue.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_MultiValuevue_type_script_lang_js_ = (MultiValuevue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/MultiValue.vue\nvar MultiValue_render, MultiValue_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar MultiValue_component = normalizeComponent(\n components_MultiValuevue_type_script_lang_js_,\n MultiValue_render,\n MultiValue_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var MultiValue_api; }\nMultiValue_component.options.__file = \"src/components/MultiValue.vue\"\n/* harmony default export */ var MultiValue = (MultiValue_component.exports);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js!./node_modules/vue-loader/lib??vue-loader-options!./src/components/icons/Arrow.vue?vue&type=template&id=11186cd4&\nvar Arrowvue_type_template_id_11186cd4_render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"svg\",\n {\n attrs: {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 292.362 292.362\"\n }\n },\n [\n _c(\"path\", {\n attrs: {\n d:\n \"M286.935 69.377c-3.614-3.617-7.898-5.424-12.848-5.424H18.274c-4.952 0-9.233 1.807-12.85 5.424C1.807 72.998 0 77.279 0 82.228c0 4.948 1.807 9.229 5.424 12.847l127.907 127.907c3.621 3.617 7.902 5.428 12.85 5.428s9.233-1.811 12.847-5.428L286.935 95.074c3.613-3.617 5.427-7.898 5.427-12.847 0-4.948-1.814-9.229-5.427-12.85z\"\n }\n })\n ]\n )\n}\nvar Arrowvue_type_template_id_11186cd4_staticRenderFns = []\nArrowvue_type_template_id_11186cd4_render._withStripped = true\n\n\n// CONCATENATED MODULE: ./src/components/icons/Arrow.vue?vue&type=template&id=11186cd4&\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/icons/Arrow.vue?vue&type=script&lang=js&\n/* harmony default export */ var Arrowvue_type_script_lang_js_ = ({\n name: 'vue-treeselect--arrow'\n});\n// CONCATENATED MODULE: ./src/components/icons/Arrow.vue?vue&type=script&lang=js&\n /* harmony default export */ var icons_Arrowvue_type_script_lang_js_ = (Arrowvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/icons/Arrow.vue\n\n\n\n\n\n/* normalize component */\n\nvar Arrow_component = normalizeComponent(\n icons_Arrowvue_type_script_lang_js_,\n Arrowvue_type_template_id_11186cd4_render,\n Arrowvue_type_template_id_11186cd4_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var Arrow_api; }\nArrow_component.options.__file = \"src/components/icons/Arrow.vue\"\n/* harmony default export */ var Arrow = (Arrow_component.exports);\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Control.vue?vue&type=script&lang=js&\n\n\n\n\n\n/* harmony default export */ var Controlvue_type_script_lang_js_ = ({\n name: 'vue-treeselect--control',\n inject: ['instance'],\n computed: {\n shouldShowX: function shouldShowX() {\n var instance = this.instance;\n return instance.clearable && !instance.disabled && instance.hasValue && (this.hasUndisabledValue || instance.allowClearingDisabled);\n },\n shouldShowArrow: function shouldShowArrow() {\n var instance = this.instance;\n if (!instance.alwaysOpen) return true;\n return !instance.menu.isOpen;\n },\n hasUndisabledValue: function hasUndisabledValue() {\n var instance = this.instance;\n return instance.hasValue && instance.internalValue.some(function (id) {\n return !instance.getNode(id).isDisabled;\n });\n }\n },\n methods: {\n renderX: function renderX() {\n var h = this.$createElement;\n var instance = this.instance;\n var title = instance.multiple ? instance.clearAllText : instance.clearValueText;\n if (!this.shouldShowX) return null;\n return h(\"div\", {\n \"class\": \"vue-treeselect__x-container\",\n attrs: {\n title: title\n },\n on: {\n \"mousedown\": this.handleMouseDownOnX\n }\n }, [h(Delete, {\n \"class\": \"vue-treeselect__x\"\n })]);\n },\n renderArrow: function renderArrow() {\n var h = this.$createElement;\n var instance = this.instance;\n var arrowClass = {\n 'vue-treeselect__control-arrow': true,\n 'vue-treeselect__control-arrow--rotated': instance.menu.isOpen\n };\n if (!this.shouldShowArrow) return null;\n return h(\"div\", {\n \"class\": \"vue-treeselect__control-arrow-container\",\n on: {\n \"mousedown\": this.handleMouseDownOnArrow\n }\n }, [h(Arrow, {\n \"class\": arrowClass\n })]);\n },\n handleMouseDownOnX: onLeftClick(function handleMouseDownOnX(evt) {\n evt.stopPropagation();\n evt.preventDefault();\n var instance = this.instance;\n var result = instance.beforeClearAll();\n\n var handler = function handler(shouldClear) {\n if (shouldClear) instance.clear();\n };\n\n if (external_is_promise_default()(result)) {\n result.then(handler);\n } else {\n setTimeout(function () {\n return handler(result);\n }, 0);\n }\n }),\n handleMouseDownOnArrow: onLeftClick(function handleMouseDownOnArrow(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n var instance = this.instance;\n instance.focusInput();\n instance.toggleMenu();\n }),\n renderValueContainer: function renderValueContainer(children) {\n var h = this.$createElement;\n return h(\"div\", {\n \"class\": \"vue-treeselect__value-container\"\n }, [children]);\n }\n },\n render: function render() {\n var h = arguments[0];\n var instance = this.instance;\n var ValueContainer = instance.single ? SingleValue : MultiValue;\n return h(\"div\", {\n \"class\": \"vue-treeselect__control\",\n on: {\n \"mousedown\": instance.handleMouseDown\n }\n }, [h(ValueContainer, {\n ref: \"value-container\"\n }), this.renderX(), this.renderArrow()]);\n }\n});\n// CONCATENATED MODULE: ./src/components/Control.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_Controlvue_type_script_lang_js_ = (Controlvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/Control.vue\nvar Control_render, Control_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar Control_component = normalizeComponent(\n components_Controlvue_type_script_lang_js_,\n Control_render,\n Control_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var Control_api; }\nControl_component.options.__file = \"src/components/Control.vue\"\n/* harmony default export */ var Control = (Control_component.exports);\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Tip.vue?vue&type=script&lang=js&\n/* harmony default export */ var Tipvue_type_script_lang_js_ = ({\n name: 'vue-treeselect--tip',\n functional: true,\n props: {\n type: {\n type: String,\n required: true\n },\n icon: {\n type: String,\n required: true\n }\n },\n render: function render(_, context) {\n var h = arguments[0];\n var props = context.props,\n children = context.children;\n return h(\"div\", {\n \"class\": \"vue-treeselect__tip vue-treeselect__\".concat(props.type, \"-tip\")\n }, [h(\"div\", {\n \"class\": \"vue-treeselect__icon-container\"\n }, [h(\"span\", {\n \"class\": \"vue-treeselect__icon-\".concat(props.icon)\n })]), h(\"span\", {\n \"class\": \"vue-treeselect__tip-text vue-treeselect__\".concat(props.type, \"-tip-text\")\n }, [children])]);\n }\n});\n// CONCATENATED MODULE: ./src/components/Tip.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_Tipvue_type_script_lang_js_ = (Tipvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/Tip.vue\nvar Tip_render, Tip_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar Tip_component = normalizeComponent(\n components_Tipvue_type_script_lang_js_,\n Tip_render,\n Tip_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var Tip_api; }\nTip_component.options.__file = \"src/components/Tip.vue\"\n/* harmony default export */ var Tip = (Tip_component.exports);\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Option.vue?vue&type=script&lang=js&\n\n\n\n\n\nvar arrowPlaceholder, checkMark, minusMark;\nvar Option = {\n name: 'vue-treeselect--option',\n inject: ['instance'],\n props: {\n node: {\n type: Object,\n required: true\n }\n },\n computed: {\n shouldExpand: function shouldExpand() {\n var instance = this.instance,\n node = this.node;\n return node.isBranch && instance.shouldExpand(node);\n },\n shouldShow: function shouldShow() {\n var instance = this.instance,\n node = this.node;\n return instance.shouldShowOptionInMenu(node);\n }\n },\n methods: {\n renderOption: function renderOption() {\n var h = this.$createElement;\n var instance = this.instance,\n node = this.node;\n var optionClass = {\n 'vue-treeselect__option': true,\n 'vue-treeselect__option--disabled': node.isDisabled,\n 'vue-treeselect__option--selected': instance.isSelected(node),\n 'vue-treeselect__option--highlight': node.isHighlighted,\n 'vue-treeselect__option--matched': instance.localSearch.active && node.isMatched,\n 'vue-treeselect__option--hide': !this.shouldShow\n };\n return h(\"div\", {\n \"class\": optionClass,\n on: {\n \"mouseenter\": this.handleMouseEnterOption\n },\n attrs: {\n \"data-id\": node.id\n }\n }, [this.renderArrow(), this.renderLabelContainer([this.renderCheckboxContainer([this.renderCheckbox()]), this.renderLabel()])]);\n },\n renderSubOptionsList: function renderSubOptionsList() {\n var h = this.$createElement;\n if (!this.shouldExpand) return null;\n return h(\"div\", {\n \"class\": \"vue-treeselect__list\"\n }, [this.renderSubOptions(), this.renderNoChildrenTip(), this.renderLoadingChildrenTip(), this.renderLoadingChildrenErrorTip()]);\n },\n renderArrow: function renderArrow() {\n var h = this.$createElement;\n var instance = this.instance,\n node = this.node;\n if (instance.shouldFlattenOptions && this.shouldShow) return null;\n\n if (node.isBranch) {\n var transitionProps = {\n props: {\n name: 'vue-treeselect__option-arrow--prepare',\n appear: true\n }\n };\n var arrowClass = {\n 'vue-treeselect__option-arrow': true,\n 'vue-treeselect__option-arrow--rotated': this.shouldExpand\n };\n return h(\"div\", {\n \"class\": \"vue-treeselect__option-arrow-container\",\n on: {\n \"mousedown\": this.handleMouseDownOnArrow\n }\n }, [h(\"transition\", transitionProps, [h(Arrow, {\n \"class\": arrowClass\n })])]);\n }\n\n if (instance.hasBranchNodes) {\n if (!arrowPlaceholder) arrowPlaceholder = h(\"div\", {\n \"class\": \"vue-treeselect__option-arrow-placeholder\"\n }, [\"\\xA0\"]);\n return arrowPlaceholder;\n }\n\n return null;\n },\n renderLabelContainer: function renderLabelContainer(children) {\n var h = this.$createElement;\n return h(\"div\", {\n \"class\": \"vue-treeselect__label-container\",\n on: {\n \"mousedown\": this.handleMouseDownOnLabelContainer\n }\n }, [children]);\n },\n renderCheckboxContainer: function renderCheckboxContainer(children) {\n var h = this.$createElement;\n var instance = this.instance,\n node = this.node;\n if (instance.single) return null;\n if (instance.disableBranchNodes && node.isBranch) return null;\n return h(\"div\", {\n \"class\": \"vue-treeselect__checkbox-container\"\n }, [children]);\n },\n renderCheckbox: function renderCheckbox() {\n var h = this.$createElement;\n var instance = this.instance,\n node = this.node;\n var checkedState = instance.forest.checkedStateMap[node.id];\n var checkboxClass = {\n 'vue-treeselect__checkbox': true,\n 'vue-treeselect__checkbox--checked': checkedState === CHECKED,\n 'vue-treeselect__checkbox--indeterminate': checkedState === INDETERMINATE,\n 'vue-treeselect__checkbox--unchecked': checkedState === UNCHECKED,\n 'vue-treeselect__checkbox--disabled': node.isDisabled\n };\n if (!checkMark) checkMark = h(\"span\", {\n \"class\": \"vue-treeselect__check-mark\"\n });\n if (!minusMark) minusMark = h(\"span\", {\n \"class\": \"vue-treeselect__minus-mark\"\n });\n return h(\"span\", {\n \"class\": checkboxClass\n }, [checkMark, minusMark]);\n },\n renderLabel: function renderLabel() {\n var h = this.$createElement;\n var instance = this.instance,\n node = this.node;\n var shouldShowCount = node.isBranch && (instance.localSearch.active ? instance.showCountOnSearchComputed : instance.showCount);\n var count = shouldShowCount ? instance.localSearch.active ? instance.localSearch.countMap[node.id][instance.showCountOf] : node.count[instance.showCountOf] : NaN;\n var labelClassName = 'vue-treeselect__label';\n var countClassName = 'vue-treeselect__count';\n var customLabelRenderer = instance.$scopedSlots['option-label'];\n if (customLabelRenderer) return customLabelRenderer({\n node: node,\n shouldShowCount: shouldShowCount,\n count: count,\n labelClassName: labelClassName,\n countClassName: countClassName\n });\n return h(\"label\", {\n \"class\": labelClassName\n }, [node.label, shouldShowCount && h(\"span\", {\n \"class\": countClassName\n }, [\"(\", count, \")\"])]);\n },\n renderSubOptions: function renderSubOptions() {\n var h = this.$createElement;\n var node = this.node;\n if (!node.childrenStates.isLoaded) return null;\n return node.children.map(function (childNode) {\n return h(Option, {\n attrs: {\n node: childNode\n },\n key: childNode.id\n });\n });\n },\n renderNoChildrenTip: function renderNoChildrenTip() {\n var h = this.$createElement;\n var instance = this.instance,\n node = this.node;\n if (!node.childrenStates.isLoaded || node.children.length) return null;\n return h(Tip, {\n attrs: {\n type: \"no-children\",\n icon: \"warning\"\n }\n }, [instance.noChildrenText]);\n },\n renderLoadingChildrenTip: function renderLoadingChildrenTip() {\n var h = this.$createElement;\n var instance = this.instance,\n node = this.node;\n if (!node.childrenStates.isLoading) return null;\n return h(Tip, {\n attrs: {\n type: \"loading\",\n icon: \"loader\"\n }\n }, [instance.loadingText]);\n },\n renderLoadingChildrenErrorTip: function renderLoadingChildrenErrorTip() {\n var h = this.$createElement;\n var instance = this.instance,\n node = this.node;\n if (!node.childrenStates.loadingError) return null;\n return h(Tip, {\n attrs: {\n type: \"error\",\n icon: \"error\"\n }\n }, [node.childrenStates.loadingError, h(\"a\", {\n \"class\": \"vue-treeselect__retry\",\n attrs: {\n title: instance.retryTitle\n },\n on: {\n \"mousedown\": this.handleMouseDownOnRetry\n }\n }, [instance.retryText])]);\n },\n handleMouseEnterOption: function handleMouseEnterOption(evt) {\n var instance = this.instance,\n node = this.node;\n if (evt.target !== evt.currentTarget) return;\n instance.setCurrentHighlightedOption(node, false);\n },\n handleMouseDownOnArrow: onLeftClick(function handleMouseDownOnOptionArrow() {\n var instance = this.instance,\n node = this.node;\n instance.toggleExpanded(node);\n }),\n handleMouseDownOnLabelContainer: onLeftClick(function handleMouseDownOnLabelContainer() {\n var instance = this.instance,\n node = this.node;\n\n if (node.isBranch && instance.disableBranchNodes) {\n instance.toggleExpanded(node);\n } else {\n instance.select(node);\n }\n }),\n handleMouseDownOnRetry: onLeftClick(function handleMouseDownOnRetry() {\n var instance = this.instance,\n node = this.node;\n instance.loadChildrenOptions(node);\n })\n },\n render: function render() {\n var h = arguments[0];\n var node = this.node;\n var indentLevel = this.instance.shouldFlattenOptions ? 0 : node.level;\n\n var listItemClass = defineProperty_default()({\n 'vue-treeselect__list-item': true\n }, \"vue-treeselect__indent-level-\".concat(indentLevel), true);\n\n var transitionProps = {\n props: {\n name: 'vue-treeselect__list--transition'\n }\n };\n return h(\"div\", {\n \"class\": listItemClass\n }, [this.renderOption(), node.isBranch && h(\"transition\", transitionProps, [this.renderSubOptionsList()])]);\n }\n};\n/* harmony default export */ var Optionvue_type_script_lang_js_ = (Option);\n// CONCATENATED MODULE: ./src/components/Option.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_Optionvue_type_script_lang_js_ = (Optionvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/Option.vue\nvar Option_render, Option_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar Option_component = normalizeComponent(\n components_Optionvue_type_script_lang_js_,\n Option_render,\n Option_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var Option_api; }\nOption_component.options.__file = \"src/components/Option.vue\"\n/* harmony default export */ var components_Option = (Option_component.exports);\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Menu.vue?vue&type=script&lang=js&\n\n\n\n\nvar directionMap = {\n top: 'top',\n bottom: 'bottom',\n above: 'top',\n below: 'bottom'\n};\n/* harmony default export */ var Menuvue_type_script_lang_js_ = ({\n name: 'vue-treeselect--menu',\n inject: ['instance'],\n computed: {\n menuStyle: function menuStyle() {\n var instance = this.instance;\n return {\n maxHeight: instance.maxHeight + 'px'\n };\n },\n menuContainerStyle: function menuContainerStyle() {\n var instance = this.instance;\n return {\n zIndex: instance.appendToBody ? null : instance.zIndex\n };\n }\n },\n watch: {\n 'instance.menu.isOpen': function instanceMenuIsOpen(newValue) {\n if (newValue) {\n this.$nextTick(this.onMenuOpen);\n } else {\n this.onMenuClose();\n }\n }\n },\n created: function created() {\n this.menuSizeWatcher = null;\n this.menuResizeAndScrollEventListeners = null;\n },\n mounted: function mounted() {\n var instance = this.instance;\n if (instance.menu.isOpen) this.$nextTick(this.onMenuOpen);\n },\n destroyed: function destroyed() {\n this.onMenuClose();\n },\n methods: {\n renderMenu: function renderMenu() {\n var h = this.$createElement;\n var instance = this.instance;\n if (!instance.menu.isOpen) return null;\n return h(\"div\", {\n ref: \"menu\",\n \"class\": \"vue-treeselect__menu\",\n on: {\n \"mousedown\": instance.handleMouseDown\n },\n style: this.menuStyle\n }, [this.renderBeforeList(), instance.async ? this.renderAsyncSearchMenuInner() : instance.localSearch.active ? this.renderLocalSearchMenuInner() : this.renderNormalMenuInner(), this.renderAfterList()]);\n },\n renderBeforeList: function renderBeforeList() {\n var instance = this.instance;\n var beforeListRenderer = instance.$scopedSlots['before-list'];\n return beforeListRenderer ? beforeListRenderer() : null;\n },\n renderAfterList: function renderAfterList() {\n var instance = this.instance;\n var afterListRenderer = instance.$scopedSlots['after-list'];\n return afterListRenderer ? afterListRenderer() : null;\n },\n renderNormalMenuInner: function renderNormalMenuInner() {\n var instance = this.instance;\n\n if (instance.rootOptionsStates.isLoading) {\n return this.renderLoadingOptionsTip();\n } else if (instance.rootOptionsStates.loadingError) {\n return this.renderLoadingRootOptionsErrorTip();\n } else if (instance.rootOptionsStates.isLoaded && instance.forest.normalizedOptions.length === 0) {\n return this.renderNoAvailableOptionsTip();\n } else {\n return this.renderOptionList();\n }\n },\n renderLocalSearchMenuInner: function renderLocalSearchMenuInner() {\n var instance = this.instance;\n\n if (instance.rootOptionsStates.isLoading) {\n return this.renderLoadingOptionsTip();\n } else if (instance.rootOptionsStates.loadingError) {\n return this.renderLoadingRootOptionsErrorTip();\n } else if (instance.rootOptionsStates.isLoaded && instance.forest.normalizedOptions.length === 0) {\n return this.renderNoAvailableOptionsTip();\n } else if (instance.localSearch.noResults) {\n return this.renderNoResultsTip();\n } else {\n return this.renderOptionList();\n }\n },\n renderAsyncSearchMenuInner: function renderAsyncSearchMenuInner() {\n var instance = this.instance;\n var entry = instance.getRemoteSearchEntry();\n var shouldShowSearchPromptTip = instance.trigger.searchQuery === '' && !instance.defaultOptions;\n var shouldShowNoResultsTip = shouldShowSearchPromptTip ? false : entry.isLoaded && entry.options.length === 0;\n\n if (shouldShowSearchPromptTip) {\n return this.renderSearchPromptTip();\n } else if (entry.isLoading) {\n return this.renderLoadingOptionsTip();\n } else if (entry.loadingError) {\n return this.renderAsyncSearchLoadingErrorTip();\n } else if (shouldShowNoResultsTip) {\n return this.renderNoResultsTip();\n } else {\n return this.renderOptionList();\n }\n },\n renderOptionList: function renderOptionList() {\n var h = this.$createElement;\n var instance = this.instance;\n return h(\"div\", {\n \"class\": \"vue-treeselect__list\"\n }, [instance.forest.normalizedOptions.map(function (rootNode) {\n return h(components_Option, {\n attrs: {\n node: rootNode\n },\n key: rootNode.id\n });\n })]);\n },\n renderSearchPromptTip: function renderSearchPromptTip() {\n var h = this.$createElement;\n var instance = this.instance;\n return h(Tip, {\n attrs: {\n type: \"search-prompt\",\n icon: \"warning\"\n }\n }, [instance.searchPromptText]);\n },\n renderLoadingOptionsTip: function renderLoadingOptionsTip() {\n var h = this.$createElement;\n var instance = this.instance;\n return h(Tip, {\n attrs: {\n type: \"loading\",\n icon: \"loader\"\n }\n }, [instance.loadingText]);\n },\n renderLoadingRootOptionsErrorTip: function renderLoadingRootOptionsErrorTip() {\n var h = this.$createElement;\n var instance = this.instance;\n return h(Tip, {\n attrs: {\n type: \"error\",\n icon: \"error\"\n }\n }, [instance.rootOptionsStates.loadingError, h(\"a\", {\n \"class\": \"vue-treeselect__retry\",\n on: {\n \"click\": instance.loadRootOptions\n },\n attrs: {\n title: instance.retryTitle\n }\n }, [instance.retryText])]);\n },\n renderAsyncSearchLoadingErrorTip: function renderAsyncSearchLoadingErrorTip() {\n var h = this.$createElement;\n var instance = this.instance;\n var entry = instance.getRemoteSearchEntry();\n return h(Tip, {\n attrs: {\n type: \"error\",\n icon: \"error\"\n }\n }, [entry.loadingError, h(\"a\", {\n \"class\": \"vue-treeselect__retry\",\n on: {\n \"click\": instance.handleRemoteSearch\n },\n attrs: {\n title: instance.retryTitle\n }\n }, [instance.retryText])]);\n },\n renderNoAvailableOptionsTip: function renderNoAvailableOptionsTip() {\n var h = this.$createElement;\n var instance = this.instance;\n return h(Tip, {\n attrs: {\n type: \"no-options\",\n icon: \"warning\"\n }\n }, [instance.noOptionsText]);\n },\n renderNoResultsTip: function renderNoResultsTip() {\n var h = this.$createElement;\n var instance = this.instance;\n return h(Tip, {\n attrs: {\n type: \"no-results\",\n icon: \"warning\"\n }\n }, [instance.noResultsText]);\n },\n onMenuOpen: function onMenuOpen() {\n this.adjustMenuOpenDirection();\n this.setupMenuSizeWatcher();\n this.setupMenuResizeAndScrollEventListeners();\n },\n onMenuClose: function onMenuClose() {\n this.removeMenuSizeWatcher();\n this.removeMenuResizeAndScrollEventListeners();\n },\n adjustMenuOpenDirection: function adjustMenuOpenDirection() {\n var instance = this.instance;\n if (!instance.menu.isOpen) return;\n var $menu = instance.getMenu();\n var $control = instance.getControl();\n var menuRect = $menu.getBoundingClientRect();\n var controlRect = $control.getBoundingClientRect();\n var menuHeight = menuRect.height;\n var viewportHeight = window.innerHeight;\n var spaceAbove = controlRect.top;\n var spaceBelow = window.innerHeight - controlRect.bottom;\n var isControlInViewport = controlRect.top >= 0 && controlRect.top <= viewportHeight || controlRect.top < 0 && controlRect.bottom > 0;\n var hasEnoughSpaceBelow = spaceBelow > menuHeight + MENU_BUFFER;\n var hasEnoughSpaceAbove = spaceAbove > menuHeight + MENU_BUFFER;\n\n if (!isControlInViewport) {\n instance.closeMenu();\n } else if (instance.openDirection !== 'auto') {\n instance.menu.placement = directionMap[instance.openDirection];\n } else if (hasEnoughSpaceBelow || !hasEnoughSpaceAbove) {\n instance.menu.placement = 'bottom';\n } else {\n instance.menu.placement = 'top';\n }\n },\n setupMenuSizeWatcher: function setupMenuSizeWatcher() {\n var instance = this.instance;\n var $menu = instance.getMenu();\n if (this.menuSizeWatcher) return;\n this.menuSizeWatcher = {\n remove: watchSize($menu, this.adjustMenuOpenDirection)\n };\n },\n setupMenuResizeAndScrollEventListeners: function setupMenuResizeAndScrollEventListeners() {\n var instance = this.instance;\n var $control = instance.getControl();\n if (this.menuResizeAndScrollEventListeners) return;\n this.menuResizeAndScrollEventListeners = {\n remove: setupResizeAndScrollEventListeners($control, this.adjustMenuOpenDirection)\n };\n },\n removeMenuSizeWatcher: function removeMenuSizeWatcher() {\n if (!this.menuSizeWatcher) return;\n this.menuSizeWatcher.remove();\n this.menuSizeWatcher = null;\n },\n removeMenuResizeAndScrollEventListeners: function removeMenuResizeAndScrollEventListeners() {\n if (!this.menuResizeAndScrollEventListeners) return;\n this.menuResizeAndScrollEventListeners.remove();\n this.menuResizeAndScrollEventListeners = null;\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n ref: \"menu-container\",\n \"class\": \"vue-treeselect__menu-container\",\n style: this.menuContainerStyle\n }, [h(\"transition\", {\n attrs: {\n name: \"vue-treeselect__menu--transition\"\n }\n }, [this.renderMenu()])]);\n }\n});\n// CONCATENATED MODULE: ./src/components/Menu.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_Menuvue_type_script_lang_js_ = (Menuvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/Menu.vue\nvar Menu_render, Menu_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar Menu_component = normalizeComponent(\n components_Menuvue_type_script_lang_js_,\n Menu_render,\n Menu_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var Menu_api; }\nMenu_component.options.__file = \"src/components/Menu.vue\"\n/* harmony default export */ var Menu = (Menu_component.exports);\n// EXTERNAL MODULE: external \"vue\"\nvar external_vue_ = __webpack_require__(14);\nvar external_vue_default = /*#__PURE__*/__webpack_require__.n(external_vue_);\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/MenuPortal.vue?vue&type=script&lang=js&\n\n\nfunction MenuPortalvue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction MenuPortalvue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { MenuPortalvue_type_script_lang_js_ownKeys(source, true).forEach(function (key) { defineProperty_default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { MenuPortalvue_type_script_lang_js_ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\nvar PortalTarget = {\n name: 'vue-treeselect--portal-target',\n inject: ['instance'],\n watch: {\n 'instance.menu.isOpen': function instanceMenuIsOpen(newValue) {\n if (newValue) {\n this.setupHandlers();\n } else {\n this.removeHandlers();\n }\n },\n 'instance.menu.placement': function instanceMenuPlacement() {\n this.updateMenuContainerOffset();\n }\n },\n created: function created() {\n this.controlResizeAndScrollEventListeners = null;\n this.controlSizeWatcher = null;\n },\n mounted: function mounted() {\n var instance = this.instance;\n if (instance.menu.isOpen) this.setupHandlers();\n },\n methods: {\n setupHandlers: function setupHandlers() {\n this.updateWidth();\n this.updateMenuContainerOffset();\n this.setupControlResizeAndScrollEventListeners();\n this.setupControlSizeWatcher();\n },\n removeHandlers: function removeHandlers() {\n this.removeControlResizeAndScrollEventListeners();\n this.removeControlSizeWatcher();\n },\n setupControlResizeAndScrollEventListeners: function setupControlResizeAndScrollEventListeners() {\n var instance = this.instance;\n var $control = instance.getControl();\n if (this.controlResizeAndScrollEventListeners) return;\n this.controlResizeAndScrollEventListeners = {\n remove: setupResizeAndScrollEventListeners($control, this.updateMenuContainerOffset)\n };\n },\n setupControlSizeWatcher: function setupControlSizeWatcher() {\n var _this = this;\n\n var instance = this.instance;\n var $control = instance.getControl();\n if (this.controlSizeWatcher) return;\n this.controlSizeWatcher = {\n remove: watchSize($control, function () {\n _this.updateWidth();\n\n _this.updateMenuContainerOffset();\n })\n };\n },\n removeControlResizeAndScrollEventListeners: function removeControlResizeAndScrollEventListeners() {\n if (!this.controlResizeAndScrollEventListeners) return;\n this.controlResizeAndScrollEventListeners.remove();\n this.controlResizeAndScrollEventListeners = null;\n },\n removeControlSizeWatcher: function removeControlSizeWatcher() {\n if (!this.controlSizeWatcher) return;\n this.controlSizeWatcher.remove();\n this.controlSizeWatcher = null;\n },\n updateWidth: function updateWidth() {\n var instance = this.instance;\n var $portalTarget = this.$el;\n var $control = instance.getControl();\n var controlRect = $control.getBoundingClientRect();\n $portalTarget.style.width = controlRect.width + 'px';\n },\n updateMenuContainerOffset: function updateMenuContainerOffset() {\n var instance = this.instance;\n var $control = instance.getControl();\n var $portalTarget = this.$el;\n var controlRect = $control.getBoundingClientRect();\n var portalTargetRect = $portalTarget.getBoundingClientRect();\n var offsetY = instance.menu.placement === 'bottom' ? controlRect.height : 0;\n var left = Math.round(controlRect.left - portalTargetRect.left) + 'px';\n var top = Math.round(controlRect.top - portalTargetRect.top + offsetY) + 'px';\n var menuContainerStyle = this.$refs.menu.$refs['menu-container'].style;\n var transformVariations = ['transform', 'webkitTransform', 'MozTransform', 'msTransform'];\n var transform = find(transformVariations, function (t) {\n return t in document.body.style;\n });\n menuContainerStyle[transform] = \"translate(\".concat(left, \", \").concat(top, \")\");\n }\n },\n render: function render() {\n var h = arguments[0];\n var instance = this.instance;\n var portalTargetClass = ['vue-treeselect__portal-target', instance.wrapperClass];\n var portalTargetStyle = {\n zIndex: instance.zIndex\n };\n return h(\"div\", {\n \"class\": portalTargetClass,\n style: portalTargetStyle,\n attrs: {\n \"data-instance-id\": instance.getInstanceId()\n }\n }, [h(Menu, {\n ref: \"menu\"\n })]);\n },\n destroyed: function destroyed() {\n this.removeHandlers();\n }\n};\nvar placeholder;\n/* harmony default export */ var MenuPortalvue_type_script_lang_js_ = ({\n name: 'vue-treeselect--menu-portal',\n created: function created() {\n this.portalTarget = null;\n },\n mounted: function mounted() {\n this.setup();\n },\n destroyed: function destroyed() {\n this.teardown();\n },\n methods: {\n setup: function setup() {\n var el = document.createElement('div');\n document.body.appendChild(el);\n this.portalTarget = new external_vue_default.a(MenuPortalvue_type_script_lang_js_objectSpread({\n el: el,\n parent: this\n }, PortalTarget));\n },\n teardown: function teardown() {\n document.body.removeChild(this.portalTarget.$el);\n this.portalTarget.$el.innerHTML = '';\n this.portalTarget.$destroy();\n this.portalTarget = null;\n }\n },\n render: function render() {\n var h = arguments[0];\n if (!placeholder) placeholder = h(\"div\", {\n \"class\": \"vue-treeselect__menu-placeholder\"\n });\n return placeholder;\n }\n});\n// CONCATENATED MODULE: ./src/components/MenuPortal.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_MenuPortalvue_type_script_lang_js_ = (MenuPortalvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/MenuPortal.vue\nvar MenuPortal_render, MenuPortal_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar MenuPortal_component = normalizeComponent(\n components_MenuPortalvue_type_script_lang_js_,\n MenuPortal_render,\n MenuPortal_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var MenuPortal_api; }\nMenuPortal_component.options.__file = \"src/components/MenuPortal.vue\"\n/* harmony default export */ var MenuPortal = (MenuPortal_component.exports);\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Treeselect.vue?vue&type=script&lang=js&\n\n\n\n\n\n/* harmony default export */ var Treeselectvue_type_script_lang_js_ = ({\n name: 'vue-treeselect',\n mixins: [treeselectMixin],\n computed: {\n wrapperClass: function wrapperClass() {\n return {\n 'vue-treeselect': true,\n 'vue-treeselect--single': this.single,\n 'vue-treeselect--multi': this.multiple,\n 'vue-treeselect--searchable': this.searchable,\n 'vue-treeselect--disabled': this.disabled,\n 'vue-treeselect--focused': this.trigger.isFocused,\n 'vue-treeselect--has-value': this.hasValue,\n 'vue-treeselect--open': this.menu.isOpen,\n 'vue-treeselect--open-above': this.menu.placement === 'top',\n 'vue-treeselect--open-below': this.menu.placement === 'bottom',\n 'vue-treeselect--branch-nodes-disabled': this.disableBranchNodes,\n 'vue-treeselect--append-to-body': this.appendToBody\n };\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n ref: \"wrapper\",\n \"class\": this.wrapperClass\n }, [h(HiddenFields), h(Control, {\n ref: \"control\"\n }), this.appendToBody ? h(MenuPortal, {\n ref: \"portal\"\n }) : h(Menu, {\n ref: \"menu\"\n })]);\n }\n});\n// CONCATENATED MODULE: ./src/components/Treeselect.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_Treeselectvue_type_script_lang_js_ = (Treeselectvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/Treeselect.vue\nvar Treeselect_render, Treeselect_staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar Treeselect_component = normalizeComponent(\n components_Treeselectvue_type_script_lang_js_,\n Treeselect_render,\n Treeselect_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var Treeselect_api; }\nTreeselect_component.options.__file = \"src/components/Treeselect.vue\"\n/* harmony default export */ var Treeselect = (Treeselect_component.exports);\n// EXTERNAL MODULE: ./src/style.less\nvar style = __webpack_require__(15);\n\n// CONCATENATED MODULE: ./src/index.js\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VERSION\", function() { return VERSION; });\n/* concated harmony reexport Treeselect */__webpack_require__.d(__webpack_exports__, \"Treeselect\", function() { return Treeselect; });\n/* concated harmony reexport treeselectMixin */__webpack_require__.d(__webpack_exports__, \"treeselectMixin\", function() { return treeselectMixin; });\n/* concated harmony reexport LOAD_ROOT_OPTIONS */__webpack_require__.d(__webpack_exports__, \"LOAD_ROOT_OPTIONS\", function() { return LOAD_ROOT_OPTIONS; });\n/* concated harmony reexport LOAD_CHILDREN_OPTIONS */__webpack_require__.d(__webpack_exports__, \"LOAD_CHILDREN_OPTIONS\", function() { return LOAD_CHILDREN_OPTIONS; });\n/* concated harmony reexport ASYNC_SEARCH */__webpack_require__.d(__webpack_exports__, \"ASYNC_SEARCH\", function() { return ASYNC_SEARCH; });\n\n\n\n/* harmony default export */ var src = __webpack_exports__[\"default\"] = (Treeselect);\n\n\nvar VERSION = \"0.4.0\";\n\n/***/ })\n/******/ ]);\n//# sourceMappingURL=vue-treeselect.cjs.js.map\n\n//# sourceURL=webpack:///./node_modules/@riophae/vue-treeselect/dist/vue-treeselect.cjs.js?"); - -/***/ }), - -/***/ "./node_modules/@riophae/vue-treeselect/dist/vue-treeselect.css": -/*!**********************************************************************!*\ - !*** ./node_modules/@riophae/vue-treeselect/dist/vue-treeselect.css ***! - \**********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("// style-loader: Adds some css to the DOM by adding a in svg, where nodeName is 'style',\n // CSS classes is defined globally wherever the style tags are declared.\n\n if (nodeName === 'defs') {\n // define flag\n this._isDefine = true;\n } else if (nodeName === 'text') {\n this._isText = true;\n }\n\n var el;\n\n if (this._isDefine) {\n var parser = defineParsers[nodeName];\n\n if (parser) {\n var def = parser.call(this, xmlNode);\n var id = xmlNode.getAttribute('id');\n\n if (id) {\n this._defs[id] = def;\n }\n }\n } else {\n var parser = nodeParsers[nodeName];\n\n if (parser) {\n el = parser.call(this, xmlNode, parentGroup);\n parentGroup.add(el);\n }\n }\n\n var child = xmlNode.firstChild;\n\n while (child) {\n if (child.nodeType === 1) {\n this._parseNode(child, el);\n } // Is text\n\n\n if (child.nodeType === 3 && this._isText) {\n this._parseText(child, el);\n }\n\n child = child.nextSibling;\n } // Quit define\n\n\n if (nodeName === 'defs') {\n this._isDefine = false;\n } else if (nodeName === 'text') {\n this._isText = false;\n }\n};\n\nSVGParser.prototype._parseText = function (xmlNode, parentGroup) {\n if (xmlNode.nodeType === 1) {\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n this._textX += parseFloat(dx);\n this._textY += parseFloat(dy);\n }\n\n var text = new Text({\n style: {\n text: xmlNode.textContent,\n transformText: true\n },\n position: [this._textX || 0, this._textY || 0]\n });\n inheritStyle(parentGroup, text);\n parseAttributes(xmlNode, text, this._defs);\n var fontSize = text.style.fontSize;\n\n if (fontSize && fontSize < 9) {\n // PENDING\n text.style.fontSize = 9;\n text.scale = text.scale || [1, 1];\n text.scale[0] *= fontSize / 9;\n text.scale[1] *= fontSize / 9;\n }\n\n var rect = text.getBoundingRect();\n this._textX += rect.width;\n parentGroup.add(text);\n return text;\n};\n\nvar nodeParsers = {\n 'g': function (xmlNode, parentGroup) {\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n return g;\n },\n 'rect': function (xmlNode, parentGroup) {\n var rect = new Rect();\n inheritStyle(parentGroup, rect);\n parseAttributes(xmlNode, rect, this._defs);\n rect.setShape({\n x: parseFloat(xmlNode.getAttribute('x') || 0),\n y: parseFloat(xmlNode.getAttribute('y') || 0),\n width: parseFloat(xmlNode.getAttribute('width') || 0),\n height: parseFloat(xmlNode.getAttribute('height') || 0)\n }); // console.log(xmlNode.getAttribute('transform'));\n // console.log(rect.transform);\n\n return rect;\n },\n 'circle': function (xmlNode, parentGroup) {\n var circle = new Circle();\n inheritStyle(parentGroup, circle);\n parseAttributes(xmlNode, circle, this._defs);\n circle.setShape({\n cx: parseFloat(xmlNode.getAttribute('cx') || 0),\n cy: parseFloat(xmlNode.getAttribute('cy') || 0),\n r: parseFloat(xmlNode.getAttribute('r') || 0)\n });\n return circle;\n },\n 'line': function (xmlNode, parentGroup) {\n var line = new Line();\n inheritStyle(parentGroup, line);\n parseAttributes(xmlNode, line, this._defs);\n line.setShape({\n x1: parseFloat(xmlNode.getAttribute('x1') || 0),\n y1: parseFloat(xmlNode.getAttribute('y1') || 0),\n x2: parseFloat(xmlNode.getAttribute('x2') || 0),\n y2: parseFloat(xmlNode.getAttribute('y2') || 0)\n });\n return line;\n },\n 'ellipse': function (xmlNode, parentGroup) {\n var ellipse = new Ellipse();\n inheritStyle(parentGroup, ellipse);\n parseAttributes(xmlNode, ellipse, this._defs);\n ellipse.setShape({\n cx: parseFloat(xmlNode.getAttribute('cx') || 0),\n cy: parseFloat(xmlNode.getAttribute('cy') || 0),\n rx: parseFloat(xmlNode.getAttribute('rx') || 0),\n ry: parseFloat(xmlNode.getAttribute('ry') || 0)\n });\n return ellipse;\n },\n 'polygon': function (xmlNode, parentGroup) {\n var points = xmlNode.getAttribute('points');\n\n if (points) {\n points = parsePoints(points);\n }\n\n var polygon = new Polygon({\n shape: {\n points: points || []\n }\n });\n inheritStyle(parentGroup, polygon);\n parseAttributes(xmlNode, polygon, this._defs);\n return polygon;\n },\n 'polyline': function (xmlNode, parentGroup) {\n var path = new Path();\n inheritStyle(parentGroup, path);\n parseAttributes(xmlNode, path, this._defs);\n var points = xmlNode.getAttribute('points');\n\n if (points) {\n points = parsePoints(points);\n }\n\n var polyline = new Polyline({\n shape: {\n points: points || []\n }\n });\n return polyline;\n },\n 'image': function (xmlNode, parentGroup) {\n var img = new ZImage();\n inheritStyle(parentGroup, img);\n parseAttributes(xmlNode, img, this._defs);\n img.setStyle({\n image: xmlNode.getAttribute('xlink:href'),\n x: xmlNode.getAttribute('x'),\n y: xmlNode.getAttribute('y'),\n width: xmlNode.getAttribute('width'),\n height: xmlNode.getAttribute('height')\n });\n return img;\n },\n 'text': function (xmlNode, parentGroup) {\n var x = xmlNode.getAttribute('x') || 0;\n var y = xmlNode.getAttribute('y') || 0;\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n this._textX = parseFloat(x) + parseFloat(dx);\n this._textY = parseFloat(y) + parseFloat(dy);\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n return g;\n },\n 'tspan': function (xmlNode, parentGroup) {\n var x = xmlNode.getAttribute('x');\n var y = xmlNode.getAttribute('y');\n\n if (x != null) {\n // new offset x\n this._textX = parseFloat(x);\n }\n\n if (y != null) {\n // new offset y\n this._textY = parseFloat(y);\n }\n\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n this._textX += dx;\n this._textY += dy;\n return g;\n },\n 'path': function (xmlNode, parentGroup) {\n // TODO svg fill rule\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-rule\n // path.style.globalCompositeOperation = 'xor';\n var d = xmlNode.getAttribute('d') || ''; // Performance sensitive.\n\n var path = createFromString(d);\n inheritStyle(parentGroup, path);\n parseAttributes(xmlNode, path, this._defs);\n return path;\n }\n};\nvar defineParsers = {\n 'lineargradient': function (xmlNode) {\n var x1 = parseInt(xmlNode.getAttribute('x1') || 0, 10);\n var y1 = parseInt(xmlNode.getAttribute('y1') || 0, 10);\n var x2 = parseInt(xmlNode.getAttribute('x2') || 10, 10);\n var y2 = parseInt(xmlNode.getAttribute('y2') || 0, 10);\n var gradient = new LinearGradient(x1, y1, x2, y2);\n\n _parseGradientColorStops(xmlNode, gradient);\n\n return gradient;\n },\n 'radialgradient': function (xmlNode) {}\n};\n\nfunction _parseGradientColorStops(xmlNode, gradient) {\n var stop = xmlNode.firstChild;\n\n while (stop) {\n if (stop.nodeType === 1) {\n var offset = stop.getAttribute('offset');\n\n if (offset.indexOf('%') > 0) {\n // percentage\n offset = parseInt(offset, 10) / 100;\n } else if (offset) {\n // number from 0 to 1\n offset = parseFloat(offset);\n } else {\n offset = 0;\n }\n\n var stopColor = stop.getAttribute('stop-color') || '#000000';\n gradient.addColorStop(offset, stopColor);\n }\n\n stop = stop.nextSibling;\n }\n}\n\nfunction inheritStyle(parent, child) {\n if (parent && parent.__inheritedStyle) {\n if (!child.__inheritedStyle) {\n child.__inheritedStyle = {};\n }\n\n defaults(child.__inheritedStyle, parent.__inheritedStyle);\n }\n}\n\nfunction parsePoints(pointsString) {\n var list = trim(pointsString).split(DILIMITER_REG);\n var points = [];\n\n for (var i = 0; i < list.length; i += 2) {\n var x = parseFloat(list[i]);\n var y = parseFloat(list[i + 1]);\n points.push([x, y]);\n }\n\n return points;\n}\n\nvar attributesMap = {\n 'fill': 'fill',\n 'stroke': 'stroke',\n 'stroke-width': 'lineWidth',\n 'opacity': 'opacity',\n 'fill-opacity': 'fillOpacity',\n 'stroke-opacity': 'strokeOpacity',\n 'stroke-dasharray': 'lineDash',\n 'stroke-dashoffset': 'lineDashOffset',\n 'stroke-linecap': 'lineCap',\n 'stroke-linejoin': 'lineJoin',\n 'stroke-miterlimit': 'miterLimit',\n 'font-family': 'fontFamily',\n 'font-size': 'fontSize',\n 'font-style': 'fontStyle',\n 'font-weight': 'fontWeight',\n 'text-align': 'textAlign',\n 'alignment-baseline': 'textBaseline'\n};\n\nfunction parseAttributes(xmlNode, el, defs, onlyInlineStyle) {\n var zrStyle = el.__inheritedStyle || {};\n var isTextEl = el.type === 'text'; // TODO Shadow\n\n if (xmlNode.nodeType === 1) {\n parseTransformAttribute(xmlNode, el);\n extend(zrStyle, parseStyleAttribute(xmlNode));\n\n if (!onlyInlineStyle) {\n for (var svgAttrName in attributesMap) {\n if (attributesMap.hasOwnProperty(svgAttrName)) {\n var attrValue = xmlNode.getAttribute(svgAttrName);\n\n if (attrValue != null) {\n zrStyle[attributesMap[svgAttrName]] = attrValue;\n }\n }\n }\n }\n }\n\n var elFillProp = isTextEl ? 'textFill' : 'fill';\n var elStrokeProp = isTextEl ? 'textStroke' : 'stroke';\n el.style = el.style || new Style();\n var elStyle = el.style;\n zrStyle.fill != null && elStyle.set(elFillProp, getPaint(zrStyle.fill, defs));\n zrStyle.stroke != null && elStyle.set(elStrokeProp, getPaint(zrStyle.stroke, defs));\n each(['lineWidth', 'opacity', 'fillOpacity', 'strokeOpacity', 'miterLimit', 'fontSize'], function (propName) {\n var elPropName = propName === 'lineWidth' && isTextEl ? 'textStrokeWidth' : propName;\n zrStyle[propName] != null && elStyle.set(elPropName, parseFloat(zrStyle[propName]));\n });\n\n if (!zrStyle.textBaseline || zrStyle.textBaseline === 'auto') {\n zrStyle.textBaseline = 'alphabetic';\n }\n\n if (zrStyle.textBaseline === 'alphabetic') {\n zrStyle.textBaseline = 'bottom';\n }\n\n if (zrStyle.textAlign === 'start') {\n zrStyle.textAlign = 'left';\n }\n\n if (zrStyle.textAlign === 'end') {\n zrStyle.textAlign = 'right';\n }\n\n each(['lineDashOffset', 'lineCap', 'lineJoin', 'fontWeight', 'fontFamily', 'fontStyle', 'textAlign', 'textBaseline'], function (propName) {\n zrStyle[propName] != null && elStyle.set(propName, zrStyle[propName]);\n });\n\n if (zrStyle.lineDash) {\n el.style.lineDash = trim(zrStyle.lineDash).split(DILIMITER_REG);\n }\n\n if (elStyle[elStrokeProp] && elStyle[elStrokeProp] !== 'none') {\n // enable stroke\n el[elStrokeProp] = true;\n }\n\n el.__inheritedStyle = zrStyle;\n}\n\nvar urlRegex = /url\\(\\s*#(.*?)\\)/;\n\nfunction getPaint(str, defs) {\n // if (str === 'none') {\n // return;\n // }\n var urlMatch = defs && str && str.match(urlRegex);\n\n if (urlMatch) {\n var url = trim(urlMatch[1]);\n var def = defs[url];\n return def;\n }\n\n return str;\n}\n\nvar transformRegex = /(translate|scale|rotate|skewX|skewY|matrix)\\(([\\-\\s0-9\\.e,]*)\\)/g;\n\nfunction parseTransformAttribute(xmlNode, node) {\n var transform = xmlNode.getAttribute('transform');\n\n if (transform) {\n transform = transform.replace(/,/g, ' ');\n var m = null;\n var transformOps = [];\n transform.replace(transformRegex, function (str, type, value) {\n transformOps.push(type, value);\n });\n\n for (var i = transformOps.length - 1; i > 0; i -= 2) {\n var value = transformOps[i];\n var type = transformOps[i - 1];\n m = m || matrix.create();\n\n switch (type) {\n case 'translate':\n value = trim(value).split(DILIMITER_REG);\n matrix.translate(m, m, [parseFloat(value[0]), parseFloat(value[1] || 0)]);\n break;\n\n case 'scale':\n value = trim(value).split(DILIMITER_REG);\n matrix.scale(m, m, [parseFloat(value[0]), parseFloat(value[1] || value[0])]);\n break;\n\n case 'rotate':\n value = trim(value).split(DILIMITER_REG);\n matrix.rotate(m, m, parseFloat(value[0]));\n break;\n\n case 'skew':\n value = trim(value).split(DILIMITER_REG);\n console.warn('Skew transform is not supported yet');\n break;\n\n case 'matrix':\n var value = trim(value).split(DILIMITER_REG);\n m[0] = parseFloat(value[0]);\n m[1] = parseFloat(value[1]);\n m[2] = parseFloat(value[2]);\n m[3] = parseFloat(value[3]);\n m[4] = parseFloat(value[4]);\n m[5] = parseFloat(value[5]);\n break;\n }\n }\n\n node.setLocalTransform(m);\n }\n} // Value may contain space.\n\n\nvar styleRegex = /([^\\s:;]+)\\s*:\\s*([^:;]+)/g;\n\nfunction parseStyleAttribute(xmlNode) {\n var style = xmlNode.getAttribute('style');\n var result = {};\n\n if (!style) {\n return result;\n }\n\n var styleList = {};\n styleRegex.lastIndex = 0;\n var styleRegResult;\n\n while ((styleRegResult = styleRegex.exec(style)) != null) {\n styleList[styleRegResult[1]] = styleRegResult[2];\n }\n\n for (var svgAttrName in attributesMap) {\n if (attributesMap.hasOwnProperty(svgAttrName) && styleList[svgAttrName] != null) {\n result[attributesMap[svgAttrName]] = styleList[svgAttrName];\n }\n }\n\n return result;\n}\n/**\n * @param {Array.} viewBoxRect\n * @param {number} width\n * @param {number} height\n * @return {Object} {scale, position}\n */\n\n\nfunction makeViewBoxTransform(viewBoxRect, width, height) {\n var scaleX = width / viewBoxRect.width;\n var scaleY = height / viewBoxRect.height;\n var scale = Math.min(scaleX, scaleY); // preserveAspectRatio 'xMidYMid'\n\n var viewBoxScale = [scale, scale];\n var viewBoxPosition = [-(viewBoxRect.x + viewBoxRect.width / 2) * scale + width / 2, -(viewBoxRect.y + viewBoxRect.height / 2) * scale + height / 2];\n return {\n scale: viewBoxScale,\n position: viewBoxPosition\n };\n}\n/**\n * @param {string|XMLElement} xml\n * @param {Object} [opt]\n * @param {number} [opt.width] Default width if svg width not specified or is a percent value.\n * @param {number} [opt.height] Default height if svg height not specified or is a percent value.\n * @param {boolean} [opt.ignoreViewBox]\n * @param {boolean} [opt.ignoreRootClip]\n * @return {Object} result:\n * {\n * root: Group, The root of the the result tree of zrender shapes,\n * width: number, the viewport width of the SVG,\n * height: number, the viewport height of the SVG,\n * viewBoxRect: {x, y, width, height}, the declared viewBox rect of the SVG, if exists,\n * viewBoxTransform: the {scale, position} calculated by viewBox and viewport, is exists.\n * }\n */\n\n\nfunction parseSVG(xml, opt) {\n var parser = new SVGParser();\n return parser.parse(xml, opt);\n}\n\nexports.parseXML = parseXML;\nexports.makeViewBoxTransform = makeViewBoxTransform;\nexports.parseSVG = parseSVG;\n\n//# sourceURL=webpack:///./node_modules/zrender/lib/tool/parseSVG.js?"); - -/***/ }), - -/***/ "./node_modules/zrender/lib/tool/path.js": -/*!***********************************************!*\ - !*** ./node_modules/zrender/lib/tool/path.js ***! - \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("var Path = __webpack_require__(/*! ../graphic/Path */ \"./node_modules/zrender/lib/graphic/Path.js\");\n\nvar PathProxy = __webpack_require__(/*! ../core/PathProxy */ \"./node_modules/zrender/lib/core/PathProxy.js\");\n\nvar transformPath = __webpack_require__(/*! ./transformPath */ \"./node_modules/zrender/lib/tool/transformPath.js\");\n\n// command chars\n// var cc = [\n// 'm', 'M', 'l', 'L', 'v', 'V', 'h', 'H', 'z', 'Z',\n// 'c', 'C', 'q', 'Q', 't', 'T', 's', 'S', 'a', 'A'\n// ];\nvar mathSqrt = Math.sqrt;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI = Math.PI;\n\nvar vMag = function (v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n};\n\nvar vRatio = function (u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\n};\n\nvar vAngle = function (u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n};\n\nfunction processArc(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg, cmd, path) {\n var psi = psiDeg * (PI / 180.0);\n var xp = mathCos(psi) * (x1 - x2) / 2.0 + mathSin(psi) * (y1 - y2) / 2.0;\n var yp = -1 * mathSin(psi) * (x1 - x2) / 2.0 + mathCos(psi) * (y1 - y2) / 2.0;\n var lambda = xp * xp / (rx * rx) + yp * yp / (ry * ry);\n\n if (lambda > 1) {\n rx *= mathSqrt(lambda);\n ry *= mathSqrt(lambda);\n }\n\n var f = (fa === fs ? -1 : 1) * mathSqrt((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) / (rx * rx * (yp * yp) + ry * ry * (xp * xp))) || 0;\n var cxp = f * rx * yp / ry;\n var cyp = f * -ry * xp / rx;\n var cx = (x1 + x2) / 2.0 + mathCos(psi) * cxp - mathSin(psi) * cyp;\n var cy = (y1 + y2) / 2.0 + mathSin(psi) * cxp + mathCos(psi) * cyp;\n var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n var dTheta = vAngle(u, v);\n\n if (vRatio(u, v) <= -1) {\n dTheta = PI;\n }\n\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n\n if (fs === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * PI;\n }\n\n if (fs === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * PI;\n }\n\n path.addData(cmd, cx, cy, rx, ry, theta, dTheta, psi, fs);\n}\n\nvar commandReg = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig; // Consider case:\n// (1) delimiter can be comma or space, where continuous commas\n// or spaces should be seen as one comma.\n// (2) value can be like:\n// '2e-4', 'l.5.9' (ignore 0), 'M-10-10', 'l-2.43e-1,34.9983',\n// 'l-.5E1,54', '121-23-44-11' (no delimiter)\n\nvar numberReg = /-?([0-9]*\\.)?[0-9]+([eE]-?[0-9]+)?/g; // var valueSplitReg = /[\\s,]+/;\n\nfunction createPathProxyFromString(data) {\n if (!data) {\n return new PathProxy();\n } // var data = data.replace(/-/g, ' -')\n // .replace(/ /g, ' ')\n // .replace(/ /g, ',')\n // .replace(/,,/g, ',');\n // var n;\n // create pipes so that we can split the data\n // for (n = 0; n < cc.length; n++) {\n // cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]);\n // }\n // data = data.replace(/-/g, ',-');\n // create array\n // var arr = cs.split('|');\n // init context point\n\n\n var cpx = 0;\n var cpy = 0;\n var subpathX = cpx;\n var subpathY = cpy;\n var prevCmd;\n var path = new PathProxy();\n var CMD = PathProxy.CMD; // commandReg.lastIndex = 0;\n // var cmdResult;\n // while ((cmdResult = commandReg.exec(data)) != null) {\n // var cmdStr = cmdResult[1];\n // var cmdContent = cmdResult[2];\n\n var cmdList = data.match(commandReg);\n\n for (var l = 0; l < cmdList.length; l++) {\n var cmdText = cmdList[l];\n var cmdStr = cmdText.charAt(0);\n var cmd; // String#split is faster a little bit than String#replace or RegExp#exec.\n // var p = cmdContent.split(valueSplitReg);\n // var pLen = 0;\n // for (var i = 0; i < p.length; i++) {\n // // '' and other invalid str => NaN\n // var val = parseFloat(p[i]);\n // !isNaN(val) && (p[pLen++] = val);\n // }\n\n var p = cmdText.match(numberReg) || [];\n var pLen = p.length;\n\n for (var i = 0; i < pLen; i++) {\n p[i] = parseFloat(p[i]);\n }\n\n var off = 0;\n\n while (off < pLen) {\n var ctlPtx;\n var ctlPty;\n var rx;\n var ry;\n var psi;\n var fa;\n var fs;\n var x1 = cpx;\n var y1 = cpy; // convert l, H, h, V, and v to L\n\n switch (cmdStr) {\n case 'l':\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'L':\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'm':\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.M;\n path.addData(cmd, cpx, cpy);\n subpathX = cpx;\n subpathY = cpy;\n cmdStr = 'l';\n break;\n\n case 'M':\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.M;\n path.addData(cmd, cpx, cpy);\n subpathX = cpx;\n subpathY = cpy;\n cmdStr = 'L';\n break;\n\n case 'h':\n cpx += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'H':\n cpx = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'v':\n cpy += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'V':\n cpy = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'C':\n cmd = CMD.C;\n path.addData(cmd, p[off++], p[off++], p[off++], p[off++], p[off++], p[off++]);\n cpx = p[off - 2];\n cpy = p[off - 1];\n break;\n\n case 'c':\n cmd = CMD.C;\n path.addData(cmd, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy);\n cpx += p[off - 2];\n cpy += p[off - 1];\n break;\n\n case 'S':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.C) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cmd = CMD.C;\n x1 = p[off++];\n y1 = p[off++];\n cpx = p[off++];\n cpy = p[off++];\n path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\n break;\n\n case 's':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.C) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cmd = CMD.C;\n x1 = cpx + p[off++];\n y1 = cpy + p[off++];\n cpx += p[off++];\n cpy += p[off++];\n path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\n break;\n\n case 'Q':\n x1 = p[off++];\n y1 = p[off++];\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.Q;\n path.addData(cmd, x1, y1, cpx, cpy);\n break;\n\n case 'q':\n x1 = p[off++] + cpx;\n y1 = p[off++] + cpy;\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.Q;\n path.addData(cmd, x1, y1, cpx, cpy);\n break;\n\n case 'T':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.Q) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.Q;\n path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\n break;\n\n case 't':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.Q) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.Q;\n path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\n break;\n\n case 'A':\n rx = p[off++];\n ry = p[off++];\n psi = p[off++];\n fa = p[off++];\n fs = p[off++];\n x1 = cpx, y1 = cpy;\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.A;\n processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\n break;\n\n case 'a':\n rx = p[off++];\n ry = p[off++];\n psi = p[off++];\n fa = p[off++];\n fs = p[off++];\n x1 = cpx, y1 = cpy;\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.A;\n processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\n break;\n }\n }\n\n if (cmdStr === 'z' || cmdStr === 'Z') {\n cmd = CMD.Z;\n path.addData(cmd); // z may be in the middle of the path.\n\n cpx = subpathX;\n cpy = subpathY;\n }\n\n prevCmd = cmd;\n }\n\n path.toStatic();\n return path;\n} // TODO Optimize double memory cost problem\n\n\nfunction createPathOptions(str, opts) {\n var pathProxy = createPathProxyFromString(str);\n opts = opts || {};\n\n opts.buildPath = function (path) {\n if (path.setData) {\n path.setData(pathProxy.data); // Svg and vml renderer don't have context\n\n var ctx = path.getContext();\n\n if (ctx) {\n path.rebuildPath(ctx);\n }\n } else {\n var ctx = path;\n pathProxy.rebuildPath(ctx);\n }\n };\n\n opts.applyTransform = function (m) {\n transformPath(pathProxy, m);\n this.dirty(true);\n };\n\n return opts;\n}\n/**\n * Create a Path object from path string data\n * http://www.w3.org/TR/SVG/paths.html#PathData\n * @param {Object} opts Other options\n */\n\n\nfunction createFromString(str, opts) {\n return new Path(createPathOptions(str, opts));\n}\n/**\n * Create a Path class from path string data\n * @param {string} str\n * @param {Object} opts Other options\n */\n\n\nfunction extendFromString(str, opts) {\n return Path.extend(createPathOptions(str, opts));\n}\n/**\n * Merge multiple paths\n */\n// TODO Apply transform\n// TODO stroke dash\n// TODO Optimize double memory cost problem\n\n\nfunction mergePath(pathEls, opts) {\n var pathList = [];\n var len = pathEls.length;\n\n for (var i = 0; i < len; i++) {\n var pathEl = pathEls[i];\n\n if (!pathEl.path) {\n pathEl.createPathProxy();\n }\n\n if (pathEl.__dirtyPath) {\n pathEl.buildPath(pathEl.path, pathEl.shape, true);\n }\n\n pathList.push(pathEl.path);\n }\n\n var pathBundle = new Path(opts); // Need path proxy.\n\n pathBundle.createPathProxy();\n\n pathBundle.buildPath = function (path) {\n path.appendPath(pathList); // Svg and vml renderer don't have context\n\n var ctx = path.getContext();\n\n if (ctx) {\n path.rebuildPath(ctx);\n }\n };\n\n return pathBundle;\n}\n\nexports.createFromString = createFromString;\nexports.extendFromString = extendFromString;\nexports.mergePath = mergePath;\n\n//# sourceURL=webpack:///./node_modules/zrender/lib/tool/path.js?"); - -/***/ }), - -/***/ "./node_modules/zrender/lib/tool/transformPath.js": -/*!********************************************************!*\ - !*** ./node_modules/zrender/lib/tool/transformPath.js ***! - \********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("var PathProxy = __webpack_require__(/*! ../core/PathProxy */ \"./node_modules/zrender/lib/core/PathProxy.js\");\n\nvar _vector = __webpack_require__(/*! ../core/vector */ \"./node_modules/zrender/lib/core/vector.js\");\n\nvar v2ApplyTransform = _vector.applyTransform;\nvar CMD = PathProxy.CMD;\nvar points = [[], [], []];\nvar mathSqrt = Math.sqrt;\nvar mathAtan2 = Math.atan2;\n\nfunction _default(path, m) {\n var data = path.data;\n var cmd;\n var nPoint;\n var i;\n var j;\n var k;\n var p;\n var M = CMD.M;\n var C = CMD.C;\n var L = CMD.L;\n var R = CMD.R;\n var A = CMD.A;\n var Q = CMD.Q;\n\n for (i = 0, j = 0; i < data.length;) {\n cmd = data[i++];\n j = i;\n nPoint = 0;\n\n switch (cmd) {\n case M:\n nPoint = 1;\n break;\n\n case L:\n nPoint = 1;\n break;\n\n case C:\n nPoint = 3;\n break;\n\n case Q:\n nPoint = 2;\n break;\n\n case A:\n var x = m[4];\n var y = m[5];\n var sx = mathSqrt(m[0] * m[0] + m[1] * m[1]);\n var sy = mathSqrt(m[2] * m[2] + m[3] * m[3]);\n var angle = mathAtan2(-m[1] / sy, m[0] / sx); // cx\n\n data[i] *= sx;\n data[i++] += x; // cy\n\n data[i] *= sy;\n data[i++] += y; // Scale rx and ry\n // FIXME Assume psi is 0 here\n\n data[i++] *= sx;\n data[i++] *= sy; // Start angle\n\n data[i++] += angle; // end angle\n\n data[i++] += angle; // FIXME psi\n\n i += 2;\n j = i;\n break;\n\n case R:\n // x0, y0\n p[0] = data[i++];\n p[1] = data[i++];\n v2ApplyTransform(p, p, m);\n data[j++] = p[0];\n data[j++] = p[1]; // x1, y1\n\n p[0] += data[i++];\n p[1] += data[i++];\n v2ApplyTransform(p, p, m);\n data[j++] = p[0];\n data[j++] = p[1];\n }\n\n for (k = 0; k < nPoint; k++) {\n var p = points[k];\n p[0] = data[i++];\n p[1] = data[i++];\n v2ApplyTransform(p, p, m); // Write back\n\n data[j++] = p[0];\n data[j++] = p[1];\n }\n }\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/zrender/lib/tool/transformPath.js?"); - -/***/ }), - -/***/ "./node_modules/zrender/lib/vml/Painter.js": -/*!*************************************************!*\ - !*** ./node_modules/zrender/lib/vml/Painter.js ***! - \*************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("var logError = __webpack_require__(/*! ../core/log */ \"./node_modules/zrender/lib/core/log.js\");\n\nvar vmlCore = __webpack_require__(/*! ./core */ \"./node_modules/zrender/lib/vml/core.js\");\n\nvar _util = __webpack_require__(/*! ../core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar each = _util.each;\n\n/**\n * VML Painter.\n *\n * @module zrender/vml/Painter\n */\nfunction parseInt10(val) {\n return parseInt(val, 10);\n}\n/**\n * @alias module:zrender/vml/Painter\n */\n\n\nfunction VMLPainter(root, storage) {\n vmlCore.initVML();\n this.root = root;\n this.storage = storage;\n var vmlViewport = document.createElement('div');\n var vmlRoot = document.createElement('div');\n vmlViewport.style.cssText = 'display:inline-block;overflow:hidden;position:relative;width:300px;height:150px;';\n vmlRoot.style.cssText = 'position:absolute;left:0;top:0;';\n root.appendChild(vmlViewport);\n this._vmlRoot = vmlRoot;\n this._vmlViewport = vmlViewport;\n this.resize(); // Modify storage\n\n var oldDelFromStorage = storage.delFromStorage;\n var oldAddToStorage = storage.addToStorage;\n\n storage.delFromStorage = function (el) {\n oldDelFromStorage.call(storage, el);\n\n if (el) {\n el.onRemove && el.onRemove(vmlRoot);\n }\n };\n\n storage.addToStorage = function (el) {\n // Displayable already has a vml node\n el.onAdd && el.onAdd(vmlRoot);\n oldAddToStorage.call(storage, el);\n };\n\n this._firstPaint = true;\n}\n\nVMLPainter.prototype = {\n constructor: VMLPainter,\n getType: function () {\n return 'vml';\n },\n\n /**\n * @return {HTMLDivElement}\n */\n getViewportRoot: function () {\n return this._vmlViewport;\n },\n getViewportRootOffset: function () {\n var viewportRoot = this.getViewportRoot();\n\n if (viewportRoot) {\n return {\n offsetLeft: viewportRoot.offsetLeft || 0,\n offsetTop: viewportRoot.offsetTop || 0\n };\n }\n },\n\n /**\n * 刷新\n */\n refresh: function () {\n var list = this.storage.getDisplayList(true, true);\n\n this._paintList(list);\n },\n _paintList: function (list) {\n var vmlRoot = this._vmlRoot;\n\n for (var i = 0; i < list.length; i++) {\n var el = list[i];\n\n if (el.invisible || el.ignore) {\n if (!el.__alreadyNotVisible) {\n el.onRemove(vmlRoot);\n } // Set as already invisible\n\n\n el.__alreadyNotVisible = true;\n } else {\n if (el.__alreadyNotVisible) {\n el.onAdd(vmlRoot);\n }\n\n el.__alreadyNotVisible = false;\n\n if (el.__dirty) {\n el.beforeBrush && el.beforeBrush();\n (el.brushVML || el.brush).call(el, vmlRoot);\n el.afterBrush && el.afterBrush();\n }\n }\n\n el.__dirty = false;\n }\n\n if (this._firstPaint) {\n // Detached from document at first time\n // to avoid page refreshing too many times\n // FIXME 如果每次都先 removeChild 可能会导致一些填充和描边的效果改变\n this._vmlViewport.appendChild(vmlRoot);\n\n this._firstPaint = false;\n }\n },\n resize: function (width, height) {\n var width = width == null ? this._getWidth() : width;\n var height = height == null ? this._getHeight() : height;\n\n if (this._width !== width || this._height !== height) {\n this._width = width;\n this._height = height;\n var vmlViewportStyle = this._vmlViewport.style;\n vmlViewportStyle.width = width + 'px';\n vmlViewportStyle.height = height + 'px';\n }\n },\n dispose: function () {\n this.root.innerHTML = '';\n this._vmlRoot = this._vmlViewport = this.storage = null;\n },\n getWidth: function () {\n return this._width;\n },\n getHeight: function () {\n return this._height;\n },\n clear: function () {\n if (this._vmlViewport) {\n this.root.removeChild(this._vmlViewport);\n }\n },\n _getWidth: function () {\n var root = this.root;\n var stl = root.currentStyle;\n return (root.clientWidth || parseInt10(stl.width)) - parseInt10(stl.paddingLeft) - parseInt10(stl.paddingRight) | 0;\n },\n _getHeight: function () {\n var root = this.root;\n var stl = root.currentStyle;\n return (root.clientHeight || parseInt10(stl.height)) - parseInt10(stl.paddingTop) - parseInt10(stl.paddingBottom) | 0;\n }\n}; // Not supported methods\n\nfunction createMethodNotSupport(method) {\n return function () {\n logError('In IE8.0 VML mode painter not support method \"' + method + '\"');\n };\n} // Unsupported methods\n\n\neach(['getLayer', 'insertLayer', 'eachLayer', 'eachBuiltinLayer', 'eachOtherLayer', 'getLayers', 'modLayer', 'delLayer', 'clearLayer', 'toDataURL', 'pathToImage'], function (name) {\n VMLPainter.prototype[name] = createMethodNotSupport(name);\n});\nvar _default = VMLPainter;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/zrender/lib/vml/Painter.js?"); - -/***/ }), - -/***/ "./node_modules/zrender/lib/vml/core.js": -/*!**********************************************!*\ - !*** ./node_modules/zrender/lib/vml/core.js ***! - \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("var env = __webpack_require__(/*! ../core/env */ \"./node_modules/zrender/lib/core/env.js\");\n\nvar urn = 'urn:schemas-microsoft-com:vml';\nvar win = typeof window === 'undefined' ? null : window;\nvar vmlInited = false;\nvar doc = win && win.document;\n\nfunction createNode(tagName) {\n return doCreateNode(tagName);\n} // Avoid assign to an exported variable, for transforming to cjs.\n\n\nvar doCreateNode;\n\nif (doc && !env.canvasSupported) {\n try {\n !doc.namespaces.zrvml && doc.namespaces.add('zrvml', urn);\n\n doCreateNode = function (tagName) {\n return doc.createElement('');\n };\n } catch (e) {\n doCreateNode = function (tagName) {\n return doc.createElement('<' + tagName + ' xmlns=\"' + urn + '\" class=\"zrvml\">');\n };\n }\n} // From raphael\n\n\nfunction initVML() {\n if (vmlInited || !doc) {\n return;\n }\n\n vmlInited = true;\n var styleSheets = doc.styleSheets;\n\n if (styleSheets.length < 31) {\n doc.createStyleSheet().addRule('.zrvml', 'behavior:url(#default#VML)');\n } else {\n // http://msdn.microsoft.com/en-us/library/ms531194%28VS.85%29.aspx\n styleSheets[0].addRule('.zrvml', 'behavior:url(#default#VML)');\n }\n}\n\nexports.doc = doc;\nexports.createNode = createNode;\nexports.initVML = initVML;\n\n//# sourceURL=webpack:///./node_modules/zrender/lib/vml/core.js?"); - -/***/ }), - -/***/ "./node_modules/zrender/lib/vml/graphic.js": -/*!*************************************************!*\ - !*** ./node_modules/zrender/lib/vml/graphic.js ***! - \*************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("var env = __webpack_require__(/*! ../core/env */ \"./node_modules/zrender/lib/core/env.js\");\n\nvar _vector = __webpack_require__(/*! ../core/vector */ \"./node_modules/zrender/lib/core/vector.js\");\n\nvar applyTransform = _vector.applyTransform;\n\nvar BoundingRect = __webpack_require__(/*! ../core/BoundingRect */ \"./node_modules/zrender/lib/core/BoundingRect.js\");\n\nvar colorTool = __webpack_require__(/*! ../tool/color */ \"./node_modules/zrender/lib/tool/color.js\");\n\nvar textContain = __webpack_require__(/*! ../contain/text */ \"./node_modules/zrender/lib/contain/text.js\");\n\nvar textHelper = __webpack_require__(/*! ../graphic/helper/text */ \"./node_modules/zrender/lib/graphic/helper/text.js\");\n\nvar RectText = __webpack_require__(/*! ../graphic/mixin/RectText */ \"./node_modules/zrender/lib/graphic/mixin/RectText.js\");\n\nvar Displayable = __webpack_require__(/*! ../graphic/Displayable */ \"./node_modules/zrender/lib/graphic/Displayable.js\");\n\nvar ZImage = __webpack_require__(/*! ../graphic/Image */ \"./node_modules/zrender/lib/graphic/Image.js\");\n\nvar Text = __webpack_require__(/*! ../graphic/Text */ \"./node_modules/zrender/lib/graphic/Text.js\");\n\nvar Path = __webpack_require__(/*! ../graphic/Path */ \"./node_modules/zrender/lib/graphic/Path.js\");\n\nvar PathProxy = __webpack_require__(/*! ../core/PathProxy */ \"./node_modules/zrender/lib/core/PathProxy.js\");\n\nvar Gradient = __webpack_require__(/*! ../graphic/Gradient */ \"./node_modules/zrender/lib/graphic/Gradient.js\");\n\nvar vmlCore = __webpack_require__(/*! ./core */ \"./node_modules/zrender/lib/vml/core.js\");\n\n// http://www.w3.org/TR/NOTE-VML\n// TODO Use proxy like svg instead of overwrite brush methods\nvar CMD = PathProxy.CMD;\nvar round = Math.round;\nvar sqrt = Math.sqrt;\nvar abs = Math.abs;\nvar cos = Math.cos;\nvar sin = Math.sin;\nvar mathMax = Math.max;\n\nif (!env.canvasSupported) {\n var comma = ',';\n var imageTransformPrefix = 'progid:DXImageTransform.Microsoft';\n var Z = 21600;\n var Z2 = Z / 2;\n var ZLEVEL_BASE = 100000;\n var Z_BASE = 1000;\n\n var initRootElStyle = function (el) {\n el.style.cssText = 'position:absolute;left:0;top:0;width:1px;height:1px;';\n el.coordsize = Z + ',' + Z;\n el.coordorigin = '0,0';\n };\n\n var encodeHtmlAttribute = function (s) {\n return String(s).replace(/&/g, '&').replace(/\"/g, '"');\n };\n\n var rgb2Str = function (r, g, b) {\n return 'rgb(' + [r, g, b].join(',') + ')';\n };\n\n var append = function (parent, child) {\n if (child && parent && child.parentNode !== parent) {\n parent.appendChild(child);\n }\n };\n\n var remove = function (parent, child) {\n if (child && parent && child.parentNode === parent) {\n parent.removeChild(child);\n }\n };\n\n var getZIndex = function (zlevel, z, z2) {\n // z 的取值范围为 [0, 1000]\n return (parseFloat(zlevel) || 0) * ZLEVEL_BASE + (parseFloat(z) || 0) * Z_BASE + z2;\n };\n\n var parsePercent = textHelper.parsePercent;\n /***************************************************\n * PATH\n **************************************************/\n\n var setColorAndOpacity = function (el, color, opacity) {\n var colorArr = colorTool.parse(color);\n opacity = +opacity;\n\n if (isNaN(opacity)) {\n opacity = 1;\n }\n\n if (colorArr) {\n el.color = rgb2Str(colorArr[0], colorArr[1], colorArr[2]);\n el.opacity = opacity * colorArr[3];\n }\n };\n\n var getColorAndAlpha = function (color) {\n var colorArr = colorTool.parse(color);\n return [rgb2Str(colorArr[0], colorArr[1], colorArr[2]), colorArr[3]];\n };\n\n var updateFillNode = function (el, style, zrEl) {\n // TODO pattern\n var fill = style.fill;\n\n if (fill != null) {\n // Modified from excanvas\n if (fill instanceof Gradient) {\n var gradientType;\n var angle = 0;\n var focus = [0, 0]; // additional offset\n\n var shift = 0; // scale factor for offset\n\n var expansion = 1;\n var rect = zrEl.getBoundingRect();\n var rectWidth = rect.width;\n var rectHeight = rect.height;\n\n if (fill.type === 'linear') {\n gradientType = 'gradient';\n var transform = zrEl.transform;\n var p0 = [fill.x * rectWidth, fill.y * rectHeight];\n var p1 = [fill.x2 * rectWidth, fill.y2 * rectHeight];\n\n if (transform) {\n applyTransform(p0, p0, transform);\n applyTransform(p1, p1, transform);\n }\n\n var dx = p1[0] - p0[0];\n var dy = p1[1] - p0[1];\n angle = Math.atan2(dx, dy) * 180 / Math.PI; // The angle should be a non-negative number.\n\n if (angle < 0) {\n angle += 360;\n } // Very small angles produce an unexpected result because they are\n // converted to a scientific notation string.\n\n\n if (angle < 1e-6) {\n angle = 0;\n }\n } else {\n gradientType = 'gradientradial';\n var p0 = [fill.x * rectWidth, fill.y * rectHeight];\n var transform = zrEl.transform;\n var scale = zrEl.scale;\n var width = rectWidth;\n var height = rectHeight;\n focus = [// Percent in bounding rect\n (p0[0] - rect.x) / width, (p0[1] - rect.y) / height];\n\n if (transform) {\n applyTransform(p0, p0, transform);\n }\n\n width /= scale[0] * Z;\n height /= scale[1] * Z;\n var dimension = mathMax(width, height);\n shift = 2 * 0 / dimension;\n expansion = 2 * fill.r / dimension - shift;\n } // We need to sort the color stops in ascending order by offset,\n // otherwise IE won't interpret it correctly.\n\n\n var stops = fill.colorStops.slice();\n stops.sort(function (cs1, cs2) {\n return cs1.offset - cs2.offset;\n });\n var length = stops.length; // Color and alpha list of first and last stop\n\n var colorAndAlphaList = [];\n var colors = [];\n\n for (var i = 0; i < length; i++) {\n var stop = stops[i];\n var colorAndAlpha = getColorAndAlpha(stop.color);\n colors.push(stop.offset * expansion + shift + ' ' + colorAndAlpha[0]);\n\n if (i === 0 || i === length - 1) {\n colorAndAlphaList.push(colorAndAlpha);\n }\n }\n\n if (length >= 2) {\n var color1 = colorAndAlphaList[0][0];\n var color2 = colorAndAlphaList[1][0];\n var opacity1 = colorAndAlphaList[0][1] * style.opacity;\n var opacity2 = colorAndAlphaList[1][1] * style.opacity;\n el.type = gradientType;\n el.method = 'none';\n el.focus = '100%';\n el.angle = angle;\n el.color = color1;\n el.color2 = color2;\n el.colors = colors.join(','); // When colors attribute is used, the meanings of opacity and o:opacity2\n // are reversed.\n\n el.opacity = opacity2; // FIXME g_o_:opacity ?\n\n el.opacity2 = opacity1;\n }\n\n if (gradientType === 'radial') {\n el.focusposition = focus.join(',');\n }\n } else {\n // FIXME Change from Gradient fill to color fill\n setColorAndOpacity(el, fill, style.opacity);\n }\n }\n };\n\n var updateStrokeNode = function (el, style) {\n // if (style.lineJoin != null) {\n // el.joinstyle = style.lineJoin;\n // }\n // if (style.miterLimit != null) {\n // el.miterlimit = style.miterLimit * Z;\n // }\n // if (style.lineCap != null) {\n // el.endcap = style.lineCap;\n // }\n if (style.lineDash) {\n el.dashstyle = style.lineDash.join(' ');\n }\n\n if (style.stroke != null && !(style.stroke instanceof Gradient)) {\n setColorAndOpacity(el, style.stroke, style.opacity);\n }\n };\n\n var updateFillAndStroke = function (vmlEl, type, style, zrEl) {\n var isFill = type === 'fill';\n var el = vmlEl.getElementsByTagName(type)[0]; // Stroke must have lineWidth\n\n if (style[type] != null && style[type] !== 'none' && (isFill || !isFill && style.lineWidth)) {\n vmlEl[isFill ? 'filled' : 'stroked'] = 'true'; // FIXME Remove before updating, or set `colors` will throw error\n\n if (style[type] instanceof Gradient) {\n remove(vmlEl, el);\n }\n\n if (!el) {\n el = vmlCore.createNode(type);\n }\n\n isFill ? updateFillNode(el, style, zrEl) : updateStrokeNode(el, style);\n append(vmlEl, el);\n } else {\n vmlEl[isFill ? 'filled' : 'stroked'] = 'false';\n remove(vmlEl, el);\n }\n };\n\n var points = [[], [], []];\n\n var pathDataToString = function (path, m) {\n var M = CMD.M;\n var C = CMD.C;\n var L = CMD.L;\n var A = CMD.A;\n var Q = CMD.Q;\n var str = [];\n var nPoint;\n var cmdStr;\n var cmd;\n var i;\n var xi;\n var yi;\n var data = path.data;\n var dataLength = path.len();\n\n for (i = 0; i < dataLength;) {\n cmd = data[i++];\n cmdStr = '';\n nPoint = 0;\n\n switch (cmd) {\n case M:\n cmdStr = ' m ';\n nPoint = 1;\n xi = data[i++];\n yi = data[i++];\n points[0][0] = xi;\n points[0][1] = yi;\n break;\n\n case L:\n cmdStr = ' l ';\n nPoint = 1;\n xi = data[i++];\n yi = data[i++];\n points[0][0] = xi;\n points[0][1] = yi;\n break;\n\n case Q:\n case C:\n cmdStr = ' c ';\n nPoint = 3;\n var x1 = data[i++];\n var y1 = data[i++];\n var x2 = data[i++];\n var y2 = data[i++];\n var x3;\n var y3;\n\n if (cmd === Q) {\n // Convert quadratic to cubic using degree elevation\n x3 = x2;\n y3 = y2;\n x2 = (x2 + 2 * x1) / 3;\n y2 = (y2 + 2 * y1) / 3;\n x1 = (xi + 2 * x1) / 3;\n y1 = (yi + 2 * y1) / 3;\n } else {\n x3 = data[i++];\n y3 = data[i++];\n }\n\n points[0][0] = x1;\n points[0][1] = y1;\n points[1][0] = x2;\n points[1][1] = y2;\n points[2][0] = x3;\n points[2][1] = y3;\n xi = x3;\n yi = y3;\n break;\n\n case A:\n var x = 0;\n var y = 0;\n var sx = 1;\n var sy = 1;\n var angle = 0;\n\n if (m) {\n // Extract SRT from matrix\n x = m[4];\n y = m[5];\n sx = sqrt(m[0] * m[0] + m[1] * m[1]);\n sy = sqrt(m[2] * m[2] + m[3] * m[3]);\n angle = Math.atan2(-m[1] / sy, m[0] / sx);\n }\n\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var startAngle = data[i++] + angle;\n var endAngle = data[i++] + startAngle + angle; // FIXME\n // var psi = data[i++];\n\n i++;\n var clockwise = data[i++];\n var x0 = cx + cos(startAngle) * rx;\n var y0 = cy + sin(startAngle) * ry;\n var x1 = cx + cos(endAngle) * rx;\n var y1 = cy + sin(endAngle) * ry;\n var type = clockwise ? ' wa ' : ' at ';\n\n if (Math.abs(x0 - x1) < 1e-4) {\n // IE won't render arches drawn counter clockwise if x0 == x1.\n if (Math.abs(endAngle - startAngle) > 1e-2) {\n // Offset x0 by 1/80 of a pixel. Use something\n // that can be represented in binary\n if (clockwise) {\n x0 += 270 / Z;\n }\n } else {\n // Avoid case draw full circle\n if (Math.abs(y0 - cy) < 1e-4) {\n if (clockwise && x0 < cx || !clockwise && x0 > cx) {\n y1 -= 270 / Z;\n } else {\n y1 += 270 / Z;\n }\n } else if (clockwise && y0 < cy || !clockwise && y0 > cy) {\n x1 += 270 / Z;\n } else {\n x1 -= 270 / Z;\n }\n }\n }\n\n str.push(type, round(((cx - rx) * sx + x) * Z - Z2), comma, round(((cy - ry) * sy + y) * Z - Z2), comma, round(((cx + rx) * sx + x) * Z - Z2), comma, round(((cy + ry) * sy + y) * Z - Z2), comma, round((x0 * sx + x) * Z - Z2), comma, round((y0 * sy + y) * Z - Z2), comma, round((x1 * sx + x) * Z - Z2), comma, round((y1 * sy + y) * Z - Z2));\n xi = x1;\n yi = y1;\n break;\n\n case CMD.R:\n var p0 = points[0];\n var p1 = points[1]; // x0, y0\n\n p0[0] = data[i++];\n p0[1] = data[i++]; // x1, y1\n\n p1[0] = p0[0] + data[i++];\n p1[1] = p0[1] + data[i++];\n\n if (m) {\n applyTransform(p0, p0, m);\n applyTransform(p1, p1, m);\n }\n\n p0[0] = round(p0[0] * Z - Z2);\n p1[0] = round(p1[0] * Z - Z2);\n p0[1] = round(p0[1] * Z - Z2);\n p1[1] = round(p1[1] * Z - Z2);\n str.push( // x0, y0\n ' m ', p0[0], comma, p0[1], // x1, y0\n ' l ', p1[0], comma, p0[1], // x1, y1\n ' l ', p1[0], comma, p1[1], // x0, y1\n ' l ', p0[0], comma, p1[1]);\n break;\n\n case CMD.Z:\n // FIXME Update xi, yi\n str.push(' x ');\n }\n\n if (nPoint > 0) {\n str.push(cmdStr);\n\n for (var k = 0; k < nPoint; k++) {\n var p = points[k];\n m && applyTransform(p, p, m); // 不 round 会非常慢\n\n str.push(round(p[0] * Z - Z2), comma, round(p[1] * Z - Z2), k < nPoint - 1 ? comma : '');\n }\n }\n }\n\n return str.join('');\n }; // Rewrite the original path method\n\n\n Path.prototype.brushVML = function (vmlRoot) {\n var style = this.style;\n var vmlEl = this._vmlEl;\n\n if (!vmlEl) {\n vmlEl = vmlCore.createNode('shape');\n initRootElStyle(vmlEl);\n this._vmlEl = vmlEl;\n }\n\n updateFillAndStroke(vmlEl, 'fill', style, this);\n updateFillAndStroke(vmlEl, 'stroke', style, this);\n var m = this.transform;\n var needTransform = m != null;\n var strokeEl = vmlEl.getElementsByTagName('stroke')[0];\n\n if (strokeEl) {\n var lineWidth = style.lineWidth; // Get the line scale.\n // Determinant of this.m_ means how much the area is enlarged by the\n // transformation. So its square root can be used as a scale factor\n // for width.\n\n if (needTransform && !style.strokeNoScale) {\n var det = m[0] * m[3] - m[1] * m[2];\n lineWidth *= sqrt(abs(det));\n }\n\n strokeEl.weight = lineWidth + 'px';\n }\n\n var path = this.path || (this.path = new PathProxy());\n\n if (this.__dirtyPath) {\n path.beginPath();\n path.subPixelOptimize = false;\n this.buildPath(path, this.shape);\n path.toStatic();\n this.__dirtyPath = false;\n }\n\n vmlEl.path = pathDataToString(path, this.transform);\n vmlEl.style.zIndex = getZIndex(this.zlevel, this.z, this.z2); // Append to root\n\n append(vmlRoot, vmlEl); // Text\n\n if (style.text != null) {\n this.drawRectText(vmlRoot, this.getBoundingRect());\n } else {\n this.removeRectText(vmlRoot);\n }\n };\n\n Path.prototype.onRemove = function (vmlRoot) {\n remove(vmlRoot, this._vmlEl);\n this.removeRectText(vmlRoot);\n };\n\n Path.prototype.onAdd = function (vmlRoot) {\n append(vmlRoot, this._vmlEl);\n this.appendRectText(vmlRoot);\n };\n /***************************************************\n * IMAGE\n **************************************************/\n\n\n var isImage = function (img) {\n // FIXME img instanceof Image 如果 img 是一个字符串的时候,IE8 下会报错\n return typeof img === 'object' && img.tagName && img.tagName.toUpperCase() === 'IMG'; // return img instanceof Image;\n }; // Rewrite the original path method\n\n\n ZImage.prototype.brushVML = function (vmlRoot) {\n var style = this.style;\n var image = style.image; // Image original width, height\n\n var ow;\n var oh;\n\n if (isImage(image)) {\n var src = image.src;\n\n if (src === this._imageSrc) {\n ow = this._imageWidth;\n oh = this._imageHeight;\n } else {\n var imageRuntimeStyle = image.runtimeStyle;\n var oldRuntimeWidth = imageRuntimeStyle.width;\n var oldRuntimeHeight = imageRuntimeStyle.height;\n imageRuntimeStyle.width = 'auto';\n imageRuntimeStyle.height = 'auto'; // get the original size\n\n ow = image.width;\n oh = image.height; // and remove overides\n\n imageRuntimeStyle.width = oldRuntimeWidth;\n imageRuntimeStyle.height = oldRuntimeHeight; // Caching image original width, height and src\n\n this._imageSrc = src;\n this._imageWidth = ow;\n this._imageHeight = oh;\n }\n\n image = src;\n } else {\n if (image === this._imageSrc) {\n ow = this._imageWidth;\n oh = this._imageHeight;\n }\n }\n\n if (!image) {\n return;\n }\n\n var x = style.x || 0;\n var y = style.y || 0;\n var dw = style.width;\n var dh = style.height;\n var sw = style.sWidth;\n var sh = style.sHeight;\n var sx = style.sx || 0;\n var sy = style.sy || 0;\n var hasCrop = sw && sh;\n var vmlEl = this._vmlEl;\n\n if (!vmlEl) {\n // FIXME 使用 group 在 left, top 都不是 0 的时候就无法显示了。\n // vmlEl = vmlCore.createNode('group');\n vmlEl = vmlCore.doc.createElement('div');\n initRootElStyle(vmlEl);\n this._vmlEl = vmlEl;\n }\n\n var vmlElStyle = vmlEl.style;\n var hasRotation = false;\n var m;\n var scaleX = 1;\n var scaleY = 1;\n\n if (this.transform) {\n m = this.transform;\n scaleX = sqrt(m[0] * m[0] + m[1] * m[1]);\n scaleY = sqrt(m[2] * m[2] + m[3] * m[3]);\n hasRotation = m[1] || m[2];\n }\n\n if (hasRotation) {\n // If filters are necessary (rotation exists), create them\n // filters are bog-slow, so only create them if abbsolutely necessary\n // The following check doesn't account for skews (which don't exist\n // in the canvas spec (yet) anyway.\n // From excanvas\n var p0 = [x, y];\n var p1 = [x + dw, y];\n var p2 = [x, y + dh];\n var p3 = [x + dw, y + dh];\n applyTransform(p0, p0, m);\n applyTransform(p1, p1, m);\n applyTransform(p2, p2, m);\n applyTransform(p3, p3, m);\n var maxX = mathMax(p0[0], p1[0], p2[0], p3[0]);\n var maxY = mathMax(p0[1], p1[1], p2[1], p3[1]);\n var transformFilter = [];\n transformFilter.push('M11=', m[0] / scaleX, comma, 'M12=', m[2] / scaleY, comma, 'M21=', m[1] / scaleX, comma, 'M22=', m[3] / scaleY, comma, 'Dx=', round(x * scaleX + m[4]), comma, 'Dy=', round(y * scaleY + m[5]));\n vmlElStyle.padding = '0 ' + round(maxX) + 'px ' + round(maxY) + 'px 0'; // FIXME DXImageTransform 在 IE11 的兼容模式下不起作用\n\n vmlElStyle.filter = imageTransformPrefix + '.Matrix(' + transformFilter.join('') + ', SizingMethod=clip)';\n } else {\n if (m) {\n x = x * scaleX + m[4];\n y = y * scaleY + m[5];\n }\n\n vmlElStyle.filter = '';\n vmlElStyle.left = round(x) + 'px';\n vmlElStyle.top = round(y) + 'px';\n }\n\n var imageEl = this._imageEl;\n var cropEl = this._cropEl;\n\n if (!imageEl) {\n imageEl = vmlCore.doc.createElement('div');\n this._imageEl = imageEl;\n }\n\n var imageELStyle = imageEl.style;\n\n if (hasCrop) {\n // Needs know image original width and height\n if (!(ow && oh)) {\n var tmpImage = new Image();\n var self = this;\n\n tmpImage.onload = function () {\n tmpImage.onload = null;\n ow = tmpImage.width;\n oh = tmpImage.height; // Adjust image width and height to fit the ratio destinationSize / sourceSize\n\n imageELStyle.width = round(scaleX * ow * dw / sw) + 'px';\n imageELStyle.height = round(scaleY * oh * dh / sh) + 'px'; // Caching image original width, height and src\n\n self._imageWidth = ow;\n self._imageHeight = oh;\n self._imageSrc = image;\n };\n\n tmpImage.src = image;\n } else {\n imageELStyle.width = round(scaleX * ow * dw / sw) + 'px';\n imageELStyle.height = round(scaleY * oh * dh / sh) + 'px';\n }\n\n if (!cropEl) {\n cropEl = vmlCore.doc.createElement('div');\n cropEl.style.overflow = 'hidden';\n this._cropEl = cropEl;\n }\n\n var cropElStyle = cropEl.style;\n cropElStyle.width = round((dw + sx * dw / sw) * scaleX);\n cropElStyle.height = round((dh + sy * dh / sh) * scaleY);\n cropElStyle.filter = imageTransformPrefix + '.Matrix(Dx=' + -sx * dw / sw * scaleX + ',Dy=' + -sy * dh / sh * scaleY + ')';\n\n if (!cropEl.parentNode) {\n vmlEl.appendChild(cropEl);\n }\n\n if (imageEl.parentNode !== cropEl) {\n cropEl.appendChild(imageEl);\n }\n } else {\n imageELStyle.width = round(scaleX * dw) + 'px';\n imageELStyle.height = round(scaleY * dh) + 'px';\n vmlEl.appendChild(imageEl);\n\n if (cropEl && cropEl.parentNode) {\n vmlEl.removeChild(cropEl);\n this._cropEl = null;\n }\n }\n\n var filterStr = '';\n var alpha = style.opacity;\n\n if (alpha < 1) {\n filterStr += '.Alpha(opacity=' + round(alpha * 100) + ') ';\n }\n\n filterStr += imageTransformPrefix + '.AlphaImageLoader(src=' + image + ', SizingMethod=scale)';\n imageELStyle.filter = filterStr;\n vmlEl.style.zIndex = getZIndex(this.zlevel, this.z, this.z2); // Append to root\n\n append(vmlRoot, vmlEl); // Text\n\n if (style.text != null) {\n this.drawRectText(vmlRoot, this.getBoundingRect());\n }\n };\n\n ZImage.prototype.onRemove = function (vmlRoot) {\n remove(vmlRoot, this._vmlEl);\n this._vmlEl = null;\n this._cropEl = null;\n this._imageEl = null;\n this.removeRectText(vmlRoot);\n };\n\n ZImage.prototype.onAdd = function (vmlRoot) {\n append(vmlRoot, this._vmlEl);\n this.appendRectText(vmlRoot);\n };\n /***************************************************\n * TEXT\n **************************************************/\n\n\n var DEFAULT_STYLE_NORMAL = 'normal';\n var fontStyleCache = {};\n var fontStyleCacheCount = 0;\n var MAX_FONT_CACHE_SIZE = 100;\n var fontEl = document.createElement('div');\n\n var getFontStyle = function (fontString) {\n var fontStyle = fontStyleCache[fontString];\n\n if (!fontStyle) {\n // Clear cache\n if (fontStyleCacheCount > MAX_FONT_CACHE_SIZE) {\n fontStyleCacheCount = 0;\n fontStyleCache = {};\n }\n\n var style = fontEl.style;\n var fontFamily;\n\n try {\n style.font = fontString;\n fontFamily = style.fontFamily.split(',')[0];\n } catch (e) {}\n\n fontStyle = {\n style: style.fontStyle || DEFAULT_STYLE_NORMAL,\n variant: style.fontVariant || DEFAULT_STYLE_NORMAL,\n weight: style.fontWeight || DEFAULT_STYLE_NORMAL,\n size: parseFloat(style.fontSize || 12) | 0,\n family: fontFamily || 'Microsoft YaHei'\n };\n fontStyleCache[fontString] = fontStyle;\n fontStyleCacheCount++;\n }\n\n return fontStyle;\n };\n\n var textMeasureEl; // Overwrite measure text method\n\n textContain.$override('measureText', function (text, textFont) {\n var doc = vmlCore.doc;\n\n if (!textMeasureEl) {\n textMeasureEl = doc.createElement('div');\n textMeasureEl.style.cssText = 'position:absolute;top:-20000px;left:0;' + 'padding:0;margin:0;border:none;white-space:pre;';\n vmlCore.doc.body.appendChild(textMeasureEl);\n }\n\n try {\n textMeasureEl.style.font = textFont;\n } catch (ex) {// Ignore failures to set to invalid font.\n }\n\n textMeasureEl.innerHTML = ''; // Don't use innerHTML or innerText because they allow markup/whitespace.\n\n textMeasureEl.appendChild(doc.createTextNode(text));\n return {\n width: textMeasureEl.offsetWidth\n };\n });\n var tmpRect = new BoundingRect();\n\n var drawRectText = function (vmlRoot, rect, textRect, fromTextEl) {\n var style = this.style; // Optimize, avoid normalize every time.\n\n this.__dirty && textHelper.normalizeTextStyle(style, true);\n var text = style.text; // Convert to string\n\n text != null && (text += '');\n\n if (!text) {\n return;\n } // Convert rich text to plain text. Rich text is not supported in\n // IE8-, but tags in rich text template will be removed.\n\n\n if (style.rich) {\n var contentBlock = textContain.parseRichText(text, style);\n text = [];\n\n for (var i = 0; i < contentBlock.lines.length; i++) {\n var tokens = contentBlock.lines[i].tokens;\n var textLine = [];\n\n for (var j = 0; j < tokens.length; j++) {\n textLine.push(tokens[j].text);\n }\n\n text.push(textLine.join(''));\n }\n\n text = text.join('\\n');\n }\n\n var x;\n var y;\n var align = style.textAlign;\n var verticalAlign = style.textVerticalAlign;\n var fontStyle = getFontStyle(style.font); // FIXME encodeHtmlAttribute ?\n\n var font = fontStyle.style + ' ' + fontStyle.variant + ' ' + fontStyle.weight + ' ' + fontStyle.size + 'px \"' + fontStyle.family + '\"';\n textRect = textRect || textContain.getBoundingRect(text, font, align, verticalAlign, style.textPadding, style.textLineHeight); // Transform rect to view space\n\n var m = this.transform; // Ignore transform for text in other element\n\n if (m && !fromTextEl) {\n tmpRect.copy(rect);\n tmpRect.applyTransform(m);\n rect = tmpRect;\n }\n\n if (!fromTextEl) {\n var textPosition = style.textPosition; // Text position represented by coord\n\n if (textPosition instanceof Array) {\n x = rect.x + parsePercent(textPosition[0], rect.width);\n y = rect.y + parsePercent(textPosition[1], rect.height);\n align = align || 'left';\n } else {\n var res = this.calculateTextPosition ? this.calculateTextPosition({}, style, rect) : textContain.calculateTextPosition({}, style, rect);\n x = res.x;\n y = res.y; // Default align and baseline when has textPosition\n\n align = align || res.textAlign;\n verticalAlign = verticalAlign || res.textVerticalAlign;\n }\n } else {\n x = rect.x;\n y = rect.y;\n }\n\n x = textContain.adjustTextX(x, textRect.width, align);\n y = textContain.adjustTextY(y, textRect.height, verticalAlign); // Force baseline 'middle'\n\n y += textRect.height / 2; // var fontSize = fontStyle.size;\n // 1.75 is an arbitrary number, as there is no info about the text baseline\n // switch (baseline) {\n // case 'hanging':\n // case 'top':\n // y += fontSize / 1.75;\n // break;\n // case 'middle':\n // break;\n // default:\n // // case null:\n // // case 'alphabetic':\n // // case 'ideographic':\n // // case 'bottom':\n // y -= fontSize / 2.25;\n // break;\n // }\n // switch (align) {\n // case 'left':\n // break;\n // case 'center':\n // x -= textRect.width / 2;\n // break;\n // case 'right':\n // x -= textRect.width;\n // break;\n // case 'end':\n // align = elementStyle.direction == 'ltr' ? 'right' : 'left';\n // break;\n // case 'start':\n // align = elementStyle.direction == 'rtl' ? 'right' : 'left';\n // break;\n // default:\n // align = 'left';\n // }\n\n var createNode = vmlCore.createNode;\n var textVmlEl = this._textVmlEl;\n var pathEl;\n var textPathEl;\n var skewEl;\n\n if (!textVmlEl) {\n textVmlEl = createNode('line');\n pathEl = createNode('path');\n textPathEl = createNode('textpath');\n skewEl = createNode('skew'); // FIXME Why here is not cammel case\n // Align 'center' seems wrong\n\n textPathEl.style['v-text-align'] = 'left';\n initRootElStyle(textVmlEl);\n pathEl.textpathok = true;\n textPathEl.on = true;\n textVmlEl.from = '0 0';\n textVmlEl.to = '1000 0.05';\n append(textVmlEl, skewEl);\n append(textVmlEl, pathEl);\n append(textVmlEl, textPathEl);\n this._textVmlEl = textVmlEl;\n } else {\n // 这里是在前面 appendChild 保证顺序的前提下\n skewEl = textVmlEl.firstChild;\n pathEl = skewEl.nextSibling;\n textPathEl = pathEl.nextSibling;\n }\n\n var coords = [x, y];\n var textVmlElStyle = textVmlEl.style; // Ignore transform for text in other element\n\n if (m && fromTextEl) {\n applyTransform(coords, coords, m);\n skewEl.on = true;\n skewEl.matrix = m[0].toFixed(3) + comma + m[2].toFixed(3) + comma + m[1].toFixed(3) + comma + m[3].toFixed(3) + ',0,0'; // Text position\n\n skewEl.offset = (round(coords[0]) || 0) + ',' + (round(coords[1]) || 0); // Left top point as origin\n\n skewEl.origin = '0 0';\n textVmlElStyle.left = '0px';\n textVmlElStyle.top = '0px';\n } else {\n skewEl.on = false;\n textVmlElStyle.left = round(x) + 'px';\n textVmlElStyle.top = round(y) + 'px';\n }\n\n textPathEl.string = encodeHtmlAttribute(text); // TODO\n\n try {\n textPathEl.style.font = font;\n } // Error font format\n catch (e) {}\n\n updateFillAndStroke(textVmlEl, 'fill', {\n fill: style.textFill,\n opacity: style.opacity\n }, this);\n updateFillAndStroke(textVmlEl, 'stroke', {\n stroke: style.textStroke,\n opacity: style.opacity,\n lineDash: style.lineDash || null // style.lineDash can be `false`.\n\n }, this);\n textVmlEl.style.zIndex = getZIndex(this.zlevel, this.z, this.z2); // Attached to root\n\n append(vmlRoot, textVmlEl);\n };\n\n var removeRectText = function (vmlRoot) {\n remove(vmlRoot, this._textVmlEl);\n this._textVmlEl = null;\n };\n\n var appendRectText = function (vmlRoot) {\n append(vmlRoot, this._textVmlEl);\n };\n\n var list = [RectText, Displayable, ZImage, Path, Text]; // In case Displayable has been mixed in RectText\n\n for (var i = 0; i < list.length; i++) {\n var proto = list[i].prototype;\n proto.drawRectText = drawRectText;\n proto.removeRectText = removeRectText;\n proto.appendRectText = appendRectText;\n }\n\n Text.prototype.brushVML = function (vmlRoot) {\n var style = this.style;\n\n if (style.text != null) {\n this.drawRectText(vmlRoot, {\n x: style.x || 0,\n y: style.y || 0,\n width: 0,\n height: 0\n }, this.getBoundingRect(), true);\n } else {\n this.removeRectText(vmlRoot);\n }\n };\n\n Text.prototype.onRemove = function (vmlRoot) {\n this.removeRectText(vmlRoot);\n };\n\n Text.prototype.onAdd = function (vmlRoot) {\n this.appendRectText(vmlRoot);\n };\n}\n\n//# sourceURL=webpack:///./node_modules/zrender/lib/vml/graphic.js?"); - -/***/ }), - -/***/ "./node_modules/zrender/lib/vml/vml.js": -/*!*********************************************!*\ - !*** ./node_modules/zrender/lib/vml/vml.js ***! - \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("__webpack_require__(/*! ./graphic */ \"./node_modules/zrender/lib/vml/graphic.js\");\n\nvar _zrender = __webpack_require__(/*! ../zrender */ \"./node_modules/zrender/lib/zrender.js\");\n\nvar registerPainter = _zrender.registerPainter;\n\nvar Painter = __webpack_require__(/*! ./Painter */ \"./node_modules/zrender/lib/vml/Painter.js\");\n\nregisterPainter('vml', Painter);\n\n//# sourceURL=webpack:///./node_modules/zrender/lib/vml/vml.js?"); - -/***/ }), - -/***/ "./node_modules/zrender/lib/zrender.js": -/*!*********************************************!*\ - !*** ./node_modules/zrender/lib/zrender.js ***! - \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("var guid = __webpack_require__(/*! ./core/guid */ \"./node_modules/zrender/lib/core/guid.js\");\n\nvar env = __webpack_require__(/*! ./core/env */ \"./node_modules/zrender/lib/core/env.js\");\n\nvar zrUtil = __webpack_require__(/*! ./core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar Handler = __webpack_require__(/*! ./Handler */ \"./node_modules/zrender/lib/Handler.js\");\n\nvar Storage = __webpack_require__(/*! ./Storage */ \"./node_modules/zrender/lib/Storage.js\");\n\nvar Painter = __webpack_require__(/*! ./Painter */ \"./node_modules/zrender/lib/Painter.js\");\n\nvar Animation = __webpack_require__(/*! ./animation/Animation */ \"./node_modules/zrender/lib/animation/Animation.js\");\n\nvar HandlerProxy = __webpack_require__(/*! ./dom/HandlerProxy */ \"./node_modules/zrender/lib/dom/HandlerProxy.js\");\n\n/*!\n* ZRender, a high performance 2d drawing library.\n*\n* Copyright (c) 2013, Baidu Inc.\n* All rights reserved.\n*\n* LICENSE\n* https://github.com/ecomfe/zrender/blob/master/LICENSE.txt\n*/\nvar useVML = !env.canvasSupported;\nvar painterCtors = {\n canvas: Painter\n};\nvar instances = {}; // ZRender实例map索引\n\n/**\n * @type {string}\n */\n\nvar version = '4.3.2';\n/**\n * Initializing a zrender instance\n * @param {HTMLElement} dom\n * @param {Object} [opts]\n * @param {string} [opts.renderer='canvas'] 'canvas' or 'svg'\n * @param {number} [opts.devicePixelRatio]\n * @param {number|string} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number|string} [opts.height] Can be 'auto' (the same as null/undefined)\n * @return {module:zrender/ZRender}\n */\n\nfunction init(dom, opts) {\n var zr = new ZRender(guid(), dom, opts);\n instances[zr.id] = zr;\n return zr;\n}\n/**\n * Dispose zrender instance\n * @param {module:zrender/ZRender} zr\n */\n\n\nfunction dispose(zr) {\n if (zr) {\n zr.dispose();\n } else {\n for (var key in instances) {\n if (instances.hasOwnProperty(key)) {\n instances[key].dispose();\n }\n }\n\n instances = {};\n }\n\n return this;\n}\n/**\n * Get zrender instance by id\n * @param {string} id zrender instance id\n * @return {module:zrender/ZRender}\n */\n\n\nfunction getInstance(id) {\n return instances[id];\n}\n\nfunction registerPainter(name, Ctor) {\n painterCtors[name] = Ctor;\n}\n\nfunction delInstance(id) {\n delete instances[id];\n}\n/**\n * @module zrender/ZRender\n */\n\n/**\n * @constructor\n * @alias module:zrender/ZRender\n * @param {string} id\n * @param {HTMLElement} dom\n * @param {Object} opts\n * @param {string} [opts.renderer='canvas'] 'canvas' or 'svg'\n * @param {number} [opts.devicePixelRatio]\n * @param {number} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Can be 'auto' (the same as null/undefined)\n */\n\n\nvar ZRender = function (id, dom, opts) {\n opts = opts || {};\n /**\n * @type {HTMLDomElement}\n */\n\n this.dom = dom;\n /**\n * @type {string}\n */\n\n this.id = id;\n var self = this;\n var storage = new Storage();\n var rendererType = opts.renderer; // TODO WebGL\n\n if (useVML) {\n if (!painterCtors.vml) {\n throw new Error('You need to require \\'zrender/vml/vml\\' to support IE8');\n }\n\n rendererType = 'vml';\n } else if (!rendererType || !painterCtors[rendererType]) {\n rendererType = 'canvas';\n }\n\n var painter = new painterCtors[rendererType](dom, storage, opts, id);\n this.storage = storage;\n this.painter = painter;\n var handerProxy = !env.node && !env.worker ? new HandlerProxy(painter.getViewportRoot(), painter.root) : null;\n this.handler = new Handler(storage, painter, handerProxy, painter.root);\n /**\n * @type {module:zrender/animation/Animation}\n */\n\n this.animation = new Animation({\n stage: {\n update: zrUtil.bind(this.flush, this)\n }\n });\n this.animation.start();\n /**\n * @type {boolean}\n * @private\n */\n\n this._needsRefresh; // 修改 storage.delFromStorage, 每次删除元素之前删除动画\n // FIXME 有点ugly\n\n var oldDelFromStorage = storage.delFromStorage;\n var oldAddToStorage = storage.addToStorage;\n\n storage.delFromStorage = function (el) {\n oldDelFromStorage.call(storage, el);\n el && el.removeSelfFromZr(self);\n };\n\n storage.addToStorage = function (el) {\n oldAddToStorage.call(storage, el);\n el.addSelfToZr(self);\n };\n};\n\nZRender.prototype = {\n constructor: ZRender,\n\n /**\n * 获取实例唯一标识\n * @return {string}\n */\n getId: function () {\n return this.id;\n },\n\n /**\n * 添加元素\n * @param {module:zrender/Element} el\n */\n add: function (el) {\n this.storage.addRoot(el);\n this._needsRefresh = true;\n },\n\n /**\n * 删除元素\n * @param {module:zrender/Element} el\n */\n remove: function (el) {\n this.storage.delRoot(el);\n this._needsRefresh = true;\n },\n\n /**\n * Change configuration of layer\n * @param {string} zLevel\n * @param {Object} config\n * @param {string} [config.clearColor=0] Clear color\n * @param {string} [config.motionBlur=false] If enable motion blur\n * @param {number} [config.lastFrameAlpha=0.7] Motion blur factor. Larger value cause longer trailer\n */\n configLayer: function (zLevel, config) {\n if (this.painter.configLayer) {\n this.painter.configLayer(zLevel, config);\n }\n\n this._needsRefresh = true;\n },\n\n /**\n * Set background color\n * @param {string} backgroundColor\n */\n setBackgroundColor: function (backgroundColor) {\n if (this.painter.setBackgroundColor) {\n this.painter.setBackgroundColor(backgroundColor);\n }\n\n this._needsRefresh = true;\n },\n\n /**\n * Repaint the canvas immediately\n */\n refreshImmediately: function () {\n // var start = new Date();\n // Clear needsRefresh ahead to avoid something wrong happens in refresh\n // Or it will cause zrender refreshes again and again.\n this._needsRefresh = this._needsRefreshHover = false;\n this.painter.refresh(); // Avoid trigger zr.refresh in Element#beforeUpdate hook\n\n this._needsRefresh = this._needsRefreshHover = false; // var end = new Date();\n // var log = document.getElementById('log');\n // if (log) {\n // log.innerHTML = log.innerHTML + '
' + (end - start);\n // }\n },\n\n /**\n * Mark and repaint the canvas in the next frame of browser\n */\n refresh: function () {\n this._needsRefresh = true;\n },\n\n /**\n * Perform all refresh\n */\n flush: function () {\n var triggerRendered;\n\n if (this._needsRefresh) {\n triggerRendered = true;\n this.refreshImmediately();\n }\n\n if (this._needsRefreshHover) {\n triggerRendered = true;\n this.refreshHoverImmediately();\n }\n\n triggerRendered && this.trigger('rendered');\n },\n\n /**\n * Add element to hover layer\n * @param {module:zrender/Element} el\n * @param {Object} style\n */\n addHover: function (el, style) {\n if (this.painter.addHover) {\n var elMirror = this.painter.addHover(el, style);\n this.refreshHover();\n return elMirror;\n }\n },\n\n /**\n * Add element from hover layer\n * @param {module:zrender/Element} el\n */\n removeHover: function (el) {\n if (this.painter.removeHover) {\n this.painter.removeHover(el);\n this.refreshHover();\n }\n },\n\n /**\n * Clear all hover elements in hover layer\n * @param {module:zrender/Element} el\n */\n clearHover: function () {\n if (this.painter.clearHover) {\n this.painter.clearHover();\n this.refreshHover();\n }\n },\n\n /**\n * Refresh hover in next frame\n */\n refreshHover: function () {\n this._needsRefreshHover = true;\n },\n\n /**\n * Refresh hover immediately\n */\n refreshHoverImmediately: function () {\n this._needsRefreshHover = false;\n this.painter.refreshHover && this.painter.refreshHover();\n },\n\n /**\n * Resize the canvas.\n * Should be invoked when container size is changed\n * @param {Object} [opts]\n * @param {number|string} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number|string} [opts.height] Can be 'auto' (the same as null/undefined)\n */\n resize: function (opts) {\n opts = opts || {};\n this.painter.resize(opts.width, opts.height);\n this.handler.resize();\n },\n\n /**\n * Stop and clear all animation immediately\n */\n clearAnimation: function () {\n this.animation.clear();\n },\n\n /**\n * Get container width\n */\n getWidth: function () {\n return this.painter.getWidth();\n },\n\n /**\n * Get container height\n */\n getHeight: function () {\n return this.painter.getHeight();\n },\n\n /**\n * Export the canvas as Base64 URL\n * @param {string} type\n * @param {string} [backgroundColor='#fff']\n * @return {string} Base64 URL\n */\n // toDataURL: function(type, backgroundColor) {\n // return this.painter.getRenderedCanvas({\n // backgroundColor: backgroundColor\n // }).toDataURL(type);\n // },\n\n /**\n * Converting a path to image.\n * It has much better performance of drawing image rather than drawing a vector path.\n * @param {module:zrender/graphic/Path} e\n * @param {number} width\n * @param {number} height\n */\n pathToImage: function (e, dpr) {\n return this.painter.pathToImage(e, dpr);\n },\n\n /**\n * Set default cursor\n * @param {string} [cursorStyle='default'] 例如 crosshair\n */\n setCursorStyle: function (cursorStyle) {\n this.handler.setCursorStyle(cursorStyle);\n },\n\n /**\n * Find hovered element\n * @param {number} x\n * @param {number} y\n * @return {Object} {target, topTarget}\n */\n findHover: function (x, y) {\n return this.handler.findHover(x, y);\n },\n\n /**\n * Bind event\n *\n * @param {string} eventName Event name\n * @param {Function} eventHandler Handler function\n * @param {Object} [context] Context object\n */\n on: function (eventName, eventHandler, context) {\n this.handler.on(eventName, eventHandler, context);\n },\n\n /**\n * Unbind event\n * @param {string} eventName Event name\n * @param {Function} [eventHandler] Handler function\n */\n off: function (eventName, eventHandler) {\n this.handler.off(eventName, eventHandler);\n },\n\n /**\n * Trigger event manually\n *\n * @param {string} eventName Event name\n * @param {event=} event Event object\n */\n trigger: function (eventName, event) {\n this.handler.trigger(eventName, event);\n },\n\n /**\n * Clear all objects and the canvas.\n */\n clear: function () {\n this.storage.delRoot();\n this.painter.clear();\n },\n\n /**\n * Dispose self.\n */\n dispose: function () {\n this.animation.stop();\n this.clear();\n this.storage.dispose();\n this.painter.dispose();\n this.handler.dispose();\n this.animation = this.storage = this.painter = this.handler = null;\n delInstance(this.id);\n }\n};\nexports.version = version;\nexports.init = init;\nexports.dispose = dispose;\nexports.getInstance = getInstance;\nexports.registerPainter = registerPainter;\n\n//# sourceURL=webpack:///./node_modules/zrender/lib/zrender.js?"); - -/***/ }), - -/***/ "./src/views/dashboard/BarChart.vue": -/*!******************************************!*\ - !*** ./src/views/dashboard/BarChart.vue ***! - \******************************************/ -/*! no static exports found */ +/*! exports provided: default, MultiDrag, Sortable, Swap */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _BarChart_vue_vue_type_template_id_397bf160___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BarChart.vue?vue&type=template&id=397bf160& */ \"./src/views/dashboard/BarChart.vue?vue&type=template&id=397bf160&\");\n/* harmony import */ var _BarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./BarChart.vue?vue&type=script&lang=js& */ \"./src/views/dashboard/BarChart.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _BarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _BarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _BarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _BarChart_vue_vue_type_template_id_397bf160___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _BarChart_vue_vue_type_template_id_397bf160___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/dashboard/BarChart.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/dashboard/BarChart.vue?"); - -/***/ }), - -/***/ "./src/views/dashboard/BarChart.vue?vue&type=script&lang=js&": -/*!*******************************************************************!*\ - !*** ./src/views/dashboard/BarChart.vue?vue&type=script&lang=js& ***! - \*******************************************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_BarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./BarChart.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/BarChart.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_BarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_BarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_BarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_BarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_BarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/dashboard/BarChart.vue?"); - -/***/ }), - -/***/ "./src/views/dashboard/BarChart.vue?vue&type=template&id=397bf160&": -/*!*************************************************************************!*\ - !*** ./src/views/dashboard/BarChart.vue?vue&type=template&id=397bf160& ***! - \*************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_BarChart_vue_vue_type_template_id_397bf160___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./BarChart.vue?vue&type=template&id=397bf160& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/BarChart.vue?vue&type=template&id=397bf160&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_BarChart_vue_vue_type_template_id_397bf160___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_BarChart_vue_vue_type_template_id_397bf160___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/dashboard/BarChart.vue?"); - -/***/ }), - -/***/ "./src/views/dashboard/LineChart.vue": -/*!*******************************************!*\ - !*** ./src/views/dashboard/LineChart.vue ***! - \*******************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _LineChart_vue_vue_type_template_id_edb3ae76___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./LineChart.vue?vue&type=template&id=edb3ae76& */ \"./src/views/dashboard/LineChart.vue?vue&type=template&id=edb3ae76&\");\n/* harmony import */ var _LineChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./LineChart.vue?vue&type=script&lang=js& */ \"./src/views/dashboard/LineChart.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _LineChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _LineChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _LineChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _LineChart_vue_vue_type_template_id_edb3ae76___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _LineChart_vue_vue_type_template_id_edb3ae76___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/dashboard/LineChart.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/dashboard/LineChart.vue?"); - -/***/ }), - -/***/ "./src/views/dashboard/LineChart.vue?vue&type=script&lang=js&": -/*!********************************************************************!*\ - !*** ./src/views/dashboard/LineChart.vue?vue&type=script&lang=js& ***! - \********************************************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_LineChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./LineChart.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/LineChart.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_LineChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_LineChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_LineChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_LineChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_LineChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/dashboard/LineChart.vue?"); - -/***/ }), - -/***/ "./src/views/dashboard/LineChart.vue?vue&type=template&id=edb3ae76&": -/*!**************************************************************************!*\ - !*** ./src/views/dashboard/LineChart.vue?vue&type=template&id=edb3ae76& ***! - \**************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_LineChart_vue_vue_type_template_id_edb3ae76___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./LineChart.vue?vue&type=template&id=edb3ae76& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/LineChart.vue?vue&type=template&id=edb3ae76&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_LineChart_vue_vue_type_template_id_edb3ae76___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_LineChart_vue_vue_type_template_id_edb3ae76___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/dashboard/LineChart.vue?"); - -/***/ }), - -/***/ "./src/views/dashboard/PanelGroup.vue": -/*!********************************************!*\ - !*** ./src/views/dashboard/PanelGroup.vue ***! - \********************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _PanelGroup_vue_vue_type_template_id_0333a520_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PanelGroup.vue?vue&type=template&id=0333a520&scoped=true& */ \"./src/views/dashboard/PanelGroup.vue?vue&type=template&id=0333a520&scoped=true&\");\n/* harmony import */ var _PanelGroup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PanelGroup.vue?vue&type=script&lang=js& */ \"./src/views/dashboard/PanelGroup.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _PanelGroup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _PanelGroup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _PanelGroup_vue_vue_type_style_index_0_id_0333a520_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./PanelGroup.vue?vue&type=style&index=0&id=0333a520&lang=scss&scoped=true& */ \"./src/views/dashboard/PanelGroup.vue?vue&type=style&index=0&id=0333a520&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _PanelGroup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _PanelGroup_vue_vue_type_template_id_0333a520_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _PanelGroup_vue_vue_type_template_id_0333a520_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"0333a520\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/dashboard/PanelGroup.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/dashboard/PanelGroup.vue?"); - -/***/ }), - -/***/ "./src/views/dashboard/PanelGroup.vue?vue&type=script&lang=js&": -/*!*********************************************************************!*\ - !*** ./src/views/dashboard/PanelGroup.vue?vue&type=script&lang=js& ***! - \*********************************************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./PanelGroup.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/PanelGroup.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/dashboard/PanelGroup.vue?"); - -/***/ }), - -/***/ "./src/views/dashboard/PanelGroup.vue?vue&type=style&index=0&id=0333a520&lang=scss&scoped=true&": -/*!******************************************************************************************************!*\ - !*** ./src/views/dashboard/PanelGroup.vue?vue&type=style&index=0&id=0333a520&lang=scss&scoped=true& ***! - \******************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_style_index_0_id_0333a520_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-style-loader??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./PanelGroup.vue?vue&type=style&index=0&id=0333a520&lang=scss&scoped=true& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/PanelGroup.vue?vue&type=style&index=0&id=0333a520&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_style_index_0_id_0333a520_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_style_index_0_id_0333a520_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_style_index_0_id_0333a520_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_style_index_0_id_0333a520_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/dashboard/PanelGroup.vue?"); - -/***/ }), - -/***/ "./src/views/dashboard/PanelGroup.vue?vue&type=template&id=0333a520&scoped=true&": -/*!***************************************************************************************!*\ - !*** ./src/views/dashboard/PanelGroup.vue?vue&type=template&id=0333a520&scoped=true& ***! - \***************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_template_id_0333a520_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./PanelGroup.vue?vue&type=template&id=0333a520&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/PanelGroup.vue?vue&type=template&id=0333a520&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_template_id_0333a520_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_template_id_0333a520_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/dashboard/PanelGroup.vue?"); - -/***/ }), - -/***/ "./src/views/dashboard/PieChart.vue": -/*!******************************************!*\ - !*** ./src/views/dashboard/PieChart.vue ***! - \******************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _PieChart_vue_vue_type_template_id_36c457f2___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PieChart.vue?vue&type=template&id=36c457f2& */ \"./src/views/dashboard/PieChart.vue?vue&type=template&id=36c457f2&\");\n/* harmony import */ var _PieChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PieChart.vue?vue&type=script&lang=js& */ \"./src/views/dashboard/PieChart.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _PieChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _PieChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _PieChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _PieChart_vue_vue_type_template_id_36c457f2___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _PieChart_vue_vue_type_template_id_36c457f2___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/dashboard/PieChart.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/dashboard/PieChart.vue?"); - -/***/ }), - -/***/ "./src/views/dashboard/PieChart.vue?vue&type=script&lang=js&": -/*!*******************************************************************!*\ - !*** ./src/views/dashboard/PieChart.vue?vue&type=script&lang=js& ***! - \*******************************************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PieChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./PieChart.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/PieChart.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PieChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PieChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PieChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PieChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PieChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/dashboard/PieChart.vue?"); - -/***/ }), - -/***/ "./src/views/dashboard/PieChart.vue?vue&type=template&id=36c457f2&": -/*!*************************************************************************!*\ - !*** ./src/views/dashboard/PieChart.vue?vue&type=template&id=36c457f2& ***! - \*************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PieChart_vue_vue_type_template_id_36c457f2___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./PieChart.vue?vue&type=template&id=36c457f2& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/PieChart.vue?vue&type=template&id=36c457f2&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PieChart_vue_vue_type_template_id_36c457f2___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PieChart_vue_vue_type_template_id_36c457f2___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/dashboard/PieChart.vue?"); - -/***/ }), - -/***/ "./src/views/dashboard/RaddarChart.vue": -/*!*********************************************!*\ - !*** ./src/views/dashboard/RaddarChart.vue ***! - \*********************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _RaddarChart_vue_vue_type_template_id_bd9223ce___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RaddarChart.vue?vue&type=template&id=bd9223ce& */ \"./src/views/dashboard/RaddarChart.vue?vue&type=template&id=bd9223ce&\");\n/* harmony import */ var _RaddarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RaddarChart.vue?vue&type=script&lang=js& */ \"./src/views/dashboard/RaddarChart.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _RaddarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _RaddarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _RaddarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _RaddarChart_vue_vue_type_template_id_bd9223ce___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _RaddarChart_vue_vue_type_template_id_bd9223ce___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/dashboard/RaddarChart.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/dashboard/RaddarChart.vue?"); - -/***/ }), - -/***/ "./src/views/dashboard/RaddarChart.vue?vue&type=script&lang=js&": -/*!**********************************************************************!*\ - !*** ./src/views/dashboard/RaddarChart.vue?vue&type=script&lang=js& ***! - \**********************************************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RaddarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./RaddarChart.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/RaddarChart.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RaddarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RaddarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RaddarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RaddarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RaddarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/dashboard/RaddarChart.vue?"); - -/***/ }), - -/***/ "./src/views/dashboard/RaddarChart.vue?vue&type=template&id=bd9223ce&": -/*!****************************************************************************!*\ - !*** ./src/views/dashboard/RaddarChart.vue?vue&type=template&id=bd9223ce& ***! - \****************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RaddarChart_vue_vue_type_template_id_bd9223ce___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./RaddarChart.vue?vue&type=template&id=bd9223ce& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/RaddarChart.vue?vue&type=template&id=bd9223ce&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RaddarChart_vue_vue_type_template_id_bd9223ce___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RaddarChart_vue_vue_type_template_id_bd9223ce___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/dashboard/RaddarChart.vue?"); - -/***/ }), - -/***/ "./src/views/dashboard/mixins/resize.js": -/*!**********************************************!*\ - !*** ./src/views/dashboard/mixins/resize.js ***! - \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _utils = __webpack_require__(/*! @/utils */ \"./src/utils/index.js\");\n\nvar _default = {\n data: function data() {\n return {\n $_sidebarElm: null,\n $_resizeHandler: null\n };\n },\n mounted: function mounted() {\n this.initListener();\n },\n activated: function activated() {\n if (!this.$_resizeHandler) {\n // avoid duplication init\n this.initListener();\n } // when keep-alive chart activated, auto resize\n\n\n this.resize();\n },\n beforeDestroy: function beforeDestroy() {\n this.destroyListener();\n },\n deactivated: function deactivated() {\n this.destroyListener();\n },\n methods: {\n // use $_ for mixins properties\n // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential\n $_sidebarResizeHandler: function $_sidebarResizeHandler(e) {\n if (e.propertyName === 'width') {\n this.$_resizeHandler();\n }\n },\n initListener: function initListener() {\n var _this = this;\n\n this.$_resizeHandler = (0, _utils.debounce)(function () {\n _this.resize();\n }, 100);\n window.addEventListener('resize', this.$_resizeHandler);\n this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0];\n this.$_sidebarElm && this.$_sidebarElm.addEventListener('transitionend', this.$_sidebarResizeHandler);\n },\n destroyListener: function destroyListener() {\n window.removeEventListener('resize', this.$_resizeHandler);\n this.$_resizeHandler = null;\n this.$_sidebarElm && this.$_sidebarElm.removeEventListener('transitionend', this.$_sidebarResizeHandler);\n },\n resize: function resize() {\n var chart = this.chart;\n chart && chart.resize();\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/dashboard/mixins/resize.js?"); - -/***/ }), - -/***/ "./src/views/index.vue": -/*!*****************************!*\ - !*** ./src/views/index.vue ***! - \*****************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index_vue_vue_type_template_id_a83bd3b0_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.vue?vue&type=template&id=a83bd3b0&scoped=true& */ \"./src/views/index.vue?vue&type=template&id=a83bd3b0&scoped=true&\");\n/* harmony import */ var _index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.vue?vue&type=script&lang=js& */ \"./src/views/index.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _index_vue_vue_type_style_index_0_id_a83bd3b0_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.vue?vue&type=style&index=0&id=a83bd3b0&lang=scss&scoped=true& */ \"./src/views/index.vue?vue&type=style&index=0&id=a83bd3b0&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _index_vue_vue_type_template_id_a83bd3b0_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _index_vue_vue_type_template_id_a83bd3b0_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"a83bd3b0\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/index.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/index.vue?"); - -/***/ }), - -/***/ "./src/views/index.vue?vue&type=script&lang=js&": -/*!******************************************************!*\ - !*** ./src/views/index.vue?vue&type=script&lang=js& ***! - \******************************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/babel-loader/lib!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib??vue-loader-options!./index.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/index.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/index.vue?"); - -/***/ }), - -/***/ "./src/views/index.vue?vue&type=style&index=0&id=a83bd3b0&lang=scss&scoped=true&": -/*!***************************************************************************************!*\ - !*** ./src/views/index.vue?vue&type=style&index=0&id=a83bd3b0&lang=scss&scoped=true& ***! - \***************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_a83bd3b0_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/vue-style-loader??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib??vue-loader-options!./index.vue?vue&type=style&index=0&id=a83bd3b0&lang=scss&scoped=true& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/index.vue?vue&type=style&index=0&id=a83bd3b0&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_a83bd3b0_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_a83bd3b0_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_a83bd3b0_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_a83bd3b0_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/index.vue?"); - -/***/ }), - -/***/ "./src/views/index.vue?vue&type=template&id=a83bd3b0&scoped=true&": -/*!************************************************************************!*\ - !*** ./src/views/index.vue?vue&type=template&id=a83bd3b0&scoped=true& ***! - \************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_a83bd3b0_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib??vue-loader-options!./index.vue?vue&type=template&id=a83bd3b0&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/index.vue?vue&type=template&id=a83bd3b0&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_a83bd3b0_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_a83bd3b0_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/index.vue?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MultiDrag\", function() { return MultiDragPlugin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Sortable\", function() { return Sortable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Swap\", function() { return SwapPlugin; });\n/**!\n * Sortable 1.10.2\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar version = \"1.10.2\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !!\n /*@__PURE__*/\n navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\r\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\r\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\r\n * @param {[HTMLElement]} container The parent the element will be placed in\r\n * @return {Object} The boundingClientRect of el, with specified adjustments\r\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\r\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param {HTMLElement} el The parent element\r\n * @param {Number} childNum The index of the child\r\n * @param {Object} options Parent Sortable's options\r\n * @return {HTMLElement} The child at index childNum, or null if not found\r\n */\n\n\nfunction getChild(el, childNum, options) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && children[i] !== Sortable.dragged && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param {HTMLElement} el Parent element\r\n * @param {selector} selector Any other elements that should be ignored\r\n * @return {HTMLElement} The last child, ignoring ghostEl\r\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param {HTMLElement} el\r\n * @return {Array} Offsets in the format of [left, top]\r\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\r\n * Returns the index of the object within the given array\r\n * @param {Array} arr Array that may or may not hold the object\r\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number} The index of the object in the array, or -1\r\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread({}, extraEventProperties, PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, [\"evt\"]);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param {Number} x X position\n * @param {Number} y Y position\n * @return {HTMLElement} Element of the first found nearest Sortable\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n if (lastChild(sortable)) return;\n var rect = getRect(sortable),\n threshold = sortable[expando].options.emptyInsertThreshold,\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (threshold && insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\n * @class Sortable\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // assign target only if condition is true\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n el.appendChild(dragEl);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\n * Serializes the item into an array of string.\n * @returns {String[]}\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function sort(order) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n },\n\n /**\n * Save the current sorting\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\n * Destroy\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (rootEl.contains(dragEl) && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\n * @return {Number} Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\n * Generate id\n * @param {HTMLElement} el\n * @returns {String}\n * @private\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\n * Get the Sortable instance of an element\n * @param {HTMLElement} element The element\n * @return {Sortable|undefined} The instance of Sortable\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread({}, Sortable.utils, plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvt: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvt: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvt: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n // Do not \"unfold\" after around dragEl if reverted\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvt: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Sortable);\n\n\n\n//# sourceURL=webpack:///./node_modules/sortablejs/modular/sortable.esm.js?"); /***/ }) diff --git a/yudao-server/src/main/resources/admin-ui/static/js/4.js.gz b/yudao-server/src/main/resources/admin-ui/static/js/4.js.gz index 88f83eeb00d70e0ceb4dfb3f073a3c83942622ab..ce3021d8a95e0ba96458aefc3b3ea7bd20d137f1 100644 GIT binary patch literal 27260 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 b#$0hTmz&XVeslAFwEuqqfnQ?OhR^{3M6?^I literal 676901 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

6rs8db`4db1{FAu>IIAd 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

l;Rpgsu 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

7`ce(Wd)zZq4^4QV9?Map7~R3`VRk$P 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ɋ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 z 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%0D>ZIbOOECA?Bo1E>yBTlVWKu`S*|)RO-)f> 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

3M*}n+=T&rAzH8-Fs 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

5izA3?ol$(pJ3MYOgHn%#WV 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%0AnJ1GAe1Wp&oNSENG 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 (V7jB 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�Aq^vJAokpdyJZ_^^SspcZ0SaNz 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 YEHgOYKlp=(JEfKX4{9eFu{fSN067yVE&u=k diff --git a/yudao-server/src/main/resources/admin-ui/static/js/5.js b/yudao-server/src/main/resources/admin-ui/static/js/5.js index 2918db0f76..8c9e9ccfc0 100644 --- a/yudao-server/src/main/resources/admin-ui/static/js/5.js +++ b/yudao-server/src/main/resources/admin-ui/static/js/5.js @@ -1,932 +1,5975 @@ (window["webpackJsonp"] = window["webpackJsonp"] || []).push([[5],{ -/***/ "./node_modules/@babel/parser/lib/index.js": -/*!*************************************************!*\ - !*** ./node_modules/@babel/parser/lib/index.js ***! - \*************************************************/ +/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/BarChart.vue?vue&type=script&lang=js&": +/*!**********************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/dashboard/BarChart.vue?vue&type=script&lang=js& ***! + \**********************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nclass BaseParser {\n constructor() {\n this.sawUnambiguousESM = false;\n this.ambiguousScriptDifferentAst = false;\n }\n\n hasPlugin(pluginConfig) {\n if (typeof pluginConfig === \"string\") {\n return this.plugins.has(pluginConfig);\n } else {\n const [pluginName, pluginOptions] = pluginConfig;\n\n if (!this.hasPlugin(pluginName)) {\n return false;\n }\n\n const actualOptions = this.plugins.get(pluginName);\n\n for (const key of Object.keys(pluginOptions)) {\n if ((actualOptions == null ? void 0 : actualOptions[key]) !== pluginOptions[key]) {\n return false;\n }\n }\n\n return true;\n }\n }\n\n getPluginOption(plugin, name) {\n var _this$plugins$get;\n\n return (_this$plugins$get = this.plugins.get(plugin)) == null ? void 0 : _this$plugins$get[name];\n }\n\n}\n\nfunction setTrailingComments(node, comments) {\n if (node.trailingComments === undefined) {\n node.trailingComments = comments;\n } else {\n node.trailingComments.unshift(...comments);\n }\n}\n\nfunction setLeadingComments(node, comments) {\n if (node.leadingComments === undefined) {\n node.leadingComments = comments;\n } else {\n node.leadingComments.unshift(...comments);\n }\n}\n\nfunction setInnerComments(node, comments) {\n if (node.innerComments === undefined) {\n node.innerComments = comments;\n } else {\n node.innerComments.unshift(...comments);\n }\n}\n\nfunction adjustInnerComments(node, elements, commentWS) {\n let lastElement = null;\n let i = elements.length;\n\n while (lastElement === null && i > 0) {\n lastElement = elements[--i];\n }\n\n if (lastElement === null || lastElement.start > commentWS.start) {\n setInnerComments(node, commentWS.comments);\n } else {\n setTrailingComments(lastElement, commentWS.comments);\n }\n}\n\nclass CommentsParser extends BaseParser {\n addComment(comment) {\n if (this.filename) comment.loc.filename = this.filename;\n this.state.comments.push(comment);\n }\n\n processComment(node) {\n const {\n commentStack\n } = this.state;\n const commentStackLength = commentStack.length;\n if (commentStackLength === 0) return;\n let i = commentStackLength - 1;\n const lastCommentWS = commentStack[i];\n\n if (lastCommentWS.start === node.end) {\n lastCommentWS.leadingNode = node;\n i--;\n }\n\n const {\n start: nodeStart\n } = node;\n\n for (; i >= 0; i--) {\n const commentWS = commentStack[i];\n const commentEnd = commentWS.end;\n\n if (commentEnd > nodeStart) {\n commentWS.containingNode = node;\n this.finalizeComment(commentWS);\n commentStack.splice(i, 1);\n } else {\n if (commentEnd === nodeStart) {\n commentWS.trailingNode = node;\n }\n\n break;\n }\n }\n }\n\n finalizeComment(commentWS) {\n const {\n comments\n } = commentWS;\n\n if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) {\n if (commentWS.leadingNode !== null) {\n setTrailingComments(commentWS.leadingNode, comments);\n }\n\n if (commentWS.trailingNode !== null) {\n setLeadingComments(commentWS.trailingNode, comments);\n }\n } else {\n const {\n containingNode: node,\n start: commentStart\n } = commentWS;\n\n if (this.input.charCodeAt(commentStart - 1) === 44) {\n switch (node.type) {\n case \"ObjectExpression\":\n case \"ObjectPattern\":\n case \"RecordExpression\":\n adjustInnerComments(node, node.properties, commentWS);\n break;\n\n case \"CallExpression\":\n case \"OptionalCallExpression\":\n adjustInnerComments(node, node.arguments, commentWS);\n break;\n\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"ArrowFunctionExpression\":\n case \"ObjectMethod\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n adjustInnerComments(node, node.params, commentWS);\n break;\n\n case \"ArrayExpression\":\n case \"ArrayPattern\":\n case \"TupleExpression\":\n adjustInnerComments(node, node.elements, commentWS);\n break;\n\n case \"ExportNamedDeclaration\":\n case \"ImportDeclaration\":\n adjustInnerComments(node, node.specifiers, commentWS);\n break;\n\n default:\n {\n setInnerComments(node, comments);\n }\n }\n } else {\n setInnerComments(node, comments);\n }\n }\n }\n\n finalizeRemainingComments() {\n const {\n commentStack\n } = this.state;\n\n for (let i = commentStack.length - 1; i >= 0; i--) {\n this.finalizeComment(commentStack[i]);\n }\n\n this.state.commentStack = [];\n }\n\n resetPreviousNodeTrailingComments(node) {\n const {\n commentStack\n } = this.state;\n const {\n length\n } = commentStack;\n if (length === 0) return;\n const commentWS = commentStack[length - 1];\n\n if (commentWS.leadingNode === node) {\n commentWS.leadingNode = null;\n }\n }\n\n takeSurroundingComments(node, start, end) {\n const {\n commentStack\n } = this.state;\n const commentStackLength = commentStack.length;\n if (commentStackLength === 0) return;\n let i = commentStackLength - 1;\n\n for (; i >= 0; i--) {\n const commentWS = commentStack[i];\n const commentEnd = commentWS.end;\n const commentStart = commentWS.start;\n\n if (commentStart === end) {\n commentWS.leadingNode = node;\n } else if (commentEnd === start) {\n commentWS.trailingNode = node;\n } else if (commentEnd < start) {\n break;\n }\n }\n }\n\n}\n\nconst ErrorCodes = Object.freeze({\n SyntaxError: \"BABEL_PARSER_SYNTAX_ERROR\",\n SourceTypeModuleError: \"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED\"\n});\n\nconst ErrorMessages = makeErrorTemplates({\n AccessorIsGenerator: \"A %0ter cannot be a generator.\",\n ArgumentsInClass: \"'arguments' is only allowed in functions and class methods.\",\n AsyncFunctionInSingleStatementContext: \"Async functions can only be declared at the top level or inside a block.\",\n AwaitBindingIdentifier: \"Can not use 'await' as identifier inside an async function.\",\n AwaitBindingIdentifierInStaticBlock: \"Can not use 'await' as identifier inside a static block.\",\n AwaitExpressionFormalParameter: \"'await' is not allowed in async function parameters.\",\n AwaitNotInAsyncContext: \"'await' is only allowed within async functions and at the top levels of modules.\",\n AwaitNotInAsyncFunction: \"'await' is only allowed within async functions.\",\n BadGetterArity: \"A 'get' accesor must not have any formal parameters.\",\n BadSetterArity: \"A 'set' accesor must have exactly one formal parameter.\",\n BadSetterRestParameter: \"A 'set' accesor function argument must not be a rest parameter.\",\n ConstructorClassField: \"Classes may not have a field named 'constructor'.\",\n ConstructorClassPrivateField: \"Classes may not have a private field named '#constructor'.\",\n ConstructorIsAccessor: \"Class constructor may not be an accessor.\",\n ConstructorIsAsync: \"Constructor can't be an async function.\",\n ConstructorIsGenerator: \"Constructor can't be a generator.\",\n DeclarationMissingInitializer: \"'%0' require an initialization value.\",\n DecoratorBeforeExport: \"Decorators must be placed *before* the 'export' keyword. You can set the 'decoratorsBeforeExport' option to false to use the 'export @decorator class {}' syntax.\",\n DecoratorConstructor: \"Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?\",\n DecoratorExportClass: \"Using the export keyword between a decorator and a class is not allowed. Please use `export @dec class` instead.\",\n DecoratorSemicolon: \"Decorators must not be followed by a semicolon.\",\n DecoratorStaticBlock: \"Decorators can't be used with a static block.\",\n DeletePrivateField: \"Deleting a private field is not allowed.\",\n DestructureNamedImport: \"ES2015 named imports do not destructure. Use another statement for destructuring after the import.\",\n DuplicateConstructor: \"Duplicate constructor in the same class.\",\n DuplicateDefaultExport: \"Only one default export allowed per module.\",\n DuplicateExport: \"`%0` has already been exported. Exported identifiers must be unique.\",\n DuplicateProto: \"Redefinition of __proto__ property.\",\n DuplicateRegExpFlags: \"Duplicate regular expression flag.\",\n ElementAfterRest: \"Rest element must be last element.\",\n EscapedCharNotAnIdentifier: \"Invalid Unicode escape.\",\n ExportBindingIsString: \"A string literal cannot be used as an exported binding without `from`.\\n- Did you mean `export { '%0' as '%1' } from 'some-module'`?\",\n ExportDefaultFromAsIdentifier: \"'from' is not allowed as an identifier after 'export default'.\",\n ForInOfLoopInitializer: \"'%0' loop variable declaration may not have an initializer.\",\n ForOfAsync: \"The left-hand side of a for-of loop may not be 'async'.\",\n ForOfLet: \"The left-hand side of a for-of loop may not start with 'let'.\",\n GeneratorInSingleStatementContext: \"Generators can only be declared at the top level or inside a block.\",\n IllegalBreakContinue: \"Unsyntactic %0.\",\n IllegalLanguageModeDirective: \"Illegal 'use strict' directive in function with non-simple parameter list.\",\n IllegalReturn: \"'return' outside of function.\",\n ImportBindingIsString: 'A string literal cannot be used as an imported binding.\\n- Did you mean `import { \"%0\" as foo }`?',\n ImportCallArgumentTrailingComma: \"Trailing comma is disallowed inside import(...) arguments.\",\n ImportCallArity: \"`import()` requires exactly %0.\",\n ImportCallNotNewExpression: \"Cannot use new with import(...).\",\n ImportCallSpreadArgument: \"`...` is not allowed in `import()`.\",\n IncompatibleRegExpUVFlags: \"The 'u' and 'v' regular expression flags cannot be enabled at the same time.\",\n InvalidBigIntLiteral: \"Invalid BigIntLiteral.\",\n InvalidCodePoint: \"Code point out of bounds.\",\n InvalidCoverInitializedName: \"Invalid shorthand property initializer.\",\n InvalidDecimal: \"Invalid decimal.\",\n InvalidDigit: \"Expected number in radix %0.\",\n InvalidEscapeSequence: \"Bad character escape sequence.\",\n InvalidEscapeSequenceTemplate: \"Invalid escape sequence in template.\",\n InvalidEscapedReservedWord: \"Escape sequence in keyword %0.\",\n InvalidIdentifier: \"Invalid identifier %0.\",\n InvalidLhs: \"Invalid left-hand side in %0.\",\n InvalidLhsBinding: \"Binding invalid left-hand side in %0.\",\n InvalidNumber: \"Invalid number.\",\n InvalidOrMissingExponent: \"Floating-point numbers require a valid exponent after the 'e'.\",\n InvalidOrUnexpectedToken: \"Unexpected character '%0'.\",\n InvalidParenthesizedAssignment: \"Invalid parenthesized assignment pattern.\",\n InvalidPrivateFieldResolution: \"Private name #%0 is not defined.\",\n InvalidPropertyBindingPattern: \"Binding member expression.\",\n InvalidRecordProperty: \"Only properties and spread elements are allowed in record definitions.\",\n InvalidRestAssignmentPattern: \"Invalid rest operator's argument.\",\n LabelRedeclaration: \"Label '%0' is already declared.\",\n LetInLexicalBinding: \"'let' is not allowed to be used as a name in 'let' or 'const' declarations.\",\n LineTerminatorBeforeArrow: \"No line break is allowed before '=>'.\",\n MalformedRegExpFlags: \"Invalid regular expression flag.\",\n MissingClassName: \"A class name is required.\",\n MissingEqInAssignment: \"Only '=' operator can be used for specifying default value.\",\n MissingSemicolon: \"Missing semicolon.\",\n MissingUnicodeEscape: \"Expecting Unicode escape sequence \\\\uXXXX.\",\n MixingCoalesceWithLogical: \"Nullish coalescing operator(??) requires parens when mixing with logical operators.\",\n ModuleAttributeDifferentFromType: \"The only accepted module attribute is `type`.\",\n ModuleAttributeInvalidValue: \"Only string literals are allowed as module attribute values.\",\n ModuleAttributesWithDuplicateKeys: 'Duplicate key \"%0\" is not allowed in module attributes.',\n ModuleExportNameHasLoneSurrogate: \"An export name cannot include a lone surrogate, found '\\\\u%0'.\",\n ModuleExportUndefined: \"Export '%0' is not defined.\",\n MultipleDefaultsInSwitch: \"Multiple default clauses.\",\n NewlineAfterThrow: \"Illegal newline after throw.\",\n NoCatchOrFinally: \"Missing catch or finally clause.\",\n NumberIdentifier: \"Identifier directly after number.\",\n NumericSeparatorInEscapeSequence: \"Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.\",\n ObsoleteAwaitStar: \"'await*' has been removed from the async functions proposal. Use Promise.all() instead.\",\n OptionalChainingNoNew: \"Constructors in/after an Optional Chain are not allowed.\",\n OptionalChainingNoTemplate: \"Tagged Template Literals are not allowed in optionalChain.\",\n OverrideOnConstructor: \"'override' modifier cannot appear on a constructor declaration.\",\n ParamDupe: \"Argument name clash.\",\n PatternHasAccessor: \"Object pattern can't contain getter or setter.\",\n PatternHasMethod: \"Object pattern can't contain methods.\",\n PipeBodyIsTighter: \"Unexpected %0 after pipeline body; any %0 expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.\",\n PipeTopicRequiresHackPipes: 'Topic reference is used, but the pipelineOperator plugin was not passed a \"proposal\": \"hack\" or \"smart\" option.',\n PipeTopicUnbound: \"Topic reference is unbound; it must be inside a pipe body.\",\n PipeTopicUnconfiguredToken: 'Invalid topic token %0. In order to use %0 as a topic reference, the pipelineOperator plugin must be configured with { \"proposal\": \"hack\", \"topicToken\": \"%0\" }.',\n PipeTopicUnused: \"Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.\",\n PipeUnparenthesizedBody: \"Hack-style pipe body cannot be an unparenthesized %0 expression; please wrap it in parentheses.\",\n PipelineBodyNoArrow: 'Unexpected arrow \"=>\" after pipeline body; arrow function in pipeline body must be parenthesized.',\n PipelineBodySequenceExpression: \"Pipeline body may not be a comma-separated sequence expression.\",\n PipelineHeadSequenceExpression: \"Pipeline head should not be a comma-separated sequence expression.\",\n PipelineTopicUnused: \"Pipeline is in topic style but does not use topic reference.\",\n PrimaryTopicNotAllowed: \"Topic reference was used in a lexical context without topic binding.\",\n PrimaryTopicRequiresSmartPipeline: 'Topic reference is used, but the pipelineOperator plugin was not passed a \"proposal\": \"hack\" or \"smart\" option.',\n PrivateInExpectedIn: \"Private names are only allowed in property accesses (`obj.#%0`) or in `in` expressions (`#%0 in obj`).\",\n PrivateNameRedeclaration: \"Duplicate private name #%0.\",\n RecordExpressionBarIncorrectEndSyntaxType: \"Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n RecordExpressionBarIncorrectStartSyntaxType: \"Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n RecordExpressionHashIncorrectStartSyntaxType: \"Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.\",\n RecordNoProto: \"'__proto__' is not allowed in Record expressions.\",\n RestTrailingComma: \"Unexpected trailing comma after rest element.\",\n SloppyFunction: \"In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.\",\n StaticPrototype: \"Classes may not have static property named prototype.\",\n StrictDelete: \"Deleting local variable in strict mode.\",\n StrictEvalArguments: \"Assigning to '%0' in strict mode.\",\n StrictEvalArgumentsBinding: \"Binding '%0' in strict mode.\",\n StrictFunction: \"In strict mode code, functions can only be declared at top level or inside a block.\",\n StrictNumericEscape: \"The only valid numeric escape in strict mode is '\\\\0'.\",\n StrictOctalLiteral: \"Legacy octal literals are not allowed in strict mode.\",\n StrictWith: \"'with' in strict mode.\",\n SuperNotAllowed: \"`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?\",\n SuperPrivateField: \"Private fields can't be accessed on super.\",\n TrailingDecorator: \"Decorators must be attached to a class element.\",\n TupleExpressionBarIncorrectEndSyntaxType: \"Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n TupleExpressionBarIncorrectStartSyntaxType: \"Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n TupleExpressionHashIncorrectStartSyntaxType: \"Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.\",\n UnexpectedArgumentPlaceholder: \"Unexpected argument placeholder.\",\n UnexpectedAwaitAfterPipelineBody: 'Unexpected \"await\" after pipeline body; await must have parentheses in minimal proposal.',\n UnexpectedDigitAfterHash: \"Unexpected digit after hash token.\",\n UnexpectedImportExport: \"'import' and 'export' may only appear at the top level.\",\n UnexpectedKeyword: \"Unexpected keyword '%0'.\",\n UnexpectedLeadingDecorator: \"Leading decorators must be attached to a class declaration.\",\n UnexpectedLexicalDeclaration: \"Lexical declaration cannot appear in a single-statement context.\",\n UnexpectedNewTarget: \"`new.target` can only be used in functions or class properties.\",\n UnexpectedNumericSeparator: \"A numeric separator is only allowed between two digits.\",\n UnexpectedPrivateField: \"Unexpected private name.\",\n UnexpectedReservedWord: \"Unexpected reserved word '%0'.\",\n UnexpectedSuper: \"'super' is only allowed in object methods and classes.\",\n UnexpectedToken: \"Unexpected token '%0'.\",\n UnexpectedTokenUnaryExponentiation: \"Illegal expression. Wrap left hand side or entire exponentiation in parentheses.\",\n UnsupportedBind: \"Binding should be performed on object property.\",\n UnsupportedDecoratorExport: \"A decorated export must export a class declaration.\",\n UnsupportedDefaultExport: \"Only expressions, functions or classes are allowed as the `default` export.\",\n UnsupportedImport: \"`import` can only be used in `import()` or `import.meta`.\",\n UnsupportedMetaProperty: \"The only valid meta property for %0 is %0.%1.\",\n UnsupportedParameterDecorator: \"Decorators cannot be used to decorate parameters.\",\n UnsupportedPropertyDecorator: \"Decorators cannot be used to decorate object literal properties.\",\n UnsupportedSuper: \"'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).\",\n UnterminatedComment: \"Unterminated comment.\",\n UnterminatedRegExp: \"Unterminated regular expression.\",\n UnterminatedString: \"Unterminated string constant.\",\n UnterminatedTemplate: \"Unterminated template.\",\n VarRedeclaration: \"Identifier '%0' has already been declared.\",\n YieldBindingIdentifier: \"Can not use 'yield' as identifier inside a generator.\",\n YieldInParameter: \"Yield expression is not allowed in formal parameters.\",\n ZeroDigitNumericSeparator: \"Numeric separator can not be used after leading 0.\"\n}, ErrorCodes.SyntaxError);\nconst SourceTypeModuleErrorMessages = makeErrorTemplates({\n ImportMetaOutsideModule: `import.meta may appear only with 'sourceType: \"module\"'`,\n ImportOutsideModule: `'import' and 'export' may appear only with 'sourceType: \"module\"'`\n}, ErrorCodes.SourceTypeModuleError);\n\nfunction keepReasonCodeCompat(reasonCode, syntaxPlugin) {\n {\n if (syntaxPlugin === \"flow\" && reasonCode === \"PatternIsOptional\") {\n return \"OptionalBindingPattern\";\n }\n }\n return reasonCode;\n}\n\nfunction makeErrorTemplates(messages, code, syntaxPlugin) {\n const templates = {};\n Object.keys(messages).forEach(reasonCode => {\n templates[reasonCode] = Object.freeze({\n code,\n reasonCode: keepReasonCodeCompat(reasonCode, syntaxPlugin),\n template: messages[reasonCode]\n });\n });\n return Object.freeze(templates);\n}\nclass ParserError extends CommentsParser {\n raise({\n code,\n reasonCode,\n template\n }, origin, ...params) {\n return this.raiseWithData(origin.node ? origin.node.loc.start : origin.at, {\n code,\n reasonCode\n }, template, ...params);\n }\n\n raiseOverwrite(loc, {\n code,\n template\n }, ...params) {\n const pos = loc.index;\n const message = template.replace(/%(\\d+)/g, (_, i) => params[i]) + ` (${loc.line}:${loc.column})`;\n\n if (this.options.errorRecovery) {\n const errors = this.state.errors;\n\n for (let i = errors.length - 1; i >= 0; i--) {\n const error = errors[i];\n\n if (error.pos === pos) {\n return Object.assign(error, {\n message\n });\n } else if (error.pos < pos) {\n break;\n }\n }\n }\n\n return this._raise({\n code,\n loc,\n pos\n }, message);\n }\n\n raiseWithData(loc, data, errorTemplate, ...params) {\n const pos = loc.index;\n const message = errorTemplate.replace(/%(\\d+)/g, (_, i) => params[i]) + ` (${loc.line}:${loc.column})`;\n return this._raise(Object.assign({\n loc,\n pos\n }, data), message);\n }\n\n _raise(errorContext, message) {\n const err = new SyntaxError(message);\n Object.assign(err, errorContext);\n\n if (this.options.errorRecovery) {\n if (!this.isLookahead) this.state.errors.push(err);\n return err;\n } else {\n throw err;\n }\n }\n\n}\n\nconst {\n defineProperty\n} = Object;\n\nconst toUnenumerable = (object, key) => defineProperty(object, key, {\n enumerable: false,\n value: object[key]\n});\n\nfunction toESTreeLocation(node) {\n toUnenumerable(node.loc.start, \"index\");\n toUnenumerable(node.loc.end, \"index\");\n return node;\n}\n\nvar estree = (superClass => class extends superClass {\n parse() {\n const file = toESTreeLocation(super.parse());\n\n if (this.options.tokens) {\n file.tokens = file.tokens.map(toESTreeLocation);\n }\n\n return file;\n }\n\n parseRegExpLiteral({\n pattern,\n flags\n }) {\n let regex = null;\n\n try {\n regex = new RegExp(pattern, flags);\n } catch (e) {}\n\n const node = this.estreeParseLiteral(regex);\n node.regex = {\n pattern,\n flags\n };\n return node;\n }\n\n parseBigIntLiteral(value) {\n let bigInt;\n\n try {\n bigInt = BigInt(value);\n } catch (_unused) {\n bigInt = null;\n }\n\n const node = this.estreeParseLiteral(bigInt);\n node.bigint = String(node.value || value);\n return node;\n }\n\n parseDecimalLiteral(value) {\n const decimal = null;\n const node = this.estreeParseLiteral(decimal);\n node.decimal = String(node.value || value);\n return node;\n }\n\n estreeParseLiteral(value) {\n return this.parseLiteral(value, \"Literal\");\n }\n\n parseStringLiteral(value) {\n return this.estreeParseLiteral(value);\n }\n\n parseNumericLiteral(value) {\n return this.estreeParseLiteral(value);\n }\n\n parseNullLiteral() {\n return this.estreeParseLiteral(null);\n }\n\n parseBooleanLiteral(value) {\n return this.estreeParseLiteral(value);\n }\n\n directiveToStmt(directive) {\n const directiveLiteral = directive.value;\n const stmt = this.startNodeAt(directive.start, directive.loc.start);\n const expression = this.startNodeAt(directiveLiteral.start, directiveLiteral.loc.start);\n expression.value = directiveLiteral.extra.expressionValue;\n expression.raw = directiveLiteral.extra.raw;\n stmt.expression = this.finishNodeAt(expression, \"Literal\", directiveLiteral.loc.end);\n stmt.directive = directiveLiteral.extra.raw.slice(1, -1);\n return this.finishNodeAt(stmt, \"ExpressionStatement\", directive.loc.end);\n }\n\n initFunction(node, isAsync) {\n super.initFunction(node, isAsync);\n node.expression = false;\n }\n\n checkDeclaration(node) {\n if (node != null && this.isObjectProperty(node)) {\n this.checkDeclaration(node.value);\n } else {\n super.checkDeclaration(node);\n }\n }\n\n getObjectOrClassMethodParams(method) {\n return method.value.params;\n }\n\n isValidDirective(stmt) {\n var _stmt$expression$extr;\n\n return stmt.type === \"ExpressionStatement\" && stmt.expression.type === \"Literal\" && typeof stmt.expression.value === \"string\" && !((_stmt$expression$extr = stmt.expression.extra) != null && _stmt$expression$extr.parenthesized);\n }\n\n parseBlockBody(node, ...args) {\n super.parseBlockBody(node, ...args);\n const directiveStatements = node.directives.map(d => this.directiveToStmt(d));\n node.body = directiveStatements.concat(node.body);\n delete node.directives;\n }\n\n pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {\n this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, \"ClassMethod\", true);\n\n if (method.typeParameters) {\n method.value.typeParameters = method.typeParameters;\n delete method.typeParameters;\n }\n\n classBody.body.push(method);\n }\n\n parsePrivateName() {\n const node = super.parsePrivateName();\n {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return node;\n }\n }\n return this.convertPrivateNameToPrivateIdentifier(node);\n }\n\n convertPrivateNameToPrivateIdentifier(node) {\n const name = super.getPrivateNameSV(node);\n node = node;\n delete node.id;\n node.name = name;\n node.type = \"PrivateIdentifier\";\n return node;\n }\n\n isPrivateName(node) {\n {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return super.isPrivateName(node);\n }\n }\n return node.type === \"PrivateIdentifier\";\n }\n\n getPrivateNameSV(node) {\n {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return super.getPrivateNameSV(node);\n }\n }\n return node.name;\n }\n\n parseLiteral(value, type) {\n const node = super.parseLiteral(value, type);\n node.raw = node.extra.raw;\n delete node.extra;\n return node;\n }\n\n parseFunctionBody(node, allowExpression, isMethod = false) {\n super.parseFunctionBody(node, allowExpression, isMethod);\n node.expression = node.body.type !== \"BlockStatement\";\n }\n\n parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) {\n let funcNode = this.startNode();\n funcNode.kind = node.kind;\n funcNode = super.parseMethod(funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope);\n funcNode.type = \"FunctionExpression\";\n delete funcNode.kind;\n node.value = funcNode;\n\n if (type === \"ClassPrivateMethod\") {\n node.computed = false;\n }\n\n type = \"MethodDefinition\";\n return this.finishNode(node, type);\n }\n\n parseClassProperty(...args) {\n const propertyNode = super.parseClassProperty(...args);\n {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return propertyNode;\n }\n }\n propertyNode.type = \"PropertyDefinition\";\n return propertyNode;\n }\n\n parseClassPrivateProperty(...args) {\n const propertyNode = super.parseClassPrivateProperty(...args);\n {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return propertyNode;\n }\n }\n propertyNode.type = \"PropertyDefinition\";\n propertyNode.computed = false;\n return propertyNode;\n }\n\n parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) {\n const node = super.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor);\n\n if (node) {\n node.type = \"Property\";\n if (node.kind === \"method\") node.kind = \"init\";\n node.shorthand = false;\n }\n\n return node;\n }\n\n parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors) {\n const node = super.parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors);\n\n if (node) {\n node.kind = \"init\";\n node.type = \"Property\";\n }\n\n return node;\n }\n\n isAssignable(node, isBinding) {\n if (node != null && this.isObjectProperty(node)) {\n return this.isAssignable(node.value, isBinding);\n }\n\n return super.isAssignable(node, isBinding);\n }\n\n toAssignable(node, isLHS = false) {\n if (node != null && this.isObjectProperty(node)) {\n const {\n key,\n value\n } = node;\n\n if (this.isPrivateName(key)) {\n this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start);\n }\n\n this.toAssignable(value, isLHS);\n return node;\n }\n\n return super.toAssignable(node, isLHS);\n }\n\n toAssignableObjectExpressionProp(prop, ...args) {\n if (prop.kind === \"get\" || prop.kind === \"set\") {\n this.raise(ErrorMessages.PatternHasAccessor, {\n node: prop.key\n });\n } else if (prop.method) {\n this.raise(ErrorMessages.PatternHasMethod, {\n node: prop.key\n });\n } else {\n super.toAssignableObjectExpressionProp(prop, ...args);\n }\n }\n\n finishCallExpression(node, optional) {\n super.finishCallExpression(node, optional);\n\n if (node.callee.type === \"Import\") {\n node.type = \"ImportExpression\";\n node.source = node.arguments[0];\n\n if (this.hasPlugin(\"importAssertions\")) {\n var _node$arguments$;\n\n node.attributes = (_node$arguments$ = node.arguments[1]) != null ? _node$arguments$ : null;\n }\n\n delete node.arguments;\n delete node.callee;\n }\n\n return node;\n }\n\n toReferencedArguments(node) {\n if (node.type === \"ImportExpression\") {\n return;\n }\n\n super.toReferencedArguments(node);\n }\n\n parseExport(node) {\n super.parseExport(node);\n\n switch (node.type) {\n case \"ExportAllDeclaration\":\n node.exported = null;\n break;\n\n case \"ExportNamedDeclaration\":\n if (node.specifiers.length === 1 && node.specifiers[0].type === \"ExportNamespaceSpecifier\") {\n node.type = \"ExportAllDeclaration\";\n node.exported = node.specifiers[0].exported;\n delete node.specifiers;\n }\n\n break;\n }\n\n return node;\n }\n\n parseSubscript(base, startPos, startLoc, noCalls, state) {\n const node = super.parseSubscript(base, startPos, startLoc, noCalls, state);\n\n if (state.optionalChainMember) {\n if (node.type === \"OptionalMemberExpression\" || node.type === \"OptionalCallExpression\") {\n node.type = node.type.substring(8);\n }\n\n if (state.stop) {\n const chain = this.startNodeAtNode(node);\n chain.expression = node;\n return this.finishNode(chain, \"ChainExpression\");\n }\n } else if (node.type === \"MemberExpression\" || node.type === \"CallExpression\") {\n node.optional = false;\n }\n\n return node;\n }\n\n hasPropertyAsPrivateName(node) {\n if (node.type === \"ChainExpression\") {\n node = node.expression;\n }\n\n return super.hasPropertyAsPrivateName(node);\n }\n\n isOptionalChain(node) {\n return node.type === \"ChainExpression\";\n }\n\n isObjectProperty(node) {\n return node.type === \"Property\" && node.kind === \"init\" && !node.method;\n }\n\n isObjectMethod(node) {\n return node.method || node.kind === \"get\" || node.kind === \"set\";\n }\n\n finishNodeAt(node, type, endLoc) {\n return toESTreeLocation(super.finishNodeAt(node, type, endLoc));\n }\n\n resetEndLocation(node, endLoc = this.state.lastTokEndLoc) {\n super.resetEndLocation(node, endLoc);\n toESTreeLocation(node);\n }\n\n});\n\nclass TokContext {\n constructor(token, preserveSpace) {\n this.token = void 0;\n this.preserveSpace = void 0;\n this.token = token;\n this.preserveSpace = !!preserveSpace;\n }\n\n}\nconst types = {\n brace: new TokContext(\"{\"),\n j_oTag: new TokContext(\"...\", true)\n};\n{\n types.template = new TokContext(\"`\", true);\n}\n\nconst beforeExpr = true;\nconst startsExpr = true;\nconst isLoop = true;\nconst isAssign = true;\nconst prefix = true;\nconst postfix = true;\nclass ExportedTokenType {\n constructor(label, conf = {}) {\n this.label = void 0;\n this.keyword = void 0;\n this.beforeExpr = void 0;\n this.startsExpr = void 0;\n this.rightAssociative = void 0;\n this.isLoop = void 0;\n this.isAssign = void 0;\n this.prefix = void 0;\n this.postfix = void 0;\n this.binop = void 0;\n this.label = label;\n this.keyword = conf.keyword;\n this.beforeExpr = !!conf.beforeExpr;\n this.startsExpr = !!conf.startsExpr;\n this.rightAssociative = !!conf.rightAssociative;\n this.isLoop = !!conf.isLoop;\n this.isAssign = !!conf.isAssign;\n this.prefix = !!conf.prefix;\n this.postfix = !!conf.postfix;\n this.binop = conf.binop != null ? conf.binop : null;\n {\n this.updateContext = null;\n }\n }\n\n}\nconst keywords$1 = new Map();\n\nfunction createKeyword(name, options = {}) {\n options.keyword = name;\n const token = createToken(name, options);\n keywords$1.set(name, token);\n return token;\n}\n\nfunction createBinop(name, binop) {\n return createToken(name, {\n beforeExpr,\n binop\n });\n}\n\nlet tokenTypeCounter = -1;\nconst tokenTypes = [];\nconst tokenLabels = [];\nconst tokenBinops = [];\nconst tokenBeforeExprs = [];\nconst tokenStartsExprs = [];\nconst tokenPrefixes = [];\n\nfunction createToken(name, options = {}) {\n var _options$binop, _options$beforeExpr, _options$startsExpr, _options$prefix;\n\n ++tokenTypeCounter;\n tokenLabels.push(name);\n tokenBinops.push((_options$binop = options.binop) != null ? _options$binop : -1);\n tokenBeforeExprs.push((_options$beforeExpr = options.beforeExpr) != null ? _options$beforeExpr : false);\n tokenStartsExprs.push((_options$startsExpr = options.startsExpr) != null ? _options$startsExpr : false);\n tokenPrefixes.push((_options$prefix = options.prefix) != null ? _options$prefix : false);\n tokenTypes.push(new ExportedTokenType(name, options));\n return tokenTypeCounter;\n}\n\nfunction createKeywordLike(name, options = {}) {\n var _options$binop2, _options$beforeExpr2, _options$startsExpr2, _options$prefix2;\n\n ++tokenTypeCounter;\n keywords$1.set(name, tokenTypeCounter);\n tokenLabels.push(name);\n tokenBinops.push((_options$binop2 = options.binop) != null ? _options$binop2 : -1);\n tokenBeforeExprs.push((_options$beforeExpr2 = options.beforeExpr) != null ? _options$beforeExpr2 : false);\n tokenStartsExprs.push((_options$startsExpr2 = options.startsExpr) != null ? _options$startsExpr2 : false);\n tokenPrefixes.push((_options$prefix2 = options.prefix) != null ? _options$prefix2 : false);\n tokenTypes.push(new ExportedTokenType(\"name\", options));\n return tokenTypeCounter;\n}\n\nconst tt = {\n bracketL: createToken(\"[\", {\n beforeExpr,\n startsExpr\n }),\n bracketHashL: createToken(\"#[\", {\n beforeExpr,\n startsExpr\n }),\n bracketBarL: createToken(\"[|\", {\n beforeExpr,\n startsExpr\n }),\n bracketR: createToken(\"]\"),\n bracketBarR: createToken(\"|]\"),\n braceL: createToken(\"{\", {\n beforeExpr,\n startsExpr\n }),\n braceBarL: createToken(\"{|\", {\n beforeExpr,\n startsExpr\n }),\n braceHashL: createToken(\"#{\", {\n beforeExpr,\n startsExpr\n }),\n braceR: createToken(\"}\", {\n beforeExpr\n }),\n braceBarR: createToken(\"|}\"),\n parenL: createToken(\"(\", {\n beforeExpr,\n startsExpr\n }),\n parenR: createToken(\")\"),\n comma: createToken(\",\", {\n beforeExpr\n }),\n semi: createToken(\";\", {\n beforeExpr\n }),\n colon: createToken(\":\", {\n beforeExpr\n }),\n doubleColon: createToken(\"::\", {\n beforeExpr\n }),\n dot: createToken(\".\"),\n question: createToken(\"?\", {\n beforeExpr\n }),\n questionDot: createToken(\"?.\"),\n arrow: createToken(\"=>\", {\n beforeExpr\n }),\n template: createToken(\"template\"),\n ellipsis: createToken(\"...\", {\n beforeExpr\n }),\n backQuote: createToken(\"`\", {\n startsExpr\n }),\n dollarBraceL: createToken(\"${\", {\n beforeExpr,\n startsExpr\n }),\n templateTail: createToken(\"...`\", {\n startsExpr\n }),\n templateNonTail: createToken(\"...${\", {\n beforeExpr,\n startsExpr\n }),\n at: createToken(\"@\"),\n hash: createToken(\"#\", {\n startsExpr\n }),\n interpreterDirective: createToken(\"#!...\"),\n eq: createToken(\"=\", {\n beforeExpr,\n isAssign\n }),\n assign: createToken(\"_=\", {\n beforeExpr,\n isAssign\n }),\n slashAssign: createToken(\"_=\", {\n beforeExpr,\n isAssign\n }),\n xorAssign: createToken(\"_=\", {\n beforeExpr,\n isAssign\n }),\n moduloAssign: createToken(\"_=\", {\n beforeExpr,\n isAssign\n }),\n incDec: createToken(\"++/--\", {\n prefix,\n postfix,\n startsExpr\n }),\n bang: createToken(\"!\", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n tilde: createToken(\"~\", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n doubleCaret: createToken(\"^^\", {\n startsExpr\n }),\n doubleAt: createToken(\"@@\", {\n startsExpr\n }),\n pipeline: createBinop(\"|>\", 0),\n nullishCoalescing: createBinop(\"??\", 1),\n logicalOR: createBinop(\"||\", 1),\n logicalAND: createBinop(\"&&\", 2),\n bitwiseOR: createBinop(\"|\", 3),\n bitwiseXOR: createBinop(\"^\", 4),\n bitwiseAND: createBinop(\"&\", 5),\n equality: createBinop(\"==/!=/===/!==\", 6),\n lt: createBinop(\"/<=/>=\", 7),\n gt: createBinop(\"/<=/>=\", 7),\n relational: createBinop(\"/<=/>=\", 7),\n bitShift: createBinop(\"<>/>>>\", 8),\n bitShiftL: createBinop(\"<>/>>>\", 8),\n bitShiftR: createBinop(\"<>/>>>\", 8),\n plusMin: createToken(\"+/-\", {\n beforeExpr,\n binop: 9,\n prefix,\n startsExpr\n }),\n modulo: createToken(\"%\", {\n binop: 10,\n startsExpr\n }),\n star: createToken(\"*\", {\n binop: 10\n }),\n slash: createBinop(\"/\", 10),\n exponent: createToken(\"**\", {\n beforeExpr,\n binop: 11,\n rightAssociative: true\n }),\n _in: createKeyword(\"in\", {\n beforeExpr,\n binop: 7\n }),\n _instanceof: createKeyword(\"instanceof\", {\n beforeExpr,\n binop: 7\n }),\n _break: createKeyword(\"break\"),\n _case: createKeyword(\"case\", {\n beforeExpr\n }),\n _catch: createKeyword(\"catch\"),\n _continue: createKeyword(\"continue\"),\n _debugger: createKeyword(\"debugger\"),\n _default: createKeyword(\"default\", {\n beforeExpr\n }),\n _else: createKeyword(\"else\", {\n beforeExpr\n }),\n _finally: createKeyword(\"finally\"),\n _function: createKeyword(\"function\", {\n startsExpr\n }),\n _if: createKeyword(\"if\"),\n _return: createKeyword(\"return\", {\n beforeExpr\n }),\n _switch: createKeyword(\"switch\"),\n _throw: createKeyword(\"throw\", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n _try: createKeyword(\"try\"),\n _var: createKeyword(\"var\"),\n _const: createKeyword(\"const\"),\n _with: createKeyword(\"with\"),\n _new: createKeyword(\"new\", {\n beforeExpr,\n startsExpr\n }),\n _this: createKeyword(\"this\", {\n startsExpr\n }),\n _super: createKeyword(\"super\", {\n startsExpr\n }),\n _class: createKeyword(\"class\", {\n startsExpr\n }),\n _extends: createKeyword(\"extends\", {\n beforeExpr\n }),\n _export: createKeyword(\"export\"),\n _import: createKeyword(\"import\", {\n startsExpr\n }),\n _null: createKeyword(\"null\", {\n startsExpr\n }),\n _true: createKeyword(\"true\", {\n startsExpr\n }),\n _false: createKeyword(\"false\", {\n startsExpr\n }),\n _typeof: createKeyword(\"typeof\", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n _void: createKeyword(\"void\", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n _delete: createKeyword(\"delete\", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n _do: createKeyword(\"do\", {\n isLoop,\n beforeExpr\n }),\n _for: createKeyword(\"for\", {\n isLoop\n }),\n _while: createKeyword(\"while\", {\n isLoop\n }),\n _as: createKeywordLike(\"as\", {\n startsExpr\n }),\n _assert: createKeywordLike(\"assert\", {\n startsExpr\n }),\n _async: createKeywordLike(\"async\", {\n startsExpr\n }),\n _await: createKeywordLike(\"await\", {\n startsExpr\n }),\n _from: createKeywordLike(\"from\", {\n startsExpr\n }),\n _get: createKeywordLike(\"get\", {\n startsExpr\n }),\n _let: createKeywordLike(\"let\", {\n startsExpr\n }),\n _meta: createKeywordLike(\"meta\", {\n startsExpr\n }),\n _of: createKeywordLike(\"of\", {\n startsExpr\n }),\n _sent: createKeywordLike(\"sent\", {\n startsExpr\n }),\n _set: createKeywordLike(\"set\", {\n startsExpr\n }),\n _static: createKeywordLike(\"static\", {\n startsExpr\n }),\n _yield: createKeywordLike(\"yield\", {\n startsExpr\n }),\n _asserts: createKeywordLike(\"asserts\", {\n startsExpr\n }),\n _checks: createKeywordLike(\"checks\", {\n startsExpr\n }),\n _exports: createKeywordLike(\"exports\", {\n startsExpr\n }),\n _global: createKeywordLike(\"global\", {\n startsExpr\n }),\n _implements: createKeywordLike(\"implements\", {\n startsExpr\n }),\n _intrinsic: createKeywordLike(\"intrinsic\", {\n startsExpr\n }),\n _infer: createKeywordLike(\"infer\", {\n startsExpr\n }),\n _is: createKeywordLike(\"is\", {\n startsExpr\n }),\n _mixins: createKeywordLike(\"mixins\", {\n startsExpr\n }),\n _proto: createKeywordLike(\"proto\", {\n startsExpr\n }),\n _require: createKeywordLike(\"require\", {\n startsExpr\n }),\n _keyof: createKeywordLike(\"keyof\", {\n startsExpr\n }),\n _readonly: createKeywordLike(\"readonly\", {\n startsExpr\n }),\n _unique: createKeywordLike(\"unique\", {\n startsExpr\n }),\n _abstract: createKeywordLike(\"abstract\", {\n startsExpr\n }),\n _declare: createKeywordLike(\"declare\", {\n startsExpr\n }),\n _enum: createKeywordLike(\"enum\", {\n startsExpr\n }),\n _module: createKeywordLike(\"module\", {\n startsExpr\n }),\n _namespace: createKeywordLike(\"namespace\", {\n startsExpr\n }),\n _interface: createKeywordLike(\"interface\", {\n startsExpr\n }),\n _type: createKeywordLike(\"type\", {\n startsExpr\n }),\n _opaque: createKeywordLike(\"opaque\", {\n startsExpr\n }),\n name: createToken(\"name\", {\n startsExpr\n }),\n string: createToken(\"string\", {\n startsExpr\n }),\n num: createToken(\"num\", {\n startsExpr\n }),\n bigint: createToken(\"bigint\", {\n startsExpr\n }),\n decimal: createToken(\"decimal\", {\n startsExpr\n }),\n regexp: createToken(\"regexp\", {\n startsExpr\n }),\n privateName: createToken(\"#name\", {\n startsExpr\n }),\n eof: createToken(\"eof\"),\n jsxName: createToken(\"jsxName\"),\n jsxText: createToken(\"jsxText\", {\n beforeExpr: true\n }),\n jsxTagStart: createToken(\"jsxTagStart\", {\n startsExpr: true\n }),\n jsxTagEnd: createToken(\"jsxTagEnd\"),\n placeholder: createToken(\"%%\", {\n startsExpr: true\n })\n};\nfunction tokenIsIdentifier(token) {\n return token >= 93 && token <= 128;\n}\nfunction tokenKeywordOrIdentifierIsKeyword(token) {\n return token <= 92;\n}\nfunction tokenIsKeywordOrIdentifier(token) {\n return token >= 58 && token <= 128;\n}\nfunction tokenIsLiteralPropertyName(token) {\n return token >= 58 && token <= 132;\n}\nfunction tokenComesBeforeExpression(token) {\n return tokenBeforeExprs[token];\n}\nfunction tokenCanStartExpression(token) {\n return tokenStartsExprs[token];\n}\nfunction tokenIsAssignment(token) {\n return token >= 29 && token <= 33;\n}\nfunction tokenIsFlowInterfaceOrTypeOrOpaque(token) {\n return token >= 125 && token <= 127;\n}\nfunction tokenIsLoop(token) {\n return token >= 90 && token <= 92;\n}\nfunction tokenIsKeyword(token) {\n return token >= 58 && token <= 92;\n}\nfunction tokenIsOperator(token) {\n return token >= 39 && token <= 59;\n}\nfunction tokenIsPostfix(token) {\n return token === 34;\n}\nfunction tokenIsPrefix(token) {\n return tokenPrefixes[token];\n}\nfunction tokenIsTSTypeOperator(token) {\n return token >= 117 && token <= 119;\n}\nfunction tokenIsTSDeclarationStart(token) {\n return token >= 120 && token <= 126;\n}\nfunction tokenLabelName(token) {\n return tokenLabels[token];\n}\nfunction tokenOperatorPrecedence(token) {\n return tokenBinops[token];\n}\nfunction tokenIsRightAssociative(token) {\n return token === 57;\n}\nfunction tokenIsTemplate(token) {\n return token >= 24 && token <= 25;\n}\nfunction getExportedToken(token) {\n return tokenTypes[token];\n}\n{\n tokenTypes[8].updateContext = context => {\n context.pop();\n };\n\n tokenTypes[5].updateContext = tokenTypes[7].updateContext = tokenTypes[23].updateContext = context => {\n context.push(types.brace);\n };\n\n tokenTypes[22].updateContext = context => {\n if (context[context.length - 1] === types.template) {\n context.pop();\n } else {\n context.push(types.template);\n }\n };\n\n tokenTypes[138].updateContext = context => {\n context.push(types.j_expr, types.j_oTag);\n };\n}\n\nclass Position {\n constructor(line, col, index) {\n this.line = void 0;\n this.column = void 0;\n this.index = void 0;\n this.line = line;\n this.column = col;\n this.index = index;\n }\n\n}\nclass SourceLocation {\n constructor(start, end) {\n this.start = void 0;\n this.end = void 0;\n this.filename = void 0;\n this.identifierName = void 0;\n this.start = start;\n this.end = end;\n }\n\n}\nfunction createPositionWithColumnOffset(position, columnOffset) {\n const {\n line,\n column,\n index\n } = position;\n return new Position(line, column + columnOffset, index + columnOffset);\n}\n\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088e\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c88\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7ca\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7d9\\ua7f2-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\nlet nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0898-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ecd\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1ace\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\";\nconst nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nconst nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\nconst astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 190, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1070, 4050, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 46, 2, 18, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 482, 44, 11, 6, 17, 0, 322, 29, 19, 43, 1269, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4152, 8, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938];\nconst astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 154, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 19306, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 262, 6, 10, 9, 357, 0, 62, 13, 1495, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];\n\nfunction isInAstralSet(code, set) {\n let pos = 0x10000;\n\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n\n return false;\n}\n\nfunction isIdentifierStart(code) {\n if (code < 65) return code === 36;\n if (code <= 90) return true;\n if (code < 97) return code === 95;\n if (code <= 122) return true;\n\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));\n }\n\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\nfunction isIdentifierChar(code) {\n if (code < 48) return code === 36;\n if (code < 58) return true;\n if (code < 65) return false;\n if (code <= 90) return true;\n if (code < 97) return code === 95;\n if (code <= 122) return true;\n\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);\n}\n\nconst reservedWords = {\n keyword: [\"break\", \"case\", \"catch\", \"continue\", \"debugger\", \"default\", \"do\", \"else\", \"finally\", \"for\", \"function\", \"if\", \"return\", \"switch\", \"throw\", \"try\", \"var\", \"const\", \"while\", \"with\", \"new\", \"this\", \"super\", \"class\", \"extends\", \"export\", \"import\", \"null\", \"true\", \"false\", \"in\", \"instanceof\", \"typeof\", \"void\", \"delete\"],\n strict: [\"implements\", \"interface\", \"let\", \"package\", \"private\", \"protected\", \"public\", \"static\", \"yield\"],\n strictBind: [\"eval\", \"arguments\"]\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\nfunction isReservedWord(word, inModule) {\n return inModule && word === \"await\" || word === \"enum\";\n}\nfunction isStrictReservedWord(word, inModule) {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\nfunction isStrictBindOnlyReservedWord(word) {\n return reservedWordsStrictBindSet.has(word);\n}\nfunction isStrictBindReservedWord(word, inModule) {\n return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);\n}\nfunction isKeyword(word) {\n return keywords.has(word);\n}\n\nfunction isIteratorStart(current, next, next2) {\n return current === 64 && next === 64 && isIdentifierStart(next2);\n}\nconst reservedWordLikeSet = new Set([\"break\", \"case\", \"catch\", \"continue\", \"debugger\", \"default\", \"do\", \"else\", \"finally\", \"for\", \"function\", \"if\", \"return\", \"switch\", \"throw\", \"try\", \"var\", \"const\", \"while\", \"with\", \"new\", \"this\", \"super\", \"class\", \"extends\", \"export\", \"import\", \"null\", \"true\", \"false\", \"in\", \"instanceof\", \"typeof\", \"void\", \"delete\", \"implements\", \"interface\", \"let\", \"package\", \"private\", \"protected\", \"public\", \"static\", \"yield\", \"eval\", \"arguments\", \"enum\", \"await\"]);\nfunction canBeReservedWord(word) {\n return reservedWordLikeSet.has(word);\n}\n\nconst SCOPE_OTHER = 0b000000000,\n SCOPE_PROGRAM = 0b000000001,\n SCOPE_FUNCTION = 0b000000010,\n SCOPE_ARROW = 0b000000100,\n SCOPE_SIMPLE_CATCH = 0b000001000,\n SCOPE_SUPER = 0b000010000,\n SCOPE_DIRECT_SUPER = 0b000100000,\n SCOPE_CLASS = 0b001000000,\n SCOPE_STATIC_BLOCK = 0b010000000,\n SCOPE_TS_MODULE = 0b100000000,\n SCOPE_VAR = SCOPE_PROGRAM | SCOPE_FUNCTION | SCOPE_TS_MODULE;\nconst BIND_KIND_VALUE = 0b000000000001,\n BIND_KIND_TYPE = 0b000000000010,\n BIND_SCOPE_VAR = 0b000000000100,\n BIND_SCOPE_LEXICAL = 0b000000001000,\n BIND_SCOPE_FUNCTION = 0b000000010000,\n BIND_FLAGS_NONE = 0b000001000000,\n BIND_FLAGS_CLASS = 0b000010000000,\n BIND_FLAGS_TS_ENUM = 0b000100000000,\n BIND_FLAGS_TS_CONST_ENUM = 0b001000000000,\n BIND_FLAGS_TS_EXPORT_ONLY = 0b010000000000,\n BIND_FLAGS_FLOW_DECLARE_FN = 0b100000000000;\nconst BIND_CLASS = BIND_KIND_VALUE | BIND_KIND_TYPE | BIND_SCOPE_LEXICAL | BIND_FLAGS_CLASS,\n BIND_LEXICAL = BIND_KIND_VALUE | 0 | BIND_SCOPE_LEXICAL | 0,\n BIND_VAR = BIND_KIND_VALUE | 0 | BIND_SCOPE_VAR | 0,\n BIND_FUNCTION = BIND_KIND_VALUE | 0 | BIND_SCOPE_FUNCTION | 0,\n BIND_TS_INTERFACE = 0 | BIND_KIND_TYPE | 0 | BIND_FLAGS_CLASS,\n BIND_TS_TYPE = 0 | BIND_KIND_TYPE | 0 | 0,\n BIND_TS_ENUM = BIND_KIND_VALUE | BIND_KIND_TYPE | BIND_SCOPE_LEXICAL | BIND_FLAGS_TS_ENUM,\n BIND_TS_AMBIENT = 0 | 0 | 0 | BIND_FLAGS_TS_EXPORT_ONLY,\n BIND_NONE = 0 | 0 | 0 | BIND_FLAGS_NONE,\n BIND_OUTSIDE = BIND_KIND_VALUE | 0 | 0 | BIND_FLAGS_NONE,\n BIND_TS_CONST_ENUM = BIND_TS_ENUM | BIND_FLAGS_TS_CONST_ENUM,\n BIND_TS_NAMESPACE = 0 | 0 | 0 | BIND_FLAGS_TS_EXPORT_ONLY,\n BIND_FLOW_DECLARE_FN = BIND_FLAGS_FLOW_DECLARE_FN;\nconst CLASS_ELEMENT_FLAG_STATIC = 0b100,\n CLASS_ELEMENT_KIND_GETTER = 0b010,\n CLASS_ELEMENT_KIND_SETTER = 0b001,\n CLASS_ELEMENT_KIND_ACCESSOR = CLASS_ELEMENT_KIND_GETTER | CLASS_ELEMENT_KIND_SETTER;\nconst CLASS_ELEMENT_STATIC_GETTER = CLASS_ELEMENT_KIND_GETTER | CLASS_ELEMENT_FLAG_STATIC,\n CLASS_ELEMENT_STATIC_SETTER = CLASS_ELEMENT_KIND_SETTER | CLASS_ELEMENT_FLAG_STATIC,\n CLASS_ELEMENT_INSTANCE_GETTER = CLASS_ELEMENT_KIND_GETTER,\n CLASS_ELEMENT_INSTANCE_SETTER = CLASS_ELEMENT_KIND_SETTER,\n CLASS_ELEMENT_OTHER = 0;\n\nclass Scope {\n constructor(flags) {\n this.var = new Set();\n this.lexical = new Set();\n this.functions = new Set();\n this.flags = flags;\n }\n\n}\nclass ScopeHandler {\n constructor(raise, inModule) {\n this.scopeStack = [];\n this.undefinedExports = new Map();\n this.raise = raise;\n this.inModule = inModule;\n }\n\n get inFunction() {\n return (this.currentVarScopeFlags() & SCOPE_FUNCTION) > 0;\n }\n\n get allowSuper() {\n return (this.currentThisScopeFlags() & SCOPE_SUPER) > 0;\n }\n\n get allowDirectSuper() {\n return (this.currentThisScopeFlags() & SCOPE_DIRECT_SUPER) > 0;\n }\n\n get inClass() {\n return (this.currentThisScopeFlags() & SCOPE_CLASS) > 0;\n }\n\n get inClassAndNotInNonArrowFunction() {\n const flags = this.currentThisScopeFlags();\n return (flags & SCOPE_CLASS) > 0 && (flags & SCOPE_FUNCTION) === 0;\n }\n\n get inStaticBlock() {\n for (let i = this.scopeStack.length - 1;; i--) {\n const {\n flags\n } = this.scopeStack[i];\n\n if (flags & SCOPE_STATIC_BLOCK) {\n return true;\n }\n\n if (flags & (SCOPE_VAR | SCOPE_CLASS)) {\n return false;\n }\n }\n }\n\n get inNonArrowFunction() {\n return (this.currentThisScopeFlags() & SCOPE_FUNCTION) > 0;\n }\n\n get treatFunctionsAsVar() {\n return this.treatFunctionsAsVarInScope(this.currentScope());\n }\n\n createScope(flags) {\n return new Scope(flags);\n }\n\n enter(flags) {\n this.scopeStack.push(this.createScope(flags));\n }\n\n exit() {\n this.scopeStack.pop();\n }\n\n treatFunctionsAsVarInScope(scope) {\n return !!(scope.flags & SCOPE_FUNCTION || !this.inModule && scope.flags & SCOPE_PROGRAM);\n }\n\n declareName(name, bindingType, loc) {\n let scope = this.currentScope();\n\n if (bindingType & BIND_SCOPE_LEXICAL || bindingType & BIND_SCOPE_FUNCTION) {\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n\n if (bindingType & BIND_SCOPE_FUNCTION) {\n scope.functions.add(name);\n } else {\n scope.lexical.add(name);\n }\n\n if (bindingType & BIND_SCOPE_LEXICAL) {\n this.maybeExportDefined(scope, name);\n }\n } else if (bindingType & BIND_SCOPE_VAR) {\n for (let i = this.scopeStack.length - 1; i >= 0; --i) {\n scope = this.scopeStack[i];\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n scope.var.add(name);\n this.maybeExportDefined(scope, name);\n if (scope.flags & SCOPE_VAR) break;\n }\n }\n\n if (this.inModule && scope.flags & SCOPE_PROGRAM) {\n this.undefinedExports.delete(name);\n }\n }\n\n maybeExportDefined(scope, name) {\n if (this.inModule && scope.flags & SCOPE_PROGRAM) {\n this.undefinedExports.delete(name);\n }\n }\n\n checkRedeclarationInScope(scope, name, bindingType, loc) {\n if (this.isRedeclaredInScope(scope, name, bindingType)) {\n this.raise(ErrorMessages.VarRedeclaration, {\n at: loc\n }, name);\n }\n }\n\n isRedeclaredInScope(scope, name, bindingType) {\n if (!(bindingType & BIND_KIND_VALUE)) return false;\n\n if (bindingType & BIND_SCOPE_LEXICAL) {\n return scope.lexical.has(name) || scope.functions.has(name) || scope.var.has(name);\n }\n\n if (bindingType & BIND_SCOPE_FUNCTION) {\n return scope.lexical.has(name) || !this.treatFunctionsAsVarInScope(scope) && scope.var.has(name);\n }\n\n return scope.lexical.has(name) && !(scope.flags & SCOPE_SIMPLE_CATCH && scope.lexical.values().next().value === name) || !this.treatFunctionsAsVarInScope(scope) && scope.functions.has(name);\n }\n\n checkLocalExport(id) {\n const {\n name\n } = id;\n const topLevelScope = this.scopeStack[0];\n\n if (!topLevelScope.lexical.has(name) && !topLevelScope.var.has(name) && !topLevelScope.functions.has(name)) {\n this.undefinedExports.set(name, id.loc.start);\n }\n }\n\n currentScope() {\n return this.scopeStack[this.scopeStack.length - 1];\n }\n\n currentVarScopeFlags() {\n for (let i = this.scopeStack.length - 1;; i--) {\n const {\n flags\n } = this.scopeStack[i];\n\n if (flags & SCOPE_VAR) {\n return flags;\n }\n }\n }\n\n currentThisScopeFlags() {\n for (let i = this.scopeStack.length - 1;; i--) {\n const {\n flags\n } = this.scopeStack[i];\n\n if (flags & (SCOPE_VAR | SCOPE_CLASS) && !(flags & SCOPE_ARROW)) {\n return flags;\n }\n }\n }\n\n}\n\nclass FlowScope extends Scope {\n constructor(...args) {\n super(...args);\n this.declareFunctions = new Set();\n }\n\n}\n\nclass FlowScopeHandler extends ScopeHandler {\n createScope(flags) {\n return new FlowScope(flags);\n }\n\n declareName(name, bindingType, loc) {\n const scope = this.currentScope();\n\n if (bindingType & BIND_FLAGS_FLOW_DECLARE_FN) {\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n this.maybeExportDefined(scope, name);\n scope.declareFunctions.add(name);\n return;\n }\n\n super.declareName(...arguments);\n }\n\n isRedeclaredInScope(scope, name, bindingType) {\n if (super.isRedeclaredInScope(...arguments)) return true;\n\n if (bindingType & BIND_FLAGS_FLOW_DECLARE_FN) {\n return !scope.declareFunctions.has(name) && (scope.lexical.has(name) || scope.functions.has(name));\n }\n\n return false;\n }\n\n checkLocalExport(id) {\n if (!this.scopeStack[0].declareFunctions.has(id.name)) {\n super.checkLocalExport(id);\n }\n }\n\n}\n\nconst lineBreak = /\\r\\n?|[\\n\\u2028\\u2029]/;\nconst lineBreakG = new RegExp(lineBreak.source, \"g\");\nfunction isNewLine(code) {\n switch (code) {\n case 10:\n case 13:\n case 8232:\n case 8233:\n return true;\n\n default:\n return false;\n }\n}\nconst skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\nconst skipWhiteSpaceInLine = /(?:[^\\S\\n\\r\\u2028\\u2029]|\\/\\/.*|\\/\\*.*?\\*\\/)*/y;\nconst skipWhiteSpaceToLineBreak = new RegExp(\"(?=(\" + skipWhiteSpaceInLine.source + \"))\\\\1\" + /(?=[\\n\\r\\u2028\\u2029]|\\/\\*(?!.*?\\*\\/)|$)/.source, \"y\");\nfunction isWhitespace(code) {\n switch (code) {\n case 0x0009:\n case 0x000b:\n case 0x000c:\n case 32:\n case 160:\n case 5760:\n case 0x2000:\n case 0x2001:\n case 0x2002:\n case 0x2003:\n case 0x2004:\n case 0x2005:\n case 0x2006:\n case 0x2007:\n case 0x2008:\n case 0x2009:\n case 0x200a:\n case 0x202f:\n case 0x205f:\n case 0x3000:\n case 0xfeff:\n return true;\n\n default:\n return false;\n }\n}\n\nclass State {\n constructor() {\n this.strict = void 0;\n this.curLine = void 0;\n this.lineStart = void 0;\n this.startLoc = void 0;\n this.endLoc = void 0;\n this.errors = [];\n this.potentialArrowAt = -1;\n this.noArrowAt = [];\n this.noArrowParamsConversionAt = [];\n this.maybeInArrowParameters = false;\n this.inType = false;\n this.noAnonFunctionType = false;\n this.hasFlowComment = false;\n this.isAmbientContext = false;\n this.inAbstractClass = false;\n this.topicContext = {\n maxNumOfResolvableTopics: 0,\n maxTopicIndex: null\n };\n this.soloAwait = false;\n this.inFSharpPipelineDirectBody = false;\n this.labels = [];\n this.decoratorStack = [[]];\n this.comments = [];\n this.commentStack = [];\n this.pos = 0;\n this.type = 135;\n this.value = null;\n this.start = 0;\n this.end = 0;\n this.lastTokEndLoc = null;\n this.lastTokStartLoc = null;\n this.lastTokStart = 0;\n this.context = [types.brace];\n this.canStartJSXElement = true;\n this.containsEsc = false;\n this.strictErrors = new Map();\n this.tokensLength = 0;\n }\n\n init({\n strictMode,\n sourceType,\n startLine,\n startColumn\n }) {\n this.strict = strictMode === false ? false : strictMode === true ? true : sourceType === \"module\";\n this.curLine = startLine;\n this.lineStart = -startColumn;\n this.startLoc = this.endLoc = new Position(startLine, startColumn, 0);\n }\n\n curPosition() {\n return new Position(this.curLine, this.pos - this.lineStart, this.pos);\n }\n\n clone(skipArrays) {\n const state = new State();\n const keys = Object.keys(this);\n\n for (let i = 0, length = keys.length; i < length; i++) {\n const key = keys[i];\n let val = this[key];\n\n if (!skipArrays && Array.isArray(val)) {\n val = val.slice();\n }\n\n state[key] = val;\n }\n\n return state;\n }\n\n}\n\nvar _isDigit = function isDigit(code) {\n return code >= 48 && code <= 57;\n};\nconst VALID_REGEX_FLAGS = new Set([103, 109, 115, 105, 121, 117, 100, 118]);\nconst forbiddenNumericSeparatorSiblings = {\n decBinOct: [46, 66, 69, 79, 95, 98, 101, 111],\n hex: [46, 88, 95, 120]\n};\nconst allowedNumericSeparatorSiblings = {};\nallowedNumericSeparatorSiblings.bin = [48, 49];\nallowedNumericSeparatorSiblings.oct = [...allowedNumericSeparatorSiblings.bin, 50, 51, 52, 53, 54, 55];\nallowedNumericSeparatorSiblings.dec = [...allowedNumericSeparatorSiblings.oct, 56, 57];\nallowedNumericSeparatorSiblings.hex = [...allowedNumericSeparatorSiblings.dec, 65, 66, 67, 68, 69, 70, 97, 98, 99, 100, 101, 102];\nclass Token {\n constructor(state) {\n this.type = state.type;\n this.value = state.value;\n this.start = state.start;\n this.end = state.end;\n this.loc = new SourceLocation(state.startLoc, state.endLoc);\n }\n\n}\nclass Tokenizer extends ParserError {\n constructor(options, input) {\n super();\n this.isLookahead = void 0;\n this.tokens = [];\n this.state = new State();\n this.state.init(options);\n this.input = input;\n this.length = input.length;\n this.isLookahead = false;\n }\n\n pushToken(token) {\n this.tokens.length = this.state.tokensLength;\n this.tokens.push(token);\n ++this.state.tokensLength;\n }\n\n next() {\n this.checkKeywordEscapes();\n\n if (this.options.tokens) {\n this.pushToken(new Token(this.state));\n }\n\n this.state.lastTokStart = this.state.start;\n this.state.lastTokEndLoc = this.state.endLoc;\n this.state.lastTokStartLoc = this.state.startLoc;\n this.nextToken();\n }\n\n eat(type) {\n if (this.match(type)) {\n this.next();\n return true;\n } else {\n return false;\n }\n }\n\n match(type) {\n return this.state.type === type;\n }\n\n createLookaheadState(state) {\n return {\n pos: state.pos,\n value: null,\n type: state.type,\n start: state.start,\n end: state.end,\n context: [this.curContext()],\n inType: state.inType,\n startLoc: state.startLoc,\n lastTokEndLoc: state.lastTokEndLoc,\n curLine: state.curLine,\n lineStart: state.lineStart,\n curPosition: state.curPosition\n };\n }\n\n lookahead() {\n const old = this.state;\n this.state = this.createLookaheadState(old);\n this.isLookahead = true;\n this.nextToken();\n this.isLookahead = false;\n const curr = this.state;\n this.state = old;\n return curr;\n }\n\n nextTokenStart() {\n return this.nextTokenStartSince(this.state.pos);\n }\n\n nextTokenStartSince(pos) {\n skipWhiteSpace.lastIndex = pos;\n return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos;\n }\n\n lookaheadCharCode() {\n return this.input.charCodeAt(this.nextTokenStart());\n }\n\n codePointAtPos(pos) {\n let cp = this.input.charCodeAt(pos);\n\n if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) {\n const trail = this.input.charCodeAt(pos);\n\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n\n return cp;\n }\n\n setStrict(strict) {\n this.state.strict = strict;\n\n if (strict) {\n this.state.strictErrors.forEach(({\n message,\n loc\n }) => this.raise(message, {\n at: loc\n }));\n this.state.strictErrors.clear();\n }\n }\n\n curContext() {\n return this.state.context[this.state.context.length - 1];\n }\n\n nextToken() {\n this.skipSpace();\n this.state.start = this.state.pos;\n if (!this.isLookahead) this.state.startLoc = this.state.curPosition();\n\n if (this.state.pos >= this.length) {\n this.finishToken(135);\n return;\n }\n\n this.getTokenFromCode(this.codePointAtPos(this.state.pos));\n }\n\n skipBlockComment() {\n let startLoc;\n if (!this.isLookahead) startLoc = this.state.curPosition();\n const start = this.state.pos;\n const end = this.input.indexOf(\"*/\", start + 2);\n\n if (end === -1) {\n throw this.raise(ErrorMessages.UnterminatedComment, {\n at: this.state.curPosition()\n });\n }\n\n this.state.pos = end + 2;\n lineBreakG.lastIndex = start + 2;\n\n while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) {\n ++this.state.curLine;\n this.state.lineStart = lineBreakG.lastIndex;\n }\n\n if (this.isLookahead) return;\n const comment = {\n type: \"CommentBlock\",\n value: this.input.slice(start + 2, end),\n start,\n end: end + 2,\n loc: new SourceLocation(startLoc, this.state.curPosition())\n };\n if (this.options.tokens) this.pushToken(comment);\n return comment;\n }\n\n skipLineComment(startSkip) {\n const start = this.state.pos;\n let startLoc;\n if (!this.isLookahead) startLoc = this.state.curPosition();\n let ch = this.input.charCodeAt(this.state.pos += startSkip);\n\n if (this.state.pos < this.length) {\n while (!isNewLine(ch) && ++this.state.pos < this.length) {\n ch = this.input.charCodeAt(this.state.pos);\n }\n }\n\n if (this.isLookahead) return;\n const end = this.state.pos;\n const value = this.input.slice(start + startSkip, end);\n const comment = {\n type: \"CommentLine\",\n value,\n start,\n end,\n loc: new SourceLocation(startLoc, this.state.curPosition())\n };\n if (this.options.tokens) this.pushToken(comment);\n return comment;\n }\n\n skipSpace() {\n const spaceStart = this.state.pos;\n const comments = [];\n\n loop: while (this.state.pos < this.length) {\n const ch = this.input.charCodeAt(this.state.pos);\n\n switch (ch) {\n case 32:\n case 160:\n case 9:\n ++this.state.pos;\n break;\n\n case 13:\n if (this.input.charCodeAt(this.state.pos + 1) === 10) {\n ++this.state.pos;\n }\n\n case 10:\n case 8232:\n case 8233:\n ++this.state.pos;\n ++this.state.curLine;\n this.state.lineStart = this.state.pos;\n break;\n\n case 47:\n switch (this.input.charCodeAt(this.state.pos + 1)) {\n case 42:\n {\n const comment = this.skipBlockComment();\n\n if (comment !== undefined) {\n this.addComment(comment);\n if (this.options.attachComment) comments.push(comment);\n }\n\n break;\n }\n\n case 47:\n {\n const comment = this.skipLineComment(2);\n\n if (comment !== undefined) {\n this.addComment(comment);\n if (this.options.attachComment) comments.push(comment);\n }\n\n break;\n }\n\n default:\n break loop;\n }\n\n break;\n\n default:\n if (isWhitespace(ch)) {\n ++this.state.pos;\n } else if (ch === 45 && !this.inModule) {\n const pos = this.state.pos;\n\n if (this.input.charCodeAt(pos + 1) === 45 && this.input.charCodeAt(pos + 2) === 62 && (spaceStart === 0 || this.state.lineStart > spaceStart)) {\n const comment = this.skipLineComment(3);\n\n if (comment !== undefined) {\n this.addComment(comment);\n if (this.options.attachComment) comments.push(comment);\n }\n } else {\n break loop;\n }\n } else if (ch === 60 && !this.inModule) {\n const pos = this.state.pos;\n\n if (this.input.charCodeAt(pos + 1) === 33 && this.input.charCodeAt(pos + 2) === 45 && this.input.charCodeAt(pos + 3) === 45) {\n const comment = this.skipLineComment(4);\n\n if (comment !== undefined) {\n this.addComment(comment);\n if (this.options.attachComment) comments.push(comment);\n }\n } else {\n break loop;\n }\n } else {\n break loop;\n }\n\n }\n }\n\n if (comments.length > 0) {\n const end = this.state.pos;\n const CommentWhitespace = {\n start: spaceStart,\n end,\n comments,\n leadingNode: null,\n trailingNode: null,\n containingNode: null\n };\n this.state.commentStack.push(CommentWhitespace);\n }\n }\n\n finishToken(type, val) {\n this.state.end = this.state.pos;\n this.state.endLoc = this.state.curPosition();\n const prevType = this.state.type;\n this.state.type = type;\n this.state.value = val;\n\n if (!this.isLookahead) {\n this.updateContext(prevType);\n }\n }\n\n replaceToken(type) {\n this.state.type = type;\n this.updateContext();\n }\n\n readToken_numberSign() {\n if (this.state.pos === 0 && this.readToken_interpreter()) {\n return;\n }\n\n const nextPos = this.state.pos + 1;\n const next = this.codePointAtPos(nextPos);\n\n if (next >= 48 && next <= 57) {\n throw this.raise(ErrorMessages.UnexpectedDigitAfterHash, {\n at: this.state.curPosition()\n });\n }\n\n if (next === 123 || next === 91 && this.hasPlugin(\"recordAndTuple\")) {\n this.expectPlugin(\"recordAndTuple\");\n\n if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"hash\") {\n throw this.raise(next === 123 ? ErrorMessages.RecordExpressionHashIncorrectStartSyntaxType : ErrorMessages.TupleExpressionHashIncorrectStartSyntaxType, {\n at: this.state.curPosition()\n });\n }\n\n this.state.pos += 2;\n\n if (next === 123) {\n this.finishToken(7);\n } else {\n this.finishToken(1);\n }\n } else if (isIdentifierStart(next)) {\n ++this.state.pos;\n this.finishToken(134, this.readWord1(next));\n } else if (next === 92) {\n ++this.state.pos;\n this.finishToken(134, this.readWord1());\n } else {\n this.finishOp(27, 1);\n }\n }\n\n readToken_dot() {\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (next >= 48 && next <= 57) {\n this.readNumber(true);\n return;\n }\n\n if (next === 46 && this.input.charCodeAt(this.state.pos + 2) === 46) {\n this.state.pos += 3;\n this.finishToken(21);\n } else {\n ++this.state.pos;\n this.finishToken(16);\n }\n }\n\n readToken_slash() {\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (next === 61) {\n this.finishOp(31, 2);\n } else {\n this.finishOp(56, 1);\n }\n }\n\n readToken_interpreter() {\n if (this.state.pos !== 0 || this.length < 2) return false;\n let ch = this.input.charCodeAt(this.state.pos + 1);\n if (ch !== 33) return false;\n const start = this.state.pos;\n this.state.pos += 1;\n\n while (!isNewLine(ch) && ++this.state.pos < this.length) {\n ch = this.input.charCodeAt(this.state.pos);\n }\n\n const value = this.input.slice(start + 2, this.state.pos);\n this.finishToken(28, value);\n return true;\n }\n\n readToken_mult_modulo(code) {\n let type = code === 42 ? 55 : 54;\n let width = 1;\n let next = this.input.charCodeAt(this.state.pos + 1);\n\n if (code === 42 && next === 42) {\n width++;\n next = this.input.charCodeAt(this.state.pos + 2);\n type = 57;\n }\n\n if (next === 61 && !this.state.inType) {\n width++;\n type = code === 37 ? 33 : 30;\n }\n\n this.finishOp(type, width);\n }\n\n readToken_pipe_amp(code) {\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (next === code) {\n if (this.input.charCodeAt(this.state.pos + 2) === 61) {\n this.finishOp(30, 3);\n } else {\n this.finishOp(code === 124 ? 41 : 42, 2);\n }\n\n return;\n }\n\n if (code === 124) {\n if (next === 62) {\n this.finishOp(39, 2);\n return;\n }\n\n if (this.hasPlugin(\"recordAndTuple\") && next === 125) {\n if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n throw this.raise(ErrorMessages.RecordExpressionBarIncorrectEndSyntaxType, {\n at: this.state.curPosition()\n });\n }\n\n this.state.pos += 2;\n this.finishToken(9);\n return;\n }\n\n if (this.hasPlugin(\"recordAndTuple\") && next === 93) {\n if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n throw this.raise(ErrorMessages.TupleExpressionBarIncorrectEndSyntaxType, {\n at: this.state.curPosition()\n });\n }\n\n this.state.pos += 2;\n this.finishToken(4);\n return;\n }\n }\n\n if (next === 61) {\n this.finishOp(30, 2);\n return;\n }\n\n this.finishOp(code === 124 ? 43 : 45, 1);\n }\n\n readToken_caret() {\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (next === 61 && !this.state.inType) {\n this.finishOp(32, 2);\n } else if (next === 94 && this.hasPlugin([\"pipelineOperator\", {\n proposal: \"hack\",\n topicToken: \"^^\"\n }])) {\n this.finishOp(37, 2);\n const lookaheadCh = this.input.codePointAt(this.state.pos);\n\n if (lookaheadCh === 94) {\n throw this.unexpected();\n }\n } else {\n this.finishOp(44, 1);\n }\n }\n\n readToken_atSign() {\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (next === 64 && this.hasPlugin([\"pipelineOperator\", {\n proposal: \"hack\",\n topicToken: \"@@\"\n }])) {\n this.finishOp(38, 2);\n } else {\n this.finishOp(26, 1);\n }\n }\n\n readToken_plus_min(code) {\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (next === code) {\n this.finishOp(34, 2);\n return;\n }\n\n if (next === 61) {\n this.finishOp(30, 2);\n } else {\n this.finishOp(53, 1);\n }\n }\n\n readToken_lt() {\n const {\n pos\n } = this.state;\n const next = this.input.charCodeAt(pos + 1);\n\n if (next === 60) {\n if (this.input.charCodeAt(pos + 2) === 61) {\n this.finishOp(30, 3);\n return;\n }\n\n this.finishOp(51, 2);\n return;\n }\n\n if (next === 61) {\n this.finishOp(49, 2);\n return;\n }\n\n this.finishOp(47, 1);\n }\n\n readToken_gt() {\n const {\n pos\n } = this.state;\n const next = this.input.charCodeAt(pos + 1);\n\n if (next === 62) {\n const size = this.input.charCodeAt(pos + 2) === 62 ? 3 : 2;\n\n if (this.input.charCodeAt(pos + size) === 61) {\n this.finishOp(30, size + 1);\n return;\n }\n\n this.finishOp(52, size);\n return;\n }\n\n if (next === 61) {\n this.finishOp(49, 2);\n return;\n }\n\n this.finishOp(48, 1);\n }\n\n readToken_eq_excl(code) {\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (next === 61) {\n this.finishOp(46, this.input.charCodeAt(this.state.pos + 2) === 61 ? 3 : 2);\n return;\n }\n\n if (code === 61 && next === 62) {\n this.state.pos += 2;\n this.finishToken(19);\n return;\n }\n\n this.finishOp(code === 61 ? 29 : 35, 1);\n }\n\n readToken_question() {\n const next = this.input.charCodeAt(this.state.pos + 1);\n const next2 = this.input.charCodeAt(this.state.pos + 2);\n\n if (next === 63) {\n if (next2 === 61) {\n this.finishOp(30, 3);\n } else {\n this.finishOp(40, 2);\n }\n } else if (next === 46 && !(next2 >= 48 && next2 <= 57)) {\n this.state.pos += 2;\n this.finishToken(18);\n } else {\n ++this.state.pos;\n this.finishToken(17);\n }\n }\n\n getTokenFromCode(code) {\n switch (code) {\n case 46:\n this.readToken_dot();\n return;\n\n case 40:\n ++this.state.pos;\n this.finishToken(10);\n return;\n\n case 41:\n ++this.state.pos;\n this.finishToken(11);\n return;\n\n case 59:\n ++this.state.pos;\n this.finishToken(13);\n return;\n\n case 44:\n ++this.state.pos;\n this.finishToken(12);\n return;\n\n case 91:\n if (this.hasPlugin(\"recordAndTuple\") && this.input.charCodeAt(this.state.pos + 1) === 124) {\n if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n throw this.raise(ErrorMessages.TupleExpressionBarIncorrectStartSyntaxType, {\n at: this.state.curPosition()\n });\n }\n\n this.state.pos += 2;\n this.finishToken(2);\n } else {\n ++this.state.pos;\n this.finishToken(0);\n }\n\n return;\n\n case 93:\n ++this.state.pos;\n this.finishToken(3);\n return;\n\n case 123:\n if (this.hasPlugin(\"recordAndTuple\") && this.input.charCodeAt(this.state.pos + 1) === 124) {\n if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n throw this.raise(ErrorMessages.RecordExpressionBarIncorrectStartSyntaxType, {\n at: this.state.curPosition()\n });\n }\n\n this.state.pos += 2;\n this.finishToken(6);\n } else {\n ++this.state.pos;\n this.finishToken(5);\n }\n\n return;\n\n case 125:\n ++this.state.pos;\n this.finishToken(8);\n return;\n\n case 58:\n if (this.hasPlugin(\"functionBind\") && this.input.charCodeAt(this.state.pos + 1) === 58) {\n this.finishOp(15, 2);\n } else {\n ++this.state.pos;\n this.finishToken(14);\n }\n\n return;\n\n case 63:\n this.readToken_question();\n return;\n\n case 96:\n this.readTemplateToken();\n return;\n\n case 48:\n {\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (next === 120 || next === 88) {\n this.readRadixNumber(16);\n return;\n }\n\n if (next === 111 || next === 79) {\n this.readRadixNumber(8);\n return;\n }\n\n if (next === 98 || next === 66) {\n this.readRadixNumber(2);\n return;\n }\n }\n\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n this.readNumber(false);\n return;\n\n case 34:\n case 39:\n this.readString(code);\n return;\n\n case 47:\n this.readToken_slash();\n return;\n\n case 37:\n case 42:\n this.readToken_mult_modulo(code);\n return;\n\n case 124:\n case 38:\n this.readToken_pipe_amp(code);\n return;\n\n case 94:\n this.readToken_caret();\n return;\n\n case 43:\n case 45:\n this.readToken_plus_min(code);\n return;\n\n case 60:\n this.readToken_lt();\n return;\n\n case 62:\n this.readToken_gt();\n return;\n\n case 61:\n case 33:\n this.readToken_eq_excl(code);\n return;\n\n case 126:\n this.finishOp(36, 1);\n return;\n\n case 64:\n this.readToken_atSign();\n return;\n\n case 35:\n this.readToken_numberSign();\n return;\n\n case 92:\n this.readWord();\n return;\n\n default:\n if (isIdentifierStart(code)) {\n this.readWord(code);\n return;\n }\n\n }\n\n throw this.raise(ErrorMessages.InvalidOrUnexpectedToken, {\n at: this.state.curPosition()\n }, String.fromCodePoint(code));\n }\n\n finishOp(type, size) {\n const str = this.input.slice(this.state.pos, this.state.pos + size);\n this.state.pos += size;\n this.finishToken(type, str);\n }\n\n readRegexp() {\n const startLoc = this.state.startLoc;\n const start = this.state.start + 1;\n let escaped, inClass;\n let {\n pos\n } = this.state;\n\n for (;; ++pos) {\n if (pos >= this.length) {\n throw this.raise(ErrorMessages.UnterminatedRegExp, {\n at: createPositionWithColumnOffset(startLoc, 1)\n });\n }\n\n const ch = this.input.charCodeAt(pos);\n\n if (isNewLine(ch)) {\n throw this.raise(ErrorMessages.UnterminatedRegExp, {\n at: createPositionWithColumnOffset(startLoc, 1)\n });\n }\n\n if (escaped) {\n escaped = false;\n } else {\n if (ch === 91) {\n inClass = true;\n } else if (ch === 93 && inClass) {\n inClass = false;\n } else if (ch === 47 && !inClass) {\n break;\n }\n\n escaped = ch === 92;\n }\n }\n\n const content = this.input.slice(start, pos);\n ++pos;\n let mods = \"\";\n\n const nextPos = () => createPositionWithColumnOffset(startLoc, pos + 2 - start);\n\n while (pos < this.length) {\n const cp = this.codePointAtPos(pos);\n const char = String.fromCharCode(cp);\n\n if (VALID_REGEX_FLAGS.has(cp)) {\n if (cp === 118) {\n this.expectPlugin(\"regexpUnicodeSets\", nextPos());\n\n if (mods.includes(\"u\")) {\n this.raise(ErrorMessages.IncompatibleRegExpUVFlags, {\n at: nextPos()\n });\n }\n } else if (cp === 117) {\n if (mods.includes(\"v\")) {\n this.raise(ErrorMessages.IncompatibleRegExpUVFlags, {\n at: nextPos()\n });\n }\n }\n\n if (mods.includes(char)) {\n this.raise(ErrorMessages.DuplicateRegExpFlags, {\n at: nextPos()\n });\n }\n } else if (isIdentifierChar(cp) || cp === 92) {\n this.raise(ErrorMessages.MalformedRegExpFlags, {\n at: nextPos()\n });\n } else {\n break;\n }\n\n ++pos;\n mods += char;\n }\n\n this.state.pos = pos;\n this.finishToken(133, {\n pattern: content,\n flags: mods\n });\n }\n\n readInt(radix, len, forceLen, allowNumSeparator = true) {\n const start = this.state.pos;\n const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct;\n const allowedSiblings = radix === 16 ? allowedNumericSeparatorSiblings.hex : radix === 10 ? allowedNumericSeparatorSiblings.dec : radix === 8 ? allowedNumericSeparatorSiblings.oct : allowedNumericSeparatorSiblings.bin;\n let invalid = false;\n let total = 0;\n\n for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n const code = this.input.charCodeAt(this.state.pos);\n let val;\n\n if (code === 95) {\n const prev = this.input.charCodeAt(this.state.pos - 1);\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (allowedSiblings.indexOf(next) === -1) {\n this.raise(ErrorMessages.UnexpectedNumericSeparator, {\n at: this.state.curPosition()\n });\n } else if (forbiddenSiblings.indexOf(prev) > -1 || forbiddenSiblings.indexOf(next) > -1 || Number.isNaN(next)) {\n this.raise(ErrorMessages.UnexpectedNumericSeparator, {\n at: this.state.curPosition()\n });\n }\n\n if (!allowNumSeparator) {\n this.raise(ErrorMessages.NumericSeparatorInEscapeSequence, {\n at: this.state.curPosition()\n });\n }\n\n ++this.state.pos;\n continue;\n }\n\n if (code >= 97) {\n val = code - 97 + 10;\n } else if (code >= 65) {\n val = code - 65 + 10;\n } else if (_isDigit(code)) {\n val = code - 48;\n } else {\n val = Infinity;\n }\n\n if (val >= radix) {\n if (this.options.errorRecovery && val <= 9) {\n val = 0;\n this.raise(ErrorMessages.InvalidDigit, {\n at: this.state.curPosition()\n }, radix);\n } else if (forceLen) {\n val = 0;\n invalid = true;\n } else {\n break;\n }\n }\n\n ++this.state.pos;\n total = total * radix + val;\n }\n\n if (this.state.pos === start || len != null && this.state.pos - start !== len || invalid) {\n return null;\n }\n\n return total;\n }\n\n readRadixNumber(radix) {\n const startLoc = this.state.curPosition();\n let isBigInt = false;\n this.state.pos += 2;\n const val = this.readInt(radix);\n\n if (val == null) {\n this.raise(ErrorMessages.InvalidDigit, {\n at: createPositionWithColumnOffset(startLoc, 2)\n }, radix);\n }\n\n const next = this.input.charCodeAt(this.state.pos);\n\n if (next === 110) {\n ++this.state.pos;\n isBigInt = true;\n } else if (next === 109) {\n throw this.raise(ErrorMessages.InvalidDecimal, {\n at: startLoc\n });\n }\n\n if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {\n throw this.raise(ErrorMessages.NumberIdentifier, {\n at: this.state.curPosition()\n });\n }\n\n if (isBigInt) {\n const str = this.input.slice(startLoc.index, this.state.pos).replace(/[_n]/g, \"\");\n this.finishToken(131, str);\n return;\n }\n\n this.finishToken(130, val);\n }\n\n readNumber(startsWithDot) {\n const start = this.state.pos;\n const startLoc = this.state.curPosition();\n let isFloat = false;\n let isBigInt = false;\n let isDecimal = false;\n let hasExponent = false;\n let isOctal = false;\n\n if (!startsWithDot && this.readInt(10) === null) {\n this.raise(ErrorMessages.InvalidNumber, {\n at: this.state.curPosition()\n });\n }\n\n const hasLeadingZero = this.state.pos - start >= 2 && this.input.charCodeAt(start) === 48;\n\n if (hasLeadingZero) {\n const integer = this.input.slice(start, this.state.pos);\n this.recordStrictModeErrors(ErrorMessages.StrictOctalLiteral, startLoc);\n\n if (!this.state.strict) {\n const underscorePos = integer.indexOf(\"_\");\n\n if (underscorePos > 0) {\n this.raise(ErrorMessages.ZeroDigitNumericSeparator, {\n at: createPositionWithColumnOffset(startLoc, underscorePos)\n });\n }\n }\n\n isOctal = hasLeadingZero && !/[89]/.test(integer);\n }\n\n let next = this.input.charCodeAt(this.state.pos);\n\n if (next === 46 && !isOctal) {\n ++this.state.pos;\n this.readInt(10);\n isFloat = true;\n next = this.input.charCodeAt(this.state.pos);\n }\n\n if ((next === 69 || next === 101) && !isOctal) {\n next = this.input.charCodeAt(++this.state.pos);\n\n if (next === 43 || next === 45) {\n ++this.state.pos;\n }\n\n if (this.readInt(10) === null) {\n this.raise(ErrorMessages.InvalidOrMissingExponent, {\n at: startLoc\n });\n }\n\n isFloat = true;\n hasExponent = true;\n next = this.input.charCodeAt(this.state.pos);\n }\n\n if (next === 110) {\n if (isFloat || hasLeadingZero) {\n this.raise(ErrorMessages.InvalidBigIntLiteral, {\n at: startLoc\n });\n }\n\n ++this.state.pos;\n isBigInt = true;\n }\n\n if (next === 109) {\n this.expectPlugin(\"decimal\", this.state.curPosition());\n\n if (hasExponent || hasLeadingZero) {\n this.raise(ErrorMessages.InvalidDecimal, {\n at: startLoc\n });\n }\n\n ++this.state.pos;\n isDecimal = true;\n }\n\n if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {\n throw this.raise(ErrorMessages.NumberIdentifier, {\n at: this.state.curPosition()\n });\n }\n\n const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, \"\");\n\n if (isBigInt) {\n this.finishToken(131, str);\n return;\n }\n\n if (isDecimal) {\n this.finishToken(132, str);\n return;\n }\n\n const val = isOctal ? parseInt(str, 8) : parseFloat(str);\n this.finishToken(130, val);\n }\n\n readCodePoint(throwOnInvalid) {\n const ch = this.input.charCodeAt(this.state.pos);\n let code;\n\n if (ch === 123) {\n ++this.state.pos;\n code = this.readHexChar(this.input.indexOf(\"}\", this.state.pos) - this.state.pos, true, throwOnInvalid);\n ++this.state.pos;\n\n if (code !== null && code > 0x10ffff) {\n if (throwOnInvalid) {\n this.raise(ErrorMessages.InvalidCodePoint, {\n at: this.state.curPosition()\n });\n } else {\n return null;\n }\n }\n } else {\n code = this.readHexChar(4, false, throwOnInvalid);\n }\n\n return code;\n }\n\n readString(quote) {\n let out = \"\",\n chunkStart = ++this.state.pos;\n\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(ErrorMessages.UnterminatedString, {\n at: this.state.startLoc\n });\n }\n\n const ch = this.input.charCodeAt(this.state.pos);\n if (ch === quote) break;\n\n if (ch === 92) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.readEscapedChar(false);\n chunkStart = this.state.pos;\n } else if (ch === 8232 || ch === 8233) {\n ++this.state.pos;\n ++this.state.curLine;\n this.state.lineStart = this.state.pos;\n } else if (isNewLine(ch)) {\n throw this.raise(ErrorMessages.UnterminatedString, {\n at: this.state.startLoc\n });\n } else {\n ++this.state.pos;\n }\n }\n\n out += this.input.slice(chunkStart, this.state.pos++);\n this.finishToken(129, out);\n }\n\n readTemplateContinuation() {\n if (!this.match(8)) {\n this.unexpected(null, 8);\n }\n\n this.state.pos--;\n this.readTemplateToken();\n }\n\n readTemplateToken() {\n let out = \"\",\n chunkStart = this.state.pos,\n containsInvalid = false;\n ++this.state.pos;\n\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(ErrorMessages.UnterminatedTemplate, {\n at: createPositionWithColumnOffset(this.state.startLoc, 1)\n });\n }\n\n const ch = this.input.charCodeAt(this.state.pos);\n\n if (ch === 96) {\n ++this.state.pos;\n out += this.input.slice(chunkStart, this.state.pos);\n this.finishToken(24, containsInvalid ? null : out);\n return;\n }\n\n if (ch === 36 && this.input.charCodeAt(this.state.pos + 1) === 123) {\n this.state.pos += 2;\n out += this.input.slice(chunkStart, this.state.pos);\n this.finishToken(25, containsInvalid ? null : out);\n return;\n }\n\n if (ch === 92) {\n out += this.input.slice(chunkStart, this.state.pos);\n const escaped = this.readEscapedChar(true);\n\n if (escaped === null) {\n containsInvalid = true;\n } else {\n out += escaped;\n }\n\n chunkStart = this.state.pos;\n } else if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.state.pos);\n ++this.state.pos;\n\n switch (ch) {\n case 13:\n if (this.input.charCodeAt(this.state.pos) === 10) {\n ++this.state.pos;\n }\n\n case 10:\n out += \"\\n\";\n break;\n\n default:\n out += String.fromCharCode(ch);\n break;\n }\n\n ++this.state.curLine;\n this.state.lineStart = this.state.pos;\n chunkStart = this.state.pos;\n } else {\n ++this.state.pos;\n }\n }\n }\n\n recordStrictModeErrors(message, loc) {\n if (this.state.strict && !this.state.strictErrors.has(loc.index)) {\n this.raise(message, {\n at: loc\n });\n } else {\n this.state.strictErrors.set(loc.index, {\n loc,\n message\n });\n }\n }\n\n readEscapedChar(inTemplate) {\n const throwOnInvalid = !inTemplate;\n const ch = this.input.charCodeAt(++this.state.pos);\n ++this.state.pos;\n\n switch (ch) {\n case 110:\n return \"\\n\";\n\n case 114:\n return \"\\r\";\n\n case 120:\n {\n const code = this.readHexChar(2, false, throwOnInvalid);\n return code === null ? null : String.fromCharCode(code);\n }\n\n case 117:\n {\n const code = this.readCodePoint(throwOnInvalid);\n return code === null ? null : String.fromCodePoint(code);\n }\n\n case 116:\n return \"\\t\";\n\n case 98:\n return \"\\b\";\n\n case 118:\n return \"\\u000b\";\n\n case 102:\n return \"\\f\";\n\n case 13:\n if (this.input.charCodeAt(this.state.pos) === 10) {\n ++this.state.pos;\n }\n\n case 10:\n this.state.lineStart = this.state.pos;\n ++this.state.curLine;\n\n case 8232:\n case 8233:\n return \"\";\n\n case 56:\n case 57:\n if (inTemplate) {\n return null;\n } else {\n this.recordStrictModeErrors(ErrorMessages.StrictNumericEscape, createPositionWithColumnOffset(this.state.curPosition(), -1));\n }\n\n default:\n if (ch >= 48 && ch <= 55) {\n const codePos = createPositionWithColumnOffset(this.state.curPosition(), -1);\n const match = this.input.substr(this.state.pos - 1, 3).match(/^[0-7]+/);\n let octalStr = match[0];\n let octal = parseInt(octalStr, 8);\n\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n\n this.state.pos += octalStr.length - 1;\n const next = this.input.charCodeAt(this.state.pos);\n\n if (octalStr !== \"0\" || next === 56 || next === 57) {\n if (inTemplate) {\n return null;\n } else {\n this.recordStrictModeErrors(ErrorMessages.StrictNumericEscape, codePos);\n }\n }\n\n return String.fromCharCode(octal);\n }\n\n return String.fromCharCode(ch);\n }\n }\n\n readHexChar(len, forceLen, throwOnInvalid) {\n const codeLoc = this.state.curPosition();\n const n = this.readInt(16, len, forceLen, false);\n\n if (n === null) {\n if (throwOnInvalid) {\n this.raise(ErrorMessages.InvalidEscapeSequence, {\n at: codeLoc\n });\n } else {\n this.state.pos = codeLoc.index - 1;\n }\n }\n\n return n;\n }\n\n readWord1(firstCode) {\n this.state.containsEsc = false;\n let word = \"\";\n const start = this.state.pos;\n let chunkStart = this.state.pos;\n\n if (firstCode !== undefined) {\n this.state.pos += firstCode <= 0xffff ? 1 : 2;\n }\n\n while (this.state.pos < this.length) {\n const ch = this.codePointAtPos(this.state.pos);\n\n if (isIdentifierChar(ch)) {\n this.state.pos += ch <= 0xffff ? 1 : 2;\n } else if (ch === 92) {\n this.state.containsEsc = true;\n word += this.input.slice(chunkStart, this.state.pos);\n const escStart = this.state.curPosition();\n const identifierCheck = this.state.pos === start ? isIdentifierStart : isIdentifierChar;\n\n if (this.input.charCodeAt(++this.state.pos) !== 117) {\n this.raise(ErrorMessages.MissingUnicodeEscape, {\n at: this.state.curPosition()\n });\n chunkStart = this.state.pos - 1;\n continue;\n }\n\n ++this.state.pos;\n const esc = this.readCodePoint(true);\n\n if (esc !== null) {\n if (!identifierCheck(esc)) {\n this.raise(ErrorMessages.EscapedCharNotAnIdentifier, {\n at: escStart\n });\n }\n\n word += String.fromCodePoint(esc);\n }\n\n chunkStart = this.state.pos;\n } else {\n break;\n }\n }\n\n return word + this.input.slice(chunkStart, this.state.pos);\n }\n\n readWord(firstCode) {\n const word = this.readWord1(firstCode);\n const type = keywords$1.get(word);\n\n if (type !== undefined) {\n this.finishToken(type, tokenLabelName(type));\n } else {\n this.finishToken(128, word);\n }\n }\n\n checkKeywordEscapes() {\n const {\n type\n } = this.state;\n\n if (tokenIsKeyword(type) && this.state.containsEsc) {\n this.raise(ErrorMessages.InvalidEscapedReservedWord, {\n at: this.state.startLoc\n }, tokenLabelName(type));\n }\n }\n\n updateContext(prevType) {}\n\n}\n\nclass ClassScope {\n constructor() {\n this.privateNames = new Set();\n this.loneAccessors = new Map();\n this.undefinedPrivateNames = new Map();\n }\n\n}\nclass ClassScopeHandler {\n constructor(raise) {\n this.stack = [];\n this.undefinedPrivateNames = new Map();\n this.raise = raise;\n }\n\n current() {\n return this.stack[this.stack.length - 1];\n }\n\n enter() {\n this.stack.push(new ClassScope());\n }\n\n exit() {\n const oldClassScope = this.stack.pop();\n const current = this.current();\n\n for (const [name, loc] of Array.from(oldClassScope.undefinedPrivateNames)) {\n if (current) {\n if (!current.undefinedPrivateNames.has(name)) {\n current.undefinedPrivateNames.set(name, loc);\n }\n } else {\n this.raise(ErrorMessages.InvalidPrivateFieldResolution, {\n at: loc\n }, name);\n }\n }\n }\n\n declarePrivateName(name, elementType, loc) {\n const {\n privateNames,\n loneAccessors,\n undefinedPrivateNames\n } = this.current();\n let redefined = privateNames.has(name);\n\n if (elementType & CLASS_ELEMENT_KIND_ACCESSOR) {\n const accessor = redefined && loneAccessors.get(name);\n\n if (accessor) {\n const oldStatic = accessor & CLASS_ELEMENT_FLAG_STATIC;\n const newStatic = elementType & CLASS_ELEMENT_FLAG_STATIC;\n const oldKind = accessor & CLASS_ELEMENT_KIND_ACCESSOR;\n const newKind = elementType & CLASS_ELEMENT_KIND_ACCESSOR;\n redefined = oldKind === newKind || oldStatic !== newStatic;\n if (!redefined) loneAccessors.delete(name);\n } else if (!redefined) {\n loneAccessors.set(name, elementType);\n }\n }\n\n if (redefined) {\n this.raise(ErrorMessages.PrivateNameRedeclaration, {\n at: loc\n }, name);\n }\n\n privateNames.add(name);\n undefinedPrivateNames.delete(name);\n }\n\n usePrivateName(name, loc) {\n let classScope;\n\n for (classScope of this.stack) {\n if (classScope.privateNames.has(name)) return;\n }\n\n if (classScope) {\n classScope.undefinedPrivateNames.set(name, loc);\n } else {\n this.raise(ErrorMessages.InvalidPrivateFieldResolution, {\n at: loc\n }, name);\n }\n }\n\n}\n\nconst kExpression = 0,\n kMaybeArrowParameterDeclaration = 1,\n kMaybeAsyncArrowParameterDeclaration = 2,\n kParameterDeclaration = 3;\n\nclass ExpressionScope {\n constructor(type = kExpression) {\n this.type = void 0;\n this.type = type;\n }\n\n canBeArrowParameterDeclaration() {\n return this.type === kMaybeAsyncArrowParameterDeclaration || this.type === kMaybeArrowParameterDeclaration;\n }\n\n isCertainlyParameterDeclaration() {\n return this.type === kParameterDeclaration;\n }\n\n}\n\nclass ArrowHeadParsingScope extends ExpressionScope {\n constructor(type) {\n super(type);\n this.errors = new Map();\n }\n\n recordDeclarationError(message, loc) {\n this.errors.set(loc.index, {\n message,\n loc\n });\n }\n\n clearDeclarationError(loc) {\n this.errors.delete(loc.index);\n }\n\n iterateErrors(iterator) {\n this.errors.forEach(iterator);\n }\n\n}\n\nclass ExpressionScopeHandler {\n constructor(raise) {\n this.stack = [new ExpressionScope()];\n this.raise = raise;\n }\n\n enter(scope) {\n this.stack.push(scope);\n }\n\n exit() {\n this.stack.pop();\n }\n\n recordParameterInitializerError(loc, template) {\n const {\n stack\n } = this;\n let i = stack.length - 1;\n let scope = stack[i];\n\n while (!scope.isCertainlyParameterDeclaration()) {\n if (scope.canBeArrowParameterDeclaration()) {\n scope.recordDeclarationError(template, loc);\n } else {\n return;\n }\n\n scope = stack[--i];\n }\n\n this.raise(template, {\n at: loc\n });\n }\n\n recordParenthesizedIdentifierError(template, loc) {\n const {\n stack\n } = this;\n const scope = stack[stack.length - 1];\n\n if (scope.isCertainlyParameterDeclaration()) {\n this.raise(template, {\n at: loc\n });\n } else if (scope.canBeArrowParameterDeclaration()) {\n scope.recordDeclarationError(template, loc);\n } else {\n return;\n }\n }\n\n recordAsyncArrowParametersError(template, loc) {\n const {\n stack\n } = this;\n let i = stack.length - 1;\n let scope = stack[i];\n\n while (scope.canBeArrowParameterDeclaration()) {\n if (scope.type === kMaybeAsyncArrowParameterDeclaration) {\n scope.recordDeclarationError(template, loc);\n }\n\n scope = stack[--i];\n }\n }\n\n validateAsPattern() {\n const {\n stack\n } = this;\n const currentScope = stack[stack.length - 1];\n if (!currentScope.canBeArrowParameterDeclaration()) return;\n currentScope.iterateErrors(({\n message,\n loc\n }) => {\n this.raise(message, {\n at: loc\n });\n let i = stack.length - 2;\n let scope = stack[i];\n\n while (scope.canBeArrowParameterDeclaration()) {\n scope.clearDeclarationError(loc);\n scope = stack[--i];\n }\n });\n }\n\n}\nfunction newParameterDeclarationScope() {\n return new ExpressionScope(kParameterDeclaration);\n}\nfunction newArrowHeadScope() {\n return new ArrowHeadParsingScope(kMaybeArrowParameterDeclaration);\n}\nfunction newAsyncArrowScope() {\n return new ArrowHeadParsingScope(kMaybeAsyncArrowParameterDeclaration);\n}\nfunction newExpressionScope() {\n return new ExpressionScope();\n}\n\nconst PARAM = 0b0000,\n PARAM_YIELD = 0b0001,\n PARAM_AWAIT = 0b0010,\n PARAM_RETURN = 0b0100,\n PARAM_IN = 0b1000;\nclass ProductionParameterHandler {\n constructor() {\n this.stacks = [];\n }\n\n enter(flags) {\n this.stacks.push(flags);\n }\n\n exit() {\n this.stacks.pop();\n }\n\n currentFlags() {\n return this.stacks[this.stacks.length - 1];\n }\n\n get hasAwait() {\n return (this.currentFlags() & PARAM_AWAIT) > 0;\n }\n\n get hasYield() {\n return (this.currentFlags() & PARAM_YIELD) > 0;\n }\n\n get hasReturn() {\n return (this.currentFlags() & PARAM_RETURN) > 0;\n }\n\n get hasIn() {\n return (this.currentFlags() & PARAM_IN) > 0;\n }\n\n}\nfunction functionFlags(isAsync, isGenerator) {\n return (isAsync ? PARAM_AWAIT : 0) | (isGenerator ? PARAM_YIELD : 0);\n}\n\nclass UtilParser extends Tokenizer {\n addExtra(node, key, value, enumerable = true) {\n if (!node) return;\n const extra = node.extra = node.extra || {};\n\n if (enumerable) {\n extra[key] = value;\n } else {\n Object.defineProperty(extra, key, {\n enumerable,\n value\n });\n }\n }\n\n isContextual(token) {\n return this.state.type === token && !this.state.containsEsc;\n }\n\n isUnparsedContextual(nameStart, name) {\n const nameEnd = nameStart + name.length;\n\n if (this.input.slice(nameStart, nameEnd) === name) {\n const nextCh = this.input.charCodeAt(nameEnd);\n return !(isIdentifierChar(nextCh) || (nextCh & 0xfc00) === 0xd800);\n }\n\n return false;\n }\n\n isLookaheadContextual(name) {\n const next = this.nextTokenStart();\n return this.isUnparsedContextual(next, name);\n }\n\n eatContextual(token) {\n if (this.isContextual(token)) {\n this.next();\n return true;\n }\n\n return false;\n }\n\n expectContextual(token, template) {\n if (!this.eatContextual(token)) {\n if (template != null) {\n throw this.raise(template, {\n at: this.state.startLoc\n });\n }\n\n throw this.unexpected(null, token);\n }\n }\n\n canInsertSemicolon() {\n return this.match(135) || this.match(8) || this.hasPrecedingLineBreak();\n }\n\n hasPrecedingLineBreak() {\n return lineBreak.test(this.input.slice(this.state.lastTokEndLoc.index, this.state.start));\n }\n\n hasFollowingLineBreak() {\n skipWhiteSpaceToLineBreak.lastIndex = this.state.end;\n return skipWhiteSpaceToLineBreak.test(this.input);\n }\n\n isLineTerminator() {\n return this.eat(13) || this.canInsertSemicolon();\n }\n\n semicolon(allowAsi = true) {\n if (allowAsi ? this.isLineTerminator() : this.eat(13)) return;\n this.raise(ErrorMessages.MissingSemicolon, {\n at: this.state.lastTokEndLoc\n });\n }\n\n expect(type, loc) {\n this.eat(type) || this.unexpected(loc, type);\n }\n\n assertNoSpace(message = \"Unexpected space.\") {\n if (this.state.start > this.state.lastTokEndLoc.index) {\n this.raise({\n code: ErrorCodes.SyntaxError,\n reasonCode: \"UnexpectedSpace\",\n template: message\n }, {\n at: this.state.lastTokEndLoc\n });\n }\n }\n\n unexpected(loc, type) {\n throw this.raise({\n code: ErrorCodes.SyntaxError,\n reasonCode: \"UnexpectedToken\",\n template: type != null ? `Unexpected token, expected \"${tokenLabelName(type)}\"` : \"Unexpected token\"\n }, {\n at: loc != null ? loc : this.state.startLoc\n });\n }\n\n getPluginNamesFromConfigs(pluginConfigs) {\n return pluginConfigs.map(c => {\n if (typeof c === \"string\") {\n return c;\n } else {\n return c[0];\n }\n });\n }\n\n expectPlugin(pluginConfig, loc) {\n if (!this.hasPlugin(pluginConfig)) {\n throw this.raiseWithData(loc != null ? loc : this.state.startLoc, {\n missingPlugin: this.getPluginNamesFromConfigs([pluginConfig])\n }, `This experimental syntax requires enabling the parser plugin: ${JSON.stringify(pluginConfig)}.`);\n }\n\n return true;\n }\n\n expectOnePlugin(pluginConfigs) {\n if (!pluginConfigs.some(c => this.hasPlugin(c))) {\n throw this.raiseWithData(this.state.startLoc, {\n missingPlugin: this.getPluginNamesFromConfigs(pluginConfigs)\n }, `This experimental syntax requires enabling one of the following parser plugin(s): ${pluginConfigs.map(c => JSON.stringify(c)).join(\", \")}.`);\n }\n }\n\n tryParse(fn, oldState = this.state.clone()) {\n const abortSignal = {\n node: null\n };\n\n try {\n const node = fn((node = null) => {\n abortSignal.node = node;\n throw abortSignal;\n });\n\n if (this.state.errors.length > oldState.errors.length) {\n const failState = this.state;\n this.state = oldState;\n this.state.tokensLength = failState.tokensLength;\n return {\n node,\n error: failState.errors[oldState.errors.length],\n thrown: false,\n aborted: false,\n failState\n };\n }\n\n return {\n node,\n error: null,\n thrown: false,\n aborted: false,\n failState: null\n };\n } catch (error) {\n const failState = this.state;\n this.state = oldState;\n\n if (error instanceof SyntaxError) {\n return {\n node: null,\n error,\n thrown: true,\n aborted: false,\n failState\n };\n }\n\n if (error === abortSignal) {\n return {\n node: abortSignal.node,\n error: null,\n thrown: false,\n aborted: true,\n failState\n };\n }\n\n throw error;\n }\n }\n\n checkExpressionErrors(refExpressionErrors, andThrow) {\n if (!refExpressionErrors) return false;\n const {\n shorthandAssignLoc,\n doubleProtoLoc,\n privateKeyLoc,\n optionalParametersLoc\n } = refExpressionErrors;\n const hasErrors = !!shorthandAssignLoc || !!doubleProtoLoc || !!optionalParametersLoc || !!privateKeyLoc;\n\n if (!andThrow) {\n return hasErrors;\n }\n\n if (shorthandAssignLoc != null) {\n this.raise(ErrorMessages.InvalidCoverInitializedName, {\n at: shorthandAssignLoc\n });\n }\n\n if (doubleProtoLoc != null) {\n this.raise(ErrorMessages.DuplicateProto, {\n at: doubleProtoLoc\n });\n }\n\n if (privateKeyLoc != null) {\n this.raise(ErrorMessages.UnexpectedPrivateField, {\n at: privateKeyLoc\n });\n }\n\n if (optionalParametersLoc != null) {\n this.unexpected(optionalParametersLoc);\n }\n }\n\n isLiteralPropertyName() {\n return tokenIsLiteralPropertyName(this.state.type);\n }\n\n isPrivateName(node) {\n return node.type === \"PrivateName\";\n }\n\n getPrivateNameSV(node) {\n return node.id.name;\n }\n\n hasPropertyAsPrivateName(node) {\n return (node.type === \"MemberExpression\" || node.type === \"OptionalMemberExpression\") && this.isPrivateName(node.property);\n }\n\n isOptionalChain(node) {\n return node.type === \"OptionalMemberExpression\" || node.type === \"OptionalCallExpression\";\n }\n\n isObjectProperty(node) {\n return node.type === \"ObjectProperty\";\n }\n\n isObjectMethod(node) {\n return node.type === \"ObjectMethod\";\n }\n\n initializeScopes(inModule = this.options.sourceType === \"module\") {\n const oldLabels = this.state.labels;\n this.state.labels = [];\n const oldExportedIdentifiers = this.exportedIdentifiers;\n this.exportedIdentifiers = new Set();\n const oldInModule = this.inModule;\n this.inModule = inModule;\n const oldScope = this.scope;\n const ScopeHandler = this.getScopeHandler();\n this.scope = new ScopeHandler(this.raise.bind(this), this.inModule);\n const oldProdParam = this.prodParam;\n this.prodParam = new ProductionParameterHandler();\n const oldClassScope = this.classScope;\n this.classScope = new ClassScopeHandler(this.raise.bind(this));\n const oldExpressionScope = this.expressionScope;\n this.expressionScope = new ExpressionScopeHandler(this.raise.bind(this));\n return () => {\n this.state.labels = oldLabels;\n this.exportedIdentifiers = oldExportedIdentifiers;\n this.inModule = oldInModule;\n this.scope = oldScope;\n this.prodParam = oldProdParam;\n this.classScope = oldClassScope;\n this.expressionScope = oldExpressionScope;\n };\n }\n\n enterInitialScopes() {\n let paramFlags = PARAM;\n\n if (this.inModule) {\n paramFlags |= PARAM_AWAIT;\n }\n\n this.scope.enter(SCOPE_PROGRAM);\n this.prodParam.enter(paramFlags);\n }\n\n checkDestructuringPrivate(refExpressionErrors) {\n const {\n privateKeyLoc\n } = refExpressionErrors;\n\n if (privateKeyLoc !== null) {\n this.expectPlugin(\"destructuringPrivate\", privateKeyLoc);\n }\n }\n\n}\nclass ExpressionErrors {\n constructor() {\n this.shorthandAssignLoc = null;\n this.doubleProtoLoc = null;\n this.privateKeyLoc = null;\n this.optionalParametersLoc = null;\n }\n\n}\n\nclass Node {\n constructor(parser, pos, loc) {\n this.type = \"\";\n this.start = pos;\n this.end = 0;\n this.loc = new SourceLocation(loc);\n if (parser != null && parser.options.ranges) this.range = [pos, 0];\n if (parser != null && parser.filename) this.loc.filename = parser.filename;\n }\n\n}\n\nconst NodePrototype = Node.prototype;\n{\n NodePrototype.__clone = function () {\n const newNode = new Node();\n const keys = Object.keys(this);\n\n for (let i = 0, length = keys.length; i < length; i++) {\n const key = keys[i];\n\n if (key !== \"leadingComments\" && key !== \"trailingComments\" && key !== \"innerComments\") {\n newNode[key] = this[key];\n }\n }\n\n return newNode;\n };\n}\n\nfunction clonePlaceholder(node) {\n return cloneIdentifier(node);\n}\n\nfunction cloneIdentifier(node) {\n const {\n type,\n start,\n end,\n loc,\n range,\n extra,\n name\n } = node;\n const cloned = Object.create(NodePrototype);\n cloned.type = type;\n cloned.start = start;\n cloned.end = end;\n cloned.loc = loc;\n cloned.range = range;\n cloned.extra = extra;\n cloned.name = name;\n\n if (type === \"Placeholder\") {\n cloned.expectedNode = node.expectedNode;\n }\n\n return cloned;\n}\nfunction cloneStringLiteral(node) {\n const {\n type,\n start,\n end,\n loc,\n range,\n extra\n } = node;\n\n if (type === \"Placeholder\") {\n return clonePlaceholder(node);\n }\n\n const cloned = Object.create(NodePrototype);\n cloned.type = type;\n cloned.start = start;\n cloned.end = end;\n cloned.loc = loc;\n cloned.range = range;\n\n if (node.raw !== undefined) {\n cloned.raw = node.raw;\n } else {\n cloned.extra = extra;\n }\n\n cloned.value = node.value;\n return cloned;\n}\nclass NodeUtils extends UtilParser {\n startNode() {\n return new Node(this, this.state.start, this.state.startLoc);\n }\n\n startNodeAt(pos, loc) {\n return new Node(this, pos, loc);\n }\n\n startNodeAtNode(type) {\n return this.startNodeAt(type.start, type.loc.start);\n }\n\n finishNode(node, type) {\n return this.finishNodeAt(node, type, this.state.lastTokEndLoc);\n }\n\n finishNodeAt(node, type, endLoc) {\n\n node.type = type;\n node.end = endLoc.index;\n node.loc.end = endLoc;\n if (this.options.ranges) node.range[1] = endLoc.index;\n if (this.options.attachComment) this.processComment(node);\n return node;\n }\n\n resetStartLocation(node, start, startLoc) {\n node.start = start;\n node.loc.start = startLoc;\n if (this.options.ranges) node.range[0] = start;\n }\n\n resetEndLocation(node, endLoc = this.state.lastTokEndLoc) {\n node.end = endLoc.index;\n node.loc.end = endLoc;\n if (this.options.ranges) node.range[1] = endLoc.index;\n }\n\n resetStartLocationFromNode(node, locationNode) {\n this.resetStartLocation(node, locationNode.start, locationNode.loc.start);\n }\n\n}\n\nconst reservedTypes = new Set([\"_\", \"any\", \"bool\", \"boolean\", \"empty\", \"extends\", \"false\", \"interface\", \"mixed\", \"null\", \"number\", \"static\", \"string\", \"true\", \"typeof\", \"void\"]);\nconst FlowErrors = makeErrorTemplates({\n AmbiguousConditionalArrow: \"Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.\",\n AmbiguousDeclareModuleKind: \"Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.\",\n AssignReservedType: \"Cannot overwrite reserved type %0.\",\n DeclareClassElement: \"The `declare` modifier can only appear on class fields.\",\n DeclareClassFieldInitializer: \"Initializers are not allowed in fields with the `declare` modifier.\",\n DuplicateDeclareModuleExports: \"Duplicate `declare module.exports` statement.\",\n EnumBooleanMemberNotInitialized: \"Boolean enum members need to be initialized. Use either `%0 = true,` or `%0 = false,` in enum `%1`.\",\n EnumDuplicateMemberName: \"Enum member names need to be unique, but the name `%0` has already been used before in enum `%1`.\",\n EnumInconsistentMemberValues: \"Enum `%0` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.\",\n EnumInvalidExplicitType: \"Enum type `%1` is not valid. Use one of `boolean`, `number`, `string`, or `symbol` in enum `%0`.\",\n EnumInvalidExplicitTypeUnknownSupplied: \"Supplied enum type is not valid. Use one of `boolean`, `number`, `string`, or `symbol` in enum `%0`.\",\n EnumInvalidMemberInitializerPrimaryType: \"Enum `%0` has type `%2`, so the initializer of `%1` needs to be a %2 literal.\",\n EnumInvalidMemberInitializerSymbolType: \"Symbol enum members cannot be initialized. Use `%1,` in enum `%0`.\",\n EnumInvalidMemberInitializerUnknownType: \"The enum member initializer for `%1` needs to be a literal (either a boolean, number, or string) in enum `%0`.\",\n EnumInvalidMemberName: \"Enum member names cannot start with lowercase 'a' through 'z'. Instead of using `%0`, consider using `%1`, in enum `%2`.\",\n EnumNumberMemberNotInitialized: \"Number enum members need to be initialized, e.g. `%1 = 1` in enum `%0`.\",\n EnumStringMemberInconsistentlyInitailized: \"String enum members need to consistently either all use initializers, or use no initializers, in enum `%0`.\",\n GetterMayNotHaveThisParam: \"A getter cannot have a `this` parameter.\",\n ImportTypeShorthandOnlyInPureImport: \"The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.\",\n InexactInsideExact: \"Explicit inexact syntax cannot appear inside an explicit exact object type.\",\n InexactInsideNonObject: \"Explicit inexact syntax cannot appear in class or interface definitions.\",\n InexactVariance: \"Explicit inexact syntax cannot have variance.\",\n InvalidNonTypeImportInDeclareModule: \"Imports within a `declare module` body must always be `import type` or `import typeof`.\",\n MissingTypeParamDefault: \"Type parameter declaration needs a default, since a preceding type parameter declaration has a default.\",\n NestedDeclareModule: \"`declare module` cannot be used inside another `declare module`.\",\n NestedFlowComment: \"Cannot have a flow comment inside another flow comment.\",\n PatternIsOptional: \"A binding pattern parameter cannot be optional in an implementation signature.\",\n SetterMayNotHaveThisParam: \"A setter cannot have a `this` parameter.\",\n SpreadVariance: \"Spread properties cannot have variance.\",\n ThisParamAnnotationRequired: \"A type annotation is required for the `this` parameter.\",\n ThisParamBannedInConstructor: \"Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.\",\n ThisParamMayNotBeOptional: \"The `this` parameter cannot be optional.\",\n ThisParamMustBeFirst: \"The `this` parameter must be the first function parameter.\",\n ThisParamNoDefault: \"The `this` parameter may not have a default value.\",\n TypeBeforeInitializer: \"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.\",\n TypeCastInPattern: \"The type cast expression is expected to be wrapped with parenthesis.\",\n UnexpectedExplicitInexactInObject: \"Explicit inexact syntax must appear at the end of an inexact object.\",\n UnexpectedReservedType: \"Unexpected reserved type %0.\",\n UnexpectedReservedUnderscore: \"`_` is only allowed as a type argument to call or new.\",\n UnexpectedSpaceBetweenModuloChecks: \"Spaces between `%` and `checks` are not allowed here.\",\n UnexpectedSpreadType: \"Spread operator cannot appear in class or interface definitions.\",\n UnexpectedSubtractionOperand: 'Unexpected token, expected \"number\" or \"bigint\".',\n UnexpectedTokenAfterTypeParameter: \"Expected an arrow function after this type parameter declaration.\",\n UnexpectedTypeParameterBeforeAsyncArrowFunction: \"Type parameters must come after the async keyword, e.g. instead of ` async () => {}`, use `async () => {}`.\",\n UnsupportedDeclareExportKind: \"`declare export %0` is not supported. Use `%1` instead.\",\n UnsupportedStatementInDeclareModule: \"Only declares and type imports are allowed inside declare module.\",\n UnterminatedFlowComment: \"Unterminated flow-comment.\"\n}, ErrorCodes.SyntaxError, \"flow\");\n\nfunction isEsModuleType(bodyElement) {\n return bodyElement.type === \"DeclareExportAllDeclaration\" || bodyElement.type === \"DeclareExportDeclaration\" && (!bodyElement.declaration || bodyElement.declaration.type !== \"TypeAlias\" && bodyElement.declaration.type !== \"InterfaceDeclaration\");\n}\n\nfunction hasTypeImportKind(node) {\n return node.importKind === \"type\" || node.importKind === \"typeof\";\n}\n\nfunction isMaybeDefaultImport(type) {\n return tokenIsKeywordOrIdentifier(type) && type !== 97;\n}\n\nconst exportSuggestions = {\n const: \"declare export var\",\n let: \"declare export var\",\n type: \"export type\",\n interface: \"export interface\"\n};\n\nfunction partition(list, test) {\n const list1 = [];\n const list2 = [];\n\n for (let i = 0; i < list.length; i++) {\n (test(list[i], i, list) ? list1 : list2).push(list[i]);\n }\n\n return [list1, list2];\n}\n\nconst FLOW_PRAGMA_REGEX = /\\*?\\s*@((?:no)?flow)\\b/;\nvar flow = (superClass => class extends superClass {\n constructor(...args) {\n super(...args);\n this.flowPragma = undefined;\n }\n\n getScopeHandler() {\n return FlowScopeHandler;\n }\n\n shouldParseTypes() {\n return this.getPluginOption(\"flow\", \"all\") || this.flowPragma === \"flow\";\n }\n\n shouldParseEnums() {\n return !!this.getPluginOption(\"flow\", \"enums\");\n }\n\n finishToken(type, val) {\n if (type !== 129 && type !== 13 && type !== 28) {\n if (this.flowPragma === undefined) {\n this.flowPragma = null;\n }\n }\n\n return super.finishToken(type, val);\n }\n\n addComment(comment) {\n if (this.flowPragma === undefined) {\n const matches = FLOW_PRAGMA_REGEX.exec(comment.value);\n\n if (!matches) ; else if (matches[1] === \"flow\") {\n this.flowPragma = \"flow\";\n } else if (matches[1] === \"noflow\") {\n this.flowPragma = \"noflow\";\n } else {\n throw new Error(\"Unexpected flow pragma\");\n }\n }\n\n return super.addComment(comment);\n }\n\n flowParseTypeInitialiser(tok) {\n const oldInType = this.state.inType;\n this.state.inType = true;\n this.expect(tok || 14);\n const type = this.flowParseType();\n this.state.inType = oldInType;\n return type;\n }\n\n flowParsePredicate() {\n const node = this.startNode();\n const moduloLoc = this.state.startLoc;\n this.next();\n this.expectContextual(107);\n\n if (this.state.lastTokStart > moduloLoc.index + 1) {\n this.raise(FlowErrors.UnexpectedSpaceBetweenModuloChecks, {\n at: moduloLoc\n });\n }\n\n if (this.eat(10)) {\n node.value = this.parseExpression();\n this.expect(11);\n return this.finishNode(node, \"DeclaredPredicate\");\n } else {\n return this.finishNode(node, \"InferredPredicate\");\n }\n }\n\n flowParseTypeAndPredicateInitialiser() {\n const oldInType = this.state.inType;\n this.state.inType = true;\n this.expect(14);\n let type = null;\n let predicate = null;\n\n if (this.match(54)) {\n this.state.inType = oldInType;\n predicate = this.flowParsePredicate();\n } else {\n type = this.flowParseType();\n this.state.inType = oldInType;\n\n if (this.match(54)) {\n predicate = this.flowParsePredicate();\n }\n }\n\n return [type, predicate];\n }\n\n flowParseDeclareClass(node) {\n this.next();\n this.flowParseInterfaceish(node, true);\n return this.finishNode(node, \"DeclareClass\");\n }\n\n flowParseDeclareFunction(node) {\n this.next();\n const id = node.id = this.parseIdentifier();\n const typeNode = this.startNode();\n const typeContainer = this.startNode();\n\n if (this.match(47)) {\n typeNode.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n typeNode.typeParameters = null;\n }\n\n this.expect(10);\n const tmp = this.flowParseFunctionTypeParams();\n typeNode.params = tmp.params;\n typeNode.rest = tmp.rest;\n typeNode.this = tmp._this;\n this.expect(11);\n [typeNode.returnType, node.predicate] = this.flowParseTypeAndPredicateInitialiser();\n typeContainer.typeAnnotation = this.finishNode(typeNode, \"FunctionTypeAnnotation\");\n id.typeAnnotation = this.finishNode(typeContainer, \"TypeAnnotation\");\n this.resetEndLocation(id);\n this.semicolon();\n this.scope.declareName(node.id.name, BIND_FLOW_DECLARE_FN, node.id.loc.start);\n return this.finishNode(node, \"DeclareFunction\");\n }\n\n flowParseDeclare(node, insideModule) {\n if (this.match(80)) {\n return this.flowParseDeclareClass(node);\n } else if (this.match(68)) {\n return this.flowParseDeclareFunction(node);\n } else if (this.match(74)) {\n return this.flowParseDeclareVariable(node);\n } else if (this.eatContextual(123)) {\n if (this.match(16)) {\n return this.flowParseDeclareModuleExports(node);\n } else {\n if (insideModule) {\n this.raise(FlowErrors.NestedDeclareModule, {\n at: this.state.lastTokStartLoc\n });\n }\n\n return this.flowParseDeclareModule(node);\n }\n } else if (this.isContextual(126)) {\n return this.flowParseDeclareTypeAlias(node);\n } else if (this.isContextual(127)) {\n return this.flowParseDeclareOpaqueType(node);\n } else if (this.isContextual(125)) {\n return this.flowParseDeclareInterface(node);\n } else if (this.match(82)) {\n return this.flowParseDeclareExportDeclaration(node, insideModule);\n } else {\n throw this.unexpected();\n }\n }\n\n flowParseDeclareVariable(node) {\n this.next();\n node.id = this.flowParseTypeAnnotatableIdentifier(true);\n this.scope.declareName(node.id.name, BIND_VAR, node.id.loc.start);\n this.semicolon();\n return this.finishNode(node, \"DeclareVariable\");\n }\n\n flowParseDeclareModule(node) {\n this.scope.enter(SCOPE_OTHER);\n\n if (this.match(129)) {\n node.id = this.parseExprAtom();\n } else {\n node.id = this.parseIdentifier();\n }\n\n const bodyNode = node.body = this.startNode();\n const body = bodyNode.body = [];\n this.expect(5);\n\n while (!this.match(8)) {\n let bodyNode = this.startNode();\n\n if (this.match(83)) {\n this.next();\n\n if (!this.isContextual(126) && !this.match(87)) {\n this.raise(FlowErrors.InvalidNonTypeImportInDeclareModule, {\n at: this.state.lastTokStartLoc\n });\n }\n\n this.parseImport(bodyNode);\n } else {\n this.expectContextual(121, FlowErrors.UnsupportedStatementInDeclareModule);\n bodyNode = this.flowParseDeclare(bodyNode, true);\n }\n\n body.push(bodyNode);\n }\n\n this.scope.exit();\n this.expect(8);\n this.finishNode(bodyNode, \"BlockStatement\");\n let kind = null;\n let hasModuleExport = false;\n body.forEach(bodyElement => {\n if (isEsModuleType(bodyElement)) {\n if (kind === \"CommonJS\") {\n this.raise(FlowErrors.AmbiguousDeclareModuleKind, {\n node: bodyElement\n });\n }\n\n kind = \"ES\";\n } else if (bodyElement.type === \"DeclareModuleExports\") {\n if (hasModuleExport) {\n this.raise(FlowErrors.DuplicateDeclareModuleExports, {\n node: bodyElement\n });\n }\n\n if (kind === \"ES\") {\n this.raise(FlowErrors.AmbiguousDeclareModuleKind, {\n node: bodyElement\n });\n }\n\n kind = \"CommonJS\";\n hasModuleExport = true;\n }\n });\n node.kind = kind || \"CommonJS\";\n return this.finishNode(node, \"DeclareModule\");\n }\n\n flowParseDeclareExportDeclaration(node, insideModule) {\n this.expect(82);\n\n if (this.eat(65)) {\n if (this.match(68) || this.match(80)) {\n node.declaration = this.flowParseDeclare(this.startNode());\n } else {\n node.declaration = this.flowParseType();\n this.semicolon();\n }\n\n node.default = true;\n return this.finishNode(node, \"DeclareExportDeclaration\");\n } else {\n if (this.match(75) || this.isLet() || (this.isContextual(126) || this.isContextual(125)) && !insideModule) {\n const label = this.state.value;\n const suggestion = exportSuggestions[label];\n throw this.raise(FlowErrors.UnsupportedDeclareExportKind, {\n at: this.state.startLoc\n }, label, suggestion);\n }\n\n if (this.match(74) || this.match(68) || this.match(80) || this.isContextual(127)) {\n node.declaration = this.flowParseDeclare(this.startNode());\n node.default = false;\n return this.finishNode(node, \"DeclareExportDeclaration\");\n } else if (this.match(55) || this.match(5) || this.isContextual(125) || this.isContextual(126) || this.isContextual(127)) {\n node = this.parseExport(node);\n\n if (node.type === \"ExportNamedDeclaration\") {\n node.type = \"ExportDeclaration\";\n node.default = false;\n delete node.exportKind;\n }\n\n node.type = \"Declare\" + node.type;\n return node;\n }\n }\n\n throw this.unexpected();\n }\n\n flowParseDeclareModuleExports(node) {\n this.next();\n this.expectContextual(108);\n node.typeAnnotation = this.flowParseTypeAnnotation();\n this.semicolon();\n return this.finishNode(node, \"DeclareModuleExports\");\n }\n\n flowParseDeclareTypeAlias(node) {\n this.next();\n this.flowParseTypeAlias(node);\n node.type = \"DeclareTypeAlias\";\n return node;\n }\n\n flowParseDeclareOpaqueType(node) {\n this.next();\n this.flowParseOpaqueType(node, true);\n node.type = \"DeclareOpaqueType\";\n return node;\n }\n\n flowParseDeclareInterface(node) {\n this.next();\n this.flowParseInterfaceish(node);\n return this.finishNode(node, \"DeclareInterface\");\n }\n\n flowParseInterfaceish(node, isClass = false) {\n node.id = this.flowParseRestrictedIdentifier(!isClass, true);\n this.scope.declareName(node.id.name, isClass ? BIND_FUNCTION : BIND_LEXICAL, node.id.loc.start);\n\n if (this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n\n node.extends = [];\n node.implements = [];\n node.mixins = [];\n\n if (this.eat(81)) {\n do {\n node.extends.push(this.flowParseInterfaceExtends());\n } while (!isClass && this.eat(12));\n }\n\n if (this.isContextual(114)) {\n this.next();\n\n do {\n node.mixins.push(this.flowParseInterfaceExtends());\n } while (this.eat(12));\n }\n\n if (this.isContextual(110)) {\n this.next();\n\n do {\n node.implements.push(this.flowParseInterfaceExtends());\n } while (this.eat(12));\n }\n\n node.body = this.flowParseObjectType({\n allowStatic: isClass,\n allowExact: false,\n allowSpread: false,\n allowProto: isClass,\n allowInexact: false\n });\n }\n\n flowParseInterfaceExtends() {\n const node = this.startNode();\n node.id = this.flowParseQualifiedTypeIdentifier();\n\n if (this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n } else {\n node.typeParameters = null;\n }\n\n return this.finishNode(node, \"InterfaceExtends\");\n }\n\n flowParseInterface(node) {\n this.flowParseInterfaceish(node);\n return this.finishNode(node, \"InterfaceDeclaration\");\n }\n\n checkNotUnderscore(word) {\n if (word === \"_\") {\n this.raise(FlowErrors.UnexpectedReservedUnderscore, {\n at: this.state.startLoc\n });\n }\n }\n\n checkReservedType(word, startLoc, declaration) {\n if (!reservedTypes.has(word)) return;\n this.raise(declaration ? FlowErrors.AssignReservedType : FlowErrors.UnexpectedReservedType, {\n at: startLoc\n }, word);\n }\n\n flowParseRestrictedIdentifier(liberal, declaration) {\n this.checkReservedType(this.state.value, this.state.startLoc, declaration);\n return this.parseIdentifier(liberal);\n }\n\n flowParseTypeAlias(node) {\n node.id = this.flowParseRestrictedIdentifier(false, true);\n this.scope.declareName(node.id.name, BIND_LEXICAL, node.id.loc.start);\n\n if (this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n\n node.right = this.flowParseTypeInitialiser(29);\n this.semicolon();\n return this.finishNode(node, \"TypeAlias\");\n }\n\n flowParseOpaqueType(node, declare) {\n this.expectContextual(126);\n node.id = this.flowParseRestrictedIdentifier(true, true);\n this.scope.declareName(node.id.name, BIND_LEXICAL, node.id.loc.start);\n\n if (this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n\n node.supertype = null;\n\n if (this.match(14)) {\n node.supertype = this.flowParseTypeInitialiser(14);\n }\n\n node.impltype = null;\n\n if (!declare) {\n node.impltype = this.flowParseTypeInitialiser(29);\n }\n\n this.semicolon();\n return this.finishNode(node, \"OpaqueType\");\n }\n\n flowParseTypeParameter(requireDefault = false) {\n const nodeStartLoc = this.state.startLoc;\n const node = this.startNode();\n const variance = this.flowParseVariance();\n const ident = this.flowParseTypeAnnotatableIdentifier();\n node.name = ident.name;\n node.variance = variance;\n node.bound = ident.typeAnnotation;\n\n if (this.match(29)) {\n this.eat(29);\n node.default = this.flowParseType();\n } else {\n if (requireDefault) {\n this.raise(FlowErrors.MissingTypeParamDefault, {\n at: nodeStartLoc\n });\n }\n }\n\n return this.finishNode(node, \"TypeParameter\");\n }\n\n flowParseTypeParameterDeclaration() {\n const oldInType = this.state.inType;\n const node = this.startNode();\n node.params = [];\n this.state.inType = true;\n\n if (this.match(47) || this.match(138)) {\n this.next();\n } else {\n this.unexpected();\n }\n\n let defaultRequired = false;\n\n do {\n const typeParameter = this.flowParseTypeParameter(defaultRequired);\n node.params.push(typeParameter);\n\n if (typeParameter.default) {\n defaultRequired = true;\n }\n\n if (!this.match(48)) {\n this.expect(12);\n }\n } while (!this.match(48));\n\n this.expect(48);\n this.state.inType = oldInType;\n return this.finishNode(node, \"TypeParameterDeclaration\");\n }\n\n flowParseTypeParameterInstantiation() {\n const node = this.startNode();\n const oldInType = this.state.inType;\n node.params = [];\n this.state.inType = true;\n this.expect(47);\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = false;\n\n while (!this.match(48)) {\n node.params.push(this.flowParseType());\n\n if (!this.match(48)) {\n this.expect(12);\n }\n }\n\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n this.expect(48);\n this.state.inType = oldInType;\n return this.finishNode(node, \"TypeParameterInstantiation\");\n }\n\n flowParseTypeParameterInstantiationCallOrNew() {\n const node = this.startNode();\n const oldInType = this.state.inType;\n node.params = [];\n this.state.inType = true;\n this.expect(47);\n\n while (!this.match(48)) {\n node.params.push(this.flowParseTypeOrImplicitInstantiation());\n\n if (!this.match(48)) {\n this.expect(12);\n }\n }\n\n this.expect(48);\n this.state.inType = oldInType;\n return this.finishNode(node, \"TypeParameterInstantiation\");\n }\n\n flowParseInterfaceType() {\n const node = this.startNode();\n this.expectContextual(125);\n node.extends = [];\n\n if (this.eat(81)) {\n do {\n node.extends.push(this.flowParseInterfaceExtends());\n } while (this.eat(12));\n }\n\n node.body = this.flowParseObjectType({\n allowStatic: false,\n allowExact: false,\n allowSpread: false,\n allowProto: false,\n allowInexact: false\n });\n return this.finishNode(node, \"InterfaceTypeAnnotation\");\n }\n\n flowParseObjectPropertyKey() {\n return this.match(130) || this.match(129) ? this.parseExprAtom() : this.parseIdentifier(true);\n }\n\n flowParseObjectTypeIndexer(node, isStatic, variance) {\n node.static = isStatic;\n\n if (this.lookahead().type === 14) {\n node.id = this.flowParseObjectPropertyKey();\n node.key = this.flowParseTypeInitialiser();\n } else {\n node.id = null;\n node.key = this.flowParseType();\n }\n\n this.expect(3);\n node.value = this.flowParseTypeInitialiser();\n node.variance = variance;\n return this.finishNode(node, \"ObjectTypeIndexer\");\n }\n\n flowParseObjectTypeInternalSlot(node, isStatic) {\n node.static = isStatic;\n node.id = this.flowParseObjectPropertyKey();\n this.expect(3);\n this.expect(3);\n\n if (this.match(47) || this.match(10)) {\n node.method = true;\n node.optional = false;\n node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.start, node.loc.start));\n } else {\n node.method = false;\n\n if (this.eat(17)) {\n node.optional = true;\n }\n\n node.value = this.flowParseTypeInitialiser();\n }\n\n return this.finishNode(node, \"ObjectTypeInternalSlot\");\n }\n\n flowParseObjectTypeMethodish(node) {\n node.params = [];\n node.rest = null;\n node.typeParameters = null;\n node.this = null;\n\n if (this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n\n this.expect(10);\n\n if (this.match(78)) {\n node.this = this.flowParseFunctionTypeParam(true);\n node.this.name = null;\n\n if (!this.match(11)) {\n this.expect(12);\n }\n }\n\n while (!this.match(11) && !this.match(21)) {\n node.params.push(this.flowParseFunctionTypeParam(false));\n\n if (!this.match(11)) {\n this.expect(12);\n }\n }\n\n if (this.eat(21)) {\n node.rest = this.flowParseFunctionTypeParam(false);\n }\n\n this.expect(11);\n node.returnType = this.flowParseTypeInitialiser();\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n\n flowParseObjectTypeCallProperty(node, isStatic) {\n const valueNode = this.startNode();\n node.static = isStatic;\n node.value = this.flowParseObjectTypeMethodish(valueNode);\n return this.finishNode(node, \"ObjectTypeCallProperty\");\n }\n\n flowParseObjectType({\n allowStatic,\n allowExact,\n allowSpread,\n allowProto,\n allowInexact\n }) {\n const oldInType = this.state.inType;\n this.state.inType = true;\n const nodeStart = this.startNode();\n nodeStart.callProperties = [];\n nodeStart.properties = [];\n nodeStart.indexers = [];\n nodeStart.internalSlots = [];\n let endDelim;\n let exact;\n let inexact = false;\n\n if (allowExact && this.match(6)) {\n this.expect(6);\n endDelim = 9;\n exact = true;\n } else {\n this.expect(5);\n endDelim = 8;\n exact = false;\n }\n\n nodeStart.exact = exact;\n\n while (!this.match(endDelim)) {\n let isStatic = false;\n let protoStartLoc = null;\n let inexactStartLoc = null;\n const node = this.startNode();\n\n if (allowProto && this.isContextual(115)) {\n const lookahead = this.lookahead();\n\n if (lookahead.type !== 14 && lookahead.type !== 17) {\n this.next();\n protoStartLoc = this.state.startLoc;\n allowStatic = false;\n }\n }\n\n if (allowStatic && this.isContextual(104)) {\n const lookahead = this.lookahead();\n\n if (lookahead.type !== 14 && lookahead.type !== 17) {\n this.next();\n isStatic = true;\n }\n }\n\n const variance = this.flowParseVariance();\n\n if (this.eat(0)) {\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n\n if (this.eat(0)) {\n if (variance) {\n this.unexpected(variance.loc.start);\n }\n\n nodeStart.internalSlots.push(this.flowParseObjectTypeInternalSlot(node, isStatic));\n } else {\n nodeStart.indexers.push(this.flowParseObjectTypeIndexer(node, isStatic, variance));\n }\n } else if (this.match(10) || this.match(47)) {\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n\n if (variance) {\n this.unexpected(variance.loc.start);\n }\n\n nodeStart.callProperties.push(this.flowParseObjectTypeCallProperty(node, isStatic));\n } else {\n let kind = \"init\";\n\n if (this.isContextual(98) || this.isContextual(103)) {\n const lookahead = this.lookahead();\n\n if (tokenIsLiteralPropertyName(lookahead.type)) {\n kind = this.state.value;\n this.next();\n }\n }\n\n const propOrInexact = this.flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact != null ? allowInexact : !exact);\n\n if (propOrInexact === null) {\n inexact = true;\n inexactStartLoc = this.state.lastTokStartLoc;\n } else {\n nodeStart.properties.push(propOrInexact);\n }\n }\n\n this.flowObjectTypeSemicolon();\n\n if (inexactStartLoc && !this.match(8) && !this.match(9)) {\n this.raise(FlowErrors.UnexpectedExplicitInexactInObject, {\n at: inexactStartLoc\n });\n }\n }\n\n this.expect(endDelim);\n\n if (allowSpread) {\n nodeStart.inexact = inexact;\n }\n\n const out = this.finishNode(nodeStart, \"ObjectTypeAnnotation\");\n this.state.inType = oldInType;\n return out;\n }\n\n flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact) {\n if (this.eat(21)) {\n const isInexactToken = this.match(12) || this.match(13) || this.match(8) || this.match(9);\n\n if (isInexactToken) {\n if (!allowSpread) {\n this.raise(FlowErrors.InexactInsideNonObject, {\n at: this.state.lastTokStartLoc\n });\n } else if (!allowInexact) {\n this.raise(FlowErrors.InexactInsideExact, {\n at: this.state.lastTokStartLoc\n });\n }\n\n if (variance) {\n this.raise(FlowErrors.InexactVariance, {\n node: variance\n });\n }\n\n return null;\n }\n\n if (!allowSpread) {\n this.raise(FlowErrors.UnexpectedSpreadType, {\n at: this.state.lastTokStartLoc\n });\n }\n\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n\n if (variance) {\n this.raise(FlowErrors.SpreadVariance, {\n node: variance\n });\n }\n\n node.argument = this.flowParseType();\n return this.finishNode(node, \"ObjectTypeSpreadProperty\");\n } else {\n node.key = this.flowParseObjectPropertyKey();\n node.static = isStatic;\n node.proto = protoStartLoc != null;\n node.kind = kind;\n let optional = false;\n\n if (this.match(47) || this.match(10)) {\n node.method = true;\n\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n\n if (variance) {\n this.unexpected(variance.loc.start);\n }\n\n node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.start, node.loc.start));\n\n if (kind === \"get\" || kind === \"set\") {\n this.flowCheckGetterSetterParams(node);\n }\n\n if (!allowSpread && node.key.name === \"constructor\" && node.value.this) {\n this.raise(FlowErrors.ThisParamBannedInConstructor, {\n node: node.value.this\n });\n }\n } else {\n if (kind !== \"init\") this.unexpected();\n node.method = false;\n\n if (this.eat(17)) {\n optional = true;\n }\n\n node.value = this.flowParseTypeInitialiser();\n node.variance = variance;\n }\n\n node.optional = optional;\n return this.finishNode(node, \"ObjectTypeProperty\");\n }\n }\n\n flowCheckGetterSetterParams(property) {\n const paramCount = property.kind === \"get\" ? 0 : 1;\n const length = property.value.params.length + (property.value.rest ? 1 : 0);\n\n if (property.value.this) {\n this.raise(property.kind === \"get\" ? FlowErrors.GetterMayNotHaveThisParam : FlowErrors.SetterMayNotHaveThisParam, {\n node: property.value.this\n });\n }\n\n if (length !== paramCount) {\n this.raise(property.kind === \"get\" ? ErrorMessages.BadGetterArity : ErrorMessages.BadSetterArity, {\n node: property\n });\n }\n\n if (property.kind === \"set\" && property.value.rest) {\n this.raise(ErrorMessages.BadSetterRestParameter, {\n node: property\n });\n }\n }\n\n flowObjectTypeSemicolon() {\n if (!this.eat(13) && !this.eat(12) && !this.match(8) && !this.match(9)) {\n this.unexpected();\n }\n }\n\n flowParseQualifiedTypeIdentifier(startPos, startLoc, id) {\n startPos = startPos || this.state.start;\n startLoc = startLoc || this.state.startLoc;\n let node = id || this.flowParseRestrictedIdentifier(true);\n\n while (this.eat(16)) {\n const node2 = this.startNodeAt(startPos, startLoc);\n node2.qualification = node;\n node2.id = this.flowParseRestrictedIdentifier(true);\n node = this.finishNode(node2, \"QualifiedTypeIdentifier\");\n }\n\n return node;\n }\n\n flowParseGenericType(startPos, startLoc, id) {\n const node = this.startNodeAt(startPos, startLoc);\n node.typeParameters = null;\n node.id = this.flowParseQualifiedTypeIdentifier(startPos, startLoc, id);\n\n if (this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n }\n\n return this.finishNode(node, \"GenericTypeAnnotation\");\n }\n\n flowParseTypeofType() {\n const node = this.startNode();\n this.expect(87);\n node.argument = this.flowParsePrimaryType();\n return this.finishNode(node, \"TypeofTypeAnnotation\");\n }\n\n flowParseTupleType() {\n const node = this.startNode();\n node.types = [];\n this.expect(0);\n\n while (this.state.pos < this.length && !this.match(3)) {\n node.types.push(this.flowParseType());\n if (this.match(3)) break;\n this.expect(12);\n }\n\n this.expect(3);\n return this.finishNode(node, \"TupleTypeAnnotation\");\n }\n\n flowParseFunctionTypeParam(first) {\n let name = null;\n let optional = false;\n let typeAnnotation = null;\n const node = this.startNode();\n const lh = this.lookahead();\n const isThis = this.state.type === 78;\n\n if (lh.type === 14 || lh.type === 17) {\n if (isThis && !first) {\n this.raise(FlowErrors.ThisParamMustBeFirst, {\n node\n });\n }\n\n name = this.parseIdentifier(isThis);\n\n if (this.eat(17)) {\n optional = true;\n\n if (isThis) {\n this.raise(FlowErrors.ThisParamMayNotBeOptional, {\n node\n });\n }\n }\n\n typeAnnotation = this.flowParseTypeInitialiser();\n } else {\n typeAnnotation = this.flowParseType();\n }\n\n node.name = name;\n node.optional = optional;\n node.typeAnnotation = typeAnnotation;\n return this.finishNode(node, \"FunctionTypeParam\");\n }\n\n reinterpretTypeAsFunctionTypeParam(type) {\n const node = this.startNodeAt(type.start, type.loc.start);\n node.name = null;\n node.optional = false;\n node.typeAnnotation = type;\n return this.finishNode(node, \"FunctionTypeParam\");\n }\n\n flowParseFunctionTypeParams(params = []) {\n let rest = null;\n let _this = null;\n\n if (this.match(78)) {\n _this = this.flowParseFunctionTypeParam(true);\n _this.name = null;\n\n if (!this.match(11)) {\n this.expect(12);\n }\n }\n\n while (!this.match(11) && !this.match(21)) {\n params.push(this.flowParseFunctionTypeParam(false));\n\n if (!this.match(11)) {\n this.expect(12);\n }\n }\n\n if (this.eat(21)) {\n rest = this.flowParseFunctionTypeParam(false);\n }\n\n return {\n params,\n rest,\n _this\n };\n }\n\n flowIdentToTypeAnnotation(startPos, startLoc, node, id) {\n switch (id.name) {\n case \"any\":\n return this.finishNode(node, \"AnyTypeAnnotation\");\n\n case \"bool\":\n case \"boolean\":\n return this.finishNode(node, \"BooleanTypeAnnotation\");\n\n case \"mixed\":\n return this.finishNode(node, \"MixedTypeAnnotation\");\n\n case \"empty\":\n return this.finishNode(node, \"EmptyTypeAnnotation\");\n\n case \"number\":\n return this.finishNode(node, \"NumberTypeAnnotation\");\n\n case \"string\":\n return this.finishNode(node, \"StringTypeAnnotation\");\n\n case \"symbol\":\n return this.finishNode(node, \"SymbolTypeAnnotation\");\n\n default:\n this.checkNotUnderscore(id.name);\n return this.flowParseGenericType(startPos, startLoc, id);\n }\n }\n\n flowParsePrimaryType() {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const node = this.startNode();\n let tmp;\n let type;\n let isGroupedType = false;\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n\n switch (this.state.type) {\n case 5:\n return this.flowParseObjectType({\n allowStatic: false,\n allowExact: false,\n allowSpread: true,\n allowProto: false,\n allowInexact: true\n });\n\n case 6:\n return this.flowParseObjectType({\n allowStatic: false,\n allowExact: true,\n allowSpread: true,\n allowProto: false,\n allowInexact: false\n });\n\n case 0:\n this.state.noAnonFunctionType = false;\n type = this.flowParseTupleType();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n return type;\n\n case 47:\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n this.expect(10);\n tmp = this.flowParseFunctionTypeParams();\n node.params = tmp.params;\n node.rest = tmp.rest;\n node.this = tmp._this;\n this.expect(11);\n this.expect(19);\n node.returnType = this.flowParseType();\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n\n case 10:\n this.next();\n\n if (!this.match(11) && !this.match(21)) {\n if (tokenIsIdentifier(this.state.type) || this.match(78)) {\n const token = this.lookahead().type;\n isGroupedType = token !== 17 && token !== 14;\n } else {\n isGroupedType = true;\n }\n }\n\n if (isGroupedType) {\n this.state.noAnonFunctionType = false;\n type = this.flowParseType();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n\n if (this.state.noAnonFunctionType || !(this.match(12) || this.match(11) && this.lookahead().type === 19)) {\n this.expect(11);\n return type;\n } else {\n this.eat(12);\n }\n }\n\n if (type) {\n tmp = this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(type)]);\n } else {\n tmp = this.flowParseFunctionTypeParams();\n }\n\n node.params = tmp.params;\n node.rest = tmp.rest;\n node.this = tmp._this;\n this.expect(11);\n this.expect(19);\n node.returnType = this.flowParseType();\n node.typeParameters = null;\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n\n case 129:\n return this.parseLiteral(this.state.value, \"StringLiteralTypeAnnotation\");\n\n case 85:\n case 86:\n node.value = this.match(85);\n this.next();\n return this.finishNode(node, \"BooleanLiteralTypeAnnotation\");\n\n case 53:\n if (this.state.value === \"-\") {\n this.next();\n\n if (this.match(130)) {\n return this.parseLiteralAtNode(-this.state.value, \"NumberLiteralTypeAnnotation\", node);\n }\n\n if (this.match(131)) {\n return this.parseLiteralAtNode(-this.state.value, \"BigIntLiteralTypeAnnotation\", node);\n }\n\n throw this.raise(FlowErrors.UnexpectedSubtractionOperand, {\n at: this.state.startLoc\n });\n }\n\n throw this.unexpected();\n\n case 130:\n return this.parseLiteral(this.state.value, \"NumberLiteralTypeAnnotation\");\n\n case 131:\n return this.parseLiteral(this.state.value, \"BigIntLiteralTypeAnnotation\");\n\n case 88:\n this.next();\n return this.finishNode(node, \"VoidTypeAnnotation\");\n\n case 84:\n this.next();\n return this.finishNode(node, \"NullLiteralTypeAnnotation\");\n\n case 78:\n this.next();\n return this.finishNode(node, \"ThisTypeAnnotation\");\n\n case 55:\n this.next();\n return this.finishNode(node, \"ExistsTypeAnnotation\");\n\n case 87:\n return this.flowParseTypeofType();\n\n default:\n if (tokenIsKeyword(this.state.type)) {\n const label = tokenLabelName(this.state.type);\n this.next();\n return super.createIdentifier(node, label);\n } else if (tokenIsIdentifier(this.state.type)) {\n if (this.isContextual(125)) {\n return this.flowParseInterfaceType();\n }\n\n return this.flowIdentToTypeAnnotation(startPos, startLoc, node, this.parseIdentifier());\n }\n\n }\n\n throw this.unexpected();\n }\n\n flowParsePostfixType() {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n let type = this.flowParsePrimaryType();\n let seenOptionalIndexedAccess = false;\n\n while ((this.match(0) || this.match(18)) && !this.canInsertSemicolon()) {\n const node = this.startNodeAt(startPos, startLoc);\n const optional = this.eat(18);\n seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional;\n this.expect(0);\n\n if (!optional && this.match(3)) {\n node.elementType = type;\n this.next();\n type = this.finishNode(node, \"ArrayTypeAnnotation\");\n } else {\n node.objectType = type;\n node.indexType = this.flowParseType();\n this.expect(3);\n\n if (seenOptionalIndexedAccess) {\n node.optional = optional;\n type = this.finishNode(node, \"OptionalIndexedAccessType\");\n } else {\n type = this.finishNode(node, \"IndexedAccessType\");\n }\n }\n }\n\n return type;\n }\n\n flowParsePrefixType() {\n const node = this.startNode();\n\n if (this.eat(17)) {\n node.typeAnnotation = this.flowParsePrefixType();\n return this.finishNode(node, \"NullableTypeAnnotation\");\n } else {\n return this.flowParsePostfixType();\n }\n }\n\n flowParseAnonFunctionWithoutParens() {\n const param = this.flowParsePrefixType();\n\n if (!this.state.noAnonFunctionType && this.eat(19)) {\n const node = this.startNodeAt(param.start, param.loc.start);\n node.params = [this.reinterpretTypeAsFunctionTypeParam(param)];\n node.rest = null;\n node.this = null;\n node.returnType = this.flowParseType();\n node.typeParameters = null;\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n\n return param;\n }\n\n flowParseIntersectionType() {\n const node = this.startNode();\n this.eat(45);\n const type = this.flowParseAnonFunctionWithoutParens();\n node.types = [type];\n\n while (this.eat(45)) {\n node.types.push(this.flowParseAnonFunctionWithoutParens());\n }\n\n return node.types.length === 1 ? type : this.finishNode(node, \"IntersectionTypeAnnotation\");\n }\n\n flowParseUnionType() {\n const node = this.startNode();\n this.eat(43);\n const type = this.flowParseIntersectionType();\n node.types = [type];\n\n while (this.eat(43)) {\n node.types.push(this.flowParseIntersectionType());\n }\n\n return node.types.length === 1 ? type : this.finishNode(node, \"UnionTypeAnnotation\");\n }\n\n flowParseType() {\n const oldInType = this.state.inType;\n this.state.inType = true;\n const type = this.flowParseUnionType();\n this.state.inType = oldInType;\n return type;\n }\n\n flowParseTypeOrImplicitInstantiation() {\n if (this.state.type === 128 && this.state.value === \"_\") {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const node = this.parseIdentifier();\n return this.flowParseGenericType(startPos, startLoc, node);\n } else {\n return this.flowParseType();\n }\n }\n\n flowParseTypeAnnotation() {\n const node = this.startNode();\n node.typeAnnotation = this.flowParseTypeInitialiser();\n return this.finishNode(node, \"TypeAnnotation\");\n }\n\n flowParseTypeAnnotatableIdentifier(allowPrimitiveOverride) {\n const ident = allowPrimitiveOverride ? this.parseIdentifier() : this.flowParseRestrictedIdentifier();\n\n if (this.match(14)) {\n ident.typeAnnotation = this.flowParseTypeAnnotation();\n this.resetEndLocation(ident);\n }\n\n return ident;\n }\n\n typeCastToParameter(node) {\n node.expression.typeAnnotation = node.typeAnnotation;\n this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);\n return node.expression;\n }\n\n flowParseVariance() {\n let variance = null;\n\n if (this.match(53)) {\n variance = this.startNode();\n\n if (this.state.value === \"+\") {\n variance.kind = \"plus\";\n } else {\n variance.kind = \"minus\";\n }\n\n this.next();\n this.finishNode(variance, \"Variance\");\n }\n\n return variance;\n }\n\n parseFunctionBody(node, allowExpressionBody, isMethod = false) {\n if (allowExpressionBody) {\n return this.forwardNoArrowParamsConversionAt(node, () => super.parseFunctionBody(node, true, isMethod));\n }\n\n return super.parseFunctionBody(node, false, isMethod);\n }\n\n parseFunctionBodyAndFinish(node, type, isMethod = false) {\n if (this.match(14)) {\n const typeNode = this.startNode();\n [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser();\n node.returnType = typeNode.typeAnnotation ? this.finishNode(typeNode, \"TypeAnnotation\") : null;\n }\n\n super.parseFunctionBodyAndFinish(node, type, isMethod);\n }\n\n parseStatement(context, topLevel) {\n if (this.state.strict && this.isContextual(125)) {\n const lookahead = this.lookahead();\n\n if (tokenIsKeywordOrIdentifier(lookahead.type)) {\n const node = this.startNode();\n this.next();\n return this.flowParseInterface(node);\n }\n } else if (this.shouldParseEnums() && this.isContextual(122)) {\n const node = this.startNode();\n this.next();\n return this.flowParseEnumDeclaration(node);\n }\n\n const stmt = super.parseStatement(context, topLevel);\n\n if (this.flowPragma === undefined && !this.isValidDirective(stmt)) {\n this.flowPragma = null;\n }\n\n return stmt;\n }\n\n parseExpressionStatement(node, expr) {\n if (expr.type === \"Identifier\") {\n if (expr.name === \"declare\") {\n if (this.match(80) || tokenIsIdentifier(this.state.type) || this.match(68) || this.match(74) || this.match(82)) {\n return this.flowParseDeclare(node);\n }\n } else if (tokenIsIdentifier(this.state.type)) {\n if (expr.name === \"interface\") {\n return this.flowParseInterface(node);\n } else if (expr.name === \"type\") {\n return this.flowParseTypeAlias(node);\n } else if (expr.name === \"opaque\") {\n return this.flowParseOpaqueType(node, false);\n }\n }\n }\n\n return super.parseExpressionStatement(node, expr);\n }\n\n shouldParseExportDeclaration() {\n const {\n type\n } = this.state;\n\n if (tokenIsFlowInterfaceOrTypeOrOpaque(type) || this.shouldParseEnums() && type === 122) {\n return !this.state.containsEsc;\n }\n\n return super.shouldParseExportDeclaration();\n }\n\n isExportDefaultSpecifier() {\n const {\n type\n } = this.state;\n\n if (tokenIsFlowInterfaceOrTypeOrOpaque(type) || this.shouldParseEnums() && type === 122) {\n return this.state.containsEsc;\n }\n\n return super.isExportDefaultSpecifier();\n }\n\n parseExportDefaultExpression() {\n if (this.shouldParseEnums() && this.isContextual(122)) {\n const node = this.startNode();\n this.next();\n return this.flowParseEnumDeclaration(node);\n }\n\n return super.parseExportDefaultExpression();\n }\n\n parseConditional(expr, startPos, startLoc, refExpressionErrors) {\n if (!this.match(17)) return expr;\n\n if (this.state.maybeInArrowParameters) {\n const nextCh = this.lookaheadCharCode();\n\n if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) {\n this.setOptionalParametersError(refExpressionErrors);\n return expr;\n }\n }\n\n this.expect(17);\n const state = this.state.clone();\n const originalNoArrowAt = this.state.noArrowAt;\n const node = this.startNodeAt(startPos, startLoc);\n let {\n consequent,\n failed\n } = this.tryParseConditionalConsequent();\n let [valid, invalid] = this.getArrowLikeExpressions(consequent);\n\n if (failed || invalid.length > 0) {\n const noArrowAt = [...originalNoArrowAt];\n\n if (invalid.length > 0) {\n this.state = state;\n this.state.noArrowAt = noArrowAt;\n\n for (let i = 0; i < invalid.length; i++) {\n noArrowAt.push(invalid[i].start);\n }\n\n ({\n consequent,\n failed\n } = this.tryParseConditionalConsequent());\n [valid, invalid] = this.getArrowLikeExpressions(consequent);\n }\n\n if (failed && valid.length > 1) {\n this.raise(FlowErrors.AmbiguousConditionalArrow, {\n at: state.startLoc\n });\n }\n\n if (failed && valid.length === 1) {\n this.state = state;\n noArrowAt.push(valid[0].start);\n this.state.noArrowAt = noArrowAt;\n ({\n consequent,\n failed\n } = this.tryParseConditionalConsequent());\n }\n }\n\n this.getArrowLikeExpressions(consequent, true);\n this.state.noArrowAt = originalNoArrowAt;\n this.expect(14);\n node.test = expr;\n node.consequent = consequent;\n node.alternate = this.forwardNoArrowParamsConversionAt(node, () => this.parseMaybeAssign(undefined, undefined));\n return this.finishNode(node, \"ConditionalExpression\");\n }\n\n tryParseConditionalConsequent() {\n this.state.noArrowParamsConversionAt.push(this.state.start);\n const consequent = this.parseMaybeAssignAllowIn();\n const failed = !this.match(14);\n this.state.noArrowParamsConversionAt.pop();\n return {\n consequent,\n failed\n };\n }\n\n getArrowLikeExpressions(node, disallowInvalid) {\n const stack = [node];\n const arrows = [];\n\n while (stack.length !== 0) {\n const node = stack.pop();\n\n if (node.type === \"ArrowFunctionExpression\") {\n if (node.typeParameters || !node.returnType) {\n this.finishArrowValidation(node);\n } else {\n arrows.push(node);\n }\n\n stack.push(node.body);\n } else if (node.type === \"ConditionalExpression\") {\n stack.push(node.consequent);\n stack.push(node.alternate);\n }\n }\n\n if (disallowInvalid) {\n arrows.forEach(node => this.finishArrowValidation(node));\n return [arrows, []];\n }\n\n return partition(arrows, node => node.params.every(param => this.isAssignable(param, true)));\n }\n\n finishArrowValidation(node) {\n var _node$extra;\n\n this.toAssignableList(node.params, (_node$extra = node.extra) == null ? void 0 : _node$extra.trailingCommaLoc, false);\n this.scope.enter(SCOPE_FUNCTION | SCOPE_ARROW);\n super.checkParams(node, false, true);\n this.scope.exit();\n }\n\n forwardNoArrowParamsConversionAt(node, parse) {\n let result;\n\n if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) {\n this.state.noArrowParamsConversionAt.push(this.state.start);\n result = parse();\n this.state.noArrowParamsConversionAt.pop();\n } else {\n result = parse();\n }\n\n return result;\n }\n\n parseParenItem(node, startPos, startLoc) {\n node = super.parseParenItem(node, startPos, startLoc);\n\n if (this.eat(17)) {\n node.optional = true;\n this.resetEndLocation(node);\n }\n\n if (this.match(14)) {\n const typeCastNode = this.startNodeAt(startPos, startLoc);\n typeCastNode.expression = node;\n typeCastNode.typeAnnotation = this.flowParseTypeAnnotation();\n return this.finishNode(typeCastNode, \"TypeCastExpression\");\n }\n\n return node;\n }\n\n assertModuleNodeAllowed(node) {\n if (node.type === \"ImportDeclaration\" && (node.importKind === \"type\" || node.importKind === \"typeof\") || node.type === \"ExportNamedDeclaration\" && node.exportKind === \"type\" || node.type === \"ExportAllDeclaration\" && node.exportKind === \"type\") {\n return;\n }\n\n super.assertModuleNodeAllowed(node);\n }\n\n parseExport(node) {\n const decl = super.parseExport(node);\n\n if (decl.type === \"ExportNamedDeclaration\" || decl.type === \"ExportAllDeclaration\") {\n decl.exportKind = decl.exportKind || \"value\";\n }\n\n return decl;\n }\n\n parseExportDeclaration(node) {\n if (this.isContextual(126)) {\n node.exportKind = \"type\";\n const declarationNode = this.startNode();\n this.next();\n\n if (this.match(5)) {\n node.specifiers = this.parseExportSpecifiers(true);\n this.parseExportFrom(node);\n return null;\n } else {\n return this.flowParseTypeAlias(declarationNode);\n }\n } else if (this.isContextual(127)) {\n node.exportKind = \"type\";\n const declarationNode = this.startNode();\n this.next();\n return this.flowParseOpaqueType(declarationNode, false);\n } else if (this.isContextual(125)) {\n node.exportKind = \"type\";\n const declarationNode = this.startNode();\n this.next();\n return this.flowParseInterface(declarationNode);\n } else if (this.shouldParseEnums() && this.isContextual(122)) {\n node.exportKind = \"value\";\n const declarationNode = this.startNode();\n this.next();\n return this.flowParseEnumDeclaration(declarationNode);\n } else {\n return super.parseExportDeclaration(node);\n }\n }\n\n eatExportStar(node) {\n if (super.eatExportStar(...arguments)) return true;\n\n if (this.isContextual(126) && this.lookahead().type === 55) {\n node.exportKind = \"type\";\n this.next();\n this.next();\n return true;\n }\n\n return false;\n }\n\n maybeParseExportNamespaceSpecifier(node) {\n const {\n startLoc\n } = this.state;\n const hasNamespace = super.maybeParseExportNamespaceSpecifier(node);\n\n if (hasNamespace && node.exportKind === \"type\") {\n this.unexpected(startLoc);\n }\n\n return hasNamespace;\n }\n\n parseClassId(node, isStatement, optionalId) {\n super.parseClassId(node, isStatement, optionalId);\n\n if (this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n }\n\n parseClassMember(classBody, member, state) {\n const {\n startLoc\n } = this.state;\n\n if (this.isContextual(121)) {\n if (this.parseClassMemberFromModifier(classBody, member)) {\n return;\n }\n\n member.declare = true;\n }\n\n super.parseClassMember(classBody, member, state);\n\n if (member.declare) {\n if (member.type !== \"ClassProperty\" && member.type !== \"ClassPrivateProperty\" && member.type !== \"PropertyDefinition\") {\n this.raise(FlowErrors.DeclareClassElement, {\n at: startLoc\n });\n } else if (member.value) {\n this.raise(FlowErrors.DeclareClassFieldInitializer, {\n node: member.value\n });\n }\n }\n }\n\n isIterator(word) {\n return word === \"iterator\" || word === \"asyncIterator\";\n }\n\n readIterator() {\n const word = super.readWord1();\n const fullWord = \"@@\" + word;\n\n if (!this.isIterator(word) || !this.state.inType) {\n this.raise(ErrorMessages.InvalidIdentifier, {\n at: this.state.curPosition()\n }, fullWord);\n }\n\n this.finishToken(128, fullWord);\n }\n\n getTokenFromCode(code) {\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (code === 123 && next === 124) {\n return this.finishOp(6, 2);\n } else if (this.state.inType && (code === 62 || code === 60)) {\n return this.finishOp(code === 62 ? 48 : 47, 1);\n } else if (this.state.inType && code === 63) {\n if (next === 46) {\n return this.finishOp(18, 2);\n }\n\n return this.finishOp(17, 1);\n } else if (isIteratorStart(code, next, this.input.charCodeAt(this.state.pos + 2))) {\n this.state.pos += 2;\n return this.readIterator();\n } else {\n return super.getTokenFromCode(code);\n }\n }\n\n isAssignable(node, isBinding) {\n if (node.type === \"TypeCastExpression\") {\n return this.isAssignable(node.expression, isBinding);\n } else {\n return super.isAssignable(node, isBinding);\n }\n }\n\n toAssignable(node, isLHS = false) {\n if (node.type === \"TypeCastExpression\") {\n return super.toAssignable(this.typeCastToParameter(node), isLHS);\n } else {\n return super.toAssignable(node, isLHS);\n }\n }\n\n toAssignableList(exprList, trailingCommaLoc, isLHS) {\n for (let i = 0; i < exprList.length; i++) {\n const expr = exprList[i];\n\n if ((expr == null ? void 0 : expr.type) === \"TypeCastExpression\") {\n exprList[i] = this.typeCastToParameter(expr);\n }\n }\n\n return super.toAssignableList(exprList, trailingCommaLoc, isLHS);\n }\n\n toReferencedList(exprList, isParenthesizedExpr) {\n for (let i = 0; i < exprList.length; i++) {\n var _expr$extra;\n\n const expr = exprList[i];\n\n if (expr && expr.type === \"TypeCastExpression\" && !((_expr$extra = expr.extra) != null && _expr$extra.parenthesized) && (exprList.length > 1 || !isParenthesizedExpr)) {\n this.raise(FlowErrors.TypeCastInPattern, {\n node: expr.typeAnnotation\n });\n }\n }\n\n return exprList;\n }\n\n parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) {\n const node = super.parseArrayLike(close, canBePattern, isTuple, refExpressionErrors);\n\n if (canBePattern && !this.state.maybeInArrowParameters) {\n this.toReferencedList(node.elements);\n }\n\n return node;\n }\n\n checkLVal(expr, ...args) {\n if (expr.type !== \"TypeCastExpression\") {\n return super.checkLVal(expr, ...args);\n }\n }\n\n parseClassProperty(node) {\n if (this.match(14)) {\n node.typeAnnotation = this.flowParseTypeAnnotation();\n }\n\n return super.parseClassProperty(node);\n }\n\n parseClassPrivateProperty(node) {\n if (this.match(14)) {\n node.typeAnnotation = this.flowParseTypeAnnotation();\n }\n\n return super.parseClassPrivateProperty(node);\n }\n\n isClassMethod() {\n return this.match(47) || super.isClassMethod();\n }\n\n isClassProperty() {\n return this.match(14) || super.isClassProperty();\n }\n\n isNonstaticConstructor(method) {\n return !this.match(14) && super.isNonstaticConstructor(method);\n }\n\n pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {\n if (method.variance) {\n this.unexpected(method.variance.loc.start);\n }\n\n delete method.variance;\n\n if (this.match(47)) {\n method.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n\n super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper);\n\n if (method.params && isConstructor) {\n const params = method.params;\n\n if (params.length > 0 && this.isThisParam(params[0])) {\n this.raise(FlowErrors.ThisParamBannedInConstructor, {\n node: method\n });\n }\n } else if (method.type === \"MethodDefinition\" && isConstructor && method.value.params) {\n const params = method.value.params;\n\n if (params.length > 0 && this.isThisParam(params[0])) {\n this.raise(FlowErrors.ThisParamBannedInConstructor, {\n node: method\n });\n }\n }\n }\n\n pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {\n if (method.variance) {\n this.unexpected(method.variance.loc.start);\n }\n\n delete method.variance;\n\n if (this.match(47)) {\n method.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n\n super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);\n }\n\n parseClassSuper(node) {\n super.parseClassSuper(node);\n\n if (node.superClass && this.match(47)) {\n node.superTypeParameters = this.flowParseTypeParameterInstantiation();\n }\n\n if (this.isContextual(110)) {\n this.next();\n const implemented = node.implements = [];\n\n do {\n const node = this.startNode();\n node.id = this.flowParseRestrictedIdentifier(true);\n\n if (this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n } else {\n node.typeParameters = null;\n }\n\n implemented.push(this.finishNode(node, \"ClassImplements\"));\n } while (this.eat(12));\n }\n }\n\n checkGetterSetterParams(method) {\n super.checkGetterSetterParams(method);\n const params = this.getObjectOrClassMethodParams(method);\n\n if (params.length > 0) {\n const param = params[0];\n\n if (this.isThisParam(param) && method.kind === \"get\") {\n this.raise(FlowErrors.GetterMayNotHaveThisParam, {\n node: param\n });\n } else if (this.isThisParam(param)) {\n this.raise(FlowErrors.SetterMayNotHaveThisParam, {\n node: param\n });\n }\n }\n }\n\n parsePropertyNamePrefixOperator(node) {\n node.variance = this.flowParseVariance();\n }\n\n parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {\n if (prop.variance) {\n this.unexpected(prop.variance.loc.start);\n }\n\n delete prop.variance;\n let typeParameters;\n\n if (this.match(47) && !isAccessor) {\n typeParameters = this.flowParseTypeParameterDeclaration();\n if (!this.match(10)) this.unexpected();\n }\n\n super.parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors);\n\n if (typeParameters) {\n (prop.value || prop).typeParameters = typeParameters;\n }\n }\n\n parseAssignableListItemTypes(param) {\n if (this.eat(17)) {\n if (param.type !== \"Identifier\") {\n this.raise(FlowErrors.PatternIsOptional, {\n node: param\n });\n }\n\n if (this.isThisParam(param)) {\n this.raise(FlowErrors.ThisParamMayNotBeOptional, {\n node: param\n });\n }\n\n param.optional = true;\n }\n\n if (this.match(14)) {\n param.typeAnnotation = this.flowParseTypeAnnotation();\n } else if (this.isThisParam(param)) {\n this.raise(FlowErrors.ThisParamAnnotationRequired, {\n node: param\n });\n }\n\n if (this.match(29) && this.isThisParam(param)) {\n this.raise(FlowErrors.ThisParamNoDefault, {\n node: param\n });\n }\n\n this.resetEndLocation(param);\n return param;\n }\n\n parseMaybeDefault(startPos, startLoc, left) {\n const node = super.parseMaybeDefault(startPos, startLoc, left);\n\n if (node.type === \"AssignmentPattern\" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) {\n this.raise(FlowErrors.TypeBeforeInitializer, {\n node: node.typeAnnotation\n });\n }\n\n return node;\n }\n\n shouldParseDefaultImport(node) {\n if (!hasTypeImportKind(node)) {\n return super.shouldParseDefaultImport(node);\n }\n\n return isMaybeDefaultImport(this.state.type);\n }\n\n parseImportSpecifierLocal(node, specifier, type, contextDescription) {\n specifier.local = hasTypeImportKind(node) ? this.flowParseRestrictedIdentifier(true, true) : this.parseIdentifier();\n this.checkLVal(specifier.local, contextDescription, BIND_LEXICAL);\n node.specifiers.push(this.finishNode(specifier, type));\n }\n\n maybeParseDefaultImportSpecifier(node) {\n node.importKind = \"value\";\n let kind = null;\n\n if (this.match(87)) {\n kind = \"typeof\";\n } else if (this.isContextual(126)) {\n kind = \"type\";\n }\n\n if (kind) {\n const lh = this.lookahead();\n const {\n type\n } = lh;\n\n if (kind === \"type\" && type === 55) {\n this.unexpected(null, lh.type);\n }\n\n if (isMaybeDefaultImport(type) || type === 5 || type === 55) {\n this.next();\n node.importKind = kind;\n }\n }\n\n return super.maybeParseDefaultImportSpecifier(node);\n }\n\n parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly) {\n const firstIdent = specifier.imported;\n let specifierTypeKind = null;\n\n if (firstIdent.type === \"Identifier\") {\n if (firstIdent.name === \"type\") {\n specifierTypeKind = \"type\";\n } else if (firstIdent.name === \"typeof\") {\n specifierTypeKind = \"typeof\";\n }\n }\n\n let isBinding = false;\n\n if (this.isContextual(93) && !this.isLookaheadContextual(\"as\")) {\n const as_ident = this.parseIdentifier(true);\n\n if (specifierTypeKind !== null && !tokenIsKeywordOrIdentifier(this.state.type)) {\n specifier.imported = as_ident;\n specifier.importKind = specifierTypeKind;\n specifier.local = cloneIdentifier(as_ident);\n } else {\n specifier.imported = firstIdent;\n specifier.importKind = null;\n specifier.local = this.parseIdentifier();\n }\n } else {\n if (specifierTypeKind !== null && tokenIsKeywordOrIdentifier(this.state.type)) {\n specifier.imported = this.parseIdentifier(true);\n specifier.importKind = specifierTypeKind;\n } else {\n if (importedIsString) {\n throw this.raise(ErrorMessages.ImportBindingIsString, {\n node: specifier\n }, firstIdent.value);\n }\n\n specifier.imported = firstIdent;\n specifier.importKind = null;\n }\n\n if (this.eatContextual(93)) {\n specifier.local = this.parseIdentifier();\n } else {\n isBinding = true;\n specifier.local = cloneIdentifier(specifier.imported);\n }\n }\n\n const specifierIsTypeImport = hasTypeImportKind(specifier);\n\n if (isInTypeOnlyImport && specifierIsTypeImport) {\n this.raise(FlowErrors.ImportTypeShorthandOnlyInPureImport, {\n node: specifier\n });\n }\n\n if (isInTypeOnlyImport || specifierIsTypeImport) {\n this.checkReservedType(specifier.local.name, specifier.local.loc.start, true);\n }\n\n if (isBinding && !isInTypeOnlyImport && !specifierIsTypeImport) {\n this.checkReservedWord(specifier.local.name, specifier.loc.start, true, true);\n }\n\n this.checkLVal(specifier.local, \"import specifier\", BIND_LEXICAL);\n return this.finishNode(specifier, \"ImportSpecifier\");\n }\n\n parseBindingAtom() {\n switch (this.state.type) {\n case 78:\n return this.parseIdentifier(true);\n\n default:\n return super.parseBindingAtom();\n }\n }\n\n parseFunctionParams(node, allowModifiers) {\n const kind = node.kind;\n\n if (kind !== \"get\" && kind !== \"set\" && this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n\n super.parseFunctionParams(node, allowModifiers);\n }\n\n parseVarId(decl, kind) {\n super.parseVarId(decl, kind);\n\n if (this.match(14)) {\n decl.id.typeAnnotation = this.flowParseTypeAnnotation();\n this.resetEndLocation(decl.id);\n }\n }\n\n parseAsyncArrowFromCallExpression(node, call) {\n if (this.match(14)) {\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = true;\n node.returnType = this.flowParseTypeAnnotation();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n }\n\n return super.parseAsyncArrowFromCallExpression(node, call);\n }\n\n shouldParseAsyncArrow() {\n return this.match(14) || super.shouldParseAsyncArrow();\n }\n\n parseMaybeAssign(refExpressionErrors, afterLeftParse) {\n var _jsx;\n\n let state = null;\n let jsx;\n\n if (this.hasPlugin(\"jsx\") && (this.match(138) || this.match(47))) {\n state = this.state.clone();\n jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state);\n if (!jsx.error) return jsx.node;\n const {\n context\n } = this.state;\n const currentContext = context[context.length - 1];\n\n if (currentContext === types.j_oTag || currentContext === types.j_expr) {\n context.pop();\n }\n }\n\n if ((_jsx = jsx) != null && _jsx.error || this.match(47)) {\n var _jsx2, _jsx3;\n\n state = state || this.state.clone();\n let typeParameters;\n const arrow = this.tryParse(abort => {\n var _arrowExpression$extr;\n\n typeParameters = this.flowParseTypeParameterDeclaration();\n const arrowExpression = this.forwardNoArrowParamsConversionAt(typeParameters, () => {\n const result = super.parseMaybeAssign(refExpressionErrors, afterLeftParse);\n this.resetStartLocationFromNode(result, typeParameters);\n return result;\n });\n if ((_arrowExpression$extr = arrowExpression.extra) != null && _arrowExpression$extr.parenthesized) abort();\n const expr = this.maybeUnwrapTypeCastExpression(arrowExpression);\n if (expr.type !== \"ArrowFunctionExpression\") abort();\n expr.typeParameters = typeParameters;\n this.resetStartLocationFromNode(expr, typeParameters);\n return arrowExpression;\n }, state);\n let arrowExpression = null;\n\n if (arrow.node && this.maybeUnwrapTypeCastExpression(arrow.node).type === \"ArrowFunctionExpression\") {\n if (!arrow.error && !arrow.aborted) {\n if (arrow.node.async) {\n this.raise(FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction, {\n node: typeParameters\n });\n }\n\n return arrow.node;\n }\n\n arrowExpression = arrow.node;\n }\n\n if ((_jsx2 = jsx) != null && _jsx2.node) {\n this.state = jsx.failState;\n return jsx.node;\n }\n\n if (arrowExpression) {\n this.state = arrow.failState;\n return arrowExpression;\n }\n\n if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error;\n if (arrow.thrown) throw arrow.error;\n throw this.raise(FlowErrors.UnexpectedTokenAfterTypeParameter, {\n node: typeParameters\n });\n }\n\n return super.parseMaybeAssign(refExpressionErrors, afterLeftParse);\n }\n\n parseArrow(node) {\n if (this.match(14)) {\n const result = this.tryParse(() => {\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = true;\n const typeNode = this.startNode();\n [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n if (this.canInsertSemicolon()) this.unexpected();\n if (!this.match(19)) this.unexpected();\n return typeNode;\n });\n if (result.thrown) return null;\n if (result.error) this.state = result.failState;\n node.returnType = result.node.typeAnnotation ? this.finishNode(result.node, \"TypeAnnotation\") : null;\n }\n\n return super.parseArrow(node);\n }\n\n shouldParseArrow(params) {\n return this.match(14) || super.shouldParseArrow(params);\n }\n\n setArrowFunctionParameters(node, params) {\n if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) {\n node.params = params;\n } else {\n super.setArrowFunctionParameters(node, params);\n }\n }\n\n checkParams(node, allowDuplicates, isArrowFunction) {\n if (isArrowFunction && this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) {\n return;\n }\n\n for (let i = 0; i < node.params.length; i++) {\n if (this.isThisParam(node.params[i]) && i > 0) {\n this.raise(FlowErrors.ThisParamMustBeFirst, {\n node: node.params[i]\n });\n }\n }\n\n return super.checkParams(...arguments);\n }\n\n parseParenAndDistinguishExpression(canBeArrow) {\n return super.parseParenAndDistinguishExpression(canBeArrow && this.state.noArrowAt.indexOf(this.state.start) === -1);\n }\n\n parseSubscripts(base, startPos, startLoc, noCalls) {\n if (base.type === \"Identifier\" && base.name === \"async\" && this.state.noArrowAt.indexOf(startPos) !== -1) {\n this.next();\n const node = this.startNodeAt(startPos, startLoc);\n node.callee = base;\n node.arguments = this.parseCallExpressionArguments(11, false);\n base = this.finishNode(node, \"CallExpression\");\n } else if (base.type === \"Identifier\" && base.name === \"async\" && this.match(47)) {\n const state = this.state.clone();\n const arrow = this.tryParse(abort => this.parseAsyncArrowWithTypeParameters(startPos, startLoc) || abort(), state);\n if (!arrow.error && !arrow.aborted) return arrow.node;\n const result = this.tryParse(() => super.parseSubscripts(base, startPos, startLoc, noCalls), state);\n if (result.node && !result.error) return result.node;\n\n if (arrow.node) {\n this.state = arrow.failState;\n return arrow.node;\n }\n\n if (result.node) {\n this.state = result.failState;\n return result.node;\n }\n\n throw arrow.error || result.error;\n }\n\n return super.parseSubscripts(base, startPos, startLoc, noCalls);\n }\n\n parseSubscript(base, startPos, startLoc, noCalls, subscriptState) {\n if (this.match(18) && this.isLookaheadToken_lt()) {\n subscriptState.optionalChainMember = true;\n\n if (noCalls) {\n subscriptState.stop = true;\n return base;\n }\n\n this.next();\n const node = this.startNodeAt(startPos, startLoc);\n node.callee = base;\n node.typeArguments = this.flowParseTypeParameterInstantiation();\n this.expect(10);\n node.arguments = this.parseCallExpressionArguments(11, false);\n node.optional = true;\n return this.finishCallExpression(node, true);\n } else if (!noCalls && this.shouldParseTypes() && this.match(47)) {\n const node = this.startNodeAt(startPos, startLoc);\n node.callee = base;\n const result = this.tryParse(() => {\n node.typeArguments = this.flowParseTypeParameterInstantiationCallOrNew();\n this.expect(10);\n node.arguments = this.parseCallExpressionArguments(11, false);\n if (subscriptState.optionalChainMember) node.optional = false;\n return this.finishCallExpression(node, subscriptState.optionalChainMember);\n });\n\n if (result.node) {\n if (result.error) this.state = result.failState;\n return result.node;\n }\n }\n\n return super.parseSubscript(base, startPos, startLoc, noCalls, subscriptState);\n }\n\n parseNewArguments(node) {\n let targs = null;\n\n if (this.shouldParseTypes() && this.match(47)) {\n targs = this.tryParse(() => this.flowParseTypeParameterInstantiationCallOrNew()).node;\n }\n\n node.typeArguments = targs;\n super.parseNewArguments(node);\n }\n\n parseAsyncArrowWithTypeParameters(startPos, startLoc) {\n const node = this.startNodeAt(startPos, startLoc);\n this.parseFunctionParams(node);\n if (!this.parseArrow(node)) return;\n return this.parseArrowExpression(node, undefined, true);\n }\n\n readToken_mult_modulo(code) {\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (code === 42 && next === 47 && this.state.hasFlowComment) {\n this.state.hasFlowComment = false;\n this.state.pos += 2;\n this.nextToken();\n return;\n }\n\n super.readToken_mult_modulo(code);\n }\n\n readToken_pipe_amp(code) {\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (code === 124 && next === 125) {\n this.finishOp(9, 2);\n return;\n }\n\n super.readToken_pipe_amp(code);\n }\n\n parseTopLevel(file, program) {\n const fileNode = super.parseTopLevel(file, program);\n\n if (this.state.hasFlowComment) {\n this.raise(FlowErrors.UnterminatedFlowComment, {\n at: this.state.curPosition()\n });\n }\n\n return fileNode;\n }\n\n skipBlockComment() {\n if (this.hasPlugin(\"flowComments\") && this.skipFlowComment()) {\n if (this.state.hasFlowComment) {\n throw this.raise(FlowErrors.NestedFlowComment, {\n at: this.state.startLoc\n });\n }\n\n this.hasFlowCommentCompletion();\n this.state.pos += this.skipFlowComment();\n this.state.hasFlowComment = true;\n return;\n }\n\n if (this.state.hasFlowComment) {\n const end = this.input.indexOf(\"*-/\", this.state.pos + 2);\n\n if (end === -1) {\n throw this.raise(ErrorMessages.UnterminatedComment, {\n at: this.state.curPosition()\n });\n }\n\n this.state.pos = end + 2 + 3;\n return;\n }\n\n return super.skipBlockComment();\n }\n\n skipFlowComment() {\n const {\n pos\n } = this.state;\n let shiftToFirstNonWhiteSpace = 2;\n\n while ([32, 9].includes(this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace))) {\n shiftToFirstNonWhiteSpace++;\n }\n\n const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos);\n const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1);\n\n if (ch2 === 58 && ch3 === 58) {\n return shiftToFirstNonWhiteSpace + 2;\n }\n\n if (this.input.slice(shiftToFirstNonWhiteSpace + pos, shiftToFirstNonWhiteSpace + pos + 12) === \"flow-include\") {\n return shiftToFirstNonWhiteSpace + 12;\n }\n\n if (ch2 === 58 && ch3 !== 58) {\n return shiftToFirstNonWhiteSpace;\n }\n\n return false;\n }\n\n hasFlowCommentCompletion() {\n const end = this.input.indexOf(\"*/\", this.state.pos);\n\n if (end === -1) {\n throw this.raise(ErrorMessages.UnterminatedComment, {\n at: this.state.curPosition()\n });\n }\n }\n\n flowEnumErrorBooleanMemberNotInitialized(loc, {\n enumName,\n memberName\n }) {\n this.raise(FlowErrors.EnumBooleanMemberNotInitialized, {\n at: loc\n }, memberName, enumName);\n }\n\n flowEnumErrorInvalidExplicitType(loc, {\n enumName,\n suppliedType\n }) {\n return this.raise(suppliedType === null ? FlowErrors.EnumInvalidExplicitTypeUnknownSupplied : FlowErrors.EnumInvalidExplicitType, {\n at: loc\n }, enumName, suppliedType);\n }\n\n flowEnumErrorInvalidMemberInitializer(loc, {\n enumName,\n explicitType,\n memberName\n }) {\n return this.raise(explicitType === \"boolean\" || explicitType === \"number\" || explicitType === \"string\" ? FlowErrors.EnumInvalidMemberInitializerPrimaryType : explicitType === \"symbol\" ? FlowErrors.EnumInvalidMemberInitializerSymbolType : FlowErrors.EnumInvalidMemberInitializerUnknownType, {\n at: loc\n }, enumName, memberName, explicitType);\n }\n\n flowEnumErrorNumberMemberNotInitialized(loc, {\n enumName,\n memberName\n }) {\n this.raise(FlowErrors.EnumNumberMemberNotInitialized, {\n at: loc\n }, enumName, memberName);\n }\n\n flowEnumErrorStringMemberInconsistentlyInitailized(node, {\n enumName\n }) {\n this.raise(FlowErrors.EnumStringMemberInconsistentlyInitailized, {\n node\n }, enumName);\n }\n\n flowEnumMemberInit() {\n const startLoc = this.state.startLoc;\n\n const endOfInit = () => this.match(12) || this.match(8);\n\n switch (this.state.type) {\n case 130:\n {\n const literal = this.parseNumericLiteral(this.state.value);\n\n if (endOfInit()) {\n return {\n type: \"number\",\n loc: literal.loc.start,\n value: literal\n };\n }\n\n return {\n type: \"invalid\",\n loc: startLoc\n };\n }\n\n case 129:\n {\n const literal = this.parseStringLiteral(this.state.value);\n\n if (endOfInit()) {\n return {\n type: \"string\",\n loc: literal.loc.start,\n value: literal\n };\n }\n\n return {\n type: \"invalid\",\n loc: startLoc\n };\n }\n\n case 85:\n case 86:\n {\n const literal = this.parseBooleanLiteral(this.match(85));\n\n if (endOfInit()) {\n return {\n type: \"boolean\",\n loc: literal.loc.start,\n value: literal\n };\n }\n\n return {\n type: \"invalid\",\n loc: startLoc\n };\n }\n\n default:\n return {\n type: \"invalid\",\n loc: startLoc\n };\n }\n }\n\n flowEnumMemberRaw() {\n const loc = this.state.startLoc;\n const id = this.parseIdentifier(true);\n const init = this.eat(29) ? this.flowEnumMemberInit() : {\n type: \"none\",\n loc\n };\n return {\n id,\n init\n };\n }\n\n flowEnumCheckExplicitTypeMismatch(loc, context, expectedType) {\n const {\n explicitType\n } = context;\n\n if (explicitType === null) {\n return;\n }\n\n if (explicitType !== expectedType) {\n this.flowEnumErrorInvalidMemberInitializer(loc, context);\n }\n }\n\n flowEnumMembers({\n enumName,\n explicitType\n }) {\n const seenNames = new Set();\n const members = {\n booleanMembers: [],\n numberMembers: [],\n stringMembers: [],\n defaultedMembers: []\n };\n let hasUnknownMembers = false;\n\n while (!this.match(8)) {\n if (this.eat(21)) {\n hasUnknownMembers = true;\n break;\n }\n\n const memberNode = this.startNode();\n const {\n id,\n init\n } = this.flowEnumMemberRaw();\n const memberName = id.name;\n\n if (memberName === \"\") {\n continue;\n }\n\n if (/^[a-z]/.test(memberName)) {\n this.raise(FlowErrors.EnumInvalidMemberName, {\n node: id\n }, memberName, memberName[0].toUpperCase() + memberName.slice(1), enumName);\n }\n\n if (seenNames.has(memberName)) {\n this.raise(FlowErrors.EnumDuplicateMemberName, {\n node: id\n }, memberName, enumName);\n }\n\n seenNames.add(memberName);\n const context = {\n enumName,\n explicitType,\n memberName\n };\n memberNode.id = id;\n\n switch (init.type) {\n case \"boolean\":\n {\n this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"boolean\");\n memberNode.init = init.value;\n members.booleanMembers.push(this.finishNode(memberNode, \"EnumBooleanMember\"));\n break;\n }\n\n case \"number\":\n {\n this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"number\");\n memberNode.init = init.value;\n members.numberMembers.push(this.finishNode(memberNode, \"EnumNumberMember\"));\n break;\n }\n\n case \"string\":\n {\n this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"string\");\n memberNode.init = init.value;\n members.stringMembers.push(this.finishNode(memberNode, \"EnumStringMember\"));\n break;\n }\n\n case \"invalid\":\n {\n throw this.flowEnumErrorInvalidMemberInitializer(init.loc, context);\n }\n\n case \"none\":\n {\n switch (explicitType) {\n case \"boolean\":\n this.flowEnumErrorBooleanMemberNotInitialized(init.loc, context);\n break;\n\n case \"number\":\n this.flowEnumErrorNumberMemberNotInitialized(init.loc, context);\n break;\n\n default:\n members.defaultedMembers.push(this.finishNode(memberNode, \"EnumDefaultedMember\"));\n }\n }\n }\n\n if (!this.match(8)) {\n this.expect(12);\n }\n }\n\n return {\n members,\n hasUnknownMembers\n };\n }\n\n flowEnumStringMembers(initializedMembers, defaultedMembers, {\n enumName\n }) {\n if (initializedMembers.length === 0) {\n return defaultedMembers;\n } else if (defaultedMembers.length === 0) {\n return initializedMembers;\n } else if (defaultedMembers.length > initializedMembers.length) {\n for (const member of initializedMembers) {\n this.flowEnumErrorStringMemberInconsistentlyInitailized(member, {\n enumName\n });\n }\n\n return defaultedMembers;\n } else {\n for (const member of defaultedMembers) {\n this.flowEnumErrorStringMemberInconsistentlyInitailized(member, {\n enumName\n });\n }\n\n return initializedMembers;\n }\n }\n\n flowEnumParseExplicitType({\n enumName\n }) {\n if (this.eatContextual(101)) {\n if (!tokenIsIdentifier(this.state.type)) {\n throw this.flowEnumErrorInvalidExplicitType(this.state.startLoc, {\n enumName,\n suppliedType: null\n });\n }\n\n const {\n value\n } = this.state;\n this.next();\n\n if (value !== \"boolean\" && value !== \"number\" && value !== \"string\" && value !== \"symbol\") {\n this.flowEnumErrorInvalidExplicitType(this.state.startLoc, {\n enumName,\n suppliedType: value\n });\n }\n\n return value;\n }\n\n return null;\n }\n\n flowEnumBody(node, id) {\n const enumName = id.name;\n const nameLoc = id.loc.start;\n const explicitType = this.flowEnumParseExplicitType({\n enumName\n });\n this.expect(5);\n const {\n members,\n hasUnknownMembers\n } = this.flowEnumMembers({\n enumName,\n explicitType\n });\n node.hasUnknownMembers = hasUnknownMembers;\n\n switch (explicitType) {\n case \"boolean\":\n node.explicitType = true;\n node.members = members.booleanMembers;\n this.expect(8);\n return this.finishNode(node, \"EnumBooleanBody\");\n\n case \"number\":\n node.explicitType = true;\n node.members = members.numberMembers;\n this.expect(8);\n return this.finishNode(node, \"EnumNumberBody\");\n\n case \"string\":\n node.explicitType = true;\n node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, {\n enumName\n });\n this.expect(8);\n return this.finishNode(node, \"EnumStringBody\");\n\n case \"symbol\":\n node.members = members.defaultedMembers;\n this.expect(8);\n return this.finishNode(node, \"EnumSymbolBody\");\n\n default:\n {\n const empty = () => {\n node.members = [];\n this.expect(8);\n return this.finishNode(node, \"EnumStringBody\");\n };\n\n node.explicitType = false;\n const boolsLen = members.booleanMembers.length;\n const numsLen = members.numberMembers.length;\n const strsLen = members.stringMembers.length;\n const defaultedLen = members.defaultedMembers.length;\n\n if (!boolsLen && !numsLen && !strsLen && !defaultedLen) {\n return empty();\n } else if (!boolsLen && !numsLen) {\n node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, {\n enumName\n });\n this.expect(8);\n return this.finishNode(node, \"EnumStringBody\");\n } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) {\n for (const member of members.defaultedMembers) {\n this.flowEnumErrorBooleanMemberNotInitialized(member.loc.start, {\n enumName,\n memberName: member.id.name\n });\n }\n\n node.members = members.booleanMembers;\n this.expect(8);\n return this.finishNode(node, \"EnumBooleanBody\");\n } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) {\n for (const member of members.defaultedMembers) {\n this.flowEnumErrorNumberMemberNotInitialized(member.loc.start, {\n enumName,\n memberName: member.id.name\n });\n }\n\n node.members = members.numberMembers;\n this.expect(8);\n return this.finishNode(node, \"EnumNumberBody\");\n } else {\n this.raise(FlowErrors.EnumInconsistentMemberValues, {\n at: nameLoc\n }, enumName);\n return empty();\n }\n }\n }\n }\n\n flowParseEnumDeclaration(node) {\n const id = this.parseIdentifier();\n node.id = id;\n node.body = this.flowEnumBody(this.startNode(), id);\n return this.finishNode(node, \"EnumDeclaration\");\n }\n\n isLookaheadToken_lt() {\n const next = this.nextTokenStart();\n\n if (this.input.charCodeAt(next) === 60) {\n const afterNext = this.input.charCodeAt(next + 1);\n return afterNext !== 60 && afterNext !== 61;\n }\n\n return false;\n }\n\n maybeUnwrapTypeCastExpression(node) {\n return node.type === \"TypeCastExpression\" ? node.expression : node;\n }\n\n});\n\nconst entities = {\n quot: \"\\u0022\",\n amp: \"&\",\n apos: \"\\u0027\",\n lt: \"<\",\n gt: \">\",\n nbsp: \"\\u00A0\",\n iexcl: \"\\u00A1\",\n cent: \"\\u00A2\",\n pound: \"\\u00A3\",\n curren: \"\\u00A4\",\n yen: \"\\u00A5\",\n brvbar: \"\\u00A6\",\n sect: \"\\u00A7\",\n uml: \"\\u00A8\",\n copy: \"\\u00A9\",\n ordf: \"\\u00AA\",\n laquo: \"\\u00AB\",\n not: \"\\u00AC\",\n shy: \"\\u00AD\",\n reg: \"\\u00AE\",\n macr: \"\\u00AF\",\n deg: \"\\u00B0\",\n plusmn: \"\\u00B1\",\n sup2: \"\\u00B2\",\n sup3: \"\\u00B3\",\n acute: \"\\u00B4\",\n micro: \"\\u00B5\",\n para: \"\\u00B6\",\n middot: \"\\u00B7\",\n cedil: \"\\u00B8\",\n sup1: \"\\u00B9\",\n ordm: \"\\u00BA\",\n raquo: \"\\u00BB\",\n frac14: \"\\u00BC\",\n frac12: \"\\u00BD\",\n frac34: \"\\u00BE\",\n iquest: \"\\u00BF\",\n Agrave: \"\\u00C0\",\n Aacute: \"\\u00C1\",\n Acirc: \"\\u00C2\",\n Atilde: \"\\u00C3\",\n Auml: \"\\u00C4\",\n Aring: \"\\u00C5\",\n AElig: \"\\u00C6\",\n Ccedil: \"\\u00C7\",\n Egrave: \"\\u00C8\",\n Eacute: \"\\u00C9\",\n Ecirc: \"\\u00CA\",\n Euml: \"\\u00CB\",\n Igrave: \"\\u00CC\",\n Iacute: \"\\u00CD\",\n Icirc: \"\\u00CE\",\n Iuml: \"\\u00CF\",\n ETH: \"\\u00D0\",\n Ntilde: \"\\u00D1\",\n Ograve: \"\\u00D2\",\n Oacute: \"\\u00D3\",\n Ocirc: \"\\u00D4\",\n Otilde: \"\\u00D5\",\n Ouml: \"\\u00D6\",\n times: \"\\u00D7\",\n Oslash: \"\\u00D8\",\n Ugrave: \"\\u00D9\",\n Uacute: \"\\u00DA\",\n Ucirc: \"\\u00DB\",\n Uuml: \"\\u00DC\",\n Yacute: \"\\u00DD\",\n THORN: \"\\u00DE\",\n szlig: \"\\u00DF\",\n agrave: \"\\u00E0\",\n aacute: \"\\u00E1\",\n acirc: \"\\u00E2\",\n atilde: \"\\u00E3\",\n auml: \"\\u00E4\",\n aring: \"\\u00E5\",\n aelig: \"\\u00E6\",\n ccedil: \"\\u00E7\",\n egrave: \"\\u00E8\",\n eacute: \"\\u00E9\",\n ecirc: \"\\u00EA\",\n euml: \"\\u00EB\",\n igrave: \"\\u00EC\",\n iacute: \"\\u00ED\",\n icirc: \"\\u00EE\",\n iuml: \"\\u00EF\",\n eth: \"\\u00F0\",\n ntilde: \"\\u00F1\",\n ograve: \"\\u00F2\",\n oacute: \"\\u00F3\",\n ocirc: \"\\u00F4\",\n otilde: \"\\u00F5\",\n ouml: \"\\u00F6\",\n divide: \"\\u00F7\",\n oslash: \"\\u00F8\",\n ugrave: \"\\u00F9\",\n uacute: \"\\u00FA\",\n ucirc: \"\\u00FB\",\n uuml: \"\\u00FC\",\n yacute: \"\\u00FD\",\n thorn: \"\\u00FE\",\n yuml: \"\\u00FF\",\n OElig: \"\\u0152\",\n oelig: \"\\u0153\",\n Scaron: \"\\u0160\",\n scaron: \"\\u0161\",\n Yuml: \"\\u0178\",\n fnof: \"\\u0192\",\n circ: \"\\u02C6\",\n tilde: \"\\u02DC\",\n Alpha: \"\\u0391\",\n Beta: \"\\u0392\",\n Gamma: \"\\u0393\",\n Delta: \"\\u0394\",\n Epsilon: \"\\u0395\",\n Zeta: \"\\u0396\",\n Eta: \"\\u0397\",\n Theta: \"\\u0398\",\n Iota: \"\\u0399\",\n Kappa: \"\\u039A\",\n Lambda: \"\\u039B\",\n Mu: \"\\u039C\",\n Nu: \"\\u039D\",\n Xi: \"\\u039E\",\n Omicron: \"\\u039F\",\n Pi: \"\\u03A0\",\n Rho: \"\\u03A1\",\n Sigma: \"\\u03A3\",\n Tau: \"\\u03A4\",\n Upsilon: \"\\u03A5\",\n Phi: \"\\u03A6\",\n Chi: \"\\u03A7\",\n Psi: \"\\u03A8\",\n Omega: \"\\u03A9\",\n alpha: \"\\u03B1\",\n beta: \"\\u03B2\",\n gamma: \"\\u03B3\",\n delta: \"\\u03B4\",\n epsilon: \"\\u03B5\",\n zeta: \"\\u03B6\",\n eta: \"\\u03B7\",\n theta: \"\\u03B8\",\n iota: \"\\u03B9\",\n kappa: \"\\u03BA\",\n lambda: \"\\u03BB\",\n mu: \"\\u03BC\",\n nu: \"\\u03BD\",\n xi: \"\\u03BE\",\n omicron: \"\\u03BF\",\n pi: \"\\u03C0\",\n rho: \"\\u03C1\",\n sigmaf: \"\\u03C2\",\n sigma: \"\\u03C3\",\n tau: \"\\u03C4\",\n upsilon: \"\\u03C5\",\n phi: \"\\u03C6\",\n chi: \"\\u03C7\",\n psi: \"\\u03C8\",\n omega: \"\\u03C9\",\n thetasym: \"\\u03D1\",\n upsih: \"\\u03D2\",\n piv: \"\\u03D6\",\n ensp: \"\\u2002\",\n emsp: \"\\u2003\",\n thinsp: \"\\u2009\",\n zwnj: \"\\u200C\",\n zwj: \"\\u200D\",\n lrm: \"\\u200E\",\n rlm: \"\\u200F\",\n ndash: \"\\u2013\",\n mdash: \"\\u2014\",\n lsquo: \"\\u2018\",\n rsquo: \"\\u2019\",\n sbquo: \"\\u201A\",\n ldquo: \"\\u201C\",\n rdquo: \"\\u201D\",\n bdquo: \"\\u201E\",\n dagger: \"\\u2020\",\n Dagger: \"\\u2021\",\n bull: \"\\u2022\",\n hellip: \"\\u2026\",\n permil: \"\\u2030\",\n prime: \"\\u2032\",\n Prime: \"\\u2033\",\n lsaquo: \"\\u2039\",\n rsaquo: \"\\u203A\",\n oline: \"\\u203E\",\n frasl: \"\\u2044\",\n euro: \"\\u20AC\",\n image: \"\\u2111\",\n weierp: \"\\u2118\",\n real: \"\\u211C\",\n trade: \"\\u2122\",\n alefsym: \"\\u2135\",\n larr: \"\\u2190\",\n uarr: \"\\u2191\",\n rarr: \"\\u2192\",\n darr: \"\\u2193\",\n harr: \"\\u2194\",\n crarr: \"\\u21B5\",\n lArr: \"\\u21D0\",\n uArr: \"\\u21D1\",\n rArr: \"\\u21D2\",\n dArr: \"\\u21D3\",\n hArr: \"\\u21D4\",\n forall: \"\\u2200\",\n part: \"\\u2202\",\n exist: \"\\u2203\",\n empty: \"\\u2205\",\n nabla: \"\\u2207\",\n isin: \"\\u2208\",\n notin: \"\\u2209\",\n ni: \"\\u220B\",\n prod: \"\\u220F\",\n sum: \"\\u2211\",\n minus: \"\\u2212\",\n lowast: \"\\u2217\",\n radic: \"\\u221A\",\n prop: \"\\u221D\",\n infin: \"\\u221E\",\n ang: \"\\u2220\",\n and: \"\\u2227\",\n or: \"\\u2228\",\n cap: \"\\u2229\",\n cup: \"\\u222A\",\n int: \"\\u222B\",\n there4: \"\\u2234\",\n sim: \"\\u223C\",\n cong: \"\\u2245\",\n asymp: \"\\u2248\",\n ne: \"\\u2260\",\n equiv: \"\\u2261\",\n le: \"\\u2264\",\n ge: \"\\u2265\",\n sub: \"\\u2282\",\n sup: \"\\u2283\",\n nsub: \"\\u2284\",\n sube: \"\\u2286\",\n supe: \"\\u2287\",\n oplus: \"\\u2295\",\n otimes: \"\\u2297\",\n perp: \"\\u22A5\",\n sdot: \"\\u22C5\",\n lceil: \"\\u2308\",\n rceil: \"\\u2309\",\n lfloor: \"\\u230A\",\n rfloor: \"\\u230B\",\n lang: \"\\u2329\",\n rang: \"\\u232A\",\n loz: \"\\u25CA\",\n spades: \"\\u2660\",\n clubs: \"\\u2663\",\n hearts: \"\\u2665\",\n diams: \"\\u2666\"\n};\n\nconst HEX_NUMBER = /^[\\da-fA-F]+$/;\nconst DECIMAL_NUMBER = /^\\d+$/;\nconst JsxErrors = makeErrorTemplates({\n AttributeIsEmpty: \"JSX attributes must only be assigned a non-empty expression.\",\n MissingClosingTagElement: \"Expected corresponding JSX closing tag for <%0>.\",\n MissingClosingTagFragment: \"Expected corresponding JSX closing tag for <>.\",\n UnexpectedSequenceExpression: \"Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?\",\n UnsupportedJsxValue: \"JSX value should be either an expression or a quoted JSX text.\",\n UnterminatedJsxContent: \"Unterminated JSX contents.\",\n UnwrappedAdjacentJSXElements: \"Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...?\"\n}, ErrorCodes.SyntaxError, \"jsx\");\n\nfunction isFragment(object) {\n return object ? object.type === \"JSXOpeningFragment\" || object.type === \"JSXClosingFragment\" : false;\n}\n\nfunction getQualifiedJSXName(object) {\n if (object.type === \"JSXIdentifier\") {\n return object.name;\n }\n\n if (object.type === \"JSXNamespacedName\") {\n return object.namespace.name + \":\" + object.name.name;\n }\n\n if (object.type === \"JSXMemberExpression\") {\n return getQualifiedJSXName(object.object) + \".\" + getQualifiedJSXName(object.property);\n }\n\n throw new Error(\"Node had unexpected type: \" + object.type);\n}\n\nvar jsx = (superClass => class extends superClass {\n jsxReadToken() {\n let out = \"\";\n let chunkStart = this.state.pos;\n\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(JsxErrors.UnterminatedJsxContent, {\n at: this.state.startLoc\n });\n }\n\n const ch = this.input.charCodeAt(this.state.pos);\n\n switch (ch) {\n case 60:\n case 123:\n if (this.state.pos === this.state.start) {\n if (ch === 60 && this.state.canStartJSXElement) {\n ++this.state.pos;\n return this.finishToken(138);\n }\n\n return super.getTokenFromCode(ch);\n }\n\n out += this.input.slice(chunkStart, this.state.pos);\n return this.finishToken(137, out);\n\n case 38:\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadEntity();\n chunkStart = this.state.pos;\n break;\n\n case 62:\n case 125:\n\n default:\n if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadNewLine(true);\n chunkStart = this.state.pos;\n } else {\n ++this.state.pos;\n }\n\n }\n }\n }\n\n jsxReadNewLine(normalizeCRLF) {\n const ch = this.input.charCodeAt(this.state.pos);\n let out;\n ++this.state.pos;\n\n if (ch === 13 && this.input.charCodeAt(this.state.pos) === 10) {\n ++this.state.pos;\n out = normalizeCRLF ? \"\\n\" : \"\\r\\n\";\n } else {\n out = String.fromCharCode(ch);\n }\n\n ++this.state.curLine;\n this.state.lineStart = this.state.pos;\n return out;\n }\n\n jsxReadString(quote) {\n let out = \"\";\n let chunkStart = ++this.state.pos;\n\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(ErrorMessages.UnterminatedString, {\n at: this.state.startLoc\n });\n }\n\n const ch = this.input.charCodeAt(this.state.pos);\n if (ch === quote) break;\n\n if (ch === 38) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadEntity();\n chunkStart = this.state.pos;\n } else if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadNewLine(false);\n chunkStart = this.state.pos;\n } else {\n ++this.state.pos;\n }\n }\n\n out += this.input.slice(chunkStart, this.state.pos++);\n return this.finishToken(129, out);\n }\n\n jsxReadEntity() {\n let str = \"\";\n let count = 0;\n let entity;\n let ch = this.input[this.state.pos];\n const startPos = ++this.state.pos;\n\n while (this.state.pos < this.length && count++ < 10) {\n ch = this.input[this.state.pos++];\n\n if (ch === \";\") {\n if (str[0] === \"#\") {\n if (str[1] === \"x\") {\n str = str.substr(2);\n\n if (HEX_NUMBER.test(str)) {\n entity = String.fromCodePoint(parseInt(str, 16));\n }\n } else {\n str = str.substr(1);\n\n if (DECIMAL_NUMBER.test(str)) {\n entity = String.fromCodePoint(parseInt(str, 10));\n }\n }\n } else {\n entity = entities[str];\n }\n\n break;\n }\n\n str += ch;\n }\n\n if (!entity) {\n this.state.pos = startPos;\n return \"&\";\n }\n\n return entity;\n }\n\n jsxReadWord() {\n let ch;\n const start = this.state.pos;\n\n do {\n ch = this.input.charCodeAt(++this.state.pos);\n } while (isIdentifierChar(ch) || ch === 45);\n\n return this.finishToken(136, this.input.slice(start, this.state.pos));\n }\n\n jsxParseIdentifier() {\n const node = this.startNode();\n\n if (this.match(136)) {\n node.name = this.state.value;\n } else if (tokenIsKeyword(this.state.type)) {\n node.name = tokenLabelName(this.state.type);\n } else {\n this.unexpected();\n }\n\n this.next();\n return this.finishNode(node, \"JSXIdentifier\");\n }\n\n jsxParseNamespacedName() {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const name = this.jsxParseIdentifier();\n if (!this.eat(14)) return name;\n const node = this.startNodeAt(startPos, startLoc);\n node.namespace = name;\n node.name = this.jsxParseIdentifier();\n return this.finishNode(node, \"JSXNamespacedName\");\n }\n\n jsxParseElementName() {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n let node = this.jsxParseNamespacedName();\n\n if (node.type === \"JSXNamespacedName\") {\n return node;\n }\n\n while (this.eat(16)) {\n const newNode = this.startNodeAt(startPos, startLoc);\n newNode.object = node;\n newNode.property = this.jsxParseIdentifier();\n node = this.finishNode(newNode, \"JSXMemberExpression\");\n }\n\n return node;\n }\n\n jsxParseAttributeValue() {\n let node;\n\n switch (this.state.type) {\n case 5:\n node = this.startNode();\n this.setContext(types.brace);\n this.next();\n node = this.jsxParseExpressionContainer(node, types.j_oTag);\n\n if (node.expression.type === \"JSXEmptyExpression\") {\n this.raise(JsxErrors.AttributeIsEmpty, {\n node\n });\n }\n\n return node;\n\n case 138:\n case 129:\n return this.parseExprAtom();\n\n default:\n throw this.raise(JsxErrors.UnsupportedJsxValue, {\n at: this.state.startLoc\n });\n }\n }\n\n jsxParseEmptyExpression() {\n const node = this.startNodeAt(this.state.lastTokEndLoc.index, this.state.lastTokEndLoc);\n return this.finishNodeAt(node, \"JSXEmptyExpression\", this.state.startLoc);\n }\n\n jsxParseSpreadChild(node) {\n this.next();\n node.expression = this.parseExpression();\n this.setContext(types.j_oTag);\n this.expect(8);\n return this.finishNode(node, \"JSXSpreadChild\");\n }\n\n jsxParseExpressionContainer(node, previousContext) {\n if (this.match(8)) {\n node.expression = this.jsxParseEmptyExpression();\n } else {\n const expression = this.parseExpression();\n node.expression = expression;\n }\n\n this.setContext(previousContext);\n this.expect(8);\n return this.finishNode(node, \"JSXExpressionContainer\");\n }\n\n jsxParseAttribute() {\n const node = this.startNode();\n\n if (this.match(5)) {\n this.setContext(types.brace);\n this.next();\n this.expect(21);\n node.argument = this.parseMaybeAssignAllowIn();\n this.setContext(types.j_oTag);\n this.expect(8);\n return this.finishNode(node, \"JSXSpreadAttribute\");\n }\n\n node.name = this.jsxParseNamespacedName();\n node.value = this.eat(29) ? this.jsxParseAttributeValue() : null;\n return this.finishNode(node, \"JSXAttribute\");\n }\n\n jsxParseOpeningElementAt(startPos, startLoc) {\n const node = this.startNodeAt(startPos, startLoc);\n\n if (this.match(139)) {\n this.expect(139);\n return this.finishNode(node, \"JSXOpeningFragment\");\n }\n\n node.name = this.jsxParseElementName();\n return this.jsxParseOpeningElementAfterName(node);\n }\n\n jsxParseOpeningElementAfterName(node) {\n const attributes = [];\n\n while (!this.match(56) && !this.match(139)) {\n attributes.push(this.jsxParseAttribute());\n }\n\n node.attributes = attributes;\n node.selfClosing = this.eat(56);\n this.expect(139);\n return this.finishNode(node, \"JSXOpeningElement\");\n }\n\n jsxParseClosingElementAt(startPos, startLoc) {\n const node = this.startNodeAt(startPos, startLoc);\n\n if (this.match(139)) {\n this.expect(139);\n return this.finishNode(node, \"JSXClosingFragment\");\n }\n\n node.name = this.jsxParseElementName();\n this.expect(139);\n return this.finishNode(node, \"JSXClosingElement\");\n }\n\n jsxParseElementAt(startPos, startLoc) {\n const node = this.startNodeAt(startPos, startLoc);\n const children = [];\n const openingElement = this.jsxParseOpeningElementAt(startPos, startLoc);\n let closingElement = null;\n\n if (!openingElement.selfClosing) {\n contents: for (;;) {\n switch (this.state.type) {\n case 138:\n startPos = this.state.start;\n startLoc = this.state.startLoc;\n this.next();\n\n if (this.eat(56)) {\n closingElement = this.jsxParseClosingElementAt(startPos, startLoc);\n break contents;\n }\n\n children.push(this.jsxParseElementAt(startPos, startLoc));\n break;\n\n case 137:\n children.push(this.parseExprAtom());\n break;\n\n case 5:\n {\n const node = this.startNode();\n this.setContext(types.brace);\n this.next();\n\n if (this.match(21)) {\n children.push(this.jsxParseSpreadChild(node));\n } else {\n children.push(this.jsxParseExpressionContainer(node, types.j_expr));\n }\n\n break;\n }\n\n default:\n throw this.unexpected();\n }\n }\n\n if (isFragment(openingElement) && !isFragment(closingElement) && closingElement !== null) {\n this.raise(JsxErrors.MissingClosingTagFragment, {\n node: closingElement\n });\n } else if (!isFragment(openingElement) && isFragment(closingElement)) {\n this.raise(JsxErrors.MissingClosingTagElement, {\n node: closingElement\n }, getQualifiedJSXName(openingElement.name));\n } else if (!isFragment(openingElement) && !isFragment(closingElement)) {\n if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) {\n this.raise(JsxErrors.MissingClosingTagElement, {\n node: closingElement\n }, getQualifiedJSXName(openingElement.name));\n }\n }\n }\n\n if (isFragment(openingElement)) {\n node.openingFragment = openingElement;\n node.closingFragment = closingElement;\n } else {\n node.openingElement = openingElement;\n node.closingElement = closingElement;\n }\n\n node.children = children;\n\n if (this.match(47)) {\n throw this.raise(JsxErrors.UnwrappedAdjacentJSXElements, {\n at: this.state.startLoc\n });\n }\n\n return isFragment(openingElement) ? this.finishNode(node, \"JSXFragment\") : this.finishNode(node, \"JSXElement\");\n }\n\n jsxParseElement() {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n this.next();\n return this.jsxParseElementAt(startPos, startLoc);\n }\n\n setContext(newContext) {\n const {\n context\n } = this.state;\n context[context.length - 1] = newContext;\n }\n\n parseExprAtom(refExpressionErrors) {\n if (this.match(137)) {\n return this.parseLiteral(this.state.value, \"JSXText\");\n } else if (this.match(138)) {\n return this.jsxParseElement();\n } else if (this.match(47) && this.input.charCodeAt(this.state.pos) !== 33) {\n this.replaceToken(138);\n return this.jsxParseElement();\n } else {\n return super.parseExprAtom(refExpressionErrors);\n }\n }\n\n skipSpace() {\n const curContext = this.curContext();\n if (!curContext.preserveSpace) super.skipSpace();\n }\n\n getTokenFromCode(code) {\n const context = this.curContext();\n\n if (context === types.j_expr) {\n return this.jsxReadToken();\n }\n\n if (context === types.j_oTag || context === types.j_cTag) {\n if (isIdentifierStart(code)) {\n return this.jsxReadWord();\n }\n\n if (code === 62) {\n ++this.state.pos;\n return this.finishToken(139);\n }\n\n if ((code === 34 || code === 39) && context === types.j_oTag) {\n return this.jsxReadString(code);\n }\n }\n\n if (code === 60 && this.state.canStartJSXElement && this.input.charCodeAt(this.state.pos + 1) !== 33) {\n ++this.state.pos;\n return this.finishToken(138);\n }\n\n return super.getTokenFromCode(code);\n }\n\n updateContext(prevType) {\n const {\n context,\n type\n } = this.state;\n\n if (type === 56 && prevType === 138) {\n context.splice(-2, 2, types.j_cTag);\n this.state.canStartJSXElement = false;\n } else if (type === 138) {\n context.push(types.j_oTag);\n } else if (type === 139) {\n const out = context[context.length - 1];\n\n if (out === types.j_oTag && prevType === 56 || out === types.j_cTag) {\n context.pop();\n this.state.canStartJSXElement = context[context.length - 1] === types.j_expr;\n } else {\n this.setContext(types.j_expr);\n this.state.canStartJSXElement = true;\n }\n } else {\n this.state.canStartJSXElement = tokenComesBeforeExpression(type);\n }\n }\n\n});\n\nclass TypeScriptScope extends Scope {\n constructor(...args) {\n super(...args);\n this.types = new Set();\n this.enums = new Set();\n this.constEnums = new Set();\n this.classes = new Set();\n this.exportOnlyBindings = new Set();\n }\n\n}\n\nclass TypeScriptScopeHandler extends ScopeHandler {\n createScope(flags) {\n return new TypeScriptScope(flags);\n }\n\n declareName(name, bindingType, loc) {\n const scope = this.currentScope();\n\n if (bindingType & BIND_FLAGS_TS_EXPORT_ONLY) {\n this.maybeExportDefined(scope, name);\n scope.exportOnlyBindings.add(name);\n return;\n }\n\n super.declareName(...arguments);\n\n if (bindingType & BIND_KIND_TYPE) {\n if (!(bindingType & BIND_KIND_VALUE)) {\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n this.maybeExportDefined(scope, name);\n }\n\n scope.types.add(name);\n }\n\n if (bindingType & BIND_FLAGS_TS_ENUM) scope.enums.add(name);\n if (bindingType & BIND_FLAGS_TS_CONST_ENUM) scope.constEnums.add(name);\n if (bindingType & BIND_FLAGS_CLASS) scope.classes.add(name);\n }\n\n isRedeclaredInScope(scope, name, bindingType) {\n if (scope.enums.has(name)) {\n if (bindingType & BIND_FLAGS_TS_ENUM) {\n const isConst = !!(bindingType & BIND_FLAGS_TS_CONST_ENUM);\n const wasConst = scope.constEnums.has(name);\n return isConst !== wasConst;\n }\n\n return true;\n }\n\n if (bindingType & BIND_FLAGS_CLASS && scope.classes.has(name)) {\n if (scope.lexical.has(name)) {\n return !!(bindingType & BIND_KIND_VALUE);\n } else {\n return false;\n }\n }\n\n if (bindingType & BIND_KIND_TYPE && scope.types.has(name)) {\n return true;\n }\n\n return super.isRedeclaredInScope(...arguments);\n }\n\n checkLocalExport(id) {\n const topLevelScope = this.scopeStack[0];\n const {\n name\n } = id;\n\n if (!topLevelScope.types.has(name) && !topLevelScope.exportOnlyBindings.has(name)) {\n super.checkLocalExport(id);\n }\n }\n\n}\n\nfunction nonNull(x) {\n if (x == null) {\n throw new Error(`Unexpected ${x} value.`);\n }\n\n return x;\n}\n\nfunction assert(x) {\n if (!x) {\n throw new Error(\"Assert fail\");\n }\n}\n\nconst TSErrors = makeErrorTemplates({\n AbstractMethodHasImplementation: \"Method '%0' cannot have an implementation because it is marked abstract.\",\n AbstractPropertyHasInitializer: \"Property '%0' cannot have an initializer because it is marked abstract.\",\n AccesorCannotDeclareThisParameter: \"'get' and 'set' accessors cannot declare 'this' parameters.\",\n AccesorCannotHaveTypeParameters: \"An accessor cannot have type parameters.\",\n ClassMethodHasDeclare: \"Class methods cannot have the 'declare' modifier.\",\n ClassMethodHasReadonly: \"Class methods cannot have the 'readonly' modifier.\",\n ConstructorHasTypeParameters: \"Type parameters cannot appear on a constructor declaration.\",\n DeclareAccessor: \"'declare' is not allowed in %0ters.\",\n DeclareClassFieldHasInitializer: \"Initializers are not allowed in ambient contexts.\",\n DeclareFunctionHasImplementation: \"An implementation cannot be declared in ambient contexts.\",\n DuplicateAccessibilityModifier: \"Accessibility modifier already seen.\",\n DuplicateModifier: \"Duplicate modifier: '%0'.\",\n EmptyHeritageClauseType: \"'%0' list cannot be empty.\",\n EmptyTypeArguments: \"Type argument list cannot be empty.\",\n EmptyTypeParameters: \"Type parameter list cannot be empty.\",\n ExpectedAmbientAfterExportDeclare: \"'export declare' must be followed by an ambient declaration.\",\n ImportAliasHasImportType: \"An import alias can not use 'import type'.\",\n IncompatibleModifiers: \"'%0' modifier cannot be used with '%1' modifier.\",\n IndexSignatureHasAbstract: \"Index signatures cannot have the 'abstract' modifier.\",\n IndexSignatureHasAccessibility: \"Index signatures cannot have an accessibility modifier ('%0').\",\n IndexSignatureHasDeclare: \"Index signatures cannot have the 'declare' modifier.\",\n IndexSignatureHasOverride: \"'override' modifier cannot appear on an index signature.\",\n IndexSignatureHasStatic: \"Index signatures cannot have the 'static' modifier.\",\n InvalidModifierOnTypeMember: \"'%0' modifier cannot appear on a type member.\",\n InvalidModifiersOrder: \"'%0' modifier must precede '%1' modifier.\",\n InvalidTupleMemberLabel: \"Tuple members must be labeled with a simple identifier.\",\n MissingInterfaceName: \"'interface' declarations must be followed by an identifier.\",\n MixedLabeledAndUnlabeledElements: \"Tuple members must all have names or all not have names.\",\n NonAbstractClassHasAbstractMethod: \"Abstract methods can only appear within an abstract class.\",\n NonClassMethodPropertyHasAbstractModifer: \"'abstract' modifier can only appear on a class, method, or property declaration.\",\n OptionalTypeBeforeRequired: \"A required element cannot follow an optional element.\",\n OverrideNotInSubClass: \"This member cannot have an 'override' modifier because its containing class does not extend another class.\",\n PatternIsOptional: \"A binding pattern parameter cannot be optional in an implementation signature.\",\n PrivateElementHasAbstract: \"Private elements cannot have the 'abstract' modifier.\",\n PrivateElementHasAccessibility: \"Private elements cannot have an accessibility modifier ('%0').\",\n ReadonlyForMethodSignature: \"'readonly' modifier can only appear on a property declaration or index signature.\",\n ReservedArrowTypeParam: \"This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `() => ...`.\",\n ReservedTypeAssertion: \"This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.\",\n SetAccesorCannotHaveOptionalParameter: \"A 'set' accessor cannot have an optional parameter.\",\n SetAccesorCannotHaveRestParameter: \"A 'set' accessor cannot have rest parameter.\",\n SetAccesorCannotHaveReturnType: \"A 'set' accessor cannot have a return type annotation.\",\n StaticBlockCannotHaveModifier: \"Static class blocks cannot have any modifier.\",\n TypeAnnotationAfterAssign: \"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.\",\n TypeImportCannotSpecifyDefaultAndNamed: \"A type-only import can specify a default import or named bindings, but not both.\",\n TypeModifierIsUsedInTypeExports: \"The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.\",\n TypeModifierIsUsedInTypeImports: \"The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.\",\n UnexpectedParameterModifier: \"A parameter property is only allowed in a constructor implementation.\",\n UnexpectedReadonly: \"'readonly' type modifier is only permitted on array and tuple literal types.\",\n UnexpectedTypeAnnotation: \"Did not expect a type annotation here.\",\n UnexpectedTypeCastInParameter: \"Unexpected type cast in parameter position.\",\n UnsupportedImportTypeArgument: \"Argument in a type import must be a string literal.\",\n UnsupportedParameterPropertyKind: \"A parameter property may not be declared using a binding pattern.\",\n UnsupportedSignatureParameterKind: \"Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got %0.\"\n}, ErrorCodes.SyntaxError, \"typescript\");\n\nfunction keywordTypeFromName(value) {\n switch (value) {\n case \"any\":\n return \"TSAnyKeyword\";\n\n case \"boolean\":\n return \"TSBooleanKeyword\";\n\n case \"bigint\":\n return \"TSBigIntKeyword\";\n\n case \"never\":\n return \"TSNeverKeyword\";\n\n case \"number\":\n return \"TSNumberKeyword\";\n\n case \"object\":\n return \"TSObjectKeyword\";\n\n case \"string\":\n return \"TSStringKeyword\";\n\n case \"symbol\":\n return \"TSSymbolKeyword\";\n\n case \"undefined\":\n return \"TSUndefinedKeyword\";\n\n case \"unknown\":\n return \"TSUnknownKeyword\";\n\n default:\n return undefined;\n }\n}\n\nfunction tsIsAccessModifier(modifier) {\n return modifier === \"private\" || modifier === \"public\" || modifier === \"protected\";\n}\n\nvar typescript = (superClass => class extends superClass {\n getScopeHandler() {\n return TypeScriptScopeHandler;\n }\n\n tsIsIdentifier() {\n return tokenIsIdentifier(this.state.type);\n }\n\n tsTokenCanFollowModifier() {\n return (this.match(0) || this.match(5) || this.match(55) || this.match(21) || this.match(134) || this.isLiteralPropertyName()) && !this.hasPrecedingLineBreak();\n }\n\n tsNextTokenCanFollowModifier() {\n this.next();\n return this.tsTokenCanFollowModifier();\n }\n\n tsParseModifier(allowedModifiers, stopOnStartOfClassStaticBlock) {\n if (!tokenIsIdentifier(this.state.type)) {\n return undefined;\n }\n\n const modifier = this.state.value;\n\n if (allowedModifiers.indexOf(modifier) !== -1) {\n if (stopOnStartOfClassStaticBlock && this.tsIsStartOfStaticBlocks()) {\n return undefined;\n }\n\n if (this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) {\n return modifier;\n }\n }\n\n return undefined;\n }\n\n tsParseModifiers(modified, allowedModifiers, disallowedModifiers, errorTemplate, stopOnStartOfClassStaticBlock) {\n const enforceOrder = (loc, modifier, before, after) => {\n if (modifier === before && modified[after]) {\n this.raise(TSErrors.InvalidModifiersOrder, {\n at: loc\n }, before, after);\n }\n };\n\n const incompatible = (loc, modifier, mod1, mod2) => {\n if (modified[mod1] && modifier === mod2 || modified[mod2] && modifier === mod1) {\n this.raise(TSErrors.IncompatibleModifiers, {\n at: loc\n }, mod1, mod2);\n }\n };\n\n for (;;) {\n const {\n startLoc\n } = this.state;\n const modifier = this.tsParseModifier(allowedModifiers.concat(disallowedModifiers != null ? disallowedModifiers : []), stopOnStartOfClassStaticBlock);\n if (!modifier) break;\n\n if (tsIsAccessModifier(modifier)) {\n if (modified.accessibility) {\n this.raise(TSErrors.DuplicateAccessibilityModifier, {\n at: startLoc\n });\n } else {\n enforceOrder(startLoc, modifier, modifier, \"override\");\n enforceOrder(startLoc, modifier, modifier, \"static\");\n enforceOrder(startLoc, modifier, modifier, \"readonly\");\n modified.accessibility = modifier;\n }\n } else {\n if (Object.hasOwnProperty.call(modified, modifier)) {\n this.raise(TSErrors.DuplicateModifier, {\n at: startLoc\n }, modifier);\n } else {\n enforceOrder(startLoc, modifier, \"static\", \"readonly\");\n enforceOrder(startLoc, modifier, \"static\", \"override\");\n enforceOrder(startLoc, modifier, \"override\", \"readonly\");\n enforceOrder(startLoc, modifier, \"abstract\", \"override\");\n incompatible(startLoc, modifier, \"declare\", \"override\");\n incompatible(startLoc, modifier, \"static\", \"abstract\");\n }\n\n modified[modifier] = true;\n }\n\n if (disallowedModifiers != null && disallowedModifiers.includes(modifier)) {\n this.raise(errorTemplate, {\n at: startLoc\n }, modifier);\n }\n }\n }\n\n tsIsListTerminator(kind) {\n switch (kind) {\n case \"EnumMembers\":\n case \"TypeMembers\":\n return this.match(8);\n\n case \"HeritageClauseElement\":\n return this.match(5);\n\n case \"TupleElementTypes\":\n return this.match(3);\n\n case \"TypeParametersOrArguments\":\n return this.match(48);\n }\n\n throw new Error(\"Unreachable\");\n }\n\n tsParseList(kind, parseElement) {\n const result = [];\n\n while (!this.tsIsListTerminator(kind)) {\n result.push(parseElement());\n }\n\n return result;\n }\n\n tsParseDelimitedList(kind, parseElement, refTrailingCommaPos) {\n return nonNull(this.tsParseDelimitedListWorker(kind, parseElement, true, refTrailingCommaPos));\n }\n\n tsParseDelimitedListWorker(kind, parseElement, expectSuccess, refTrailingCommaPos) {\n const result = [];\n let trailingCommaPos = -1;\n\n for (;;) {\n if (this.tsIsListTerminator(kind)) {\n break;\n }\n\n trailingCommaPos = -1;\n const element = parseElement();\n\n if (element == null) {\n return undefined;\n }\n\n result.push(element);\n\n if (this.eat(12)) {\n trailingCommaPos = this.state.lastTokStart;\n continue;\n }\n\n if (this.tsIsListTerminator(kind)) {\n break;\n }\n\n if (expectSuccess) {\n this.expect(12);\n }\n\n return undefined;\n }\n\n if (refTrailingCommaPos) {\n refTrailingCommaPos.value = trailingCommaPos;\n }\n\n return result;\n }\n\n tsParseBracketedList(kind, parseElement, bracket, skipFirstToken, refTrailingCommaPos) {\n if (!skipFirstToken) {\n if (bracket) {\n this.expect(0);\n } else {\n this.expect(47);\n }\n }\n\n const result = this.tsParseDelimitedList(kind, parseElement, refTrailingCommaPos);\n\n if (bracket) {\n this.expect(3);\n } else {\n this.expect(48);\n }\n\n return result;\n }\n\n tsParseImportType() {\n const node = this.startNode();\n this.expect(83);\n this.expect(10);\n\n if (!this.match(129)) {\n this.raise(TSErrors.UnsupportedImportTypeArgument, {\n at: this.state.startLoc\n });\n }\n\n node.argument = this.parseExprAtom();\n this.expect(11);\n\n if (this.eat(16)) {\n node.qualifier = this.tsParseEntityName(true);\n }\n\n if (this.match(47)) {\n node.typeParameters = this.tsParseTypeArguments();\n }\n\n return this.finishNode(node, \"TSImportType\");\n }\n\n tsParseEntityName(allowReservedWords) {\n let entity = this.parseIdentifier();\n\n while (this.eat(16)) {\n const node = this.startNodeAtNode(entity);\n node.left = entity;\n node.right = this.parseIdentifier(allowReservedWords);\n entity = this.finishNode(node, \"TSQualifiedName\");\n }\n\n return entity;\n }\n\n tsParseTypeReference() {\n const node = this.startNode();\n node.typeName = this.tsParseEntityName(false);\n\n if (!this.hasPrecedingLineBreak() && this.match(47)) {\n node.typeParameters = this.tsParseTypeArguments();\n }\n\n return this.finishNode(node, \"TSTypeReference\");\n }\n\n tsParseThisTypePredicate(lhs) {\n this.next();\n const node = this.startNodeAtNode(lhs);\n node.parameterName = lhs;\n node.typeAnnotation = this.tsParseTypeAnnotation(false);\n node.asserts = false;\n return this.finishNode(node, \"TSTypePredicate\");\n }\n\n tsParseThisTypeNode() {\n const node = this.startNode();\n this.next();\n return this.finishNode(node, \"TSThisType\");\n }\n\n tsParseTypeQuery() {\n const node = this.startNode();\n this.expect(87);\n\n if (this.match(83)) {\n node.exprName = this.tsParseImportType();\n } else {\n node.exprName = this.tsParseEntityName(true);\n }\n\n return this.finishNode(node, \"TSTypeQuery\");\n }\n\n tsParseTypeParameter() {\n const node = this.startNode();\n node.name = this.tsParseTypeParameterName();\n node.constraint = this.tsEatThenParseType(81);\n node.default = this.tsEatThenParseType(29);\n return this.finishNode(node, \"TSTypeParameter\");\n }\n\n tsTryParseTypeParameters() {\n if (this.match(47)) {\n return this.tsParseTypeParameters();\n }\n }\n\n tsParseTypeParameters() {\n const node = this.startNode();\n\n if (this.match(47) || this.match(138)) {\n this.next();\n } else {\n this.unexpected();\n }\n\n const refTrailingCommaPos = {\n value: -1\n };\n node.params = this.tsParseBracketedList(\"TypeParametersOrArguments\", this.tsParseTypeParameter.bind(this), false, true, refTrailingCommaPos);\n\n if (node.params.length === 0) {\n this.raise(TSErrors.EmptyTypeParameters, {\n node\n });\n }\n\n if (refTrailingCommaPos.value !== -1) {\n this.addExtra(node, \"trailingComma\", refTrailingCommaPos.value);\n }\n\n return this.finishNode(node, \"TSTypeParameterDeclaration\");\n }\n\n tsTryNextParseConstantContext() {\n if (this.lookahead().type === 75) {\n this.next();\n return this.tsParseTypeReference();\n }\n\n return null;\n }\n\n tsFillSignature(returnToken, signature) {\n const returnTokenRequired = returnToken === 19;\n const paramsKey = \"parameters\";\n const returnTypeKey = \"typeAnnotation\";\n signature.typeParameters = this.tsTryParseTypeParameters();\n this.expect(10);\n signature[paramsKey] = this.tsParseBindingListForSignature();\n\n if (returnTokenRequired) {\n signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken);\n } else if (this.match(returnToken)) {\n signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken);\n }\n }\n\n tsParseBindingListForSignature() {\n return this.parseBindingList(11, 41).map(pattern => {\n if (pattern.type !== \"Identifier\" && pattern.type !== \"RestElement\" && pattern.type !== \"ObjectPattern\" && pattern.type !== \"ArrayPattern\") {\n this.raise(TSErrors.UnsupportedSignatureParameterKind, {\n node: pattern\n }, pattern.type);\n }\n\n return pattern;\n });\n }\n\n tsParseTypeMemberSemicolon() {\n if (!this.eat(12) && !this.isLineTerminator()) {\n this.expect(13);\n }\n }\n\n tsParseSignatureMember(kind, node) {\n this.tsFillSignature(14, node);\n this.tsParseTypeMemberSemicolon();\n return this.finishNode(node, kind);\n }\n\n tsIsUnambiguouslyIndexSignature() {\n this.next();\n\n if (tokenIsIdentifier(this.state.type)) {\n this.next();\n return this.match(14);\n }\n\n return false;\n }\n\n tsTryParseIndexSignature(node) {\n if (!(this.match(0) && this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this)))) {\n return undefined;\n }\n\n this.expect(0);\n const id = this.parseIdentifier();\n id.typeAnnotation = this.tsParseTypeAnnotation();\n this.resetEndLocation(id);\n this.expect(3);\n node.parameters = [id];\n const type = this.tsTryParseTypeAnnotation();\n if (type) node.typeAnnotation = type;\n this.tsParseTypeMemberSemicolon();\n return this.finishNode(node, \"TSIndexSignature\");\n }\n\n tsParsePropertyOrMethodSignature(node, readonly) {\n if (this.eat(17)) node.optional = true;\n const nodeAny = node;\n\n if (this.match(10) || this.match(47)) {\n if (readonly) {\n this.raise(TSErrors.ReadonlyForMethodSignature, {\n node\n });\n }\n\n const method = nodeAny;\n\n if (method.kind && this.match(47)) {\n this.raise(TSErrors.AccesorCannotHaveTypeParameters, {\n at: this.state.curPosition()\n });\n }\n\n this.tsFillSignature(14, method);\n this.tsParseTypeMemberSemicolon();\n const paramsKey = \"parameters\";\n const returnTypeKey = \"typeAnnotation\";\n\n if (method.kind === \"get\") {\n if (method[paramsKey].length > 0) {\n this.raise(ErrorMessages.BadGetterArity, {\n at: this.state.curPosition()\n });\n\n if (this.isThisParam(method[paramsKey][0])) {\n this.raise(TSErrors.AccesorCannotDeclareThisParameter, {\n at: this.state.curPosition()\n });\n }\n }\n } else if (method.kind === \"set\") {\n if (method[paramsKey].length !== 1) {\n this.raise(ErrorMessages.BadSetterArity, {\n at: this.state.curPosition()\n });\n } else {\n const firstParameter = method[paramsKey][0];\n\n if (this.isThisParam(firstParameter)) {\n this.raise(TSErrors.AccesorCannotDeclareThisParameter, {\n at: this.state.curPosition()\n });\n }\n\n if (firstParameter.type === \"Identifier\" && firstParameter.optional) {\n this.raise(TSErrors.SetAccesorCannotHaveOptionalParameter, {\n at: this.state.curPosition()\n });\n }\n\n if (firstParameter.type === \"RestElement\") {\n this.raise(TSErrors.SetAccesorCannotHaveRestParameter, {\n at: this.state.curPosition()\n });\n }\n }\n\n if (method[returnTypeKey]) {\n this.raise(TSErrors.SetAccesorCannotHaveReturnType, {\n node: method[returnTypeKey]\n });\n }\n } else {\n method.kind = \"method\";\n }\n\n return this.finishNode(method, \"TSMethodSignature\");\n } else {\n const property = nodeAny;\n if (readonly) property.readonly = true;\n const type = this.tsTryParseTypeAnnotation();\n if (type) property.typeAnnotation = type;\n this.tsParseTypeMemberSemicolon();\n return this.finishNode(property, \"TSPropertySignature\");\n }\n }\n\n tsParseTypeMember() {\n const node = this.startNode();\n\n if (this.match(10) || this.match(47)) {\n return this.tsParseSignatureMember(\"TSCallSignatureDeclaration\", node);\n }\n\n if (this.match(77)) {\n const id = this.startNode();\n this.next();\n\n if (this.match(10) || this.match(47)) {\n return this.tsParseSignatureMember(\"TSConstructSignatureDeclaration\", node);\n } else {\n node.key = this.createIdentifier(id, \"new\");\n return this.tsParsePropertyOrMethodSignature(node, false);\n }\n }\n\n this.tsParseModifiers(node, [\"readonly\"], [\"declare\", \"abstract\", \"private\", \"protected\", \"public\", \"static\", \"override\"], TSErrors.InvalidModifierOnTypeMember);\n const idx = this.tsTryParseIndexSignature(node);\n\n if (idx) {\n return idx;\n }\n\n this.parsePropertyName(node);\n\n if (!node.computed && node.key.type === \"Identifier\" && (node.key.name === \"get\" || node.key.name === \"set\") && this.tsTokenCanFollowModifier()) {\n node.kind = node.key.name;\n this.parsePropertyName(node);\n }\n\n return this.tsParsePropertyOrMethodSignature(node, !!node.readonly);\n }\n\n tsParseTypeLiteral() {\n const node = this.startNode();\n node.members = this.tsParseObjectTypeMembers();\n return this.finishNode(node, \"TSTypeLiteral\");\n }\n\n tsParseObjectTypeMembers() {\n this.expect(5);\n const members = this.tsParseList(\"TypeMembers\", this.tsParseTypeMember.bind(this));\n this.expect(8);\n return members;\n }\n\n tsIsStartOfMappedType() {\n this.next();\n\n if (this.eat(53)) {\n return this.isContextual(118);\n }\n\n if (this.isContextual(118)) {\n this.next();\n }\n\n if (!this.match(0)) {\n return false;\n }\n\n this.next();\n\n if (!this.tsIsIdentifier()) {\n return false;\n }\n\n this.next();\n return this.match(58);\n }\n\n tsParseMappedTypeParameter() {\n const node = this.startNode();\n node.name = this.tsParseTypeParameterName();\n node.constraint = this.tsExpectThenParseType(58);\n return this.finishNode(node, \"TSTypeParameter\");\n }\n\n tsParseMappedType() {\n const node = this.startNode();\n this.expect(5);\n\n if (this.match(53)) {\n node.readonly = this.state.value;\n this.next();\n this.expectContextual(118);\n } else if (this.eatContextual(118)) {\n node.readonly = true;\n }\n\n this.expect(0);\n node.typeParameter = this.tsParseMappedTypeParameter();\n node.nameType = this.eatContextual(93) ? this.tsParseType() : null;\n this.expect(3);\n\n if (this.match(53)) {\n node.optional = this.state.value;\n this.next();\n this.expect(17);\n } else if (this.eat(17)) {\n node.optional = true;\n }\n\n node.typeAnnotation = this.tsTryParseType();\n this.semicolon();\n this.expect(8);\n return this.finishNode(node, \"TSMappedType\");\n }\n\n tsParseTupleType() {\n const node = this.startNode();\n node.elementTypes = this.tsParseBracketedList(\"TupleElementTypes\", this.tsParseTupleElementType.bind(this), true, false);\n let seenOptionalElement = false;\n let labeledElements = null;\n node.elementTypes.forEach(elementNode => {\n var _labeledElements;\n\n let {\n type\n } = elementNode;\n\n if (seenOptionalElement && type !== \"TSRestType\" && type !== \"TSOptionalType\" && !(type === \"TSNamedTupleMember\" && elementNode.optional)) {\n this.raise(TSErrors.OptionalTypeBeforeRequired, {\n node: elementNode\n });\n }\n\n seenOptionalElement = seenOptionalElement || type === \"TSNamedTupleMember\" && elementNode.optional || type === \"TSOptionalType\";\n\n if (type === \"TSRestType\") {\n elementNode = elementNode.typeAnnotation;\n type = elementNode.type;\n }\n\n const isLabeled = type === \"TSNamedTupleMember\";\n labeledElements = (_labeledElements = labeledElements) != null ? _labeledElements : isLabeled;\n\n if (labeledElements !== isLabeled) {\n this.raise(TSErrors.MixedLabeledAndUnlabeledElements, {\n node: elementNode\n });\n }\n });\n return this.finishNode(node, \"TSTupleType\");\n }\n\n tsParseTupleElementType() {\n const {\n start: startPos,\n startLoc\n } = this.state;\n const rest = this.eat(21);\n let type = this.tsParseType();\n const optional = this.eat(17);\n const labeled = this.eat(14);\n\n if (labeled) {\n const labeledNode = this.startNodeAtNode(type);\n labeledNode.optional = optional;\n\n if (type.type === \"TSTypeReference\" && !type.typeParameters && type.typeName.type === \"Identifier\") {\n labeledNode.label = type.typeName;\n } else {\n this.raise(TSErrors.InvalidTupleMemberLabel, {\n node: type\n });\n labeledNode.label = type;\n }\n\n labeledNode.elementType = this.tsParseType();\n type = this.finishNode(labeledNode, \"TSNamedTupleMember\");\n } else if (optional) {\n const optionalTypeNode = this.startNodeAtNode(type);\n optionalTypeNode.typeAnnotation = type;\n type = this.finishNode(optionalTypeNode, \"TSOptionalType\");\n }\n\n if (rest) {\n const restNode = this.startNodeAt(startPos, startLoc);\n restNode.typeAnnotation = type;\n type = this.finishNode(restNode, \"TSRestType\");\n }\n\n return type;\n }\n\n tsParseParenthesizedType() {\n const node = this.startNode();\n this.expect(10);\n node.typeAnnotation = this.tsParseType();\n this.expect(11);\n return this.finishNode(node, \"TSParenthesizedType\");\n }\n\n tsParseFunctionOrConstructorType(type, abstract) {\n const node = this.startNode();\n\n if (type === \"TSConstructorType\") {\n node.abstract = !!abstract;\n if (abstract) this.next();\n this.next();\n }\n\n this.tsFillSignature(19, node);\n return this.finishNode(node, type);\n }\n\n tsParseLiteralTypeNode() {\n const node = this.startNode();\n\n node.literal = (() => {\n switch (this.state.type) {\n case 130:\n case 131:\n case 129:\n case 85:\n case 86:\n return this.parseExprAtom();\n\n default:\n throw this.unexpected();\n }\n })();\n\n return this.finishNode(node, \"TSLiteralType\");\n }\n\n tsParseTemplateLiteralType() {\n const node = this.startNode();\n node.literal = this.parseTemplate(false);\n return this.finishNode(node, \"TSLiteralType\");\n }\n\n parseTemplateSubstitution() {\n if (this.state.inType) return this.tsParseType();\n return super.parseTemplateSubstitution();\n }\n\n tsParseThisTypeOrThisTypePredicate() {\n const thisKeyword = this.tsParseThisTypeNode();\n\n if (this.isContextual(113) && !this.hasPrecedingLineBreak()) {\n return this.tsParseThisTypePredicate(thisKeyword);\n } else {\n return thisKeyword;\n }\n }\n\n tsParseNonArrayType() {\n switch (this.state.type) {\n case 129:\n case 130:\n case 131:\n case 85:\n case 86:\n return this.tsParseLiteralTypeNode();\n\n case 53:\n if (this.state.value === \"-\") {\n const node = this.startNode();\n const nextToken = this.lookahead();\n\n if (nextToken.type !== 130 && nextToken.type !== 131) {\n throw this.unexpected();\n }\n\n node.literal = this.parseMaybeUnary();\n return this.finishNode(node, \"TSLiteralType\");\n }\n\n break;\n\n case 78:\n return this.tsParseThisTypeOrThisTypePredicate();\n\n case 87:\n return this.tsParseTypeQuery();\n\n case 83:\n return this.tsParseImportType();\n\n case 5:\n return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this)) ? this.tsParseMappedType() : this.tsParseTypeLiteral();\n\n case 0:\n return this.tsParseTupleType();\n\n case 10:\n return this.tsParseParenthesizedType();\n\n case 25:\n case 24:\n return this.tsParseTemplateLiteralType();\n\n default:\n {\n const {\n type\n } = this.state;\n\n if (tokenIsIdentifier(type) || type === 88 || type === 84) {\n const nodeType = type === 88 ? \"TSVoidKeyword\" : type === 84 ? \"TSNullKeyword\" : keywordTypeFromName(this.state.value);\n\n if (nodeType !== undefined && this.lookaheadCharCode() !== 46) {\n const node = this.startNode();\n this.next();\n return this.finishNode(node, nodeType);\n }\n\n return this.tsParseTypeReference();\n }\n }\n }\n\n throw this.unexpected();\n }\n\n tsParseArrayTypeOrHigher() {\n let type = this.tsParseNonArrayType();\n\n while (!this.hasPrecedingLineBreak() && this.eat(0)) {\n if (this.match(3)) {\n const node = this.startNodeAtNode(type);\n node.elementType = type;\n this.expect(3);\n type = this.finishNode(node, \"TSArrayType\");\n } else {\n const node = this.startNodeAtNode(type);\n node.objectType = type;\n node.indexType = this.tsParseType();\n this.expect(3);\n type = this.finishNode(node, \"TSIndexedAccessType\");\n }\n }\n\n return type;\n }\n\n tsParseTypeOperator() {\n const node = this.startNode();\n const operator = this.state.value;\n this.next();\n node.operator = operator;\n node.typeAnnotation = this.tsParseTypeOperatorOrHigher();\n\n if (operator === \"readonly\") {\n this.tsCheckTypeAnnotationForReadOnly(node);\n }\n\n return this.finishNode(node, \"TSTypeOperator\");\n }\n\n tsCheckTypeAnnotationForReadOnly(node) {\n switch (node.typeAnnotation.type) {\n case \"TSTupleType\":\n case \"TSArrayType\":\n return;\n\n default:\n this.raise(TSErrors.UnexpectedReadonly, {\n node\n });\n }\n }\n\n tsParseInferType() {\n const node = this.startNode();\n this.expectContextual(112);\n const typeParameter = this.startNode();\n typeParameter.name = this.tsParseTypeParameterName();\n node.typeParameter = this.finishNode(typeParameter, \"TSTypeParameter\");\n return this.finishNode(node, \"TSInferType\");\n }\n\n tsParseTypeOperatorOrHigher() {\n const isTypeOperator = tokenIsTSTypeOperator(this.state.type) && !this.state.containsEsc;\n return isTypeOperator ? this.tsParseTypeOperator() : this.isContextual(112) ? this.tsParseInferType() : this.tsParseArrayTypeOrHigher();\n }\n\n tsParseUnionOrIntersectionType(kind, parseConstituentType, operator) {\n const node = this.startNode();\n const hasLeadingOperator = this.eat(operator);\n const types = [];\n\n do {\n types.push(parseConstituentType());\n } while (this.eat(operator));\n\n if (types.length === 1 && !hasLeadingOperator) {\n return types[0];\n }\n\n node.types = types;\n return this.finishNode(node, kind);\n }\n\n tsParseIntersectionTypeOrHigher() {\n return this.tsParseUnionOrIntersectionType(\"TSIntersectionType\", this.tsParseTypeOperatorOrHigher.bind(this), 45);\n }\n\n tsParseUnionTypeOrHigher() {\n return this.tsParseUnionOrIntersectionType(\"TSUnionType\", this.tsParseIntersectionTypeOrHigher.bind(this), 43);\n }\n\n tsIsStartOfFunctionType() {\n if (this.match(47)) {\n return true;\n }\n\n return this.match(10) && this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this));\n }\n\n tsSkipParameterStart() {\n if (tokenIsIdentifier(this.state.type) || this.match(78)) {\n this.next();\n return true;\n }\n\n if (this.match(5)) {\n let braceStackCounter = 1;\n this.next();\n\n while (braceStackCounter > 0) {\n if (this.match(5)) {\n ++braceStackCounter;\n } else if (this.match(8)) {\n --braceStackCounter;\n }\n\n this.next();\n }\n\n return true;\n }\n\n if (this.match(0)) {\n let braceStackCounter = 1;\n this.next();\n\n while (braceStackCounter > 0) {\n if (this.match(0)) {\n ++braceStackCounter;\n } else if (this.match(3)) {\n --braceStackCounter;\n }\n\n this.next();\n }\n\n return true;\n }\n\n return false;\n }\n\n tsIsUnambiguouslyStartOfFunctionType() {\n this.next();\n\n if (this.match(11) || this.match(21)) {\n return true;\n }\n\n if (this.tsSkipParameterStart()) {\n if (this.match(14) || this.match(12) || this.match(17) || this.match(29)) {\n return true;\n }\n\n if (this.match(11)) {\n this.next();\n\n if (this.match(19)) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n tsParseTypeOrTypePredicateAnnotation(returnToken) {\n return this.tsInType(() => {\n const t = this.startNode();\n this.expect(returnToken);\n const node = this.startNode();\n const asserts = !!this.tsTryParse(this.tsParseTypePredicateAsserts.bind(this));\n\n if (asserts && this.match(78)) {\n let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate();\n\n if (thisTypePredicate.type === \"TSThisType\") {\n node.parameterName = thisTypePredicate;\n node.asserts = true;\n node.typeAnnotation = null;\n thisTypePredicate = this.finishNode(node, \"TSTypePredicate\");\n } else {\n this.resetStartLocationFromNode(thisTypePredicate, node);\n thisTypePredicate.asserts = true;\n }\n\n t.typeAnnotation = thisTypePredicate;\n return this.finishNode(t, \"TSTypeAnnotation\");\n }\n\n const typePredicateVariable = this.tsIsIdentifier() && this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this));\n\n if (!typePredicateVariable) {\n if (!asserts) {\n return this.tsParseTypeAnnotation(false, t);\n }\n\n node.parameterName = this.parseIdentifier();\n node.asserts = asserts;\n node.typeAnnotation = null;\n t.typeAnnotation = this.finishNode(node, \"TSTypePredicate\");\n return this.finishNode(t, \"TSTypeAnnotation\");\n }\n\n const type = this.tsParseTypeAnnotation(false);\n node.parameterName = typePredicateVariable;\n node.typeAnnotation = type;\n node.asserts = asserts;\n t.typeAnnotation = this.finishNode(node, \"TSTypePredicate\");\n return this.finishNode(t, \"TSTypeAnnotation\");\n });\n }\n\n tsTryParseTypeOrTypePredicateAnnotation() {\n return this.match(14) ? this.tsParseTypeOrTypePredicateAnnotation(14) : undefined;\n }\n\n tsTryParseTypeAnnotation() {\n return this.match(14) ? this.tsParseTypeAnnotation() : undefined;\n }\n\n tsTryParseType() {\n return this.tsEatThenParseType(14);\n }\n\n tsParseTypePredicatePrefix() {\n const id = this.parseIdentifier();\n\n if (this.isContextual(113) && !this.hasPrecedingLineBreak()) {\n this.next();\n return id;\n }\n }\n\n tsParseTypePredicateAsserts() {\n if (this.state.type !== 106) {\n return false;\n }\n\n const containsEsc = this.state.containsEsc;\n this.next();\n\n if (!tokenIsIdentifier(this.state.type) && !this.match(78)) {\n return false;\n }\n\n if (containsEsc) {\n this.raise(ErrorMessages.InvalidEscapedReservedWord, {\n at: this.state.lastTokStartLoc\n }, \"asserts\");\n }\n\n return true;\n }\n\n tsParseTypeAnnotation(eatColon = true, t = this.startNode()) {\n this.tsInType(() => {\n if (eatColon) this.expect(14);\n t.typeAnnotation = this.tsParseType();\n });\n return this.finishNode(t, \"TSTypeAnnotation\");\n }\n\n tsParseType() {\n assert(this.state.inType);\n const type = this.tsParseNonConditionalType();\n\n if (this.hasPrecedingLineBreak() || !this.eat(81)) {\n return type;\n }\n\n const node = this.startNodeAtNode(type);\n node.checkType = type;\n node.extendsType = this.tsParseNonConditionalType();\n this.expect(17);\n node.trueType = this.tsParseType();\n this.expect(14);\n node.falseType = this.tsParseType();\n return this.finishNode(node, \"TSConditionalType\");\n }\n\n isAbstractConstructorSignature() {\n return this.isContextual(120) && this.lookahead().type === 77;\n }\n\n tsParseNonConditionalType() {\n if (this.tsIsStartOfFunctionType()) {\n return this.tsParseFunctionOrConstructorType(\"TSFunctionType\");\n }\n\n if (this.match(77)) {\n return this.tsParseFunctionOrConstructorType(\"TSConstructorType\");\n } else if (this.isAbstractConstructorSignature()) {\n return this.tsParseFunctionOrConstructorType(\"TSConstructorType\", true);\n }\n\n return this.tsParseUnionTypeOrHigher();\n }\n\n tsParseTypeAssertion() {\n if (this.getPluginOption(\"typescript\", \"disallowAmbiguousJSXLike\")) {\n this.raise(TSErrors.ReservedTypeAssertion, {\n at: this.state.startLoc\n });\n }\n\n const node = this.startNode();\n\n const _const = this.tsTryNextParseConstantContext();\n\n node.typeAnnotation = _const || this.tsNextThenParseType();\n this.expect(48);\n node.expression = this.parseMaybeUnary();\n return this.finishNode(node, \"TSTypeAssertion\");\n }\n\n tsParseHeritageClause(descriptor) {\n const originalStartLoc = this.state.startLoc;\n const delimitedList = this.tsParseDelimitedList(\"HeritageClauseElement\", this.tsParseExpressionWithTypeArguments.bind(this));\n\n if (!delimitedList.length) {\n this.raise(TSErrors.EmptyHeritageClauseType, {\n at: originalStartLoc\n }, descriptor);\n }\n\n return delimitedList;\n }\n\n tsParseExpressionWithTypeArguments() {\n const node = this.startNode();\n node.expression = this.tsParseEntityName(false);\n\n if (this.match(47)) {\n node.typeParameters = this.tsParseTypeArguments();\n }\n\n return this.finishNode(node, \"TSExpressionWithTypeArguments\");\n }\n\n tsParseInterfaceDeclaration(node) {\n if (tokenIsIdentifier(this.state.type)) {\n node.id = this.parseIdentifier();\n this.checkLVal(node.id, \"typescript interface declaration\", BIND_TS_INTERFACE);\n } else {\n node.id = null;\n this.raise(TSErrors.MissingInterfaceName, {\n at: this.state.startLoc\n });\n }\n\n node.typeParameters = this.tsTryParseTypeParameters();\n\n if (this.eat(81)) {\n node.extends = this.tsParseHeritageClause(\"extends\");\n }\n\n const body = this.startNode();\n body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this));\n node.body = this.finishNode(body, \"TSInterfaceBody\");\n return this.finishNode(node, \"TSInterfaceDeclaration\");\n }\n\n tsParseTypeAliasDeclaration(node) {\n node.id = this.parseIdentifier();\n this.checkLVal(node.id, \"typescript type alias\", BIND_TS_TYPE);\n node.typeParameters = this.tsTryParseTypeParameters();\n node.typeAnnotation = this.tsInType(() => {\n this.expect(29);\n\n if (this.isContextual(111) && this.lookahead().type !== 16) {\n const node = this.startNode();\n this.next();\n return this.finishNode(node, \"TSIntrinsicKeyword\");\n }\n\n return this.tsParseType();\n });\n this.semicolon();\n return this.finishNode(node, \"TSTypeAliasDeclaration\");\n }\n\n tsInNoContext(cb) {\n const oldContext = this.state.context;\n this.state.context = [oldContext[0]];\n\n try {\n return cb();\n } finally {\n this.state.context = oldContext;\n }\n }\n\n tsInType(cb) {\n const oldInType = this.state.inType;\n this.state.inType = true;\n\n try {\n return cb();\n } finally {\n this.state.inType = oldInType;\n }\n }\n\n tsEatThenParseType(token) {\n return !this.match(token) ? undefined : this.tsNextThenParseType();\n }\n\n tsExpectThenParseType(token) {\n return this.tsDoThenParseType(() => this.expect(token));\n }\n\n tsNextThenParseType() {\n return this.tsDoThenParseType(() => this.next());\n }\n\n tsDoThenParseType(cb) {\n return this.tsInType(() => {\n cb();\n return this.tsParseType();\n });\n }\n\n tsParseEnumMember() {\n const node = this.startNode();\n node.id = this.match(129) ? this.parseExprAtom() : this.parseIdentifier(true);\n\n if (this.eat(29)) {\n node.initializer = this.parseMaybeAssignAllowIn();\n }\n\n return this.finishNode(node, \"TSEnumMember\");\n }\n\n tsParseEnumDeclaration(node, isConst) {\n if (isConst) node.const = true;\n node.id = this.parseIdentifier();\n this.checkLVal(node.id, \"typescript enum declaration\", isConst ? BIND_TS_CONST_ENUM : BIND_TS_ENUM);\n this.expect(5);\n node.members = this.tsParseDelimitedList(\"EnumMembers\", this.tsParseEnumMember.bind(this));\n this.expect(8);\n return this.finishNode(node, \"TSEnumDeclaration\");\n }\n\n tsParseModuleBlock() {\n const node = this.startNode();\n this.scope.enter(SCOPE_OTHER);\n this.expect(5);\n this.parseBlockOrModuleBlockBody(node.body = [], undefined, true, 8);\n this.scope.exit();\n return this.finishNode(node, \"TSModuleBlock\");\n }\n\n tsParseModuleOrNamespaceDeclaration(node, nested = false) {\n node.id = this.parseIdentifier();\n\n if (!nested) {\n this.checkLVal(node.id, \"module or namespace declaration\", BIND_TS_NAMESPACE);\n }\n\n if (this.eat(16)) {\n const inner = this.startNode();\n this.tsParseModuleOrNamespaceDeclaration(inner, true);\n node.body = inner;\n } else {\n this.scope.enter(SCOPE_TS_MODULE);\n this.prodParam.enter(PARAM);\n node.body = this.tsParseModuleBlock();\n this.prodParam.exit();\n this.scope.exit();\n }\n\n return this.finishNode(node, \"TSModuleDeclaration\");\n }\n\n tsParseAmbientExternalModuleDeclaration(node) {\n if (this.isContextual(109)) {\n node.global = true;\n node.id = this.parseIdentifier();\n } else if (this.match(129)) {\n node.id = this.parseExprAtom();\n } else {\n this.unexpected();\n }\n\n if (this.match(5)) {\n this.scope.enter(SCOPE_TS_MODULE);\n this.prodParam.enter(PARAM);\n node.body = this.tsParseModuleBlock();\n this.prodParam.exit();\n this.scope.exit();\n } else {\n this.semicolon();\n }\n\n return this.finishNode(node, \"TSModuleDeclaration\");\n }\n\n tsParseImportEqualsDeclaration(node, isExport) {\n node.isExport = isExport || false;\n node.id = this.parseIdentifier();\n this.checkLVal(node.id, \"import equals declaration\", BIND_LEXICAL);\n this.expect(29);\n const moduleReference = this.tsParseModuleReference();\n\n if (node.importKind === \"type\" && moduleReference.type !== \"TSExternalModuleReference\") {\n this.raise(TSErrors.ImportAliasHasImportType, {\n node: moduleReference\n });\n }\n\n node.moduleReference = moduleReference;\n this.semicolon();\n return this.finishNode(node, \"TSImportEqualsDeclaration\");\n }\n\n tsIsExternalModuleReference() {\n return this.isContextual(116) && this.lookaheadCharCode() === 40;\n }\n\n tsParseModuleReference() {\n return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(false);\n }\n\n tsParseExternalModuleReference() {\n const node = this.startNode();\n this.expectContextual(116);\n this.expect(10);\n\n if (!this.match(129)) {\n throw this.unexpected();\n }\n\n node.expression = this.parseExprAtom();\n this.expect(11);\n return this.finishNode(node, \"TSExternalModuleReference\");\n }\n\n tsLookAhead(f) {\n const state = this.state.clone();\n const res = f();\n this.state = state;\n return res;\n }\n\n tsTryParseAndCatch(f) {\n const result = this.tryParse(abort => f() || abort());\n if (result.aborted || !result.node) return undefined;\n if (result.error) this.state = result.failState;\n return result.node;\n }\n\n tsTryParse(f) {\n const state = this.state.clone();\n const result = f();\n\n if (result !== undefined && result !== false) {\n return result;\n } else {\n this.state = state;\n return undefined;\n }\n }\n\n tsTryParseDeclare(nany) {\n if (this.isLineTerminator()) {\n return;\n }\n\n let starttype = this.state.type;\n let kind;\n\n if (this.isContextual(99)) {\n starttype = 74;\n kind = \"let\";\n }\n\n return this.tsInAmbientContext(() => {\n switch (starttype) {\n case 68:\n nany.declare = true;\n return this.parseFunctionStatement(nany, false, true);\n\n case 80:\n nany.declare = true;\n return this.parseClass(nany, true, false);\n\n case 75:\n if (this.match(75) && this.isLookaheadContextual(\"enum\")) {\n this.expect(75);\n this.expectContextual(122);\n return this.tsParseEnumDeclaration(nany, true);\n }\n\n case 74:\n kind = kind || this.state.value;\n return this.parseVarStatement(nany, kind);\n\n case 109:\n return this.tsParseAmbientExternalModuleDeclaration(nany);\n\n default:\n {\n if (tokenIsIdentifier(starttype)) {\n return this.tsParseDeclaration(nany, this.state.value, true);\n }\n }\n }\n });\n }\n\n tsTryParseExportDeclaration() {\n return this.tsParseDeclaration(this.startNode(), this.state.value, true);\n }\n\n tsParseExpressionStatement(node, expr) {\n switch (expr.name) {\n case \"declare\":\n {\n const declaration = this.tsTryParseDeclare(node);\n\n if (declaration) {\n declaration.declare = true;\n return declaration;\n }\n\n break;\n }\n\n case \"global\":\n if (this.match(5)) {\n this.scope.enter(SCOPE_TS_MODULE);\n this.prodParam.enter(PARAM);\n const mod = node;\n mod.global = true;\n mod.id = expr;\n mod.body = this.tsParseModuleBlock();\n this.scope.exit();\n this.prodParam.exit();\n return this.finishNode(mod, \"TSModuleDeclaration\");\n }\n\n break;\n\n default:\n return this.tsParseDeclaration(node, expr.name, false);\n }\n }\n\n tsParseDeclaration(node, value, next) {\n switch (value) {\n case \"abstract\":\n if (this.tsCheckLineTerminator(next) && (this.match(80) || tokenIsIdentifier(this.state.type))) {\n return this.tsParseAbstractDeclaration(node);\n }\n\n break;\n\n case \"enum\":\n if (next || tokenIsIdentifier(this.state.type)) {\n if (next) this.next();\n return this.tsParseEnumDeclaration(node, false);\n }\n\n break;\n\n case \"interface\":\n if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) {\n return this.tsParseInterfaceDeclaration(node);\n }\n\n break;\n\n case \"module\":\n if (this.tsCheckLineTerminator(next)) {\n if (this.match(129)) {\n return this.tsParseAmbientExternalModuleDeclaration(node);\n } else if (tokenIsIdentifier(this.state.type)) {\n return this.tsParseModuleOrNamespaceDeclaration(node);\n }\n }\n\n break;\n\n case \"namespace\":\n if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) {\n return this.tsParseModuleOrNamespaceDeclaration(node);\n }\n\n break;\n\n case \"type\":\n if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) {\n return this.tsParseTypeAliasDeclaration(node);\n }\n\n break;\n }\n }\n\n tsCheckLineTerminator(next) {\n if (next) {\n if (this.hasFollowingLineBreak()) return false;\n this.next();\n return true;\n }\n\n return !this.isLineTerminator();\n }\n\n tsTryParseGenericAsyncArrowFunction(startPos, startLoc) {\n if (!this.match(47)) {\n return undefined;\n }\n\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n this.state.maybeInArrowParameters = true;\n const res = this.tsTryParseAndCatch(() => {\n const node = this.startNodeAt(startPos, startLoc);\n node.typeParameters = this.tsParseTypeParameters();\n super.parseFunctionParams(node);\n node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation();\n this.expect(19);\n return node;\n });\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n\n if (!res) {\n return undefined;\n }\n\n return this.parseArrowExpression(res, null, true);\n }\n\n tsParseTypeArgumentsInExpression() {\n if (this.reScan_lt() !== 47) {\n return undefined;\n }\n\n return this.tsParseTypeArguments();\n }\n\n tsParseTypeArguments() {\n const node = this.startNode();\n node.params = this.tsInType(() => this.tsInNoContext(() => {\n this.expect(47);\n return this.tsParseDelimitedList(\"TypeParametersOrArguments\", this.tsParseType.bind(this));\n }));\n\n if (node.params.length === 0) {\n this.raise(TSErrors.EmptyTypeArguments, {\n node\n });\n }\n\n this.expect(48);\n return this.finishNode(node, \"TSTypeParameterInstantiation\");\n }\n\n tsIsDeclarationStart() {\n return tokenIsTSDeclarationStart(this.state.type);\n }\n\n isExportDefaultSpecifier() {\n if (this.tsIsDeclarationStart()) return false;\n return super.isExportDefaultSpecifier();\n }\n\n parseAssignableListItem(allowModifiers, decorators) {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n let accessibility;\n let readonly = false;\n let override = false;\n\n if (allowModifiers !== undefined) {\n const modified = {};\n this.tsParseModifiers(modified, [\"public\", \"private\", \"protected\", \"override\", \"readonly\"]);\n accessibility = modified.accessibility;\n override = modified.override;\n readonly = modified.readonly;\n\n if (allowModifiers === false && (accessibility || readonly || override)) {\n this.raise(TSErrors.UnexpectedParameterModifier, {\n at: startLoc\n });\n }\n }\n\n const left = this.parseMaybeDefault();\n this.parseAssignableListItemTypes(left);\n const elt = this.parseMaybeDefault(left.start, left.loc.start, left);\n\n if (accessibility || readonly || override) {\n const pp = this.startNodeAt(startPos, startLoc);\n\n if (decorators.length) {\n pp.decorators = decorators;\n }\n\n if (accessibility) pp.accessibility = accessibility;\n if (readonly) pp.readonly = readonly;\n if (override) pp.override = override;\n\n if (elt.type !== \"Identifier\" && elt.type !== \"AssignmentPattern\") {\n this.raise(TSErrors.UnsupportedParameterPropertyKind, {\n node: pp\n });\n }\n\n pp.parameter = elt;\n return this.finishNode(pp, \"TSParameterProperty\");\n }\n\n if (decorators.length) {\n left.decorators = decorators;\n }\n\n return elt;\n }\n\n parseFunctionBodyAndFinish(node, type, isMethod = false) {\n if (this.match(14)) {\n node.returnType = this.tsParseTypeOrTypePredicateAnnotation(14);\n }\n\n const bodilessType = type === \"FunctionDeclaration\" ? \"TSDeclareFunction\" : type === \"ClassMethod\" || type === \"ClassPrivateMethod\" ? \"TSDeclareMethod\" : undefined;\n\n if (bodilessType && !this.match(5) && this.isLineTerminator()) {\n this.finishNode(node, bodilessType);\n return;\n }\n\n if (bodilessType === \"TSDeclareFunction\" && this.state.isAmbientContext) {\n this.raise(TSErrors.DeclareFunctionHasImplementation, {\n node\n });\n\n if (node.declare) {\n super.parseFunctionBodyAndFinish(node, bodilessType, isMethod);\n return;\n }\n }\n\n super.parseFunctionBodyAndFinish(node, type, isMethod);\n }\n\n registerFunctionStatementId(node) {\n if (!node.body && node.id) {\n this.checkLVal(node.id, \"function name\", BIND_TS_AMBIENT);\n } else {\n super.registerFunctionStatementId(...arguments);\n }\n }\n\n tsCheckForInvalidTypeCasts(items) {\n items.forEach(node => {\n if ((node == null ? void 0 : node.type) === \"TSTypeCastExpression\") {\n this.raise(TSErrors.UnexpectedTypeAnnotation, {\n node: node.typeAnnotation\n });\n }\n });\n }\n\n toReferencedList(exprList, isInParens) {\n this.tsCheckForInvalidTypeCasts(exprList);\n return exprList;\n }\n\n parseArrayLike(...args) {\n const node = super.parseArrayLike(...args);\n\n if (node.type === \"ArrayExpression\") {\n this.tsCheckForInvalidTypeCasts(node.elements);\n }\n\n return node;\n }\n\n parseSubscript(base, startPos, startLoc, noCalls, state) {\n if (!this.hasPrecedingLineBreak() && this.match(35)) {\n this.state.canStartJSXElement = false;\n this.next();\n const nonNullExpression = this.startNodeAt(startPos, startLoc);\n nonNullExpression.expression = base;\n return this.finishNode(nonNullExpression, \"TSNonNullExpression\");\n }\n\n let isOptionalCall = false;\n\n if (this.match(18) && this.lookaheadCharCode() === 60) {\n if (noCalls) {\n state.stop = true;\n return base;\n }\n\n state.optionalChainMember = isOptionalCall = true;\n this.next();\n }\n\n if (this.match(47) || this.match(51)) {\n let missingParenErrorLoc;\n const result = this.tsTryParseAndCatch(() => {\n if (!noCalls && this.atPossibleAsyncArrow(base)) {\n const asyncArrowFn = this.tsTryParseGenericAsyncArrowFunction(startPos, startLoc);\n\n if (asyncArrowFn) {\n return asyncArrowFn;\n }\n }\n\n const node = this.startNodeAt(startPos, startLoc);\n node.callee = base;\n const typeArguments = this.tsParseTypeArgumentsInExpression();\n\n if (typeArguments) {\n if (isOptionalCall && !this.match(10)) {\n missingParenErrorLoc = this.state.curPosition();\n this.unexpected();\n }\n\n if (!noCalls && this.eat(10)) {\n node.arguments = this.parseCallExpressionArguments(11, false);\n this.tsCheckForInvalidTypeCasts(node.arguments);\n node.typeParameters = typeArguments;\n\n if (state.optionalChainMember) {\n node.optional = isOptionalCall;\n }\n\n return this.finishCallExpression(node, state.optionalChainMember);\n } else if (tokenIsTemplate(this.state.type)) {\n const result = this.parseTaggedTemplateExpression(base, startPos, startLoc, state);\n result.typeParameters = typeArguments;\n return result;\n }\n }\n\n this.unexpected();\n });\n\n if (missingParenErrorLoc) {\n this.unexpected(missingParenErrorLoc, 10);\n }\n\n if (result) return result;\n }\n\n return super.parseSubscript(base, startPos, startLoc, noCalls, state);\n }\n\n parseNewArguments(node) {\n if (this.match(47) || this.match(51)) {\n const typeParameters = this.tsTryParseAndCatch(() => {\n const args = this.tsParseTypeArgumentsInExpression();\n if (!this.match(10)) this.unexpected();\n return args;\n });\n\n if (typeParameters) {\n node.typeParameters = typeParameters;\n }\n }\n\n super.parseNewArguments(node);\n }\n\n parseExprOp(left, leftStartPos, leftStartLoc, minPrec) {\n if (tokenOperatorPrecedence(58) > minPrec && !this.hasPrecedingLineBreak() && this.isContextual(93)) {\n const node = this.startNodeAt(leftStartPos, leftStartLoc);\n node.expression = left;\n\n const _const = this.tsTryNextParseConstantContext();\n\n if (_const) {\n node.typeAnnotation = _const;\n } else {\n node.typeAnnotation = this.tsNextThenParseType();\n }\n\n this.finishNode(node, \"TSAsExpression\");\n this.reScan_lt_gt();\n return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec);\n }\n\n return super.parseExprOp(left, leftStartPos, leftStartLoc, minPrec);\n }\n\n checkReservedWord(word, startLoc, checkKeywords, isBinding) {}\n\n checkDuplicateExports() {}\n\n parseImport(node) {\n node.importKind = \"value\";\n\n if (tokenIsIdentifier(this.state.type) || this.match(55) || this.match(5)) {\n let ahead = this.lookahead();\n\n if (this.isContextual(126) && ahead.type !== 12 && ahead.type !== 97 && ahead.type !== 29) {\n node.importKind = \"type\";\n this.next();\n ahead = this.lookahead();\n }\n\n if (tokenIsIdentifier(this.state.type) && ahead.type === 29) {\n return this.tsParseImportEqualsDeclaration(node);\n }\n }\n\n const importNode = super.parseImport(node);\n\n if (importNode.importKind === \"type\" && importNode.specifiers.length > 1 && importNode.specifiers[0].type === \"ImportDefaultSpecifier\") {\n this.raise(TSErrors.TypeImportCannotSpecifyDefaultAndNamed, {\n node: importNode\n });\n }\n\n return importNode;\n }\n\n parseExport(node) {\n if (this.match(83)) {\n this.next();\n\n if (this.isContextual(126) && this.lookaheadCharCode() !== 61) {\n node.importKind = \"type\";\n this.next();\n } else {\n node.importKind = \"value\";\n }\n\n return this.tsParseImportEqualsDeclaration(node, true);\n } else if (this.eat(29)) {\n const assign = node;\n assign.expression = this.parseExpression();\n this.semicolon();\n return this.finishNode(assign, \"TSExportAssignment\");\n } else if (this.eatContextual(93)) {\n const decl = node;\n this.expectContextual(124);\n decl.id = this.parseIdentifier();\n this.semicolon();\n return this.finishNode(decl, \"TSNamespaceExportDeclaration\");\n } else {\n if (this.isContextual(126) && this.lookahead().type === 5) {\n this.next();\n node.exportKind = \"type\";\n } else {\n node.exportKind = \"value\";\n }\n\n return super.parseExport(node);\n }\n }\n\n isAbstractClass() {\n return this.isContextual(120) && this.lookahead().type === 80;\n }\n\n parseExportDefaultExpression() {\n if (this.isAbstractClass()) {\n const cls = this.startNode();\n this.next();\n cls.abstract = true;\n this.parseClass(cls, true, true);\n return cls;\n }\n\n if (this.match(125)) {\n const interfaceNode = this.startNode();\n this.next();\n const result = this.tsParseInterfaceDeclaration(interfaceNode);\n if (result) return result;\n }\n\n return super.parseExportDefaultExpression();\n }\n\n parseStatementContent(context, topLevel) {\n if (this.state.type === 75) {\n const ahead = this.lookahead();\n\n if (ahead.type === 122) {\n const node = this.startNode();\n this.next();\n this.expectContextual(122);\n return this.tsParseEnumDeclaration(node, true);\n }\n }\n\n return super.parseStatementContent(context, topLevel);\n }\n\n parseAccessModifier() {\n return this.tsParseModifier([\"public\", \"protected\", \"private\"]);\n }\n\n tsHasSomeModifiers(member, modifiers) {\n return modifiers.some(modifier => {\n if (tsIsAccessModifier(modifier)) {\n return member.accessibility === modifier;\n }\n\n return !!member[modifier];\n });\n }\n\n tsIsStartOfStaticBlocks() {\n return this.isContextual(104) && this.lookaheadCharCode() === 123;\n }\n\n parseClassMember(classBody, member, state) {\n const modifiers = [\"declare\", \"private\", \"public\", \"protected\", \"override\", \"abstract\", \"readonly\", \"static\"];\n this.tsParseModifiers(member, modifiers, undefined, undefined, true);\n\n const callParseClassMemberWithIsStatic = () => {\n if (this.tsIsStartOfStaticBlocks()) {\n this.next();\n this.next();\n\n if (this.tsHasSomeModifiers(member, modifiers)) {\n this.raise(TSErrors.StaticBlockCannotHaveModifier, {\n at: this.state.curPosition()\n });\n }\n\n this.parseClassStaticBlock(classBody, member);\n } else {\n this.parseClassMemberWithIsStatic(classBody, member, state, !!member.static);\n }\n };\n\n if (member.declare) {\n this.tsInAmbientContext(callParseClassMemberWithIsStatic);\n } else {\n callParseClassMemberWithIsStatic();\n }\n }\n\n parseClassMemberWithIsStatic(classBody, member, state, isStatic) {\n const idx = this.tsTryParseIndexSignature(member);\n\n if (idx) {\n classBody.body.push(idx);\n\n if (member.abstract) {\n this.raise(TSErrors.IndexSignatureHasAbstract, {\n node: member\n });\n }\n\n if (member.accessibility) {\n this.raise(TSErrors.IndexSignatureHasAccessibility, {\n node: member\n }, member.accessibility);\n }\n\n if (member.declare) {\n this.raise(TSErrors.IndexSignatureHasDeclare, {\n node: member\n });\n }\n\n if (member.override) {\n this.raise(TSErrors.IndexSignatureHasOverride, {\n node: member\n });\n }\n\n return;\n }\n\n if (!this.state.inAbstractClass && member.abstract) {\n this.raise(TSErrors.NonAbstractClassHasAbstractMethod, {\n node: member\n });\n }\n\n if (member.override) {\n if (!state.hadSuperClass) {\n this.raise(TSErrors.OverrideNotInSubClass, {\n node: member\n });\n }\n }\n\n super.parseClassMemberWithIsStatic(classBody, member, state, isStatic);\n }\n\n parsePostMemberNameModifiers(methodOrProp) {\n const optional = this.eat(17);\n if (optional) methodOrProp.optional = true;\n\n if (methodOrProp.readonly && this.match(10)) {\n this.raise(TSErrors.ClassMethodHasReadonly, {\n node: methodOrProp\n });\n }\n\n if (methodOrProp.declare && this.match(10)) {\n this.raise(TSErrors.ClassMethodHasDeclare, {\n node: methodOrProp\n });\n }\n }\n\n parseExpressionStatement(node, expr) {\n const decl = expr.type === \"Identifier\" ? this.tsParseExpressionStatement(node, expr) : undefined;\n return decl || super.parseExpressionStatement(node, expr);\n }\n\n shouldParseExportDeclaration() {\n if (this.tsIsDeclarationStart()) return true;\n return super.shouldParseExportDeclaration();\n }\n\n parseConditional(expr, startPos, startLoc, refExpressionErrors) {\n if (!this.state.maybeInArrowParameters || !this.match(17)) {\n return super.parseConditional(expr, startPos, startLoc, refExpressionErrors);\n }\n\n const result = this.tryParse(() => super.parseConditional(expr, startPos, startLoc));\n\n if (!result.node) {\n if (result.error) {\n super.setOptionalParametersError(refExpressionErrors, result.error);\n }\n\n return expr;\n }\n\n if (result.error) this.state = result.failState;\n return result.node;\n }\n\n parseParenItem(node, startPos, startLoc) {\n node = super.parseParenItem(node, startPos, startLoc);\n\n if (this.eat(17)) {\n node.optional = true;\n this.resetEndLocation(node);\n }\n\n if (this.match(14)) {\n const typeCastNode = this.startNodeAt(startPos, startLoc);\n typeCastNode.expression = node;\n typeCastNode.typeAnnotation = this.tsParseTypeAnnotation();\n return this.finishNode(typeCastNode, \"TSTypeCastExpression\");\n }\n\n return node;\n }\n\n parseExportDeclaration(node) {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const isDeclare = this.eatContextual(121);\n\n if (isDeclare && (this.isContextual(121) || !this.shouldParseExportDeclaration())) {\n throw this.raise(TSErrors.ExpectedAmbientAfterExportDeclare, {\n at: this.state.startLoc\n });\n }\n\n let declaration;\n\n if (tokenIsIdentifier(this.state.type)) {\n declaration = this.tsTryParseExportDeclaration();\n }\n\n if (!declaration) {\n declaration = super.parseExportDeclaration(node);\n }\n\n if (declaration && (declaration.type === \"TSInterfaceDeclaration\" || declaration.type === \"TSTypeAliasDeclaration\" || isDeclare)) {\n node.exportKind = \"type\";\n }\n\n if (declaration && isDeclare) {\n this.resetStartLocation(declaration, startPos, startLoc);\n declaration.declare = true;\n }\n\n return declaration;\n }\n\n parseClassId(node, isStatement, optionalId) {\n if ((!isStatement || optionalId) && this.isContextual(110)) {\n return;\n }\n\n super.parseClassId(node, isStatement, optionalId, node.declare ? BIND_TS_AMBIENT : BIND_CLASS);\n const typeParameters = this.tsTryParseTypeParameters();\n if (typeParameters) node.typeParameters = typeParameters;\n }\n\n parseClassPropertyAnnotation(node) {\n if (!node.optional && this.eat(35)) {\n node.definite = true;\n }\n\n const type = this.tsTryParseTypeAnnotation();\n if (type) node.typeAnnotation = type;\n }\n\n parseClassProperty(node) {\n this.parseClassPropertyAnnotation(node);\n\n if (this.state.isAmbientContext && this.match(29)) {\n this.raise(TSErrors.DeclareClassFieldHasInitializer, {\n at: this.state.startLoc\n });\n }\n\n if (node.abstract && this.match(29)) {\n const {\n key\n } = node;\n this.raise(TSErrors.AbstractPropertyHasInitializer, {\n at: this.state.startLoc\n }, key.type === \"Identifier\" && !node.computed ? key.name : `[${this.input.slice(key.start, key.end)}]`);\n }\n\n return super.parseClassProperty(node);\n }\n\n parseClassPrivateProperty(node) {\n if (node.abstract) {\n this.raise(TSErrors.PrivateElementHasAbstract, {\n node\n });\n }\n\n if (node.accessibility) {\n this.raise(TSErrors.PrivateElementHasAccessibility, {\n node\n }, node.accessibility);\n }\n\n this.parseClassPropertyAnnotation(node);\n return super.parseClassPrivateProperty(node);\n }\n\n pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {\n const typeParameters = this.tsTryParseTypeParameters();\n\n if (typeParameters && isConstructor) {\n this.raise(TSErrors.ConstructorHasTypeParameters, {\n node: typeParameters\n });\n }\n\n if (method.declare && (method.kind === \"get\" || method.kind === \"set\")) {\n this.raise(TSErrors.DeclareAccessor, {\n node: method\n }, method.kind);\n }\n\n if (typeParameters) method.typeParameters = typeParameters;\n super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper);\n }\n\n pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {\n const typeParameters = this.tsTryParseTypeParameters();\n if (typeParameters) method.typeParameters = typeParameters;\n super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);\n }\n\n declareClassPrivateMethodInScope(node, kind) {\n if (node.type === \"TSDeclareMethod\") return;\n if (node.type === \"MethodDefinition\" && !node.value.body) return;\n super.declareClassPrivateMethodInScope(node, kind);\n }\n\n parseClassSuper(node) {\n super.parseClassSuper(node);\n\n if (node.superClass && (this.match(47) || this.match(51))) {\n node.superTypeParameters = this.tsParseTypeArgumentsInExpression();\n }\n\n if (this.eatContextual(110)) {\n node.implements = this.tsParseHeritageClause(\"implements\");\n }\n }\n\n parseObjPropValue(prop, ...args) {\n const typeParameters = this.tsTryParseTypeParameters();\n if (typeParameters) prop.typeParameters = typeParameters;\n super.parseObjPropValue(prop, ...args);\n }\n\n parseFunctionParams(node, allowModifiers) {\n const typeParameters = this.tsTryParseTypeParameters();\n if (typeParameters) node.typeParameters = typeParameters;\n super.parseFunctionParams(node, allowModifiers);\n }\n\n parseVarId(decl, kind) {\n super.parseVarId(decl, kind);\n\n if (decl.id.type === \"Identifier\" && !this.hasPrecedingLineBreak() && this.eat(35)) {\n decl.definite = true;\n }\n\n const type = this.tsTryParseTypeAnnotation();\n\n if (type) {\n decl.id.typeAnnotation = type;\n this.resetEndLocation(decl.id);\n }\n }\n\n parseAsyncArrowFromCallExpression(node, call) {\n if (this.match(14)) {\n node.returnType = this.tsParseTypeAnnotation();\n }\n\n return super.parseAsyncArrowFromCallExpression(node, call);\n }\n\n parseMaybeAssign(...args) {\n var _jsx, _jsx2, _typeCast, _jsx3, _typeCast2, _jsx4, _typeCast3;\n\n let state;\n let jsx;\n let typeCast;\n\n if (this.hasPlugin(\"jsx\") && (this.match(138) || this.match(47))) {\n state = this.state.clone();\n jsx = this.tryParse(() => super.parseMaybeAssign(...args), state);\n if (!jsx.error) return jsx.node;\n const {\n context\n } = this.state;\n const currentContext = context[context.length - 1];\n\n if (currentContext === types.j_oTag || currentContext === types.j_expr) {\n context.pop();\n }\n }\n\n if (!((_jsx = jsx) != null && _jsx.error) && !this.match(47)) {\n return super.parseMaybeAssign(...args);\n }\n\n let typeParameters;\n state = state || this.state.clone();\n const arrow = this.tryParse(abort => {\n var _expr$extra, _typeParameters;\n\n typeParameters = this.tsParseTypeParameters();\n const expr = super.parseMaybeAssign(...args);\n\n if (expr.type !== \"ArrowFunctionExpression\" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) {\n abort();\n }\n\n if (((_typeParameters = typeParameters) == null ? void 0 : _typeParameters.params.length) !== 0) {\n this.resetStartLocationFromNode(expr, typeParameters);\n }\n\n expr.typeParameters = typeParameters;\n return expr;\n }, state);\n\n if (!arrow.error && !arrow.aborted) {\n if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);\n return arrow.node;\n }\n\n if (!jsx) {\n assert(!this.hasPlugin(\"jsx\"));\n typeCast = this.tryParse(() => super.parseMaybeAssign(...args), state);\n if (!typeCast.error) return typeCast.node;\n }\n\n if ((_jsx2 = jsx) != null && _jsx2.node) {\n this.state = jsx.failState;\n return jsx.node;\n }\n\n if (arrow.node) {\n this.state = arrow.failState;\n if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);\n return arrow.node;\n }\n\n if ((_typeCast = typeCast) != null && _typeCast.node) {\n this.state = typeCast.failState;\n return typeCast.node;\n }\n\n if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error;\n if (arrow.thrown) throw arrow.error;\n if ((_typeCast2 = typeCast) != null && _typeCast2.thrown) throw typeCast.error;\n throw ((_jsx4 = jsx) == null ? void 0 : _jsx4.error) || arrow.error || ((_typeCast3 = typeCast) == null ? void 0 : _typeCast3.error);\n }\n\n reportReservedArrowTypeParam(node) {\n var _node$extra;\n\n if (node.params.length === 1 && !((_node$extra = node.extra) != null && _node$extra.trailingComma) && this.getPluginOption(\"typescript\", \"disallowAmbiguousJSXLike\")) {\n this.raise(TSErrors.ReservedArrowTypeParam, {\n node\n });\n }\n }\n\n parseMaybeUnary(refExpressionErrors) {\n if (!this.hasPlugin(\"jsx\") && this.match(47)) {\n return this.tsParseTypeAssertion();\n } else {\n return super.parseMaybeUnary(refExpressionErrors);\n }\n }\n\n parseArrow(node) {\n if (this.match(14)) {\n const result = this.tryParse(abort => {\n const returnType = this.tsParseTypeOrTypePredicateAnnotation(14);\n if (this.canInsertSemicolon() || !this.match(19)) abort();\n return returnType;\n });\n if (result.aborted) return;\n\n if (!result.thrown) {\n if (result.error) this.state = result.failState;\n node.returnType = result.node;\n }\n }\n\n return super.parseArrow(node);\n }\n\n parseAssignableListItemTypes(param) {\n if (this.eat(17)) {\n if (param.type !== \"Identifier\" && !this.state.isAmbientContext && !this.state.inType) {\n this.raise(TSErrors.PatternIsOptional, {\n node: param\n });\n }\n\n param.optional = true;\n }\n\n const type = this.tsTryParseTypeAnnotation();\n if (type) param.typeAnnotation = type;\n this.resetEndLocation(param);\n return param;\n }\n\n isAssignable(node, isBinding) {\n switch (node.type) {\n case \"TSTypeCastExpression\":\n return this.isAssignable(node.expression, isBinding);\n\n case \"TSParameterProperty\":\n return true;\n\n default:\n return super.isAssignable(node, isBinding);\n }\n }\n\n toAssignable(node, isLHS = false) {\n switch (node.type) {\n case \"TSTypeCastExpression\":\n return super.toAssignable(this.typeCastToParameter(node), isLHS);\n\n case \"TSParameterProperty\":\n return super.toAssignable(node, isLHS);\n\n case \"ParenthesizedExpression\":\n return this.toAssignableParenthesizedExpression(node, isLHS);\n\n case \"TSAsExpression\":\n case \"TSNonNullExpression\":\n case \"TSTypeAssertion\":\n node.expression = this.toAssignable(node.expression, isLHS);\n return node;\n\n default:\n return super.toAssignable(node, isLHS);\n }\n }\n\n toAssignableParenthesizedExpression(node, isLHS) {\n switch (node.expression.type) {\n case \"TSAsExpression\":\n case \"TSNonNullExpression\":\n case \"TSTypeAssertion\":\n case \"ParenthesizedExpression\":\n node.expression = this.toAssignable(node.expression, isLHS);\n return node;\n\n default:\n return super.toAssignable(node, isLHS);\n }\n }\n\n checkLVal(expr, contextDescription, ...args) {\n var _expr$extra2;\n\n switch (expr.type) {\n case \"TSTypeCastExpression\":\n return;\n\n case \"TSParameterProperty\":\n this.checkLVal(expr.parameter, \"parameter property\", ...args);\n return;\n\n case \"TSAsExpression\":\n case \"TSTypeAssertion\":\n if (!args[0] && contextDescription !== \"parenthesized expression\" && !((_expr$extra2 = expr.extra) != null && _expr$extra2.parenthesized)) {\n this.raise(ErrorMessages.InvalidLhs, {\n node: expr\n }, contextDescription);\n break;\n }\n\n this.checkLVal(expr.expression, \"parenthesized expression\", ...args);\n return;\n\n case \"TSNonNullExpression\":\n this.checkLVal(expr.expression, contextDescription, ...args);\n return;\n\n default:\n super.checkLVal(expr, contextDescription, ...args);\n return;\n }\n }\n\n parseBindingAtom() {\n switch (this.state.type) {\n case 78:\n return this.parseIdentifier(true);\n\n default:\n return super.parseBindingAtom();\n }\n }\n\n parseMaybeDecoratorArguments(expr) {\n if (this.match(47) || this.match(51)) {\n const typeArguments = this.tsParseTypeArgumentsInExpression();\n\n if (this.match(10)) {\n const call = super.parseMaybeDecoratorArguments(expr);\n call.typeParameters = typeArguments;\n return call;\n }\n\n this.unexpected(null, 10);\n }\n\n return super.parseMaybeDecoratorArguments(expr);\n }\n\n checkCommaAfterRest(close) {\n if (this.state.isAmbientContext && this.match(12) && this.lookaheadCharCode() === close) {\n this.next();\n return false;\n } else {\n return super.checkCommaAfterRest(close);\n }\n }\n\n isClassMethod() {\n return this.match(47) || super.isClassMethod();\n }\n\n isClassProperty() {\n return this.match(35) || this.match(14) || super.isClassProperty();\n }\n\n parseMaybeDefault(...args) {\n const node = super.parseMaybeDefault(...args);\n\n if (node.type === \"AssignmentPattern\" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) {\n this.raise(TSErrors.TypeAnnotationAfterAssign, {\n node: node.typeAnnotation\n });\n }\n\n return node;\n }\n\n getTokenFromCode(code) {\n if (this.state.inType) {\n if (code === 62) {\n return this.finishOp(48, 1);\n }\n\n if (code === 60) {\n return this.finishOp(47, 1);\n }\n }\n\n return super.getTokenFromCode(code);\n }\n\n reScan_lt_gt() {\n const {\n type\n } = this.state;\n\n if (type === 47) {\n this.state.pos -= 1;\n this.readToken_lt();\n } else if (type === 48) {\n this.state.pos -= 1;\n this.readToken_gt();\n }\n }\n\n reScan_lt() {\n const {\n type\n } = this.state;\n\n if (type === 51) {\n this.state.pos -= 2;\n this.finishOp(47, 1);\n return 47;\n }\n\n return type;\n }\n\n toAssignableList(exprList) {\n for (let i = 0; i < exprList.length; i++) {\n const expr = exprList[i];\n if (!expr) continue;\n\n switch (expr.type) {\n case \"TSTypeCastExpression\":\n exprList[i] = this.typeCastToParameter(expr);\n break;\n\n case \"TSAsExpression\":\n case \"TSTypeAssertion\":\n if (!this.state.maybeInArrowParameters) {\n exprList[i] = this.typeCastToParameter(expr);\n } else {\n this.raise(TSErrors.UnexpectedTypeCastInParameter, {\n node: expr\n });\n }\n\n break;\n }\n }\n\n return super.toAssignableList(...arguments);\n }\n\n typeCastToParameter(node) {\n node.expression.typeAnnotation = node.typeAnnotation;\n this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);\n return node.expression;\n }\n\n shouldParseArrow(params) {\n if (this.match(14)) {\n return params.every(expr => this.isAssignable(expr, true));\n }\n\n return super.shouldParseArrow(params);\n }\n\n shouldParseAsyncArrow() {\n return this.match(14) || super.shouldParseAsyncArrow();\n }\n\n canHaveLeadingDecorator() {\n return super.canHaveLeadingDecorator() || this.isAbstractClass();\n }\n\n jsxParseOpeningElementAfterName(node) {\n if (this.match(47) || this.match(51)) {\n const typeArguments = this.tsTryParseAndCatch(() => this.tsParseTypeArgumentsInExpression());\n if (typeArguments) node.typeParameters = typeArguments;\n }\n\n return super.jsxParseOpeningElementAfterName(node);\n }\n\n getGetterSetterExpectedParamCount(method) {\n const baseCount = super.getGetterSetterExpectedParamCount(method);\n const params = this.getObjectOrClassMethodParams(method);\n const firstParam = params[0];\n const hasContextParam = firstParam && this.isThisParam(firstParam);\n return hasContextParam ? baseCount + 1 : baseCount;\n }\n\n parseCatchClauseParam() {\n const param = super.parseCatchClauseParam();\n const type = this.tsTryParseTypeAnnotation();\n\n if (type) {\n param.typeAnnotation = type;\n this.resetEndLocation(param);\n }\n\n return param;\n }\n\n tsInAmbientContext(cb) {\n const oldIsAmbientContext = this.state.isAmbientContext;\n this.state.isAmbientContext = true;\n\n try {\n return cb();\n } finally {\n this.state.isAmbientContext = oldIsAmbientContext;\n }\n }\n\n parseClass(node, ...args) {\n const oldInAbstractClass = this.state.inAbstractClass;\n this.state.inAbstractClass = !!node.abstract;\n\n try {\n return super.parseClass(node, ...args);\n } finally {\n this.state.inAbstractClass = oldInAbstractClass;\n }\n }\n\n tsParseAbstractDeclaration(node) {\n if (this.match(80)) {\n node.abstract = true;\n return this.parseClass(node, true, false);\n } else if (this.isContextual(125)) {\n if (!this.hasFollowingLineBreak()) {\n node.abstract = true;\n this.raise(TSErrors.NonClassMethodPropertyHasAbstractModifer, {\n node\n });\n this.next();\n return this.tsParseInterfaceDeclaration(node);\n }\n } else {\n this.unexpected(null, 80);\n }\n }\n\n parseMethod(...args) {\n const method = super.parseMethod(...args);\n\n if (method.abstract) {\n const hasBody = this.hasPlugin(\"estree\") ? !!method.value.body : !!method.body;\n\n if (hasBody) {\n const {\n key\n } = method;\n this.raise(TSErrors.AbstractMethodHasImplementation, {\n node: method\n }, key.type === \"Identifier\" && !method.computed ? key.name : `[${this.input.slice(key.start, key.end)}]`);\n }\n }\n\n return method;\n }\n\n tsParseTypeParameterName() {\n const typeName = this.parseIdentifier();\n return typeName.name;\n }\n\n shouldParseAsAmbientContext() {\n return !!this.getPluginOption(\"typescript\", \"dts\");\n }\n\n parse() {\n if (this.shouldParseAsAmbientContext()) {\n this.state.isAmbientContext = true;\n }\n\n return super.parse();\n }\n\n getExpression() {\n if (this.shouldParseAsAmbientContext()) {\n this.state.isAmbientContext = true;\n }\n\n return super.getExpression();\n }\n\n parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) {\n if (!isString && isMaybeTypeOnly) {\n this.parseTypeOnlyImportExportSpecifier(node, false, isInTypeExport);\n return this.finishNode(node, \"ExportSpecifier\");\n }\n\n node.exportKind = \"value\";\n return super.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly);\n }\n\n parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly) {\n if (!importedIsString && isMaybeTypeOnly) {\n this.parseTypeOnlyImportExportSpecifier(specifier, true, isInTypeOnlyImport);\n return this.finishNode(specifier, \"ImportSpecifier\");\n }\n\n specifier.importKind = \"value\";\n return super.parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly);\n }\n\n parseTypeOnlyImportExportSpecifier(node, isImport, isInTypeOnlyImportExport) {\n const leftOfAsKey = isImport ? \"imported\" : \"local\";\n const rightOfAsKey = isImport ? \"local\" : \"exported\";\n let leftOfAs = node[leftOfAsKey];\n let rightOfAs;\n let hasTypeSpecifier = false;\n let canParseAsKeyword = true;\n const loc = leftOfAs.loc.start;\n\n if (this.isContextual(93)) {\n const firstAs = this.parseIdentifier();\n\n if (this.isContextual(93)) {\n const secondAs = this.parseIdentifier();\n\n if (tokenIsKeywordOrIdentifier(this.state.type)) {\n hasTypeSpecifier = true;\n leftOfAs = firstAs;\n rightOfAs = this.parseIdentifier();\n canParseAsKeyword = false;\n } else {\n rightOfAs = secondAs;\n canParseAsKeyword = false;\n }\n } else if (tokenIsKeywordOrIdentifier(this.state.type)) {\n canParseAsKeyword = false;\n rightOfAs = this.parseIdentifier();\n } else {\n hasTypeSpecifier = true;\n leftOfAs = firstAs;\n }\n } else if (tokenIsKeywordOrIdentifier(this.state.type)) {\n hasTypeSpecifier = true;\n leftOfAs = this.parseIdentifier();\n }\n\n if (hasTypeSpecifier && isInTypeOnlyImportExport) {\n this.raise(isImport ? TSErrors.TypeModifierIsUsedInTypeImports : TSErrors.TypeModifierIsUsedInTypeExports, {\n at: loc\n });\n }\n\n node[leftOfAsKey] = leftOfAs;\n node[rightOfAsKey] = rightOfAs;\n const kindKey = isImport ? \"importKind\" : \"exportKind\";\n node[kindKey] = hasTypeSpecifier ? \"type\" : \"value\";\n\n if (canParseAsKeyword && this.eatContextual(93)) {\n node[rightOfAsKey] = isImport ? this.parseIdentifier() : this.parseModuleExportName();\n }\n\n if (!node[rightOfAsKey]) {\n node[rightOfAsKey] = cloneIdentifier(node[leftOfAsKey]);\n }\n\n if (isImport) {\n this.checkLVal(node[rightOfAsKey], \"import specifier\", BIND_LEXICAL);\n }\n }\n\n});\n\nconst PlaceholderErrors = makeErrorTemplates({\n ClassNameIsRequired: \"A class name is required.\"\n}, ErrorCodes.SyntaxError, \"placeholders\");\nvar placeholders = (superClass => class extends superClass {\n parsePlaceholder(expectedNode) {\n if (this.match(140)) {\n const node = this.startNode();\n this.next();\n this.assertNoSpace(\"Unexpected space in placeholder.\");\n node.name = super.parseIdentifier(true);\n this.assertNoSpace(\"Unexpected space in placeholder.\");\n this.expect(140);\n return this.finishPlaceholder(node, expectedNode);\n }\n }\n\n finishPlaceholder(node, expectedNode) {\n const isFinished = !!(node.expectedNode && node.type === \"Placeholder\");\n node.expectedNode = expectedNode;\n return isFinished ? node : this.finishNode(node, \"Placeholder\");\n }\n\n getTokenFromCode(code) {\n if (code === 37 && this.input.charCodeAt(this.state.pos + 1) === 37) {\n return this.finishOp(140, 2);\n }\n\n return super.getTokenFromCode(...arguments);\n }\n\n parseExprAtom() {\n return this.parsePlaceholder(\"Expression\") || super.parseExprAtom(...arguments);\n }\n\n parseIdentifier() {\n return this.parsePlaceholder(\"Identifier\") || super.parseIdentifier(...arguments);\n }\n\n checkReservedWord(word) {\n if (word !== undefined) super.checkReservedWord(...arguments);\n }\n\n parseBindingAtom() {\n return this.parsePlaceholder(\"Pattern\") || super.parseBindingAtom(...arguments);\n }\n\n checkLVal(expr) {\n if (expr.type !== \"Placeholder\") super.checkLVal(...arguments);\n }\n\n toAssignable(node) {\n if (node && node.type === \"Placeholder\" && node.expectedNode === \"Expression\") {\n node.expectedNode = \"Pattern\";\n return node;\n }\n\n return super.toAssignable(...arguments);\n }\n\n isLet(context) {\n if (super.isLet(context)) {\n return true;\n }\n\n if (!this.isContextual(99)) {\n return false;\n }\n\n if (context) return false;\n const nextToken = this.lookahead();\n\n if (nextToken.type === 140) {\n return true;\n }\n\n return false;\n }\n\n verifyBreakContinue(node) {\n if (node.label && node.label.type === \"Placeholder\") return;\n super.verifyBreakContinue(...arguments);\n }\n\n parseExpressionStatement(node, expr) {\n if (expr.type !== \"Placeholder\" || expr.extra && expr.extra.parenthesized) {\n return super.parseExpressionStatement(...arguments);\n }\n\n if (this.match(14)) {\n const stmt = node;\n stmt.label = this.finishPlaceholder(expr, \"Identifier\");\n this.next();\n stmt.body = this.parseStatement(\"label\");\n return this.finishNode(stmt, \"LabeledStatement\");\n }\n\n this.semicolon();\n node.name = expr.name;\n return this.finishPlaceholder(node, \"Statement\");\n }\n\n parseBlock() {\n return this.parsePlaceholder(\"BlockStatement\") || super.parseBlock(...arguments);\n }\n\n parseFunctionId() {\n return this.parsePlaceholder(\"Identifier\") || super.parseFunctionId(...arguments);\n }\n\n parseClass(node, isStatement, optionalId) {\n const type = isStatement ? \"ClassDeclaration\" : \"ClassExpression\";\n this.next();\n this.takeDecorators(node);\n const oldStrict = this.state.strict;\n const placeholder = this.parsePlaceholder(\"Identifier\");\n\n if (placeholder) {\n if (this.match(81) || this.match(140) || this.match(5)) {\n node.id = placeholder;\n } else if (optionalId || !isStatement) {\n node.id = null;\n node.body = this.finishPlaceholder(placeholder, \"ClassBody\");\n return this.finishNode(node, type);\n } else {\n throw this.raise(PlaceholderErrors.ClassNameIsRequired, {\n at: this.state.startLoc\n });\n }\n } else {\n this.parseClassId(node, isStatement, optionalId);\n }\n\n this.parseClassSuper(node);\n node.body = this.parsePlaceholder(\"ClassBody\") || this.parseClassBody(!!node.superClass, oldStrict);\n return this.finishNode(node, type);\n }\n\n parseExport(node) {\n const placeholder = this.parsePlaceholder(\"Identifier\");\n if (!placeholder) return super.parseExport(...arguments);\n\n if (!this.isContextual(97) && !this.match(12)) {\n node.specifiers = [];\n node.source = null;\n node.declaration = this.finishPlaceholder(placeholder, \"Declaration\");\n return this.finishNode(node, \"ExportNamedDeclaration\");\n }\n\n this.expectPlugin(\"exportDefaultFrom\");\n const specifier = this.startNode();\n specifier.exported = placeholder;\n node.specifiers = [this.finishNode(specifier, \"ExportDefaultSpecifier\")];\n return super.parseExport(node);\n }\n\n isExportDefaultSpecifier() {\n if (this.match(65)) {\n const next = this.nextTokenStart();\n\n if (this.isUnparsedContextual(next, \"from\")) {\n if (this.input.startsWith(tokenLabelName(140), this.nextTokenStartSince(next + 4))) {\n return true;\n }\n }\n }\n\n return super.isExportDefaultSpecifier();\n }\n\n maybeParseExportDefaultSpecifier(node) {\n if (node.specifiers && node.specifiers.length > 0) {\n return true;\n }\n\n return super.maybeParseExportDefaultSpecifier(...arguments);\n }\n\n checkExport(node) {\n const {\n specifiers\n } = node;\n\n if (specifiers != null && specifiers.length) {\n node.specifiers = specifiers.filter(node => node.exported.type === \"Placeholder\");\n }\n\n super.checkExport(node);\n node.specifiers = specifiers;\n }\n\n parseImport(node) {\n const placeholder = this.parsePlaceholder(\"Identifier\");\n if (!placeholder) return super.parseImport(...arguments);\n node.specifiers = [];\n\n if (!this.isContextual(97) && !this.match(12)) {\n node.source = this.finishPlaceholder(placeholder, \"StringLiteral\");\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\");\n }\n\n const specifier = this.startNodeAtNode(placeholder);\n specifier.local = placeholder;\n this.finishNode(specifier, \"ImportDefaultSpecifier\");\n node.specifiers.push(specifier);\n\n if (this.eat(12)) {\n const hasStarImport = this.maybeParseStarImportSpecifier(node);\n if (!hasStarImport) this.parseNamedImportSpecifiers(node);\n }\n\n this.expectContextual(97);\n node.source = this.parseImportSource();\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\");\n }\n\n parseImportSource() {\n return this.parsePlaceholder(\"StringLiteral\") || super.parseImportSource(...arguments);\n }\n\n});\n\nvar v8intrinsic = (superClass => class extends superClass {\n parseV8Intrinsic() {\n if (this.match(54)) {\n const v8IntrinsicStartLoc = this.state.startLoc;\n const node = this.startNode();\n this.next();\n\n if (tokenIsIdentifier(this.state.type)) {\n const name = this.parseIdentifierName(this.state.start);\n const identifier = this.createIdentifier(node, name);\n identifier.type = \"V8IntrinsicIdentifier\";\n\n if (this.match(10)) {\n return identifier;\n }\n }\n\n this.unexpected(v8IntrinsicStartLoc);\n }\n }\n\n parseExprAtom() {\n return this.parseV8Intrinsic() || super.parseExprAtom(...arguments);\n }\n\n});\n\nfunction hasPlugin(plugins, expectedConfig) {\n const [expectedName, expectedOptions] = typeof expectedConfig === \"string\" ? [expectedConfig, {}] : expectedConfig;\n const expectedKeys = Object.keys(expectedOptions);\n const expectedOptionsIsEmpty = expectedKeys.length === 0;\n return plugins.some(p => {\n if (typeof p === \"string\") {\n return expectedOptionsIsEmpty && p === expectedName;\n } else {\n const [pluginName, pluginOptions] = p;\n\n if (pluginName !== expectedName) {\n return false;\n }\n\n for (const key of expectedKeys) {\n if (pluginOptions[key] !== expectedOptions[key]) {\n return false;\n }\n }\n\n return true;\n }\n });\n}\nfunction getPluginOption(plugins, name, option) {\n const plugin = plugins.find(plugin => {\n if (Array.isArray(plugin)) {\n return plugin[0] === name;\n } else {\n return plugin === name;\n }\n });\n\n if (plugin && Array.isArray(plugin)) {\n return plugin[1][option];\n }\n\n return null;\n}\nconst PIPELINE_PROPOSALS = [\"minimal\", \"fsharp\", \"hack\", \"smart\"];\nconst TOPIC_TOKENS = [\"^^\", \"@@\", \"^\", \"%\", \"#\"];\nconst RECORD_AND_TUPLE_SYNTAX_TYPES = [\"hash\", \"bar\"];\nfunction validatePlugins(plugins) {\n if (hasPlugin(plugins, \"decorators\")) {\n if (hasPlugin(plugins, \"decorators-legacy\")) {\n throw new Error(\"Cannot use the decorators and decorators-legacy plugin together\");\n }\n\n const decoratorsBeforeExport = getPluginOption(plugins, \"decorators\", \"decoratorsBeforeExport\");\n\n if (decoratorsBeforeExport == null) {\n throw new Error(\"The 'decorators' plugin requires a 'decoratorsBeforeExport' option,\" + \" whose value must be a boolean. If you are migrating from\" + \" Babylon/Babel 6 or want to use the old decorators proposal, you\" + \" should use the 'decorators-legacy' plugin instead of 'decorators'.\");\n } else if (typeof decoratorsBeforeExport !== \"boolean\") {\n throw new Error(\"'decoratorsBeforeExport' must be a boolean.\");\n }\n }\n\n if (hasPlugin(plugins, \"flow\") && hasPlugin(plugins, \"typescript\")) {\n throw new Error(\"Cannot combine flow and typescript plugins.\");\n }\n\n if (hasPlugin(plugins, \"placeholders\") && hasPlugin(plugins, \"v8intrinsic\")) {\n throw new Error(\"Cannot combine placeholders and v8intrinsic plugins.\");\n }\n\n if (hasPlugin(plugins, \"pipelineOperator\")) {\n const proposal = getPluginOption(plugins, \"pipelineOperator\", \"proposal\");\n\n if (!PIPELINE_PROPOSALS.includes(proposal)) {\n const proposalList = PIPELINE_PROPOSALS.map(p => `\"${p}\"`).join(\", \");\n throw new Error(`\"pipelineOperator\" requires \"proposal\" option whose value must be one of: ${proposalList}.`);\n }\n\n const tupleSyntaxIsHash = hasPlugin(plugins, [\"recordAndTuple\", {\n syntaxType: \"hash\"\n }]);\n\n if (proposal === \"hack\") {\n if (hasPlugin(plugins, \"placeholders\")) {\n throw new Error(\"Cannot combine placeholders plugin and Hack-style pipes.\");\n }\n\n if (hasPlugin(plugins, \"v8intrinsic\")) {\n throw new Error(\"Cannot combine v8intrinsic plugin and Hack-style pipes.\");\n }\n\n const topicToken = getPluginOption(plugins, \"pipelineOperator\", \"topicToken\");\n\n if (!TOPIC_TOKENS.includes(topicToken)) {\n const tokenList = TOPIC_TOKENS.map(t => `\"${t}\"`).join(\", \");\n throw new Error(`\"pipelineOperator\" in \"proposal\": \"hack\" mode also requires a \"topicToken\" option whose value must be one of: ${tokenList}.`);\n }\n\n if (topicToken === \"#\" && tupleSyntaxIsHash) {\n throw new Error('Plugin conflict between `[\"pipelineOperator\", { proposal: \"hack\", topicToken: \"#\" }]` and `[\"recordAndtuple\", { syntaxType: \"hash\"}]`.');\n }\n } else if (proposal === \"smart\" && tupleSyntaxIsHash) {\n throw new Error('Plugin conflict between `[\"pipelineOperator\", { proposal: \"smart\" }]` and `[\"recordAndtuple\", { syntaxType: \"hash\"}]`.');\n }\n }\n\n if (hasPlugin(plugins, \"moduleAttributes\")) {\n {\n if (hasPlugin(plugins, \"importAssertions\")) {\n throw new Error(\"Cannot combine importAssertions and moduleAttributes plugins.\");\n }\n\n const moduleAttributesVerionPluginOption = getPluginOption(plugins, \"moduleAttributes\", \"version\");\n\n if (moduleAttributesVerionPluginOption !== \"may-2020\") {\n throw new Error(\"The 'moduleAttributes' plugin requires a 'version' option,\" + \" representing the last proposal update. Currently, the\" + \" only supported value is 'may-2020'.\");\n }\n }\n }\n\n if (hasPlugin(plugins, \"recordAndTuple\") && !RECORD_AND_TUPLE_SYNTAX_TYPES.includes(getPluginOption(plugins, \"recordAndTuple\", \"syntaxType\"))) {\n throw new Error(\"'recordAndTuple' requires 'syntaxType' option whose value should be one of: \" + RECORD_AND_TUPLE_SYNTAX_TYPES.map(p => `'${p}'`).join(\", \"));\n }\n\n if (hasPlugin(plugins, \"asyncDoExpressions\") && !hasPlugin(plugins, \"doExpressions\")) {\n const error = new Error(\"'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins.\");\n error.missingPlugins = \"doExpressions\";\n throw error;\n }\n}\nconst mixinPlugins = {\n estree,\n jsx,\n flow,\n typescript,\n v8intrinsic,\n placeholders\n};\nconst mixinPluginNames = Object.keys(mixinPlugins);\n\nconst defaultOptions = {\n sourceType: \"script\",\n sourceFilename: undefined,\n startColumn: 0,\n startLine: 1,\n allowAwaitOutsideFunction: false,\n allowReturnOutsideFunction: false,\n allowImportExportEverywhere: false,\n allowSuperOutsideMethod: false,\n allowUndeclaredExports: false,\n plugins: [],\n strictMode: null,\n ranges: false,\n tokens: false,\n createParenthesizedExpressions: false,\n errorRecovery: false,\n attachComment: true\n};\nfunction getOptions(opts) {\n const options = {};\n\n for (const key of Object.keys(defaultOptions)) {\n options[key] = opts && opts[key] != null ? opts[key] : defaultOptions[key];\n }\n\n return options;\n}\n\nconst unwrapParenthesizedExpression = node => {\n return node.type === \"ParenthesizedExpression\" ? unwrapParenthesizedExpression(node.expression) : node;\n};\n\nclass LValParser extends NodeUtils {\n toAssignable(node, isLHS = false) {\n var _node$extra, _node$extra3;\n\n let parenthesized = undefined;\n\n if (node.type === \"ParenthesizedExpression\" || (_node$extra = node.extra) != null && _node$extra.parenthesized) {\n parenthesized = unwrapParenthesizedExpression(node);\n\n if (isLHS) {\n if (parenthesized.type === \"Identifier\") {\n this.expressionScope.recordParenthesizedIdentifierError(ErrorMessages.InvalidParenthesizedAssignment, node.loc.start);\n } else if (parenthesized.type !== \"MemberExpression\") {\n this.raise(ErrorMessages.InvalidParenthesizedAssignment, {\n node\n });\n }\n } else {\n this.raise(ErrorMessages.InvalidParenthesizedAssignment, {\n node\n });\n }\n }\n\n switch (node.type) {\n case \"Identifier\":\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"AssignmentPattern\":\n case \"RestElement\":\n break;\n\n case \"ObjectExpression\":\n node.type = \"ObjectPattern\";\n\n for (let i = 0, length = node.properties.length, last = length - 1; i < length; i++) {\n var _node$extra2;\n\n const prop = node.properties[i];\n const isLast = i === last;\n this.toAssignableObjectExpressionProp(prop, isLast, isLHS);\n\n if (isLast && prop.type === \"RestElement\" && (_node$extra2 = node.extra) != null && _node$extra2.trailingCommaLoc) {\n this.raise(ErrorMessages.RestTrailingComma, {\n at: node.extra.trailingCommaLoc\n });\n }\n }\n\n break;\n\n case \"ObjectProperty\":\n {\n const {\n key,\n value\n } = node;\n\n if (this.isPrivateName(key)) {\n this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start);\n }\n\n this.toAssignable(value, isLHS);\n break;\n }\n\n case \"SpreadElement\":\n {\n this.checkToRestConversion(node);\n node.type = \"RestElement\";\n const arg = node.argument;\n this.toAssignable(arg, isLHS);\n break;\n }\n\n case \"ArrayExpression\":\n node.type = \"ArrayPattern\";\n this.toAssignableList(node.elements, (_node$extra3 = node.extra) == null ? void 0 : _node$extra3.trailingCommaLoc, isLHS);\n break;\n\n case \"AssignmentExpression\":\n if (node.operator !== \"=\") {\n this.raise(ErrorMessages.MissingEqInAssignment, {\n at: node.left.loc.end\n });\n }\n\n node.type = \"AssignmentPattern\";\n delete node.operator;\n this.toAssignable(node.left, isLHS);\n break;\n\n case \"ParenthesizedExpression\":\n this.toAssignable(parenthesized, isLHS);\n break;\n }\n\n return node;\n }\n\n toAssignableObjectExpressionProp(prop, isLast, isLHS) {\n if (prop.type === \"ObjectMethod\") {\n this.raise(prop.kind === \"get\" || prop.kind === \"set\" ? ErrorMessages.PatternHasAccessor : ErrorMessages.PatternHasMethod, {\n node: prop.key\n });\n } else if (prop.type === \"SpreadElement\" && !isLast) {\n this.raise(ErrorMessages.RestTrailingComma, {\n node: prop\n });\n } else {\n this.toAssignable(prop, isLHS);\n }\n }\n\n toAssignableList(exprList, trailingCommaLoc, isLHS) {\n let end = exprList.length;\n\n if (end) {\n const last = exprList[end - 1];\n\n if ((last == null ? void 0 : last.type) === \"RestElement\") {\n --end;\n } else if ((last == null ? void 0 : last.type) === \"SpreadElement\") {\n last.type = \"RestElement\";\n let arg = last.argument;\n this.toAssignable(arg, isLHS);\n arg = unwrapParenthesizedExpression(arg);\n\n if (arg.type !== \"Identifier\" && arg.type !== \"MemberExpression\" && arg.type !== \"ArrayPattern\" && arg.type !== \"ObjectPattern\") {\n this.unexpected(arg.start);\n }\n\n if (trailingCommaLoc) {\n this.raise(ErrorMessages.RestTrailingComma, {\n at: trailingCommaLoc\n });\n }\n\n --end;\n }\n }\n\n for (let i = 0; i < end; i++) {\n const elt = exprList[i];\n\n if (elt) {\n this.toAssignable(elt, isLHS);\n\n if (elt.type === \"RestElement\") {\n this.raise(ErrorMessages.RestTrailingComma, {\n node: elt\n });\n }\n }\n }\n\n return exprList;\n }\n\n isAssignable(node, isBinding) {\n switch (node.type) {\n case \"Identifier\":\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"AssignmentPattern\":\n case \"RestElement\":\n return true;\n\n case \"ObjectExpression\":\n {\n const last = node.properties.length - 1;\n return node.properties.every((prop, i) => {\n return prop.type !== \"ObjectMethod\" && (i === last || prop.type !== \"SpreadElement\") && this.isAssignable(prop);\n });\n }\n\n case \"ObjectProperty\":\n return this.isAssignable(node.value);\n\n case \"SpreadElement\":\n return this.isAssignable(node.argument);\n\n case \"ArrayExpression\":\n return node.elements.every(element => element === null || this.isAssignable(element));\n\n case \"AssignmentExpression\":\n return node.operator === \"=\";\n\n case \"ParenthesizedExpression\":\n return this.isAssignable(node.expression);\n\n case \"MemberExpression\":\n case \"OptionalMemberExpression\":\n return !isBinding;\n\n default:\n return false;\n }\n }\n\n toReferencedList(exprList, isParenthesizedExpr) {\n return exprList;\n }\n\n toReferencedListDeep(exprList, isParenthesizedExpr) {\n this.toReferencedList(exprList, isParenthesizedExpr);\n\n for (const expr of exprList) {\n if ((expr == null ? void 0 : expr.type) === \"ArrayExpression\") {\n this.toReferencedListDeep(expr.elements);\n }\n }\n }\n\n parseSpread(refExpressionErrors, refNeedsArrowPos) {\n const node = this.startNode();\n this.next();\n node.argument = this.parseMaybeAssignAllowIn(refExpressionErrors, undefined, refNeedsArrowPos);\n return this.finishNode(node, \"SpreadElement\");\n }\n\n parseRestBinding() {\n const node = this.startNode();\n this.next();\n node.argument = this.parseBindingAtom();\n return this.finishNode(node, \"RestElement\");\n }\n\n parseBindingAtom() {\n switch (this.state.type) {\n case 0:\n {\n const node = this.startNode();\n this.next();\n node.elements = this.parseBindingList(3, 93, true);\n return this.finishNode(node, \"ArrayPattern\");\n }\n\n case 5:\n return this.parseObjectLike(8, true);\n }\n\n return this.parseIdentifier();\n }\n\n parseBindingList(close, closeCharCode, allowEmpty, allowModifiers) {\n const elts = [];\n let first = true;\n\n while (!this.eat(close)) {\n if (first) {\n first = false;\n } else {\n this.expect(12);\n }\n\n if (allowEmpty && this.match(12)) {\n elts.push(null);\n } else if (this.eat(close)) {\n break;\n } else if (this.match(21)) {\n elts.push(this.parseAssignableListItemTypes(this.parseRestBinding()));\n\n if (!this.checkCommaAfterRest(closeCharCode)) {\n this.expect(close);\n break;\n }\n } else {\n const decorators = [];\n\n if (this.match(26) && this.hasPlugin(\"decorators\")) {\n this.raise(ErrorMessages.UnsupportedParameterDecorator, {\n at: this.state.startLoc\n });\n }\n\n while (this.match(26)) {\n decorators.push(this.parseDecorator());\n }\n\n elts.push(this.parseAssignableListItem(allowModifiers, decorators));\n }\n }\n\n return elts;\n }\n\n parseBindingRestProperty(prop) {\n this.next();\n prop.argument = this.parseIdentifier();\n this.checkCommaAfterRest(125);\n return this.finishNode(prop, \"RestElement\");\n }\n\n parseBindingProperty() {\n const prop = this.startNode();\n const {\n type,\n start: startPos,\n startLoc\n } = this.state;\n\n if (type === 21) {\n return this.parseBindingRestProperty(prop);\n } else if (type === 134) {\n this.expectPlugin(\"destructuringPrivate\", startLoc);\n this.classScope.usePrivateName(this.state.value, startLoc);\n prop.key = this.parsePrivateName();\n } else {\n this.parsePropertyName(prop);\n }\n\n prop.method = false;\n this.parseObjPropValue(prop, startPos, startLoc, false, false, true, false);\n return prop;\n }\n\n parseAssignableListItem(allowModifiers, decorators) {\n const left = this.parseMaybeDefault();\n this.parseAssignableListItemTypes(left);\n const elt = this.parseMaybeDefault(left.start, left.loc.start, left);\n\n if (decorators.length) {\n left.decorators = decorators;\n }\n\n return elt;\n }\n\n parseAssignableListItemTypes(param) {\n return param;\n }\n\n parseMaybeDefault(startPos, startLoc, left) {\n var _startLoc, _startPos, _left;\n\n startLoc = (_startLoc = startLoc) != null ? _startLoc : this.state.startLoc;\n startPos = (_startPos = startPos) != null ? _startPos : this.state.start;\n left = (_left = left) != null ? _left : this.parseBindingAtom();\n if (!this.eat(29)) return left;\n const node = this.startNodeAt(startPos, startLoc);\n node.left = left;\n node.right = this.parseMaybeAssignAllowIn();\n return this.finishNode(node, \"AssignmentPattern\");\n }\n\n checkLVal(expr, contextDescription, bindingType = BIND_NONE, checkClashes, disallowLetBinding, strictModeChanged = false) {\n switch (expr.type) {\n case \"Identifier\":\n {\n const {\n name\n } = expr;\n\n if (this.state.strict && (strictModeChanged ? isStrictBindReservedWord(name, this.inModule) : isStrictBindOnlyReservedWord(name))) {\n this.raise(bindingType === BIND_NONE ? ErrorMessages.StrictEvalArguments : ErrorMessages.StrictEvalArgumentsBinding, {\n node: expr\n }, name);\n }\n\n if (checkClashes) {\n if (checkClashes.has(name)) {\n this.raise(ErrorMessages.ParamDupe, {\n node: expr\n });\n } else {\n checkClashes.add(name);\n }\n }\n\n if (disallowLetBinding && name === \"let\") {\n this.raise(ErrorMessages.LetInLexicalBinding, {\n node: expr\n });\n }\n\n if (!(bindingType & BIND_NONE)) {\n this.scope.declareName(name, bindingType, expr.loc.start);\n }\n\n break;\n }\n\n case \"MemberExpression\":\n if (bindingType !== BIND_NONE) {\n this.raise(ErrorMessages.InvalidPropertyBindingPattern, {\n node: expr\n });\n }\n\n break;\n\n case \"ObjectPattern\":\n for (let prop of expr.properties) {\n if (this.isObjectProperty(prop)) prop = prop.value;else if (this.isObjectMethod(prop)) continue;\n this.checkLVal(prop, \"object destructuring pattern\", bindingType, checkClashes, disallowLetBinding);\n }\n\n break;\n\n case \"ArrayPattern\":\n for (const elem of expr.elements) {\n if (elem) {\n this.checkLVal(elem, \"array destructuring pattern\", bindingType, checkClashes, disallowLetBinding);\n }\n }\n\n break;\n\n case \"AssignmentPattern\":\n this.checkLVal(expr.left, \"assignment pattern\", bindingType, checkClashes);\n break;\n\n case \"RestElement\":\n this.checkLVal(expr.argument, \"rest element\", bindingType, checkClashes);\n break;\n\n case \"ParenthesizedExpression\":\n this.checkLVal(expr.expression, \"parenthesized expression\", bindingType, checkClashes);\n break;\n\n default:\n {\n this.raise(bindingType === BIND_NONE ? ErrorMessages.InvalidLhs : ErrorMessages.InvalidLhsBinding, {\n node: expr\n }, contextDescription);\n }\n }\n }\n\n checkToRestConversion(node) {\n if (node.argument.type !== \"Identifier\" && node.argument.type !== \"MemberExpression\") {\n this.raise(ErrorMessages.InvalidRestAssignmentPattern, {\n node: node.argument\n });\n }\n }\n\n checkCommaAfterRest(close) {\n if (!this.match(12)) {\n return false;\n }\n\n this.raise(this.lookaheadCharCode() === close ? ErrorMessages.RestTrailingComma : ErrorMessages.ElementAfterRest, {\n at: this.state.startLoc\n });\n return true;\n }\n\n}\n\nconst invalidHackPipeBodies = new Map([[\"ArrowFunctionExpression\", \"arrow function\"], [\"AssignmentExpression\", \"assignment\"], [\"ConditionalExpression\", \"conditional\"], [\"YieldExpression\", \"yield\"]]);\nclass ExpressionParser extends LValParser {\n checkProto(prop, isRecord, protoRef, refExpressionErrors) {\n if (prop.type === \"SpreadElement\" || this.isObjectMethod(prop) || prop.computed || prop.shorthand) {\n return;\n }\n\n const key = prop.key;\n const name = key.type === \"Identifier\" ? key.name : key.value;\n\n if (name === \"__proto__\") {\n if (isRecord) {\n this.raise(ErrorMessages.RecordNoProto, {\n node: key\n });\n return;\n }\n\n if (protoRef.used) {\n if (refExpressionErrors) {\n if (refExpressionErrors.doubleProtoLoc === null) {\n refExpressionErrors.doubleProtoLoc = key.loc.start;\n }\n } else {\n this.raise(ErrorMessages.DuplicateProto, {\n node: key\n });\n }\n }\n\n protoRef.used = true;\n }\n }\n\n shouldExitDescending(expr, potentialArrowAt) {\n return expr.type === \"ArrowFunctionExpression\" && expr.start === potentialArrowAt;\n }\n\n getExpression() {\n this.enterInitialScopes();\n this.nextToken();\n const expr = this.parseExpression();\n\n if (!this.match(135)) {\n this.unexpected();\n }\n\n this.finalizeRemainingComments();\n expr.comments = this.state.comments;\n expr.errors = this.state.errors;\n\n if (this.options.tokens) {\n expr.tokens = this.tokens;\n }\n\n return expr;\n }\n\n parseExpression(disallowIn, refExpressionErrors) {\n if (disallowIn) {\n return this.disallowInAnd(() => this.parseExpressionBase(refExpressionErrors));\n }\n\n return this.allowInAnd(() => this.parseExpressionBase(refExpressionErrors));\n }\n\n parseExpressionBase(refExpressionErrors) {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const expr = this.parseMaybeAssign(refExpressionErrors);\n\n if (this.match(12)) {\n const node = this.startNodeAt(startPos, startLoc);\n node.expressions = [expr];\n\n while (this.eat(12)) {\n node.expressions.push(this.parseMaybeAssign(refExpressionErrors));\n }\n\n this.toReferencedList(node.expressions);\n return this.finishNode(node, \"SequenceExpression\");\n }\n\n return expr;\n }\n\n parseMaybeAssignDisallowIn(refExpressionErrors, afterLeftParse) {\n return this.disallowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse));\n }\n\n parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse) {\n return this.allowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse));\n }\n\n setOptionalParametersError(refExpressionErrors, resultError) {\n var _resultError$loc;\n\n refExpressionErrors.optionalParametersLoc = (_resultError$loc = resultError == null ? void 0 : resultError.loc) != null ? _resultError$loc : this.state.startLoc;\n }\n\n parseMaybeAssign(refExpressionErrors, afterLeftParse) {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n\n if (this.isContextual(105)) {\n if (this.prodParam.hasYield) {\n let left = this.parseYield();\n\n if (afterLeftParse) {\n left = afterLeftParse.call(this, left, startPos, startLoc);\n }\n\n return left;\n }\n }\n\n let ownExpressionErrors;\n\n if (refExpressionErrors) {\n ownExpressionErrors = false;\n } else {\n refExpressionErrors = new ExpressionErrors();\n ownExpressionErrors = true;\n }\n\n const {\n type\n } = this.state;\n\n if (type === 10 || tokenIsIdentifier(type)) {\n this.state.potentialArrowAt = this.state.start;\n }\n\n let left = this.parseMaybeConditional(refExpressionErrors);\n\n if (afterLeftParse) {\n left = afterLeftParse.call(this, left, startPos, startLoc);\n }\n\n if (tokenIsAssignment(this.state.type)) {\n const node = this.startNodeAt(startPos, startLoc);\n const operator = this.state.value;\n node.operator = operator;\n\n if (this.match(29)) {\n node.left = this.toAssignable(left, true);\n\n if (refExpressionErrors.doubleProtoLoc != null && refExpressionErrors.doubleProtoLoc.index >= startPos) {\n refExpressionErrors.doubleProtoLoc = null;\n }\n\n if (refExpressionErrors.shorthandAssignLoc != null && refExpressionErrors.shorthandAssignLoc.index >= startPos) {\n refExpressionErrors.shorthandAssignLoc = null;\n }\n\n if (refExpressionErrors.privateKeyLoc != null && refExpressionErrors.privateKeyLoc.index >= startPos) {\n this.checkDestructuringPrivate(refExpressionErrors);\n refExpressionErrors.privateKeyLoc = null;\n }\n } else {\n node.left = left;\n }\n\n this.checkLVal(left, \"assignment expression\");\n this.next();\n node.right = this.parseMaybeAssign();\n return this.finishNode(node, \"AssignmentExpression\");\n } else if (ownExpressionErrors) {\n this.checkExpressionErrors(refExpressionErrors, true);\n }\n\n return left;\n }\n\n parseMaybeConditional(refExpressionErrors) {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const potentialArrowAt = this.state.potentialArrowAt;\n const expr = this.parseExprOps(refExpressionErrors);\n\n if (this.shouldExitDescending(expr, potentialArrowAt)) {\n return expr;\n }\n\n return this.parseConditional(expr, startPos, startLoc, refExpressionErrors);\n }\n\n parseConditional(expr, startPos, startLoc, refExpressionErrors) {\n if (this.eat(17)) {\n const node = this.startNodeAt(startPos, startLoc);\n node.test = expr;\n node.consequent = this.parseMaybeAssignAllowIn();\n this.expect(14);\n node.alternate = this.parseMaybeAssign();\n return this.finishNode(node, \"ConditionalExpression\");\n }\n\n return expr;\n }\n\n parseMaybeUnaryOrPrivate(refExpressionErrors) {\n return this.match(134) ? this.parsePrivateName() : this.parseMaybeUnary(refExpressionErrors);\n }\n\n parseExprOps(refExpressionErrors) {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const potentialArrowAt = this.state.potentialArrowAt;\n const expr = this.parseMaybeUnaryOrPrivate(refExpressionErrors);\n\n if (this.shouldExitDescending(expr, potentialArrowAt)) {\n return expr;\n }\n\n return this.parseExprOp(expr, startPos, startLoc, -1);\n }\n\n parseExprOp(left, leftStartPos, leftStartLoc, minPrec) {\n if (this.isPrivateName(left)) {\n const value = this.getPrivateNameSV(left);\n\n if (minPrec >= tokenOperatorPrecedence(58) || !this.prodParam.hasIn || !this.match(58)) {\n this.raise(ErrorMessages.PrivateInExpectedIn, {\n node: left\n }, value);\n }\n\n this.classScope.usePrivateName(value, left.loc.start);\n }\n\n const op = this.state.type;\n\n if (tokenIsOperator(op) && (this.prodParam.hasIn || !this.match(58))) {\n let prec = tokenOperatorPrecedence(op);\n\n if (prec > minPrec) {\n if (op === 39) {\n this.expectPlugin(\"pipelineOperator\");\n\n if (this.state.inFSharpPipelineDirectBody) {\n return left;\n }\n\n this.checkPipelineAtInfixOperator(left, leftStartLoc);\n }\n\n const node = this.startNodeAt(leftStartPos, leftStartLoc);\n node.left = left;\n node.operator = this.state.value;\n const logical = op === 41 || op === 42;\n const coalesce = op === 40;\n\n if (coalesce) {\n prec = tokenOperatorPrecedence(42);\n }\n\n this.next();\n\n if (op === 39 && this.hasPlugin([\"pipelineOperator\", {\n proposal: \"minimal\"\n }])) {\n if (this.state.type === 96 && this.prodParam.hasAwait) {\n throw this.raise(ErrorMessages.UnexpectedAwaitAfterPipelineBody, {\n at: this.state.startLoc\n });\n }\n }\n\n node.right = this.parseExprOpRightExpr(op, prec);\n this.finishNode(node, logical || coalesce ? \"LogicalExpression\" : \"BinaryExpression\");\n const nextOp = this.state.type;\n\n if (coalesce && (nextOp === 41 || nextOp === 42) || logical && nextOp === 40) {\n throw this.raise(ErrorMessages.MixingCoalesceWithLogical, {\n at: this.state.startLoc\n });\n }\n\n return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec);\n }\n }\n\n return left;\n }\n\n parseExprOpRightExpr(op, prec) {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n\n switch (op) {\n case 39:\n switch (this.getPluginOption(\"pipelineOperator\", \"proposal\")) {\n case \"hack\":\n return this.withTopicBindingContext(() => {\n return this.parseHackPipeBody();\n });\n\n case \"smart\":\n return this.withTopicBindingContext(() => {\n if (this.prodParam.hasYield && this.isContextual(105)) {\n throw this.raise(ErrorMessages.PipeBodyIsTighter, {\n at: this.state.startLoc\n }, this.state.value);\n }\n\n return this.parseSmartPipelineBodyInStyle(this.parseExprOpBaseRightExpr(op, prec), startPos, startLoc);\n });\n\n case \"fsharp\":\n return this.withSoloAwaitPermittingContext(() => {\n return this.parseFSharpPipelineBody(prec);\n });\n }\n\n default:\n return this.parseExprOpBaseRightExpr(op, prec);\n }\n }\n\n parseExprOpBaseRightExpr(op, prec) {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n return this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startPos, startLoc, tokenIsRightAssociative(op) ? prec - 1 : prec);\n }\n\n parseHackPipeBody() {\n var _body$extra;\n\n const {\n startLoc\n } = this.state;\n const body = this.parseMaybeAssign();\n\n if (invalidHackPipeBodies.has(body.type) && !((_body$extra = body.extra) != null && _body$extra.parenthesized)) {\n this.raise(ErrorMessages.PipeUnparenthesizedBody, {\n at: startLoc\n }, invalidHackPipeBodies.get(body.type));\n }\n\n if (!this.topicReferenceWasUsedInCurrentContext()) {\n this.raise(ErrorMessages.PipeTopicUnused, {\n at: startLoc\n });\n }\n\n return body;\n }\n\n checkExponentialAfterUnary(node) {\n if (this.match(57)) {\n this.raise(ErrorMessages.UnexpectedTokenUnaryExponentiation, {\n node: node.argument\n });\n }\n }\n\n parseMaybeUnary(refExpressionErrors, sawUnary) {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const isAwait = this.isContextual(96);\n\n if (isAwait && this.isAwaitAllowed()) {\n this.next();\n const expr = this.parseAwait(startPos, startLoc);\n if (!sawUnary) this.checkExponentialAfterUnary(expr);\n return expr;\n }\n\n const update = this.match(34);\n const node = this.startNode();\n\n if (tokenIsPrefix(this.state.type)) {\n node.operator = this.state.value;\n node.prefix = true;\n\n if (this.match(72)) {\n this.expectPlugin(\"throwExpressions\");\n }\n\n const isDelete = this.match(89);\n this.next();\n node.argument = this.parseMaybeUnary(null, true);\n this.checkExpressionErrors(refExpressionErrors, true);\n\n if (this.state.strict && isDelete) {\n const arg = node.argument;\n\n if (arg.type === \"Identifier\") {\n this.raise(ErrorMessages.StrictDelete, {\n node\n });\n } else if (this.hasPropertyAsPrivateName(arg)) {\n this.raise(ErrorMessages.DeletePrivateField, {\n node\n });\n }\n }\n\n if (!update) {\n if (!sawUnary) this.checkExponentialAfterUnary(node);\n return this.finishNode(node, \"UnaryExpression\");\n }\n }\n\n const expr = this.parseUpdate(node, update, refExpressionErrors);\n\n if (isAwait) {\n const {\n type\n } = this.state;\n const startsExpr = this.hasPlugin(\"v8intrinsic\") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(54);\n\n if (startsExpr && !this.isAmbiguousAwait()) {\n this.raiseOverwrite(startLoc, ErrorMessages.AwaitNotInAsyncContext);\n return this.parseAwait(startPos, startLoc);\n }\n }\n\n return expr;\n }\n\n parseUpdate(node, update, refExpressionErrors) {\n if (update) {\n this.checkLVal(node.argument, \"prefix operation\");\n return this.finishNode(node, \"UpdateExpression\");\n }\n\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n let expr = this.parseExprSubscripts(refExpressionErrors);\n if (this.checkExpressionErrors(refExpressionErrors, false)) return expr;\n\n while (tokenIsPostfix(this.state.type) && !this.canInsertSemicolon()) {\n const node = this.startNodeAt(startPos, startLoc);\n node.operator = this.state.value;\n node.prefix = false;\n node.argument = expr;\n this.checkLVal(expr, \"postfix operation\");\n this.next();\n expr = this.finishNode(node, \"UpdateExpression\");\n }\n\n return expr;\n }\n\n parseExprSubscripts(refExpressionErrors) {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const potentialArrowAt = this.state.potentialArrowAt;\n const expr = this.parseExprAtom(refExpressionErrors);\n\n if (this.shouldExitDescending(expr, potentialArrowAt)) {\n return expr;\n }\n\n return this.parseSubscripts(expr, startPos, startLoc);\n }\n\n parseSubscripts(base, startPos, startLoc, noCalls) {\n const state = {\n optionalChainMember: false,\n maybeAsyncArrow: this.atPossibleAsyncArrow(base),\n stop: false\n };\n\n do {\n base = this.parseSubscript(base, startPos, startLoc, noCalls, state);\n state.maybeAsyncArrow = false;\n } while (!state.stop);\n\n return base;\n }\n\n parseSubscript(base, startPos, startLoc, noCalls, state) {\n const {\n type\n } = this.state;\n\n if (!noCalls && type === 15) {\n return this.parseBind(base, startPos, startLoc, noCalls, state);\n } else if (tokenIsTemplate(type)) {\n return this.parseTaggedTemplateExpression(base, startPos, startLoc, state);\n }\n\n let optional = false;\n\n if (type === 18) {\n if (noCalls && this.lookaheadCharCode() === 40) {\n state.stop = true;\n return base;\n }\n\n state.optionalChainMember = optional = true;\n this.next();\n }\n\n if (!noCalls && this.match(10)) {\n return this.parseCoverCallAndAsyncArrowHead(base, startPos, startLoc, state, optional);\n } else {\n const computed = this.eat(0);\n\n if (computed || optional || this.eat(16)) {\n return this.parseMember(base, startPos, startLoc, state, computed, optional);\n } else {\n state.stop = true;\n return base;\n }\n }\n }\n\n parseMember(base, startPos, startLoc, state, computed, optional) {\n const node = this.startNodeAt(startPos, startLoc);\n node.object = base;\n node.computed = computed;\n\n if (computed) {\n node.property = this.parseExpression();\n this.expect(3);\n } else if (this.match(134)) {\n if (base.type === \"Super\") {\n this.raise(ErrorMessages.SuperPrivateField, {\n at: startLoc\n });\n }\n\n this.classScope.usePrivateName(this.state.value, this.state.startLoc);\n node.property = this.parsePrivateName();\n } else {\n node.property = this.parseIdentifier(true);\n }\n\n if (state.optionalChainMember) {\n node.optional = optional;\n return this.finishNode(node, \"OptionalMemberExpression\");\n } else {\n return this.finishNode(node, \"MemberExpression\");\n }\n }\n\n parseBind(base, startPos, startLoc, noCalls, state) {\n const node = this.startNodeAt(startPos, startLoc);\n node.object = base;\n this.next();\n node.callee = this.parseNoCallExpr();\n state.stop = true;\n return this.parseSubscripts(this.finishNode(node, \"BindExpression\"), startPos, startLoc, noCalls);\n }\n\n parseCoverCallAndAsyncArrowHead(base, startPos, startLoc, state, optional) {\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n let refExpressionErrors = null;\n this.state.maybeInArrowParameters = true;\n this.next();\n let node = this.startNodeAt(startPos, startLoc);\n node.callee = base;\n const {\n maybeAsyncArrow,\n optionalChainMember\n } = state;\n\n if (maybeAsyncArrow) {\n this.expressionScope.enter(newAsyncArrowScope());\n refExpressionErrors = new ExpressionErrors();\n }\n\n if (optionalChainMember) {\n node.optional = optional;\n }\n\n if (optional) {\n node.arguments = this.parseCallExpressionArguments(11);\n } else {\n node.arguments = this.parseCallExpressionArguments(11, base.type === \"Import\", base.type !== \"Super\", node, refExpressionErrors);\n }\n\n this.finishCallExpression(node, optionalChainMember);\n\n if (maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) {\n state.stop = true;\n this.checkDestructuringPrivate(refExpressionErrors);\n this.expressionScope.validateAsPattern();\n this.expressionScope.exit();\n node = this.parseAsyncArrowFromCallExpression(this.startNodeAt(startPos, startLoc), node);\n } else {\n if (maybeAsyncArrow) {\n this.checkExpressionErrors(refExpressionErrors, true);\n this.expressionScope.exit();\n }\n\n this.toReferencedArguments(node);\n }\n\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n return node;\n }\n\n toReferencedArguments(node, isParenthesizedExpr) {\n this.toReferencedListDeep(node.arguments, isParenthesizedExpr);\n }\n\n parseTaggedTemplateExpression(base, startPos, startLoc, state) {\n const node = this.startNodeAt(startPos, startLoc);\n node.tag = base;\n node.quasi = this.parseTemplate(true);\n\n if (state.optionalChainMember) {\n this.raise(ErrorMessages.OptionalChainingNoTemplate, {\n at: startLoc\n });\n }\n\n return this.finishNode(node, \"TaggedTemplateExpression\");\n }\n\n atPossibleAsyncArrow(base) {\n return base.type === \"Identifier\" && base.name === \"async\" && this.state.lastTokEndLoc.index === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && base.start === this.state.potentialArrowAt;\n }\n\n finishCallExpression(node, optional) {\n if (node.callee.type === \"Import\") {\n if (node.arguments.length === 2) {\n {\n if (!this.hasPlugin(\"moduleAttributes\")) {\n this.expectPlugin(\"importAssertions\");\n }\n }\n }\n\n if (node.arguments.length === 0 || node.arguments.length > 2) {\n this.raise(ErrorMessages.ImportCallArity, {\n node\n }, this.hasPlugin(\"importAssertions\") || this.hasPlugin(\"moduleAttributes\") ? \"one or two arguments\" : \"one argument\");\n } else {\n for (const arg of node.arguments) {\n if (arg.type === \"SpreadElement\") {\n this.raise(ErrorMessages.ImportCallSpreadArgument, {\n node: arg\n });\n }\n }\n }\n }\n\n return this.finishNode(node, optional ? \"OptionalCallExpression\" : \"CallExpression\");\n }\n\n parseCallExpressionArguments(close, dynamicImport, allowPlaceholder, nodeForExtra, refExpressionErrors) {\n const elts = [];\n let first = true;\n const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n this.state.inFSharpPipelineDirectBody = false;\n\n while (!this.eat(close)) {\n if (first) {\n first = false;\n } else {\n this.expect(12);\n\n if (this.match(close)) {\n if (dynamicImport && !this.hasPlugin(\"importAssertions\") && !this.hasPlugin(\"moduleAttributes\")) {\n this.raise(ErrorMessages.ImportCallArgumentTrailingComma, {\n at: this.state.lastTokStartLoc\n });\n }\n\n if (nodeForExtra) {\n this.addTrailingCommaExtraToNode(nodeForExtra);\n }\n\n this.next();\n break;\n }\n }\n\n elts.push(this.parseExprListItem(false, refExpressionErrors, allowPlaceholder));\n }\n\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n return elts;\n }\n\n shouldParseAsyncArrow() {\n return this.match(19) && !this.canInsertSemicolon();\n }\n\n parseAsyncArrowFromCallExpression(node, call) {\n var _call$extra;\n\n this.resetPreviousNodeTrailingComments(call);\n this.expect(19);\n this.parseArrowExpression(node, call.arguments, true, (_call$extra = call.extra) == null ? void 0 : _call$extra.trailingCommaLoc);\n\n if (call.innerComments) {\n setInnerComments(node, call.innerComments);\n }\n\n if (call.callee.trailingComments) {\n setInnerComments(node, call.callee.trailingComments);\n }\n\n return node;\n }\n\n parseNoCallExpr() {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n return this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true);\n }\n\n parseExprAtom(refExpressionErrors) {\n let node;\n const {\n type\n } = this.state;\n\n switch (type) {\n case 79:\n return this.parseSuper();\n\n case 83:\n node = this.startNode();\n this.next();\n\n if (this.match(16)) {\n return this.parseImportMetaProperty(node);\n }\n\n if (!this.match(10)) {\n this.raise(ErrorMessages.UnsupportedImport, {\n at: this.state.lastTokStartLoc\n });\n }\n\n return this.finishNode(node, \"Import\");\n\n case 78:\n node = this.startNode();\n this.next();\n return this.finishNode(node, \"ThisExpression\");\n\n case 90:\n {\n return this.parseDo(this.startNode(), false);\n }\n\n case 56:\n case 31:\n {\n this.readRegexp();\n return this.parseRegExpLiteral(this.state.value);\n }\n\n case 130:\n return this.parseNumericLiteral(this.state.value);\n\n case 131:\n return this.parseBigIntLiteral(this.state.value);\n\n case 132:\n return this.parseDecimalLiteral(this.state.value);\n\n case 129:\n return this.parseStringLiteral(this.state.value);\n\n case 84:\n return this.parseNullLiteral();\n\n case 85:\n return this.parseBooleanLiteral(true);\n\n case 86:\n return this.parseBooleanLiteral(false);\n\n case 10:\n {\n const canBeArrow = this.state.potentialArrowAt === this.state.start;\n return this.parseParenAndDistinguishExpression(canBeArrow);\n }\n\n case 2:\n case 1:\n {\n return this.parseArrayLike(this.state.type === 2 ? 4 : 3, false, true);\n }\n\n case 0:\n {\n return this.parseArrayLike(3, true, false, refExpressionErrors);\n }\n\n case 6:\n case 7:\n {\n return this.parseObjectLike(this.state.type === 6 ? 9 : 8, false, true);\n }\n\n case 5:\n {\n return this.parseObjectLike(8, false, false, refExpressionErrors);\n }\n\n case 68:\n return this.parseFunctionOrFunctionSent();\n\n case 26:\n this.parseDecorators();\n\n case 80:\n node = this.startNode();\n this.takeDecorators(node);\n return this.parseClass(node, false);\n\n case 77:\n return this.parseNewOrNewTarget();\n\n case 25:\n case 24:\n return this.parseTemplate(false);\n\n case 15:\n {\n node = this.startNode();\n this.next();\n node.object = null;\n const callee = node.callee = this.parseNoCallExpr();\n\n if (callee.type === \"MemberExpression\") {\n return this.finishNode(node, \"BindExpression\");\n } else {\n throw this.raise(ErrorMessages.UnsupportedBind, {\n node: callee\n });\n }\n }\n\n case 134:\n {\n this.raise(ErrorMessages.PrivateInExpectedIn, {\n at: this.state.startLoc\n }, this.state.value);\n return this.parsePrivateName();\n }\n\n case 33:\n {\n return this.parseTopicReferenceThenEqualsSign(54, \"%\");\n }\n\n case 32:\n {\n return this.parseTopicReferenceThenEqualsSign(44, \"^\");\n }\n\n case 37:\n case 38:\n {\n return this.parseTopicReference(\"hack\");\n }\n\n case 44:\n case 54:\n case 27:\n {\n const pipeProposal = this.getPluginOption(\"pipelineOperator\", \"proposal\");\n\n if (pipeProposal) {\n return this.parseTopicReference(pipeProposal);\n } else {\n throw this.unexpected();\n }\n }\n\n case 47:\n {\n const lookaheadCh = this.input.codePointAt(this.nextTokenStart());\n\n if (isIdentifierStart(lookaheadCh) || lookaheadCh === 62) {\n this.expectOnePlugin([\"jsx\", \"flow\", \"typescript\"]);\n break;\n } else {\n throw this.unexpected();\n }\n }\n\n default:\n if (tokenIsIdentifier(type)) {\n if (this.isContextual(123) && this.lookaheadCharCode() === 123 && !this.hasFollowingLineBreak()) {\n return this.parseModuleExpression();\n }\n\n const canBeArrow = this.state.potentialArrowAt === this.state.start;\n const containsEsc = this.state.containsEsc;\n const id = this.parseIdentifier();\n\n if (!containsEsc && id.name === \"async\" && !this.canInsertSemicolon()) {\n const {\n type\n } = this.state;\n\n if (type === 68) {\n this.resetPreviousNodeTrailingComments(id);\n this.next();\n return this.parseFunction(this.startNodeAtNode(id), undefined, true);\n } else if (tokenIsIdentifier(type)) {\n if (this.lookaheadCharCode() === 61) {\n return this.parseAsyncArrowUnaryFunction(this.startNodeAtNode(id));\n } else {\n return id;\n }\n } else if (type === 90) {\n this.resetPreviousNodeTrailingComments(id);\n return this.parseDo(this.startNodeAtNode(id), true);\n }\n }\n\n if (canBeArrow && this.match(19) && !this.canInsertSemicolon()) {\n this.next();\n return this.parseArrowExpression(this.startNodeAtNode(id), [id], false);\n }\n\n return id;\n } else {\n throw this.unexpected();\n }\n\n }\n }\n\n parseTopicReferenceThenEqualsSign(topicTokenType, topicTokenValue) {\n const pipeProposal = this.getPluginOption(\"pipelineOperator\", \"proposal\");\n\n if (pipeProposal) {\n this.state.type = topicTokenType;\n this.state.value = topicTokenValue;\n this.state.pos--;\n this.state.end--;\n this.state.endLoc = createPositionWithColumnOffset(this.state.endLoc, -1);\n return this.parseTopicReference(pipeProposal);\n } else {\n throw this.unexpected();\n }\n }\n\n parseTopicReference(pipeProposal) {\n const node = this.startNode();\n const startLoc = this.state.startLoc;\n const tokenType = this.state.type;\n this.next();\n return this.finishTopicReference(node, startLoc, pipeProposal, tokenType);\n }\n\n finishTopicReference(node, startLoc, pipeProposal, tokenType) {\n if (this.testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType)) {\n const nodeType = pipeProposal === \"smart\" ? \"PipelinePrimaryTopicReference\" : \"TopicReference\";\n\n if (!this.topicReferenceIsAllowedInCurrentContext()) {\n this.raise(pipeProposal === \"smart\" ? ErrorMessages.PrimaryTopicNotAllowed : ErrorMessages.PipeTopicUnbound, {\n at: startLoc\n });\n }\n\n this.registerTopicReference();\n return this.finishNode(node, nodeType);\n } else {\n throw this.raise(ErrorMessages.PipeTopicUnconfiguredToken, {\n at: startLoc\n }, tokenLabelName(tokenType));\n }\n }\n\n testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType) {\n switch (pipeProposal) {\n case \"hack\":\n {\n return this.hasPlugin([\"pipelineOperator\", {\n topicToken: tokenLabelName(tokenType)\n }]);\n }\n\n case \"smart\":\n return tokenType === 27;\n\n default:\n throw this.raise(ErrorMessages.PipeTopicRequiresHackPipes, {\n at: startLoc\n });\n }\n }\n\n parseAsyncArrowUnaryFunction(node) {\n this.prodParam.enter(functionFlags(true, this.prodParam.hasYield));\n const params = [this.parseIdentifier()];\n this.prodParam.exit();\n\n if (this.hasPrecedingLineBreak()) {\n this.raise(ErrorMessages.LineTerminatorBeforeArrow, {\n at: this.state.curPosition()\n });\n }\n\n this.expect(19);\n this.parseArrowExpression(node, params, true);\n return node;\n }\n\n parseDo(node, isAsync) {\n this.expectPlugin(\"doExpressions\");\n\n if (isAsync) {\n this.expectPlugin(\"asyncDoExpressions\");\n }\n\n node.async = isAsync;\n this.next();\n const oldLabels = this.state.labels;\n this.state.labels = [];\n\n if (isAsync) {\n this.prodParam.enter(PARAM_AWAIT);\n node.body = this.parseBlock();\n this.prodParam.exit();\n } else {\n node.body = this.parseBlock();\n }\n\n this.state.labels = oldLabels;\n return this.finishNode(node, \"DoExpression\");\n }\n\n parseSuper() {\n const node = this.startNode();\n this.next();\n\n if (this.match(10) && !this.scope.allowDirectSuper && !this.options.allowSuperOutsideMethod) {\n this.raise(ErrorMessages.SuperNotAllowed, {\n node\n });\n } else if (!this.scope.allowSuper && !this.options.allowSuperOutsideMethod) {\n this.raise(ErrorMessages.UnexpectedSuper, {\n node\n });\n }\n\n if (!this.match(10) && !this.match(0) && !this.match(16)) {\n this.raise(ErrorMessages.UnsupportedSuper, {\n node\n });\n }\n\n return this.finishNode(node, \"Super\");\n }\n\n parsePrivateName() {\n const node = this.startNode();\n const id = this.startNodeAt(this.state.start + 1, new Position(this.state.curLine, this.state.start + 1 - this.state.lineStart, this.state.start + 1));\n const name = this.state.value;\n this.next();\n node.id = this.createIdentifier(id, name);\n return this.finishNode(node, \"PrivateName\");\n }\n\n parseFunctionOrFunctionSent() {\n const node = this.startNode();\n this.next();\n\n if (this.prodParam.hasYield && this.match(16)) {\n const meta = this.createIdentifier(this.startNodeAtNode(node), \"function\");\n this.next();\n\n if (this.match(102)) {\n this.expectPlugin(\"functionSent\");\n } else if (!this.hasPlugin(\"functionSent\")) {\n this.unexpected();\n }\n\n return this.parseMetaProperty(node, meta, \"sent\");\n }\n\n return this.parseFunction(node);\n }\n\n parseMetaProperty(node, meta, propertyName) {\n node.meta = meta;\n const containsEsc = this.state.containsEsc;\n node.property = this.parseIdentifier(true);\n\n if (node.property.name !== propertyName || containsEsc) {\n this.raise(ErrorMessages.UnsupportedMetaProperty, {\n node: node.property\n }, meta.name, propertyName);\n }\n\n return this.finishNode(node, \"MetaProperty\");\n }\n\n parseImportMetaProperty(node) {\n const id = this.createIdentifier(this.startNodeAtNode(node), \"import\");\n this.next();\n\n if (this.isContextual(100)) {\n if (!this.inModule) {\n this.raise(SourceTypeModuleErrorMessages.ImportMetaOutsideModule, {\n node: id\n });\n }\n\n this.sawUnambiguousESM = true;\n }\n\n return this.parseMetaProperty(node, id, \"meta\");\n }\n\n parseLiteralAtNode(value, type, node) {\n this.addExtra(node, \"rawValue\", value);\n this.addExtra(node, \"raw\", this.input.slice(node.start, this.state.end));\n node.value = value;\n this.next();\n return this.finishNode(node, type);\n }\n\n parseLiteral(value, type) {\n const node = this.startNode();\n return this.parseLiteralAtNode(value, type, node);\n }\n\n parseStringLiteral(value) {\n return this.parseLiteral(value, \"StringLiteral\");\n }\n\n parseNumericLiteral(value) {\n return this.parseLiteral(value, \"NumericLiteral\");\n }\n\n parseBigIntLiteral(value) {\n return this.parseLiteral(value, \"BigIntLiteral\");\n }\n\n parseDecimalLiteral(value) {\n return this.parseLiteral(value, \"DecimalLiteral\");\n }\n\n parseRegExpLiteral(value) {\n const node = this.parseLiteral(value.value, \"RegExpLiteral\");\n node.pattern = value.pattern;\n node.flags = value.flags;\n return node;\n }\n\n parseBooleanLiteral(value) {\n const node = this.startNode();\n node.value = value;\n this.next();\n return this.finishNode(node, \"BooleanLiteral\");\n }\n\n parseNullLiteral() {\n const node = this.startNode();\n this.next();\n return this.finishNode(node, \"NullLiteral\");\n }\n\n parseParenAndDistinguishExpression(canBeArrow) {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n let val;\n this.next();\n this.expressionScope.enter(newArrowHeadScope());\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n this.state.maybeInArrowParameters = true;\n this.state.inFSharpPipelineDirectBody = false;\n const innerStartPos = this.state.start;\n const innerStartLoc = this.state.startLoc;\n const exprList = [];\n const refExpressionErrors = new ExpressionErrors();\n let first = true;\n let spreadStartLoc;\n let optionalCommaStartLoc;\n\n while (!this.match(11)) {\n if (first) {\n first = false;\n } else {\n this.expect(12, refExpressionErrors.optionalParametersLoc === null ? null : refExpressionErrors.optionalParametersLoc);\n\n if (this.match(11)) {\n optionalCommaStartLoc = this.state.startLoc;\n break;\n }\n }\n\n if (this.match(21)) {\n const spreadNodeStartPos = this.state.start;\n const spreadNodeStartLoc = this.state.startLoc;\n spreadStartLoc = this.state.startLoc;\n exprList.push(this.parseParenItem(this.parseRestBinding(), spreadNodeStartPos, spreadNodeStartLoc));\n\n if (!this.checkCommaAfterRest(41)) {\n break;\n }\n } else {\n exprList.push(this.parseMaybeAssignAllowIn(refExpressionErrors, this.parseParenItem));\n }\n }\n\n const innerEndLoc = this.state.lastTokEndLoc;\n this.expect(11);\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n let arrowNode = this.startNodeAt(startPos, startLoc);\n\n if (canBeArrow && this.shouldParseArrow(exprList) && (arrowNode = this.parseArrow(arrowNode))) {\n this.checkDestructuringPrivate(refExpressionErrors);\n this.expressionScope.validateAsPattern();\n this.expressionScope.exit();\n this.parseArrowExpression(arrowNode, exprList, false);\n return arrowNode;\n }\n\n this.expressionScope.exit();\n\n if (!exprList.length) {\n this.unexpected(this.state.lastTokStartLoc);\n }\n\n if (optionalCommaStartLoc) this.unexpected(optionalCommaStartLoc);\n if (spreadStartLoc) this.unexpected(spreadStartLoc);\n this.checkExpressionErrors(refExpressionErrors, true);\n this.toReferencedListDeep(exprList, true);\n\n if (exprList.length > 1) {\n val = this.startNodeAt(innerStartPos, innerStartLoc);\n val.expressions = exprList;\n this.finishNode(val, \"SequenceExpression\");\n this.resetEndLocation(val, innerEndLoc);\n } else {\n val = exprList[0];\n }\n\n if (!this.options.createParenthesizedExpressions) {\n this.addExtra(val, \"parenthesized\", true);\n this.addExtra(val, \"parenStart\", startPos);\n this.takeSurroundingComments(val, startPos, this.state.lastTokEndLoc.index);\n return val;\n }\n\n const parenExpression = this.startNodeAt(startPos, startLoc);\n parenExpression.expression = val;\n this.finishNode(parenExpression, \"ParenthesizedExpression\");\n return parenExpression;\n }\n\n shouldParseArrow(params) {\n return !this.canInsertSemicolon();\n }\n\n parseArrow(node) {\n if (this.eat(19)) {\n return node;\n }\n }\n\n parseParenItem(node, startPos, startLoc) {\n return node;\n }\n\n parseNewOrNewTarget() {\n const node = this.startNode();\n this.next();\n\n if (this.match(16)) {\n const meta = this.createIdentifier(this.startNodeAtNode(node), \"new\");\n this.next();\n const metaProp = this.parseMetaProperty(node, meta, \"target\");\n\n if (!this.scope.inNonArrowFunction && !this.scope.inClass) {\n this.raise(ErrorMessages.UnexpectedNewTarget, {\n node: metaProp\n });\n }\n\n return metaProp;\n }\n\n return this.parseNew(node);\n }\n\n parseNew(node) {\n node.callee = this.parseNoCallExpr();\n\n if (node.callee.type === \"Import\") {\n this.raise(ErrorMessages.ImportCallNotNewExpression, {\n node: node.callee\n });\n } else if (this.isOptionalChain(node.callee)) {\n this.raise(ErrorMessages.OptionalChainingNoNew, {\n at: this.state.lastTokEndLoc\n });\n } else if (this.eat(18)) {\n this.raise(ErrorMessages.OptionalChainingNoNew, {\n at: this.state.startLoc\n });\n }\n\n this.parseNewArguments(node);\n return this.finishNode(node, \"NewExpression\");\n }\n\n parseNewArguments(node) {\n if (this.eat(10)) {\n const args = this.parseExprList(11);\n this.toReferencedList(args);\n node.arguments = args;\n } else {\n node.arguments = [];\n }\n }\n\n parseTemplateElement(isTagged) {\n const {\n start,\n startLoc,\n end,\n value\n } = this.state;\n const elemStart = start + 1;\n const elem = this.startNodeAt(elemStart, createPositionWithColumnOffset(startLoc, 1));\n\n if (value === null) {\n if (!isTagged) {\n this.raise(ErrorMessages.InvalidEscapeSequenceTemplate, {\n at: createPositionWithColumnOffset(startLoc, 2)\n });\n }\n }\n\n const isTail = this.match(24);\n const endOffset = isTail ? -1 : -2;\n const elemEnd = end + endOffset;\n elem.value = {\n raw: this.input.slice(elemStart, elemEnd).replace(/\\r\\n?/g, \"\\n\"),\n cooked: value === null ? null : value.slice(1, endOffset)\n };\n elem.tail = isTail;\n this.next();\n this.finishNode(elem, \"TemplateElement\");\n this.resetEndLocation(elem, createPositionWithColumnOffset(this.state.lastTokEndLoc, endOffset));\n return elem;\n }\n\n parseTemplate(isTagged) {\n const node = this.startNode();\n node.expressions = [];\n let curElt = this.parseTemplateElement(isTagged);\n node.quasis = [curElt];\n\n while (!curElt.tail) {\n node.expressions.push(this.parseTemplateSubstitution());\n this.readTemplateContinuation();\n node.quasis.push(curElt = this.parseTemplateElement(isTagged));\n }\n\n return this.finishNode(node, \"TemplateLiteral\");\n }\n\n parseTemplateSubstitution() {\n return this.parseExpression();\n }\n\n parseObjectLike(close, isPattern, isRecord, refExpressionErrors) {\n if (isRecord) {\n this.expectPlugin(\"recordAndTuple\");\n }\n\n const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n this.state.inFSharpPipelineDirectBody = false;\n const propHash = Object.create(null);\n let first = true;\n const node = this.startNode();\n node.properties = [];\n this.next();\n\n while (!this.match(close)) {\n if (first) {\n first = false;\n } else {\n this.expect(12);\n\n if (this.match(close)) {\n this.addTrailingCommaExtraToNode(node);\n break;\n }\n }\n\n let prop;\n\n if (isPattern) {\n prop = this.parseBindingProperty();\n } else {\n prop = this.parsePropertyDefinition(refExpressionErrors);\n this.checkProto(prop, isRecord, propHash, refExpressionErrors);\n }\n\n if (isRecord && !this.isObjectProperty(prop) && prop.type !== \"SpreadElement\") {\n this.raise(ErrorMessages.InvalidRecordProperty, {\n node: prop\n });\n }\n\n if (prop.shorthand) {\n this.addExtra(prop, \"shorthand\", true);\n }\n\n node.properties.push(prop);\n }\n\n this.next();\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n let type = \"ObjectExpression\";\n\n if (isPattern) {\n type = \"ObjectPattern\";\n } else if (isRecord) {\n type = \"RecordExpression\";\n }\n\n return this.finishNode(node, type);\n }\n\n addTrailingCommaExtraToNode(node) {\n this.addExtra(node, \"trailingComma\", this.state.lastTokStart);\n this.addExtra(node, \"trailingCommaLoc\", this.state.lastTokStartLoc, false);\n }\n\n maybeAsyncOrAccessorProp(prop) {\n return !prop.computed && prop.key.type === \"Identifier\" && (this.isLiteralPropertyName() || this.match(0) || this.match(55));\n }\n\n parsePropertyDefinition(refExpressionErrors) {\n let decorators = [];\n\n if (this.match(26)) {\n if (this.hasPlugin(\"decorators\")) {\n this.raise(ErrorMessages.UnsupportedPropertyDecorator, {\n at: this.state.startLoc\n });\n }\n\n while (this.match(26)) {\n decorators.push(this.parseDecorator());\n }\n }\n\n const prop = this.startNode();\n let isAsync = false;\n let isAccessor = false;\n let startPos;\n let startLoc;\n\n if (this.match(21)) {\n if (decorators.length) this.unexpected();\n return this.parseSpread();\n }\n\n if (decorators.length) {\n prop.decorators = decorators;\n decorators = [];\n }\n\n prop.method = false;\n\n if (refExpressionErrors) {\n startPos = this.state.start;\n startLoc = this.state.startLoc;\n }\n\n let isGenerator = this.eat(55);\n this.parsePropertyNamePrefixOperator(prop);\n const containsEsc = this.state.containsEsc;\n const key = this.parsePropertyName(prop, refExpressionErrors);\n\n if (!isGenerator && !containsEsc && this.maybeAsyncOrAccessorProp(prop)) {\n const keyName = key.name;\n\n if (keyName === \"async\" && !this.hasPrecedingLineBreak()) {\n isAsync = true;\n this.resetPreviousNodeTrailingComments(key);\n isGenerator = this.eat(55);\n this.parsePropertyName(prop);\n }\n\n if (keyName === \"get\" || keyName === \"set\") {\n isAccessor = true;\n this.resetPreviousNodeTrailingComments(key);\n prop.kind = keyName;\n\n if (this.match(55)) {\n isGenerator = true;\n this.raise(ErrorMessages.AccessorIsGenerator, {\n at: this.state.curPosition()\n }, keyName);\n this.next();\n }\n\n this.parsePropertyName(prop);\n }\n }\n\n this.parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, false, isAccessor, refExpressionErrors);\n return prop;\n }\n\n getGetterSetterExpectedParamCount(method) {\n return method.kind === \"get\" ? 0 : 1;\n }\n\n getObjectOrClassMethodParams(method) {\n return method.params;\n }\n\n checkGetterSetterParams(method) {\n var _params;\n\n const paramCount = this.getGetterSetterExpectedParamCount(method);\n const params = this.getObjectOrClassMethodParams(method);\n\n if (params.length !== paramCount) {\n this.raise(method.kind === \"get\" ? ErrorMessages.BadGetterArity : ErrorMessages.BadSetterArity, {\n node: method\n });\n }\n\n if (method.kind === \"set\" && ((_params = params[params.length - 1]) == null ? void 0 : _params.type) === \"RestElement\") {\n this.raise(ErrorMessages.BadSetterRestParameter, {\n node: method\n });\n }\n }\n\n parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) {\n if (isAccessor) {\n this.parseMethod(prop, isGenerator, false, false, false, \"ObjectMethod\");\n this.checkGetterSetterParams(prop);\n return prop;\n }\n\n if (isAsync || isGenerator || this.match(10)) {\n if (isPattern) this.unexpected();\n prop.kind = \"method\";\n prop.method = true;\n return this.parseMethod(prop, isGenerator, isAsync, false, false, \"ObjectMethod\");\n }\n }\n\n parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors) {\n prop.shorthand = false;\n\n if (this.eat(14)) {\n prop.value = isPattern ? this.parseMaybeDefault(this.state.start, this.state.startLoc) : this.parseMaybeAssignAllowIn(refExpressionErrors);\n return this.finishNode(prop, \"ObjectProperty\");\n }\n\n if (!prop.computed && prop.key.type === \"Identifier\") {\n this.checkReservedWord(prop.key.name, prop.key.loc.start, true, false);\n\n if (isPattern) {\n prop.value = this.parseMaybeDefault(startPos, startLoc, cloneIdentifier(prop.key));\n } else if (this.match(29)) {\n const shorthandAssignLoc = this.state.startLoc;\n\n if (refExpressionErrors != null) {\n if (refExpressionErrors.shorthandAssignLoc === null) {\n refExpressionErrors.shorthandAssignLoc = shorthandAssignLoc;\n }\n } else {\n this.raise(ErrorMessages.InvalidCoverInitializedName, {\n at: shorthandAssignLoc\n });\n }\n\n prop.value = this.parseMaybeDefault(startPos, startLoc, cloneIdentifier(prop.key));\n } else {\n prop.value = cloneIdentifier(prop.key);\n }\n\n prop.shorthand = true;\n return this.finishNode(prop, \"ObjectProperty\");\n }\n }\n\n parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {\n const node = this.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) || this.parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors);\n if (!node) this.unexpected();\n return node;\n }\n\n parsePropertyName(prop, refExpressionErrors) {\n if (this.eat(0)) {\n prop.computed = true;\n prop.key = this.parseMaybeAssignAllowIn();\n this.expect(3);\n } else {\n const {\n type,\n value\n } = this.state;\n let key;\n\n if (tokenIsKeywordOrIdentifier(type)) {\n key = this.parseIdentifier(true);\n } else {\n switch (type) {\n case 130:\n key = this.parseNumericLiteral(value);\n break;\n\n case 129:\n key = this.parseStringLiteral(value);\n break;\n\n case 131:\n key = this.parseBigIntLiteral(value);\n break;\n\n case 132:\n key = this.parseDecimalLiteral(value);\n break;\n\n case 134:\n {\n const privateKeyLoc = this.state.startLoc;\n\n if (refExpressionErrors != null) {\n if (refExpressionErrors.privateKeyLoc === null) {\n refExpressionErrors.privateKeyLoc = privateKeyLoc;\n }\n } else {\n this.raise(ErrorMessages.UnexpectedPrivateField, {\n at: privateKeyLoc\n });\n }\n\n key = this.parsePrivateName();\n break;\n }\n\n default:\n throw this.unexpected();\n }\n }\n\n prop.key = key;\n\n if (type !== 134) {\n prop.computed = false;\n }\n }\n\n return prop.key;\n }\n\n initFunction(node, isAsync) {\n node.id = null;\n node.generator = false;\n node.async = !!isAsync;\n }\n\n parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) {\n this.initFunction(node, isAsync);\n node.generator = !!isGenerator;\n const allowModifiers = isConstructor;\n this.scope.enter(SCOPE_FUNCTION | SCOPE_SUPER | (inClassScope ? SCOPE_CLASS : 0) | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0));\n this.prodParam.enter(functionFlags(isAsync, node.generator));\n this.parseFunctionParams(node, allowModifiers);\n this.parseFunctionBodyAndFinish(node, type, true);\n this.prodParam.exit();\n this.scope.exit();\n return node;\n }\n\n parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) {\n if (isTuple) {\n this.expectPlugin(\"recordAndTuple\");\n }\n\n const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n this.state.inFSharpPipelineDirectBody = false;\n const node = this.startNode();\n this.next();\n node.elements = this.parseExprList(close, !isTuple, refExpressionErrors, node);\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n return this.finishNode(node, isTuple ? \"TupleExpression\" : \"ArrayExpression\");\n }\n\n parseArrowExpression(node, params, isAsync, trailingCommaLoc) {\n this.scope.enter(SCOPE_FUNCTION | SCOPE_ARROW);\n let flags = functionFlags(isAsync, false);\n\n if (!this.match(5) && this.prodParam.hasIn) {\n flags |= PARAM_IN;\n }\n\n this.prodParam.enter(flags);\n this.initFunction(node, isAsync);\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n\n if (params) {\n this.state.maybeInArrowParameters = true;\n this.setArrowFunctionParameters(node, params, trailingCommaLoc);\n }\n\n this.state.maybeInArrowParameters = false;\n this.parseFunctionBody(node, true);\n this.prodParam.exit();\n this.scope.exit();\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n return this.finishNode(node, \"ArrowFunctionExpression\");\n }\n\n setArrowFunctionParameters(node, params, trailingCommaLoc) {\n node.params = this.toAssignableList(params, trailingCommaLoc, false);\n }\n\n parseFunctionBodyAndFinish(node, type, isMethod = false) {\n this.parseFunctionBody(node, false, isMethod);\n this.finishNode(node, type);\n }\n\n parseFunctionBody(node, allowExpression, isMethod = false) {\n const isExpression = allowExpression && !this.match(5);\n this.expressionScope.enter(newExpressionScope());\n\n if (isExpression) {\n node.body = this.parseMaybeAssign();\n this.checkParams(node, false, allowExpression, false);\n } else {\n const oldStrict = this.state.strict;\n const oldLabels = this.state.labels;\n this.state.labels = [];\n this.prodParam.enter(this.prodParam.currentFlags() | PARAM_RETURN);\n node.body = this.parseBlock(true, false, hasStrictModeDirective => {\n const nonSimple = !this.isSimpleParamList(node.params);\n\n if (hasStrictModeDirective && nonSimple) {\n const errorOrigin = (node.kind === \"method\" || node.kind === \"constructor\") && !!node.key ? {\n at: node.key.loc.end\n } : {\n node\n };\n this.raise(ErrorMessages.IllegalLanguageModeDirective, errorOrigin);\n }\n\n const strictModeChanged = !oldStrict && this.state.strict;\n this.checkParams(node, !this.state.strict && !allowExpression && !isMethod && !nonSimple, allowExpression, strictModeChanged);\n\n if (this.state.strict && node.id) {\n this.checkLVal(node.id, \"function name\", BIND_OUTSIDE, undefined, undefined, strictModeChanged);\n }\n });\n this.prodParam.exit();\n this.state.labels = oldLabels;\n }\n\n this.expressionScope.exit();\n }\n\n isSimpleParamList(params) {\n for (let i = 0, len = params.length; i < len; i++) {\n if (params[i].type !== \"Identifier\") return false;\n }\n\n return true;\n }\n\n checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) {\n const checkClashes = new Set();\n\n for (const param of node.params) {\n this.checkLVal(param, \"function parameter list\", BIND_VAR, allowDuplicates ? null : checkClashes, undefined, strictModeChanged);\n }\n }\n\n parseExprList(close, allowEmpty, refExpressionErrors, nodeForExtra) {\n const elts = [];\n let first = true;\n\n while (!this.eat(close)) {\n if (first) {\n first = false;\n } else {\n this.expect(12);\n\n if (this.match(close)) {\n if (nodeForExtra) {\n this.addTrailingCommaExtraToNode(nodeForExtra);\n }\n\n this.next();\n break;\n }\n }\n\n elts.push(this.parseExprListItem(allowEmpty, refExpressionErrors));\n }\n\n return elts;\n }\n\n parseExprListItem(allowEmpty, refExpressionErrors, allowPlaceholder) {\n let elt;\n\n if (this.match(12)) {\n if (!allowEmpty) {\n this.raise(ErrorMessages.UnexpectedToken, {\n at: this.state.curPosition()\n }, \",\");\n }\n\n elt = null;\n } else if (this.match(21)) {\n const spreadNodeStartPos = this.state.start;\n const spreadNodeStartLoc = this.state.startLoc;\n elt = this.parseParenItem(this.parseSpread(refExpressionErrors), spreadNodeStartPos, spreadNodeStartLoc);\n } else if (this.match(17)) {\n this.expectPlugin(\"partialApplication\");\n\n if (!allowPlaceholder) {\n this.raise(ErrorMessages.UnexpectedArgumentPlaceholder, {\n at: this.state.startLoc\n });\n }\n\n const node = this.startNode();\n this.next();\n elt = this.finishNode(node, \"ArgumentPlaceholder\");\n } else {\n elt = this.parseMaybeAssignAllowIn(refExpressionErrors, this.parseParenItem);\n }\n\n return elt;\n }\n\n parseIdentifier(liberal) {\n const node = this.startNode();\n const name = this.parseIdentifierName(node.start, liberal);\n return this.createIdentifier(node, name);\n }\n\n createIdentifier(node, name) {\n node.name = name;\n node.loc.identifierName = name;\n return this.finishNode(node, \"Identifier\");\n }\n\n parseIdentifierName(pos, liberal) {\n let name;\n const {\n startLoc,\n type\n } = this.state;\n\n if (tokenIsKeywordOrIdentifier(type)) {\n name = this.state.value;\n } else {\n throw this.unexpected();\n }\n\n const tokenIsKeyword = tokenKeywordOrIdentifierIsKeyword(type);\n\n if (liberal) {\n if (tokenIsKeyword) {\n this.replaceToken(128);\n }\n } else {\n this.checkReservedWord(name, startLoc, tokenIsKeyword, false);\n }\n\n this.next();\n return name;\n }\n\n checkReservedWord(word, startLoc, checkKeywords, isBinding) {\n if (word.length > 10) {\n return;\n }\n\n if (!canBeReservedWord(word)) {\n return;\n }\n\n if (word === \"yield\") {\n if (this.prodParam.hasYield) {\n this.raise(ErrorMessages.YieldBindingIdentifier, {\n at: startLoc\n });\n return;\n }\n } else if (word === \"await\") {\n if (this.prodParam.hasAwait) {\n this.raise(ErrorMessages.AwaitBindingIdentifier, {\n at: startLoc\n });\n return;\n }\n\n if (this.scope.inStaticBlock) {\n this.raise(ErrorMessages.AwaitBindingIdentifierInStaticBlock, {\n at: startLoc\n });\n return;\n }\n\n this.expressionScope.recordAsyncArrowParametersError(ErrorMessages.AwaitBindingIdentifier, startLoc);\n } else if (word === \"arguments\") {\n if (this.scope.inClassAndNotInNonArrowFunction) {\n this.raise(ErrorMessages.ArgumentsInClass, {\n at: startLoc\n });\n return;\n }\n }\n\n if (checkKeywords && isKeyword(word)) {\n this.raise(ErrorMessages.UnexpectedKeyword, {\n at: startLoc\n }, word);\n return;\n }\n\n const reservedTest = !this.state.strict ? isReservedWord : isBinding ? isStrictBindReservedWord : isStrictReservedWord;\n\n if (reservedTest(word, this.inModule)) {\n this.raise(ErrorMessages.UnexpectedReservedWord, {\n at: startLoc\n }, word);\n }\n }\n\n isAwaitAllowed() {\n if (this.prodParam.hasAwait) return true;\n\n if (this.options.allowAwaitOutsideFunction && !this.scope.inFunction) {\n return true;\n }\n\n return false;\n }\n\n parseAwait(startPos, startLoc) {\n const node = this.startNodeAt(startPos, startLoc);\n this.expressionScope.recordParameterInitializerError(node.loc.start, ErrorMessages.AwaitExpressionFormalParameter);\n\n if (this.eat(55)) {\n this.raise(ErrorMessages.ObsoleteAwaitStar, {\n node\n });\n }\n\n if (!this.scope.inFunction && !this.options.allowAwaitOutsideFunction) {\n if (this.isAmbiguousAwait()) {\n this.ambiguousScriptDifferentAst = true;\n } else {\n this.sawUnambiguousESM = true;\n }\n }\n\n if (!this.state.soloAwait) {\n node.argument = this.parseMaybeUnary(null, true);\n }\n\n return this.finishNode(node, \"AwaitExpression\");\n }\n\n isAmbiguousAwait() {\n if (this.hasPrecedingLineBreak()) return true;\n const {\n type\n } = this.state;\n return type === 53 || type === 10 || type === 0 || tokenIsTemplate(type) || type === 133 || type === 56 || this.hasPlugin(\"v8intrinsic\") && type === 54;\n }\n\n parseYield() {\n const node = this.startNode();\n this.expressionScope.recordParameterInitializerError(node.loc.start, ErrorMessages.YieldInParameter);\n this.next();\n let delegating = false;\n let argument = null;\n\n if (!this.hasPrecedingLineBreak()) {\n delegating = this.eat(55);\n\n switch (this.state.type) {\n case 13:\n case 135:\n case 8:\n case 11:\n case 3:\n case 9:\n case 14:\n case 12:\n if (!delegating) break;\n\n default:\n argument = this.parseMaybeAssign();\n }\n }\n\n node.delegate = delegating;\n node.argument = argument;\n return this.finishNode(node, \"YieldExpression\");\n }\n\n checkPipelineAtInfixOperator(left, leftStartLoc) {\n if (this.hasPlugin([\"pipelineOperator\", {\n proposal: \"smart\"\n }])) {\n if (left.type === \"SequenceExpression\") {\n this.raise(ErrorMessages.PipelineHeadSequenceExpression, {\n at: leftStartLoc\n });\n }\n }\n }\n\n parseSmartPipelineBodyInStyle(childExpr, startPos, startLoc) {\n const bodyNode = this.startNodeAt(startPos, startLoc);\n\n if (this.isSimpleReference(childExpr)) {\n bodyNode.callee = childExpr;\n return this.finishNode(bodyNode, \"PipelineBareFunction\");\n } else {\n this.checkSmartPipeTopicBodyEarlyErrors(startLoc);\n bodyNode.expression = childExpr;\n return this.finishNode(bodyNode, \"PipelineTopicExpression\");\n }\n }\n\n isSimpleReference(expression) {\n switch (expression.type) {\n case \"MemberExpression\":\n return !expression.computed && this.isSimpleReference(expression.object);\n\n case \"Identifier\":\n return true;\n\n default:\n return false;\n }\n }\n\n checkSmartPipeTopicBodyEarlyErrors(startLoc) {\n if (this.match(19)) {\n throw this.raise(ErrorMessages.PipelineBodyNoArrow, {\n at: this.state.startLoc\n });\n }\n\n if (!this.topicReferenceWasUsedInCurrentContext()) {\n this.raise(ErrorMessages.PipelineTopicUnused, {\n at: startLoc\n });\n }\n }\n\n withTopicBindingContext(callback) {\n const outerContextTopicState = this.state.topicContext;\n this.state.topicContext = {\n maxNumOfResolvableTopics: 1,\n maxTopicIndex: null\n };\n\n try {\n return callback();\n } finally {\n this.state.topicContext = outerContextTopicState;\n }\n }\n\n withSmartMixTopicForbiddingContext(callback) {\n if (this.hasPlugin([\"pipelineOperator\", {\n proposal: \"smart\"\n }])) {\n const outerContextTopicState = this.state.topicContext;\n this.state.topicContext = {\n maxNumOfResolvableTopics: 0,\n maxTopicIndex: null\n };\n\n try {\n return callback();\n } finally {\n this.state.topicContext = outerContextTopicState;\n }\n } else {\n return callback();\n }\n }\n\n withSoloAwaitPermittingContext(callback) {\n const outerContextSoloAwaitState = this.state.soloAwait;\n this.state.soloAwait = true;\n\n try {\n return callback();\n } finally {\n this.state.soloAwait = outerContextSoloAwaitState;\n }\n }\n\n allowInAnd(callback) {\n const flags = this.prodParam.currentFlags();\n const prodParamToSet = PARAM_IN & ~flags;\n\n if (prodParamToSet) {\n this.prodParam.enter(flags | PARAM_IN);\n\n try {\n return callback();\n } finally {\n this.prodParam.exit();\n }\n }\n\n return callback();\n }\n\n disallowInAnd(callback) {\n const flags = this.prodParam.currentFlags();\n const prodParamToClear = PARAM_IN & flags;\n\n if (prodParamToClear) {\n this.prodParam.enter(flags & ~PARAM_IN);\n\n try {\n return callback();\n } finally {\n this.prodParam.exit();\n }\n }\n\n return callback();\n }\n\n registerTopicReference() {\n this.state.topicContext.maxTopicIndex = 0;\n }\n\n topicReferenceIsAllowedInCurrentContext() {\n return this.state.topicContext.maxNumOfResolvableTopics >= 1;\n }\n\n topicReferenceWasUsedInCurrentContext() {\n return this.state.topicContext.maxTopicIndex != null && this.state.topicContext.maxTopicIndex >= 0;\n }\n\n parseFSharpPipelineBody(prec) {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n this.state.potentialArrowAt = this.state.start;\n const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n this.state.inFSharpPipelineDirectBody = true;\n const ret = this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startPos, startLoc, prec);\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n return ret;\n }\n\n parseModuleExpression() {\n this.expectPlugin(\"moduleBlocks\");\n const node = this.startNode();\n this.next();\n this.eat(5);\n const revertScopes = this.initializeScopes(true);\n this.enterInitialScopes();\n const program = this.startNode();\n\n try {\n node.body = this.parseProgram(program, 8, \"module\");\n } finally {\n revertScopes();\n }\n\n this.eat(8);\n return this.finishNode(node, \"ModuleExpression\");\n }\n\n parsePropertyNamePrefixOperator(prop) {}\n\n}\n\nconst loopLabel = {\n kind: \"loop\"\n},\n switchLabel = {\n kind: \"switch\"\n};\nconst FUNC_NO_FLAGS = 0b000,\n FUNC_STATEMENT = 0b001,\n FUNC_HANGING_STATEMENT = 0b010,\n FUNC_NULLABLE_ID = 0b100;\nconst loneSurrogate = /[\\uD800-\\uDFFF]/u;\nconst keywordRelationalOperator = /in(?:stanceof)?/y;\n\nfunction babel7CompatTokens(tokens, input) {\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n const {\n type\n } = token;\n\n if (typeof type === \"number\") {\n {\n if (type === 134) {\n const {\n loc,\n start,\n value,\n end\n } = token;\n const hashEndPos = start + 1;\n const hashEndLoc = createPositionWithColumnOffset(loc.start, 1);\n tokens.splice(i, 1, new Token({\n type: getExportedToken(27),\n value: \"#\",\n start: start,\n end: hashEndPos,\n startLoc: loc.start,\n endLoc: hashEndLoc\n }), new Token({\n type: getExportedToken(128),\n value: value,\n start: hashEndPos,\n end: end,\n startLoc: hashEndLoc,\n endLoc: loc.end\n }));\n i++;\n continue;\n }\n\n if (tokenIsTemplate(type)) {\n const {\n loc,\n start,\n value,\n end\n } = token;\n const backquoteEnd = start + 1;\n const backquoteEndLoc = createPositionWithColumnOffset(loc.start, 1);\n let startToken;\n\n if (input.charCodeAt(start) === 96) {\n startToken = new Token({\n type: getExportedToken(22),\n value: \"`\",\n start: start,\n end: backquoteEnd,\n startLoc: loc.start,\n endLoc: backquoteEndLoc\n });\n } else {\n startToken = new Token({\n type: getExportedToken(8),\n value: \"}\",\n start: start,\n end: backquoteEnd,\n startLoc: loc.start,\n endLoc: backquoteEndLoc\n });\n }\n\n let templateValue, templateElementEnd, templateElementEndLoc, endToken;\n\n if (type === 24) {\n templateElementEnd = end - 1;\n templateElementEndLoc = createPositionWithColumnOffset(loc.end, -1);\n templateValue = value === null ? null : value.slice(1, -1);\n endToken = new Token({\n type: getExportedToken(22),\n value: \"`\",\n start: templateElementEnd,\n end: end,\n startLoc: templateElementEndLoc,\n endLoc: loc.end\n });\n } else {\n templateElementEnd = end - 2;\n templateElementEndLoc = createPositionWithColumnOffset(loc.end, -2);\n templateValue = value === null ? null : value.slice(1, -2);\n endToken = new Token({\n type: getExportedToken(23),\n value: \"${\",\n start: templateElementEnd,\n end: end,\n startLoc: templateElementEndLoc,\n endLoc: loc.end\n });\n }\n\n tokens.splice(i, 1, startToken, new Token({\n type: getExportedToken(20),\n value: templateValue,\n start: backquoteEnd,\n end: templateElementEnd,\n startLoc: backquoteEndLoc,\n endLoc: templateElementEndLoc\n }), endToken);\n i += 2;\n continue;\n }\n }\n token.type = getExportedToken(type);\n }\n }\n\n return tokens;\n}\n\nclass StatementParser extends ExpressionParser {\n parseTopLevel(file, program) {\n file.program = this.parseProgram(program);\n file.comments = this.state.comments;\n\n if (this.options.tokens) {\n file.tokens = babel7CompatTokens(this.tokens, this.input);\n }\n\n return this.finishNode(file, \"File\");\n }\n\n parseProgram(program, end = 135, sourceType = this.options.sourceType) {\n program.sourceType = sourceType;\n program.interpreter = this.parseInterpreterDirective();\n this.parseBlockBody(program, true, true, end);\n\n if (this.inModule && !this.options.allowUndeclaredExports && this.scope.undefinedExports.size > 0) {\n for (const [name, loc] of Array.from(this.scope.undefinedExports)) {\n this.raise(ErrorMessages.ModuleExportUndefined, {\n at: loc\n }, name);\n }\n }\n\n return this.finishNode(program, \"Program\");\n }\n\n stmtToDirective(stmt) {\n const directive = stmt;\n directive.type = \"Directive\";\n directive.value = directive.expression;\n delete directive.expression;\n const directiveLiteral = directive.value;\n const expressionValue = directiveLiteral.value;\n const raw = this.input.slice(directiveLiteral.start, directiveLiteral.end);\n const val = directiveLiteral.value = raw.slice(1, -1);\n this.addExtra(directiveLiteral, \"raw\", raw);\n this.addExtra(directiveLiteral, \"rawValue\", val);\n this.addExtra(directiveLiteral, \"expressionValue\", expressionValue);\n directiveLiteral.type = \"DirectiveLiteral\";\n return directive;\n }\n\n parseInterpreterDirective() {\n if (!this.match(28)) {\n return null;\n }\n\n const node = this.startNode();\n node.value = this.state.value;\n this.next();\n return this.finishNode(node, \"InterpreterDirective\");\n }\n\n isLet(context) {\n if (!this.isContextual(99)) {\n return false;\n }\n\n return this.isLetKeyword(context);\n }\n\n isLetKeyword(context) {\n const next = this.nextTokenStart();\n const nextCh = this.codePointAtPos(next);\n\n if (nextCh === 92 || nextCh === 91) {\n return true;\n }\n\n if (context) return false;\n if (nextCh === 123) return true;\n\n if (isIdentifierStart(nextCh)) {\n keywordRelationalOperator.lastIndex = next;\n\n if (keywordRelationalOperator.test(this.input)) {\n const endCh = this.codePointAtPos(keywordRelationalOperator.lastIndex);\n\n if (!isIdentifierChar(endCh) && endCh !== 92) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n }\n\n parseStatement(context, topLevel) {\n if (this.match(26)) {\n this.parseDecorators(true);\n }\n\n return this.parseStatementContent(context, topLevel);\n }\n\n parseStatementContent(context, topLevel) {\n let starttype = this.state.type;\n const node = this.startNode();\n let kind;\n\n if (this.isLet(context)) {\n starttype = 74;\n kind = \"let\";\n }\n\n switch (starttype) {\n case 60:\n return this.parseBreakContinueStatement(node, true);\n\n case 63:\n return this.parseBreakContinueStatement(node, false);\n\n case 64:\n return this.parseDebuggerStatement(node);\n\n case 90:\n return this.parseDoStatement(node);\n\n case 91:\n return this.parseForStatement(node);\n\n case 68:\n if (this.lookaheadCharCode() === 46) break;\n\n if (context) {\n if (this.state.strict) {\n this.raise(ErrorMessages.StrictFunction, {\n at: this.state.startLoc\n });\n } else if (context !== \"if\" && context !== \"label\") {\n this.raise(ErrorMessages.SloppyFunction, {\n at: this.state.startLoc\n });\n }\n }\n\n return this.parseFunctionStatement(node, false, !context);\n\n case 80:\n if (context) this.unexpected();\n return this.parseClass(node, true);\n\n case 69:\n return this.parseIfStatement(node);\n\n case 70:\n return this.parseReturnStatement(node);\n\n case 71:\n return this.parseSwitchStatement(node);\n\n case 72:\n return this.parseThrowStatement(node);\n\n case 73:\n return this.parseTryStatement(node);\n\n case 75:\n case 74:\n kind = kind || this.state.value;\n\n if (context && kind !== \"var\") {\n this.raise(ErrorMessages.UnexpectedLexicalDeclaration, {\n at: this.state.startLoc\n });\n }\n\n return this.parseVarStatement(node, kind);\n\n case 92:\n return this.parseWhileStatement(node);\n\n case 76:\n return this.parseWithStatement(node);\n\n case 5:\n return this.parseBlock();\n\n case 13:\n return this.parseEmptyStatement(node);\n\n case 83:\n {\n const nextTokenCharCode = this.lookaheadCharCode();\n\n if (nextTokenCharCode === 40 || nextTokenCharCode === 46) {\n break;\n }\n }\n\n case 82:\n {\n if (!this.options.allowImportExportEverywhere && !topLevel) {\n this.raise(ErrorMessages.UnexpectedImportExport, {\n at: this.state.startLoc\n });\n }\n\n this.next();\n let result;\n\n if (starttype === 83) {\n result = this.parseImport(node);\n\n if (result.type === \"ImportDeclaration\" && (!result.importKind || result.importKind === \"value\")) {\n this.sawUnambiguousESM = true;\n }\n } else {\n result = this.parseExport(node);\n\n if (result.type === \"ExportNamedDeclaration\" && (!result.exportKind || result.exportKind === \"value\") || result.type === \"ExportAllDeclaration\" && (!result.exportKind || result.exportKind === \"value\") || result.type === \"ExportDefaultDeclaration\") {\n this.sawUnambiguousESM = true;\n }\n }\n\n this.assertModuleNodeAllowed(node);\n return result;\n }\n\n default:\n {\n if (this.isAsyncFunction()) {\n if (context) {\n this.raise(ErrorMessages.AsyncFunctionInSingleStatementContext, {\n at: this.state.startLoc\n });\n }\n\n this.next();\n return this.parseFunctionStatement(node, true, !context);\n }\n }\n }\n\n const maybeName = this.state.value;\n const expr = this.parseExpression();\n\n if (tokenIsIdentifier(starttype) && expr.type === \"Identifier\" && this.eat(14)) {\n return this.parseLabeledStatement(node, maybeName, expr, context);\n } else {\n return this.parseExpressionStatement(node, expr);\n }\n }\n\n assertModuleNodeAllowed(node) {\n if (!this.options.allowImportExportEverywhere && !this.inModule) {\n this.raise(SourceTypeModuleErrorMessages.ImportOutsideModule, {\n node\n });\n }\n }\n\n takeDecorators(node) {\n const decorators = this.state.decoratorStack[this.state.decoratorStack.length - 1];\n\n if (decorators.length) {\n node.decorators = decorators;\n this.resetStartLocationFromNode(node, decorators[0]);\n this.state.decoratorStack[this.state.decoratorStack.length - 1] = [];\n }\n }\n\n canHaveLeadingDecorator() {\n return this.match(80);\n }\n\n parseDecorators(allowExport) {\n const currentContextDecorators = this.state.decoratorStack[this.state.decoratorStack.length - 1];\n\n while (this.match(26)) {\n const decorator = this.parseDecorator();\n currentContextDecorators.push(decorator);\n }\n\n if (this.match(82)) {\n if (!allowExport) {\n this.unexpected();\n }\n\n if (this.hasPlugin(\"decorators\") && !this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\")) {\n this.raise(ErrorMessages.DecoratorExportClass, {\n at: this.state.startLoc\n });\n }\n } else if (!this.canHaveLeadingDecorator()) {\n throw this.raise(ErrorMessages.UnexpectedLeadingDecorator, {\n at: this.state.startLoc\n });\n }\n }\n\n parseDecorator() {\n this.expectOnePlugin([\"decorators-legacy\", \"decorators\"]);\n const node = this.startNode();\n this.next();\n\n if (this.hasPlugin(\"decorators\")) {\n this.state.decoratorStack.push([]);\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n let expr;\n\n if (this.eat(10)) {\n expr = this.parseExpression();\n this.expect(11);\n } else {\n expr = this.parseIdentifier(false);\n\n while (this.eat(16)) {\n const node = this.startNodeAt(startPos, startLoc);\n node.object = expr;\n node.property = this.parseIdentifier(true);\n node.computed = false;\n expr = this.finishNode(node, \"MemberExpression\");\n }\n }\n\n node.expression = this.parseMaybeDecoratorArguments(expr);\n this.state.decoratorStack.pop();\n } else {\n node.expression = this.parseExprSubscripts();\n }\n\n return this.finishNode(node, \"Decorator\");\n }\n\n parseMaybeDecoratorArguments(expr) {\n if (this.eat(10)) {\n const node = this.startNodeAtNode(expr);\n node.callee = expr;\n node.arguments = this.parseCallExpressionArguments(11, false);\n this.toReferencedList(node.arguments);\n return this.finishNode(node, \"CallExpression\");\n }\n\n return expr;\n }\n\n parseBreakContinueStatement(node, isBreak) {\n this.next();\n\n if (this.isLineTerminator()) {\n node.label = null;\n } else {\n node.label = this.parseIdentifier();\n this.semicolon();\n }\n\n this.verifyBreakContinue(node, isBreak);\n return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\");\n }\n\n verifyBreakContinue(node, isBreak) {\n let i;\n\n for (i = 0; i < this.state.labels.length; ++i) {\n const lab = this.state.labels[i];\n\n if (node.label == null || lab.name === node.label.name) {\n if (lab.kind != null && (isBreak || lab.kind === \"loop\")) break;\n if (node.label && isBreak) break;\n }\n }\n\n if (i === this.state.labels.length) {\n this.raise(ErrorMessages.IllegalBreakContinue, {\n node\n }, isBreak ? \"break\" : \"continue\");\n }\n }\n\n parseDebuggerStatement(node) {\n this.next();\n this.semicolon();\n return this.finishNode(node, \"DebuggerStatement\");\n }\n\n parseHeaderExpression() {\n this.expect(10);\n const val = this.parseExpression();\n this.expect(11);\n return val;\n }\n\n parseDoStatement(node) {\n this.next();\n this.state.labels.push(loopLabel);\n node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement(\"do\"));\n this.state.labels.pop();\n this.expect(92);\n node.test = this.parseHeaderExpression();\n this.eat(13);\n return this.finishNode(node, \"DoWhileStatement\");\n }\n\n parseForStatement(node) {\n this.next();\n this.state.labels.push(loopLabel);\n let awaitAt = null;\n\n if (this.isAwaitAllowed() && this.eatContextual(96)) {\n awaitAt = this.state.lastTokStartLoc;\n }\n\n this.scope.enter(SCOPE_OTHER);\n this.expect(10);\n\n if (this.match(13)) {\n if (awaitAt !== null) {\n this.unexpected(awaitAt);\n }\n\n return this.parseFor(node, null);\n }\n\n const startsWithLet = this.isContextual(99);\n const isLet = startsWithLet && this.isLetKeyword();\n\n if (this.match(74) || this.match(75) || isLet) {\n const init = this.startNode();\n const kind = isLet ? \"let\" : this.state.value;\n this.next();\n this.parseVar(init, true, kind);\n this.finishNode(init, \"VariableDeclaration\");\n\n if ((this.match(58) || this.isContextual(101)) && init.declarations.length === 1) {\n return this.parseForIn(node, init, awaitAt);\n }\n\n if (awaitAt !== null) {\n this.unexpected(awaitAt);\n }\n\n return this.parseFor(node, init);\n }\n\n const startsWithAsync = this.isContextual(95);\n const refExpressionErrors = new ExpressionErrors();\n const init = this.parseExpression(true, refExpressionErrors);\n const isForOf = this.isContextual(101);\n\n if (isForOf) {\n if (startsWithLet) {\n this.raise(ErrorMessages.ForOfLet, {\n node: init\n });\n }\n\n if (awaitAt === null && startsWithAsync && init.type === \"Identifier\") {\n this.raise(ErrorMessages.ForOfAsync, {\n node: init\n });\n }\n }\n\n if (isForOf || this.match(58)) {\n this.checkDestructuringPrivate(refExpressionErrors);\n this.toAssignable(init, true);\n const description = isForOf ? \"for-of statement\" : \"for-in statement\";\n this.checkLVal(init, description);\n return this.parseForIn(node, init, awaitAt);\n } else {\n this.checkExpressionErrors(refExpressionErrors, true);\n }\n\n if (awaitAt !== null) {\n this.unexpected(awaitAt);\n }\n\n return this.parseFor(node, init);\n }\n\n parseFunctionStatement(node, isAsync, declarationPosition) {\n this.next();\n return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), isAsync);\n }\n\n parseIfStatement(node) {\n this.next();\n node.test = this.parseHeaderExpression();\n node.consequent = this.parseStatement(\"if\");\n node.alternate = this.eat(66) ? this.parseStatement(\"if\") : null;\n return this.finishNode(node, \"IfStatement\");\n }\n\n parseReturnStatement(node) {\n if (!this.prodParam.hasReturn && !this.options.allowReturnOutsideFunction) {\n this.raise(ErrorMessages.IllegalReturn, {\n at: this.state.startLoc\n });\n }\n\n this.next();\n\n if (this.isLineTerminator()) {\n node.argument = null;\n } else {\n node.argument = this.parseExpression();\n this.semicolon();\n }\n\n return this.finishNode(node, \"ReturnStatement\");\n }\n\n parseSwitchStatement(node) {\n this.next();\n node.discriminant = this.parseHeaderExpression();\n const cases = node.cases = [];\n this.expect(5);\n this.state.labels.push(switchLabel);\n this.scope.enter(SCOPE_OTHER);\n let cur;\n\n for (let sawDefault; !this.match(8);) {\n if (this.match(61) || this.match(65)) {\n const isCase = this.match(61);\n if (cur) this.finishNode(cur, \"SwitchCase\");\n cases.push(cur = this.startNode());\n cur.consequent = [];\n this.next();\n\n if (isCase) {\n cur.test = this.parseExpression();\n } else {\n if (sawDefault) {\n this.raise(ErrorMessages.MultipleDefaultsInSwitch, {\n at: this.state.lastTokStartLoc\n });\n }\n\n sawDefault = true;\n cur.test = null;\n }\n\n this.expect(14);\n } else {\n if (cur) {\n cur.consequent.push(this.parseStatement(null));\n } else {\n this.unexpected();\n }\n }\n }\n\n this.scope.exit();\n if (cur) this.finishNode(cur, \"SwitchCase\");\n this.next();\n this.state.labels.pop();\n return this.finishNode(node, \"SwitchStatement\");\n }\n\n parseThrowStatement(node) {\n this.next();\n\n if (this.hasPrecedingLineBreak()) {\n this.raise(ErrorMessages.NewlineAfterThrow, {\n at: this.state.lastTokEndLoc\n });\n }\n\n node.argument = this.parseExpression();\n this.semicolon();\n return this.finishNode(node, \"ThrowStatement\");\n }\n\n parseCatchClauseParam() {\n const param = this.parseBindingAtom();\n const simple = param.type === \"Identifier\";\n this.scope.enter(simple ? SCOPE_SIMPLE_CATCH : 0);\n this.checkLVal(param, \"catch clause\", BIND_LEXICAL);\n return param;\n }\n\n parseTryStatement(node) {\n this.next();\n node.block = this.parseBlock();\n node.handler = null;\n\n if (this.match(62)) {\n const clause = this.startNode();\n this.next();\n\n if (this.match(10)) {\n this.expect(10);\n clause.param = this.parseCatchClauseParam();\n this.expect(11);\n } else {\n clause.param = null;\n this.scope.enter(SCOPE_OTHER);\n }\n\n clause.body = this.withSmartMixTopicForbiddingContext(() => this.parseBlock(false, false));\n this.scope.exit();\n node.handler = this.finishNode(clause, \"CatchClause\");\n }\n\n node.finalizer = this.eat(67) ? this.parseBlock() : null;\n\n if (!node.handler && !node.finalizer) {\n this.raise(ErrorMessages.NoCatchOrFinally, {\n node\n });\n }\n\n return this.finishNode(node, \"TryStatement\");\n }\n\n parseVarStatement(node, kind) {\n this.next();\n this.parseVar(node, false, kind);\n this.semicolon();\n return this.finishNode(node, \"VariableDeclaration\");\n }\n\n parseWhileStatement(node) {\n this.next();\n node.test = this.parseHeaderExpression();\n this.state.labels.push(loopLabel);\n node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement(\"while\"));\n this.state.labels.pop();\n return this.finishNode(node, \"WhileStatement\");\n }\n\n parseWithStatement(node) {\n if (this.state.strict) {\n this.raise(ErrorMessages.StrictWith, {\n at: this.state.startLoc\n });\n }\n\n this.next();\n node.object = this.parseHeaderExpression();\n node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement(\"with\"));\n return this.finishNode(node, \"WithStatement\");\n }\n\n parseEmptyStatement(node) {\n this.next();\n return this.finishNode(node, \"EmptyStatement\");\n }\n\n parseLabeledStatement(node, maybeName, expr, context) {\n for (const label of this.state.labels) {\n if (label.name === maybeName) {\n this.raise(ErrorMessages.LabelRedeclaration, {\n node: expr\n }, maybeName);\n }\n }\n\n const kind = tokenIsLoop(this.state.type) ? \"loop\" : this.match(71) ? \"switch\" : null;\n\n for (let i = this.state.labels.length - 1; i >= 0; i--) {\n const label = this.state.labels[i];\n\n if (label.statementStart === node.start) {\n label.statementStart = this.state.start;\n label.kind = kind;\n } else {\n break;\n }\n }\n\n this.state.labels.push({\n name: maybeName,\n kind: kind,\n statementStart: this.state.start\n });\n node.body = this.parseStatement(context ? context.indexOf(\"label\") === -1 ? context + \"label\" : context : \"label\");\n this.state.labels.pop();\n node.label = expr;\n return this.finishNode(node, \"LabeledStatement\");\n }\n\n parseExpressionStatement(node, expr) {\n node.expression = expr;\n this.semicolon();\n return this.finishNode(node, \"ExpressionStatement\");\n }\n\n parseBlock(allowDirectives = false, createNewLexicalScope = true, afterBlockParse) {\n const node = this.startNode();\n\n if (allowDirectives) {\n this.state.strictErrors.clear();\n }\n\n this.expect(5);\n\n if (createNewLexicalScope) {\n this.scope.enter(SCOPE_OTHER);\n }\n\n this.parseBlockBody(node, allowDirectives, false, 8, afterBlockParse);\n\n if (createNewLexicalScope) {\n this.scope.exit();\n }\n\n return this.finishNode(node, \"BlockStatement\");\n }\n\n isValidDirective(stmt) {\n return stmt.type === \"ExpressionStatement\" && stmt.expression.type === \"StringLiteral\" && !stmt.expression.extra.parenthesized;\n }\n\n parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) {\n const body = node.body = [];\n const directives = node.directives = [];\n this.parseBlockOrModuleBlockBody(body, allowDirectives ? directives : undefined, topLevel, end, afterBlockParse);\n }\n\n parseBlockOrModuleBlockBody(body, directives, topLevel, end, afterBlockParse) {\n const oldStrict = this.state.strict;\n let hasStrictModeDirective = false;\n let parsedNonDirective = false;\n\n while (!this.match(end)) {\n const stmt = this.parseStatement(null, topLevel);\n\n if (directives && !parsedNonDirective) {\n if (this.isValidDirective(stmt)) {\n const directive = this.stmtToDirective(stmt);\n directives.push(directive);\n\n if (!hasStrictModeDirective && directive.value.value === \"use strict\") {\n hasStrictModeDirective = true;\n this.setStrict(true);\n }\n\n continue;\n }\n\n parsedNonDirective = true;\n this.state.strictErrors.clear();\n }\n\n body.push(stmt);\n }\n\n if (afterBlockParse) {\n afterBlockParse.call(this, hasStrictModeDirective);\n }\n\n if (!oldStrict) {\n this.setStrict(false);\n }\n\n this.next();\n }\n\n parseFor(node, init) {\n node.init = init;\n this.semicolon(false);\n node.test = this.match(13) ? null : this.parseExpression();\n this.semicolon(false);\n node.update = this.match(11) ? null : this.parseExpression();\n this.expect(11);\n node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement(\"for\"));\n this.scope.exit();\n this.state.labels.pop();\n return this.finishNode(node, \"ForStatement\");\n }\n\n parseForIn(node, init, awaitAt) {\n const isForIn = this.match(58);\n this.next();\n\n if (isForIn) {\n if (awaitAt !== null) this.unexpected(awaitAt);\n } else {\n node.await = awaitAt !== null;\n }\n\n if (init.type === \"VariableDeclaration\" && init.declarations[0].init != null && (!isForIn || this.state.strict || init.kind !== \"var\" || init.declarations[0].id.type !== \"Identifier\")) {\n this.raise(ErrorMessages.ForInOfLoopInitializer, {\n node: init\n }, isForIn ? \"for-in\" : \"for-of\");\n }\n\n if (init.type === \"AssignmentPattern\") {\n this.raise(ErrorMessages.InvalidLhs, {\n node: init\n }, \"for-loop\");\n }\n\n node.left = init;\n node.right = isForIn ? this.parseExpression() : this.parseMaybeAssignAllowIn();\n this.expect(11);\n node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement(\"for\"));\n this.scope.exit();\n this.state.labels.pop();\n return this.finishNode(node, isForIn ? \"ForInStatement\" : \"ForOfStatement\");\n }\n\n parseVar(node, isFor, kind) {\n const declarations = node.declarations = [];\n const isTypescript = this.hasPlugin(\"typescript\");\n node.kind = kind;\n\n for (;;) {\n const decl = this.startNode();\n this.parseVarId(decl, kind);\n\n if (this.eat(29)) {\n decl.init = isFor ? this.parseMaybeAssignDisallowIn() : this.parseMaybeAssignAllowIn();\n } else {\n if (kind === \"const\" && !(this.match(58) || this.isContextual(101))) {\n if (!isTypescript) {\n this.raise(ErrorMessages.DeclarationMissingInitializer, {\n at: this.state.lastTokEndLoc\n }, \"Const declarations\");\n }\n } else if (decl.id.type !== \"Identifier\" && !(isFor && (this.match(58) || this.isContextual(101)))) {\n this.raise(ErrorMessages.DeclarationMissingInitializer, {\n at: this.state.lastTokEndLoc\n }, \"Complex binding patterns\");\n }\n\n decl.init = null;\n }\n\n declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n if (!this.eat(12)) break;\n }\n\n return node;\n }\n\n parseVarId(decl, kind) {\n decl.id = this.parseBindingAtom();\n this.checkLVal(decl.id, \"variable declaration\", kind === \"var\" ? BIND_VAR : BIND_LEXICAL, undefined, kind !== \"var\");\n }\n\n parseFunction(node, statement = FUNC_NO_FLAGS, isAsync = false) {\n const isStatement = statement & FUNC_STATEMENT;\n const isHangingStatement = statement & FUNC_HANGING_STATEMENT;\n const requireId = !!isStatement && !(statement & FUNC_NULLABLE_ID);\n this.initFunction(node, isAsync);\n\n if (this.match(55) && isHangingStatement) {\n this.raise(ErrorMessages.GeneratorInSingleStatementContext, {\n at: this.state.startLoc\n });\n }\n\n node.generator = this.eat(55);\n\n if (isStatement) {\n node.id = this.parseFunctionId(requireId);\n }\n\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n this.state.maybeInArrowParameters = false;\n this.scope.enter(SCOPE_FUNCTION);\n this.prodParam.enter(functionFlags(isAsync, node.generator));\n\n if (!isStatement) {\n node.id = this.parseFunctionId();\n }\n\n this.parseFunctionParams(node, false);\n this.withSmartMixTopicForbiddingContext(() => {\n this.parseFunctionBodyAndFinish(node, isStatement ? \"FunctionDeclaration\" : \"FunctionExpression\");\n });\n this.prodParam.exit();\n this.scope.exit();\n\n if (isStatement && !isHangingStatement) {\n this.registerFunctionStatementId(node);\n }\n\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n return node;\n }\n\n parseFunctionId(requireId) {\n return requireId || tokenIsIdentifier(this.state.type) ? this.parseIdentifier() : null;\n }\n\n parseFunctionParams(node, allowModifiers) {\n this.expect(10);\n this.expressionScope.enter(newParameterDeclarationScope());\n node.params = this.parseBindingList(11, 41, false, allowModifiers);\n this.expressionScope.exit();\n }\n\n registerFunctionStatementId(node) {\n if (!node.id) return;\n this.scope.declareName(node.id.name, this.state.strict || node.generator || node.async ? this.scope.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION, node.id.loc.start);\n }\n\n parseClass(node, isStatement, optionalId) {\n this.next();\n this.takeDecorators(node);\n const oldStrict = this.state.strict;\n this.state.strict = true;\n this.parseClassId(node, isStatement, optionalId);\n this.parseClassSuper(node);\n node.body = this.parseClassBody(!!node.superClass, oldStrict);\n return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\");\n }\n\n isClassProperty() {\n return this.match(29) || this.match(13) || this.match(8);\n }\n\n isClassMethod() {\n return this.match(10);\n }\n\n isNonstaticConstructor(method) {\n return !method.computed && !method.static && (method.key.name === \"constructor\" || method.key.value === \"constructor\");\n }\n\n parseClassBody(hadSuperClass, oldStrict) {\n this.classScope.enter();\n const state = {\n hadConstructor: false,\n hadSuperClass\n };\n let decorators = [];\n const classBody = this.startNode();\n classBody.body = [];\n this.expect(5);\n this.withSmartMixTopicForbiddingContext(() => {\n while (!this.match(8)) {\n if (this.eat(13)) {\n if (decorators.length > 0) {\n throw this.raise(ErrorMessages.DecoratorSemicolon, {\n at: this.state.lastTokEndLoc\n });\n }\n\n continue;\n }\n\n if (this.match(26)) {\n decorators.push(this.parseDecorator());\n continue;\n }\n\n const member = this.startNode();\n\n if (decorators.length) {\n member.decorators = decorators;\n this.resetStartLocationFromNode(member, decorators[0]);\n decorators = [];\n }\n\n this.parseClassMember(classBody, member, state);\n\n if (member.kind === \"constructor\" && member.decorators && member.decorators.length > 0) {\n this.raise(ErrorMessages.DecoratorConstructor, {\n node: member\n });\n }\n }\n });\n this.state.strict = oldStrict;\n this.next();\n\n if (decorators.length) {\n throw this.raise(ErrorMessages.TrailingDecorator, {\n at: this.state.startLoc\n });\n }\n\n this.classScope.exit();\n return this.finishNode(classBody, \"ClassBody\");\n }\n\n parseClassMemberFromModifier(classBody, member) {\n const key = this.parseIdentifier(true);\n\n if (this.isClassMethod()) {\n const method = member;\n method.kind = \"method\";\n method.computed = false;\n method.key = key;\n method.static = false;\n this.pushClassMethod(classBody, method, false, false, false, false);\n return true;\n } else if (this.isClassProperty()) {\n const prop = member;\n prop.computed = false;\n prop.key = key;\n prop.static = false;\n classBody.body.push(this.parseClassProperty(prop));\n return true;\n }\n\n this.resetPreviousNodeTrailingComments(key);\n return false;\n }\n\n parseClassMember(classBody, member, state) {\n const isStatic = this.isContextual(104);\n\n if (isStatic) {\n if (this.parseClassMemberFromModifier(classBody, member)) {\n return;\n }\n\n if (this.eat(5)) {\n this.parseClassStaticBlock(classBody, member);\n return;\n }\n }\n\n this.parseClassMemberWithIsStatic(classBody, member, state, isStatic);\n }\n\n parseClassMemberWithIsStatic(classBody, member, state, isStatic) {\n const publicMethod = member;\n const privateMethod = member;\n const publicProp = member;\n const privateProp = member;\n const accessorProp = member;\n const method = publicMethod;\n const publicMember = publicMethod;\n member.static = isStatic;\n this.parsePropertyNamePrefixOperator(member);\n\n if (this.eat(55)) {\n method.kind = \"method\";\n const isPrivateName = this.match(134);\n this.parseClassElementName(method);\n\n if (isPrivateName) {\n this.pushClassPrivateMethod(classBody, privateMethod, true, false);\n return;\n }\n\n if (this.isNonstaticConstructor(publicMethod)) {\n this.raise(ErrorMessages.ConstructorIsGenerator, {\n node: publicMethod.key\n });\n }\n\n this.pushClassMethod(classBody, publicMethod, true, false, false, false);\n return;\n }\n\n const isContextual = tokenIsIdentifier(this.state.type) && !this.state.containsEsc;\n const isPrivate = this.match(134);\n const key = this.parseClassElementName(member);\n const maybeQuestionTokenStartLoc = this.state.startLoc;\n this.parsePostMemberNameModifiers(publicMember);\n\n if (this.isClassMethod()) {\n method.kind = \"method\";\n\n if (isPrivate) {\n this.pushClassPrivateMethod(classBody, privateMethod, false, false);\n return;\n }\n\n const isConstructor = this.isNonstaticConstructor(publicMethod);\n let allowsDirectSuper = false;\n\n if (isConstructor) {\n publicMethod.kind = \"constructor\";\n\n if (state.hadConstructor && !this.hasPlugin(\"typescript\")) {\n this.raise(ErrorMessages.DuplicateConstructor, {\n node: key\n });\n }\n\n if (isConstructor && this.hasPlugin(\"typescript\") && member.override) {\n this.raise(ErrorMessages.OverrideOnConstructor, {\n node: key\n });\n }\n\n state.hadConstructor = true;\n allowsDirectSuper = state.hadSuperClass;\n }\n\n this.pushClassMethod(classBody, publicMethod, false, false, isConstructor, allowsDirectSuper);\n } else if (this.isClassProperty()) {\n if (isPrivate) {\n this.pushClassPrivateProperty(classBody, privateProp);\n } else {\n this.pushClassProperty(classBody, publicProp);\n }\n } else if (isContextual && key.name === \"async\" && !this.isLineTerminator()) {\n this.resetPreviousNodeTrailingComments(key);\n const isGenerator = this.eat(55);\n\n if (publicMember.optional) {\n this.unexpected(maybeQuestionTokenStartLoc);\n }\n\n method.kind = \"method\";\n const isPrivate = this.match(134);\n this.parseClassElementName(method);\n this.parsePostMemberNameModifiers(publicMember);\n\n if (isPrivate) {\n this.pushClassPrivateMethod(classBody, privateMethod, isGenerator, true);\n } else {\n if (this.isNonstaticConstructor(publicMethod)) {\n this.raise(ErrorMessages.ConstructorIsAsync, {\n node: publicMethod.key\n });\n }\n\n this.pushClassMethod(classBody, publicMethod, isGenerator, true, false, false);\n }\n } else if (isContextual && (key.name === \"get\" || key.name === \"set\") && !(this.match(55) && this.isLineTerminator())) {\n this.resetPreviousNodeTrailingComments(key);\n method.kind = key.name;\n const isPrivate = this.match(134);\n this.parseClassElementName(publicMethod);\n\n if (isPrivate) {\n this.pushClassPrivateMethod(classBody, privateMethod, false, false);\n } else {\n if (this.isNonstaticConstructor(publicMethod)) {\n this.raise(ErrorMessages.ConstructorIsAccessor, {\n node: publicMethod.key\n });\n }\n\n this.pushClassMethod(classBody, publicMethod, false, false, false, false);\n }\n\n this.checkGetterSetterParams(publicMethod);\n } else if (isContextual && key.name === \"accessor\" && !this.isLineTerminator()) {\n this.expectPlugin(\"decoratorAutoAccessors\");\n this.resetPreviousNodeTrailingComments(key);\n const isPrivate = this.match(134);\n this.parseClassElementName(publicProp);\n this.pushClassAccessorProperty(classBody, accessorProp, isPrivate);\n } else if (this.isLineTerminator()) {\n if (isPrivate) {\n this.pushClassPrivateProperty(classBody, privateProp);\n } else {\n this.pushClassProperty(classBody, publicProp);\n }\n } else {\n this.unexpected();\n }\n }\n\n parseClassElementName(member) {\n const {\n type,\n value\n } = this.state;\n\n if ((type === 128 || type === 129) && member.static && value === \"prototype\") {\n this.raise(ErrorMessages.StaticPrototype, {\n at: this.state.startLoc\n });\n }\n\n if (type === 134) {\n if (value === \"constructor\") {\n this.raise(ErrorMessages.ConstructorClassPrivateField, {\n at: this.state.startLoc\n });\n }\n\n const key = this.parsePrivateName();\n member.key = key;\n return key;\n }\n\n return this.parsePropertyName(member);\n }\n\n parseClassStaticBlock(classBody, member) {\n var _member$decorators;\n\n this.scope.enter(SCOPE_CLASS | SCOPE_STATIC_BLOCK | SCOPE_SUPER);\n const oldLabels = this.state.labels;\n this.state.labels = [];\n this.prodParam.enter(PARAM);\n const body = member.body = [];\n this.parseBlockOrModuleBlockBody(body, undefined, false, 8);\n this.prodParam.exit();\n this.scope.exit();\n this.state.labels = oldLabels;\n classBody.body.push(this.finishNode(member, \"StaticBlock\"));\n\n if ((_member$decorators = member.decorators) != null && _member$decorators.length) {\n this.raise(ErrorMessages.DecoratorStaticBlock, {\n node: member\n });\n }\n }\n\n pushClassProperty(classBody, prop) {\n if (!prop.computed && (prop.key.name === \"constructor\" || prop.key.value === \"constructor\")) {\n this.raise(ErrorMessages.ConstructorClassField, {\n node: prop.key\n });\n }\n\n classBody.body.push(this.parseClassProperty(prop));\n }\n\n pushClassPrivateProperty(classBody, prop) {\n const node = this.parseClassPrivateProperty(prop);\n classBody.body.push(node);\n this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), CLASS_ELEMENT_OTHER, node.key.loc.start);\n }\n\n pushClassAccessorProperty(classBody, prop, isPrivate) {\n if (!isPrivate && !prop.computed) {\n const key = prop.key;\n\n if (key.name === \"constructor\" || key.value === \"constructor\") {\n this.raise(ErrorMessages.ConstructorClassField, {\n node: key\n });\n }\n }\n\n const node = this.parseClassAccessorProperty(prop);\n classBody.body.push(node);\n\n if (isPrivate) {\n this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), CLASS_ELEMENT_OTHER, node.key.loc.start);\n }\n }\n\n pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {\n classBody.body.push(this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, \"ClassMethod\", true));\n }\n\n pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {\n const node = this.parseMethod(method, isGenerator, isAsync, false, false, \"ClassPrivateMethod\", true);\n classBody.body.push(node);\n const kind = node.kind === \"get\" ? node.static ? CLASS_ELEMENT_STATIC_GETTER : CLASS_ELEMENT_INSTANCE_GETTER : node.kind === \"set\" ? node.static ? CLASS_ELEMENT_STATIC_SETTER : CLASS_ELEMENT_INSTANCE_SETTER : CLASS_ELEMENT_OTHER;\n this.declareClassPrivateMethodInScope(node, kind);\n }\n\n declareClassPrivateMethodInScope(node, kind) {\n this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), kind, node.key.loc.start);\n }\n\n parsePostMemberNameModifiers(methodOrProp) {}\n\n parseClassPrivateProperty(node) {\n this.parseInitializer(node);\n this.semicolon();\n return this.finishNode(node, \"ClassPrivateProperty\");\n }\n\n parseClassProperty(node) {\n this.parseInitializer(node);\n this.semicolon();\n return this.finishNode(node, \"ClassProperty\");\n }\n\n parseClassAccessorProperty(node) {\n this.parseInitializer(node);\n this.semicolon();\n return this.finishNode(node, \"ClassAccessorProperty\");\n }\n\n parseInitializer(node) {\n this.scope.enter(SCOPE_CLASS | SCOPE_SUPER);\n this.expressionScope.enter(newExpressionScope());\n this.prodParam.enter(PARAM);\n node.value = this.eat(29) ? this.parseMaybeAssignAllowIn() : null;\n this.expressionScope.exit();\n this.prodParam.exit();\n this.scope.exit();\n }\n\n parseClassId(node, isStatement, optionalId, bindingType = BIND_CLASS) {\n if (tokenIsIdentifier(this.state.type)) {\n node.id = this.parseIdentifier();\n\n if (isStatement) {\n this.checkLVal(node.id, \"class name\", bindingType);\n }\n } else {\n if (optionalId || !isStatement) {\n node.id = null;\n } else {\n throw this.raise(ErrorMessages.MissingClassName, {\n at: this.state.startLoc\n });\n }\n }\n }\n\n parseClassSuper(node) {\n node.superClass = this.eat(81) ? this.parseExprSubscripts() : null;\n }\n\n parseExport(node) {\n const hasDefault = this.maybeParseExportDefaultSpecifier(node);\n const parseAfterDefault = !hasDefault || this.eat(12);\n const hasStar = parseAfterDefault && this.eatExportStar(node);\n const hasNamespace = hasStar && this.maybeParseExportNamespaceSpecifier(node);\n const parseAfterNamespace = parseAfterDefault && (!hasNamespace || this.eat(12));\n const isFromRequired = hasDefault || hasStar;\n\n if (hasStar && !hasNamespace) {\n if (hasDefault) this.unexpected();\n this.parseExportFrom(node, true);\n return this.finishNode(node, \"ExportAllDeclaration\");\n }\n\n const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node);\n\n if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers || hasNamespace && parseAfterNamespace && !hasSpecifiers) {\n throw this.unexpected(null, 5);\n }\n\n let hasDeclaration;\n\n if (isFromRequired || hasSpecifiers) {\n hasDeclaration = false;\n this.parseExportFrom(node, isFromRequired);\n } else {\n hasDeclaration = this.maybeParseExportDeclaration(node);\n }\n\n if (isFromRequired || hasSpecifiers || hasDeclaration) {\n this.checkExport(node, true, false, !!node.source);\n return this.finishNode(node, \"ExportNamedDeclaration\");\n }\n\n if (this.eat(65)) {\n node.declaration = this.parseExportDefaultExpression();\n this.checkExport(node, true, true);\n return this.finishNode(node, \"ExportDefaultDeclaration\");\n }\n\n throw this.unexpected(null, 5);\n }\n\n eatExportStar(node) {\n return this.eat(55);\n }\n\n maybeParseExportDefaultSpecifier(node) {\n if (this.isExportDefaultSpecifier()) {\n this.expectPlugin(\"exportDefaultFrom\");\n const specifier = this.startNode();\n specifier.exported = this.parseIdentifier(true);\n node.specifiers = [this.finishNode(specifier, \"ExportDefaultSpecifier\")];\n return true;\n }\n\n return false;\n }\n\n maybeParseExportNamespaceSpecifier(node) {\n if (this.isContextual(93)) {\n if (!node.specifiers) node.specifiers = [];\n const specifier = this.startNodeAt(this.state.lastTokStart, this.state.lastTokStartLoc);\n this.next();\n specifier.exported = this.parseModuleExportName();\n node.specifiers.push(this.finishNode(specifier, \"ExportNamespaceSpecifier\"));\n return true;\n }\n\n return false;\n }\n\n maybeParseExportNamedSpecifiers(node) {\n if (this.match(5)) {\n if (!node.specifiers) node.specifiers = [];\n const isTypeExport = node.exportKind === \"type\";\n node.specifiers.push(...this.parseExportSpecifiers(isTypeExport));\n node.source = null;\n node.declaration = null;\n\n if (this.hasPlugin(\"importAssertions\")) {\n node.assertions = [];\n }\n\n return true;\n }\n\n return false;\n }\n\n maybeParseExportDeclaration(node) {\n if (this.shouldParseExportDeclaration()) {\n node.specifiers = [];\n node.source = null;\n\n if (this.hasPlugin(\"importAssertions\")) {\n node.assertions = [];\n }\n\n node.declaration = this.parseExportDeclaration(node);\n return true;\n }\n\n return false;\n }\n\n isAsyncFunction() {\n if (!this.isContextual(95)) return false;\n const next = this.nextTokenStart();\n return !lineBreak.test(this.input.slice(this.state.pos, next)) && this.isUnparsedContextual(next, \"function\");\n }\n\n parseExportDefaultExpression() {\n const expr = this.startNode();\n const isAsync = this.isAsyncFunction();\n\n if (this.match(68) || isAsync) {\n this.next();\n\n if (isAsync) {\n this.next();\n }\n\n return this.parseFunction(expr, FUNC_STATEMENT | FUNC_NULLABLE_ID, isAsync);\n }\n\n if (this.match(80)) {\n return this.parseClass(expr, true, true);\n }\n\n if (this.match(26)) {\n if (this.hasPlugin(\"decorators\") && this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\")) {\n this.raise(ErrorMessages.DecoratorBeforeExport, {\n at: this.state.startLoc\n });\n }\n\n this.parseDecorators(false);\n return this.parseClass(expr, true, true);\n }\n\n if (this.match(75) || this.match(74) || this.isLet()) {\n throw this.raise(ErrorMessages.UnsupportedDefaultExport, {\n at: this.state.startLoc\n });\n }\n\n const res = this.parseMaybeAssignAllowIn();\n this.semicolon();\n return res;\n }\n\n parseExportDeclaration(node) {\n return this.parseStatement(null);\n }\n\n isExportDefaultSpecifier() {\n const {\n type\n } = this.state;\n\n if (tokenIsIdentifier(type)) {\n if (type === 95 && !this.state.containsEsc || type === 99) {\n return false;\n }\n\n if ((type === 126 || type === 125) && !this.state.containsEsc) {\n const {\n type: nextType\n } = this.lookahead();\n\n if (tokenIsIdentifier(nextType) && nextType !== 97 || nextType === 5) {\n this.expectOnePlugin([\"flow\", \"typescript\"]);\n return false;\n }\n }\n } else if (!this.match(65)) {\n return false;\n }\n\n const next = this.nextTokenStart();\n const hasFrom = this.isUnparsedContextual(next, \"from\");\n\n if (this.input.charCodeAt(next) === 44 || tokenIsIdentifier(this.state.type) && hasFrom) {\n return true;\n }\n\n if (this.match(65) && hasFrom) {\n const nextAfterFrom = this.input.charCodeAt(this.nextTokenStartSince(next + 4));\n return nextAfterFrom === 34 || nextAfterFrom === 39;\n }\n\n return false;\n }\n\n parseExportFrom(node, expect) {\n if (this.eatContextual(97)) {\n node.source = this.parseImportSource();\n this.checkExport(node);\n const assertions = this.maybeParseImportAssertions();\n\n if (assertions) {\n node.assertions = assertions;\n }\n } else if (expect) {\n this.unexpected();\n }\n\n this.semicolon();\n }\n\n shouldParseExportDeclaration() {\n const {\n type\n } = this.state;\n\n if (type === 26) {\n this.expectOnePlugin([\"decorators\", \"decorators-legacy\"]);\n\n if (this.hasPlugin(\"decorators\")) {\n if (this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\")) {\n throw this.raise(ErrorMessages.DecoratorBeforeExport, {\n at: this.state.startLoc\n });\n }\n\n return true;\n }\n }\n\n return type === 74 || type === 75 || type === 68 || type === 80 || this.isLet() || this.isAsyncFunction();\n }\n\n checkExport(node, checkNames, isDefault, isFrom) {\n if (checkNames) {\n if (isDefault) {\n this.checkDuplicateExports(node, \"default\");\n\n if (this.hasPlugin(\"exportDefaultFrom\")) {\n var _declaration$extra;\n\n const declaration = node.declaration;\n\n if (declaration.type === \"Identifier\" && declaration.name === \"from\" && declaration.end - declaration.start === 4 && !((_declaration$extra = declaration.extra) != null && _declaration$extra.parenthesized)) {\n this.raise(ErrorMessages.ExportDefaultFromAsIdentifier, {\n node: declaration\n });\n }\n }\n } else if (node.specifiers && node.specifiers.length) {\n for (const specifier of node.specifiers) {\n const {\n exported\n } = specifier;\n const exportedName = exported.type === \"Identifier\" ? exported.name : exported.value;\n this.checkDuplicateExports(specifier, exportedName);\n\n if (!isFrom && specifier.local) {\n const {\n local\n } = specifier;\n\n if (local.type !== \"Identifier\") {\n this.raise(ErrorMessages.ExportBindingIsString, {\n node: specifier\n }, local.value, exportedName);\n } else {\n this.checkReservedWord(local.name, local.loc.start, true, false);\n this.scope.checkLocalExport(local);\n }\n }\n }\n } else if (node.declaration) {\n if (node.declaration.type === \"FunctionDeclaration\" || node.declaration.type === \"ClassDeclaration\") {\n const id = node.declaration.id;\n if (!id) throw new Error(\"Assertion failure\");\n this.checkDuplicateExports(node, id.name);\n } else if (node.declaration.type === \"VariableDeclaration\") {\n for (const declaration of node.declaration.declarations) {\n this.checkDeclaration(declaration.id);\n }\n }\n }\n }\n\n const currentContextDecorators = this.state.decoratorStack[this.state.decoratorStack.length - 1];\n\n if (currentContextDecorators.length) {\n throw this.raise(ErrorMessages.UnsupportedDecoratorExport, {\n node\n });\n }\n }\n\n checkDeclaration(node) {\n if (node.type === \"Identifier\") {\n this.checkDuplicateExports(node, node.name);\n } else if (node.type === \"ObjectPattern\") {\n for (const prop of node.properties) {\n this.checkDeclaration(prop);\n }\n } else if (node.type === \"ArrayPattern\") {\n for (const elem of node.elements) {\n if (elem) {\n this.checkDeclaration(elem);\n }\n }\n } else if (node.type === \"ObjectProperty\") {\n this.checkDeclaration(node.value);\n } else if (node.type === \"RestElement\") {\n this.checkDeclaration(node.argument);\n } else if (node.type === \"AssignmentPattern\") {\n this.checkDeclaration(node.left);\n }\n }\n\n checkDuplicateExports(node, name) {\n if (this.exportedIdentifiers.has(name)) {\n this.raise(name === \"default\" ? ErrorMessages.DuplicateDefaultExport : ErrorMessages.DuplicateExport, {\n node\n }, name);\n }\n\n this.exportedIdentifiers.add(name);\n }\n\n parseExportSpecifiers(isInTypeExport) {\n const nodes = [];\n let first = true;\n this.expect(5);\n\n while (!this.eat(8)) {\n if (first) {\n first = false;\n } else {\n this.expect(12);\n if (this.eat(8)) break;\n }\n\n const isMaybeTypeOnly = this.isContextual(126);\n const isString = this.match(129);\n const node = this.startNode();\n node.local = this.parseModuleExportName();\n nodes.push(this.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly));\n }\n\n return nodes;\n }\n\n parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) {\n if (this.eatContextual(93)) {\n node.exported = this.parseModuleExportName();\n } else if (isString) {\n node.exported = cloneStringLiteral(node.local);\n } else if (!node.exported) {\n node.exported = cloneIdentifier(node.local);\n }\n\n return this.finishNode(node, \"ExportSpecifier\");\n }\n\n parseModuleExportName() {\n if (this.match(129)) {\n const result = this.parseStringLiteral(this.state.value);\n const surrogate = result.value.match(loneSurrogate);\n\n if (surrogate) {\n this.raise(ErrorMessages.ModuleExportNameHasLoneSurrogate, {\n node: result\n }, surrogate[0].charCodeAt(0).toString(16));\n }\n\n return result;\n }\n\n return this.parseIdentifier(true);\n }\n\n parseImport(node) {\n node.specifiers = [];\n\n if (!this.match(129)) {\n const hasDefault = this.maybeParseDefaultImportSpecifier(node);\n const parseNext = !hasDefault || this.eat(12);\n const hasStar = parseNext && this.maybeParseStarImportSpecifier(node);\n if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node);\n this.expectContextual(97);\n }\n\n node.source = this.parseImportSource();\n const assertions = this.maybeParseImportAssertions();\n\n if (assertions) {\n node.assertions = assertions;\n } else {\n const attributes = this.maybeParseModuleAttributes();\n\n if (attributes) {\n node.attributes = attributes;\n }\n }\n\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\");\n }\n\n parseImportSource() {\n if (!this.match(129)) this.unexpected();\n return this.parseExprAtom();\n }\n\n shouldParseDefaultImport(node) {\n return tokenIsIdentifier(this.state.type);\n }\n\n parseImportSpecifierLocal(node, specifier, type, contextDescription) {\n specifier.local = this.parseIdentifier();\n this.checkLVal(specifier.local, contextDescription, BIND_LEXICAL);\n node.specifiers.push(this.finishNode(specifier, type));\n }\n\n parseAssertEntries() {\n const attrs = [];\n const attrNames = new Set();\n\n do {\n if (this.match(8)) {\n break;\n }\n\n const node = this.startNode();\n const keyName = this.state.value;\n\n if (attrNames.has(keyName)) {\n this.raise(ErrorMessages.ModuleAttributesWithDuplicateKeys, {\n at: this.state.startLoc\n }, keyName);\n }\n\n attrNames.add(keyName);\n\n if (this.match(129)) {\n node.key = this.parseStringLiteral(keyName);\n } else {\n node.key = this.parseIdentifier(true);\n }\n\n this.expect(14);\n\n if (!this.match(129)) {\n throw this.raise(ErrorMessages.ModuleAttributeInvalidValue, {\n at: this.state.startLoc\n });\n }\n\n node.value = this.parseStringLiteral(this.state.value);\n this.finishNode(node, \"ImportAttribute\");\n attrs.push(node);\n } while (this.eat(12));\n\n return attrs;\n }\n\n maybeParseModuleAttributes() {\n if (this.match(76) && !this.hasPrecedingLineBreak()) {\n this.expectPlugin(\"moduleAttributes\");\n this.next();\n } else {\n if (this.hasPlugin(\"moduleAttributes\")) return [];\n return null;\n }\n\n const attrs = [];\n const attributes = new Set();\n\n do {\n const node = this.startNode();\n node.key = this.parseIdentifier(true);\n\n if (node.key.name !== \"type\") {\n this.raise(ErrorMessages.ModuleAttributeDifferentFromType, {\n node: node.key\n }, node.key.name);\n }\n\n if (attributes.has(node.key.name)) {\n this.raise(ErrorMessages.ModuleAttributesWithDuplicateKeys, {\n node: node.key\n }, node.key.name);\n }\n\n attributes.add(node.key.name);\n this.expect(14);\n\n if (!this.match(129)) {\n throw this.raise(ErrorMessages.ModuleAttributeInvalidValue, {\n at: this.state.startLoc\n });\n }\n\n node.value = this.parseStringLiteral(this.state.value);\n this.finishNode(node, \"ImportAttribute\");\n attrs.push(node);\n } while (this.eat(12));\n\n return attrs;\n }\n\n maybeParseImportAssertions() {\n if (this.isContextual(94) && !this.hasPrecedingLineBreak()) {\n this.expectPlugin(\"importAssertions\");\n this.next();\n } else {\n if (this.hasPlugin(\"importAssertions\")) return [];\n return null;\n }\n\n this.eat(5);\n const attrs = this.parseAssertEntries();\n this.eat(8);\n return attrs;\n }\n\n maybeParseDefaultImportSpecifier(node) {\n if (this.shouldParseDefaultImport(node)) {\n this.parseImportSpecifierLocal(node, this.startNode(), \"ImportDefaultSpecifier\", \"default import specifier\");\n return true;\n }\n\n return false;\n }\n\n maybeParseStarImportSpecifier(node) {\n if (this.match(55)) {\n const specifier = this.startNode();\n this.next();\n this.expectContextual(93);\n this.parseImportSpecifierLocal(node, specifier, \"ImportNamespaceSpecifier\", \"import namespace specifier\");\n return true;\n }\n\n return false;\n }\n\n parseNamedImportSpecifiers(node) {\n let first = true;\n this.expect(5);\n\n while (!this.eat(8)) {\n if (first) {\n first = false;\n } else {\n if (this.eat(14)) {\n throw this.raise(ErrorMessages.DestructureNamedImport, {\n at: this.state.startLoc\n });\n }\n\n this.expect(12);\n if (this.eat(8)) break;\n }\n\n const specifier = this.startNode();\n const importedIsString = this.match(129);\n const isMaybeTypeOnly = this.isContextual(126);\n specifier.imported = this.parseModuleExportName();\n const importSpecifier = this.parseImportSpecifier(specifier, importedIsString, node.importKind === \"type\" || node.importKind === \"typeof\", isMaybeTypeOnly);\n node.specifiers.push(importSpecifier);\n }\n }\n\n parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly) {\n if (this.eatContextual(93)) {\n specifier.local = this.parseIdentifier();\n } else {\n const {\n imported\n } = specifier;\n\n if (importedIsString) {\n throw this.raise(ErrorMessages.ImportBindingIsString, {\n node: specifier\n }, imported.value);\n }\n\n this.checkReservedWord(imported.name, specifier.loc.start, true, true);\n\n if (!specifier.local) {\n specifier.local = cloneIdentifier(imported);\n }\n }\n\n this.checkLVal(specifier.local, \"import specifier\", BIND_LEXICAL);\n return this.finishNode(specifier, \"ImportSpecifier\");\n }\n\n isThisParam(param) {\n return param.type === \"Identifier\" && param.name === \"this\";\n }\n\n}\n\nclass Parser extends StatementParser {\n constructor(options, input) {\n options = getOptions(options);\n super(options, input);\n this.options = options;\n this.initializeScopes();\n this.plugins = pluginsMap(this.options.plugins);\n this.filename = options.sourceFilename;\n }\n\n getScopeHandler() {\n return ScopeHandler;\n }\n\n parse() {\n this.enterInitialScopes();\n const file = this.startNode();\n const program = this.startNode();\n this.nextToken();\n file.errors = null;\n this.parseTopLevel(file, program);\n file.errors = this.state.errors;\n return file;\n }\n\n}\n\nfunction pluginsMap(plugins) {\n const pluginMap = new Map();\n\n for (const plugin of plugins) {\n const [name, options] = Array.isArray(plugin) ? plugin : [plugin, {}];\n if (!pluginMap.has(name)) pluginMap.set(name, options || {});\n }\n\n return pluginMap;\n}\n\nfunction parse(input, options) {\n var _options;\n\n if (((_options = options) == null ? void 0 : _options.sourceType) === \"unambiguous\") {\n options = Object.assign({}, options);\n\n try {\n options.sourceType = \"module\";\n const parser = getParser(options, input);\n const ast = parser.parse();\n\n if (parser.sawUnambiguousESM) {\n return ast;\n }\n\n if (parser.ambiguousScriptDifferentAst) {\n try {\n options.sourceType = \"script\";\n return getParser(options, input).parse();\n } catch (_unused) {}\n } else {\n ast.program.sourceType = \"script\";\n }\n\n return ast;\n } catch (moduleError) {\n try {\n options.sourceType = \"script\";\n return getParser(options, input).parse();\n } catch (_unused2) {}\n\n throw moduleError;\n }\n } else {\n return getParser(options, input).parse();\n }\n}\nfunction parseExpression(input, options) {\n const parser = getParser(options, input);\n\n if (parser.options.strictMode) {\n parser.state.strict = true;\n }\n\n return parser.getExpression();\n}\n\nfunction generateExportedTokenTypes(internalTokenTypes) {\n const tokenTypes = {};\n\n for (const typeName of Object.keys(internalTokenTypes)) {\n tokenTypes[typeName] = getExportedToken(internalTokenTypes[typeName]);\n }\n\n return tokenTypes;\n}\n\nconst tokTypes = generateExportedTokenTypes(tt);\n\nfunction getParser(options, input) {\n let cls = Parser;\n\n if (options != null && options.plugins) {\n validatePlugins(options.plugins);\n cls = getParserClass(options.plugins);\n }\n\n return new cls(options, input);\n}\n\nconst parserClassCache = {};\n\nfunction getParserClass(pluginsFromOptions) {\n const pluginList = mixinPluginNames.filter(name => hasPlugin(pluginsFromOptions, name));\n const key = pluginList.join(\"/\");\n let cls = parserClassCache[key];\n\n if (!cls) {\n cls = Parser;\n\n for (const plugin of pluginList) {\n cls = mixinPlugins[plugin](cls);\n }\n\n parserClassCache[key] = cls;\n }\n\n return cls;\n}\n\nexports.parse = parse;\nexports.parseExpression = parseExpression;\nexports.tokTypes = tokTypes;\n//# sourceMappingURL=index.js.map\n\n\n//# sourceURL=webpack:///./node_modules/@babel/parser/lib/index.js?"); +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _echarts = _interopRequireDefault(__webpack_require__(/*! echarts */ \"./node_modules/echarts/index.js\"));\nvar _resize = _interopRequireDefault(__webpack_require__(/*! ./mixins/resize */ \"./src/views/dashboard/mixins/resize.js\"));\n__webpack_require__(/*! echarts/theme/macarons */ \"./node_modules/echarts/theme/macarons.js\"); // echarts theme\n\nvar animationDuration = 6000;\nvar _default = {\n mixins: [_resize.default],\n props: {\n className: {\n type: String,\n default: 'chart'\n },\n width: {\n type: String,\n default: '100%'\n },\n height: {\n type: String,\n default: '300px'\n }\n },\n data: function data() {\n return {\n chart: null\n };\n },\n mounted: function mounted() {\n var _this = this;\n this.$nextTick(function () {\n _this.initChart();\n });\n },\n beforeDestroy: function beforeDestroy() {\n if (!this.chart) {\n return;\n }\n this.chart.dispose();\n this.chart = null;\n },\n methods: {\n initChart: function initChart() {\n this.chart = _echarts.default.init(this.$el, 'macarons');\n this.chart.setOption({\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n // 坐标轴指示器,坐标轴触发有效\n type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'\n }\n },\n\n grid: {\n top: 10,\n left: '2%',\n right: '2%',\n bottom: '3%',\n containLabel: true\n },\n xAxis: [{\n type: 'category',\n data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],\n axisTick: {\n alignWithLabel: true\n }\n }],\n yAxis: [{\n type: 'value',\n axisTick: {\n show: false\n }\n }],\n series: [{\n name: 'pageA',\n type: 'bar',\n stack: 'vistors',\n barWidth: '60%',\n data: [79, 52, 200, 334, 390, 330, 220],\n animationDuration: animationDuration\n }, {\n name: 'pageB',\n type: 'bar',\n stack: 'vistors',\n barWidth: '60%',\n data: [80, 52, 200, 334, 390, 330, 220],\n animationDuration: animationDuration\n }, {\n name: 'pageC',\n type: 'bar',\n stack: 'vistors',\n barWidth: '60%',\n data: [30, 52, 200, 334, 390, 330, 220],\n animationDuration: animationDuration\n }]\n });\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/dashboard/BarChart.vue?./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/form/formEditor.vue?vue&type=script&lang=js&": +/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/LineChart.vue?vue&type=script&lang=js&": /*!***********************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/bpm/form/formEditor.vue?vue&type=script&lang=js& ***! + !*** ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/dashboard/LineChart.vue?vue&type=script&lang=js& ***! \***********************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/helpers/typeof.js */ \"./node_modules/@babel/runtime/helpers/typeof.js\"));\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/helpers/objectSpread2.js */ \"./node_modules/@babel/runtime/helpers/objectSpread2.js\"));\n\n__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\n\n__webpack_require__(/*! core-js/modules/es.string.replace.js */ \"./node_modules/core-js/modules/es.string.replace.js\");\n\n__webpack_require__(/*! core-js/modules/es.function.name.js */ \"./node_modules/core-js/modules/es.function.name.js\");\n\n__webpack_require__(/*! core-js/modules/es.string.split.js */ \"./node_modules/core-js/modules/es.string.split.js\");\n\n__webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.find-index.js */ \"./node_modules/core-js/modules/es.array.find-index.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.find.js */ \"./node_modules/core-js/modules/es.array.find.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.concat.js */ \"./node_modules/core-js/modules/es.array.concat.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.map.js */ \"./node_modules/core-js/modules/es.array.map.js\");\n\n__webpack_require__(/*! core-js/modules/es.json.stringify.js */ \"./node_modules/core-js/modules/es.json.stringify.js\");\n\n__webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.splice.js */ \"./node_modules/core-js/modules/es.array.splice.js\");\n\n__webpack_require__(/*! core-js/modules/es.object.keys.js */ \"./node_modules/core-js/modules/es.object.keys.js\");\n\nvar _vuedraggable = _interopRequireDefault(__webpack_require__(/*! vuedraggable */ \"./node_modules/vuedraggable/dist/vuedraggable.umd.js\"));\n\nvar _throttleDebounce = __webpack_require__(/*! throttle-debounce */ \"./node_modules/throttle-debounce/index.umd.js\");\n\nvar _fileSaver = __webpack_require__(/*! file-saver */ \"./node_modules/file-saver/dist/FileSaver.min.js\");\n\nvar _clipboard = _interopRequireDefault(__webpack_require__(/*! clipboard */ \"./node_modules/clipboard/dist/clipboard.js\"));\n\nvar _render = _interopRequireDefault(__webpack_require__(/*! @/components/render/render */ \"./src/components/render/render.js\"));\n\nvar _FormDrawer = _interopRequireDefault(__webpack_require__(/*! @/views/infra/build/FormDrawer */ \"./src/views/infra/build/FormDrawer.vue\"));\n\nvar _JsonDrawer = _interopRequireDefault(__webpack_require__(/*! @/views/infra/build/JsonDrawer */ \"./src/views/infra/build/JsonDrawer.vue\"));\n\nvar _RightPanel = _interopRequireDefault(__webpack_require__(/*! @/views/infra/build/RightPanel */ \"./src/views/infra/build/RightPanel.vue\"));\n\nvar _config = __webpack_require__(/*! @/components/generator/config */ \"./src/components/generator/config.js\");\n\nvar _index = __webpack_require__(/*! @/utils/index */ \"./src/utils/index.js\");\n\nvar _html = __webpack_require__(/*! @/components/generator/html */ \"./src/components/generator/html.js\");\n\nvar _js = __webpack_require__(/*! @/components/generator/js */ \"./src/components/generator/js.js\");\n\nvar _css = __webpack_require__(/*! @/components/generator/css */ \"./src/components/generator/css.js\");\n\nvar _drawingDefalut = _interopRequireDefault(__webpack_require__(/*! @/components/generator/drawingDefalut */ \"./src/components/generator/drawingDefalut.js\"));\n\nvar _logo = _interopRequireDefault(__webpack_require__(/*! @/assets/logo/logo.png */ \"./src/assets/logo/logo.png\"));\n\nvar _CodeTypeDialog = _interopRequireDefault(__webpack_require__(/*! @/views/infra/build/CodeTypeDialog */ \"./src/views/infra/build/CodeTypeDialog.vue\"));\n\nvar _DraggableItem = _interopRequireDefault(__webpack_require__(/*! @/views/infra/build/DraggableItem */ \"./src/views/infra/build/DraggableItem.vue\"));\n\nvar _db = __webpack_require__(/*! @/utils/db */ \"./src/utils/db.js\");\n\nvar _loadBeautifier = _interopRequireDefault(__webpack_require__(/*! @/utils/loadBeautifier */ \"./src/utils/loadBeautifier.js\"));\n\nvar _constants = __webpack_require__(/*! @/utils/constants */ \"./src/utils/constants.js\");\n\nvar _form = __webpack_require__(/*! @/api/bpm/form */ \"./src/api/bpm/form.js\");\n\nvar _formGenerator = __webpack_require__(/*! @/utils/formGenerator */ \"./src/utils/formGenerator.js\");\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar beautifier;\nvar emptyActiveData = {\n style: {},\n autosize: {}\n};\nvar oldActiveId;\nvar tempActiveData;\nvar drawingListInDB = (0, _db.getDrawingList)();\nvar formConfInDB = (0, _db.getFormConf)();\nvar idGlobal = (0, _db.getIdGlobal)();\nvar _default = {\n components: {\n draggable: _vuedraggable.default,\n render: _render.default,\n FormDrawer: _FormDrawer.default,\n JsonDrawer: _JsonDrawer.default,\n RightPanel: _RightPanel.default,\n CodeTypeDialog: _CodeTypeDialog.default,\n DraggableItem: _DraggableItem.default\n },\n data: function data() {\n return {\n logo: _logo.default,\n idGlobal: idGlobal,\n formConf: _config.formConf,\n inputComponents: _config.inputComponents,\n selectComponents: _config.selectComponents,\n layoutComponents: _config.layoutComponents,\n labelWidth: 100,\n // drawingList: drawingDefalut,\n drawingData: {},\n // 生成后的表单数据\n activeId: _drawingDefalut.default[0].__config__.formId,\n drawingList: [],\n // 表单项的数组\n // activeId: undefined,\n // activeData: {},\n drawerVisible: false,\n formData: {},\n dialogVisible: false,\n jsonDrawerVisible: false,\n generateConf: null,\n showFileName: false,\n activeData: _drawingDefalut.default[0],\n // 右边编辑器激活的表单项\n saveDrawingListDebounce: (0, _throttleDebounce.debounce)(340, _db.saveDrawingList),\n saveIdGlobalDebounce: (0, _throttleDebounce.debounce)(340, _db.saveIdGlobal),\n leftComponents: [{\n title: '输入型组件',\n list: _config.inputComponents\n }, {\n title: '选择型组件',\n list: _config.selectComponents\n }, {\n title: '布局型组件',\n list: _config.layoutComponents\n }],\n // 表单参数\n form: {\n status: _constants.CommonStatusEnum.ENABLE\n },\n // 表单校验\n rules: {\n name: [{\n required: true,\n message: \"表单名不能为空\",\n trigger: \"blur\"\n }],\n status: [{\n required: true,\n message: \"开启状态不能为空\",\n trigger: \"blur\"\n }]\n }\n };\n },\n computed: {},\n watch: {\n // eslint-disable-next-line func-names\n 'activeData.__config__.label': function activeData__config__Label(val, oldVal) {\n if (this.activeData.placeholder === undefined || !this.activeData.__config__.tag || oldActiveId !== this.activeId) {\n return;\n }\n\n this.activeData.placeholder = this.activeData.placeholder.replace(oldVal, '') + val;\n },\n activeId: {\n handler: function handler(val) {\n oldActiveId = val;\n },\n immediate: true\n },\n drawingList: {\n handler: function handler(val) {\n this.saveDrawingListDebounce(val);\n if (val.length === 0) this.idGlobal = 100;\n },\n deep: true\n },\n idGlobal: {\n handler: function handler(val) {\n this.saveIdGlobalDebounce(val);\n },\n immediate: true\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n // 【add by 芋道源码】不读缓存\n // if (Array.isArray(drawingListInDB) && drawingListInDB.length > 0) {\n // this.drawingList = drawingListInDB\n // } else {\n // this.drawingList = drawingDefalut\n // }\n // this.activeFormItem(this.drawingList[0])\n // if (formConfInDB) {\n // this.formConf = formConfInDB\n // }\n (0, _loadBeautifier.default)(function (btf) {\n beautifier = btf;\n });\n var clipboard = new _clipboard.default('#copyNode', {\n text: function text(trigger) {\n var codeStr = _this.generateCode();\n\n _this.$notify({\n title: '成功',\n message: '代码已复制到剪切板,可粘贴。',\n type: 'success'\n });\n\n return codeStr;\n }\n });\n clipboard.on('error', function (e) {\n _this.$message.error('代码复制失败');\n });\n },\n created: function created() {\n var _this2 = this;\n\n // 读取表单配置\n var formId = this.$route.query && this.$route.query.formId;\n\n if (formId) {\n (0, _form.getForm)(formId).then(function (response) {\n var data = response.data;\n _this2.form = {\n id: data.id,\n name: data.name,\n status: data.status,\n remark: data.remark\n };\n _this2.formConf = JSON.parse(data.conf);\n _this2.drawingList = (0, _formGenerator.decodeFields)(data.fields); // 设置激活的表单项\n\n _this2.activeData = _this2.drawingList[0];\n _this2.activeId = _this2.activeData.__config__.formId; // 设置 idGlobal,避免重复\n\n _this2.idGlobal += _this2.drawingList.length;\n });\n }\n },\n methods: {\n setObjectValueReduce: function setObjectValueReduce(obj, strKeys, data) {\n var arr = strKeys.split('.');\n arr.reduce(function (pre, item, i) {\n if (arr.length === i + 1) {\n pre[item] = data;\n } else if (!(0, _index.isObjectObject)(pre[item])) {\n pre[item] = {};\n }\n\n return pre[item];\n }, obj);\n },\n setRespData: function setRespData(component, resp) {\n var _component$__config__ = component.__config__,\n dataPath = _component$__config__.dataPath,\n renderKey = _component$__config__.renderKey,\n dataConsumer = _component$__config__.dataConsumer;\n if (!dataPath || !dataConsumer) return;\n var respData = dataPath.split('.').reduce(function (pre, item) {\n return pre[item];\n }, resp); // 将请求回来的数据,赋值到指定属性。\n // 以el-tabel为例,根据Element文档,应该将数据赋值给el-tabel的data属性,所以dataConsumer的值应为'data';\n // 此时赋值代码可写成 component[dataConsumer] = respData;\n // 但为支持更深层级的赋值(如:dataConsumer的值为'options.data'),使用setObjectValueReduce\n\n this.setObjectValueReduce(component, dataConsumer, respData);\n var i = this.drawingList.findIndex(function (item) {\n return item.__config__.renderKey === renderKey;\n });\n if (i > -1) this.$set(this.drawingList, i, component);\n },\n fetchData: function fetchData(component) {\n var _this3 = this;\n\n var _component$__config__2 = component.__config__,\n dataType = _component$__config__2.dataType,\n method = _component$__config__2.method,\n url = _component$__config__2.url;\n\n if (dataType === 'dynamic' && method && url) {\n this.setLoading(component, true);\n this.$axios({\n method: method,\n url: url\n }).then(function (resp) {\n _this3.setLoading(component, false);\n\n _this3.setRespData(component, resp.data);\n });\n }\n },\n setLoading: function setLoading(component, val) {\n var directives = component.directives;\n\n if (Array.isArray(directives)) {\n var t = directives.find(function (d) {\n return d.name === 'loading';\n });\n if (t) t.value = val;\n }\n },\n activeFormItem: function activeFormItem(currentItem) {\n this.activeData = currentItem;\n this.activeId = currentItem.__config__.formId;\n },\n onEnd: function onEnd(obj) {\n if (obj.from !== obj.to) {\n this.fetchData(tempActiveData);\n this.activeData = tempActiveData;\n this.activeId = this.idGlobal;\n }\n },\n addComponent: function addComponent(item) {\n var clone = this.cloneComponent(item);\n this.fetchData(clone);\n this.drawingList.push(clone);\n this.activeFormItem(clone);\n },\n cloneComponent: function cloneComponent(origin) {\n var clone = (0, _index.deepClone)(origin);\n var config = clone.__config__;\n config.span = this.formConf.span; // 生成代码时,会根据span做精简判断\n\n this.createIdAndKey(clone);\n clone.placeholder !== undefined && (clone.placeholder += config.label);\n tempActiveData = clone;\n return tempActiveData;\n },\n createIdAndKey: function createIdAndKey(item) {\n var _this4 = this;\n\n var config = item.__config__;\n config.formId = ++this.idGlobal;\n config.renderKey = \"\".concat(config.formId).concat(+new Date()); // 改变renderKey后可以实现强制更新组件\n\n if (config.layout === 'colFormItem') {\n item.__vModel__ = \"field\".concat(this.idGlobal);\n } else if (config.layout === 'rowFormItem') {\n config.componentName = \"row\".concat(this.idGlobal);\n !Array.isArray(config.children) && (config.children = []);\n delete config.label; // rowFormItem无需配置label属性\n }\n\n if (Array.isArray(config.children)) {\n config.children = config.children.map(function (childItem) {\n return _this4.createIdAndKey(childItem);\n });\n }\n\n return item;\n },\n // 获得表单数据\n AssembleFormData: function AssembleFormData() {\n this.formData = (0, _objectSpread2.default)({\n fields: (0, _index.deepClone)(this.drawingList)\n }, this.formConf);\n },\n save: function save() {\n var _this5 = this;\n\n // this.AssembleFormData()\n // console.log(this.formData)\n this.$refs[\"form\"].validate(function (valid) {\n if (!valid) {\n return;\n }\n\n var form = (0, _objectSpread2.default)({\n conf: JSON.stringify(_this5.formConf),\n // 表单配置\n fields: _this5.encodeFields()\n }, _this5.form); // 修改的提交\n\n if (_this5.form.id != null) {\n (0, _form.updateForm)(form).then(function (response) {\n _this5.$modal.msgSuccess(\"修改成功\");\n\n _this5.close();\n });\n return;\n } // 添加的提交\n\n\n (0, _form.createForm)(form).then(function (response) {\n _this5.$modal.msgSuccess(\"新增成功\");\n\n _this5.close();\n });\n });\n },\n\n /** 关闭按钮 */\n close: function close() {\n this.$tab.closeOpenPage({\n path: \"/bpm/manager/form\"\n });\n },\n encodeFields: function encodeFields() {\n var fields = [];\n this.drawingList.forEach(function (item) {\n fields.push(JSON.stringify(item));\n });\n return fields;\n },\n generate: function generate(data) {\n var func = this[\"exec\".concat((0, _index.titleCase)(this.operationType))];\n this.generateConf = data;\n func && func(data);\n },\n execRun: function execRun(data) {\n this.AssembleFormData();\n this.drawerVisible = true;\n },\n execDownload: function execDownload(data) {\n var codeStr = this.generateCode();\n var blob = new Blob([codeStr], {\n type: 'text/plain;charset=utf-8'\n });\n (0, _fileSaver.saveAs)(blob, data.fileName);\n },\n execCopy: function execCopy(data) {\n document.getElementById('copyNode').click();\n },\n empty: function empty() {\n var _this6 = this;\n\n this.$confirm('确定要清空所有组件吗?', '提示', {\n type: 'warning'\n }).then(function () {\n _this6.drawingList = [];\n _this6.idGlobal = 100;\n });\n },\n drawingItemCopy: function drawingItemCopy(item, list) {\n var clone = (0, _index.deepClone)(item);\n clone = this.createIdAndKey(clone);\n list.push(clone);\n this.activeFormItem(clone);\n },\n drawingItemDelete: function drawingItemDelete(index, list) {\n var _this7 = this;\n\n list.splice(index, 1);\n this.$nextTick(function () {\n var len = _this7.drawingList.length;\n\n if (len) {\n _this7.activeFormItem(_this7.drawingList[len - 1]);\n }\n });\n },\n generateCode: function generateCode() {\n var type = this.generateConf.type;\n this.AssembleFormData();\n var script = (0, _html.vueScript)((0, _js.makeUpJs)(this.formData, type));\n var html = (0, _html.vueTemplate)((0, _html.makeUpHtml)(this.formData, type));\n var css = (0, _html.cssStyle)((0, _css.makeUpCss)(this.formData));\n return beautifier.html(html + script + css, _index.beautifierConf.html);\n },\n showJson: function showJson() {\n this.AssembleFormData();\n this.jsonDrawerVisible = true;\n },\n download: function download() {\n this.dialogVisible = true;\n this.showFileName = true;\n this.operationType = 'download';\n },\n run: function run() {\n this.dialogVisible = true;\n this.showFileName = false;\n this.operationType = 'run';\n },\n copy: function copy() {\n this.dialogVisible = true;\n this.showFileName = false;\n this.operationType = 'copy';\n },\n tagChange: function tagChange(newTag) {\n var _this8 = this;\n\n newTag = this.cloneComponent(newTag);\n var config = newTag.__config__;\n newTag.__vModel__ = this.activeData.__vModel__;\n config.formId = this.activeId;\n config.span = this.activeData.__config__.span;\n this.activeData.__config__.tag = config.tag;\n this.activeData.__config__.tagIcon = config.tagIcon;\n this.activeData.__config__.document = config.document;\n\n if ((0, _typeof2.default)(this.activeData.__config__.defaultValue) === (0, _typeof2.default)(config.defaultValue)) {\n config.defaultValue = this.activeData.__config__.defaultValue;\n }\n\n Object.keys(newTag).forEach(function (key) {\n if (_this8.activeData[key] !== undefined) {\n newTag[key] = _this8.activeData[key];\n }\n });\n this.activeData = newTag;\n this.updateDrawingList(newTag, this.drawingList);\n },\n updateDrawingList: function updateDrawingList(newTag, list) {\n var _this9 = this;\n\n var index = list.findIndex(function (item) {\n return item.__config__.formId === _this9.activeId;\n });\n\n if (index > -1) {\n list.splice(index, 1, newTag);\n } else {\n list.forEach(function (item) {\n if (Array.isArray(item.__config__.children)) _this9.updateDrawingList(newTag, item.__config__.children);\n });\n }\n },\n refreshJson: function refreshJson(data) {\n this.drawingList = (0, _index.deepClone)(data.fields);\n delete data.fields;\n this.formConf = data;\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/bpm/form/formEditor.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _echarts = _interopRequireDefault(__webpack_require__(/*! echarts */ \"./node_modules/echarts/index.js\"));\nvar _resize = _interopRequireDefault(__webpack_require__(/*! ./mixins/resize */ \"./src/views/dashboard/mixins/resize.js\"));\n__webpack_require__(/*! echarts/theme/macarons */ \"./node_modules/echarts/theme/macarons.js\"); // echarts theme\nvar _default = {\n mixins: [_resize.default],\n props: {\n className: {\n type: String,\n default: 'chart'\n },\n width: {\n type: String,\n default: '100%'\n },\n height: {\n type: String,\n default: '350px'\n },\n autoResize: {\n type: Boolean,\n default: true\n },\n chartData: {\n type: Object,\n required: true\n }\n },\n data: function data() {\n return {\n chart: null\n };\n },\n watch: {\n chartData: {\n deep: true,\n handler: function handler(val) {\n this.setOptions(val);\n }\n }\n },\n mounted: function mounted() {\n var _this = this;\n this.$nextTick(function () {\n _this.initChart();\n });\n },\n beforeDestroy: function beforeDestroy() {\n if (!this.chart) {\n return;\n }\n this.chart.dispose();\n this.chart = null;\n },\n methods: {\n initChart: function initChart() {\n this.chart = _echarts.default.init(this.$el, 'macarons');\n this.setOptions(this.chartData);\n },\n setOptions: function setOptions() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n expectedData = _ref.expectedData,\n actualData = _ref.actualData;\n this.chart.setOption({\n xAxis: {\n data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],\n boundaryGap: false,\n axisTick: {\n show: false\n }\n },\n grid: {\n left: 10,\n right: 10,\n bottom: 20,\n top: 30,\n containLabel: true\n },\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'cross'\n },\n padding: [5, 10]\n },\n yAxis: {\n axisTick: {\n show: false\n }\n },\n legend: {\n data: ['expected', 'actual']\n },\n series: [{\n name: 'expected',\n itemStyle: {\n normal: {\n color: '#FF005A',\n lineStyle: {\n color: '#FF005A',\n width: 2\n }\n }\n },\n smooth: true,\n type: 'line',\n data: expectedData,\n animationDuration: 2800,\n animationEasing: 'cubicInOut'\n }, {\n name: 'actual',\n smooth: true,\n type: 'line',\n itemStyle: {\n normal: {\n color: '#3888fa',\n lineStyle: {\n color: '#3888fa',\n width: 2\n },\n areaStyle: {\n color: '#f3f8ff'\n }\n }\n },\n data: actualData,\n animationDuration: 2800,\n animationEasing: 'quadraticOut'\n }]\n });\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/dashboard/LineChart.vue?./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/CodeTypeDialog.vue?vue&type=script&lang=js&": -/*!******************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/CodeTypeDialog.vue?vue&type=script&lang=js& ***! - \******************************************************************************************************************************************************************************************************************************************************************/ +/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/PanelGroup.vue?vue&type=script&lang=js&": +/*!************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/dashboard/PanelGroup.vue?vue&type=script&lang=js& ***! + \************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/helpers/objectSpread2.js */ \"./node_modules/@babel/runtime/helpers/objectSpread2.js\"));\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n inheritAttrs: false,\n props: ['showFileName'],\n data: function data() {\n return {\n formData: {\n fileName: undefined,\n type: 'file'\n },\n rules: {\n fileName: [{\n required: true,\n message: '请输入文件名',\n trigger: 'blur'\n }],\n type: [{\n required: true,\n message: '生成类型不能为空',\n trigger: 'change'\n }]\n },\n typeOptions: [{\n label: '页面',\n value: 'file'\n }, {\n label: '弹窗',\n value: 'dialog'\n }]\n };\n },\n computed: {},\n watch: {},\n mounted: function mounted() {},\n methods: {\n onOpen: function onOpen() {\n if (this.showFileName) {\n this.formData.fileName = \"\".concat(+new Date(), \".vue\");\n }\n },\n onClose: function onClose() {},\n close: function close(e) {\n this.$emit('update:visible', false);\n },\n handelConfirm: function handelConfirm() {\n var _this = this;\n\n this.$refs.elForm.validate(function (valid) {\n if (!valid) return;\n\n _this.$emit('confirm', (0, _objectSpread2.default)({}, _this.formData));\n\n _this.close();\n });\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/infra/build/CodeTypeDialog.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _vueCountTo = _interopRequireDefault(__webpack_require__(/*! vue-count-to */ \"./node_modules/vue-count-to/dist/vue-count-to.min.js\"));\nvar _default = {\n components: {\n CountTo: _vueCountTo.default\n },\n methods: {\n handleSetLineChartData: function handleSetLineChartData(type) {\n this.$emit('handleSetLineChartData', type);\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/dashboard/PanelGroup.vue?./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/DraggableItem.vue?vue&type=script&lang=js&": -/*!*****************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/DraggableItem.vue?vue&type=script&lang=js& ***! - \*****************************************************************************************************************************************************************************************************************************************************************/ +/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/PieChart.vue?vue&type=script&lang=js&": +/*!**********************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/dashboard/PieChart.vue?vue&type=script&lang=js& ***! + \**********************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n__webpack_require__(/*! core-js/modules/es.array.map.js */ \"./node_modules/core-js/modules/es.array.map.js\");\n\n__webpack_require__(/*! core-js/modules/es.error.cause.js */ \"./node_modules/core-js/modules/es.error.cause.js\");\n\nvar _vuedraggable = _interopRequireDefault(__webpack_require__(/*! vuedraggable */ \"./node_modules/vuedraggable/dist/vuedraggable.umd.js\"));\n\nvar _render = _interopRequireDefault(__webpack_require__(/*! @/components/render/render */ \"./src/components/render/render.js\"));\n\nvar components = {\n itemBtns: function itemBtns(h, currentItem, index, list) {\n var _this$$listeners = this.$listeners,\n copyItem = _this$$listeners.copyItem,\n deleteItem = _this$$listeners.deleteItem;\n return [h(\"span\", {\n \"class\": \"drawing-item-copy\",\n \"attrs\": {\n \"title\": \"复制\"\n },\n \"on\": {\n \"click\": function click(event) {\n copyItem(currentItem, list);\n event.stopPropagation();\n }\n }\n }, [h(\"i\", {\n \"class\": \"el-icon-copy-document\"\n })]), h(\"span\", {\n \"class\": \"drawing-item-delete\",\n \"attrs\": {\n \"title\": \"删除\"\n },\n \"on\": {\n \"click\": function click(event) {\n deleteItem(index, list);\n event.stopPropagation();\n }\n }\n }, [h(\"i\", {\n \"class\": \"el-icon-delete\"\n })])];\n }\n};\nvar layouts = {\n colFormItem: function colFormItem(h, currentItem, index, list) {\n var _this = this;\n\n var activeItem = this.$listeners.activeItem;\n var config = currentItem.__config__;\n var child = renderChildren.apply(this, arguments);\n var className = this.activeId === config.formId ? 'drawing-item active-from-item' : 'drawing-item';\n if (this.formConf.unFocusedComponentBorder) className += ' unfocus-bordered';\n var labelWidth = config.labelWidth ? \"\".concat(config.labelWidth, \"px\") : null;\n if (config.showLabel === false) labelWidth = '0';\n return h(\"el-col\", {\n \"attrs\": {\n \"span\": config.span\n },\n \"class\": className,\n \"nativeOn\": {\n \"click\": function click(event) {\n activeItem(currentItem);\n event.stopPropagation();\n }\n }\n }, [h(\"el-form-item\", {\n \"attrs\": {\n \"label-width\": labelWidth,\n \"label\": config.showLabel ? config.label : '',\n \"required\": config.required\n }\n }, [h(_render.default, {\n \"key\": config.renderKey,\n \"attrs\": {\n \"conf\": currentItem\n },\n \"on\": {\n \"input\": function input(event) {\n _this.$set(config, 'defaultValue', event);\n }\n }\n }, [child])]), components.itemBtns.apply(this, arguments)]);\n },\n rowFormItem: function rowFormItem(h, currentItem, index, list) {\n var activeItem = this.$listeners.activeItem;\n var config = currentItem.__config__;\n var className = this.activeId === config.formId ? 'drawing-row-item active-from-item' : 'drawing-row-item';\n var child = renderChildren.apply(this, arguments);\n\n if (currentItem.type === 'flex') {\n child = h(\"el-row\", {\n \"attrs\": {\n \"type\": currentItem.type,\n \"justify\": currentItem.justify,\n \"align\": currentItem.align\n }\n }, [child]);\n }\n\n return h(\"el-col\", {\n \"attrs\": {\n \"span\": config.span\n }\n }, [h(\"el-row\", {\n \"attrs\": {\n \"gutter\": config.gutter\n },\n \"class\": className,\n \"nativeOn\": {\n \"click\": function click(event) {\n activeItem(currentItem);\n event.stopPropagation();\n }\n }\n }, [h(\"span\", {\n \"class\": \"component-name\"\n }, [config.componentName]), h(_vuedraggable.default, {\n \"attrs\": {\n \"list\": config.children || [],\n \"animation\": 340,\n \"group\": \"componentsGroup\"\n },\n \"class\": \"drag-wrapper\"\n }, [child]), components.itemBtns.apply(this, arguments)])]);\n },\n raw: function raw(h, currentItem, index, list) {\n var _this2 = this;\n\n var config = currentItem.__config__;\n var child = renderChildren.apply(this, arguments);\n return h(_render.default, {\n \"key\": config.renderKey,\n \"attrs\": {\n \"conf\": currentItem\n },\n \"on\": {\n \"input\": function input(event) {\n _this2.$set(config, 'defaultValue', event);\n }\n }\n }, [child]);\n }\n};\n\nfunction renderChildren(h, currentItem, index, list) {\n var _this3 = this;\n\n var config = currentItem.__config__;\n if (!Array.isArray(config.children)) return null;\n return config.children.map(function (el, i) {\n var layout = layouts[el.__config__.layout];\n\n if (layout) {\n return layout.call(_this3, h, el, i, config.children);\n }\n\n return layoutIsNotFound.call(_this3);\n });\n}\n\nfunction layoutIsNotFound() {\n throw new Error(\"\\u6CA1\\u6709\\u4E0E\".concat(this.currentItem.__config__.layout, \"\\u5339\\u914D\\u7684layout\"));\n}\n\nvar _default = {\n components: {\n render: _render.default,\n draggable: _vuedraggable.default\n },\n props: ['currentItem', 'index', 'drawingList', 'activeId', 'formConf'],\n render: function render(h) {\n var layout = layouts[this.currentItem.__config__.layout];\n\n if (layout) {\n return layout.call(this, h, this.currentItem, this.index, this.drawingList);\n }\n\n return layoutIsNotFound.call(this);\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/infra/build/DraggableItem.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _echarts = _interopRequireDefault(__webpack_require__(/*! echarts */ \"./node_modules/echarts/index.js\"));\nvar _resize = _interopRequireDefault(__webpack_require__(/*! ./mixins/resize */ \"./src/views/dashboard/mixins/resize.js\"));\n__webpack_require__(/*! echarts/theme/macarons */ \"./node_modules/echarts/theme/macarons.js\"); // echarts theme\nvar _default = {\n mixins: [_resize.default],\n props: {\n className: {\n type: String,\n default: 'chart'\n },\n width: {\n type: String,\n default: '100%'\n },\n height: {\n type: String,\n default: '300px'\n }\n },\n data: function data() {\n return {\n chart: null\n };\n },\n mounted: function mounted() {\n var _this = this;\n this.$nextTick(function () {\n _this.initChart();\n });\n },\n beforeDestroy: function beforeDestroy() {\n if (!this.chart) {\n return;\n }\n this.chart.dispose();\n this.chart = null;\n },\n methods: {\n initChart: function initChart() {\n this.chart = _echarts.default.init(this.$el, 'macarons');\n this.chart.setOption({\n tooltip: {\n trigger: 'item',\n formatter: '{a}
{b} : {c} ({d}%)'\n },\n legend: {\n left: 'center',\n bottom: '10',\n data: ['Industries', 'Technology', 'Forex', 'Gold', 'Forecasts']\n },\n series: [{\n name: 'WEEKLY WRITE ARTICLES',\n type: 'pie',\n roseType: 'radius',\n radius: [15, 95],\n center: ['50%', '38%'],\n data: [{\n value: 320,\n name: 'Industries'\n }, {\n value: 240,\n name: 'Technology'\n }, {\n value: 149,\n name: 'Forex'\n }, {\n value: 100,\n name: 'Gold'\n }, {\n value: 59,\n name: 'Forecasts'\n }],\n animationEasing: 'cubicInOut',\n animationDuration: 2600\n }]\n });\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/dashboard/PieChart.vue?./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/FormDrawer.vue?vue&type=script&lang=js&": -/*!**************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/FormDrawer.vue?vue&type=script&lang=js& ***! - \**************************************************************************************************************************************************************************************************************************************************************/ +/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/RaddarChart.vue?vue&type=script&lang=js&": +/*!*************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/dashboard/RaddarChart.vue?vue&type=script&lang=js& ***! + \*************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n__webpack_require__(/*! core-js/modules/es.array.concat.js */ \"./node_modules/core-js/modules/es.array.concat.js\");\n\n__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\n\n__webpack_require__(/*! core-js/modules/es.string.replace.js */ \"./node_modules/core-js/modules/es.string.replace.js\");\n\n__webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");\n\n__webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");\n\n__webpack_require__(/*! core-js/modules/es.string.ends-with.js */ \"./node_modules/core-js/modules/es.string.ends-with.js\");\n\nvar _parser = __webpack_require__(/*! @babel/parser */ \"./node_modules/@babel/parser/lib/index.js\");\n\nvar _clipboard = _interopRequireDefault(__webpack_require__(/*! clipboard */ \"./node_modules/clipboard/dist/clipboard.js\"));\n\nvar _fileSaver = __webpack_require__(/*! file-saver */ \"./node_modules/file-saver/dist/FileSaver.min.js\");\n\nvar _html = __webpack_require__(/*! @/components/generator/html */ \"./src/components/generator/html.js\");\n\nvar _js = __webpack_require__(/*! @/components/generator/js */ \"./src/components/generator/js.js\");\n\nvar _css = __webpack_require__(/*! @/components/generator/css */ \"./src/components/generator/css.js\");\n\nvar _index = __webpack_require__(/*! @/utils/index */ \"./src/utils/index.js\");\n\nvar _ResourceDialog = _interopRequireDefault(__webpack_require__(/*! ./ResourceDialog */ \"./src/views/infra/build/ResourceDialog.vue\"));\n\nvar _loadMonaco = _interopRequireDefault(__webpack_require__(/*! @/utils/loadMonaco */ \"./src/utils/loadMonaco.js\"));\n\nvar _loadBeautifier = _interopRequireDefault(__webpack_require__(/*! @/utils/loadBeautifier */ \"./src/utils/loadBeautifier.js\"));\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar editorObj = {\n html: null,\n js: null,\n css: null\n};\nvar mode = {\n html: 'html',\n js: 'javascript',\n css: 'css'\n};\nvar beautifier;\nvar monaco;\nvar _default = {\n components: {\n ResourceDialog: _ResourceDialog.default\n },\n props: ['formData', 'generateConf'],\n data: function data() {\n return {\n activeTab: 'html',\n htmlCode: '',\n jsCode: '',\n cssCode: '',\n codeFrame: '',\n isIframeLoaded: false,\n isInitcode: false,\n // 保证open后两个异步只执行一次runcode\n isRefreshCode: false,\n // 每次打开都需要重新刷新代码\n resourceVisible: false,\n scripts: [],\n links: [],\n monaco: null\n };\n },\n computed: {\n resources: function resources() {\n return this.scripts.concat(this.links);\n }\n },\n watch: {},\n created: function created() {},\n mounted: function mounted() {\n var _this = this;\n\n window.addEventListener('keydown', this.preventDefaultSave);\n var clipboard = new _clipboard.default('.copy-btn', {\n text: function text(trigger) {\n var codeStr = _this.generateCode();\n\n _this.$notify({\n title: '成功',\n message: '代码已复制到剪切板,可粘贴。',\n type: 'success'\n });\n\n return codeStr;\n }\n });\n clipboard.on('error', function (e) {\n _this.$message.error('代码复制失败');\n });\n },\n beforeDestroy: function beforeDestroy() {\n window.removeEventListener('keydown', this.preventDefaultSave);\n },\n methods: {\n preventDefaultSave: function preventDefaultSave(e) {\n if (e.key === 's' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n }\n },\n onOpen: function onOpen() {\n var _this2 = this;\n\n var type = this.generateConf.type;\n this.htmlCode = (0, _html.makeUpHtml)(this.formData, type);\n this.jsCode = (0, _js.makeUpJs)(this.formData, type);\n this.cssCode = (0, _css.makeUpCss)(this.formData);\n (0, _loadBeautifier.default)(function (btf) {\n beautifier = btf;\n _this2.htmlCode = beautifier.html(_this2.htmlCode, _index.beautifierConf.html);\n _this2.jsCode = beautifier.js(_this2.jsCode, _index.beautifierConf.js);\n _this2.cssCode = beautifier.css(_this2.cssCode, _index.beautifierConf.html);\n (0, _loadMonaco.default)(function (val) {\n monaco = val;\n\n _this2.setEditorValue('editorHtml', 'html', _this2.htmlCode);\n\n _this2.setEditorValue('editorJs', 'js', _this2.jsCode);\n\n _this2.setEditorValue('editorCss', 'css', _this2.cssCode);\n\n if (!_this2.isInitcode) {\n _this2.isRefreshCode = true;\n _this2.isIframeLoaded && (_this2.isInitcode = true) && _this2.runCode();\n }\n });\n });\n },\n onClose: function onClose() {\n this.isInitcode = false;\n this.isRefreshCode = false;\n },\n iframeLoad: function iframeLoad() {\n if (!this.isInitcode) {\n this.isIframeLoaded = true;\n this.isRefreshCode && (this.isInitcode = true) && this.runCode();\n }\n },\n setEditorValue: function setEditorValue(id, type, codeStr) {\n var _this3 = this;\n\n if (editorObj[type]) {\n editorObj[type].setValue(codeStr);\n } else {\n editorObj[type] = monaco.editor.create(document.getElementById(id), {\n value: codeStr,\n theme: 'vs-dark',\n language: mode[type],\n automaticLayout: true\n });\n } // ctrl + s 刷新\n\n\n editorObj[type].onKeyDown(function (e) {\n if (e.keyCode === 49 && (e.metaKey || e.ctrlKey)) {\n _this3.runCode();\n }\n });\n },\n runCode: function runCode() {\n var jsCodeStr = editorObj.js.getValue();\n\n try {\n var ast = (0, _parser.parse)(jsCodeStr, {\n sourceType: 'module'\n });\n var astBody = ast.program.body;\n\n if (astBody.length > 1) {\n this.$confirm('js格式不能识别,仅支持修改export default的对象内容', '提示', {\n type: 'warning'\n }).catch(function () {});\n return;\n }\n\n if (astBody[0].type === 'ExportDefaultDeclaration') {\n var postData = {\n type: 'refreshFrame',\n data: {\n generateConf: this.generateConf,\n html: editorObj.html.getValue(),\n js: jsCodeStr.replace(_index.exportDefault, ''),\n css: editorObj.css.getValue(),\n scripts: this.scripts,\n links: this.links\n }\n };\n this.$refs.previewPage.contentWindow.postMessage(postData, location.origin);\n } else {\n this.$message.error('请使用export default');\n }\n } catch (err) {\n this.$message.error(\"js\\u9519\\u8BEF\\uFF1A\".concat(err));\n console.error(err);\n }\n },\n generateCode: function generateCode() {\n var html = (0, _html.vueTemplate)(editorObj.html.getValue());\n var script = (0, _html.vueScript)(editorObj.js.getValue());\n var css = (0, _html.cssStyle)(editorObj.css.getValue());\n return beautifier.html(html + script + css, _index.beautifierConf.html);\n },\n exportFile: function exportFile() {\n var _this4 = this;\n\n this.$prompt('文件名:', '导出文件', {\n inputValue: \"\".concat(+new Date(), \".vue\"),\n closeOnClickModal: false,\n inputPlaceholder: '请输入文件名'\n }).then(function (_ref) {\n var value = _ref.value;\n if (!value) value = \"\".concat(+new Date(), \".vue\");\n\n var codeStr = _this4.generateCode();\n\n var blob = new Blob([codeStr], {\n type: 'text/plain;charset=utf-8'\n });\n (0, _fileSaver.saveAs)(blob, value);\n });\n },\n showResource: function showResource() {\n this.resourceVisible = true;\n },\n setResource: function setResource(arr) {\n var scripts = [];\n var links = [];\n\n if (Array.isArray(arr)) {\n arr.forEach(function (item) {\n if (item.endsWith('.css')) {\n links.push(item);\n } else {\n scripts.push(item);\n }\n });\n this.scripts = scripts;\n this.links = links;\n } else {\n this.scripts = [];\n this.links = [];\n }\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/infra/build/FormDrawer.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _echarts = _interopRequireDefault(__webpack_require__(/*! echarts */ \"./node_modules/echarts/index.js\"));\nvar _resize = _interopRequireDefault(__webpack_require__(/*! ./mixins/resize */ \"./src/views/dashboard/mixins/resize.js\"));\n__webpack_require__(/*! echarts/theme/macarons */ \"./node_modules/echarts/theme/macarons.js\"); // echarts theme\n\nvar animationDuration = 3000;\nvar _default = {\n mixins: [_resize.default],\n props: {\n className: {\n type: String,\n default: 'chart'\n },\n width: {\n type: String,\n default: '100%'\n },\n height: {\n type: String,\n default: '300px'\n }\n },\n data: function data() {\n return {\n chart: null\n };\n },\n mounted: function mounted() {\n var _this = this;\n this.$nextTick(function () {\n _this.initChart();\n });\n },\n beforeDestroy: function beforeDestroy() {\n if (!this.chart) {\n return;\n }\n this.chart.dispose();\n this.chart = null;\n },\n methods: {\n initChart: function initChart() {\n this.chart = _echarts.default.init(this.$el, 'macarons');\n this.chart.setOption({\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n // 坐标轴指示器,坐标轴触发有效\n type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'\n }\n },\n\n radar: {\n radius: '66%',\n center: ['50%', '42%'],\n splitNumber: 8,\n splitArea: {\n areaStyle: {\n color: 'rgba(127,95,132,.3)',\n opacity: 1,\n shadowBlur: 45,\n shadowColor: 'rgba(0,0,0,.5)',\n shadowOffsetX: 0,\n shadowOffsetY: 15\n }\n },\n indicator: [{\n name: 'Sales',\n max: 10000\n }, {\n name: 'Administration',\n max: 20000\n }, {\n name: 'Information Techology',\n max: 20000\n }, {\n name: 'Customer Support',\n max: 20000\n }, {\n name: 'Development',\n max: 20000\n }, {\n name: 'Marketing',\n max: 20000\n }]\n },\n legend: {\n left: 'center',\n bottom: '10',\n data: ['Allocated Budget', 'Expected Spending', 'Actual Spending']\n },\n series: [{\n type: 'radar',\n symbolSize: 0,\n areaStyle: {\n normal: {\n shadowBlur: 13,\n shadowColor: 'rgba(0,0,0,.2)',\n shadowOffsetX: 0,\n shadowOffsetY: 10,\n opacity: 1\n }\n },\n data: [{\n value: [5000, 7000, 12000, 11000, 15000, 14000],\n name: 'Allocated Budget'\n }, {\n value: [4000, 9000, 15000, 15000, 13000, 11000],\n name: 'Expected Spending'\n }, {\n value: [5500, 11000, 12000, 15000, 12000, 12000],\n name: 'Actual Spending'\n }],\n animationDuration: animationDuration\n }]\n });\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/dashboard/RaddarChart.vue?./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/IconsDialog.vue?vue&type=script&lang=js&": -/*!***************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/IconsDialog.vue?vue&type=script&lang=js& ***! - \***************************************************************************************************************************************************************************************************************************************************************/ +/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/index.vue?vue&type=script&lang=js&": +/*!*********************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/index.vue?vue&type=script&lang=js& ***! + \*********************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n__webpack_require__(/*! core-js/modules/es.array.map.js */ \"./node_modules/core-js/modules/es.array.map.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.filter.js */ \"./node_modules/core-js/modules/es.array.filter.js\");\n\n__webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");\n\nvar _icon = _interopRequireDefault(__webpack_require__(/*! @/utils/icon.json */ \"./src/utils/icon.json\"));\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar originList = _icon.default.map(function (name) {\n return \"el-icon-\".concat(name);\n});\n\nvar _default = {\n inheritAttrs: false,\n props: ['current'],\n data: function data() {\n return {\n iconList: originList,\n active: null,\n key: ''\n };\n },\n watch: {\n key: function key(val) {\n if (val) {\n this.iconList = originList.filter(function (name) {\n return name.indexOf(val) > -1;\n });\n } else {\n this.iconList = originList;\n }\n }\n },\n methods: {\n onOpen: function onOpen() {\n this.active = this.current;\n this.key = '';\n },\n onClose: function onClose() {},\n onSelect: function onSelect(icon) {\n this.active = icon;\n this.$emit('select', icon);\n this.$emit('update:visible', false);\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/infra/build/IconsDialog.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _PanelGroup = _interopRequireDefault(__webpack_require__(/*! ./dashboard/PanelGroup */ \"./src/views/dashboard/PanelGroup.vue\"));\nvar _LineChart = _interopRequireDefault(__webpack_require__(/*! ./dashboard/LineChart */ \"./src/views/dashboard/LineChart.vue\"));\nvar _RaddarChart = _interopRequireDefault(__webpack_require__(/*! ./dashboard/RaddarChart */ \"./src/views/dashboard/RaddarChart.vue\"));\nvar _PieChart = _interopRequireDefault(__webpack_require__(/*! ./dashboard/PieChart */ \"./src/views/dashboard/PieChart.vue\"));\nvar _BarChart = _interopRequireDefault(__webpack_require__(/*! ./dashboard/BarChart */ \"./src/views/dashboard/BarChart.vue\"));\nvar lineChartData = {\n newVisitis: {\n expectedData: [100, 120, 161, 134, 105, 160, 165],\n actualData: [120, 82, 91, 154, 162, 140, 145]\n },\n messages: {\n expectedData: [200, 192, 120, 144, 160, 130, 140],\n actualData: [180, 160, 151, 106, 145, 150, 130]\n },\n purchases: {\n expectedData: [80, 100, 121, 104, 105, 90, 100],\n actualData: [120, 90, 100, 138, 142, 130, 130]\n },\n shoppings: {\n expectedData: [130, 140, 141, 142, 145, 150, 160],\n actualData: [120, 82, 91, 154, 162, 140, 130]\n }\n};\nvar _default = {\n name: 'Index',\n components: {\n PanelGroup: _PanelGroup.default,\n LineChart: _LineChart.default,\n RaddarChart: _RaddarChart.default,\n PieChart: _PieChart.default,\n BarChart: _BarChart.default\n },\n data: function data() {\n return {\n lineChartData: lineChartData.newVisitis\n };\n },\n methods: {\n handleSetLineChartData: function handleSetLineChartData(type) {\n this.lineChartData = lineChartData[type];\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/index.vue?./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/JsonDrawer.vue?vue&type=script&lang=js&": -/*!**************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/JsonDrawer.vue?vue&type=script&lang=js& ***! - \**************************************************************************************************************************************************************************************************************************************************************/ +/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/BarChart.vue?vue&type=template&id=397bf160&": +/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"b76c6300-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/dashboard/BarChart.vue?vue&type=template&id=397bf160& ***! + \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _index = __webpack_require__(/*! @/utils/index */ \"./src/utils/index.js\");\n\nvar _clipboard = _interopRequireDefault(__webpack_require__(/*! clipboard */ \"./node_modules/clipboard/dist/clipboard.js\"));\n\nvar _fileSaver = __webpack_require__(/*! file-saver */ \"./node_modules/file-saver/dist/FileSaver.min.js\");\n\nvar _loadMonaco = _interopRequireDefault(__webpack_require__(/*! @/utils/loadMonaco */ \"./src/utils/loadMonaco.js\"));\n\nvar _loadBeautifier = _interopRequireDefault(__webpack_require__(/*! @/utils/loadBeautifier */ \"./src/utils/loadBeautifier.js\"));\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar beautifier;\nvar monaco;\nvar _default = {\n components: {},\n props: {\n jsonStr: {\n type: String,\n required: true\n }\n },\n data: function data() {\n return {};\n },\n computed: {},\n watch: {},\n created: function created() {},\n mounted: function mounted() {\n var _this = this;\n\n window.addEventListener('keydown', this.preventDefaultSave);\n var clipboard = new _clipboard.default('.copy-json-btn', {\n text: function text(trigger) {\n _this.$notify({\n title: '成功',\n message: '代码已复制到剪切板,可粘贴。',\n type: 'success'\n });\n\n return _this.beautifierJson;\n }\n });\n clipboard.on('error', function (e) {\n _this.$message.error('代码复制失败');\n });\n },\n beforeDestroy: function beforeDestroy() {\n window.removeEventListener('keydown', this.preventDefaultSave);\n },\n methods: {\n preventDefaultSave: function preventDefaultSave(e) {\n if (e.key === 's' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n }\n },\n onOpen: function onOpen() {\n var _this2 = this;\n\n (0, _loadBeautifier.default)(function (btf) {\n beautifier = btf;\n _this2.beautifierJson = beautifier.js(_this2.jsonStr, _index.beautifierConf.js);\n (0, _loadMonaco.default)(function (val) {\n monaco = val;\n\n _this2.setEditorValue('editorJson', _this2.beautifierJson);\n });\n });\n },\n onClose: function onClose() {},\n setEditorValue: function setEditorValue(id, codeStr) {\n var _this3 = this;\n\n if (this.jsonEditor) {\n this.jsonEditor.setValue(codeStr);\n } else {\n this.jsonEditor = monaco.editor.create(document.getElementById(id), {\n value: codeStr,\n theme: 'vs-dark',\n language: 'json',\n automaticLayout: true\n }); // ctrl + s 刷新\n\n this.jsonEditor.onKeyDown(function (e) {\n if (e.keyCode === 49 && (e.metaKey || e.ctrlKey)) {\n _this3.refresh();\n }\n });\n }\n },\n exportJsonFile: function exportJsonFile() {\n var _this4 = this;\n\n this.$prompt('文件名:', '导出文件', {\n inputValue: \"\".concat(+new Date(), \".json\"),\n closeOnClickModal: false,\n inputPlaceholder: '请输入文件名'\n }).then(function (_ref) {\n var value = _ref.value;\n if (!value) value = \"\".concat(+new Date(), \".json\");\n\n var codeStr = _this4.jsonEditor.getValue();\n\n var blob = new Blob([codeStr], {\n type: 'text/plain;charset=utf-8'\n });\n (0, _fileSaver.saveAs)(blob, value);\n });\n },\n refresh: function refresh() {\n try {\n this.$emit('refresh', JSON.parse(this.jsonEditor.getValue()));\n } catch (error) {\n this.$notify({\n title: '错误',\n message: 'JSON格式错误,请检查',\n type: 'error'\n });\n }\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/infra/build/JsonDrawer.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.staticRenderFns = exports.render = void 0;\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", {\n class: _vm.className,\n style: {\n height: _vm.height,\n width: _vm.width\n }\n });\n};\nexports.render = render;\nvar staticRenderFns = [];\nexports.staticRenderFns = staticRenderFns;\nrender._withStripped = true;\n\n//# sourceURL=webpack:///./src/views/dashboard/BarChart.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22b76c6300-vue-loader-template%22%7D!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/ResourceDialog.vue?vue&type=script&lang=js&": -/*!******************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/ResourceDialog.vue?vue&type=script&lang=js& ***! - \******************************************************************************************************************************************************************************************************************************************************************/ +/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/LineChart.vue?vue&type=template&id=edb3ae76&": +/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"b76c6300-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/dashboard/LineChart.vue?vue&type=template&id=edb3ae76& ***! + \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n__webpack_require__(/*! core-js/modules/es.array.filter.js */ \"./node_modules/core-js/modules/es.array.filter.js\");\n\n__webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.splice.js */ \"./node_modules/core-js/modules/es.array.splice.js\");\n\nvar _index = __webpack_require__(/*! @/utils/index */ \"./src/utils/index.js\");\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n components: {},\n inheritAttrs: false,\n props: ['originResource'],\n data: function data() {\n return {\n resources: null\n };\n },\n computed: {},\n watch: {},\n created: function created() {},\n mounted: function mounted() {},\n methods: {\n onOpen: function onOpen() {\n this.resources = this.originResource.length ? (0, _index.deepClone)(this.originResource) : [''];\n },\n onClose: function onClose() {},\n close: function close() {\n this.$emit('update:visible', false);\n },\n handelConfirm: function handelConfirm() {\n var results = this.resources.filter(function (item) {\n return !!item;\n }) || [];\n this.$emit('save', results);\n this.close();\n\n if (results.length) {\n this.resources = results;\n }\n },\n deleteOne: function deleteOne(index) {\n this.resources.splice(index, 1);\n },\n addOne: function addOne(url) {\n if (this.resources.indexOf(url) > -1) {\n this.$message('资源已存在');\n } else {\n this.resources.push(url);\n }\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/infra/build/ResourceDialog.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.staticRenderFns = exports.render = void 0;\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", {\n class: _vm.className,\n style: {\n height: _vm.height,\n width: _vm.width\n }\n });\n};\nexports.render = render;\nvar staticRenderFns = [];\nexports.staticRenderFns = staticRenderFns;\nrender._withStripped = true;\n\n//# sourceURL=webpack:///./src/views/dashboard/LineChart.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22b76c6300-vue-loader-template%22%7D!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/RightPanel.vue?vue&type=script&lang=js&": -/*!**************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/RightPanel.vue?vue&type=script&lang=js& ***! - \**************************************************************************************************************************************************************************************************************************************************************/ +/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/PanelGroup.vue?vue&type=template&id=0333a520&scoped=true&": +/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"b76c6300-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/dashboard/PanelGroup.vue?vue&type=template&id=0333a520&scoped=true& ***! + \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n__webpack_require__(/*! core-js/modules/es.array.concat.js */ \"./node_modules/core-js/modules/es.array.concat.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.find-index.js */ \"./node_modules/core-js/modules/es.array.find-index.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.splice.js */ \"./node_modules/core-js/modules/es.array.splice.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.join.js */ \"./node_modules/core-js/modules/es.array.join.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.map.js */ \"./node_modules/core-js/modules/es.array.map.js\");\n\n__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\n\n__webpack_require__(/*! core-js/modules/es.string.split.js */ \"./node_modules/core-js/modules/es.string.split.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.find.js */ \"./node_modules/core-js/modules/es.array.find.js\");\n\n__webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.includes.js */ \"./node_modules/core-js/modules/es.array.includes.js\");\n\nvar _util = __webpack_require__(/*! util */ \"./node_modules/util/util.js\");\n\nvar _TreeNodeDialog = _interopRequireDefault(__webpack_require__(/*! ./TreeNodeDialog */ \"./src/views/infra/build/TreeNodeDialog.vue\"));\n\nvar _index = __webpack_require__(/*! @/utils/index */ \"./src/utils/index.js\");\n\nvar _IconsDialog = _interopRequireDefault(__webpack_require__(/*! ./IconsDialog */ \"./src/views/infra/build/IconsDialog.vue\"));\n\nvar _config = __webpack_require__(/*! @/components/generator/config */ \"./src/components/generator/config.js\");\n\nvar _db = __webpack_require__(/*! @/utils/db */ \"./src/utils/db.js\");\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar dateTimeFormat = {\n date: 'yyyy-MM-dd',\n week: 'yyyy 第 WW 周',\n month: 'yyyy-MM',\n year: 'yyyy',\n datetime: 'yyyy-MM-dd HH:mm:ss',\n daterange: 'yyyy-MM-dd',\n monthrange: 'yyyy-MM',\n datetimerange: 'yyyy-MM-dd HH:mm:ss'\n}; // 使changeRenderKey在目标组件改变时可用\n\nvar needRerenderList = ['tinymce'];\nvar _default = {\n components: {\n TreeNodeDialog: _TreeNodeDialog.default,\n IconsDialog: _IconsDialog.default\n },\n props: ['showField', 'activeData', 'formConf'],\n data: function data() {\n return {\n currentTab: 'field',\n currentNode: null,\n dialogVisible: false,\n iconsVisible: false,\n currentIconModel: null,\n dateTypeOptions: [{\n label: '日(date)',\n value: 'date'\n }, {\n label: '周(week)',\n value: 'week'\n }, {\n label: '月(month)',\n value: 'month'\n }, {\n label: '年(year)',\n value: 'year'\n }, {\n label: '日期时间(datetime)',\n value: 'datetime'\n }],\n dateRangeTypeOptions: [{\n label: '日期范围(daterange)',\n value: 'daterange'\n }, {\n label: '月范围(monthrange)',\n value: 'monthrange'\n }, {\n label: '日期时间范围(datetimerange)',\n value: 'datetimerange'\n }],\n colorFormatOptions: [{\n label: 'hex',\n value: 'hex'\n }, {\n label: 'rgb',\n value: 'rgb'\n }, {\n label: 'rgba',\n value: 'rgba'\n }, {\n label: 'hsv',\n value: 'hsv'\n }, {\n label: 'hsl',\n value: 'hsl'\n }],\n justifyOptions: [{\n label: 'start',\n value: 'start'\n }, {\n label: 'end',\n value: 'end'\n }, {\n label: 'center',\n value: 'center'\n }, {\n label: 'space-around',\n value: 'space-around'\n }, {\n label: 'space-between',\n value: 'space-between'\n }],\n layoutTreeProps: {\n label: function label(data, node) {\n var config = data.__config__;\n return data.componentName || \"\".concat(config.label, \": \").concat(data.__vModel__);\n }\n }\n };\n },\n computed: {\n documentLink: function documentLink() {\n return this.activeData.__config__.document || 'https://element.eleme.cn/#/zh-CN/component/installation';\n },\n dateOptions: function dateOptions() {\n if (this.activeData.type !== undefined && this.activeData.__config__.tag === 'el-date-picker') {\n if (this.activeData['start-placeholder'] === undefined) {\n return this.dateTypeOptions;\n }\n\n return this.dateRangeTypeOptions;\n }\n\n return [];\n },\n tagList: function tagList() {\n return [{\n label: '输入型组件',\n options: _config.inputComponents\n }, {\n label: '选择型组件',\n options: _config.selectComponents\n }];\n },\n activeTag: function activeTag() {\n return this.activeData.__config__.tag;\n },\n isShowMin: function isShowMin() {\n return ['el-input-number', 'el-slider'].indexOf(this.activeTag) > -1;\n },\n isShowMax: function isShowMax() {\n return ['el-input-number', 'el-slider', 'el-rate'].indexOf(this.activeTag) > -1;\n },\n isShowStep: function isShowStep() {\n return ['el-input-number', 'el-slider'].indexOf(this.activeTag) > -1;\n }\n },\n watch: {\n formConf: {\n handler: function handler(val) {\n (0, _db.saveFormConf)(val);\n },\n deep: true\n }\n },\n methods: {\n addReg: function addReg() {\n this.activeData.__config__.regList.push({\n pattern: '',\n message: ''\n });\n },\n addSelectItem: function addSelectItem() {\n this.activeData.__slot__.options.push({\n label: '',\n value: ''\n });\n },\n addTreeItem: function addTreeItem() {\n ++this.idGlobal;\n this.dialogVisible = true;\n this.currentNode = this.activeData.options;\n },\n renderContent: function renderContent(h, _ref) {\n var _this = this;\n\n var node = _ref.node,\n data = _ref.data,\n store = _ref.store;\n return h(\"div\", {\n \"class\": \"custom-tree-node\"\n }, [h(\"span\", [node.label]), h(\"span\", {\n \"class\": \"node-operation\"\n }, [h(\"i\", {\n \"on\": {\n \"click\": function click() {\n return _this.append(data);\n }\n },\n \"class\": \"el-icon-plus\",\n \"attrs\": {\n \"title\": \"添加\"\n }\n }), h(\"i\", {\n \"on\": {\n \"click\": function click() {\n return _this.remove(node, data);\n }\n },\n \"class\": \"el-icon-delete\",\n \"attrs\": {\n \"title\": \"删除\"\n }\n })])]);\n },\n append: function append(data) {\n if (!data.children) {\n this.$set(data, 'children', []);\n }\n\n this.dialogVisible = true;\n this.currentNode = data.children;\n },\n remove: function remove(node, data) {\n this.activeData.__config__.defaultValue = []; // 避免删除时报错\n\n var parent = node.parent;\n var children = parent.data.children || parent.data;\n var index = children.findIndex(function (d) {\n return d.id === data.id;\n });\n children.splice(index, 1);\n },\n addNode: function addNode(data) {\n this.currentNode.push(data);\n },\n setOptionValue: function setOptionValue(item, val) {\n item.value = (0, _index.isNumberStr)(val) ? +val : val;\n },\n setDefaultValue: function setDefaultValue(val) {\n if (Array.isArray(val)) {\n return val.join(',');\n } // if (['string', 'number'].indexOf(typeof val) > -1) {\n // return val\n // }\n\n\n if (typeof val === 'boolean') {\n return \"\".concat(val);\n }\n\n return val;\n },\n onDefaultValueInput: function onDefaultValueInput(str) {\n if ((0, _util.isArray)(this.activeData.__config__.defaultValue)) {\n // 数组\n this.$set(this.activeData.__config__, 'defaultValue', str.split(',').map(function (val) {\n return (0, _index.isNumberStr)(val) ? +val : val;\n }));\n } else if (['true', 'false'].indexOf(str) > -1) {\n // 布尔\n this.$set(this.activeData.__config__, 'defaultValue', JSON.parse(str));\n } else {\n // 字符串和数字\n this.$set(this.activeData.__config__, 'defaultValue', (0, _index.isNumberStr)(str) ? +str : str);\n }\n },\n onSwitchValueInput: function onSwitchValueInput(val, name) {\n if (['true', 'false'].indexOf(val) > -1) {\n this.$set(this.activeData, name, JSON.parse(val));\n } else {\n this.$set(this.activeData, name, (0, _index.isNumberStr)(val) ? +val : val);\n }\n },\n setTimeValue: function setTimeValue(val, type) {\n var valueFormat = type === 'week' ? dateTimeFormat.date : val;\n this.$set(this.activeData.__config__, 'defaultValue', null);\n this.$set(this.activeData, 'value-format', valueFormat);\n this.$set(this.activeData, 'format', val);\n },\n spanChange: function spanChange(val) {\n this.formConf.span = val;\n },\n multipleChange: function multipleChange(val) {\n this.$set(this.activeData.__config__, 'defaultValue', val ? [] : '');\n },\n dateTypeChange: function dateTypeChange(val) {\n this.setTimeValue(dateTimeFormat[val], val);\n },\n rangeChange: function rangeChange(val) {\n this.$set(this.activeData.__config__, 'defaultValue', val ? [this.activeData.min, this.activeData.max] : this.activeData.min);\n },\n rateTextChange: function rateTextChange(val) {\n if (val) this.activeData['show-score'] = false;\n },\n rateScoreChange: function rateScoreChange(val) {\n if (val) this.activeData['show-text'] = false;\n },\n colorFormatChange: function colorFormatChange(val) {\n this.activeData.__config__.defaultValue = null;\n this.activeData['show-alpha'] = val.indexOf('a') > -1;\n this.activeData.__config__.renderKey = +new Date(); // 更新renderKey,重新渲染该组件\n },\n openIconsDialog: function openIconsDialog(model) {\n this.iconsVisible = true;\n this.currentIconModel = model;\n },\n setIcon: function setIcon(val) {\n this.activeData[this.currentIconModel] = val;\n },\n tagChange: function tagChange(tagIcon) {\n var target = _config.inputComponents.find(function (item) {\n return item.__config__.tagIcon === tagIcon;\n });\n\n if (!target) target = _config.selectComponents.find(function (item) {\n return item.__config__.tagIcon === tagIcon;\n });\n this.$emit('tag-change', target);\n },\n changeRenderKey: function changeRenderKey() {\n if (needRerenderList.includes(this.activeData.__config__.tag)) {\n this.activeData.__config__.renderKey = +new Date();\n }\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/infra/build/RightPanel.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.staticRenderFns = exports.render = void 0;\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"el-row\", {\n staticClass: \"panel-group\",\n attrs: {\n gutter: 40\n }\n }, [_c(\"el-col\", {\n staticClass: \"card-panel-col\",\n attrs: {\n xs: 12,\n sm: 12,\n lg: 6\n }\n }, [_c(\"div\", {\n staticClass: \"card-panel\",\n on: {\n click: function click($event) {\n return _vm.handleSetLineChartData(\"newVisitis\");\n }\n }\n }, [_c(\"div\", {\n staticClass: \"card-panel-icon-wrapper icon-people\"\n }, [_c(\"svg-icon\", {\n attrs: {\n \"icon-class\": \"peoples\",\n \"class-name\": \"card-panel-icon\"\n }\n })], 1), _c(\"div\", {\n staticClass: \"card-panel-description\"\n }, [_c(\"div\", {\n staticClass: \"card-panel-text\"\n }, [_vm._v(\" 访客 \")]), _c(\"count-to\", {\n staticClass: \"card-panel-num\",\n attrs: {\n \"start-val\": 0,\n \"end-val\": 102400,\n duration: 2600\n }\n })], 1)])]), _c(\"el-col\", {\n staticClass: \"card-panel-col\",\n attrs: {\n xs: 12,\n sm: 12,\n lg: 6\n }\n }, [_c(\"div\", {\n staticClass: \"card-panel\",\n on: {\n click: function click($event) {\n return _vm.handleSetLineChartData(\"messages\");\n }\n }\n }, [_c(\"div\", {\n staticClass: \"card-panel-icon-wrapper icon-message\"\n }, [_c(\"svg-icon\", {\n attrs: {\n \"icon-class\": \"message\",\n \"class-name\": \"card-panel-icon\"\n }\n })], 1), _c(\"div\", {\n staticClass: \"card-panel-description\"\n }, [_c(\"div\", {\n staticClass: \"card-panel-text\"\n }, [_vm._v(\" 消息 \")]), _c(\"count-to\", {\n staticClass: \"card-panel-num\",\n attrs: {\n \"start-val\": 0,\n \"end-val\": 81212,\n duration: 3000\n }\n })], 1)])]), _c(\"el-col\", {\n staticClass: \"card-panel-col\",\n attrs: {\n xs: 12,\n sm: 12,\n lg: 6\n }\n }, [_c(\"div\", {\n staticClass: \"card-panel\",\n on: {\n click: function click($event) {\n return _vm.handleSetLineChartData(\"purchases\");\n }\n }\n }, [_c(\"div\", {\n staticClass: \"card-panel-icon-wrapper icon-money\"\n }, [_c(\"svg-icon\", {\n attrs: {\n \"icon-class\": \"money\",\n \"class-name\": \"card-panel-icon\"\n }\n })], 1), _c(\"div\", {\n staticClass: \"card-panel-description\"\n }, [_c(\"div\", {\n staticClass: \"card-panel-text\"\n }, [_vm._v(\" 金额 \")]), _c(\"count-to\", {\n staticClass: \"card-panel-num\",\n attrs: {\n \"start-val\": 0,\n \"end-val\": 9280,\n duration: 3200\n }\n })], 1)])]), _c(\"el-col\", {\n staticClass: \"card-panel-col\",\n attrs: {\n xs: 12,\n sm: 12,\n lg: 6\n }\n }, [_c(\"div\", {\n staticClass: \"card-panel\",\n on: {\n click: function click($event) {\n return _vm.handleSetLineChartData(\"shoppings\");\n }\n }\n }, [_c(\"div\", {\n staticClass: \"card-panel-icon-wrapper icon-shopping\"\n }, [_c(\"svg-icon\", {\n attrs: {\n \"icon-class\": \"shopping\",\n \"class-name\": \"card-panel-icon\"\n }\n })], 1), _c(\"div\", {\n staticClass: \"card-panel-description\"\n }, [_c(\"div\", {\n staticClass: \"card-panel-text\"\n }, [_vm._v(\" 订单 \")]), _c(\"count-to\", {\n staticClass: \"card-panel-num\",\n attrs: {\n \"start-val\": 0,\n \"end-val\": 13600,\n duration: 3600\n }\n })], 1)])])], 1);\n};\nexports.render = render;\nvar staticRenderFns = [];\nexports.staticRenderFns = staticRenderFns;\nrender._withStripped = true;\n\n//# sourceURL=webpack:///./src/views/dashboard/PanelGroup.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22b76c6300-vue-loader-template%22%7D!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/TreeNodeDialog.vue?vue&type=script&lang=js&": -/*!******************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/TreeNodeDialog.vue?vue&type=script&lang=js& ***! - \******************************************************************************************************************************************************************************************************************************************************************/ +/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/PieChart.vue?vue&type=template&id=36c457f2&": +/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"b76c6300-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/dashboard/PieChart.vue?vue&type=template&id=36c457f2& ***! + \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _index = __webpack_require__(/*! @/utils/index */ \"./src/utils/index.js\");\n\nvar _db = __webpack_require__(/*! @/utils/db */ \"./src/utils/db.js\");\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar id = (0, _db.getTreeNodeId)();\nvar _default = {\n components: {},\n inheritAttrs: false,\n props: [],\n data: function data() {\n return {\n id: id,\n formData: {\n label: undefined,\n value: undefined\n },\n rules: {\n label: [{\n required: true,\n message: '请输入选项名',\n trigger: 'blur'\n }],\n value: [{\n required: true,\n message: '请输入选项值',\n trigger: 'blur'\n }]\n },\n dataType: 'string',\n dataTypeOptions: [{\n label: '字符串',\n value: 'string'\n }, {\n label: '数字',\n value: 'number'\n }]\n };\n },\n computed: {},\n watch: {\n // eslint-disable-next-line func-names\n 'formData.value': function formDataValue(val) {\n this.dataType = (0, _index.isNumberStr)(val) ? 'number' : 'string';\n },\n id: function id(val) {\n (0, _db.saveTreeNodeId)(val);\n }\n },\n created: function created() {},\n mounted: function mounted() {},\n methods: {\n onOpen: function onOpen() {\n this.formData = {\n label: undefined,\n value: undefined\n };\n },\n onClose: function onClose() {},\n close: function close() {\n this.$emit('update:visible', false);\n },\n handelConfirm: function handelConfirm() {\n var _this = this;\n\n this.$refs.elForm.validate(function (valid) {\n if (!valid) return;\n\n if (_this.dataType === 'number') {\n _this.formData.value = parseFloat(_this.formData.value);\n }\n\n _this.formData.id = _this.id++;\n\n _this.$emit('commit', _this.formData);\n\n _this.close();\n });\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/infra/build/TreeNodeDialog.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.staticRenderFns = exports.render = void 0;\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", {\n class: _vm.className,\n style: {\n height: _vm.height,\n width: _vm.width\n }\n });\n};\nexports.render = render;\nvar staticRenderFns = [];\nexports.staticRenderFns = staticRenderFns;\nrender._withStripped = true;\n\n//# sourceURL=webpack:///./src/views/dashboard/PieChart.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22b76c6300-vue-loader-template%22%7D!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/form/formEditor.vue?vue&type=template&id=3df0b122&": -/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/bpm/form/formEditor.vue?vue&type=template&id=3df0b122& ***! - \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"container\" },\n [\n _c(\n \"div\",\n { staticClass: \"left-board\" },\n [\n _vm._m(0),\n _c(\"el-scrollbar\", { staticClass: \"left-scrollbar\" }, [\n _c(\n \"div\",\n { staticClass: \"components-list\" },\n [\n _vm._l(_vm.leftComponents, function (item, listIndex) {\n return _c(\n \"div\",\n { key: listIndex },\n [\n _c(\n \"div\",\n { staticClass: \"components-title\" },\n [\n _c(\"svg-icon\", {\n attrs: { \"icon-class\": \"component\" },\n }),\n _vm._v(\" \" + _vm._s(item.title) + \" \"),\n ],\n 1\n ),\n _c(\n \"draggable\",\n {\n staticClass: \"components-draggable\",\n attrs: {\n list: item.list,\n group: {\n name: \"componentsGroup\",\n pull: \"clone\",\n put: false,\n },\n clone: _vm.cloneComponent,\n draggable: \".components-item\",\n sort: false,\n },\n on: { end: _vm.onEnd },\n },\n _vm._l(item.list, function (element, index) {\n return _c(\n \"div\",\n {\n key: index,\n staticClass: \"components-item\",\n on: {\n click: function ($event) {\n return _vm.addComponent(element)\n },\n },\n },\n [\n _c(\n \"div\",\n { staticClass: \"components-body\" },\n [\n _c(\"svg-icon\", {\n attrs: {\n \"icon-class\": element.__config__.tagIcon,\n },\n }),\n _vm._v(\n \" \" + _vm._s(element.__config__.label) + \" \"\n ),\n ],\n 1\n ),\n ]\n )\n }),\n 0\n ),\n ],\n 1\n )\n }),\n _c(\n \"el-form\",\n {\n ref: \"form\",\n attrs: {\n model: _vm.form,\n rules: _vm.rules,\n \"label-width\": \"80px\",\n },\n },\n [\n _c(\n \"el-form-item\",\n { attrs: { label: \"表单名\", prop: \"name\" } },\n [\n _c(\"el-input\", {\n attrs: { placeholder: \"请输入表单名\" },\n model: {\n value: _vm.form.name,\n callback: function ($$v) {\n _vm.$set(_vm.form, \"name\", $$v)\n },\n expression: \"form.name\",\n },\n }),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"开启状态\", prop: \"status\" } },\n [\n _c(\n \"el-radio-group\",\n {\n model: {\n value: _vm.form.status,\n callback: function ($$v) {\n _vm.$set(_vm.form, \"status\", $$v)\n },\n expression: \"form.status\",\n },\n },\n _vm._l(\n this.getDictDatas(_vm.DICT_TYPE.COMMON_STATUS),\n function (dict) {\n return _c(\n \"el-radio\",\n {\n key: dict.value,\n attrs: { label: parseInt(dict.value) },\n },\n [_vm._v(_vm._s(dict.label))]\n )\n }\n ),\n 1\n ),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"备注\", prop: \"remark\" } },\n [\n _c(\"el-input\", {\n attrs: {\n type: \"textarea\",\n placeholder: \"请输入备注\",\n },\n model: {\n value: _vm.form.remark,\n callback: function ($$v) {\n _vm.$set(_vm.form, \"remark\", $$v)\n },\n expression: \"form.remark\",\n },\n }),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 2\n ),\n ]),\n ],\n 1\n ),\n _c(\n \"div\",\n { staticClass: \"center-board\" },\n [\n _c(\n \"div\",\n { staticClass: \"action-bar\" },\n [\n _c(\n \"el-button\",\n {\n attrs: { icon: \"el-icon-check\", type: \"text\" },\n on: { click: _vm.save },\n },\n [_vm._v(\"保存\")]\n ),\n _c(\n \"el-button\",\n {\n attrs: { icon: \"el-icon-view\", type: \"text\" },\n on: { click: _vm.showJson },\n },\n [_vm._v(\" 查看json \")]\n ),\n _c(\n \"el-button\",\n {\n staticClass: \"delete-btn\",\n attrs: { icon: \"el-icon-delete\", type: \"text\" },\n on: { click: _vm.empty },\n },\n [_vm._v(\" 清空 \")]\n ),\n ],\n 1\n ),\n _c(\n \"el-scrollbar\",\n { staticClass: \"center-scrollbar\" },\n [\n _c(\n \"el-row\",\n {\n staticClass: \"center-board-row\",\n attrs: { gutter: _vm.formConf.gutter },\n },\n [\n _c(\n \"el-form\",\n {\n attrs: {\n size: _vm.formConf.size,\n \"label-position\": _vm.formConf.labelPosition,\n disabled: _vm.formConf.disabled,\n \"label-width\": _vm.formConf.labelWidth + \"px\",\n },\n },\n [\n _c(\n \"draggable\",\n {\n staticClass: \"drawing-board\",\n attrs: {\n list: _vm.drawingList,\n animation: 340,\n group: \"componentsGroup\",\n },\n },\n _vm._l(_vm.drawingList, function (item, index) {\n return _c(\"draggable-item\", {\n key: item.renderKey,\n attrs: {\n \"drawing-list\": _vm.drawingList,\n \"current-item\": item,\n index: index,\n \"active-id\": _vm.activeId,\n \"form-conf\": _vm.formConf,\n },\n on: {\n activeItem: _vm.activeFormItem,\n copyItem: _vm.drawingItemCopy,\n deleteItem: _vm.drawingItemDelete,\n },\n })\n }),\n 1\n ),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: !_vm.drawingList.length,\n expression: \"!drawingList.length\",\n },\n ],\n staticClass: \"empty-info\",\n },\n [_vm._v(\" 从左侧拖入或点选组件进行表单设计 \")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n _c(\"right-panel\", {\n attrs: {\n \"active-data\": _vm.activeData,\n \"form-conf\": _vm.formConf,\n \"show-field\": !!_vm.drawingList.length,\n },\n on: { \"tag-change\": _vm.tagChange, \"fetch-data\": _vm.fetchData },\n }),\n _c(\"json-drawer\", {\n attrs: {\n size: \"60%\",\n visible: _vm.jsonDrawerVisible,\n \"json-str\": JSON.stringify(_vm.formData),\n },\n on: {\n \"update:visible\": function ($event) {\n _vm.jsonDrawerVisible = $event\n },\n refresh: _vm.refreshJson,\n },\n }),\n ],\n 1\n )\n}\nvar staticRenderFns = [\n function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"logo-wrapper\" }, [\n _c(\"div\", { staticClass: \"logo\" }, [_vm._v(\"流程表单\")]),\n ])\n },\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/bpm/form/formEditor.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/CodeTypeDialog.vue?vue&type=template&id=ac1f446e&scoped=true&": -/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/CodeTypeDialog.vue?vue&type=template&id=ac1f446e&scoped=true& ***! - \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\n \"el-dialog\",\n _vm._g(\n _vm._b(\n {\n attrs: {\n width: \"500px\",\n \"close-on-click-modal\": false,\n \"modal-append-to-body\": false,\n },\n on: { open: _vm.onOpen, close: _vm.onClose },\n },\n \"el-dialog\",\n _vm.$attrs,\n false\n ),\n _vm.$listeners\n ),\n [\n _c(\n \"el-row\",\n { attrs: { gutter: 15 } },\n [\n _c(\n \"el-form\",\n {\n ref: \"elForm\",\n attrs: {\n model: _vm.formData,\n rules: _vm.rules,\n size: \"medium\",\n \"label-width\": \"100px\",\n },\n },\n [\n _c(\n \"el-col\",\n { attrs: { span: 24 } },\n [\n _c(\n \"el-form-item\",\n { attrs: { label: \"生成类型\", prop: \"type\" } },\n [\n _c(\n \"el-radio-group\",\n {\n model: {\n value: _vm.formData.type,\n callback: function ($$v) {\n _vm.$set(_vm.formData, \"type\", $$v)\n },\n expression: \"formData.type\",\n },\n },\n _vm._l(_vm.typeOptions, function (item, index) {\n return _c(\n \"el-radio-button\",\n {\n key: index,\n attrs: {\n label: item.value,\n disabled: item.disabled,\n },\n },\n [_vm._v(\" \" + _vm._s(item.label) + \" \")]\n )\n }),\n 1\n ),\n ],\n 1\n ),\n _vm.showFileName\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"文件名\", prop: \"fileName\" } },\n [\n _c(\"el-input\", {\n attrs: {\n placeholder: \"请输入文件名\",\n clearable: \"\",\n },\n model: {\n value: _vm.formData.fileName,\n callback: function ($$v) {\n _vm.$set(_vm.formData, \"fileName\", $$v)\n },\n expression: \"formData.fileName\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n _c(\n \"div\",\n { attrs: { slot: \"footer\" }, slot: \"footer\" },\n [\n _c(\"el-button\", { on: { click: _vm.close } }, [_vm._v(\" 取消 \")]),\n _c(\n \"el-button\",\n {\n attrs: { type: \"primary\" },\n on: { click: _vm.handelConfirm },\n },\n [_vm._v(\" 确定 \")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/CodeTypeDialog.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/FormDrawer.vue?vue&type=template&id=753f0faf&scoped=true&": -/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/FormDrawer.vue?vue&type=template&id=753f0faf&scoped=true& ***! - \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\n \"el-drawer\",\n _vm._g(\n _vm._b(\n { on: { opened: _vm.onOpen, close: _vm.onClose } },\n \"el-drawer\",\n _vm.$attrs,\n false\n ),\n _vm.$listeners\n ),\n [\n _c(\n \"div\",\n { staticStyle: { height: \"100%\" } },\n [\n _c(\n \"el-row\",\n { staticStyle: { height: \"100%\", overflow: \"auto\" } },\n [\n _c(\n \"el-col\",\n { staticClass: \"left-editor\", attrs: { md: 24, lg: 12 } },\n [\n _c(\n \"div\",\n {\n staticClass: \"setting\",\n attrs: { title: \"资源引用\" },\n on: { click: _vm.showResource },\n },\n [\n _c(\n \"el-badge\",\n {\n staticClass: \"item\",\n attrs: { \"is-dot\": !!_vm.resources.length },\n },\n [_c(\"i\", { staticClass: \"el-icon-setting\" })]\n ),\n ],\n 1\n ),\n _c(\n \"el-tabs\",\n {\n staticClass: \"editor-tabs\",\n attrs: { type: \"card\" },\n model: {\n value: _vm.activeTab,\n callback: function ($$v) {\n _vm.activeTab = $$v\n },\n expression: \"activeTab\",\n },\n },\n [\n _c(\"el-tab-pane\", { attrs: { name: \"html\" } }, [\n _c(\n \"span\",\n { attrs: { slot: \"label\" }, slot: \"label\" },\n [\n _vm.activeTab === \"html\"\n ? _c(\"i\", { staticClass: \"el-icon-edit\" })\n : _c(\"i\", {\n staticClass: \"el-icon-document\",\n }),\n _vm._v(\" template \"),\n ]\n ),\n ]),\n _c(\"el-tab-pane\", { attrs: { name: \"js\" } }, [\n _c(\n \"span\",\n { attrs: { slot: \"label\" }, slot: \"label\" },\n [\n _vm.activeTab === \"js\"\n ? _c(\"i\", { staticClass: \"el-icon-edit\" })\n : _c(\"i\", {\n staticClass: \"el-icon-document\",\n }),\n _vm._v(\" script \"),\n ]\n ),\n ]),\n _c(\"el-tab-pane\", { attrs: { name: \"css\" } }, [\n _c(\n \"span\",\n { attrs: { slot: \"label\" }, slot: \"label\" },\n [\n _vm.activeTab === \"css\"\n ? _c(\"i\", { staticClass: \"el-icon-edit\" })\n : _c(\"i\", {\n staticClass: \"el-icon-document\",\n }),\n _vm._v(\" css \"),\n ]\n ),\n ]),\n ],\n 1\n ),\n _c(\"div\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.activeTab === \"html\",\n expression: \"activeTab==='html'\",\n },\n ],\n staticClass: \"tab-editor\",\n attrs: { id: \"editorHtml\" },\n }),\n _c(\"div\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.activeTab === \"js\",\n expression: \"activeTab==='js'\",\n },\n ],\n staticClass: \"tab-editor\",\n attrs: { id: \"editorJs\" },\n }),\n _c(\"div\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.activeTab === \"css\",\n expression: \"activeTab==='css'\",\n },\n ],\n staticClass: \"tab-editor\",\n attrs: { id: \"editorCss\" },\n }),\n ],\n 1\n ),\n _c(\n \"el-col\",\n { staticClass: \"right-preview\", attrs: { md: 24, lg: 12 } },\n [\n _c(\n \"div\",\n {\n staticClass: \"action-bar\",\n style: { \"text-align\": \"left\" },\n },\n [\n _c(\n \"span\",\n {\n staticClass: \"bar-btn\",\n on: { click: _vm.runCode },\n },\n [\n _c(\"i\", { staticClass: \"el-icon-refresh\" }),\n _vm._v(\" 刷新 \"),\n ]\n ),\n _c(\n \"span\",\n {\n staticClass: \"bar-btn\",\n on: { click: _vm.exportFile },\n },\n [\n _c(\"i\", { staticClass: \"el-icon-download\" }),\n _vm._v(\" 导出vue文件 \"),\n ]\n ),\n _c(\n \"span\",\n { ref: \"copyBtn\", staticClass: \"bar-btn copy-btn\" },\n [\n _c(\"i\", { staticClass: \"el-icon-document-copy\" }),\n _vm._v(\" 复制代码 \"),\n ]\n ),\n _c(\n \"span\",\n {\n staticClass: \"bar-btn delete-btn\",\n on: {\n click: function ($event) {\n return _vm.$emit(\"update:visible\", false)\n },\n },\n },\n [\n _c(\"i\", { staticClass: \"el-icon-circle-close\" }),\n _vm._v(\" 关闭 \"),\n ]\n ),\n ]\n ),\n _c(\"iframe\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.isIframeLoaded,\n expression: \"isIframeLoaded\",\n },\n ],\n ref: \"previewPage\",\n staticClass: \"result-wrapper\",\n attrs: { frameborder: \"0\", src: \"preview.html\" },\n on: { load: _vm.iframeLoad },\n }),\n _c(\"div\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: !_vm.isIframeLoaded,\n expression: \"!isIframeLoaded\",\n },\n {\n name: \"loading\",\n rawName: \"v-loading\",\n value: true,\n expression: \"true\",\n },\n ],\n staticClass: \"result-wrapper\",\n }),\n ]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ]\n ),\n _c(\"resource-dialog\", {\n attrs: {\n visible: _vm.resourceVisible,\n \"origin-resource\": _vm.resources,\n },\n on: {\n \"update:visible\": function ($event) {\n _vm.resourceVisible = $event\n },\n save: _vm.setResource,\n },\n }),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/FormDrawer.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/IconsDialog.vue?vue&type=template&id=7bbbfa18&scoped=true&": -/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/IconsDialog.vue?vue&type=template&id=7bbbfa18&scoped=true& ***! - \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"icon-dialog\" },\n [\n _c(\n \"el-dialog\",\n _vm._g(\n _vm._b(\n {\n attrs: { width: \"980px\", \"modal-append-to-body\": false },\n on: { open: _vm.onOpen, close: _vm.onClose },\n },\n \"el-dialog\",\n _vm.$attrs,\n false\n ),\n _vm.$listeners\n ),\n [\n _c(\n \"div\",\n { attrs: { slot: \"title\" }, slot: \"title\" },\n [\n _vm._v(\" 选择图标 \"),\n _c(\"el-input\", {\n style: { width: \"260px\" },\n attrs: {\n size: \"mini\",\n placeholder: \"请输入图标名称\",\n \"prefix-icon\": \"el-icon-search\",\n clearable: \"\",\n },\n model: {\n value: _vm.key,\n callback: function ($$v) {\n _vm.key = $$v\n },\n expression: \"key\",\n },\n }),\n ],\n 1\n ),\n _c(\n \"ul\",\n { staticClass: \"icon-ul\" },\n _vm._l(_vm.iconList, function (icon) {\n return _c(\n \"li\",\n {\n key: icon,\n class: _vm.active === icon ? \"active-item\" : \"\",\n on: {\n click: function ($event) {\n return _vm.onSelect(icon)\n },\n },\n },\n [_c(\"i\", { class: icon }), _c(\"div\", [_vm._v(_vm._s(icon))])]\n )\n }),\n 0\n ),\n ]\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/IconsDialog.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/JsonDrawer.vue?vue&type=template&id=349212d3&scoped=true&": -/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/JsonDrawer.vue?vue&type=template&id=349212d3&scoped=true& ***! - \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\n \"el-drawer\",\n _vm._g(\n _vm._b(\n { on: { opened: _vm.onOpen, close: _vm.onClose } },\n \"el-drawer\",\n _vm.$attrs,\n false\n ),\n _vm.$listeners\n ),\n [\n _c(\n \"div\",\n { staticClass: \"action-bar\", style: { \"text-align\": \"left\" } },\n [\n _c(\n \"span\",\n { staticClass: \"bar-btn\", on: { click: _vm.refresh } },\n [_c(\"i\", { staticClass: \"el-icon-refresh\" }), _vm._v(\" 刷新 \")]\n ),\n _c(\n \"span\",\n { ref: \"copyBtn\", staticClass: \"bar-btn copy-json-btn\" },\n [\n _c(\"i\", { staticClass: \"el-icon-document-copy\" }),\n _vm._v(\" 复制JSON \"),\n ]\n ),\n _c(\n \"span\",\n { staticClass: \"bar-btn\", on: { click: _vm.exportJsonFile } },\n [\n _c(\"i\", { staticClass: \"el-icon-download\" }),\n _vm._v(\" 导出JSON文件 \"),\n ]\n ),\n _c(\n \"span\",\n {\n staticClass: \"bar-btn delete-btn\",\n on: {\n click: function ($event) {\n return _vm.$emit(\"update:visible\", false)\n },\n },\n },\n [\n _c(\"i\", { staticClass: \"el-icon-circle-close\" }),\n _vm._v(\" 关闭 \"),\n ]\n ),\n ]\n ),\n _c(\"div\", {\n staticClass: \"json-editor\",\n attrs: { id: \"editorJson\" },\n }),\n ]\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/JsonDrawer.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/ResourceDialog.vue?vue&type=template&id=1416fb60&scoped=true&": -/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/ResourceDialog.vue?vue&type=template&id=1416fb60&scoped=true& ***! - \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\n \"el-dialog\",\n _vm._g(\n _vm._b(\n {\n attrs: {\n title: \"外部资源引用\",\n width: \"600px\",\n \"close-on-click-modal\": false,\n },\n on: { open: _vm.onOpen, close: _vm.onClose },\n },\n \"el-dialog\",\n _vm.$attrs,\n false\n ),\n _vm.$listeners\n ),\n [\n _vm._l(_vm.resources, function (item, index) {\n return _c(\n \"el-input\",\n {\n key: index,\n staticClass: \"url-item\",\n attrs: {\n placeholder: \"请输入 css 或 js 资源路径\",\n \"prefix-icon\": \"el-icon-link\",\n clearable: \"\",\n },\n model: {\n value: _vm.resources[index],\n callback: function ($$v) {\n _vm.$set(_vm.resources, index, $$v)\n },\n expression: \"resources[index]\",\n },\n },\n [\n _c(\"el-button\", {\n attrs: { slot: \"append\", icon: \"el-icon-delete\" },\n on: {\n click: function ($event) {\n return _vm.deleteOne(index)\n },\n },\n slot: \"append\",\n }),\n ],\n 1\n )\n }),\n _c(\n \"el-button-group\",\n { staticClass: \"add-item\" },\n [\n _c(\n \"el-button\",\n {\n attrs: { plain: \"\" },\n on: {\n click: function ($event) {\n return _vm.addOne(\n \"https://lib.baomitu.com/jquery/1.8.3/jquery.min.js\"\n )\n },\n },\n },\n [_vm._v(\" jQuery1.8.3 \")]\n ),\n _c(\n \"el-button\",\n {\n attrs: { plain: \"\" },\n on: {\n click: function ($event) {\n return _vm.addOne(\"https://unpkg.com/http-vue-loader\")\n },\n },\n },\n [_vm._v(\" http-vue-loader \")]\n ),\n _c(\n \"el-button\",\n {\n attrs: { icon: \"el-icon-circle-plus-outline\", plain: \"\" },\n on: {\n click: function ($event) {\n return _vm.addOne(\"\")\n },\n },\n },\n [_vm._v(\" 添加其他 \")]\n ),\n ],\n 1\n ),\n _c(\n \"div\",\n { attrs: { slot: \"footer\" }, slot: \"footer\" },\n [\n _c(\"el-button\", { on: { click: _vm.close } }, [_vm._v(\" 取消 \")]),\n _c(\n \"el-button\",\n {\n attrs: { type: \"primary\" },\n on: { click: _vm.handelConfirm },\n },\n [_vm._v(\" 确定 \")]\n ),\n ],\n 1\n ),\n ],\n 2\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/ResourceDialog.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/RightPanel.vue?vue&type=template&id=77ba98a2&scoped=true&": -/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/RightPanel.vue?vue&type=template&id=77ba98a2&scoped=true& ***! - \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"right-board\" },\n [\n _c(\n \"el-tabs\",\n {\n staticClass: \"center-tabs\",\n model: {\n value: _vm.currentTab,\n callback: function ($$v) {\n _vm.currentTab = $$v\n },\n expression: \"currentTab\",\n },\n },\n [\n _c(\"el-tab-pane\", { attrs: { label: \"组件属性\", name: \"field\" } }),\n _c(\"el-tab-pane\", { attrs: { label: \"表单属性\", name: \"form\" } }),\n ],\n 1\n ),\n _c(\n \"div\",\n { staticClass: \"field-box\" },\n [\n _c(\n \"a\",\n {\n staticClass: \"document-link\",\n attrs: {\n target: \"_blank\",\n href: _vm.documentLink,\n title: \"查看组件文档\",\n },\n },\n [_c(\"i\", { staticClass: \"el-icon-link\" })]\n ),\n _c(\n \"el-scrollbar\",\n { staticClass: \"right-scrollbar\" },\n [\n _c(\n \"el-form\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.currentTab === \"field\" && _vm.showField,\n expression: \"currentTab==='field' && showField\",\n },\n ],\n attrs: { size: \"small\", \"label-width\": \"90px\" },\n },\n [\n _vm.activeData.__config__.changeTag\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"组件类型\" } },\n [\n _c(\n \"el-select\",\n {\n style: { width: \"100%\" },\n attrs: { placeholder: \"请选择组件类型\" },\n on: { change: _vm.tagChange },\n model: {\n value: _vm.activeData.__config__.tagIcon,\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData.__config__,\n \"tagIcon\",\n $$v\n )\n },\n expression: \"activeData.__config__.tagIcon\",\n },\n },\n _vm._l(_vm.tagList, function (group) {\n return _c(\n \"el-option-group\",\n {\n key: group.label,\n attrs: { label: group.label },\n },\n _vm._l(group.options, function (item) {\n return _c(\n \"el-option\",\n {\n key: item.__config__.label,\n attrs: {\n label: item.__config__.label,\n value: item.__config__.tagIcon,\n },\n },\n [\n _c(\"svg-icon\", {\n staticClass: \"node-icon\",\n attrs: {\n \"icon-class\": item.__config__.tagIcon,\n },\n }),\n _c(\"span\", [\n _vm._v(\n \" \" + _vm._s(item.__config__.label)\n ),\n ]),\n ],\n 1\n )\n }),\n 1\n )\n }),\n 1\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__vModel__ !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"字段名\" } },\n [\n _c(\"el-input\", {\n attrs: { placeholder: \"请输入字段名(v-model)\" },\n model: {\n value: _vm.activeData.__vModel__,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"__vModel__\", $$v)\n },\n expression: \"activeData.__vModel__\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.componentName !== undefined\n ? _c(\"el-form-item\", { attrs: { label: \"组件名\" } }, [\n _vm._v(\n \" \" +\n _vm._s(_vm.activeData.__config__.componentName) +\n \" \"\n ),\n ])\n : _vm._e(),\n _vm.activeData.__config__.label !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"标题\" } },\n [\n _c(\"el-input\", {\n attrs: { placeholder: \"请输入标题\" },\n on: { input: _vm.changeRenderKey },\n model: {\n value: _vm.activeData.__config__.label,\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData.__config__,\n \"label\",\n $$v\n )\n },\n expression: \"activeData.__config__.label\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.placeholder !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"占位提示\" } },\n [\n _c(\"el-input\", {\n attrs: { placeholder: \"请输入占位提示\" },\n on: { input: _vm.changeRenderKey },\n model: {\n value: _vm.activeData.placeholder,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"placeholder\", $$v)\n },\n expression: \"activeData.placeholder\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData[\"start-placeholder\"] !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"开始占位\" } },\n [\n _c(\"el-input\", {\n attrs: { placeholder: \"请输入占位提示\" },\n model: {\n value: _vm.activeData[\"start-placeholder\"],\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData,\n \"start-placeholder\",\n $$v\n )\n },\n expression: \"activeData['start-placeholder']\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData[\"end-placeholder\"] !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"结束占位\" } },\n [\n _c(\"el-input\", {\n attrs: { placeholder: \"请输入占位提示\" },\n model: {\n value: _vm.activeData[\"end-placeholder\"],\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"end-placeholder\", $$v)\n },\n expression: \"activeData['end-placeholder']\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.span !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"表单栅格\" } },\n [\n _c(\"el-slider\", {\n attrs: { max: 24, min: 1, marks: { 12: \"\" } },\n on: { change: _vm.spanChange },\n model: {\n value: _vm.activeData.__config__.span,\n callback: function ($$v) {\n _vm.$set(_vm.activeData.__config__, \"span\", $$v)\n },\n expression: \"activeData.__config__.span\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.layout === \"rowFormItem\" &&\n _vm.activeData.gutter !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"栅格间隔\" } },\n [\n _c(\"el-input-number\", {\n attrs: { min: 0, placeholder: \"栅格间隔\" },\n model: {\n value: _vm.activeData.gutter,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"gutter\", $$v)\n },\n expression: \"activeData.gutter\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.layout === \"rowFormItem\" &&\n _vm.activeData.type !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"布局模式\" } },\n [\n _c(\n \"el-radio-group\",\n {\n model: {\n value: _vm.activeData.type,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"type\", $$v)\n },\n expression: \"activeData.type\",\n },\n },\n [\n _c(\"el-radio-button\", {\n attrs: { label: \"default\" },\n }),\n _c(\"el-radio-button\", {\n attrs: { label: \"flex\" },\n }),\n ],\n 1\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.justify !== undefined &&\n _vm.activeData.type === \"flex\"\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"水平排列\" } },\n [\n _c(\n \"el-select\",\n {\n style: { width: \"100%\" },\n attrs: { placeholder: \"请选择水平排列\" },\n model: {\n value: _vm.activeData.justify,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"justify\", $$v)\n },\n expression: \"activeData.justify\",\n },\n },\n _vm._l(_vm.justifyOptions, function (item, index) {\n return _c(\"el-option\", {\n key: index,\n attrs: { label: item.label, value: item.value },\n })\n }),\n 1\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.align !== undefined &&\n _vm.activeData.type === \"flex\"\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"垂直排列\" } },\n [\n _c(\n \"el-radio-group\",\n {\n model: {\n value: _vm.activeData.align,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"align\", $$v)\n },\n expression: \"activeData.align\",\n },\n },\n [\n _c(\"el-radio-button\", {\n attrs: { label: \"top\" },\n }),\n _c(\"el-radio-button\", {\n attrs: { label: \"middle\" },\n }),\n _c(\"el-radio-button\", {\n attrs: { label: \"bottom\" },\n }),\n ],\n 1\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.labelWidth !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"标签宽度\" } },\n [\n _c(\"el-input\", {\n attrs: {\n type: \"number\",\n placeholder: \"请输入标签宽度\",\n },\n model: {\n value: _vm.activeData.__config__.labelWidth,\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData.__config__,\n \"labelWidth\",\n _vm._n($$v)\n )\n },\n expression: \"activeData.__config__.labelWidth\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.style &&\n _vm.activeData.style.width !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"组件宽度\" } },\n [\n _c(\"el-input\", {\n attrs: {\n placeholder: \"请输入组件宽度\",\n clearable: \"\",\n },\n model: {\n value: _vm.activeData.style.width,\n callback: function ($$v) {\n _vm.$set(_vm.activeData.style, \"width\", $$v)\n },\n expression: \"activeData.style.width\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__vModel__ !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"默认值\" } },\n [\n _c(\"el-input\", {\n attrs: {\n value: _vm.setDefaultValue(\n _vm.activeData.__config__.defaultValue\n ),\n placeholder: \"请输入默认值\",\n },\n on: { input: _vm.onDefaultValueInput },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.tag === \"el-checkbox-group\"\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"至少应选\" } },\n [\n _c(\"el-input-number\", {\n attrs: {\n value: _vm.activeData.min,\n min: 0,\n placeholder: \"至少应选\",\n },\n on: {\n input: function ($event) {\n return _vm.$set(\n _vm.activeData,\n \"min\",\n $event ? $event : undefined\n )\n },\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.tag === \"el-checkbox-group\"\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"最多可选\" } },\n [\n _c(\"el-input-number\", {\n attrs: {\n value: _vm.activeData.max,\n min: 0,\n placeholder: \"最多可选\",\n },\n on: {\n input: function ($event) {\n return _vm.$set(\n _vm.activeData,\n \"max\",\n $event ? $event : undefined\n )\n },\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__slot__ &&\n _vm.activeData.__slot__.prepend !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"前缀\" } },\n [\n _c(\"el-input\", {\n attrs: { placeholder: \"请输入前缀\" },\n model: {\n value: _vm.activeData.__slot__.prepend,\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData.__slot__,\n \"prepend\",\n $$v\n )\n },\n expression: \"activeData.__slot__.prepend\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__slot__ &&\n _vm.activeData.__slot__.append !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"后缀\" } },\n [\n _c(\"el-input\", {\n attrs: { placeholder: \"请输入后缀\" },\n model: {\n value: _vm.activeData.__slot__.append,\n callback: function ($$v) {\n _vm.$set(_vm.activeData.__slot__, \"append\", $$v)\n },\n expression: \"activeData.__slot__.append\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData[\"prefix-icon\"] !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"前图标\" } },\n [\n _c(\n \"el-input\",\n {\n attrs: { placeholder: \"请输入前图标名称\" },\n model: {\n value: _vm.activeData[\"prefix-icon\"],\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"prefix-icon\", $$v)\n },\n expression: \"activeData['prefix-icon']\",\n },\n },\n [\n _c(\n \"el-button\",\n {\n attrs: {\n slot: \"append\",\n icon: \"el-icon-thumb\",\n },\n on: {\n click: function ($event) {\n return _vm.openIconsDialog(\"prefix-icon\")\n },\n },\n slot: \"append\",\n },\n [_vm._v(\" 选择 \")]\n ),\n ],\n 1\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData[\"suffix-icon\"] !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"后图标\" } },\n [\n _c(\n \"el-input\",\n {\n attrs: { placeholder: \"请输入后图标名称\" },\n model: {\n value: _vm.activeData[\"suffix-icon\"],\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"suffix-icon\", $$v)\n },\n expression: \"activeData['suffix-icon']\",\n },\n },\n [\n _c(\n \"el-button\",\n {\n attrs: {\n slot: \"append\",\n icon: \"el-icon-thumb\",\n },\n on: {\n click: function ($event) {\n return _vm.openIconsDialog(\"suffix-icon\")\n },\n },\n slot: \"append\",\n },\n [_vm._v(\" 选择 \")]\n ),\n ],\n 1\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData[\"icon\"] !== undefined &&\n _vm.activeData.__config__.tag === \"el-button\"\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"按钮图标\" } },\n [\n _c(\n \"el-input\",\n {\n attrs: { placeholder: \"请输入按钮图标名称\" },\n model: {\n value: _vm.activeData[\"icon\"],\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"icon\", $$v)\n },\n expression: \"activeData['icon']\",\n },\n },\n [\n _c(\n \"el-button\",\n {\n attrs: {\n slot: \"append\",\n icon: \"el-icon-thumb\",\n },\n on: {\n click: function ($event) {\n return _vm.openIconsDialog(\"icon\")\n },\n },\n slot: \"append\",\n },\n [_vm._v(\" 选择 \")]\n ),\n ],\n 1\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.tag === \"el-cascader\"\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"选项分隔符\" } },\n [\n _c(\"el-input\", {\n attrs: { placeholder: \"请输入选项分隔符\" },\n model: {\n value: _vm.activeData.separator,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"separator\", $$v)\n },\n expression: \"activeData.separator\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.autosize !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"最小行数\" } },\n [\n _c(\"el-input-number\", {\n attrs: { min: 1, placeholder: \"最小行数\" },\n model: {\n value: _vm.activeData.autosize.minRows,\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData.autosize,\n \"minRows\",\n $$v\n )\n },\n expression: \"activeData.autosize.minRows\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.autosize !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"最大行数\" } },\n [\n _c(\"el-input-number\", {\n attrs: { min: 1, placeholder: \"最大行数\" },\n model: {\n value: _vm.activeData.autosize.maxRows,\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData.autosize,\n \"maxRows\",\n $$v\n )\n },\n expression: \"activeData.autosize.maxRows\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.isShowMin\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"最小值\" } },\n [\n _c(\"el-input-number\", {\n attrs: { placeholder: \"最小值\" },\n model: {\n value: _vm.activeData.min,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"min\", $$v)\n },\n expression: \"activeData.min\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.isShowMax\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"最大值\" } },\n [\n _c(\"el-input-number\", {\n attrs: { placeholder: \"最大值\" },\n model: {\n value: _vm.activeData.max,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"max\", $$v)\n },\n expression: \"activeData.max\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.height !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"组件高度\" } },\n [\n _c(\"el-input-number\", {\n attrs: { placeholder: \"高度\" },\n on: { input: _vm.changeRenderKey },\n model: {\n value: _vm.activeData.height,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"height\", $$v)\n },\n expression: \"activeData.height\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.isShowStep\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"步长\" } },\n [\n _c(\"el-input-number\", {\n attrs: { placeholder: \"步数\" },\n model: {\n value: _vm.activeData.step,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"step\", $$v)\n },\n expression: \"activeData.step\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.tag === \"el-input-number\"\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"精度\" } },\n [\n _c(\"el-input-number\", {\n attrs: { min: 0, placeholder: \"精度\" },\n model: {\n value: _vm.activeData.precision,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"precision\", $$v)\n },\n expression: \"activeData.precision\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.tag === \"el-input-number\"\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"按钮位置\" } },\n [\n _c(\n \"el-radio-group\",\n {\n model: {\n value: _vm.activeData[\"controls-position\"],\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData,\n \"controls-position\",\n $$v\n )\n },\n expression: \"activeData['controls-position']\",\n },\n },\n [\n _c(\"el-radio-button\", { attrs: { label: \"\" } }, [\n _vm._v(\" 默认 \"),\n ]),\n _c(\n \"el-radio-button\",\n { attrs: { label: \"right\" } },\n [_vm._v(\" 右侧 \")]\n ),\n ],\n 1\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.maxlength !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"最多输入\" } },\n [\n _c(\n \"el-input\",\n {\n attrs: { placeholder: \"请输入字符长度\" },\n model: {\n value: _vm.activeData.maxlength,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"maxlength\", $$v)\n },\n expression: \"activeData.maxlength\",\n },\n },\n [\n _c(\"template\", { slot: \"append\" }, [\n _vm._v(\" 个字符 \"),\n ]),\n ],\n 2\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData[\"active-text\"] !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"开启提示\" } },\n [\n _c(\"el-input\", {\n attrs: { placeholder: \"请输入开启提示\" },\n model: {\n value: _vm.activeData[\"active-text\"],\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"active-text\", $$v)\n },\n expression: \"activeData['active-text']\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData[\"inactive-text\"] !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"关闭提示\" } },\n [\n _c(\"el-input\", {\n attrs: { placeholder: \"请输入关闭提示\" },\n model: {\n value: _vm.activeData[\"inactive-text\"],\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"inactive-text\", $$v)\n },\n expression: \"activeData['inactive-text']\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData[\"active-value\"] !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"开启值\" } },\n [\n _c(\"el-input\", {\n attrs: {\n value: _vm.setDefaultValue(\n _vm.activeData[\"active-value\"]\n ),\n placeholder: \"请输入开启值\",\n },\n on: {\n input: function ($event) {\n return _vm.onSwitchValueInput(\n $event,\n \"active-value\"\n )\n },\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData[\"inactive-value\"] !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"关闭值\" } },\n [\n _c(\"el-input\", {\n attrs: {\n value: _vm.setDefaultValue(\n _vm.activeData[\"inactive-value\"]\n ),\n placeholder: \"请输入关闭值\",\n },\n on: {\n input: function ($event) {\n return _vm.onSwitchValueInput(\n $event,\n \"inactive-value\"\n )\n },\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.type !== undefined &&\n \"el-date-picker\" === _vm.activeData.__config__.tag\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"时间类型\" } },\n [\n _c(\n \"el-select\",\n {\n style: { width: \"100%\" },\n attrs: { placeholder: \"请选择时间类型\" },\n on: { change: _vm.dateTypeChange },\n model: {\n value: _vm.activeData.type,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"type\", $$v)\n },\n expression: \"activeData.type\",\n },\n },\n _vm._l(_vm.dateOptions, function (item, index) {\n return _c(\"el-option\", {\n key: index,\n attrs: { label: item.label, value: item.value },\n })\n }),\n 1\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.name !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"文件字段名\" } },\n [\n _c(\"el-input\", {\n attrs: { placeholder: \"请输入上传文件字段名\" },\n model: {\n value: _vm.activeData.name,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"name\", $$v)\n },\n expression: \"activeData.name\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.accept !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"文件类型\" } },\n [\n _c(\n \"el-select\",\n {\n style: { width: \"100%\" },\n attrs: {\n placeholder: \"请选择文件类型\",\n clearable: \"\",\n },\n model: {\n value: _vm.activeData.accept,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"accept\", $$v)\n },\n expression: \"activeData.accept\",\n },\n },\n [\n _c(\"el-option\", {\n attrs: { label: \"图片\", value: \"image/*\" },\n }),\n _c(\"el-option\", {\n attrs: { label: \"视频\", value: \"video/*\" },\n }),\n _c(\"el-option\", {\n attrs: { label: \"音频\", value: \"audio/*\" },\n }),\n _c(\"el-option\", {\n attrs: { label: \"excel\", value: \".xls,.xlsx\" },\n }),\n _c(\"el-option\", {\n attrs: { label: \"word\", value: \".doc,.docx\" },\n }),\n _c(\"el-option\", {\n attrs: { label: \"pdf\", value: \".pdf\" },\n }),\n _c(\"el-option\", {\n attrs: { label: \"txt\", value: \".txt\" },\n }),\n ],\n 1\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.fileSize !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"文件大小\" } },\n [\n _c(\n \"el-input\",\n {\n attrs: { placeholder: \"请输入文件大小\" },\n model: {\n value: _vm.activeData.__config__.fileSize,\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData.__config__,\n \"fileSize\",\n _vm._n($$v)\n )\n },\n expression: \"activeData.__config__.fileSize\",\n },\n },\n [\n _c(\n \"el-select\",\n {\n style: { width: \"66px\" },\n attrs: { slot: \"append\" },\n slot: \"append\",\n model: {\n value: _vm.activeData.__config__.sizeUnit,\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData.__config__,\n \"sizeUnit\",\n $$v\n )\n },\n expression:\n \"activeData.__config__.sizeUnit\",\n },\n },\n [\n _c(\"el-option\", {\n attrs: { label: \"KB\", value: \"KB\" },\n }),\n _c(\"el-option\", {\n attrs: { label: \"MB\", value: \"MB\" },\n }),\n _c(\"el-option\", {\n attrs: { label: \"GB\", value: \"GB\" },\n }),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.action !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"上传地址\" } },\n [\n _c(\"el-input\", {\n attrs: {\n placeholder: \"请输入上传地址\",\n clearable: \"\",\n },\n model: {\n value: _vm.activeData.action,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"action\", $$v)\n },\n expression: \"activeData.action\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData[\"list-type\"] !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"列表类型\" } },\n [\n _c(\n \"el-radio-group\",\n {\n attrs: { size: \"small\" },\n model: {\n value: _vm.activeData[\"list-type\"],\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"list-type\", $$v)\n },\n expression: \"activeData['list-type']\",\n },\n },\n [\n _c(\n \"el-radio-button\",\n { attrs: { label: \"text\" } },\n [_vm._v(\" text \")]\n ),\n _c(\n \"el-radio-button\",\n { attrs: { label: \"picture\" } },\n [_vm._v(\" picture \")]\n ),\n _c(\n \"el-radio-button\",\n { attrs: { label: \"picture-card\" } },\n [_vm._v(\" picture-card \")]\n ),\n ],\n 1\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.type !== undefined &&\n _vm.activeData.__config__.tag === \"el-button\"\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"按钮类型\" } },\n [\n _c(\n \"el-select\",\n {\n style: { width: \"100%\" },\n model: {\n value: _vm.activeData.type,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"type\", $$v)\n },\n expression: \"activeData.type\",\n },\n },\n [\n _c(\"el-option\", {\n attrs: { label: \"primary\", value: \"primary\" },\n }),\n _c(\"el-option\", {\n attrs: { label: \"success\", value: \"success\" },\n }),\n _c(\"el-option\", {\n attrs: { label: \"warning\", value: \"warning\" },\n }),\n _c(\"el-option\", {\n attrs: { label: \"danger\", value: \"danger\" },\n }),\n _c(\"el-option\", {\n attrs: { label: \"info\", value: \"info\" },\n }),\n _c(\"el-option\", {\n attrs: { label: \"text\", value: \"text\" },\n }),\n ],\n 1\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.buttonText !== undefined\n ? _c(\n \"el-form-item\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value:\n \"picture-card\" !== _vm.activeData[\"list-type\"],\n expression:\n \"'picture-card' !== activeData['list-type']\",\n },\n ],\n attrs: { label: \"按钮文字\" },\n },\n [\n _c(\"el-input\", {\n attrs: { placeholder: \"请输入按钮文字\" },\n model: {\n value: _vm.activeData.__config__.buttonText,\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData.__config__,\n \"buttonText\",\n $$v\n )\n },\n expression: \"activeData.__config__.buttonText\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.tag === \"el-button\"\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"按钮文字\" } },\n [\n _c(\"el-input\", {\n attrs: { placeholder: \"请输入按钮文字\" },\n model: {\n value: _vm.activeData.__slot__.default,\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData.__slot__,\n \"default\",\n $$v\n )\n },\n expression: \"activeData.__slot__.default\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData[\"range-separator\"] !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"分隔符\" } },\n [\n _c(\"el-input\", {\n attrs: { placeholder: \"请输入分隔符\" },\n model: {\n value: _vm.activeData[\"range-separator\"],\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"range-separator\", $$v)\n },\n expression: \"activeData['range-separator']\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData[\"picker-options\"] !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"时间段\" } },\n [\n _c(\"el-input\", {\n attrs: { placeholder: \"请输入时间段\" },\n model: {\n value:\n _vm.activeData[\"picker-options\"]\n .selectableRange,\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData[\"picker-options\"],\n \"selectableRange\",\n $$v\n )\n },\n expression:\n \"activeData['picker-options'].selectableRange\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.format !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"时间格式\" } },\n [\n _c(\"el-input\", {\n attrs: {\n value: _vm.activeData.format,\n placeholder: \"请输入时间格式\",\n },\n on: {\n input: function ($event) {\n return _vm.setTimeValue($event)\n },\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n [\"el-checkbox-group\", \"el-radio-group\", \"el-select\"].indexOf(\n _vm.activeData.__config__.tag\n ) > -1\n ? [\n _c(\"el-divider\", [_vm._v(\"选项\")]),\n _c(\n \"draggable\",\n {\n attrs: {\n list: _vm.activeData.__slot__.options,\n animation: 340,\n group: \"selectItem\",\n handle: \".option-drag\",\n },\n },\n _vm._l(\n _vm.activeData.__slot__.options,\n function (item, index) {\n return _c(\n \"div\",\n { key: index, staticClass: \"select-item\" },\n [\n _c(\n \"div\",\n {\n staticClass:\n \"select-line-icon option-drag\",\n },\n [\n _c(\"i\", {\n staticClass: \"el-icon-s-operation\",\n }),\n ]\n ),\n _c(\"el-input\", {\n attrs: {\n placeholder: \"选项名\",\n size: \"small\",\n },\n model: {\n value: item.label,\n callback: function ($$v) {\n _vm.$set(item, \"label\", $$v)\n },\n expression: \"item.label\",\n },\n }),\n _c(\"el-input\", {\n attrs: {\n placeholder: \"选项值\",\n size: \"small\",\n value: item.value,\n },\n on: {\n input: function ($event) {\n return _vm.setOptionValue(item, $event)\n },\n },\n }),\n _c(\n \"div\",\n {\n staticClass: \"close-btn select-line-icon\",\n on: {\n click: function ($event) {\n return _vm.activeData.__slot__.options.splice(\n index,\n 1\n )\n },\n },\n },\n [\n _c(\"i\", {\n staticClass: \"el-icon-remove-outline\",\n }),\n ]\n ),\n ],\n 1\n )\n }\n ),\n 0\n ),\n _c(\n \"div\",\n { staticStyle: { \"margin-left\": \"20px\" } },\n [\n _c(\n \"el-button\",\n {\n staticStyle: { \"padding-bottom\": \"0\" },\n attrs: {\n icon: \"el-icon-circle-plus-outline\",\n type: \"text\",\n },\n on: { click: _vm.addSelectItem },\n },\n [_vm._v(\" 添加选项 \")]\n ),\n ],\n 1\n ),\n _c(\"el-divider\"),\n ]\n : _vm._e(),\n [\"el-cascader\", \"el-table\"].includes(\n _vm.activeData.__config__.tag\n )\n ? [\n _c(\"el-divider\", [_vm._v(\"选项\")]),\n _vm.activeData.__config__.dataType\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"数据类型\" } },\n [\n _c(\n \"el-radio-group\",\n {\n attrs: { size: \"small\" },\n model: {\n value: _vm.activeData.__config__.dataType,\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData.__config__,\n \"dataType\",\n $$v\n )\n },\n expression:\n \"activeData.__config__.dataType\",\n },\n },\n [\n _c(\n \"el-radio-button\",\n { attrs: { label: \"dynamic\" } },\n [_vm._v(\" 动态数据 \")]\n ),\n _c(\n \"el-radio-button\",\n { attrs: { label: \"static\" } },\n [_vm._v(\" 静态数据 \")]\n ),\n ],\n 1\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.dataType === \"dynamic\"\n ? [\n _c(\n \"el-form-item\",\n { attrs: { label: \"接口地址\" } },\n [\n _c(\n \"el-input\",\n {\n attrs: {\n title: _vm.activeData.__config__.url,\n placeholder: \"请输入接口地址\",\n clearable: \"\",\n },\n on: {\n blur: function ($event) {\n return _vm.$emit(\n \"fetch-data\",\n _vm.activeData\n )\n },\n },\n model: {\n value: _vm.activeData.__config__.url,\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData.__config__,\n \"url\",\n $$v\n )\n },\n expression: \"activeData.__config__.url\",\n },\n },\n [\n _c(\n \"el-select\",\n {\n style: { width: \"85px\" },\n attrs: { slot: \"prepend\" },\n on: {\n change: function ($event) {\n return _vm.$emit(\n \"fetch-data\",\n _vm.activeData\n )\n },\n },\n slot: \"prepend\",\n model: {\n value:\n _vm.activeData.__config__.method,\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData.__config__,\n \"method\",\n $$v\n )\n },\n expression:\n \"activeData.__config__.method\",\n },\n },\n [\n _c(\"el-option\", {\n attrs: {\n label: \"get\",\n value: \"get\",\n },\n }),\n _c(\"el-option\", {\n attrs: {\n label: \"post\",\n value: \"post\",\n },\n }),\n _c(\"el-option\", {\n attrs: {\n label: \"put\",\n value: \"put\",\n },\n }),\n _c(\"el-option\", {\n attrs: {\n label: \"delete\",\n value: \"delete\",\n },\n }),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"数据位置\" } },\n [\n _c(\"el-input\", {\n attrs: { placeholder: \"请输入数据位置\" },\n on: {\n blur: function ($event) {\n return _vm.$emit(\n \"fetch-data\",\n _vm.activeData\n )\n },\n },\n model: {\n value: _vm.activeData.__config__.dataPath,\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData.__config__,\n \"dataPath\",\n $$v\n )\n },\n expression:\n \"activeData.__config__.dataPath\",\n },\n }),\n ],\n 1\n ),\n _vm.activeData.props && _vm.activeData.props.props\n ? [\n _c(\n \"el-form-item\",\n { attrs: { label: \"标签键名\" } },\n [\n _c(\"el-input\", {\n attrs: {\n placeholder: \"请输入标签键名\",\n },\n model: {\n value:\n _vm.activeData.props.props.label,\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData.props.props,\n \"label\",\n $$v\n )\n },\n expression:\n \"activeData.props.props.label\",\n },\n }),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"值键名\" } },\n [\n _c(\"el-input\", {\n attrs: {\n placeholder: \"请输入值键名\",\n },\n model: {\n value:\n _vm.activeData.props.props.value,\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData.props.props,\n \"value\",\n $$v\n )\n },\n expression:\n \"activeData.props.props.value\",\n },\n }),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"子级键名\" } },\n [\n _c(\"el-input\", {\n attrs: {\n placeholder: \"请输入子级键名\",\n },\n model: {\n value:\n _vm.activeData.props.props\n .children,\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData.props.props,\n \"children\",\n $$v\n )\n },\n expression:\n \"activeData.props.props.children\",\n },\n }),\n ],\n 1\n ),\n ]\n : _vm._e(),\n ]\n : _vm._e(),\n _vm.activeData.__config__.dataType === \"static\"\n ? _c(\"el-tree\", {\n attrs: {\n draggable: \"\",\n data: _vm.activeData.options,\n \"node-key\": \"id\",\n \"expand-on-click-node\": false,\n \"render-content\": _vm.renderContent,\n },\n })\n : _vm._e(),\n _vm.activeData.__config__.dataType === \"static\"\n ? _c(\n \"div\",\n { staticStyle: { \"margin-left\": \"20px\" } },\n [\n _c(\n \"el-button\",\n {\n staticStyle: { \"padding-bottom\": \"0\" },\n attrs: {\n icon: \"el-icon-circle-plus-outline\",\n type: \"text\",\n },\n on: { click: _vm.addTreeItem },\n },\n [_vm._v(\" 添加父级 \")]\n ),\n ],\n 1\n )\n : _vm._e(),\n _c(\"el-divider\"),\n ]\n : _vm._e(),\n _vm.activeData.__config__.optionType !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"选项样式\" } },\n [\n _c(\n \"el-radio-group\",\n {\n model: {\n value: _vm.activeData.__config__.optionType,\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData.__config__,\n \"optionType\",\n $$v\n )\n },\n expression: \"activeData.__config__.optionType\",\n },\n },\n [\n _c(\n \"el-radio-button\",\n { attrs: { label: \"default\" } },\n [_vm._v(\" 默认 \")]\n ),\n _c(\n \"el-radio-button\",\n { attrs: { label: \"button\" } },\n [_vm._v(\" 按钮 \")]\n ),\n ],\n 1\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData[\"active-color\"] !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"开启颜色\" } },\n [\n _c(\"el-color-picker\", {\n model: {\n value: _vm.activeData[\"active-color\"],\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"active-color\", $$v)\n },\n expression: \"activeData['active-color']\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData[\"inactive-color\"] !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"关闭颜色\" } },\n [\n _c(\"el-color-picker\", {\n model: {\n value: _vm.activeData[\"inactive-color\"],\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"inactive-color\", $$v)\n },\n expression: \"activeData['inactive-color']\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.showLabel !== undefined &&\n _vm.activeData.__config__.labelWidth !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"显示标签\" } },\n [\n _c(\"el-switch\", {\n model: {\n value: _vm.activeData.__config__.showLabel,\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData.__config__,\n \"showLabel\",\n $$v\n )\n },\n expression: \"activeData.__config__.showLabel\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.branding !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"品牌烙印\" } },\n [\n _c(\"el-switch\", {\n on: { input: _vm.changeRenderKey },\n model: {\n value: _vm.activeData.branding,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"branding\", $$v)\n },\n expression: \"activeData.branding\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData[\"allow-half\"] !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"允许半选\" } },\n [\n _c(\"el-switch\", {\n model: {\n value: _vm.activeData[\"allow-half\"],\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"allow-half\", $$v)\n },\n expression: \"activeData['allow-half']\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData[\"show-text\"] !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"辅助文字\" } },\n [\n _c(\"el-switch\", {\n on: { change: _vm.rateTextChange },\n model: {\n value: _vm.activeData[\"show-text\"],\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"show-text\", $$v)\n },\n expression: \"activeData['show-text']\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData[\"show-score\"] !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"显示分数\" } },\n [\n _c(\"el-switch\", {\n on: { change: _vm.rateScoreChange },\n model: {\n value: _vm.activeData[\"show-score\"],\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"show-score\", $$v)\n },\n expression: \"activeData['show-score']\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData[\"show-stops\"] !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"显示间断点\" } },\n [\n _c(\"el-switch\", {\n model: {\n value: _vm.activeData[\"show-stops\"],\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"show-stops\", $$v)\n },\n expression: \"activeData['show-stops']\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.range !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"范围选择\" } },\n [\n _c(\"el-switch\", {\n on: { change: _vm.rangeChange },\n model: {\n value: _vm.activeData.range,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"range\", $$v)\n },\n expression: \"activeData.range\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.border !== undefined &&\n _vm.activeData.__config__.optionType === \"default\"\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"是否带边框\" } },\n [\n _c(\"el-switch\", {\n model: {\n value: _vm.activeData.__config__.border,\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData.__config__,\n \"border\",\n $$v\n )\n },\n expression: \"activeData.__config__.border\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.tag === \"el-color-picker\"\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"颜色格式\" } },\n [\n _c(\n \"el-select\",\n {\n style: { width: \"100%\" },\n attrs: {\n placeholder: \"请选择颜色格式\",\n clearable: \"\",\n },\n on: { change: _vm.colorFormatChange },\n model: {\n value: _vm.activeData[\"color-format\"],\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"color-format\", $$v)\n },\n expression: \"activeData['color-format']\",\n },\n },\n _vm._l(\n _vm.colorFormatOptions,\n function (item, index) {\n return _c(\"el-option\", {\n key: index,\n attrs: {\n label: item.label,\n value: item.value,\n },\n })\n }\n ),\n 1\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.size !== undefined &&\n (_vm.activeData.__config__.optionType === \"button\" ||\n _vm.activeData.__config__.border ||\n _vm.activeData.__config__.tag === \"el-color-picker\" ||\n _vm.activeData.__config__.tag === \"el-button\")\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"组件尺寸\" } },\n [\n _c(\n \"el-radio-group\",\n {\n model: {\n value: _vm.activeData.size,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"size\", $$v)\n },\n expression: \"activeData.size\",\n },\n },\n [\n _c(\n \"el-radio-button\",\n { attrs: { label: \"medium\" } },\n [_vm._v(\" 中等 \")]\n ),\n _c(\n \"el-radio-button\",\n { attrs: { label: \"small\" } },\n [_vm._v(\" 较小 \")]\n ),\n _c(\n \"el-radio-button\",\n { attrs: { label: \"mini\" } },\n [_vm._v(\" 迷你 \")]\n ),\n ],\n 1\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData[\"show-word-limit\"] !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"输入统计\" } },\n [\n _c(\"el-switch\", {\n model: {\n value: _vm.activeData[\"show-word-limit\"],\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"show-word-limit\", $$v)\n },\n expression: \"activeData['show-word-limit']\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.tag === \"el-input-number\"\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"严格步数\" } },\n [\n _c(\"el-switch\", {\n model: {\n value: _vm.activeData[\"step-strictly\"],\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"step-strictly\", $$v)\n },\n expression: \"activeData['step-strictly']\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.tag === \"el-cascader\"\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"任选层级\" } },\n [\n _c(\"el-switch\", {\n model: {\n value: _vm.activeData.props.props.checkStrictly,\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData.props.props,\n \"checkStrictly\",\n $$v\n )\n },\n expression:\n \"activeData.props.props.checkStrictly\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.tag === \"el-cascader\"\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"是否多选\" } },\n [\n _c(\"el-switch\", {\n model: {\n value: _vm.activeData.props.props.multiple,\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData.props.props,\n \"multiple\",\n $$v\n )\n },\n expression: \"activeData.props.props.multiple\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.tag === \"el-cascader\"\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"展示全路径\" } },\n [\n _c(\"el-switch\", {\n model: {\n value: _vm.activeData[\"show-all-levels\"],\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"show-all-levels\", $$v)\n },\n expression: \"activeData['show-all-levels']\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.tag === \"el-cascader\"\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"可否筛选\" } },\n [\n _c(\"el-switch\", {\n model: {\n value: _vm.activeData.filterable,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"filterable\", $$v)\n },\n expression: \"activeData.filterable\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.clearable !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"能否清空\" } },\n [\n _c(\"el-switch\", {\n model: {\n value: _vm.activeData.clearable,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"clearable\", $$v)\n },\n expression: \"activeData.clearable\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.showTip !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"显示提示\" } },\n [\n _c(\"el-switch\", {\n model: {\n value: _vm.activeData.__config__.showTip,\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData.__config__,\n \"showTip\",\n $$v\n )\n },\n expression: \"activeData.__config__.showTip\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.tag === \"el-upload\"\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"多选文件\" } },\n [\n _c(\"el-switch\", {\n model: {\n value: _vm.activeData.multiple,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"multiple\", $$v)\n },\n expression: \"activeData.multiple\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData[\"auto-upload\"] !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"自动上传\" } },\n [\n _c(\"el-switch\", {\n model: {\n value: _vm.activeData[\"auto-upload\"],\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"auto-upload\", $$v)\n },\n expression: \"activeData['auto-upload']\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.readonly !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"是否只读\" } },\n [\n _c(\"el-switch\", {\n model: {\n value: _vm.activeData.readonly,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"readonly\", $$v)\n },\n expression: \"activeData.readonly\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.disabled !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"是否禁用\" } },\n [\n _c(\"el-switch\", {\n model: {\n value: _vm.activeData.disabled,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"disabled\", $$v)\n },\n expression: \"activeData.disabled\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.tag === \"el-select\"\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"能否搜索\" } },\n [\n _c(\"el-switch\", {\n model: {\n value: _vm.activeData.filterable,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"filterable\", $$v)\n },\n expression: \"activeData.filterable\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.tag === \"el-select\"\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"是否多选\" } },\n [\n _c(\"el-switch\", {\n on: { change: _vm.multipleChange },\n model: {\n value: _vm.activeData.multiple,\n callback: function ($$v) {\n _vm.$set(_vm.activeData, \"multiple\", $$v)\n },\n expression: \"activeData.multiple\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.required !== undefined\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"是否必填\" } },\n [\n _c(\"el-switch\", {\n model: {\n value: _vm.activeData.__config__.required,\n callback: function ($$v) {\n _vm.$set(\n _vm.activeData.__config__,\n \"required\",\n $$v\n )\n },\n expression: \"activeData.__config__.required\",\n },\n }),\n ],\n 1\n )\n : _vm._e(),\n _vm.activeData.__config__.layoutTree\n ? [\n _c(\"el-divider\", [_vm._v(\"布局结构树\")]),\n _c(\"el-tree\", {\n attrs: {\n data: [_vm.activeData.__config__],\n props: _vm.layoutTreeProps,\n \"node-key\": \"renderKey\",\n \"default-expand-all\": \"\",\n draggable: \"\",\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"default\",\n fn: function (ref) {\n var node = ref.node\n var data = ref.data\n return _c(\"span\", {}, [\n _c(\n \"span\",\n { staticClass: \"node-label\" },\n [\n _c(\"svg-icon\", {\n staticClass: \"node-icon\",\n attrs: {\n \"icon-class\": data.__config__\n ? data.__config__.tagIcon\n : data.tagIcon,\n },\n }),\n _vm._v(\" \" + _vm._s(node.label) + \" \"),\n ],\n 1\n ),\n ])\n },\n },\n ],\n null,\n false,\n 3924665115\n ),\n }),\n ]\n : _vm._e(),\n Array.isArray(_vm.activeData.__config__.regList)\n ? [\n _c(\"el-divider\", [_vm._v(\"正则校验\")]),\n _vm._l(\n _vm.activeData.__config__.regList,\n function (item, index) {\n return _c(\n \"div\",\n { key: index, staticClass: \"reg-item\" },\n [\n _c(\n \"span\",\n {\n staticClass: \"close-btn\",\n on: {\n click: function ($event) {\n return _vm.activeData.__config__.regList.splice(\n index,\n 1\n )\n },\n },\n },\n [_c(\"i\", { staticClass: \"el-icon-close\" })]\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"表达式\" } },\n [\n _c(\"el-input\", {\n attrs: { placeholder: \"请输入正则\" },\n model: {\n value: item.pattern,\n callback: function ($$v) {\n _vm.$set(item, \"pattern\", $$v)\n },\n expression: \"item.pattern\",\n },\n }),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n {\n staticStyle: { \"margin-bottom\": \"0\" },\n attrs: { label: \"错误提示\" },\n },\n [\n _c(\"el-input\", {\n attrs: { placeholder: \"请输入错误提示\" },\n model: {\n value: item.message,\n callback: function ($$v) {\n _vm.$set(item, \"message\", $$v)\n },\n expression: \"item.message\",\n },\n }),\n ],\n 1\n ),\n ],\n 1\n )\n }\n ),\n _c(\n \"div\",\n { staticStyle: { \"margin-left\": \"20px\" } },\n [\n _c(\n \"el-button\",\n {\n attrs: {\n icon: \"el-icon-circle-plus-outline\",\n type: \"text\",\n },\n on: { click: _vm.addReg },\n },\n [_vm._v(\" 添加规则 \")]\n ),\n ],\n 1\n ),\n ]\n : _vm._e(),\n ],\n 2\n ),\n _c(\n \"el-form\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.currentTab === \"form\",\n expression: \"currentTab === 'form'\",\n },\n ],\n attrs: { size: \"small\", \"label-width\": \"90px\" },\n },\n [\n _c(\n \"el-form-item\",\n { attrs: { label: \"表单名\" } },\n [\n _c(\"el-input\", {\n attrs: { placeholder: \"请输入表单名(ref)\" },\n model: {\n value: _vm.formConf.formRef,\n callback: function ($$v) {\n _vm.$set(_vm.formConf, \"formRef\", $$v)\n },\n expression: \"formConf.formRef\",\n },\n }),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"表单模型\" } },\n [\n _c(\"el-input\", {\n attrs: { placeholder: \"请输入数据模型\" },\n model: {\n value: _vm.formConf.formModel,\n callback: function ($$v) {\n _vm.$set(_vm.formConf, \"formModel\", $$v)\n },\n expression: \"formConf.formModel\",\n },\n }),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"校验模型\" } },\n [\n _c(\"el-input\", {\n attrs: { placeholder: \"请输入校验模型\" },\n model: {\n value: _vm.formConf.formRules,\n callback: function ($$v) {\n _vm.$set(_vm.formConf, \"formRules\", $$v)\n },\n expression: \"formConf.formRules\",\n },\n }),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"表单尺寸\" } },\n [\n _c(\n \"el-radio-group\",\n {\n model: {\n value: _vm.formConf.size,\n callback: function ($$v) {\n _vm.$set(_vm.formConf, \"size\", $$v)\n },\n expression: \"formConf.size\",\n },\n },\n [\n _c(\n \"el-radio-button\",\n { attrs: { label: \"medium\" } },\n [_vm._v(\" 中等 \")]\n ),\n _c(\"el-radio-button\", { attrs: { label: \"small\" } }, [\n _vm._v(\" 较小 \"),\n ]),\n _c(\"el-radio-button\", { attrs: { label: \"mini\" } }, [\n _vm._v(\" 迷你 \"),\n ]),\n ],\n 1\n ),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"标签对齐\" } },\n [\n _c(\n \"el-radio-group\",\n {\n model: {\n value: _vm.formConf.labelPosition,\n callback: function ($$v) {\n _vm.$set(_vm.formConf, \"labelPosition\", $$v)\n },\n expression: \"formConf.labelPosition\",\n },\n },\n [\n _c(\"el-radio-button\", { attrs: { label: \"left\" } }, [\n _vm._v(\" 左对齐 \"),\n ]),\n _c(\"el-radio-button\", { attrs: { label: \"right\" } }, [\n _vm._v(\" 右对齐 \"),\n ]),\n _c(\"el-radio-button\", { attrs: { label: \"top\" } }, [\n _vm._v(\" 顶部对齐 \"),\n ]),\n ],\n 1\n ),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"标签宽度\" } },\n [\n _c(\"el-input\", {\n attrs: {\n type: \"number\",\n placeholder: \"请输入标签宽度\",\n },\n model: {\n value: _vm.formConf.labelWidth,\n callback: function ($$v) {\n _vm.$set(_vm.formConf, \"labelWidth\", _vm._n($$v))\n },\n expression: \"formConf.labelWidth\",\n },\n }),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"栅格间隔\" } },\n [\n _c(\"el-input-number\", {\n attrs: { min: 0, placeholder: \"栅格间隔\" },\n model: {\n value: _vm.formConf.gutter,\n callback: function ($$v) {\n _vm.$set(_vm.formConf, \"gutter\", $$v)\n },\n expression: \"formConf.gutter\",\n },\n }),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"禁用表单\" } },\n [\n _c(\"el-switch\", {\n model: {\n value: _vm.formConf.disabled,\n callback: function ($$v) {\n _vm.$set(_vm.formConf, \"disabled\", $$v)\n },\n expression: \"formConf.disabled\",\n },\n }),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"表单按钮\" } },\n [\n _c(\"el-switch\", {\n model: {\n value: _vm.formConf.formBtns,\n callback: function ($$v) {\n _vm.$set(_vm.formConf, \"formBtns\", $$v)\n },\n expression: \"formConf.formBtns\",\n },\n }),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"显示未选中组件边框\" } },\n [\n _c(\"el-switch\", {\n model: {\n value: _vm.formConf.unFocusedComponentBorder,\n callback: function ($$v) {\n _vm.$set(\n _vm.formConf,\n \"unFocusedComponentBorder\",\n $$v\n )\n },\n expression: \"formConf.unFocusedComponentBorder\",\n },\n }),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n _c(\"treeNode-dialog\", {\n attrs: { visible: _vm.dialogVisible, title: \"添加选项\" },\n on: {\n \"update:visible\": function ($event) {\n _vm.dialogVisible = $event\n },\n commit: _vm.addNode,\n },\n }),\n _c(\"icons-dialog\", {\n attrs: {\n visible: _vm.iconsVisible,\n current: _vm.activeData[_vm.currentIconModel],\n },\n on: {\n \"update:visible\": function ($event) {\n _vm.iconsVisible = $event\n },\n select: _vm.setIcon,\n },\n }),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/RightPanel.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/TreeNodeDialog.vue?vue&type=template&id=dae9c2fc&scoped=true&": -/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/TreeNodeDialog.vue?vue&type=template&id=dae9c2fc&scoped=true& ***! - \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\n \"el-dialog\",\n _vm._g(\n _vm._b(\n {\n attrs: {\n \"close-on-click-modal\": false,\n \"modal-append-to-body\": false,\n },\n on: { open: _vm.onOpen, close: _vm.onClose },\n },\n \"el-dialog\",\n _vm.$attrs,\n false\n ),\n _vm.$listeners\n ),\n [\n _c(\n \"el-row\",\n { attrs: { gutter: 0 } },\n [\n _c(\n \"el-form\",\n {\n ref: \"elForm\",\n attrs: {\n model: _vm.formData,\n rules: _vm.rules,\n size: \"small\",\n \"label-width\": \"100px\",\n },\n },\n [\n _c(\n \"el-col\",\n { attrs: { span: 24 } },\n [\n _c(\n \"el-form-item\",\n { attrs: { label: \"选项名\", prop: \"label\" } },\n [\n _c(\"el-input\", {\n attrs: {\n placeholder: \"请输入选项名\",\n clearable: \"\",\n },\n model: {\n value: _vm.formData.label,\n callback: function ($$v) {\n _vm.$set(_vm.formData, \"label\", $$v)\n },\n expression: \"formData.label\",\n },\n }),\n ],\n 1\n ),\n ],\n 1\n ),\n _c(\n \"el-col\",\n { attrs: { span: 24 } },\n [\n _c(\n \"el-form-item\",\n { attrs: { label: \"选项值\", prop: \"value\" } },\n [\n _c(\n \"el-input\",\n {\n attrs: {\n placeholder: \"请输入选项值\",\n clearable: \"\",\n },\n model: {\n value: _vm.formData.value,\n callback: function ($$v) {\n _vm.$set(_vm.formData, \"value\", $$v)\n },\n expression: \"formData.value\",\n },\n },\n [\n _c(\n \"el-select\",\n {\n style: { width: \"100px\" },\n attrs: { slot: \"append\" },\n slot: \"append\",\n model: {\n value: _vm.dataType,\n callback: function ($$v) {\n _vm.dataType = $$v\n },\n expression: \"dataType\",\n },\n },\n _vm._l(\n _vm.dataTypeOptions,\n function (item, index) {\n return _c(\"el-option\", {\n key: index,\n attrs: {\n label: item.label,\n value: item.value,\n disabled: item.disabled,\n },\n })\n }\n ),\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n _c(\n \"div\",\n { attrs: { slot: \"footer\" }, slot: \"footer\" },\n [\n _c(\n \"el-button\",\n {\n attrs: { type: \"primary\" },\n on: { click: _vm.handelConfirm },\n },\n [_vm._v(\" 确定 \")]\n ),\n _c(\"el-button\", { on: { click: _vm.close } }, [_vm._v(\" 取消 \")]),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/TreeNodeDialog.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/form/formEditor.vue?vue&type=style&index=0&lang=scss&": -/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/bpm/form/formEditor.vue?vue&type=style&index=0&lang=scss& ***! - \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/RaddarChart.vue?vue&type=template&id=bd9223ce&": +/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"b76c6300-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/dashboard/RaddarChart.vue?vue&type=template&id=bd9223ce& ***! + \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".container {\\n position: relative;\\n width: 100%;\\n height: 100%;\\n}\\n.components-list {\\n padding: 8px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n height: 100%;\\n}\\n.components-list .components-item {\\n display: inline-block;\\n width: 48%;\\n margin: 1%;\\n -webkit-transition: -webkit-transform 0ms !important;\\n transition: -webkit-transform 0ms !important;\\n transition: transform 0ms !important;\\n transition: transform 0ms, -webkit-transform 0ms !important;\\n}\\n.components-draggable {\\n padding-bottom: 20px;\\n}\\n.components-title {\\n font-size: 14px;\\n color: #222;\\n margin: 6px 2px;\\n}\\n.components-title .svg-icon {\\n color: #666;\\n font-size: 18px;\\n}\\n.components-body {\\n padding: 8px 10px;\\n background: #f6f7ff;\\n font-size: 12px;\\n cursor: move;\\n border: 1px dashed #f6f7ff;\\n border-radius: 3px;\\n}\\n.components-body .svg-icon {\\n color: #777;\\n font-size: 15px;\\n}\\n.components-body:hover {\\n border: 1px dashed #787be8;\\n color: #787be8;\\n}\\n.components-body:hover .svg-icon {\\n color: #787be8;\\n}\\n.left-board {\\n width: 260px;\\n position: absolute;\\n left: 0;\\n top: 0;\\n height: 100vh;\\n}\\n.left-scrollbar {\\n height: calc(100vh - 42px);\\n overflow: hidden;\\n}\\n.center-scrollbar {\\n height: calc(100vh - 42px);\\n overflow: hidden;\\n border-left: 1px solid #f1e8e8;\\n border-right: 1px solid #f1e8e8;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.center-board {\\n height: 100vh;\\n width: auto;\\n margin: 0 350px 0 260px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.empty-info {\\n position: absolute;\\n top: 46%;\\n left: 0;\\n right: 0;\\n text-align: center;\\n font-size: 18px;\\n color: #ccb1ea;\\n letter-spacing: 4px;\\n}\\n.action-bar {\\n position: relative;\\n height: 42px;\\n text-align: right;\\n padding: 0 15px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n border: 1px solid #f1e8e8;\\n border-top: none;\\n border-left: none;\\n}\\n.action-bar .delete-btn {\\n color: #F56C6C;\\n}\\n.logo-wrapper {\\n position: relative;\\n height: 42px;\\n background: #fff;\\n border-bottom: 1px solid #f1e8e8;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.logo {\\n position: absolute;\\n left: 12px;\\n top: 6px;\\n line-height: 30px;\\n color: #00afff;\\n font-weight: 600;\\n font-size: 17px;\\n white-space: nowrap;\\n}\\n.logo > img {\\n width: 30px;\\n height: 30px;\\n vertical-align: top;\\n}\\n.logo .github {\\n display: inline-block;\\n vertical-align: sub;\\n margin-left: 15px;\\n}\\n.logo .github > img {\\n height: 22px;\\n}\\n.center-board-row {\\n padding: 12px 12px 15px 12px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.center-board-row > .el-form {\\n height: calc(100vh - 69px);\\n}\\n.drawing-board {\\n height: 100%;\\n position: relative;\\n}\\n.drawing-board .components-body {\\n padding: 0;\\n margin: 0;\\n font-size: 0;\\n}\\n.drawing-board .sortable-ghost {\\n position: relative;\\n display: block;\\n overflow: hidden;\\n}\\n.drawing-board .sortable-ghost::before {\\n content: \\\" \\\";\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: 0;\\n height: 3px;\\n background: #5959df;\\n z-index: 2;\\n}\\n.drawing-board .components-item.sortable-ghost {\\n width: 100%;\\n height: 60px;\\n background-color: #f6f7ff;\\n}\\n.drawing-board .active-from-item > .el-form-item {\\n background: #f6f7ff;\\n border-radius: 6px;\\n}\\n.drawing-board .active-from-item > .drawing-item-copy, .drawing-board .active-from-item > .drawing-item-delete {\\n display: initial;\\n}\\n.drawing-board .active-from-item > .component-name {\\n color: #409EFF;\\n}\\n.drawing-board .el-form-item {\\n margin-bottom: 15px;\\n}\\n.drawing-item {\\n position: relative;\\n cursor: move;\\n}\\n.drawing-item.unfocus-bordered:not(.active-from-item) > div:first-child {\\n border: 1px dashed #ccc;\\n}\\n.drawing-item .el-form-item {\\n padding: 12px 10px;\\n}\\n.drawing-row-item {\\n position: relative;\\n cursor: move;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n border: 1px dashed #ccc;\\n border-radius: 3px;\\n padding: 0 2px;\\n margin-bottom: 15px;\\n}\\n.drawing-row-item .drawing-row-item {\\n margin-bottom: 2px;\\n}\\n.drawing-row-item .el-col {\\n margin-top: 22px;\\n}\\n.drawing-row-item .el-form-item {\\n margin-bottom: 0;\\n}\\n.drawing-row-item .drag-wrapper {\\n min-height: 80px;\\n}\\n.drawing-row-item.active-from-item {\\n border: 1px dashed #409EFF;\\n}\\n.drawing-row-item .component-name {\\n position: absolute;\\n top: 0;\\n left: 0;\\n font-size: 12px;\\n color: #bbb;\\n display: inline-block;\\n padding: 0 6px;\\n}\\n.drawing-item:hover > .el-form-item, .drawing-row-item:hover > .el-form-item {\\n background: #f6f7ff;\\n border-radius: 6px;\\n}\\n.drawing-item:hover > .drawing-item-copy, .drawing-item:hover > .drawing-item-delete, .drawing-row-item:hover > .drawing-item-copy, .drawing-row-item:hover > .drawing-item-delete {\\n display: initial;\\n}\\n.drawing-item > .drawing-item-copy, .drawing-item > .drawing-item-delete, .drawing-row-item > .drawing-item-copy, .drawing-row-item > .drawing-item-delete {\\n display: none;\\n position: absolute;\\n top: -10px;\\n width: 22px;\\n height: 22px;\\n line-height: 22px;\\n text-align: center;\\n border-radius: 50%;\\n font-size: 12px;\\n border: 1px solid;\\n cursor: pointer;\\n z-index: 1;\\n}\\n.drawing-item > .drawing-item-copy, .drawing-row-item > .drawing-item-copy {\\n right: 56px;\\n border-color: #409EFF;\\n color: #409EFF;\\n background: #fff;\\n}\\n.drawing-item > .drawing-item-copy:hover, .drawing-row-item > .drawing-item-copy:hover {\\n background: #409EFF;\\n color: #fff;\\n}\\n.drawing-item > .drawing-item-delete, .drawing-row-item > .drawing-item-delete {\\n right: 24px;\\n border-color: #F56C6C;\\n color: #F56C6C;\\n background: #fff;\\n}\\n.drawing-item > .drawing-item-delete:hover, .drawing-row-item > .drawing-item-delete:hover {\\n background: #F56C6C;\\n color: #fff;\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/views/bpm/form/formEditor.vue?./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.staticRenderFns = exports.render = void 0;\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", {\n class: _vm.className,\n style: {\n height: _vm.height,\n width: _vm.width\n }\n });\n};\nexports.render = render;\nvar staticRenderFns = [];\nexports.staticRenderFns = staticRenderFns;\nrender._withStripped = true;\n\n//# sourceURL=webpack:///./src/views/dashboard/RaddarChart.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22b76c6300-vue-loader-template%22%7D!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true&": -/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true& ***! - \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/index.vue?vue&type=template&id=a83bd3b0&scoped=true&": +/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"b76c6300-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/index.vue?vue&type=template&id=a83bd3b0&scoped=true& ***! + \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".tab-editor[data-v-753f0faf] {\\n position: absolute;\\n top: 33px;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n font-size: 14px;\\n}\\n.left-editor[data-v-753f0faf] {\\n position: relative;\\n height: 100%;\\n background: #1e1e1e;\\n overflow: hidden;\\n}\\n.setting[data-v-753f0faf] {\\n position: absolute;\\n right: 15px;\\n top: 3px;\\n color: #a9f122;\\n font-size: 18px;\\n cursor: pointer;\\n z-index: 1;\\n}\\n.right-preview[data-v-753f0faf] {\\n height: 100%;\\n}\\n.right-preview .result-wrapper[data-v-753f0faf] {\\n height: calc(100vh - 33px);\\n width: 100%;\\n overflow: auto;\\n padding: 12px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.action-bar[data-v-753f0faf] {\\n height: 33px;\\n background: #f2fafb;\\n padding: 0 15px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.action-bar .bar-btn[data-v-753f0faf] {\\n display: inline-block;\\n padding: 0 6px;\\n line-height: 32px;\\n color: #8285f5;\\n cursor: pointer;\\n font-size: 14px;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n}\\n.action-bar .bar-btn i[data-v-753f0faf] {\\n font-size: 20px;\\n}\\n.action-bar .bar-btn[data-v-753f0faf]:hover {\\n color: #4348d4;\\n}\\n.action-bar .bar-btn + .bar-btn[data-v-753f0faf] {\\n margin-left: 8px;\\n}\\n.action-bar .delete-btn[data-v-753f0faf] {\\n color: #f56c6c;\\n}\\n.action-bar .delete-btn[data-v-753f0faf]:hover {\\n color: #ea0b30;\\n}\\n[data-v-753f0faf] .el-drawer__header {\\n display: none;\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/views/infra/build/FormDrawer.vue?./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.staticRenderFns = exports.render = void 0;\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", {\n staticClass: \"dashboard-editor-container\"\n }, [_c(\"panel-group\", {\n on: {\n handleSetLineChartData: _vm.handleSetLineChartData\n }\n }), _c(\"el-row\", {\n staticStyle: {\n background: \"#fff\",\n padding: \"16px 16px 0\",\n \"margin-bottom\": \"32px\"\n }\n }, [_c(\"line-chart\", {\n attrs: {\n \"chart-data\": _vm.lineChartData\n }\n })], 1), _c(\"el-row\", {\n attrs: {\n gutter: 32\n }\n }, [_c(\"el-col\", {\n attrs: {\n xs: 24,\n sm: 24,\n lg: 8\n }\n }, [_c(\"div\", {\n staticClass: \"chart-wrapper\"\n }, [_c(\"raddar-chart\")], 1)]), _c(\"el-col\", {\n attrs: {\n xs: 24,\n sm: 24,\n lg: 8\n }\n }, [_c(\"div\", {\n staticClass: \"chart-wrapper\"\n }, [_c(\"pie-chart\")], 1)]), _c(\"el-col\", {\n attrs: {\n xs: 24,\n sm: 24,\n lg: 8\n }\n }, [_c(\"div\", {\n staticClass: \"chart-wrapper\"\n }, [_c(\"bar-chart\")], 1)])], 1)], 1);\n};\nexports.render = render;\nvar staticRenderFns = [];\nexports.staticRenderFns = staticRenderFns;\nrender._withStripped = true;\n\n//# sourceURL=webpack:///./src/views/index.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22b76c6300-vue-loader-template%22%7D!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true&": -/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true& ***! - \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/PanelGroup.vue?vue&type=style&index=0&id=0333a520&lang=scss&scoped=true&": +/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--9-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/dashboard/PanelGroup.vue?vue&type=style&index=0&id=0333a520&lang=scss&scoped=true& ***! + \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".icon-ul[data-v-7bbbfa18] {\\n margin: 0;\\n padding: 0;\\n font-size: 0;\\n}\\n.icon-ul li[data-v-7bbbfa18] {\\n list-style-type: none;\\n text-align: center;\\n font-size: 14px;\\n display: inline-block;\\n width: 16.66%;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n height: 108px;\\n padding: 15px 6px 6px 6px;\\n cursor: pointer;\\n overflow: hidden;\\n}\\n.icon-ul li[data-v-7bbbfa18]:hover {\\n background: #f2f2f2;\\n}\\n.icon-ul li.active-item[data-v-7bbbfa18] {\\n background: #e1f3fb;\\n color: #7a6df0;\\n}\\n.icon-ul li > i[data-v-7bbbfa18] {\\n font-size: 30px;\\n line-height: 50px;\\n}\\n.icon-dialog[data-v-7bbbfa18] .el-dialog {\\n border-radius: 8px;\\n margin-bottom: 0;\\n margin-top: 4vh !important;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n max-height: 92vh;\\n overflow: hidden;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.icon-dialog[data-v-7bbbfa18] .el-dialog .el-dialog__header {\\n padding-top: 14px;\\n}\\n.icon-dialog[data-v-7bbbfa18] .el-dialog .el-dialog__body {\\n margin: 0 20px 20px 20px;\\n padding: 0;\\n overflow: auto;\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/views/infra/build/IconsDialog.vue?./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".panel-group[data-v-0333a520] {\\n margin-top: 18px;\\n}\\n.panel-group .card-panel-col[data-v-0333a520] {\\n margin-bottom: 32px;\\n}\\n.panel-group .card-panel[data-v-0333a520] {\\n height: 108px;\\n cursor: pointer;\\n font-size: 12px;\\n position: relative;\\n overflow: hidden;\\n color: #666;\\n background: #fff;\\n -webkit-box-shadow: 4px 4px 40px rgba(0, 0, 0, 0.05);\\n box-shadow: 4px 4px 40px rgba(0, 0, 0, 0.05);\\n border-color: rgba(0, 0, 0, 0.05);\\n}\\n.panel-group .card-panel:hover .card-panel-icon-wrapper[data-v-0333a520] {\\n color: #fff;\\n}\\n.panel-group .card-panel:hover .icon-people[data-v-0333a520] {\\n background: #40c9c6;\\n}\\n.panel-group .card-panel:hover .icon-message[data-v-0333a520] {\\n background: #36a3f7;\\n}\\n.panel-group .card-panel:hover .icon-money[data-v-0333a520] {\\n background: #f4516c;\\n}\\n.panel-group .card-panel:hover .icon-shopping[data-v-0333a520] {\\n background: #34bfa3;\\n}\\n.panel-group .card-panel .icon-people[data-v-0333a520] {\\n color: #40c9c6;\\n}\\n.panel-group .card-panel .icon-message[data-v-0333a520] {\\n color: #36a3f7;\\n}\\n.panel-group .card-panel .icon-money[data-v-0333a520] {\\n color: #f4516c;\\n}\\n.panel-group .card-panel .icon-shopping[data-v-0333a520] {\\n color: #34bfa3;\\n}\\n.panel-group .card-panel .card-panel-icon-wrapper[data-v-0333a520] {\\n float: left;\\n margin: 14px 0 0 14px;\\n padding: 16px;\\n -webkit-transition: all 0.38s ease-out;\\n transition: all 0.38s ease-out;\\n border-radius: 6px;\\n}\\n.panel-group .card-panel .card-panel-icon[data-v-0333a520] {\\n float: left;\\n font-size: 48px;\\n}\\n.panel-group .card-panel .card-panel-description[data-v-0333a520] {\\n float: right;\\n font-weight: bold;\\n margin: 26px 26px 26px 0;\\n}\\n.panel-group .card-panel .card-panel-description .card-panel-text[data-v-0333a520] {\\n line-height: 18px;\\n color: rgba(0, 0, 0, 0.45);\\n font-size: 16px;\\n margin-bottom: 12px;\\n}\\n.panel-group .card-panel .card-panel-description .card-panel-num[data-v-0333a520] {\\n font-size: 20px;\\n}\\n@media (max-width: 550px) {\\n.card-panel-description[data-v-0333a520] {\\n display: none;\\n}\\n.card-panel-icon-wrapper[data-v-0333a520] {\\n float: none !important;\\n width: 100%;\\n height: 100%;\\n margin: 0 !important;\\n}\\n.card-panel-icon-wrapper .svg-icon[data-v-0333a520] {\\n display: block;\\n margin: 14px auto !important;\\n float: none !important;\\n}\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/views/dashboard/PanelGroup.vue?./node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--9-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true&": -/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true& ***! - \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/index.vue?vue&type=style&index=0&id=a83bd3b0&lang=scss&scoped=true&": +/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--9-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/index.vue?vue&type=style&index=0&id=a83bd3b0&lang=scss&scoped=true& ***! + \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \"[data-v-349212d3] .el-drawer__header {\\n display: none;\\n}\\n.action-bar[data-v-349212d3] {\\n height: 33px;\\n background: #f2fafb;\\n padding: 0 15px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.action-bar .bar-btn[data-v-349212d3] {\\n display: inline-block;\\n padding: 0 6px;\\n line-height: 32px;\\n color: #8285f5;\\n cursor: pointer;\\n font-size: 14px;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n}\\n.action-bar .bar-btn i[data-v-349212d3] {\\n font-size: 20px;\\n}\\n.action-bar .bar-btn[data-v-349212d3]:hover {\\n color: #4348d4;\\n}\\n.action-bar .bar-btn + .bar-btn[data-v-349212d3] {\\n margin-left: 8px;\\n}\\n.action-bar .delete-btn[data-v-349212d3] {\\n color: #f56c6c;\\n}\\n.action-bar .delete-btn[data-v-349212d3]:hover {\\n color: #ea0b30;\\n}\\n.json-editor[data-v-349212d3] {\\n height: calc(100vh - 33px);\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/views/infra/build/JsonDrawer.vue?./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".dashboard-editor-container[data-v-a83bd3b0] {\\n padding: 32px;\\n background-color: #f0f2f5;\\n position: relative;\\n}\\n.dashboard-editor-container .chart-wrapper[data-v-a83bd3b0] {\\n background: #fff;\\n padding: 16px 16px 0;\\n margin-bottom: 32px;\\n}\\n@media (max-width: 1024px) {\\n.chart-wrapper[data-v-a83bd3b0] {\\n padding: 8px;\\n}\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/views/index.vue?./node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--9-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true&": -/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true& ***! - \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ "./node_modules/echarts/index.js": +/*!***************************************!*\ + !*** ./node_modules/echarts/index.js ***! + \***************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".add-item[data-v-1416fb60] {\\n margin-top: 8px;\\n}\\n.url-item[data-v-1416fb60] {\\n margin-bottom: 12px;\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/views/infra/build/ResourceDialog.vue?./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _echarts = __webpack_require__(/*! ./lib/echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n(function () {\n for (var key in _echarts) {\n if (_echarts == null || !_echarts.hasOwnProperty(key) || key === 'default' || key === '__esModule') return;\n exports[key] = _echarts[key];\n }\n})();\n\nvar _export = __webpack_require__(/*! ./lib/export */ \"./node_modules/echarts/lib/export.js\");\n\n(function () {\n for (var key in _export) {\n if (_export == null || !_export.hasOwnProperty(key) || key === 'default' || key === '__esModule') return;\n exports[key] = _export[key];\n }\n})();\n\n__webpack_require__(/*! ./lib/component/dataset */ \"./node_modules/echarts/lib/component/dataset.js\");\n\n__webpack_require__(/*! ./lib/chart/line */ \"./node_modules/echarts/lib/chart/line.js\");\n\n__webpack_require__(/*! ./lib/chart/bar */ \"./node_modules/echarts/lib/chart/bar.js\");\n\n__webpack_require__(/*! ./lib/chart/pie */ \"./node_modules/echarts/lib/chart/pie.js\");\n\n__webpack_require__(/*! ./lib/chart/scatter */ \"./node_modules/echarts/lib/chart/scatter.js\");\n\n__webpack_require__(/*! ./lib/chart/radar */ \"./node_modules/echarts/lib/chart/radar.js\");\n\n__webpack_require__(/*! ./lib/chart/map */ \"./node_modules/echarts/lib/chart/map.js\");\n\n__webpack_require__(/*! ./lib/chart/tree */ \"./node_modules/echarts/lib/chart/tree.js\");\n\n__webpack_require__(/*! ./lib/chart/treemap */ \"./node_modules/echarts/lib/chart/treemap.js\");\n\n__webpack_require__(/*! ./lib/chart/graph */ \"./node_modules/echarts/lib/chart/graph.js\");\n\n__webpack_require__(/*! ./lib/chart/gauge */ \"./node_modules/echarts/lib/chart/gauge.js\");\n\n__webpack_require__(/*! ./lib/chart/funnel */ \"./node_modules/echarts/lib/chart/funnel.js\");\n\n__webpack_require__(/*! ./lib/chart/parallel */ \"./node_modules/echarts/lib/chart/parallel.js\");\n\n__webpack_require__(/*! ./lib/chart/sankey */ \"./node_modules/echarts/lib/chart/sankey.js\");\n\n__webpack_require__(/*! ./lib/chart/boxplot */ \"./node_modules/echarts/lib/chart/boxplot.js\");\n\n__webpack_require__(/*! ./lib/chart/candlestick */ \"./node_modules/echarts/lib/chart/candlestick.js\");\n\n__webpack_require__(/*! ./lib/chart/effectScatter */ \"./node_modules/echarts/lib/chart/effectScatter.js\");\n\n__webpack_require__(/*! ./lib/chart/lines */ \"./node_modules/echarts/lib/chart/lines.js\");\n\n__webpack_require__(/*! ./lib/chart/heatmap */ \"./node_modules/echarts/lib/chart/heatmap.js\");\n\n__webpack_require__(/*! ./lib/chart/pictorialBar */ \"./node_modules/echarts/lib/chart/pictorialBar.js\");\n\n__webpack_require__(/*! ./lib/chart/themeRiver */ \"./node_modules/echarts/lib/chart/themeRiver.js\");\n\n__webpack_require__(/*! ./lib/chart/sunburst */ \"./node_modules/echarts/lib/chart/sunburst.js\");\n\n__webpack_require__(/*! ./lib/chart/custom */ \"./node_modules/echarts/lib/chart/custom.js\");\n\n__webpack_require__(/*! ./lib/component/grid */ \"./node_modules/echarts/lib/component/grid.js\");\n\n__webpack_require__(/*! ./lib/component/polar */ \"./node_modules/echarts/lib/component/polar.js\");\n\n__webpack_require__(/*! ./lib/component/geo */ \"./node_modules/echarts/lib/component/geo.js\");\n\n__webpack_require__(/*! ./lib/component/singleAxis */ \"./node_modules/echarts/lib/component/singleAxis.js\");\n\n__webpack_require__(/*! ./lib/component/parallel */ \"./node_modules/echarts/lib/component/parallel.js\");\n\n__webpack_require__(/*! ./lib/component/calendar */ \"./node_modules/echarts/lib/component/calendar.js\");\n\n__webpack_require__(/*! ./lib/component/graphic */ \"./node_modules/echarts/lib/component/graphic.js\");\n\n__webpack_require__(/*! ./lib/component/toolbox */ \"./node_modules/echarts/lib/component/toolbox.js\");\n\n__webpack_require__(/*! ./lib/component/tooltip */ \"./node_modules/echarts/lib/component/tooltip.js\");\n\n__webpack_require__(/*! ./lib/component/axisPointer */ \"./node_modules/echarts/lib/component/axisPointer.js\");\n\n__webpack_require__(/*! ./lib/component/brush */ \"./node_modules/echarts/lib/component/brush.js\");\n\n__webpack_require__(/*! ./lib/component/title */ \"./node_modules/echarts/lib/component/title.js\");\n\n__webpack_require__(/*! ./lib/component/timeline */ \"./node_modules/echarts/lib/component/timeline.js\");\n\n__webpack_require__(/*! ./lib/component/markPoint */ \"./node_modules/echarts/lib/component/markPoint.js\");\n\n__webpack_require__(/*! ./lib/component/markLine */ \"./node_modules/echarts/lib/component/markLine.js\");\n\n__webpack_require__(/*! ./lib/component/markArea */ \"./node_modules/echarts/lib/component/markArea.js\");\n\n__webpack_require__(/*! ./lib/component/legendScroll */ \"./node_modules/echarts/lib/component/legendScroll.js\");\n\n__webpack_require__(/*! ./lib/component/legend */ \"./node_modules/echarts/lib/component/legend.js\");\n\n__webpack_require__(/*! ./lib/component/dataZoom */ \"./node_modules/echarts/lib/component/dataZoom.js\");\n\n__webpack_require__(/*! ./lib/component/dataZoomInside */ \"./node_modules/echarts/lib/component/dataZoomInside.js\");\n\n__webpack_require__(/*! ./lib/component/dataZoomSlider */ \"./node_modules/echarts/lib/component/dataZoomSlider.js\");\n\n__webpack_require__(/*! ./lib/component/visualMap */ \"./node_modules/echarts/lib/component/visualMap.js\");\n\n__webpack_require__(/*! ./lib/component/visualMapContinuous */ \"./node_modules/echarts/lib/component/visualMapContinuous.js\");\n\n__webpack_require__(/*! ./lib/component/visualMapPiecewise */ \"./node_modules/echarts/lib/component/visualMapPiecewise.js\");\n\n__webpack_require__(/*! zrender/lib/vml/vml */ \"./node_modules/zrender/lib/vml/vml.js\");\n\n__webpack_require__(/*! zrender/lib/svg/svg */ \"./node_modules/zrender/lib/svg/svg.js\");\n\n//# sourceURL=webpack:///./node_modules/echarts/index.js?"); /***/ }), -/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true&": -/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true& ***! - \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".right-board[data-v-77ba98a2] {\\n width: 350px;\\n position: absolute;\\n right: 0;\\n top: 0;\\n padding-top: 3px;\\n}\\n.right-board .field-box[data-v-77ba98a2] {\\n position: relative;\\n height: calc(100vh - 42px);\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n overflow: hidden;\\n}\\n.right-board .el-scrollbar[data-v-77ba98a2] {\\n height: 100%;\\n}\\n.select-item[data-v-77ba98a2] {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n border: 1px dashed #fff;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.select-item .close-btn[data-v-77ba98a2] {\\n cursor: pointer;\\n color: #f56c6c;\\n}\\n.select-item .el-input + .el-input[data-v-77ba98a2] {\\n margin-left: 4px;\\n}\\n.select-item + .select-item[data-v-77ba98a2] {\\n margin-top: 4px;\\n}\\n.select-item.sortable-chosen[data-v-77ba98a2] {\\n border: 1px dashed #409eff;\\n}\\n.select-line-icon[data-v-77ba98a2] {\\n line-height: 32px;\\n font-size: 22px;\\n padding: 0 4px;\\n color: #777;\\n}\\n.option-drag[data-v-77ba98a2] {\\n cursor: move;\\n}\\n.time-range .el-date-editor[data-v-77ba98a2] {\\n width: 227px;\\n}\\n.time-range[data-v-77ba98a2] .el-icon-time {\\n display: none;\\n}\\n.document-link[data-v-77ba98a2] {\\n position: absolute;\\n display: block;\\n width: 26px;\\n height: 26px;\\n top: 0;\\n left: 0;\\n cursor: pointer;\\n background: #409eff;\\n z-index: 1;\\n border-radius: 0 0 6px 0;\\n text-align: center;\\n line-height: 26px;\\n color: #fff;\\n font-size: 18px;\\n}\\n.node-label[data-v-77ba98a2] {\\n font-size: 14px;\\n}\\n.node-icon[data-v-77ba98a2] {\\n color: #bebfc3;\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/views/infra/build/RightPanel.vue?./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/file-saver/dist/FileSaver.min.js": -/*!*******************************************************!*\ - !*** ./node_modules/file-saver/dist/FileSaver.min.js ***! - \*******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("/* WEBPACK VAR INJECTION */(function(global) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(a,b){if(true)!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (b),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));else {}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open(\"GET\",a),d.responseType=\"blob\",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error(\"could not download file\")},d.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open(\"\",\"_blank\"),g&&(g.document.title=g.document.body.innerText=\"downloading...\"),\"string\"==typeof b)return c(b,d,e);var h=\"application/octet-stream\"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&\"undefined\"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g, true&&(module.exports=g)});\n\n//# sourceMappingURL=FileSaver.min.js.map\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack:///./node_modules/file-saver/dist/FileSaver.min.js?"); - -/***/ }), - -/***/ "./node_modules/util/node_modules/inherits/inherits_browser.js": -/*!*********************************************************************!*\ - !*** ./node_modules/util/node_modules/inherits/inherits_browser.js ***! - \*********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -eval("if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n\n//# sourceURL=webpack:///./node_modules/util/node_modules/inherits/inherits_browser.js?"); - -/***/ }), - -/***/ "./node_modules/util/support/isBufferBrowser.js": +/***/ "./node_modules/echarts/lib/CoordinateSystem.js": /*!******************************************************!*\ - !*** ./node_modules/util/support/isBufferBrowser.js ***! + !*** ./node_modules/echarts/lib/CoordinateSystem.js ***! \******************************************************/ /*! no static exports found */ -/***/ (function(module, exports) { +/***/ (function(module, exports, __webpack_require__) { -eval("module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}\n\n//# sourceURL=webpack:///./node_modules/util/support/isBufferBrowser.js?"); +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar coordinateSystemCreators = {};\n\nfunction CoordinateSystemManager() {\n this._coordinateSystems = [];\n}\n\nCoordinateSystemManager.prototype = {\n constructor: CoordinateSystemManager,\n create: function (ecModel, api) {\n var coordinateSystems = [];\n zrUtil.each(coordinateSystemCreators, function (creater, type) {\n var list = creater.create(ecModel, api);\n coordinateSystems = coordinateSystems.concat(list || []);\n });\n this._coordinateSystems = coordinateSystems;\n },\n update: function (ecModel, api) {\n zrUtil.each(this._coordinateSystems, function (coordSys) {\n coordSys.update && coordSys.update(ecModel, api);\n });\n },\n getCoordinateSystems: function () {\n return this._coordinateSystems.slice();\n }\n};\n\nCoordinateSystemManager.register = function (type, coordinateSystemCreator) {\n coordinateSystemCreators[type] = coordinateSystemCreator;\n};\n\nCoordinateSystemManager.get = function (type) {\n return coordinateSystemCreators[type];\n};\n\nvar _default = CoordinateSystemManager;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/CoordinateSystem.js?"); /***/ }), -/***/ "./node_modules/util/util.js": -/*!***********************************!*\ - !*** ./node_modules/util/util.js ***! - \***********************************/ +/***/ "./node_modules/echarts/lib/ExtensionAPI.js": +/*!**************************************************!*\ + !*** ./node_modules/echarts/lib/ExtensionAPI.js ***! + \**************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("/* WEBPACK VAR INJECTION */(function(process) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = Object({\"NODE_ENV\":\"development\",\"VUE_APP_TITLE\":\"芋道管理系统\",\"VUE_APP_BASE_API\":\"http://127.0.0.1:48080\",\"VUE_APP_APP_NAME\":\"/admin-ui/\",\"VUE_APP_TENANT_ENABLE\":\"true\",\"VUE_APP_DOC_ENABLE\":\"true\",\"VUE_APP_BAIDU_CODE\":\"fadc1bd5db1a1d6f581df60a1807f8ab\",\"BASE_URL\":\"/admin-ui/\"}).NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = __webpack_require__(/*! ./support/isBuffer */ \"./node_modules/util/support/isBufferBrowser.js\");\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = __webpack_require__(/*! inherits */ \"./node_modules/util/node_modules/inherits/inherits_browser.js\");\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb, null, ret) },\n function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../node-libs-browser/mock/process.js */ \"./node_modules/node-libs-browser/mock/process.js\")))\n\n//# sourceURL=webpack:///./node_modules/util/util.js?"); +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar echartsAPIList = ['getDom', 'getZr', 'getWidth', 'getHeight', 'getDevicePixelRatio', 'dispatchAction', 'isDisposed', 'on', 'off', 'getDataURL', 'getConnectedDataURL', 'getModel', 'getOption', 'getViewOfComponentModel', 'getViewOfSeriesModel']; // And `getCoordinateSystems` and `getComponentByElement` will be injected in echarts.js\n\nfunction ExtensionAPI(chartInstance) {\n zrUtil.each(echartsAPIList, function (name) {\n this[name] = zrUtil.bind(chartInstance[name], chartInstance);\n }, this);\n}\n\nvar _default = ExtensionAPI;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/ExtensionAPI.js?"); /***/ }), -/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/form/formEditor.vue?vue&type=style&index=0&lang=scss&": -/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/bpm/form/formEditor.vue?vue&type=style&index=0&lang=scss& ***! - \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ "./node_modules/echarts/lib/action/createDataSelectAction.js": +/*!*******************************************************************!*\ + !*** ./node_modules/echarts/lib/action/createDataSelectAction.js ***! + \*******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("// style-loader: Adds some css to the DOM by adding a \");\n}\n\nfunction buildFormTemplate(scheme, child, type) {\n var labelPosition = '';\n\n if (scheme.labelPosition !== 'right') {\n labelPosition = \"label-position=\\\"\".concat(scheme.labelPosition, \"\\\"\");\n }\n\n var disabled = scheme.disabled ? \":disabled=\\\"\".concat(scheme.disabled, \"\\\"\") : '';\n var str = \"\\n \").concat(child, \"\\n \").concat(buildFromBtns(scheme, type), \"\\n \");\n\n if (someSpanIsNot24) {\n str = \"\\n \").concat(str, \"\\n \");\n }\n\n return str;\n}\n\nfunction buildFromBtns(scheme, type) {\n var str = '';\n\n if (scheme.formBtns && type === 'file') {\n str = \"\\n \\u63D0\\u4EA4\\n \\u91CD\\u7F6E\\n \";\n\n if (someSpanIsNot24) {\n str = \"\\n \".concat(str, \"\\n \");\n }\n }\n\n return str;\n} // span不为24的用el-col包裹\n\n\nfunction colWrapper(scheme, str) {\n if (someSpanIsNot24 || scheme.__config__.span !== 24) {\n return \"\\n \").concat(str, \"\\n \");\n }\n\n return str;\n}\n\nvar layouts = {\n colFormItem: function colFormItem(scheme) {\n var config = scheme.__config__;\n var labelWidth = '';\n var label = \"label=\\\"\".concat(config.label, \"\\\"\");\n\n if (config.labelWidth && config.labelWidth !== confGlobal.labelWidth) {\n labelWidth = \"label-width=\\\"\".concat(config.labelWidth, \"px\\\"\");\n }\n\n if (config.showLabel === false) {\n labelWidth = 'label-width=\"0\"';\n label = '';\n }\n\n var required = !_ruleTrigger.default[config.tag] && config.required ? 'required' : '';\n var tagDom = tags[config.tag] ? tags[config.tag](scheme) : null;\n var str = \"\\n \").concat(tagDom, \"\\n \");\n str = colWrapper(scheme, str);\n return str;\n },\n rowFormItem: function rowFormItem(scheme) {\n var config = scheme.__config__;\n var type = scheme.type === 'default' ? '' : \"type=\\\"\".concat(scheme.type, \"\\\"\");\n var justify = scheme.type === 'default' ? '' : \"justify=\\\"\".concat(scheme.justify, \"\\\"\");\n var align = scheme.type === 'default' ? '' : \"align=\\\"\".concat(scheme.align, \"\\\"\");\n var gutter = scheme.gutter ? \":gutter=\\\"\".concat(scheme.gutter, \"\\\"\") : '';\n var children = config.children.map(function (el) {\n return layouts[el.__config__.layout](el);\n });\n var str = \"\\n \").concat(children.join('\\n'), \"\\n \");\n str = colWrapper(scheme, str);\n return str;\n }\n};\nvar tags = {\n 'el-button': function elButton(el) {\n var _attrBuilder = attrBuilder(el),\n tag = _attrBuilder.tag,\n disabled = _attrBuilder.disabled;\n\n var type = el.type ? \"type=\\\"\".concat(el.type, \"\\\"\") : '';\n var icon = el.icon ? \"icon=\\\"\".concat(el.icon, \"\\\"\") : '';\n var round = el.round ? 'round' : '';\n var size = el.size ? \"size=\\\"\".concat(el.size, \"\\\"\") : '';\n var plain = el.plain ? 'plain' : '';\n var circle = el.circle ? 'circle' : '';\n var child = buildElButtonChild(el);\n if (child) child = \"\\n\".concat(child, \"\\n\"); // 换行\n\n return \"<\".concat(tag, \" \").concat(type, \" \").concat(icon, \" \").concat(round, \" \").concat(size, \" \").concat(plain, \" \").concat(disabled, \" \").concat(circle, \">\").concat(child, \"\");\n },\n 'el-input': function elInput(el) {\n var _attrBuilder2 = attrBuilder(el),\n tag = _attrBuilder2.tag,\n disabled = _attrBuilder2.disabled,\n vModel = _attrBuilder2.vModel,\n clearable = _attrBuilder2.clearable,\n placeholder = _attrBuilder2.placeholder,\n width = _attrBuilder2.width;\n\n var maxlength = el.maxlength ? \":maxlength=\\\"\".concat(el.maxlength, \"\\\"\") : '';\n var showWordLimit = el['show-word-limit'] ? 'show-word-limit' : '';\n var readonly = el.readonly ? 'readonly' : '';\n var prefixIcon = el['prefix-icon'] ? \"prefix-icon='\".concat(el['prefix-icon'], \"'\") : '';\n var suffixIcon = el['suffix-icon'] ? \"suffix-icon='\".concat(el['suffix-icon'], \"'\") : '';\n var showPassword = el['show-password'] ? 'show-password' : '';\n var type = el.type ? \"type=\\\"\".concat(el.type, \"\\\"\") : '';\n var autosize = el.autosize && el.autosize.minRows ? \":autosize=\\\"{minRows: \".concat(el.autosize.minRows, \", maxRows: \").concat(el.autosize.maxRows, \"}\\\"\") : '';\n var child = buildElInputChild(el);\n if (child) child = \"\\n\".concat(child, \"\\n\"); // 换行\n\n return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(type, \" \").concat(placeholder, \" \").concat(maxlength, \" \").concat(showWordLimit, \" \").concat(readonly, \" \").concat(disabled, \" \").concat(clearable, \" \").concat(prefixIcon, \" \").concat(suffixIcon, \" \").concat(showPassword, \" \").concat(autosize, \" \").concat(width, \">\").concat(child, \"\");\n },\n 'el-input-number': function elInputNumber(el) {\n var _attrBuilder3 = attrBuilder(el),\n tag = _attrBuilder3.tag,\n disabled = _attrBuilder3.disabled,\n vModel = _attrBuilder3.vModel,\n placeholder = _attrBuilder3.placeholder;\n\n var controlsPosition = el['controls-position'] ? \"controls-position=\".concat(el['controls-position']) : '';\n var min = el.min ? \":min='\".concat(el.min, \"'\") : '';\n var max = el.max ? \":max='\".concat(el.max, \"'\") : '';\n var step = el.step ? \":step='\".concat(el.step, \"'\") : '';\n var stepStrictly = el['step-strictly'] ? 'step-strictly' : '';\n var precision = el.precision ? \":precision='\".concat(el.precision, \"'\") : '';\n return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(placeholder, \" \").concat(step, \" \").concat(stepStrictly, \" \").concat(precision, \" \").concat(controlsPosition, \" \").concat(min, \" \").concat(max, \" \").concat(disabled, \">\");\n },\n 'el-select': function elSelect(el) {\n var _attrBuilder4 = attrBuilder(el),\n tag = _attrBuilder4.tag,\n disabled = _attrBuilder4.disabled,\n vModel = _attrBuilder4.vModel,\n clearable = _attrBuilder4.clearable,\n placeholder = _attrBuilder4.placeholder,\n width = _attrBuilder4.width;\n\n var filterable = el.filterable ? 'filterable' : '';\n var multiple = el.multiple ? 'multiple' : '';\n var child = buildElSelectChild(el);\n if (child) child = \"\\n\".concat(child, \"\\n\"); // 换行\n\n return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(placeholder, \" \").concat(disabled, \" \").concat(multiple, \" \").concat(filterable, \" \").concat(clearable, \" \").concat(width, \">\").concat(child, \"\");\n },\n 'el-radio-group': function elRadioGroup(el) {\n var _attrBuilder5 = attrBuilder(el),\n tag = _attrBuilder5.tag,\n disabled = _attrBuilder5.disabled,\n vModel = _attrBuilder5.vModel;\n\n var size = \"size=\\\"\".concat(el.size, \"\\\"\");\n var child = buildElRadioGroupChild(el);\n if (child) child = \"\\n\".concat(child, \"\\n\"); // 换行\n\n return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(size, \" \").concat(disabled, \">\").concat(child, \"\");\n },\n 'el-checkbox-group': function elCheckboxGroup(el) {\n var _attrBuilder6 = attrBuilder(el),\n tag = _attrBuilder6.tag,\n disabled = _attrBuilder6.disabled,\n vModel = _attrBuilder6.vModel;\n\n var size = \"size=\\\"\".concat(el.size, \"\\\"\");\n var min = el.min ? \":min=\\\"\".concat(el.min, \"\\\"\") : '';\n var max = el.max ? \":max=\\\"\".concat(el.max, \"\\\"\") : '';\n var child = buildElCheckboxGroupChild(el);\n if (child) child = \"\\n\".concat(child, \"\\n\"); // 换行\n\n return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(min, \" \").concat(max, \" \").concat(size, \" \").concat(disabled, \">\").concat(child, \"\");\n },\n 'el-switch': function elSwitch(el) {\n var _attrBuilder7 = attrBuilder(el),\n tag = _attrBuilder7.tag,\n disabled = _attrBuilder7.disabled,\n vModel = _attrBuilder7.vModel;\n\n var activeText = el['active-text'] ? \"active-text=\\\"\".concat(el['active-text'], \"\\\"\") : '';\n var inactiveText = el['inactive-text'] ? \"inactive-text=\\\"\".concat(el['inactive-text'], \"\\\"\") : '';\n var activeColor = el['active-color'] ? \"active-color=\\\"\".concat(el['active-color'], \"\\\"\") : '';\n var inactiveColor = el['inactive-color'] ? \"inactive-color=\\\"\".concat(el['inactive-color'], \"\\\"\") : '';\n var activeValue = el['active-value'] !== true ? \":active-value='\".concat(JSON.stringify(el['active-value']), \"'\") : '';\n var inactiveValue = el['inactive-value'] !== false ? \":inactive-value='\".concat(JSON.stringify(el['inactive-value']), \"'\") : '';\n return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(activeText, \" \").concat(inactiveText, \" \").concat(activeColor, \" \").concat(inactiveColor, \" \").concat(activeValue, \" \").concat(inactiveValue, \" \").concat(disabled, \">\");\n },\n 'el-cascader': function elCascader(el) {\n var _attrBuilder8 = attrBuilder(el),\n tag = _attrBuilder8.tag,\n disabled = _attrBuilder8.disabled,\n vModel = _attrBuilder8.vModel,\n clearable = _attrBuilder8.clearable,\n placeholder = _attrBuilder8.placeholder,\n width = _attrBuilder8.width;\n\n var options = el.options ? \":options=\\\"\".concat(el.__vModel__, \"Options\\\"\") : '';\n var props = el.props ? \":props=\\\"\".concat(el.__vModel__, \"Props\\\"\") : '';\n var showAllLevels = el['show-all-levels'] ? '' : ':show-all-levels=\"false\"';\n var filterable = el.filterable ? 'filterable' : '';\n var separator = el.separator === '/' ? '' : \"separator=\\\"\".concat(el.separator, \"\\\"\");\n return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(options, \" \").concat(props, \" \").concat(width, \" \").concat(showAllLevels, \" \").concat(placeholder, \" \").concat(separator, \" \").concat(filterable, \" \").concat(clearable, \" \").concat(disabled, \">\");\n },\n 'el-slider': function elSlider(el) {\n var _attrBuilder9 = attrBuilder(el),\n tag = _attrBuilder9.tag,\n disabled = _attrBuilder9.disabled,\n vModel = _attrBuilder9.vModel;\n\n var min = el.min ? \":min='\".concat(el.min, \"'\") : '';\n var max = el.max ? \":max='\".concat(el.max, \"'\") : '';\n var step = el.step ? \":step='\".concat(el.step, \"'\") : '';\n var range = el.range ? 'range' : '';\n var showStops = el['show-stops'] ? \":show-stops=\\\"\".concat(el['show-stops'], \"\\\"\") : '';\n return \"<\".concat(tag, \" \").concat(min, \" \").concat(max, \" \").concat(step, \" \").concat(vModel, \" \").concat(range, \" \").concat(showStops, \" \").concat(disabled, \">\");\n },\n 'el-time-picker': function elTimePicker(el) {\n var _attrBuilder10 = attrBuilder(el),\n tag = _attrBuilder10.tag,\n disabled = _attrBuilder10.disabled,\n vModel = _attrBuilder10.vModel,\n clearable = _attrBuilder10.clearable,\n placeholder = _attrBuilder10.placeholder,\n width = _attrBuilder10.width;\n\n var startPlaceholder = el['start-placeholder'] ? \"start-placeholder=\\\"\".concat(el['start-placeholder'], \"\\\"\") : '';\n var endPlaceholder = el['end-placeholder'] ? \"end-placeholder=\\\"\".concat(el['end-placeholder'], \"\\\"\") : '';\n var rangeSeparator = el['range-separator'] ? \"range-separator=\\\"\".concat(el['range-separator'], \"\\\"\") : '';\n var isRange = el['is-range'] ? 'is-range' : '';\n var format = el.format ? \"format=\\\"\".concat(el.format, \"\\\"\") : '';\n var valueFormat = el['value-format'] ? \"value-format=\\\"\".concat(el['value-format'], \"\\\"\") : '';\n var pickerOptions = el['picker-options'] ? \":picker-options='\".concat(JSON.stringify(el['picker-options']), \"'\") : '';\n return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(isRange, \" \").concat(format, \" \").concat(valueFormat, \" \").concat(pickerOptions, \" \").concat(width, \" \").concat(placeholder, \" \").concat(startPlaceholder, \" \").concat(endPlaceholder, \" \").concat(rangeSeparator, \" \").concat(clearable, \" \").concat(disabled, \">\");\n },\n 'el-date-picker': function elDatePicker(el) {\n var _attrBuilder11 = attrBuilder(el),\n tag = _attrBuilder11.tag,\n disabled = _attrBuilder11.disabled,\n vModel = _attrBuilder11.vModel,\n clearable = _attrBuilder11.clearable,\n placeholder = _attrBuilder11.placeholder,\n width = _attrBuilder11.width;\n\n var startPlaceholder = el['start-placeholder'] ? \"start-placeholder=\\\"\".concat(el['start-placeholder'], \"\\\"\") : '';\n var endPlaceholder = el['end-placeholder'] ? \"end-placeholder=\\\"\".concat(el['end-placeholder'], \"\\\"\") : '';\n var rangeSeparator = el['range-separator'] ? \"range-separator=\\\"\".concat(el['range-separator'], \"\\\"\") : '';\n var format = el.format ? \"format=\\\"\".concat(el.format, \"\\\"\") : '';\n var valueFormat = el['value-format'] ? \"value-format=\\\"\".concat(el['value-format'], \"\\\"\") : '';\n var type = el.type === 'date' ? '' : \"type=\\\"\".concat(el.type, \"\\\"\");\n var readonly = el.readonly ? 'readonly' : '';\n return \"<\".concat(tag, \" \").concat(type, \" \").concat(vModel, \" \").concat(format, \" \").concat(valueFormat, \" \").concat(width, \" \").concat(placeholder, \" \").concat(startPlaceholder, \" \").concat(endPlaceholder, \" \").concat(rangeSeparator, \" \").concat(clearable, \" \").concat(readonly, \" \").concat(disabled, \">\");\n },\n 'el-rate': function elRate(el) {\n var _attrBuilder12 = attrBuilder(el),\n tag = _attrBuilder12.tag,\n disabled = _attrBuilder12.disabled,\n vModel = _attrBuilder12.vModel;\n\n var max = el.max ? \":max='\".concat(el.max, \"'\") : '';\n var allowHalf = el['allow-half'] ? 'allow-half' : '';\n var showText = el['show-text'] ? 'show-text' : '';\n var showScore = el['show-score'] ? 'show-score' : '';\n return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(max, \" \").concat(allowHalf, \" \").concat(showText, \" \").concat(showScore, \" \").concat(disabled, \">\");\n },\n 'el-color-picker': function elColorPicker(el) {\n var _attrBuilder13 = attrBuilder(el),\n tag = _attrBuilder13.tag,\n disabled = _attrBuilder13.disabled,\n vModel = _attrBuilder13.vModel;\n\n var size = \"size=\\\"\".concat(el.size, \"\\\"\");\n var showAlpha = el['show-alpha'] ? 'show-alpha' : '';\n var colorFormat = el['color-format'] ? \"color-format=\\\"\".concat(el['color-format'], \"\\\"\") : '';\n return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(size, \" \").concat(showAlpha, \" \").concat(colorFormat, \" \").concat(disabled, \">\");\n },\n 'el-upload': function elUpload(el) {\n var tag = el.__config__.tag;\n var disabled = el.disabled ? ':disabled=\\'true\\'' : '';\n var action = el.action ? \":action=\\\"\".concat(el.__vModel__, \"Action\\\"\") : '';\n var multiple = el.multiple ? 'multiple' : '';\n var listType = el['list-type'] !== 'text' ? \"list-type=\\\"\".concat(el['list-type'], \"\\\"\") : '';\n var accept = el.accept ? \"accept=\\\"\".concat(el.accept, \"\\\"\") : '';\n var name = el.name !== 'file' ? \"name=\\\"\".concat(el.name, \"\\\"\") : '';\n var autoUpload = el['auto-upload'] === false ? ':auto-upload=\"false\"' : '';\n var beforeUpload = \":before-upload=\\\"\".concat(el.__vModel__, \"BeforeUpload\\\"\");\n var fileList = \":file-list=\\\"\".concat(el.__vModel__, \"fileList\\\"\");\n var ref = \"ref=\\\"\".concat(el.__vModel__, \"\\\"\");\n var child = buildElUploadChild(el);\n if (child) child = \"\\n\".concat(child, \"\\n\"); // 换行\n\n return \"<\".concat(tag, \" \").concat(ref, \" \").concat(fileList, \" \").concat(action, \" \").concat(autoUpload, \" \").concat(multiple, \" \").concat(beforeUpload, \" \").concat(listType, \" \").concat(accept, \" \").concat(name, \" \").concat(disabled, \">\").concat(child, \"\");\n },\n tinymce: function tinymce(el) {\n var _attrBuilder14 = attrBuilder(el),\n tag = _attrBuilder14.tag,\n vModel = _attrBuilder14.vModel,\n placeholder = _attrBuilder14.placeholder;\n\n var height = el.height ? \":height=\\\"\".concat(el.height, \"\\\"\") : '';\n var branding = el.branding ? \":branding=\\\"\".concat(el.branding, \"\\\"\") : '';\n return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(placeholder, \" \").concat(height, \" \").concat(branding, \">\");\n }\n};\n\nfunction attrBuilder(el) {\n return {\n tag: el.__config__.tag,\n vModel: \"v-model=\\\"\".concat(confGlobal.formModel, \".\").concat(el.__vModel__, \"\\\"\"),\n clearable: el.clearable ? 'clearable' : '',\n placeholder: el.placeholder ? \"placeholder=\\\"\".concat(el.placeholder, \"\\\"\") : '',\n width: el.style && el.style.width ? ':style=\"{width: \\'100%\\'}\"' : '',\n disabled: el.disabled ? ':disabled=\\'true\\'' : ''\n };\n} // el-buttin 子级\n\n\nfunction buildElButtonChild(scheme) {\n var children = [];\n var slot = scheme.__slot__ || {};\n\n if (slot.default) {\n children.push(slot.default);\n }\n\n return children.join('\\n');\n} // el-input 子级\n\n\nfunction buildElInputChild(scheme) {\n var children = [];\n var slot = scheme.__slot__;\n\n if (slot && slot.prepend) {\n children.push(\"\"));\n }\n\n if (slot && slot.append) {\n children.push(\"\"));\n }\n\n return children.join('\\n');\n} // el-select 子级\n\n\nfunction buildElSelectChild(scheme) {\n var children = [];\n var slot = scheme.__slot__;\n\n if (slot && slot.options && slot.options.length) {\n children.push(\"\"));\n }\n\n return children.join('\\n');\n} // el-radio-group 子级\n\n\nfunction buildElRadioGroupChild(scheme) {\n var children = [];\n var slot = scheme.__slot__;\n var config = scheme.__config__;\n\n if (slot && slot.options && slot.options.length) {\n var tag = config.optionType === 'button' ? 'el-radio-button' : 'el-radio';\n var border = config.border ? 'border' : '';\n children.push(\"<\".concat(tag, \" v-for=\\\"(item, index) in \").concat(scheme.__vModel__, \"Options\\\" :key=\\\"index\\\" :label=\\\"item.value\\\" :disabled=\\\"item.disabled\\\" \").concat(border, \">{{item.label}}\"));\n }\n\n return children.join('\\n');\n} // el-checkbox-group 子级\n\n\nfunction buildElCheckboxGroupChild(scheme) {\n var children = [];\n var slot = scheme.__slot__;\n var config = scheme.__config__;\n\n if (slot && slot.options && slot.options.length) {\n var tag = config.optionType === 'button' ? 'el-checkbox-button' : 'el-checkbox';\n var border = config.border ? 'border' : '';\n children.push(\"<\".concat(tag, \" v-for=\\\"(item, index) in \").concat(scheme.__vModel__, \"Options\\\" :key=\\\"index\\\" :label=\\\"item.value\\\" :disabled=\\\"item.disabled\\\" \").concat(border, \">{{item.label}}\"));\n }\n\n return children.join('\\n');\n} // el-upload 子级\n\n\nfunction buildElUploadChild(scheme) {\n var list = [];\n var config = scheme.__config__;\n if (scheme['list-type'] === 'picture-card') list.push('');else list.push(\"\".concat(config.buttonText, \"\"));\n if (config.showTip) list.push(\"

\\u53EA\\u80FD\\u4E0A\\u4F20\\u4E0D\\u8D85\\u8FC7 \".concat(config.fileSize).concat(config.sizeUnit, \" \\u7684\").concat(scheme.accept, \"\\u6587\\u4EF6
\"));\n return list.join('\\n');\n}\n/**\n * 组装html代码。【入口函数】\n * @param {Object} formConfig 整个表单配置\n * @param {String} type 生成类型,文件或弹窗等\n */\n\n\nfunction makeUpHtml(formConfig, type) {\n var htmlList = [];\n confGlobal = formConfig; // 判断布局是否都沾满了24个栅格,以备后续简化代码结构\n\n someSpanIsNot24 = formConfig.fields.some(function (item) {\n return item.__config__.span !== 24;\n }); // 遍历渲染每个组件成html\n\n formConfig.fields.forEach(function (el) {\n htmlList.push(layouts[el.__config__.layout](el));\n });\n var htmlStr = htmlList.join('\\n'); // 将组件代码放进form标签\n\n var temp = buildFormTemplate(formConfig, htmlStr, type); // dialog标签包裹代码\n\n if (type === 'dialog') {\n temp = dialogWrapper(temp);\n }\n\n confGlobal = null;\n return temp;\n}\n\n//# sourceURL=webpack:///./src/components/generator/html.js?"); +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar _barGrid = __webpack_require__(/*! ../layout/barGrid */ \"./node_modules/echarts/lib/layout/barGrid.js\");\n\nvar layout = _barGrid.layout;\nvar largeLayout = _barGrid.largeLayout;\n\n__webpack_require__(/*! ../coord/cartesian/Grid */ \"./node_modules/echarts/lib/coord/cartesian/Grid.js\");\n\n__webpack_require__(/*! ./bar/BarSeries */ \"./node_modules/echarts/lib/chart/bar/BarSeries.js\");\n\n__webpack_require__(/*! ./bar/BarView */ \"./node_modules/echarts/lib/chart/bar/BarView.js\");\n\n__webpack_require__(/*! ../component/gridSimple */ \"./node_modules/echarts/lib/component/gridSimple.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// In case developer forget to include grid component\necharts.registerLayout(echarts.PRIORITY.VISUAL.LAYOUT, zrUtil.curry(layout, 'bar')); // Use higher prority to avoid to be blocked by other overall layout, which do not\n// only exist in this module, but probably also exist in other modules, like `barPolar`.\n\necharts.registerLayout(echarts.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, largeLayout);\necharts.registerVisual({\n seriesType: 'bar',\n reset: function (seriesModel) {\n // Visual coding for legend\n seriesModel.getData().setVisual('legendSymbol', 'roundRect');\n }\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/bar.js?"); /***/ }), -/***/ "./src/components/generator/js.js": -/*!****************************************!*\ - !*** ./src/components/generator/js.js ***! - \****************************************/ +/***/ "./node_modules/echarts/lib/chart/bar/BarSeries.js": +/*!*********************************************************!*\ + !*** ./node_modules/echarts/lib/chart/bar/BarSeries.js ***! + \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -"use strict"; -eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.makeUpJs = makeUpJs;\n\n__webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");\n\n__webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.join.js */ \"./node_modules/core-js/modules/es.array.join.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.concat.js */ \"./node_modules/core-js/modules/es.array.concat.js\");\n\n__webpack_require__(/*! core-js/modules/es.object.keys.js */ \"./node_modules/core-js/modules/es.object.keys.js\");\n\n__webpack_require__(/*! core-js/modules/es.json.stringify.js */ \"./node_modules/core-js/modules/es.json.stringify.js\");\n\nvar _util = __webpack_require__(/*! util */ \"./node_modules/util/util.js\");\n\nvar _index = __webpack_require__(/*! @/utils/index */ \"./src/utils/index.js\");\n\nvar _ruleTrigger = _interopRequireDefault(__webpack_require__(/*! ./ruleTrigger */ \"./src/components/generator/ruleTrigger.js\"));\n\nvar units = {\n KB: '1024',\n MB: '1024 / 1024',\n GB: '1024 / 1024 / 1024'\n};\nvar confGlobal;\nvar inheritAttrs = {\n file: '',\n dialog: 'inheritAttrs: false,'\n};\n/**\n * 组装js 【入口函数】\n * @param {Object} formConfig 整个表单配置\n * @param {String} type 生成类型,文件或弹窗等\n */\n\nfunction makeUpJs(formConfig, type) {\n confGlobal = formConfig = (0, _index.deepClone)(formConfig);\n var dataList = [];\n var ruleList = [];\n var optionsList = [];\n var propsList = [];\n var methodList = mixinMethod(type);\n var uploadVarList = [];\n var created = [];\n formConfig.fields.forEach(function (el) {\n buildAttributes(el, dataList, ruleList, optionsList, methodList, propsList, uploadVarList, created);\n });\n var script = buildexport(formConfig, type, dataList.join('\\n'), ruleList.join('\\n'), optionsList.join('\\n'), uploadVarList.join('\\n'), propsList.join('\\n'), methodList.join('\\n'), created.join('\\n'));\n confGlobal = null;\n return script;\n} // 构建组件属性\n\n\nfunction buildAttributes(scheme, dataList, ruleList, optionsList, methodList, propsList, uploadVarList, created) {\n var config = scheme.__config__;\n var slot = scheme.__slot__;\n buildData(scheme, dataList);\n buildRules(scheme, ruleList); // 特殊处理options属性\n\n if (scheme.options || slot && slot.options && slot.options.length) {\n buildOptions(scheme, optionsList);\n\n if (config.dataType === 'dynamic') {\n var model = \"\".concat(scheme.__vModel__, \"Options\");\n var options = (0, _index.titleCase)(model);\n var methodName = \"get\".concat(options);\n buildOptionMethod(methodName, model, methodList, scheme);\n callInCreated(methodName, created);\n }\n } // 处理props\n\n\n if (scheme.props && scheme.props.props) {\n buildProps(scheme, propsList);\n } // 处理el-upload的action\n\n\n if (scheme.action && config.tag === 'el-upload') {\n uploadVarList.push(\"\".concat(scheme.__vModel__, \"Action: '\").concat(scheme.action, \"',\\n \").concat(scheme.__vModel__, \"fileList: [],\"));\n methodList.push(buildBeforeUpload(scheme)); // 非自动上传时,生成手动上传的函数\n\n if (!scheme['auto-upload']) {\n methodList.push(buildSubmitUpload(scheme));\n }\n } // 构建子级组件属性\n\n\n if (config.children) {\n config.children.forEach(function (item) {\n buildAttributes(item, dataList, ruleList, optionsList, methodList, propsList, uploadVarList, created);\n });\n }\n} // 在Created调用函数\n\n\nfunction callInCreated(methodName, created) {\n created.push(\"this.\".concat(methodName, \"()\"));\n} // 混入处理函数\n\n\nfunction mixinMethod(type) {\n var list = [];\n var minxins = {\n file: confGlobal.formBtns ? {\n submitForm: \"submitForm() {\\n this.$refs['\".concat(confGlobal.formRef, \"'].validate(valid => {\\n if(!valid) return\\n // TODO \\u63D0\\u4EA4\\u8868\\u5355\\n })\\n },\"),\n resetForm: \"resetForm() {\\n this.$refs['\".concat(confGlobal.formRef, \"'].resetFields()\\n },\")\n } : null,\n dialog: {\n onOpen: 'onOpen() {},',\n onClose: \"onClose() {\\n this.$refs['\".concat(confGlobal.formRef, \"'].resetFields()\\n },\"),\n close: \"close() {\\n this.$emit('update:visible', false)\\n },\",\n handelConfirm: \"handelConfirm() {\\n this.$refs['\".concat(confGlobal.formRef, \"'].validate(valid => {\\n if(!valid) return\\n this.close()\\n })\\n },\")\n }\n };\n var methods = minxins[type];\n\n if (methods) {\n Object.keys(methods).forEach(function (key) {\n list.push(methods[key]);\n });\n }\n\n return list;\n} // 构建data\n\n\nfunction buildData(scheme, dataList) {\n var config = scheme.__config__;\n if (scheme.__vModel__ === undefined) return;\n var defaultValue = JSON.stringify(config.defaultValue);\n dataList.push(\"\".concat(scheme.__vModel__, \": \").concat(defaultValue, \",\"));\n} // 构建校验规则\n\n\nfunction buildRules(scheme, ruleList) {\n var config = scheme.__config__;\n if (scheme.__vModel__ === undefined) return;\n var rules = [];\n\n if (_ruleTrigger.default[config.tag]) {\n if (config.required) {\n var type = (0, _util.isArray)(config.defaultValue) ? 'type: \\'array\\',' : '';\n var message = (0, _util.isArray)(config.defaultValue) ? \"\\u8BF7\\u81F3\\u5C11\\u9009\\u62E9\\u4E00\\u4E2A\".concat(config.label) : scheme.placeholder;\n if (message === undefined) message = \"\".concat(config.label, \"\\u4E0D\\u80FD\\u4E3A\\u7A7A\");\n rules.push(\"{ required: true, \".concat(type, \" message: '\").concat(message, \"', trigger: '\").concat(_ruleTrigger.default[config.tag], \"' }\"));\n }\n\n if (config.regList && (0, _util.isArray)(config.regList)) {\n config.regList.forEach(function (item) {\n if (item.pattern) {\n rules.push(\"{ pattern: \".concat(eval(item.pattern), \", message: '\").concat(item.message, \"', trigger: '\").concat(_ruleTrigger.default[config.tag], \"' }\"));\n }\n });\n }\n\n ruleList.push(\"\".concat(scheme.__vModel__, \": [\").concat(rules.join(','), \"],\"));\n }\n} // 构建options\n\n\nfunction buildOptions(scheme, optionsList) {\n if (scheme.__vModel__ === undefined) return; // el-cascader直接有options属性,其他组件都是定义在slot中,所以有两处判断\n\n var options = scheme.options;\n if (!options) options = scheme.__slot__.options;\n\n if (scheme.__config__.dataType === 'dynamic') {\n options = [];\n }\n\n var str = \"\".concat(scheme.__vModel__, \"Options: \").concat(JSON.stringify(options), \",\");\n optionsList.push(str);\n}\n\nfunction buildProps(scheme, propsList) {\n var str = \"\".concat(scheme.__vModel__, \"Props: \").concat(JSON.stringify(scheme.props.props), \",\");\n propsList.push(str);\n} // el-upload的BeforeUpload\n\n\nfunction buildBeforeUpload(scheme) {\n var config = scheme.__config__;\n var unitNum = units[config.sizeUnit];\n var rightSizeCode = '';\n var acceptCode = '';\n var returnList = [];\n\n if (config.fileSize) {\n rightSizeCode = \"let isRightSize = file.size / \".concat(unitNum, \" < \").concat(config.fileSize, \"\\n if(!isRightSize){\\n this.$message.error('\\u6587\\u4EF6\\u5927\\u5C0F\\u8D85\\u8FC7 \").concat(config.fileSize).concat(config.sizeUnit, \"')\\n }\");\n returnList.push('isRightSize');\n }\n\n if (scheme.accept) {\n acceptCode = \"let isAccept = new RegExp('\".concat(scheme.accept, \"').test(file.type)\\n if(!isAccept){\\n this.$message.error('\\u5E94\\u8BE5\\u9009\\u62E9\").concat(scheme.accept, \"\\u7C7B\\u578B\\u7684\\u6587\\u4EF6')\\n }\");\n returnList.push('isAccept');\n }\n\n var str = \"\".concat(scheme.__vModel__, \"BeforeUpload(file) {\\n \").concat(rightSizeCode, \"\\n \").concat(acceptCode, \"\\n return \").concat(returnList.join('&&'), \"\\n },\");\n return returnList.length ? str : '';\n} // el-upload的submit\n\n\nfunction buildSubmitUpload(scheme) {\n var str = \"submitUpload() {\\n this.$refs['\".concat(scheme.__vModel__, \"'].submit()\\n },\");\n return str;\n}\n\nfunction buildOptionMethod(methodName, model, methodList, scheme) {\n var config = scheme.__config__;\n var str = \"\".concat(methodName, \"() {\\n // \\u6CE8\\u610F\\uFF1Athis.$axios\\u662F\\u901A\\u8FC7Vue.prototype.$axios = axios\\u6302\\u8F7D\\u4EA7\\u751F\\u7684\\n this.$axios({\\n method: '\").concat(config.method, \"',\\n url: '\").concat(config.url, \"'\\n }).then(resp => {\\n var { data } = resp\\n this.\").concat(model, \" = data.\").concat(config.dataPath, \"\\n })\\n },\");\n methodList.push(str);\n} // js整体拼接\n\n\nfunction buildexport(conf, type, data, rules, selectOptions, uploadVar, props, methods, created) {\n var str = \"\".concat(_index.exportDefault, \"{\\n \").concat(inheritAttrs[type], \"\\n components: {},\\n props: [],\\n data () {\\n return {\\n \").concat(conf.formModel, \": {\\n \").concat(data, \"\\n },\\n \").concat(conf.formRules, \": {\\n \").concat(rules, \"\\n },\\n \").concat(uploadVar, \"\\n \").concat(selectOptions, \"\\n \").concat(props, \"\\n }\\n },\\n computed: {},\\n watch: {},\\n created () {\\n \").concat(created, \"\\n },\\n mounted () {},\\n methods: {\\n \").concat(methods, \"\\n }\\n}\");\n return str;\n}\n\n//# sourceURL=webpack:///./src/components/generator/js.js?"); +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar BaseBarSeries = __webpack_require__(/*! ./BaseBarSeries */ \"./node_modules/echarts/lib/chart/bar/BaseBarSeries.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = BaseBarSeries.extend({\n type: 'series.bar',\n dependencies: ['grid', 'polar'],\n brushSelector: 'rect',\n\n /**\n * @override\n */\n getProgressive: function () {\n // Do not support progressive in normal mode.\n return this.get('large') ? this.get('progressive') : false;\n },\n\n /**\n * @override\n */\n getProgressiveThreshold: function () {\n // Do not support progressive in normal mode.\n var progressiveThreshold = this.get('progressiveThreshold');\n var largeThreshold = this.get('largeThreshold');\n\n if (largeThreshold > progressiveThreshold) {\n progressiveThreshold = largeThreshold;\n }\n\n return progressiveThreshold;\n },\n defaultOption: {\n // If clipped\n // Only available on cartesian2d\n clip: true,\n // If use caps on two sides of bars\n // Only available on tangential polar bar\n roundCap: false,\n showBackground: false,\n backgroundStyle: {\n color: 'rgba(180, 180, 180, 0.2)',\n borderColor: null,\n borderWidth: 0,\n borderType: 'solid',\n borderRadius: 0,\n shadowBlur: 0,\n shadowColor: null,\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n opacity: 1\n }\n }\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/bar/BarSeries.js?"); /***/ }), -/***/ "./src/components/generator/ruleTrigger.js": +/***/ "./node_modules/echarts/lib/chart/bar/BarView.js": +/*!*******************************************************!*\ + !*** ./node_modules/echarts/lib/chart/bar/BarView.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar _helper = __webpack_require__(/*! ./helper */ \"./node_modules/echarts/lib/chart/bar/helper.js\");\n\nvar setLabel = _helper.setLabel;\n\nvar Model = __webpack_require__(/*! ../../model/Model */ \"./node_modules/echarts/lib/model/Model.js\");\n\nvar barItemStyle = __webpack_require__(/*! ./barItemStyle */ \"./node_modules/echarts/lib/chart/bar/barItemStyle.js\");\n\nvar Path = __webpack_require__(/*! zrender/lib/graphic/Path */ \"./node_modules/zrender/lib/graphic/Path.js\");\n\nvar Group = __webpack_require__(/*! zrender/lib/container/Group */ \"./node_modules/zrender/lib/container/Group.js\");\n\nvar _throttle = __webpack_require__(/*! ../../util/throttle */ \"./node_modules/echarts/lib/util/throttle.js\");\n\nvar throttle = _throttle.throttle;\n\nvar _createClipPathFromCoordSys = __webpack_require__(/*! ../helper/createClipPathFromCoordSys */ \"./node_modules/echarts/lib/chart/helper/createClipPathFromCoordSys.js\");\n\nvar createClipPath = _createClipPathFromCoordSys.createClipPath;\n\nvar Sausage = __webpack_require__(/*! ../../util/shape/sausage */ \"./node_modules/echarts/lib/util/shape/sausage.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'barBorderWidth'];\nvar _eventPos = [0, 0]; // FIXME\n// Just for compatible with ec2.\n\nzrUtil.extend(Model.prototype, barItemStyle);\n\nfunction getClipArea(coord, data) {\n var coordSysClipArea = coord.getArea && coord.getArea();\n\n if (coord.type === 'cartesian2d') {\n var baseAxis = coord.getBaseAxis(); // When boundaryGap is false or using time axis. bar may exceed the grid.\n // We should not clip this part.\n // See test/bar2.html\n\n if (baseAxis.type !== 'category' || !baseAxis.onBand) {\n var expandWidth = data.getLayout('bandWidth');\n\n if (baseAxis.isHorizontal()) {\n coordSysClipArea.x -= expandWidth;\n coordSysClipArea.width += expandWidth * 2;\n } else {\n coordSysClipArea.y -= expandWidth;\n coordSysClipArea.height += expandWidth * 2;\n }\n }\n }\n\n return coordSysClipArea;\n}\n\nvar _default = echarts.extendChartView({\n type: 'bar',\n render: function (seriesModel, ecModel, api) {\n this._updateDrawMode(seriesModel);\n\n var coordinateSystemType = seriesModel.get('coordinateSystem');\n\n if (coordinateSystemType === 'cartesian2d' || coordinateSystemType === 'polar') {\n this._isLargeDraw ? this._renderLarge(seriesModel, ecModel, api) : this._renderNormal(seriesModel, ecModel, api);\n } else {}\n\n return this.group;\n },\n incrementalPrepareRender: function (seriesModel, ecModel, api) {\n this._clear();\n\n this._updateDrawMode(seriesModel);\n },\n incrementalRender: function (params, seriesModel, ecModel, api) {\n // Do not support progressive in normal mode.\n this._incrementalRenderLarge(params, seriesModel);\n },\n _updateDrawMode: function (seriesModel) {\n var isLargeDraw = seriesModel.pipelineContext.large;\n\n if (this._isLargeDraw == null || isLargeDraw ^ this._isLargeDraw) {\n this._isLargeDraw = isLargeDraw;\n\n this._clear();\n }\n },\n _renderNormal: function (seriesModel, ecModel, api) {\n var group = this.group;\n var data = seriesModel.getData();\n var oldData = this._data;\n var coord = seriesModel.coordinateSystem;\n var baseAxis = coord.getBaseAxis();\n var isHorizontalOrRadial;\n\n if (coord.type === 'cartesian2d') {\n isHorizontalOrRadial = baseAxis.isHorizontal();\n } else if (coord.type === 'polar') {\n isHorizontalOrRadial = baseAxis.dim === 'angle';\n }\n\n var animationModel = seriesModel.isAnimationEnabled() ? seriesModel : null;\n var needsClip = seriesModel.get('clip', true);\n var coordSysClipArea = getClipArea(coord, data); // If there is clipPath created in large mode. Remove it.\n\n group.removeClipPath(); // We don't use clipPath in normal mode because we needs a perfect animation\n // And don't want the label are clipped.\n\n var roundCap = seriesModel.get('roundCap', true);\n var drawBackground = seriesModel.get('showBackground', true);\n var backgroundModel = seriesModel.getModel('backgroundStyle');\n var barBorderRadius = backgroundModel.get('barBorderRadius') || 0;\n var bgEls = [];\n var oldBgEls = this._backgroundEls || [];\n\n var createBackground = function (dataIndex) {\n var bgLayout = getLayout[coord.type](data, dataIndex);\n var bgEl = createBackgroundEl(coord, isHorizontalOrRadial, bgLayout);\n bgEl.useStyle(backgroundModel.getBarItemStyle()); // Only cartesian2d support borderRadius.\n\n if (coord.type === 'cartesian2d') {\n bgEl.setShape('r', barBorderRadius);\n }\n\n bgEls[dataIndex] = bgEl;\n return bgEl;\n };\n\n data.diff(oldData).add(function (dataIndex) {\n var itemModel = data.getItemModel(dataIndex);\n var layout = getLayout[coord.type](data, dataIndex, itemModel);\n\n if (drawBackground) {\n createBackground(dataIndex);\n } // If dataZoom in filteMode: 'empty', the baseValue can be set as NaN in \"axisProxy\".\n\n\n if (!data.hasValue(dataIndex)) {\n return;\n }\n\n if (needsClip) {\n // Clip will modify the layout params.\n // And return a boolean to determine if the shape are fully clipped.\n var isClipped = clip[coord.type](coordSysClipArea, layout);\n\n if (isClipped) {\n group.remove(el);\n return;\n }\n }\n\n var el = elementCreator[coord.type](dataIndex, layout, isHorizontalOrRadial, animationModel, false, roundCap);\n data.setItemGraphicEl(dataIndex, el);\n group.add(el);\n updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\n }).update(function (newIndex, oldIndex) {\n var itemModel = data.getItemModel(newIndex);\n var layout = getLayout[coord.type](data, newIndex, itemModel);\n\n if (drawBackground) {\n var bgEl;\n\n if (oldBgEls.length === 0) {\n bgEl = createBackground(oldIndex);\n } else {\n bgEl = oldBgEls[oldIndex];\n bgEl.useStyle(backgroundModel.getBarItemStyle()); // Only cartesian2d support borderRadius.\n\n if (coord.type === 'cartesian2d') {\n bgEl.setShape('r', barBorderRadius);\n }\n\n bgEls[newIndex] = bgEl;\n }\n\n var bgLayout = getLayout[coord.type](data, newIndex);\n var shape = createBackgroundShape(isHorizontalOrRadial, bgLayout, coord);\n graphic.updateProps(bgEl, {\n shape: shape\n }, animationModel, newIndex);\n }\n\n var el = oldData.getItemGraphicEl(oldIndex);\n\n if (!data.hasValue(newIndex)) {\n group.remove(el);\n return;\n }\n\n if (needsClip) {\n var isClipped = clip[coord.type](coordSysClipArea, layout);\n\n if (isClipped) {\n group.remove(el);\n return;\n }\n }\n\n if (el) {\n graphic.updateProps(el, {\n shape: layout\n }, animationModel, newIndex);\n } else {\n el = elementCreator[coord.type](newIndex, layout, isHorizontalOrRadial, animationModel, true, roundCap);\n }\n\n data.setItemGraphicEl(newIndex, el); // Add back\n\n group.add(el);\n updateStyle(el, data, newIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\n }).remove(function (dataIndex) {\n var el = oldData.getItemGraphicEl(dataIndex);\n\n if (coord.type === 'cartesian2d') {\n el && removeRect(dataIndex, animationModel, el);\n } else {\n el && removeSector(dataIndex, animationModel, el);\n }\n }).execute();\n var bgGroup = this._backgroundGroup || (this._backgroundGroup = new Group());\n bgGroup.removeAll();\n\n for (var i = 0; i < bgEls.length; ++i) {\n bgGroup.add(bgEls[i]);\n }\n\n group.add(bgGroup);\n this._backgroundEls = bgEls;\n this._data = data;\n },\n _renderLarge: function (seriesModel, ecModel, api) {\n this._clear();\n\n createLarge(seriesModel, this.group); // Use clipPath in large mode.\n\n var clipPath = seriesModel.get('clip', true) ? createClipPath(seriesModel.coordinateSystem, false, seriesModel) : null;\n\n if (clipPath) {\n this.group.setClipPath(clipPath);\n } else {\n this.group.removeClipPath();\n }\n },\n _incrementalRenderLarge: function (params, seriesModel) {\n this._removeBackground();\n\n createLarge(seriesModel, this.group, true);\n },\n dispose: zrUtil.noop,\n remove: function (ecModel) {\n this._clear(ecModel);\n },\n _clear: function (ecModel) {\n var group = this.group;\n var data = this._data;\n\n if (ecModel && ecModel.get('animation') && data && !this._isLargeDraw) {\n this._removeBackground();\n\n this._backgroundEls = [];\n data.eachItemGraphicEl(function (el) {\n if (el.type === 'sector') {\n removeSector(el.dataIndex, ecModel, el);\n } else {\n removeRect(el.dataIndex, ecModel, el);\n }\n });\n } else {\n group.removeAll();\n }\n\n this._data = null;\n },\n _removeBackground: function () {\n this.group.remove(this._backgroundGroup);\n this._backgroundGroup = null;\n }\n});\n\nvar mathMax = Math.max;\nvar mathMin = Math.min;\nvar clip = {\n cartesian2d: function (coordSysBoundingRect, layout) {\n var signWidth = layout.width < 0 ? -1 : 1;\n var signHeight = layout.height < 0 ? -1 : 1; // Needs positive width and height\n\n if (signWidth < 0) {\n layout.x += layout.width;\n layout.width = -layout.width;\n }\n\n if (signHeight < 0) {\n layout.y += layout.height;\n layout.height = -layout.height;\n }\n\n var x = mathMax(layout.x, coordSysBoundingRect.x);\n var x2 = mathMin(layout.x + layout.width, coordSysBoundingRect.x + coordSysBoundingRect.width);\n var y = mathMax(layout.y, coordSysBoundingRect.y);\n var y2 = mathMin(layout.y + layout.height, coordSysBoundingRect.y + coordSysBoundingRect.height);\n layout.x = x;\n layout.y = y;\n layout.width = x2 - x;\n layout.height = y2 - y;\n var clipped = layout.width < 0 || layout.height < 0; // Reverse back\n\n if (signWidth < 0) {\n layout.x += layout.width;\n layout.width = -layout.width;\n }\n\n if (signHeight < 0) {\n layout.y += layout.height;\n layout.height = -layout.height;\n }\n\n return clipped;\n },\n polar: function (coordSysClipArea, layout) {\n var signR = layout.r0 <= layout.r ? 1 : -1; // Make sure r is larger than r0\n\n if (signR < 0) {\n var r = layout.r;\n layout.r = layout.r0;\n layout.r0 = r;\n }\n\n var r = mathMin(layout.r, coordSysClipArea.r);\n var r0 = mathMax(layout.r0, coordSysClipArea.r0);\n layout.r = r;\n layout.r0 = r0;\n var clipped = r - r0 < 0; // Reverse back\n\n if (signR < 0) {\n var r = layout.r;\n layout.r = layout.r0;\n layout.r0 = r;\n }\n\n return clipped;\n }\n};\nvar elementCreator = {\n cartesian2d: function (dataIndex, layout, isHorizontal, animationModel, isUpdate) {\n var rect = new graphic.Rect({\n shape: zrUtil.extend({}, layout),\n z2: 1\n });\n rect.name = 'item'; // Animation\n\n if (animationModel) {\n var rectShape = rect.shape;\n var animateProperty = isHorizontal ? 'height' : 'width';\n var animateTarget = {};\n rectShape[animateProperty] = 0;\n animateTarget[animateProperty] = layout[animateProperty];\n graphic[isUpdate ? 'updateProps' : 'initProps'](rect, {\n shape: animateTarget\n }, animationModel, dataIndex);\n }\n\n return rect;\n },\n polar: function (dataIndex, layout, isRadial, animationModel, isUpdate, roundCap) {\n // Keep the same logic with bar in catesion: use end value to control\n // direction. Notice that if clockwise is true (by default), the sector\n // will always draw clockwisely, no matter whether endAngle is greater\n // or less than startAngle.\n var clockwise = layout.startAngle < layout.endAngle;\n var ShapeClass = !isRadial && roundCap ? Sausage : graphic.Sector;\n var sector = new ShapeClass({\n shape: zrUtil.defaults({\n clockwise: clockwise\n }, layout),\n z2: 1\n });\n sector.name = 'item'; // Animation\n\n if (animationModel) {\n var sectorShape = sector.shape;\n var animateProperty = isRadial ? 'r' : 'endAngle';\n var animateTarget = {};\n sectorShape[animateProperty] = isRadial ? 0 : layout.startAngle;\n animateTarget[animateProperty] = layout[animateProperty];\n graphic[isUpdate ? 'updateProps' : 'initProps'](sector, {\n shape: animateTarget\n }, animationModel, dataIndex);\n }\n\n return sector;\n }\n};\n\nfunction removeRect(dataIndex, animationModel, el) {\n // Not show text when animating\n el.style.text = null;\n graphic.updateProps(el, {\n shape: {\n width: 0\n }\n }, animationModel, dataIndex, function () {\n el.parent && el.parent.remove(el);\n });\n}\n\nfunction removeSector(dataIndex, animationModel, el) {\n // Not show text when animating\n el.style.text = null;\n graphic.updateProps(el, {\n shape: {\n r: el.shape.r0\n }\n }, animationModel, dataIndex, function () {\n el.parent && el.parent.remove(el);\n });\n}\n\nvar getLayout = {\n // itemModel is only used to get borderWidth, which is not needed\n // when calculating bar background layout.\n cartesian2d: function (data, dataIndex, itemModel) {\n var layout = data.getItemLayout(dataIndex);\n var fixedLineWidth = itemModel ? getLineWidth(itemModel, layout) : 0; // fix layout with lineWidth\n\n var signX = layout.width > 0 ? 1 : -1;\n var signY = layout.height > 0 ? 1 : -1;\n return {\n x: layout.x + signX * fixedLineWidth / 2,\n y: layout.y + signY * fixedLineWidth / 2,\n width: layout.width - signX * fixedLineWidth,\n height: layout.height - signY * fixedLineWidth\n };\n },\n polar: function (data, dataIndex, itemModel) {\n var layout = data.getItemLayout(dataIndex);\n return {\n cx: layout.cx,\n cy: layout.cy,\n r0: layout.r0,\n r: layout.r,\n startAngle: layout.startAngle,\n endAngle: layout.endAngle\n };\n }\n};\n\nfunction isZeroOnPolar(layout) {\n return layout.startAngle != null && layout.endAngle != null && layout.startAngle === layout.endAngle;\n}\n\nfunction updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontal, isPolar) {\n var color = data.getItemVisual(dataIndex, 'color');\n var opacity = data.getItemVisual(dataIndex, 'opacity');\n var stroke = data.getVisual('borderColor');\n var itemStyleModel = itemModel.getModel('itemStyle');\n var hoverStyle = itemModel.getModel('emphasis.itemStyle').getBarItemStyle();\n\n if (!isPolar) {\n el.setShape('r', itemStyleModel.get('barBorderRadius') || 0);\n }\n\n el.useStyle(zrUtil.defaults({\n stroke: isZeroOnPolar(layout) ? 'none' : stroke,\n fill: isZeroOnPolar(layout) ? 'none' : color,\n opacity: opacity\n }, itemStyleModel.getBarItemStyle()));\n var cursorStyle = itemModel.getShallow('cursor');\n cursorStyle && el.attr('cursor', cursorStyle);\n var labelPositionOutside = isHorizontal ? layout.height > 0 ? 'bottom' : 'top' : layout.width > 0 ? 'left' : 'right';\n\n if (!isPolar) {\n setLabel(el.style, hoverStyle, itemModel, color, seriesModel, dataIndex, labelPositionOutside);\n }\n\n if (isZeroOnPolar(layout)) {\n hoverStyle.fill = hoverStyle.stroke = 'none';\n }\n\n graphic.setHoverStyle(el, hoverStyle);\n} // In case width or height are too small.\n\n\nfunction getLineWidth(itemModel, rawLayout) {\n var lineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0; // width or height may be NaN for empty data\n\n var width = isNaN(rawLayout.width) ? Number.MAX_VALUE : Math.abs(rawLayout.width);\n var height = isNaN(rawLayout.height) ? Number.MAX_VALUE : Math.abs(rawLayout.height);\n return Math.min(lineWidth, width, height);\n}\n\nvar LargePath = Path.extend({\n type: 'largeBar',\n shape: {\n points: []\n },\n buildPath: function (ctx, shape) {\n // Drawing lines is more efficient than drawing\n // a whole line or drawing rects.\n var points = shape.points;\n var startPoint = this.__startPoint;\n var baseDimIdx = this.__baseDimIdx;\n\n for (var i = 0; i < points.length; i += 2) {\n startPoint[baseDimIdx] = points[i + baseDimIdx];\n ctx.moveTo(startPoint[0], startPoint[1]);\n ctx.lineTo(points[i], points[i + 1]);\n }\n }\n});\n\nfunction createLarge(seriesModel, group, incremental) {\n // TODO support polar\n var data = seriesModel.getData();\n var startPoint = [];\n var baseDimIdx = data.getLayout('valueAxisHorizontal') ? 1 : 0;\n startPoint[1 - baseDimIdx] = data.getLayout('valueAxisStart');\n var largeDataIndices = data.getLayout('largeDataIndices');\n var barWidth = data.getLayout('barWidth');\n var backgroundModel = seriesModel.getModel('backgroundStyle');\n var drawBackground = seriesModel.get('showBackground', true);\n\n if (drawBackground) {\n var points = data.getLayout('largeBackgroundPoints');\n var backgroundStartPoint = [];\n backgroundStartPoint[1 - baseDimIdx] = data.getLayout('backgroundStart');\n var bgEl = new LargePath({\n shape: {\n points: points\n },\n incremental: !!incremental,\n __startPoint: backgroundStartPoint,\n __baseDimIdx: baseDimIdx,\n __largeDataIndices: largeDataIndices,\n __barWidth: barWidth,\n silent: true,\n z2: 0\n });\n setLargeBackgroundStyle(bgEl, backgroundModel, data);\n group.add(bgEl);\n }\n\n var el = new LargePath({\n shape: {\n points: data.getLayout('largePoints')\n },\n incremental: !!incremental,\n __startPoint: startPoint,\n __baseDimIdx: baseDimIdx,\n __largeDataIndices: largeDataIndices,\n __barWidth: barWidth\n });\n group.add(el);\n setLargeStyle(el, seriesModel, data); // Enable tooltip and user mouse/touch event handlers.\n\n el.seriesIndex = seriesModel.seriesIndex;\n\n if (!seriesModel.get('silent')) {\n el.on('mousedown', largePathUpdateDataIndex);\n el.on('mousemove', largePathUpdateDataIndex);\n }\n} // Use throttle to avoid frequently traverse to find dataIndex.\n\n\nvar largePathUpdateDataIndex = throttle(function (event) {\n var largePath = this;\n var dataIndex = largePathFindDataIndex(largePath, event.offsetX, event.offsetY);\n largePath.dataIndex = dataIndex >= 0 ? dataIndex : null;\n}, 30, false);\n\nfunction largePathFindDataIndex(largePath, x, y) {\n var baseDimIdx = largePath.__baseDimIdx;\n var valueDimIdx = 1 - baseDimIdx;\n var points = largePath.shape.points;\n var largeDataIndices = largePath.__largeDataIndices;\n var barWidthHalf = Math.abs(largePath.__barWidth / 2);\n var startValueVal = largePath.__startPoint[valueDimIdx];\n _eventPos[0] = x;\n _eventPos[1] = y;\n var pointerBaseVal = _eventPos[baseDimIdx];\n var pointerValueVal = _eventPos[1 - baseDimIdx];\n var baseLowerBound = pointerBaseVal - barWidthHalf;\n var baseUpperBound = pointerBaseVal + barWidthHalf;\n\n for (var i = 0, len = points.length / 2; i < len; i++) {\n var ii = i * 2;\n var barBaseVal = points[ii + baseDimIdx];\n var barValueVal = points[ii + valueDimIdx];\n\n if (barBaseVal >= baseLowerBound && barBaseVal <= baseUpperBound && (startValueVal <= barValueVal ? pointerValueVal >= startValueVal && pointerValueVal <= barValueVal : pointerValueVal >= barValueVal && pointerValueVal <= startValueVal)) {\n return largeDataIndices[i];\n }\n }\n\n return -1;\n}\n\nfunction setLargeStyle(el, seriesModel, data) {\n var borderColor = data.getVisual('borderColor') || data.getVisual('color');\n var itemStyle = seriesModel.getModel('itemStyle').getItemStyle(['color', 'borderColor']);\n el.useStyle(itemStyle);\n el.style.fill = null;\n el.style.stroke = borderColor;\n el.style.lineWidth = data.getLayout('barWidth');\n}\n\nfunction setLargeBackgroundStyle(el, backgroundModel, data) {\n var borderColor = backgroundModel.get('borderColor') || backgroundModel.get('color');\n var itemStyle = backgroundModel.getItemStyle(['color', 'borderColor']);\n el.useStyle(itemStyle);\n el.style.fill = null;\n el.style.stroke = borderColor;\n el.style.lineWidth = data.getLayout('barWidth');\n}\n\nfunction createBackgroundShape(isHorizontalOrRadial, layout, coord) {\n var coordLayout;\n var isPolar = coord.type === 'polar';\n\n if (isPolar) {\n coordLayout = coord.getArea();\n } else {\n coordLayout = coord.grid.getRect();\n }\n\n if (isPolar) {\n return {\n cx: coordLayout.cx,\n cy: coordLayout.cy,\n r0: isHorizontalOrRadial ? coordLayout.r0 : layout.r0,\n r: isHorizontalOrRadial ? coordLayout.r : layout.r,\n startAngle: isHorizontalOrRadial ? layout.startAngle : 0,\n endAngle: isHorizontalOrRadial ? layout.endAngle : Math.PI * 2\n };\n } else {\n return {\n x: isHorizontalOrRadial ? layout.x : coordLayout.x,\n y: isHorizontalOrRadial ? coordLayout.y : layout.y,\n width: isHorizontalOrRadial ? layout.width : coordLayout.width,\n height: isHorizontalOrRadial ? coordLayout.height : layout.height\n };\n }\n}\n\nfunction createBackgroundEl(coord, isHorizontalOrRadial, layout) {\n var ElementClz = coord.type === 'polar' ? graphic.Sector : graphic.Rect;\n return new ElementClz({\n shape: createBackgroundShape(isHorizontalOrRadial, layout, coord),\n silent: true,\n z2: 0\n });\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/bar/BarView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/bar/BaseBarSeries.js": +/*!*************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/bar/BaseBarSeries.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar SeriesModel = __webpack_require__(/*! ../../model/Series */ \"./node_modules/echarts/lib/model/Series.js\");\n\nvar createListFromArray = __webpack_require__(/*! ../helper/createListFromArray */ \"./node_modules/echarts/lib/chart/helper/createListFromArray.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n type: 'series.__base_bar__',\n getInitialData: function (option, ecModel) {\n return createListFromArray(this.getSource(), this, {\n useEncodeDefaulter: true\n });\n },\n getMarkerPosition: function (value) {\n var coordSys = this.coordinateSystem;\n\n if (coordSys) {\n // PENDING if clamp ?\n var pt = coordSys.dataToPoint(coordSys.clampData(value));\n var data = this.getData();\n var offset = data.getLayout('offset');\n var size = data.getLayout('size');\n var offsetIndex = coordSys.getBaseAxis().isHorizontal() ? 0 : 1;\n pt[offsetIndex] += offset + size / 2;\n return pt;\n }\n\n return [NaN, NaN];\n },\n defaultOption: {\n zlevel: 0,\n // 一级层叠\n z: 2,\n // 二级层叠\n coordinateSystem: 'cartesian2d',\n legendHoverLink: true,\n // stack: null\n // Cartesian coordinate system\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // 最小高度改为0\n barMinHeight: 0,\n // 最小角度为0,仅对极坐标系下的柱状图有效\n barMinAngle: 0,\n // cursor: null,\n large: false,\n largeThreshold: 400,\n progressive: 3e3,\n progressiveChunkMode: 'mod',\n // barMaxWidth: null,\n // In cartesian, the default value is 1. Otherwise null.\n // barMinWidth: null,\n // 默认自适应\n // barWidth: null,\n // 柱间距离,默认为柱形宽度的30%,可设固定值\n // barGap: '30%',\n // 类目间柱形距离,默认为类目间距的20%,可设固定值\n // barCategoryGap: '20%',\n // label: {\n // show: false\n // },\n itemStyle: {},\n emphasis: {}\n }\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/bar/BaseBarSeries.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/bar/PictorialBarSeries.js": +/*!******************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/bar/PictorialBarSeries.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar BaseBarSeries = __webpack_require__(/*! ./BaseBarSeries */ \"./node_modules/echarts/lib/chart/bar/BaseBarSeries.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PictorialBarSeries = BaseBarSeries.extend({\n type: 'series.pictorialBar',\n dependencies: ['grid'],\n defaultOption: {\n symbol: 'circle',\n // Customized bar shape\n symbolSize: null,\n // Can be ['100%', '100%'], null means auto.\n symbolRotate: null,\n symbolPosition: null,\n // 'start' or 'end' or 'center', null means auto.\n symbolOffset: null,\n symbolMargin: null,\n // start margin and end margin. Can be a number or a percent string.\n // Auto margin by default.\n symbolRepeat: false,\n // false/null/undefined, means no repeat.\n // Can be true, means auto calculate repeat times and cut by data.\n // Can be a number, specifies repeat times, and do not cut by data.\n // Can be 'fixed', means auto calculate repeat times but do not cut by data.\n symbolRepeatDirection: 'end',\n // 'end' means from 'start' to 'end'.\n symbolClip: false,\n symbolBoundingData: null,\n // Can be 60 or -40 or [-40, 60]\n symbolPatternSize: 400,\n // 400 * 400 px\n barGap: '-100%',\n // In most case, overlap is needed.\n // z can be set in data item, which is z2 actually.\n // Disable progressive\n progressive: 0,\n hoverAnimation: false // Open only when needed.\n\n },\n getInitialData: function (option) {\n // Disable stack.\n option.stack = null;\n return PictorialBarSeries.superApply(this, 'getInitialData', arguments);\n }\n});\nvar _default = PictorialBarSeries;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/bar/PictorialBarSeries.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/bar/PictorialBarView.js": +/*!****************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/bar/PictorialBarView.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar _symbol = __webpack_require__(/*! ../../util/symbol */ \"./node_modules/echarts/lib/util/symbol.js\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar _number = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar parsePercent = _number.parsePercent;\nvar isNumeric = _number.isNumeric;\n\nvar _helper = __webpack_require__(/*! ./helper */ \"./node_modules/echarts/lib/chart/bar/helper.js\");\n\nvar setLabel = _helper.setLabel;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'borderWidth']; // index: +isHorizontal\n\nvar LAYOUT_ATTRS = [{\n xy: 'x',\n wh: 'width',\n index: 0,\n posDesc: ['left', 'right']\n}, {\n xy: 'y',\n wh: 'height',\n index: 1,\n posDesc: ['top', 'bottom']\n}];\nvar pathForLineWidth = new graphic.Circle();\nvar BarView = echarts.extendChartView({\n type: 'pictorialBar',\n render: function (seriesModel, ecModel, api) {\n var group = this.group;\n var data = seriesModel.getData();\n var oldData = this._data;\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n var isHorizontal = !!baseAxis.isHorizontal();\n var coordSysRect = cartesian.grid.getRect();\n var opt = {\n ecSize: {\n width: api.getWidth(),\n height: api.getHeight()\n },\n seriesModel: seriesModel,\n coordSys: cartesian,\n coordSysExtent: [[coordSysRect.x, coordSysRect.x + coordSysRect.width], [coordSysRect.y, coordSysRect.y + coordSysRect.height]],\n isHorizontal: isHorizontal,\n valueDim: LAYOUT_ATTRS[+isHorizontal],\n categoryDim: LAYOUT_ATTRS[1 - isHorizontal]\n };\n data.diff(oldData).add(function (dataIndex) {\n if (!data.hasValue(dataIndex)) {\n return;\n }\n\n var itemModel = getItemModel(data, dataIndex);\n var symbolMeta = getSymbolMeta(data, dataIndex, itemModel, opt);\n var bar = createBar(data, opt, symbolMeta);\n data.setItemGraphicEl(dataIndex, bar);\n group.add(bar);\n updateCommon(bar, opt, symbolMeta);\n }).update(function (newIndex, oldIndex) {\n var bar = oldData.getItemGraphicEl(oldIndex);\n\n if (!data.hasValue(newIndex)) {\n group.remove(bar);\n return;\n }\n\n var itemModel = getItemModel(data, newIndex);\n var symbolMeta = getSymbolMeta(data, newIndex, itemModel, opt);\n var pictorialShapeStr = getShapeStr(data, symbolMeta);\n\n if (bar && pictorialShapeStr !== bar.__pictorialShapeStr) {\n group.remove(bar);\n data.setItemGraphicEl(newIndex, null);\n bar = null;\n }\n\n if (bar) {\n updateBar(bar, opt, symbolMeta);\n } else {\n bar = createBar(data, opt, symbolMeta, true);\n }\n\n data.setItemGraphicEl(newIndex, bar);\n bar.__pictorialSymbolMeta = symbolMeta; // Add back\n\n group.add(bar);\n updateCommon(bar, opt, symbolMeta);\n }).remove(function (dataIndex) {\n var bar = oldData.getItemGraphicEl(dataIndex);\n bar && removeBar(oldData, dataIndex, bar.__pictorialSymbolMeta.animationModel, bar);\n }).execute();\n this._data = data;\n return this.group;\n },\n dispose: zrUtil.noop,\n remove: function (ecModel, api) {\n var group = this.group;\n var data = this._data;\n\n if (ecModel.get('animation')) {\n if (data) {\n data.eachItemGraphicEl(function (bar) {\n removeBar(data, bar.dataIndex, ecModel, bar);\n });\n }\n } else {\n group.removeAll();\n }\n }\n}); // Set or calculate default value about symbol, and calculate layout info.\n\nfunction getSymbolMeta(data, dataIndex, itemModel, opt) {\n var layout = data.getItemLayout(dataIndex);\n var symbolRepeat = itemModel.get('symbolRepeat');\n var symbolClip = itemModel.get('symbolClip');\n var symbolPosition = itemModel.get('symbolPosition') || 'start';\n var symbolRotate = itemModel.get('symbolRotate');\n var rotation = (symbolRotate || 0) * Math.PI / 180 || 0;\n var symbolPatternSize = itemModel.get('symbolPatternSize') || 2;\n var isAnimationEnabled = itemModel.isAnimationEnabled();\n var symbolMeta = {\n dataIndex: dataIndex,\n layout: layout,\n itemModel: itemModel,\n symbolType: data.getItemVisual(dataIndex, 'symbol') || 'circle',\n color: data.getItemVisual(dataIndex, 'color'),\n symbolClip: symbolClip,\n symbolRepeat: symbolRepeat,\n symbolRepeatDirection: itemModel.get('symbolRepeatDirection'),\n symbolPatternSize: symbolPatternSize,\n rotation: rotation,\n animationModel: isAnimationEnabled ? itemModel : null,\n hoverAnimation: isAnimationEnabled && itemModel.get('hoverAnimation'),\n z2: itemModel.getShallow('z', true) || 0\n };\n prepareBarLength(itemModel, symbolRepeat, layout, opt, symbolMeta);\n prepareSymbolSize(data, dataIndex, layout, symbolRepeat, symbolClip, symbolMeta.boundingLength, symbolMeta.pxSign, symbolPatternSize, opt, symbolMeta);\n prepareLineWidth(itemModel, symbolMeta.symbolScale, rotation, opt, symbolMeta);\n var symbolSize = symbolMeta.symbolSize;\n var symbolOffset = itemModel.get('symbolOffset');\n\n if (zrUtil.isArray(symbolOffset)) {\n symbolOffset = [parsePercent(symbolOffset[0], symbolSize[0]), parsePercent(symbolOffset[1], symbolSize[1])];\n }\n\n prepareLayoutInfo(itemModel, symbolSize, layout, symbolRepeat, symbolClip, symbolOffset, symbolPosition, symbolMeta.valueLineWidth, symbolMeta.boundingLength, symbolMeta.repeatCutLength, opt, symbolMeta);\n return symbolMeta;\n} // bar length can be negative.\n\n\nfunction prepareBarLength(itemModel, symbolRepeat, layout, opt, output) {\n var valueDim = opt.valueDim;\n var symbolBoundingData = itemModel.get('symbolBoundingData');\n var valueAxis = opt.coordSys.getOtherAxis(opt.coordSys.getBaseAxis());\n var zeroPx = valueAxis.toGlobalCoord(valueAxis.dataToCoord(0));\n var pxSignIdx = 1 - +(layout[valueDim.wh] <= 0);\n var boundingLength;\n\n if (zrUtil.isArray(symbolBoundingData)) {\n var symbolBoundingExtent = [convertToCoordOnAxis(valueAxis, symbolBoundingData[0]) - zeroPx, convertToCoordOnAxis(valueAxis, symbolBoundingData[1]) - zeroPx];\n symbolBoundingExtent[1] < symbolBoundingExtent[0] && symbolBoundingExtent.reverse();\n boundingLength = symbolBoundingExtent[pxSignIdx];\n } else if (symbolBoundingData != null) {\n boundingLength = convertToCoordOnAxis(valueAxis, symbolBoundingData) - zeroPx;\n } else if (symbolRepeat) {\n boundingLength = opt.coordSysExtent[valueDim.index][pxSignIdx] - zeroPx;\n } else {\n boundingLength = layout[valueDim.wh];\n }\n\n output.boundingLength = boundingLength;\n\n if (symbolRepeat) {\n output.repeatCutLength = layout[valueDim.wh];\n }\n\n output.pxSign = boundingLength > 0 ? 1 : boundingLength < 0 ? -1 : 0;\n}\n\nfunction convertToCoordOnAxis(axis, value) {\n return axis.toGlobalCoord(axis.dataToCoord(axis.scale.parse(value)));\n} // Support ['100%', '100%']\n\n\nfunction prepareSymbolSize(data, dataIndex, layout, symbolRepeat, symbolClip, boundingLength, pxSign, symbolPatternSize, opt, output) {\n var valueDim = opt.valueDim;\n var categoryDim = opt.categoryDim;\n var categorySize = Math.abs(layout[categoryDim.wh]);\n var symbolSize = data.getItemVisual(dataIndex, 'symbolSize');\n\n if (zrUtil.isArray(symbolSize)) {\n symbolSize = symbolSize.slice();\n } else {\n if (symbolSize == null) {\n symbolSize = '100%';\n }\n\n symbolSize = [symbolSize, symbolSize];\n } // Note: percentage symbolSize (like '100%') do not consider lineWidth, because it is\n // to complicated to calculate real percent value if considering scaled lineWidth.\n // So the actual size will bigger than layout size if lineWidth is bigger than zero,\n // which can be tolerated in pictorial chart.\n\n\n symbolSize[categoryDim.index] = parsePercent(symbolSize[categoryDim.index], categorySize);\n symbolSize[valueDim.index] = parsePercent(symbolSize[valueDim.index], symbolRepeat ? categorySize : Math.abs(boundingLength));\n output.symbolSize = symbolSize; // If x or y is less than zero, show reversed shape.\n\n var symbolScale = output.symbolScale = [symbolSize[0] / symbolPatternSize, symbolSize[1] / symbolPatternSize]; // Follow convention, 'right' and 'top' is the normal scale.\n\n symbolScale[valueDim.index] *= (opt.isHorizontal ? -1 : 1) * pxSign;\n}\n\nfunction prepareLineWidth(itemModel, symbolScale, rotation, opt, output) {\n // In symbols are drawn with scale, so do not need to care about the case that width\n // or height are too small. But symbol use strokeNoScale, where acture lineWidth should\n // be calculated.\n var valueLineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0;\n\n if (valueLineWidth) {\n pathForLineWidth.attr({\n scale: symbolScale.slice(),\n rotation: rotation\n });\n pathForLineWidth.updateTransform();\n valueLineWidth /= pathForLineWidth.getLineScale();\n valueLineWidth *= symbolScale[opt.valueDim.index];\n }\n\n output.valueLineWidth = valueLineWidth;\n}\n\nfunction prepareLayoutInfo(itemModel, symbolSize, layout, symbolRepeat, symbolClip, symbolOffset, symbolPosition, valueLineWidth, boundingLength, repeatCutLength, opt, output) {\n var categoryDim = opt.categoryDim;\n var valueDim = opt.valueDim;\n var pxSign = output.pxSign;\n var unitLength = Math.max(symbolSize[valueDim.index] + valueLineWidth, 0);\n var pathLen = unitLength; // Note: rotation will not effect the layout of symbols, because user may\n // want symbols to rotate on its center, which should not be translated\n // when rotating.\n\n if (symbolRepeat) {\n var absBoundingLength = Math.abs(boundingLength);\n var symbolMargin = zrUtil.retrieve(itemModel.get('symbolMargin'), '15%') + '';\n var hasEndGap = false;\n\n if (symbolMargin.lastIndexOf('!') === symbolMargin.length - 1) {\n hasEndGap = true;\n symbolMargin = symbolMargin.slice(0, symbolMargin.length - 1);\n }\n\n symbolMargin = parsePercent(symbolMargin, symbolSize[valueDim.index]);\n var uLenWithMargin = Math.max(unitLength + symbolMargin * 2, 0); // When symbol margin is less than 0, margin at both ends will be subtracted\n // to ensure that all of the symbols will not be overflow the given area.\n\n var endFix = hasEndGap ? 0 : symbolMargin * 2; // Both final repeatTimes and final symbolMargin area calculated based on\n // boundingLength.\n\n var repeatSpecified = isNumeric(symbolRepeat);\n var repeatTimes = repeatSpecified ? symbolRepeat : toIntTimes((absBoundingLength + endFix) / uLenWithMargin); // Adjust calculate margin, to ensure each symbol is displayed\n // entirely in the given layout area.\n\n var mDiff = absBoundingLength - repeatTimes * unitLength;\n symbolMargin = mDiff / 2 / (hasEndGap ? repeatTimes : repeatTimes - 1);\n uLenWithMargin = unitLength + symbolMargin * 2;\n endFix = hasEndGap ? 0 : symbolMargin * 2; // Update repeatTimes when not all symbol will be shown.\n\n if (!repeatSpecified && symbolRepeat !== 'fixed') {\n repeatTimes = repeatCutLength ? toIntTimes((Math.abs(repeatCutLength) + endFix) / uLenWithMargin) : 0;\n }\n\n pathLen = repeatTimes * uLenWithMargin - endFix;\n output.repeatTimes = repeatTimes;\n output.symbolMargin = symbolMargin;\n }\n\n var sizeFix = pxSign * (pathLen / 2);\n var pathPosition = output.pathPosition = [];\n pathPosition[categoryDim.index] = layout[categoryDim.wh] / 2;\n pathPosition[valueDim.index] = symbolPosition === 'start' ? sizeFix : symbolPosition === 'end' ? boundingLength - sizeFix : boundingLength / 2; // 'center'\n\n if (symbolOffset) {\n pathPosition[0] += symbolOffset[0];\n pathPosition[1] += symbolOffset[1];\n }\n\n var bundlePosition = output.bundlePosition = [];\n bundlePosition[categoryDim.index] = layout[categoryDim.xy];\n bundlePosition[valueDim.index] = layout[valueDim.xy];\n var barRectShape = output.barRectShape = zrUtil.extend({}, layout);\n barRectShape[valueDim.wh] = pxSign * Math.max(Math.abs(layout[valueDim.wh]), Math.abs(pathPosition[valueDim.index] + sizeFix));\n barRectShape[categoryDim.wh] = layout[categoryDim.wh];\n var clipShape = output.clipShape = {}; // Consider that symbol may be overflow layout rect.\n\n clipShape[categoryDim.xy] = -layout[categoryDim.xy];\n clipShape[categoryDim.wh] = opt.ecSize[categoryDim.wh];\n clipShape[valueDim.xy] = 0;\n clipShape[valueDim.wh] = layout[valueDim.wh];\n}\n\nfunction createPath(symbolMeta) {\n var symbolPatternSize = symbolMeta.symbolPatternSize;\n var path = createSymbol( // Consider texture img, make a big size.\n symbolMeta.symbolType, -symbolPatternSize / 2, -symbolPatternSize / 2, symbolPatternSize, symbolPatternSize, symbolMeta.color);\n path.attr({\n culling: true\n });\n path.type !== 'image' && path.setStyle({\n strokeNoScale: true\n });\n return path;\n}\n\nfunction createOrUpdateRepeatSymbols(bar, opt, symbolMeta, isUpdate) {\n var bundle = bar.__pictorialBundle;\n var symbolSize = symbolMeta.symbolSize;\n var valueLineWidth = symbolMeta.valueLineWidth;\n var pathPosition = symbolMeta.pathPosition;\n var valueDim = opt.valueDim;\n var repeatTimes = symbolMeta.repeatTimes || 0;\n var index = 0;\n var unit = symbolSize[opt.valueDim.index] + valueLineWidth + symbolMeta.symbolMargin * 2;\n eachPath(bar, function (path) {\n path.__pictorialAnimationIndex = index;\n path.__pictorialRepeatTimes = repeatTimes;\n\n if (index < repeatTimes) {\n updateAttr(path, null, makeTarget(index), symbolMeta, isUpdate);\n } else {\n updateAttr(path, null, {\n scale: [0, 0]\n }, symbolMeta, isUpdate, function () {\n bundle.remove(path);\n });\n }\n\n updateHoverAnimation(path, symbolMeta);\n index++;\n });\n\n for (; index < repeatTimes; index++) {\n var path = createPath(symbolMeta);\n path.__pictorialAnimationIndex = index;\n path.__pictorialRepeatTimes = repeatTimes;\n bundle.add(path);\n var target = makeTarget(index);\n updateAttr(path, {\n position: target.position,\n scale: [0, 0]\n }, {\n scale: target.scale,\n rotation: target.rotation\n }, symbolMeta, isUpdate); // FIXME\n // If all emphasis/normal through action.\n\n path.on('mouseover', onMouseOver).on('mouseout', onMouseOut);\n updateHoverAnimation(path, symbolMeta);\n }\n\n function makeTarget(index) {\n var position = pathPosition.slice(); // (start && pxSign > 0) || (end && pxSign < 0): i = repeatTimes - index\n // Otherwise: i = index;\n\n var pxSign = symbolMeta.pxSign;\n var i = index;\n\n if (symbolMeta.symbolRepeatDirection === 'start' ? pxSign > 0 : pxSign < 0) {\n i = repeatTimes - 1 - index;\n }\n\n position[valueDim.index] = unit * (i - repeatTimes / 2 + 0.5) + pathPosition[valueDim.index];\n return {\n position: position,\n scale: symbolMeta.symbolScale.slice(),\n rotation: symbolMeta.rotation\n };\n }\n\n function onMouseOver() {\n eachPath(bar, function (path) {\n path.trigger('emphasis');\n });\n }\n\n function onMouseOut() {\n eachPath(bar, function (path) {\n path.trigger('normal');\n });\n }\n}\n\nfunction createOrUpdateSingleSymbol(bar, opt, symbolMeta, isUpdate) {\n var bundle = bar.__pictorialBundle;\n var mainPath = bar.__pictorialMainPath;\n\n if (!mainPath) {\n mainPath = bar.__pictorialMainPath = createPath(symbolMeta);\n bundle.add(mainPath);\n updateAttr(mainPath, {\n position: symbolMeta.pathPosition.slice(),\n scale: [0, 0],\n rotation: symbolMeta.rotation\n }, {\n scale: symbolMeta.symbolScale.slice()\n }, symbolMeta, isUpdate);\n mainPath.on('mouseover', onMouseOver).on('mouseout', onMouseOut);\n } else {\n updateAttr(mainPath, null, {\n position: symbolMeta.pathPosition.slice(),\n scale: symbolMeta.symbolScale.slice(),\n rotation: symbolMeta.rotation\n }, symbolMeta, isUpdate);\n }\n\n updateHoverAnimation(mainPath, symbolMeta);\n\n function onMouseOver() {\n this.trigger('emphasis');\n }\n\n function onMouseOut() {\n this.trigger('normal');\n }\n} // bar rect is used for label.\n\n\nfunction createOrUpdateBarRect(bar, symbolMeta, isUpdate) {\n var rectShape = zrUtil.extend({}, symbolMeta.barRectShape);\n var barRect = bar.__pictorialBarRect;\n\n if (!barRect) {\n barRect = bar.__pictorialBarRect = new graphic.Rect({\n z2: 2,\n shape: rectShape,\n silent: true,\n style: {\n stroke: 'transparent',\n fill: 'transparent',\n lineWidth: 0\n }\n });\n bar.add(barRect);\n } else {\n updateAttr(barRect, null, {\n shape: rectShape\n }, symbolMeta, isUpdate);\n }\n}\n\nfunction createOrUpdateClip(bar, opt, symbolMeta, isUpdate) {\n // If not clip, symbol will be remove and rebuilt.\n if (symbolMeta.symbolClip) {\n var clipPath = bar.__pictorialClipPath;\n var clipShape = zrUtil.extend({}, symbolMeta.clipShape);\n var valueDim = opt.valueDim;\n var animationModel = symbolMeta.animationModel;\n var dataIndex = symbolMeta.dataIndex;\n\n if (clipPath) {\n graphic.updateProps(clipPath, {\n shape: clipShape\n }, animationModel, dataIndex);\n } else {\n clipShape[valueDim.wh] = 0;\n clipPath = new graphic.Rect({\n shape: clipShape\n });\n\n bar.__pictorialBundle.setClipPath(clipPath);\n\n bar.__pictorialClipPath = clipPath;\n var target = {};\n target[valueDim.wh] = symbolMeta.clipShape[valueDim.wh];\n graphic[isUpdate ? 'updateProps' : 'initProps'](clipPath, {\n shape: target\n }, animationModel, dataIndex);\n }\n }\n}\n\nfunction getItemModel(data, dataIndex) {\n var itemModel = data.getItemModel(dataIndex);\n itemModel.getAnimationDelayParams = getAnimationDelayParams;\n itemModel.isAnimationEnabled = isAnimationEnabled;\n return itemModel;\n}\n\nfunction getAnimationDelayParams(path) {\n // The order is the same as the z-order, see `symbolRepeatDiretion`.\n return {\n index: path.__pictorialAnimationIndex,\n count: path.__pictorialRepeatTimes\n };\n}\n\nfunction isAnimationEnabled() {\n // `animation` prop can be set on itemModel in pictorial bar chart.\n return this.parentModel.isAnimationEnabled() && !!this.getShallow('animation');\n}\n\nfunction updateHoverAnimation(path, symbolMeta) {\n path.off('emphasis').off('normal');\n var scale = symbolMeta.symbolScale.slice();\n symbolMeta.hoverAnimation && path.on('emphasis', function () {\n this.animateTo({\n scale: [scale[0] * 1.1, scale[1] * 1.1]\n }, 400, 'elasticOut');\n }).on('normal', function () {\n this.animateTo({\n scale: scale.slice()\n }, 400, 'elasticOut');\n });\n}\n\nfunction createBar(data, opt, symbolMeta, isUpdate) {\n // bar is the main element for each data.\n var bar = new graphic.Group(); // bundle is used for location and clip.\n\n var bundle = new graphic.Group();\n bar.add(bundle);\n bar.__pictorialBundle = bundle;\n bundle.attr('position', symbolMeta.bundlePosition.slice());\n\n if (symbolMeta.symbolRepeat) {\n createOrUpdateRepeatSymbols(bar, opt, symbolMeta);\n } else {\n createOrUpdateSingleSymbol(bar, opt, symbolMeta);\n }\n\n createOrUpdateBarRect(bar, symbolMeta, isUpdate);\n createOrUpdateClip(bar, opt, symbolMeta, isUpdate);\n bar.__pictorialShapeStr = getShapeStr(data, symbolMeta);\n bar.__pictorialSymbolMeta = symbolMeta;\n return bar;\n}\n\nfunction updateBar(bar, opt, symbolMeta) {\n var animationModel = symbolMeta.animationModel;\n var dataIndex = symbolMeta.dataIndex;\n var bundle = bar.__pictorialBundle;\n graphic.updateProps(bundle, {\n position: symbolMeta.bundlePosition.slice()\n }, animationModel, dataIndex);\n\n if (symbolMeta.symbolRepeat) {\n createOrUpdateRepeatSymbols(bar, opt, symbolMeta, true);\n } else {\n createOrUpdateSingleSymbol(bar, opt, symbolMeta, true);\n }\n\n createOrUpdateBarRect(bar, symbolMeta, true);\n createOrUpdateClip(bar, opt, symbolMeta, true);\n}\n\nfunction removeBar(data, dataIndex, animationModel, bar) {\n // Not show text when animating\n var labelRect = bar.__pictorialBarRect;\n labelRect && (labelRect.style.text = null);\n var pathes = [];\n eachPath(bar, function (path) {\n pathes.push(path);\n });\n bar.__pictorialMainPath && pathes.push(bar.__pictorialMainPath); // I do not find proper remove animation for clip yet.\n\n bar.__pictorialClipPath && (animationModel = null);\n zrUtil.each(pathes, function (path) {\n graphic.updateProps(path, {\n scale: [0, 0]\n }, animationModel, dataIndex, function () {\n bar.parent && bar.parent.remove(bar);\n });\n });\n data.setItemGraphicEl(dataIndex, null);\n}\n\nfunction getShapeStr(data, symbolMeta) {\n return [data.getItemVisual(symbolMeta.dataIndex, 'symbol') || 'none', !!symbolMeta.symbolRepeat, !!symbolMeta.symbolClip].join(':');\n}\n\nfunction eachPath(bar, cb, context) {\n // Do not use Group#eachChild, because it do not support remove.\n zrUtil.each(bar.__pictorialBundle.children(), function (el) {\n el !== bar.__pictorialBarRect && cb.call(context, el);\n });\n}\n\nfunction updateAttr(el, immediateAttrs, animationAttrs, symbolMeta, isUpdate, cb) {\n immediateAttrs && el.attr(immediateAttrs); // when symbolCip used, only clip path has init animation, otherwise it would be weird effect.\n\n if (symbolMeta.symbolClip && !isUpdate) {\n animationAttrs && el.attr(animationAttrs);\n } else {\n animationAttrs && graphic[isUpdate ? 'updateProps' : 'initProps'](el, animationAttrs, symbolMeta.animationModel, symbolMeta.dataIndex, cb);\n }\n}\n\nfunction updateCommon(bar, opt, symbolMeta) {\n var color = symbolMeta.color;\n var dataIndex = symbolMeta.dataIndex;\n var itemModel = symbolMeta.itemModel; // Color must be excluded.\n // Because symbol provide setColor individually to set fill and stroke\n\n var normalStyle = itemModel.getModel('itemStyle').getItemStyle(['color']);\n var hoverStyle = itemModel.getModel('emphasis.itemStyle').getItemStyle();\n var cursorStyle = itemModel.getShallow('cursor');\n eachPath(bar, function (path) {\n // PENDING setColor should be before setStyle!!!\n path.setColor(color);\n path.setStyle(zrUtil.defaults({\n fill: color,\n opacity: symbolMeta.opacity\n }, normalStyle));\n graphic.setHoverStyle(path, hoverStyle);\n cursorStyle && (path.cursor = cursorStyle);\n path.z2 = symbolMeta.z2;\n });\n var barRectHoverStyle = {};\n var barPositionOutside = opt.valueDim.posDesc[+(symbolMeta.boundingLength > 0)];\n var barRect = bar.__pictorialBarRect;\n setLabel(barRect.style, barRectHoverStyle, itemModel, color, opt.seriesModel, dataIndex, barPositionOutside);\n graphic.setHoverStyle(barRect, barRectHoverStyle);\n}\n\nfunction toIntTimes(times) {\n var roundedTimes = Math.round(times); // Escapse accurate error\n\n return Math.abs(times - roundedTimes) < 1e-4 ? roundedTimes : Math.ceil(times);\n}\n\nvar _default = BarView;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/bar/PictorialBarView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/bar/barItemStyle.js": +/*!************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/bar/barItemStyle.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar makeStyleMapper = __webpack_require__(/*! ../../model/mixin/makeStyleMapper */ \"./node_modules/echarts/lib/model/mixin/makeStyleMapper.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar getBarItemStyle = makeStyleMapper([['fill', 'color'], ['stroke', 'borderColor'], ['lineWidth', 'borderWidth'], // Compatitable with 2\n['stroke', 'barBorderColor'], ['lineWidth', 'barBorderWidth'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor']]);\nvar _default = {\n getBarItemStyle: function (excludes) {\n var style = getBarItemStyle(this, excludes);\n\n if (this.getBorderLineDash) {\n var lineDash = this.getBorderLineDash();\n lineDash && (style.lineDash = lineDash);\n }\n\n return style;\n }\n};\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/bar/barItemStyle.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/bar/helper.js": +/*!******************************************************!*\ + !*** ./node_modules/echarts/lib/chart/bar/helper.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar _labelHelper = __webpack_require__(/*! ../helper/labelHelper */ \"./node_modules/echarts/lib/chart/helper/labelHelper.js\");\n\nvar getDefaultLabel = _labelHelper.getDefaultLabel;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction setLabel(normalStyle, hoverStyle, itemModel, color, seriesModel, dataIndex, labelPositionOutside) {\n var labelModel = itemModel.getModel('label');\n var hoverLabelModel = itemModel.getModel('emphasis.label');\n graphic.setLabelStyle(normalStyle, hoverStyle, labelModel, hoverLabelModel, {\n labelFetcher: seriesModel,\n labelDataIndex: dataIndex,\n defaultText: getDefaultLabel(seriesModel.getData(), dataIndex),\n isRectText: true,\n autoColor: color\n });\n fixPosition(normalStyle);\n fixPosition(hoverStyle);\n}\n\nfunction fixPosition(style, labelPositionOutside) {\n if (style.textPosition === 'outside') {\n style.textPosition = labelPositionOutside;\n }\n}\n\nexports.setLabel = setLabel;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/bar/helper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/boxplot.js": +/*!***************************************************!*\ + !*** ./node_modules/echarts/lib/chart/boxplot.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n__webpack_require__(/*! ./boxplot/BoxplotSeries */ \"./node_modules/echarts/lib/chart/boxplot/BoxplotSeries.js\");\n\n__webpack_require__(/*! ./boxplot/BoxplotView */ \"./node_modules/echarts/lib/chart/boxplot/BoxplotView.js\");\n\nvar boxplotVisual = __webpack_require__(/*! ./boxplot/boxplotVisual */ \"./node_modules/echarts/lib/chart/boxplot/boxplotVisual.js\");\n\nvar boxplotLayout = __webpack_require__(/*! ./boxplot/boxplotLayout */ \"./node_modules/echarts/lib/chart/boxplot/boxplotLayout.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerVisual(boxplotVisual);\necharts.registerLayout(boxplotLayout);\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/boxplot.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/boxplot/BoxplotSeries.js": +/*!*****************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/boxplot/BoxplotSeries.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar SeriesModel = __webpack_require__(/*! ../../model/Series */ \"./node_modules/echarts/lib/model/Series.js\");\n\nvar _whiskerBoxCommon = __webpack_require__(/*! ../helper/whiskerBoxCommon */ \"./node_modules/echarts/lib/chart/helper/whiskerBoxCommon.js\");\n\nvar seriesModelMixin = _whiskerBoxCommon.seriesModelMixin;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar BoxplotSeries = SeriesModel.extend({\n type: 'series.boxplot',\n dependencies: ['xAxis', 'yAxis', 'grid'],\n // TODO\n // box width represents group size, so dimension should have 'size'.\n\n /**\n * @see \n * The meanings of 'min' and 'max' depend on user,\n * and echarts do not need to know it.\n * @readOnly\n */\n defaultValueDimensions: [{\n name: 'min',\n defaultTooltip: true\n }, {\n name: 'Q1',\n defaultTooltip: true\n }, {\n name: 'median',\n defaultTooltip: true\n }, {\n name: 'Q3',\n defaultTooltip: true\n }, {\n name: 'max',\n defaultTooltip: true\n }],\n\n /**\n * @type {Array.}\n * @readOnly\n */\n dimensions: null,\n\n /**\n * @override\n */\n defaultOption: {\n zlevel: 0,\n // 一级层叠\n z: 2,\n // 二级层叠\n coordinateSystem: 'cartesian2d',\n legendHoverLink: true,\n hoverAnimation: true,\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n layout: null,\n // 'horizontal' or 'vertical'\n boxWidth: [7, 50],\n // [min, max] can be percent of band width.\n itemStyle: {\n color: '#fff',\n borderWidth: 1\n },\n emphasis: {\n itemStyle: {\n borderWidth: 2,\n shadowBlur: 5,\n shadowOffsetX: 2,\n shadowOffsetY: 2,\n shadowColor: 'rgba(0,0,0,0.4)'\n }\n },\n animationEasing: 'elasticOut',\n animationDuration: 800\n }\n});\nzrUtil.mixin(BoxplotSeries, seriesModelMixin, true);\nvar _default = BoxplotSeries;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/boxplot/BoxplotSeries.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/boxplot/BoxplotView.js": +/*!***************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/boxplot/BoxplotView.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar ChartView = __webpack_require__(/*! ../../view/Chart */ \"./node_modules/echarts/lib/view/Chart.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar Path = __webpack_require__(/*! zrender/lib/graphic/Path */ \"./node_modules/zrender/lib/graphic/Path.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Update common properties\nvar NORMAL_ITEM_STYLE_PATH = ['itemStyle'];\nvar EMPHASIS_ITEM_STYLE_PATH = ['emphasis', 'itemStyle'];\nvar BoxplotView = ChartView.extend({\n type: 'boxplot',\n render: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n var group = this.group;\n var oldData = this._data; // There is no old data only when first rendering or switching from\n // stream mode to normal mode, where previous elements should be removed.\n\n if (!this._data) {\n group.removeAll();\n }\n\n var constDim = seriesModel.get('layout') === 'horizontal' ? 1 : 0;\n data.diff(oldData).add(function (newIdx) {\n if (data.hasValue(newIdx)) {\n var itemLayout = data.getItemLayout(newIdx);\n var symbolEl = createNormalBox(itemLayout, data, newIdx, constDim, true);\n data.setItemGraphicEl(newIdx, symbolEl);\n group.add(symbolEl);\n }\n }).update(function (newIdx, oldIdx) {\n var symbolEl = oldData.getItemGraphicEl(oldIdx); // Empty data\n\n if (!data.hasValue(newIdx)) {\n group.remove(symbolEl);\n return;\n }\n\n var itemLayout = data.getItemLayout(newIdx);\n\n if (!symbolEl) {\n symbolEl = createNormalBox(itemLayout, data, newIdx, constDim);\n } else {\n updateNormalBoxData(itemLayout, symbolEl, data, newIdx);\n }\n\n group.add(symbolEl);\n data.setItemGraphicEl(newIdx, symbolEl);\n }).remove(function (oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n el && group.remove(el);\n }).execute();\n this._data = data;\n },\n remove: function (ecModel) {\n var group = this.group;\n var data = this._data;\n this._data = null;\n data && data.eachItemGraphicEl(function (el) {\n el && group.remove(el);\n });\n },\n dispose: zrUtil.noop\n});\nvar BoxPath = Path.extend({\n type: 'boxplotBoxPath',\n shape: {},\n buildPath: function (ctx, shape) {\n var ends = shape.points;\n var i = 0;\n ctx.moveTo(ends[i][0], ends[i][1]);\n i++;\n\n for (; i < 4; i++) {\n ctx.lineTo(ends[i][0], ends[i][1]);\n }\n\n ctx.closePath();\n\n for (; i < ends.length; i++) {\n ctx.moveTo(ends[i][0], ends[i][1]);\n i++;\n ctx.lineTo(ends[i][0], ends[i][1]);\n }\n }\n});\n\nfunction createNormalBox(itemLayout, data, dataIndex, constDim, isInit) {\n var ends = itemLayout.ends;\n var el = new BoxPath({\n shape: {\n points: isInit ? transInit(ends, constDim, itemLayout) : ends\n }\n });\n updateNormalBoxData(itemLayout, el, data, dataIndex, isInit);\n return el;\n}\n\nfunction updateNormalBoxData(itemLayout, el, data, dataIndex, isInit) {\n var seriesModel = data.hostModel;\n var updateMethod = graphic[isInit ? 'initProps' : 'updateProps'];\n updateMethod(el, {\n shape: {\n points: itemLayout.ends\n }\n }, seriesModel, dataIndex);\n var itemModel = data.getItemModel(dataIndex);\n var normalItemStyleModel = itemModel.getModel(NORMAL_ITEM_STYLE_PATH);\n var borderColor = data.getItemVisual(dataIndex, 'color'); // Exclude borderColor.\n\n var itemStyle = normalItemStyleModel.getItemStyle(['borderColor']);\n itemStyle.stroke = borderColor;\n itemStyle.strokeNoScale = true;\n el.useStyle(itemStyle);\n el.z2 = 100;\n var hoverStyle = itemModel.getModel(EMPHASIS_ITEM_STYLE_PATH).getItemStyle();\n graphic.setHoverStyle(el, hoverStyle);\n}\n\nfunction transInit(points, dim, itemLayout) {\n return zrUtil.map(points, function (point) {\n point = point.slice();\n point[dim] = itemLayout.initBaseline;\n return point;\n });\n}\n\nvar _default = BoxplotView;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/boxplot/BoxplotView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/boxplot/boxplotLayout.js": +/*!*****************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/boxplot/boxplotLayout.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar _number = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar parsePercent = _number.parsePercent;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\n\nfunction _default(ecModel) {\n var groupResult = groupSeriesByAxis(ecModel);\n each(groupResult, function (groupItem) {\n var seriesModels = groupItem.seriesModels;\n\n if (!seriesModels.length) {\n return;\n }\n\n calculateBase(groupItem);\n each(seriesModels, function (seriesModel, idx) {\n layoutSingleSeries(seriesModel, groupItem.boxOffsetList[idx], groupItem.boxWidthList[idx]);\n });\n });\n}\n/**\n * Group series by axis.\n */\n\n\nfunction groupSeriesByAxis(ecModel) {\n var result = [];\n var axisList = [];\n ecModel.eachSeriesByType('boxplot', function (seriesModel) {\n var baseAxis = seriesModel.getBaseAxis();\n var idx = zrUtil.indexOf(axisList, baseAxis);\n\n if (idx < 0) {\n idx = axisList.length;\n axisList[idx] = baseAxis;\n result[idx] = {\n axis: baseAxis,\n seriesModels: []\n };\n }\n\n result[idx].seriesModels.push(seriesModel);\n });\n return result;\n}\n/**\n * Calculate offset and box width for each series.\n */\n\n\nfunction calculateBase(groupItem) {\n var extent;\n var baseAxis = groupItem.axis;\n var seriesModels = groupItem.seriesModels;\n var seriesCount = seriesModels.length;\n var boxWidthList = groupItem.boxWidthList = [];\n var boxOffsetList = groupItem.boxOffsetList = [];\n var boundList = [];\n var bandWidth;\n\n if (baseAxis.type === 'category') {\n bandWidth = baseAxis.getBandWidth();\n } else {\n var maxDataCount = 0;\n each(seriesModels, function (seriesModel) {\n maxDataCount = Math.max(maxDataCount, seriesModel.getData().count());\n });\n extent = baseAxis.getExtent(), Math.abs(extent[1] - extent[0]) / maxDataCount;\n }\n\n each(seriesModels, function (seriesModel) {\n var boxWidthBound = seriesModel.get('boxWidth');\n\n if (!zrUtil.isArray(boxWidthBound)) {\n boxWidthBound = [boxWidthBound, boxWidthBound];\n }\n\n boundList.push([parsePercent(boxWidthBound[0], bandWidth) || 0, parsePercent(boxWidthBound[1], bandWidth) || 0]);\n });\n var availableWidth = bandWidth * 0.8 - 2;\n var boxGap = availableWidth / seriesCount * 0.3;\n var boxWidth = (availableWidth - boxGap * (seriesCount - 1)) / seriesCount;\n var base = boxWidth / 2 - availableWidth / 2;\n each(seriesModels, function (seriesModel, idx) {\n boxOffsetList.push(base);\n base += boxGap + boxWidth;\n boxWidthList.push(Math.min(Math.max(boxWidth, boundList[idx][0]), boundList[idx][1]));\n });\n}\n/**\n * Calculate points location for each series.\n */\n\n\nfunction layoutSingleSeries(seriesModel, offset, boxWidth) {\n var coordSys = seriesModel.coordinateSystem;\n var data = seriesModel.getData();\n var halfWidth = boxWidth / 2;\n var cDimIdx = seriesModel.get('layout') === 'horizontal' ? 0 : 1;\n var vDimIdx = 1 - cDimIdx;\n var coordDims = ['x', 'y'];\n var cDim = data.mapDimension(coordDims[cDimIdx]);\n var vDims = data.mapDimension(coordDims[vDimIdx], true);\n\n if (cDim == null || vDims.length < 5) {\n return;\n }\n\n for (var dataIndex = 0; dataIndex < data.count(); dataIndex++) {\n var axisDimVal = data.get(cDim, dataIndex);\n var median = getPoint(axisDimVal, vDims[2], dataIndex);\n var end1 = getPoint(axisDimVal, vDims[0], dataIndex);\n var end2 = getPoint(axisDimVal, vDims[1], dataIndex);\n var end4 = getPoint(axisDimVal, vDims[3], dataIndex);\n var end5 = getPoint(axisDimVal, vDims[4], dataIndex);\n var ends = [];\n addBodyEnd(ends, end2, 0);\n addBodyEnd(ends, end4, 1);\n ends.push(end1, end2, end5, end4);\n layEndLine(ends, end1);\n layEndLine(ends, end5);\n layEndLine(ends, median);\n data.setItemLayout(dataIndex, {\n initBaseline: median[vDimIdx],\n ends: ends\n });\n }\n\n function getPoint(axisDimVal, dimIdx, dataIndex) {\n var val = data.get(dimIdx, dataIndex);\n var p = [];\n p[cDimIdx] = axisDimVal;\n p[vDimIdx] = val;\n var point;\n\n if (isNaN(axisDimVal) || isNaN(val)) {\n point = [NaN, NaN];\n } else {\n point = coordSys.dataToPoint(p);\n point[cDimIdx] += offset;\n }\n\n return point;\n }\n\n function addBodyEnd(ends, point, start) {\n var point1 = point.slice();\n var point2 = point.slice();\n point1[cDimIdx] += halfWidth;\n point2[cDimIdx] -= halfWidth;\n start ? ends.push(point1, point2) : ends.push(point2, point1);\n }\n\n function layEndLine(ends, endCenter) {\n var from = endCenter.slice();\n var to = endCenter.slice();\n from[cDimIdx] -= halfWidth;\n to[cDimIdx] += halfWidth;\n ends.push(from, to);\n }\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/boxplot/boxplotLayout.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/boxplot/boxplotVisual.js": +/*!*****************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/boxplot/boxplotVisual.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar borderColorQuery = ['itemStyle', 'borderColor'];\n\nfunction _default(ecModel, api) {\n var globalColors = ecModel.get('color');\n ecModel.eachRawSeriesByType('boxplot', function (seriesModel) {\n var defaulColor = globalColors[seriesModel.seriesIndex % globalColors.length];\n var data = seriesModel.getData();\n data.setVisual({\n legendSymbol: 'roundRect',\n // Use name 'color' but not 'borderColor' for legend usage and\n // visual coding from other component like dataRange.\n color: seriesModel.get(borderColorQuery) || defaulColor\n }); // Only visible series has each data be visual encoded\n\n if (!ecModel.isSeriesFiltered(seriesModel)) {\n data.each(function (idx) {\n var itemModel = data.getItemModel(idx);\n data.setItemVisual(idx, {\n color: itemModel.get(borderColorQuery, true)\n });\n });\n }\n });\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/boxplot/boxplotVisual.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/candlestick.js": +/*!*******************************************************!*\ + !*** ./node_modules/echarts/lib/chart/candlestick.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n__webpack_require__(/*! ./candlestick/CandlestickSeries */ \"./node_modules/echarts/lib/chart/candlestick/CandlestickSeries.js\");\n\n__webpack_require__(/*! ./candlestick/CandlestickView */ \"./node_modules/echarts/lib/chart/candlestick/CandlestickView.js\");\n\nvar preprocessor = __webpack_require__(/*! ./candlestick/preprocessor */ \"./node_modules/echarts/lib/chart/candlestick/preprocessor.js\");\n\nvar candlestickVisual = __webpack_require__(/*! ./candlestick/candlestickVisual */ \"./node_modules/echarts/lib/chart/candlestick/candlestickVisual.js\");\n\nvar candlestickLayout = __webpack_require__(/*! ./candlestick/candlestickLayout */ \"./node_modules/echarts/lib/chart/candlestick/candlestickLayout.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerPreprocessor(preprocessor);\necharts.registerVisual(candlestickVisual);\necharts.registerLayout(candlestickLayout);\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/candlestick.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/candlestick/CandlestickSeries.js": +/*!*************************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/candlestick/CandlestickSeries.js ***! + \*************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar SeriesModel = __webpack_require__(/*! ../../model/Series */ \"./node_modules/echarts/lib/model/Series.js\");\n\nvar _whiskerBoxCommon = __webpack_require__(/*! ../helper/whiskerBoxCommon */ \"./node_modules/echarts/lib/chart/helper/whiskerBoxCommon.js\");\n\nvar seriesModelMixin = _whiskerBoxCommon.seriesModelMixin;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar CandlestickSeries = SeriesModel.extend({\n type: 'series.candlestick',\n dependencies: ['xAxis', 'yAxis', 'grid'],\n\n /**\n * @readOnly\n */\n defaultValueDimensions: [{\n name: 'open',\n defaultTooltip: true\n }, {\n name: 'close',\n defaultTooltip: true\n }, {\n name: 'lowest',\n defaultTooltip: true\n }, {\n name: 'highest',\n defaultTooltip: true\n }],\n\n /**\n * @type {Array.}\n * @readOnly\n */\n dimensions: null,\n\n /**\n * @override\n */\n defaultOption: {\n zlevel: 0,\n z: 2,\n coordinateSystem: 'cartesian2d',\n legendHoverLink: true,\n hoverAnimation: true,\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n layout: null,\n // 'horizontal' or 'vertical'\n clip: true,\n itemStyle: {\n color: '#c23531',\n // 阳线 positive\n color0: '#314656',\n // 阴线 negative '#c23531', '#314656'\n borderWidth: 1,\n // FIXME\n // ec2中使用的是lineStyle.color 和 lineStyle.color0\n borderColor: '#c23531',\n borderColor0: '#314656'\n },\n emphasis: {\n itemStyle: {\n borderWidth: 2\n }\n },\n barMaxWidth: null,\n barMinWidth: null,\n barWidth: null,\n large: true,\n largeThreshold: 600,\n progressive: 3e3,\n progressiveThreshold: 1e4,\n progressiveChunkMode: 'mod',\n animationUpdate: false,\n animationEasing: 'linear',\n animationDuration: 300\n },\n\n /**\n * Get dimension for shadow in dataZoom\n * @return {string} dimension name\n */\n getShadowDim: function () {\n return 'open';\n },\n brushSelector: function (dataIndex, data, selectors) {\n var itemLayout = data.getItemLayout(dataIndex);\n return itemLayout && selectors.rect(itemLayout.brushRect);\n }\n});\nzrUtil.mixin(CandlestickSeries, seriesModelMixin, true);\nvar _default = CandlestickSeries;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/candlestick/CandlestickSeries.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/candlestick/CandlestickView.js": +/*!***********************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/candlestick/CandlestickView.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar ChartView = __webpack_require__(/*! ../../view/Chart */ \"./node_modules/echarts/lib/view/Chart.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar Path = __webpack_require__(/*! zrender/lib/graphic/Path */ \"./node_modules/zrender/lib/graphic/Path.js\");\n\nvar _createClipPathFromCoordSys = __webpack_require__(/*! ../helper/createClipPathFromCoordSys */ \"./node_modules/echarts/lib/chart/helper/createClipPathFromCoordSys.js\");\n\nvar createClipPath = _createClipPathFromCoordSys.createClipPath;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar NORMAL_ITEM_STYLE_PATH = ['itemStyle'];\nvar EMPHASIS_ITEM_STYLE_PATH = ['emphasis', 'itemStyle'];\nvar SKIP_PROPS = ['color', 'color0', 'borderColor', 'borderColor0'];\nvar CandlestickView = ChartView.extend({\n type: 'candlestick',\n render: function (seriesModel, ecModel, api) {\n // If there is clipPath created in large mode. Remove it.\n this.group.removeClipPath();\n\n this._updateDrawMode(seriesModel);\n\n this._isLargeDraw ? this._renderLarge(seriesModel) : this._renderNormal(seriesModel);\n },\n incrementalPrepareRender: function (seriesModel, ecModel, api) {\n this._clear();\n\n this._updateDrawMode(seriesModel);\n },\n incrementalRender: function (params, seriesModel, ecModel, api) {\n this._isLargeDraw ? this._incrementalRenderLarge(params, seriesModel) : this._incrementalRenderNormal(params, seriesModel);\n },\n _updateDrawMode: function (seriesModel) {\n var isLargeDraw = seriesModel.pipelineContext.large;\n\n if (this._isLargeDraw == null || isLargeDraw ^ this._isLargeDraw) {\n this._isLargeDraw = isLargeDraw;\n\n this._clear();\n }\n },\n _renderNormal: function (seriesModel) {\n var data = seriesModel.getData();\n var oldData = this._data;\n var group = this.group;\n var isSimpleBox = data.getLayout('isSimpleBox');\n var needsClip = seriesModel.get('clip', true);\n var coord = seriesModel.coordinateSystem;\n var clipArea = coord.getArea && coord.getArea(); // There is no old data only when first rendering or switching from\n // stream mode to normal mode, where previous elements should be removed.\n\n if (!this._data) {\n group.removeAll();\n }\n\n data.diff(oldData).add(function (newIdx) {\n if (data.hasValue(newIdx)) {\n var el;\n var itemLayout = data.getItemLayout(newIdx);\n\n if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) {\n return;\n }\n\n el = createNormalBox(itemLayout, newIdx, true);\n graphic.initProps(el, {\n shape: {\n points: itemLayout.ends\n }\n }, seriesModel, newIdx);\n setBoxCommon(el, data, newIdx, isSimpleBox);\n group.add(el);\n data.setItemGraphicEl(newIdx, el);\n }\n }).update(function (newIdx, oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx); // Empty data\n\n if (!data.hasValue(newIdx)) {\n group.remove(el);\n return;\n }\n\n var itemLayout = data.getItemLayout(newIdx);\n\n if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) {\n group.remove(el);\n return;\n }\n\n if (!el) {\n el = createNormalBox(itemLayout, newIdx);\n } else {\n graphic.updateProps(el, {\n shape: {\n points: itemLayout.ends\n }\n }, seriesModel, newIdx);\n }\n\n setBoxCommon(el, data, newIdx, isSimpleBox);\n group.add(el);\n data.setItemGraphicEl(newIdx, el);\n }).remove(function (oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n el && group.remove(el);\n }).execute();\n this._data = data;\n },\n _renderLarge: function (seriesModel) {\n this._clear();\n\n createLarge(seriesModel, this.group);\n var clipPath = seriesModel.get('clip', true) ? createClipPath(seriesModel.coordinateSystem, false, seriesModel) : null;\n\n if (clipPath) {\n this.group.setClipPath(clipPath);\n } else {\n this.group.removeClipPath();\n }\n },\n _incrementalRenderNormal: function (params, seriesModel) {\n var data = seriesModel.getData();\n var isSimpleBox = data.getLayout('isSimpleBox');\n var dataIndex;\n\n while ((dataIndex = params.next()) != null) {\n var el;\n var itemLayout = data.getItemLayout(dataIndex);\n el = createNormalBox(itemLayout, dataIndex);\n setBoxCommon(el, data, dataIndex, isSimpleBox);\n el.incremental = true;\n this.group.add(el);\n }\n },\n _incrementalRenderLarge: function (params, seriesModel) {\n createLarge(seriesModel, this.group, true);\n },\n remove: function (ecModel) {\n this._clear();\n },\n _clear: function () {\n this.group.removeAll();\n this._data = null;\n },\n dispose: zrUtil.noop\n});\nvar NormalBoxPath = Path.extend({\n type: 'normalCandlestickBox',\n shape: {},\n buildPath: function (ctx, shape) {\n var ends = shape.points;\n\n if (this.__simpleBox) {\n ctx.moveTo(ends[4][0], ends[4][1]);\n ctx.lineTo(ends[6][0], ends[6][1]);\n } else {\n ctx.moveTo(ends[0][0], ends[0][1]);\n ctx.lineTo(ends[1][0], ends[1][1]);\n ctx.lineTo(ends[2][0], ends[2][1]);\n ctx.lineTo(ends[3][0], ends[3][1]);\n ctx.closePath();\n ctx.moveTo(ends[4][0], ends[4][1]);\n ctx.lineTo(ends[5][0], ends[5][1]);\n ctx.moveTo(ends[6][0], ends[6][1]);\n ctx.lineTo(ends[7][0], ends[7][1]);\n }\n }\n});\n\nfunction createNormalBox(itemLayout, dataIndex, isInit) {\n var ends = itemLayout.ends;\n return new NormalBoxPath({\n shape: {\n points: isInit ? transInit(ends, itemLayout) : ends\n },\n z2: 100\n });\n}\n\nfunction isNormalBoxClipped(clipArea, itemLayout) {\n var clipped = true;\n\n for (var i = 0; i < itemLayout.ends.length; i++) {\n // If any point are in the region.\n if (clipArea.contain(itemLayout.ends[i][0], itemLayout.ends[i][1])) {\n clipped = false;\n break;\n }\n }\n\n return clipped;\n}\n\nfunction setBoxCommon(el, data, dataIndex, isSimpleBox) {\n var itemModel = data.getItemModel(dataIndex);\n var normalItemStyleModel = itemModel.getModel(NORMAL_ITEM_STYLE_PATH);\n var color = data.getItemVisual(dataIndex, 'color');\n var borderColor = data.getItemVisual(dataIndex, 'borderColor') || color; // Color must be excluded.\n // Because symbol provide setColor individually to set fill and stroke\n\n var itemStyle = normalItemStyleModel.getItemStyle(SKIP_PROPS);\n el.useStyle(itemStyle);\n el.style.strokeNoScale = true;\n el.style.fill = color;\n el.style.stroke = borderColor;\n el.__simpleBox = isSimpleBox;\n var hoverStyle = itemModel.getModel(EMPHASIS_ITEM_STYLE_PATH).getItemStyle();\n graphic.setHoverStyle(el, hoverStyle);\n}\n\nfunction transInit(points, itemLayout) {\n return zrUtil.map(points, function (point) {\n point = point.slice();\n point[1] = itemLayout.initBaseline;\n return point;\n });\n}\n\nvar LargeBoxPath = Path.extend({\n type: 'largeCandlestickBox',\n shape: {},\n buildPath: function (ctx, shape) {\n // Drawing lines is more efficient than drawing\n // a whole line or drawing rects.\n var points = shape.points;\n\n for (var i = 0; i < points.length;) {\n if (this.__sign === points[i++]) {\n var x = points[i++];\n ctx.moveTo(x, points[i++]);\n ctx.lineTo(x, points[i++]);\n } else {\n i += 3;\n }\n }\n }\n});\n\nfunction createLarge(seriesModel, group, incremental) {\n var data = seriesModel.getData();\n var largePoints = data.getLayout('largePoints');\n var elP = new LargeBoxPath({\n shape: {\n points: largePoints\n },\n __sign: 1\n });\n group.add(elP);\n var elN = new LargeBoxPath({\n shape: {\n points: largePoints\n },\n __sign: -1\n });\n group.add(elN);\n setLargeStyle(1, elP, seriesModel, data);\n setLargeStyle(-1, elN, seriesModel, data);\n\n if (incremental) {\n elP.incremental = true;\n elN.incremental = true;\n }\n}\n\nfunction setLargeStyle(sign, el, seriesModel, data) {\n var suffix = sign > 0 ? 'P' : 'N';\n var borderColor = data.getVisual('borderColor' + suffix) || data.getVisual('color' + suffix); // Color must be excluded.\n // Because symbol provide setColor individually to set fill and stroke\n\n var itemStyle = seriesModel.getModel(NORMAL_ITEM_STYLE_PATH).getItemStyle(SKIP_PROPS);\n el.useStyle(itemStyle);\n el.style.fill = null;\n el.style.stroke = borderColor; // No different\n // el.style.lineWidth = .5;\n}\n\nvar _default = CandlestickView;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/candlestick/CandlestickView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/candlestick/candlestickLayout.js": +/*!*************************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/candlestick/candlestickLayout.js ***! + \*************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar subPixelOptimize = _graphic.subPixelOptimize;\n\nvar createRenderPlanner = __webpack_require__(/*! ../helper/createRenderPlanner */ \"./node_modules/echarts/lib/chart/helper/createRenderPlanner.js\");\n\nvar _number = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar retrieve2 = _util.retrieve2;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float32Array */\nvar LargeArr = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nvar _default = {\n seriesType: 'candlestick',\n plan: createRenderPlanner(),\n reset: function (seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n var data = seriesModel.getData();\n var candleWidth = calculateCandleWidth(seriesModel, data);\n var cDimIdx = 0;\n var vDimIdx = 1;\n var coordDims = ['x', 'y'];\n var cDim = data.mapDimension(coordDims[cDimIdx]);\n var vDims = data.mapDimension(coordDims[vDimIdx], true);\n var openDim = vDims[0];\n var closeDim = vDims[1];\n var lowestDim = vDims[2];\n var highestDim = vDims[3];\n data.setLayout({\n candleWidth: candleWidth,\n // The value is experimented visually.\n isSimpleBox: candleWidth <= 1.3\n });\n\n if (cDim == null || vDims.length < 4) {\n return;\n }\n\n return {\n progress: seriesModel.pipelineContext.large ? largeProgress : normalProgress\n };\n\n function normalProgress(params, data) {\n var dataIndex;\n\n while ((dataIndex = params.next()) != null) {\n var axisDimVal = data.get(cDim, dataIndex);\n var openVal = data.get(openDim, dataIndex);\n var closeVal = data.get(closeDim, dataIndex);\n var lowestVal = data.get(lowestDim, dataIndex);\n var highestVal = data.get(highestDim, dataIndex);\n var ocLow = Math.min(openVal, closeVal);\n var ocHigh = Math.max(openVal, closeVal);\n var ocLowPoint = getPoint(ocLow, axisDimVal);\n var ocHighPoint = getPoint(ocHigh, axisDimVal);\n var lowestPoint = getPoint(lowestVal, axisDimVal);\n var highestPoint = getPoint(highestVal, axisDimVal);\n var ends = [];\n addBodyEnd(ends, ocHighPoint, 0);\n addBodyEnd(ends, ocLowPoint, 1);\n ends.push(subPixelOptimizePoint(highestPoint), subPixelOptimizePoint(ocHighPoint), subPixelOptimizePoint(lowestPoint), subPixelOptimizePoint(ocLowPoint));\n data.setItemLayout(dataIndex, {\n sign: getSign(data, dataIndex, openVal, closeVal, closeDim),\n initBaseline: openVal > closeVal ? ocHighPoint[vDimIdx] : ocLowPoint[vDimIdx],\n // open point.\n ends: ends,\n brushRect: makeBrushRect(lowestVal, highestVal, axisDimVal)\n });\n }\n\n function getPoint(val, axisDimVal) {\n var p = [];\n p[cDimIdx] = axisDimVal;\n p[vDimIdx] = val;\n return isNaN(axisDimVal) || isNaN(val) ? [NaN, NaN] : coordSys.dataToPoint(p);\n }\n\n function addBodyEnd(ends, point, start) {\n var point1 = point.slice();\n var point2 = point.slice();\n point1[cDimIdx] = subPixelOptimize(point1[cDimIdx] + candleWidth / 2, 1, false);\n point2[cDimIdx] = subPixelOptimize(point2[cDimIdx] - candleWidth / 2, 1, true);\n start ? ends.push(point1, point2) : ends.push(point2, point1);\n }\n\n function makeBrushRect(lowestVal, highestVal, axisDimVal) {\n var pmin = getPoint(lowestVal, axisDimVal);\n var pmax = getPoint(highestVal, axisDimVal);\n pmin[cDimIdx] -= candleWidth / 2;\n pmax[cDimIdx] -= candleWidth / 2;\n return {\n x: pmin[0],\n y: pmin[1],\n width: vDimIdx ? candleWidth : pmax[0] - pmin[0],\n height: vDimIdx ? pmax[1] - pmin[1] : candleWidth\n };\n }\n\n function subPixelOptimizePoint(point) {\n point[cDimIdx] = subPixelOptimize(point[cDimIdx], 1);\n return point;\n }\n }\n\n function largeProgress(params, data) {\n // Structure: [sign, x, yhigh, ylow, sign, x, yhigh, ylow, ...]\n var points = new LargeArr(params.count * 4);\n var offset = 0;\n var point;\n var tmpIn = [];\n var tmpOut = [];\n var dataIndex;\n\n while ((dataIndex = params.next()) != null) {\n var axisDimVal = data.get(cDim, dataIndex);\n var openVal = data.get(openDim, dataIndex);\n var closeVal = data.get(closeDim, dataIndex);\n var lowestVal = data.get(lowestDim, dataIndex);\n var highestVal = data.get(highestDim, dataIndex);\n\n if (isNaN(axisDimVal) || isNaN(lowestVal) || isNaN(highestVal)) {\n points[offset++] = NaN;\n offset += 3;\n continue;\n }\n\n points[offset++] = getSign(data, dataIndex, openVal, closeVal, closeDim);\n tmpIn[cDimIdx] = axisDimVal;\n tmpIn[vDimIdx] = lowestVal;\n point = coordSys.dataToPoint(tmpIn, null, tmpOut);\n points[offset++] = point ? point[0] : NaN;\n points[offset++] = point ? point[1] : NaN;\n tmpIn[vDimIdx] = highestVal;\n point = coordSys.dataToPoint(tmpIn, null, tmpOut);\n points[offset++] = point ? point[1] : NaN;\n }\n\n data.setLayout('largePoints', points);\n }\n }\n};\n\nfunction getSign(data, dataIndex, openVal, closeVal, closeDim) {\n var sign;\n\n if (openVal > closeVal) {\n sign = -1;\n } else if (openVal < closeVal) {\n sign = 1;\n } else {\n sign = dataIndex > 0 // If close === open, compare with close of last record\n ? data.get(closeDim, dataIndex - 1) <= closeVal ? 1 : -1 : // No record of previous, set to be positive\n 1;\n }\n\n return sign;\n}\n\nfunction calculateCandleWidth(seriesModel, data) {\n var baseAxis = seriesModel.getBaseAxis();\n var extent;\n var bandWidth = baseAxis.type === 'category' ? baseAxis.getBandWidth() : (extent = baseAxis.getExtent(), Math.abs(extent[1] - extent[0]) / data.count());\n var barMaxWidth = parsePercent(retrieve2(seriesModel.get('barMaxWidth'), bandWidth), bandWidth);\n var barMinWidth = parsePercent(retrieve2(seriesModel.get('barMinWidth'), 1), bandWidth);\n var barWidth = seriesModel.get('barWidth');\n return barWidth != null ? parsePercent(barWidth, bandWidth) // Put max outer to ensure bar visible in spite of overlap.\n : Math.max(Math.min(bandWidth / 2, barMaxWidth), barMinWidth);\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/candlestick/candlestickLayout.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/candlestick/candlestickVisual.js": +/*!*************************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/candlestick/candlestickVisual.js ***! + \*************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar createRenderPlanner = __webpack_require__(/*! ../helper/createRenderPlanner */ \"./node_modules/echarts/lib/chart/helper/createRenderPlanner.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar positiveBorderColorQuery = ['itemStyle', 'borderColor'];\nvar negativeBorderColorQuery = ['itemStyle', 'borderColor0'];\nvar positiveColorQuery = ['itemStyle', 'color'];\nvar negativeColorQuery = ['itemStyle', 'color0'];\nvar _default = {\n seriesType: 'candlestick',\n plan: createRenderPlanner(),\n // For legend.\n performRawSeries: true,\n reset: function (seriesModel, ecModel) {\n var data = seriesModel.getData();\n data.setVisual({\n legendSymbol: 'roundRect',\n colorP: getColor(1, seriesModel),\n colorN: getColor(-1, seriesModel),\n borderColorP: getBorderColor(1, seriesModel),\n borderColorN: getBorderColor(-1, seriesModel)\n }); // Only visible series has each data be visual encoded\n\n if (ecModel.isSeriesFiltered(seriesModel)) {\n return;\n }\n\n var isLargeRender = seriesModel.pipelineContext.large;\n return !isLargeRender && {\n progress: progress\n };\n\n function progress(params, data) {\n var dataIndex;\n\n while ((dataIndex = params.next()) != null) {\n var itemModel = data.getItemModel(dataIndex);\n var sign = data.getItemLayout(dataIndex).sign;\n data.setItemVisual(dataIndex, {\n color: getColor(sign, itemModel),\n borderColor: getBorderColor(sign, itemModel)\n });\n }\n }\n\n function getColor(sign, model) {\n return model.get(sign > 0 ? positiveColorQuery : negativeColorQuery);\n }\n\n function getBorderColor(sign, model) {\n return model.get(sign > 0 ? positiveBorderColorQuery : negativeBorderColorQuery);\n }\n }\n};\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/candlestick/candlestickVisual.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/candlestick/preprocessor.js": +/*!********************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/candlestick/preprocessor.js ***! + \********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(option) {\n if (!option || !zrUtil.isArray(option.series)) {\n return;\n } // Translate 'k' to 'candlestick'.\n\n\n zrUtil.each(option.series, function (seriesItem) {\n if (zrUtil.isObject(seriesItem) && seriesItem.type === 'k') {\n seriesItem.type = 'candlestick';\n }\n });\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/candlestick/preprocessor.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/custom.js": +/*!**************************************************!*\ + !*** ./node_modules/echarts/lib/chart/custom.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar graphicUtil = __webpack_require__(/*! ../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar _labelHelper = __webpack_require__(/*! ./helper/labelHelper */ \"./node_modules/echarts/lib/chart/helper/labelHelper.js\");\n\nvar getDefaultLabel = _labelHelper.getDefaultLabel;\n\nvar createListFromArray = __webpack_require__(/*! ./helper/createListFromArray */ \"./node_modules/echarts/lib/chart/helper/createListFromArray.js\");\n\nvar _barGrid = __webpack_require__(/*! ../layout/barGrid */ \"./node_modules/echarts/lib/layout/barGrid.js\");\n\nvar getLayoutOnAxis = _barGrid.getLayoutOnAxis;\n\nvar DataDiffer = __webpack_require__(/*! ../data/DataDiffer */ \"./node_modules/echarts/lib/data/DataDiffer.js\");\n\nvar SeriesModel = __webpack_require__(/*! ../model/Series */ \"./node_modules/echarts/lib/model/Series.js\");\n\nvar Model = __webpack_require__(/*! ../model/Model */ \"./node_modules/echarts/lib/model/Model.js\");\n\nvar ChartView = __webpack_require__(/*! ../view/Chart */ \"./node_modules/echarts/lib/view/Chart.js\");\n\nvar _createClipPathFromCoordSys = __webpack_require__(/*! ./helper/createClipPathFromCoordSys */ \"./node_modules/echarts/lib/chart/helper/createClipPathFromCoordSys.js\");\n\nvar createClipPath = _createClipPathFromCoordSys.createClipPath;\n\nvar prepareCartesian2d = __webpack_require__(/*! ../coord/cartesian/prepareCustom */ \"./node_modules/echarts/lib/coord/cartesian/prepareCustom.js\");\n\nvar prepareGeo = __webpack_require__(/*! ../coord/geo/prepareCustom */ \"./node_modules/echarts/lib/coord/geo/prepareCustom.js\");\n\nvar prepareSingleAxis = __webpack_require__(/*! ../coord/single/prepareCustom */ \"./node_modules/echarts/lib/coord/single/prepareCustom.js\");\n\nvar preparePolar = __webpack_require__(/*! ../coord/polar/prepareCustom */ \"./node_modules/echarts/lib/coord/polar/prepareCustom.js\");\n\nvar prepareCalendar = __webpack_require__(/*! ../coord/calendar/prepareCustom */ \"./node_modules/echarts/lib/coord/calendar/prepareCustom.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar CACHED_LABEL_STYLE_PROPERTIES = graphicUtil.CACHED_LABEL_STYLE_PROPERTIES;\nvar ITEM_STYLE_NORMAL_PATH = ['itemStyle'];\nvar ITEM_STYLE_EMPHASIS_PATH = ['emphasis', 'itemStyle'];\nvar LABEL_NORMAL = ['label'];\nvar LABEL_EMPHASIS = ['emphasis', 'label']; // Use prefix to avoid index to be the same as el.name,\n// which will cause weird udpate animation.\n\nvar GROUP_DIFF_PREFIX = 'e\\0\\0';\n/**\n * To reduce total package size of each coordinate systems, the modules `prepareCustom`\n * of each coordinate systems are not required by each coordinate systems directly, but\n * required by the module `custom`.\n *\n * prepareInfoForCustomSeries {Function}: optional\n * @return {Object} {coordSys: {...}, api: {\n * coord: function (data, clamp) {}, // return point in global.\n * size: function (dataSize, dataItem) {} // return size of each axis in coordSys.\n * }}\n */\n\nvar prepareCustoms = {\n cartesian2d: prepareCartesian2d,\n geo: prepareGeo,\n singleAxis: prepareSingleAxis,\n polar: preparePolar,\n calendar: prepareCalendar\n}; // ------\n// Model\n// ------\n\nSeriesModel.extend({\n type: 'series.custom',\n dependencies: ['grid', 'polar', 'geo', 'singleAxis', 'calendar'],\n defaultOption: {\n coordinateSystem: 'cartesian2d',\n // Can be set as 'none'\n zlevel: 0,\n z: 2,\n legendHoverLink: true,\n useTransform: true,\n // Custom series will not clip by default.\n // Some case will use custom series to draw label\n // For example https://echarts.apache.org/examples/en/editor.html?c=custom-gantt-flight\n // Only works on polar and cartesian2d coordinate system.\n clip: false // Cartesian coordinate system\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // Polar coordinate system\n // polarIndex: 0,\n // Geo coordinate system\n // geoIndex: 0,\n // label: {}\n // itemStyle: {}\n\n },\n\n /**\n * @override\n */\n getInitialData: function (option, ecModel) {\n return createListFromArray(this.getSource(), this);\n },\n\n /**\n * @override\n */\n getDataParams: function (dataIndex, dataType, el) {\n var params = SeriesModel.prototype.getDataParams.apply(this, arguments);\n el && (params.info = el.info);\n return params;\n }\n}); // -----\n// View\n// -----\n\nChartView.extend({\n type: 'custom',\n\n /**\n * @private\n * @type {module:echarts/data/List}\n */\n _data: null,\n\n /**\n * @override\n */\n render: function (customSeries, ecModel, api, payload) {\n var oldData = this._data;\n var data = customSeries.getData();\n var group = this.group;\n var renderItem = makeRenderItem(customSeries, data, ecModel, api); // By default, merge mode is applied. In most cases, custom series is\n // used in the scenario that data amount is not large but graphic elements\n // is complicated, where merge mode is probably necessary for optimization.\n // For example, reuse graphic elements and only update the transform when\n // roam or data zoom according to `actionType`.\n\n data.diff(oldData).add(function (newIdx) {\n createOrUpdate(null, newIdx, renderItem(newIdx, payload), customSeries, group, data);\n }).update(function (newIdx, oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n createOrUpdate(el, newIdx, renderItem(newIdx, payload), customSeries, group, data);\n }).remove(function (oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n el && group.remove(el);\n }).execute(); // Do clipping\n\n var clipPath = customSeries.get('clip', true) ? createClipPath(customSeries.coordinateSystem, false, customSeries) : null;\n\n if (clipPath) {\n group.setClipPath(clipPath);\n } else {\n group.removeClipPath();\n }\n\n this._data = data;\n },\n incrementalPrepareRender: function (customSeries, ecModel, api) {\n this.group.removeAll();\n this._data = null;\n },\n incrementalRender: function (params, customSeries, ecModel, api, payload) {\n var data = customSeries.getData();\n var renderItem = makeRenderItem(customSeries, data, ecModel, api);\n\n function setIncrementalAndHoverLayer(el) {\n if (!el.isGroup) {\n el.incremental = true;\n el.useHoverLayer = true;\n }\n }\n\n for (var idx = params.start; idx < params.end; idx++) {\n var el = createOrUpdate(null, idx, renderItem(idx, payload), customSeries, this.group, data);\n el.traverse(setIncrementalAndHoverLayer);\n }\n },\n\n /**\n * @override\n */\n dispose: zrUtil.noop,\n\n /**\n * @override\n */\n filterForExposedEvent: function (eventType, query, targetEl, packedEvent) {\n var elementName = query.element;\n\n if (elementName == null || targetEl.name === elementName) {\n return true;\n } // Enable to give a name on a group made by `renderItem`, and listen\n // events that triggerd by its descendents.\n\n\n while ((targetEl = targetEl.parent) && targetEl !== this.group) {\n if (targetEl.name === elementName) {\n return true;\n }\n }\n\n return false;\n }\n});\n\nfunction createEl(elOption) {\n var graphicType = elOption.type;\n var el; // Those graphic elements are not shapes. They should not be\n // overwritten by users, so do them first.\n\n if (graphicType === 'path') {\n var shape = elOption.shape; // Using pathRect brings convenience to users sacle svg path.\n\n var pathRect = shape.width != null && shape.height != null ? {\n x: shape.x || 0,\n y: shape.y || 0,\n width: shape.width,\n height: shape.height\n } : null;\n var pathData = getPathData(shape); // Path is also used for icon, so layout 'center' by default.\n\n el = graphicUtil.makePath(pathData, null, pathRect, shape.layout || 'center');\n el.__customPathData = pathData;\n } else if (graphicType === 'image') {\n el = new graphicUtil.Image({});\n el.__customImagePath = elOption.style.image;\n } else if (graphicType === 'text') {\n el = new graphicUtil.Text({});\n el.__customText = elOption.style.text;\n } else if (graphicType === 'group') {\n el = new graphicUtil.Group();\n } else if (graphicType === 'compoundPath') {\n throw new Error('\"compoundPath\" is not supported yet.');\n } else {\n var Clz = graphicUtil.getShapeClass(graphicType);\n el = new Clz();\n }\n\n el.__customGraphicType = graphicType;\n el.name = elOption.name;\n return el;\n}\n\nfunction updateEl(el, dataIndex, elOption, animatableModel, data, isInit, isRoot) {\n var transitionProps = {};\n var elOptionStyle = elOption.style || {};\n elOption.shape && (transitionProps.shape = zrUtil.clone(elOption.shape));\n elOption.position && (transitionProps.position = elOption.position.slice());\n elOption.scale && (transitionProps.scale = elOption.scale.slice());\n elOption.origin && (transitionProps.origin = elOption.origin.slice());\n elOption.rotation && (transitionProps.rotation = elOption.rotation);\n\n if (el.type === 'image' && elOption.style) {\n var targetStyle = transitionProps.style = {};\n zrUtil.each(['x', 'y', 'width', 'height'], function (prop) {\n prepareStyleTransition(prop, targetStyle, elOptionStyle, el.style, isInit);\n });\n }\n\n if (el.type === 'text' && elOption.style) {\n var targetStyle = transitionProps.style = {};\n zrUtil.each(['x', 'y'], function (prop) {\n prepareStyleTransition(prop, targetStyle, elOptionStyle, el.style, isInit);\n }); // Compatible with previous: both support\n // textFill and fill, textStroke and stroke in 'text' element.\n\n !elOptionStyle.hasOwnProperty('textFill') && elOptionStyle.fill && (elOptionStyle.textFill = elOptionStyle.fill);\n !elOptionStyle.hasOwnProperty('textStroke') && elOptionStyle.stroke && (elOptionStyle.textStroke = elOptionStyle.stroke);\n }\n\n if (el.type !== 'group') {\n el.useStyle(elOptionStyle); // Init animation.\n\n if (isInit) {\n el.style.opacity = 0;\n var targetOpacity = elOptionStyle.opacity;\n targetOpacity == null && (targetOpacity = 1);\n graphicUtil.initProps(el, {\n style: {\n opacity: targetOpacity\n }\n }, animatableModel, dataIndex);\n }\n }\n\n if (isInit) {\n el.attr(transitionProps);\n } else {\n graphicUtil.updateProps(el, transitionProps, animatableModel, dataIndex);\n } // Merge by default.\n // z2 must not be null/undefined, otherwise sort error may occur.\n\n\n elOption.hasOwnProperty('z2') && el.attr('z2', elOption.z2 || 0);\n elOption.hasOwnProperty('silent') && el.attr('silent', elOption.silent);\n elOption.hasOwnProperty('invisible') && el.attr('invisible', elOption.invisible);\n elOption.hasOwnProperty('ignore') && el.attr('ignore', elOption.ignore); // `elOption.info` enables user to mount some info on\n // elements and use them in event handlers.\n // Update them only when user specified, otherwise, remain.\n\n elOption.hasOwnProperty('info') && el.attr('info', elOption.info); // If `elOption.styleEmphasis` is `false`, remove hover style. The\n // logic is ensured by `graphicUtil.setElementHoverStyle`.\n\n var styleEmphasis = elOption.styleEmphasis; // hoverStyle should always be set here, because if the hover style\n // may already be changed, where the inner cache should be reset.\n\n graphicUtil.setElementHoverStyle(el, styleEmphasis);\n\n if (isRoot) {\n graphicUtil.setAsHighDownDispatcher(el, styleEmphasis !== false);\n }\n}\n\nfunction prepareStyleTransition(prop, targetStyle, elOptionStyle, oldElStyle, isInit) {\n if (elOptionStyle[prop] != null && !isInit) {\n targetStyle[prop] = elOptionStyle[prop];\n elOptionStyle[prop] = oldElStyle[prop];\n }\n}\n\nfunction makeRenderItem(customSeries, data, ecModel, api) {\n var renderItem = customSeries.get('renderItem');\n var coordSys = customSeries.coordinateSystem;\n var prepareResult = {};\n\n if (coordSys) {\n prepareResult = coordSys.prepareCustoms ? coordSys.prepareCustoms() : prepareCustoms[coordSys.type](coordSys);\n }\n\n var userAPI = zrUtil.defaults({\n getWidth: api.getWidth,\n getHeight: api.getHeight,\n getZr: api.getZr,\n getDevicePixelRatio: api.getDevicePixelRatio,\n value: value,\n style: style,\n styleEmphasis: styleEmphasis,\n visual: visual,\n barLayout: barLayout,\n currentSeriesIndices: currentSeriesIndices,\n font: font\n }, prepareResult.api || {});\n var userParams = {\n // The life cycle of context: current round of rendering.\n // The global life cycle is probably not necessary, because\n // user can store global status by themselves.\n context: {},\n seriesId: customSeries.id,\n seriesName: customSeries.name,\n seriesIndex: customSeries.seriesIndex,\n coordSys: prepareResult.coordSys,\n dataInsideLength: data.count(),\n encode: wrapEncodeDef(customSeries.getData())\n }; // Do not support call `api` asynchronously without dataIndexInside input.\n\n var currDataIndexInside;\n var currDirty = true;\n var currItemModel;\n var currLabelNormalModel;\n var currLabelEmphasisModel;\n var currVisualColor;\n return function (dataIndexInside, payload) {\n currDataIndexInside = dataIndexInside;\n currDirty = true;\n return renderItem && renderItem(zrUtil.defaults({\n dataIndexInside: dataIndexInside,\n dataIndex: data.getRawIndex(dataIndexInside),\n // Can be used for optimization when zoom or roam.\n actionType: payload ? payload.type : null\n }, userParams), userAPI);\n }; // Do not update cache until api called.\n\n function updateCache(dataIndexInside) {\n dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n\n if (currDirty) {\n currItemModel = data.getItemModel(dataIndexInside);\n currLabelNormalModel = currItemModel.getModel(LABEL_NORMAL);\n currLabelEmphasisModel = currItemModel.getModel(LABEL_EMPHASIS);\n currVisualColor = data.getItemVisual(dataIndexInside, 'color');\n currDirty = false;\n }\n }\n /**\n * @public\n * @param {number|string} dim\n * @param {number} [dataIndexInside=currDataIndexInside]\n * @return {number|string} value\n */\n\n\n function value(dim, dataIndexInside) {\n dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n return data.get(data.getDimension(dim || 0), dataIndexInside);\n }\n /**\n * By default, `visual` is applied to style (to support visualMap).\n * `visual.color` is applied at `fill`. If user want apply visual.color on `stroke`,\n * it can be implemented as:\n * `api.style({stroke: api.visual('color'), fill: null})`;\n * @public\n * @param {Object} [extra]\n * @param {number} [dataIndexInside=currDataIndexInside]\n */\n\n\n function style(extra, dataIndexInside) {\n dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n updateCache(dataIndexInside);\n var itemStyle = currItemModel.getModel(ITEM_STYLE_NORMAL_PATH).getItemStyle();\n currVisualColor != null && (itemStyle.fill = currVisualColor);\n var opacity = data.getItemVisual(dataIndexInside, 'opacity');\n opacity != null && (itemStyle.opacity = opacity);\n var labelModel = extra ? applyExtraBefore(extra, currLabelNormalModel) : currLabelNormalModel;\n graphicUtil.setTextStyle(itemStyle, labelModel, null, {\n autoColor: currVisualColor,\n isRectText: true\n });\n itemStyle.text = labelModel.getShallow('show') ? zrUtil.retrieve2(customSeries.getFormattedLabel(dataIndexInside, 'normal'), getDefaultLabel(data, dataIndexInside)) : null;\n extra && applyExtraAfter(itemStyle, extra);\n return itemStyle;\n }\n /**\n * @public\n * @param {Object} [extra]\n * @param {number} [dataIndexInside=currDataIndexInside]\n */\n\n\n function styleEmphasis(extra, dataIndexInside) {\n dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n updateCache(dataIndexInside);\n var itemStyle = currItemModel.getModel(ITEM_STYLE_EMPHASIS_PATH).getItemStyle();\n var labelModel = extra ? applyExtraBefore(extra, currLabelEmphasisModel) : currLabelEmphasisModel;\n graphicUtil.setTextStyle(itemStyle, labelModel, null, {\n isRectText: true\n }, true);\n itemStyle.text = labelModel.getShallow('show') ? zrUtil.retrieve3(customSeries.getFormattedLabel(dataIndexInside, 'emphasis'), customSeries.getFormattedLabel(dataIndexInside, 'normal'), getDefaultLabel(data, dataIndexInside)) : null;\n extra && applyExtraAfter(itemStyle, extra);\n return itemStyle;\n }\n /**\n * @public\n * @param {string} visualType\n * @param {number} [dataIndexInside=currDataIndexInside]\n */\n\n\n function visual(visualType, dataIndexInside) {\n dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n return data.getItemVisual(dataIndexInside, visualType);\n }\n /**\n * @public\n * @param {number} opt.count Positive interger.\n * @param {number} [opt.barWidth]\n * @param {number} [opt.barMaxWidth]\n * @param {number} [opt.barMinWidth]\n * @param {number} [opt.barGap]\n * @param {number} [opt.barCategoryGap]\n * @return {Object} {width, offset, offsetCenter} is not support, return undefined.\n */\n\n\n function barLayout(opt) {\n if (coordSys.getBaseAxis) {\n var baseAxis = coordSys.getBaseAxis();\n return getLayoutOnAxis(zrUtil.defaults({\n axis: baseAxis\n }, opt), api);\n }\n }\n /**\n * @public\n * @return {Array.}\n */\n\n\n function currentSeriesIndices() {\n return ecModel.getCurrentSeriesIndices();\n }\n /**\n * @public\n * @param {Object} opt\n * @param {string} [opt.fontStyle]\n * @param {number} [opt.fontWeight]\n * @param {number} [opt.fontSize]\n * @param {string} [opt.fontFamily]\n * @return {string} font string\n */\n\n\n function font(opt) {\n return graphicUtil.getFont(opt, ecModel);\n }\n}\n\nfunction wrapEncodeDef(data) {\n var encodeDef = {};\n zrUtil.each(data.dimensions, function (dimName, dataDimIndex) {\n var dimInfo = data.getDimensionInfo(dimName);\n\n if (!dimInfo.isExtraCoord) {\n var coordDim = dimInfo.coordDim;\n var dataDims = encodeDef[coordDim] = encodeDef[coordDim] || [];\n dataDims[dimInfo.coordDimIndex] = dataDimIndex;\n }\n });\n return encodeDef;\n}\n\nfunction createOrUpdate(el, dataIndex, elOption, animatableModel, group, data) {\n el = doCreateOrUpdate(el, dataIndex, elOption, animatableModel, group, data, true);\n el && data.setItemGraphicEl(dataIndex, el);\n return el;\n}\n\nfunction doCreateOrUpdate(el, dataIndex, elOption, animatableModel, group, data, isRoot) {\n // [Rule]\n // By default, follow merge mode.\n // (It probably brings benifit for performance in some cases of large data, where\n // user program can be optimized to that only updated props needed to be re-calculated,\n // or according to `actionType` some calculation can be skipped.)\n // If `renderItem` returns `null`/`undefined`/`false`, remove the previous el if existing.\n // (It seems that violate the \"merge\" principle, but most of users probably intuitively\n // regard \"return;\" as \"show nothing element whatever\", so make a exception to meet the\n // most cases.)\n var simplyRemove = !elOption; // `null`/`undefined`/`false`\n\n elOption = elOption || {};\n var elOptionType = elOption.type;\n var elOptionShape = elOption.shape;\n var elOptionStyle = elOption.style;\n\n if (el && (simplyRemove // || elOption.$merge === false\n // If `elOptionType` is `null`, follow the merge principle.\n || elOptionType != null && elOptionType !== el.__customGraphicType || elOptionType === 'path' && hasOwnPathData(elOptionShape) && getPathData(elOptionShape) !== el.__customPathData || elOptionType === 'image' && hasOwn(elOptionStyle, 'image') && elOptionStyle.image !== el.__customImagePath // FIXME test and remove this restriction?\n || elOptionType === 'text' && hasOwn(elOptionShape, 'text') && elOptionStyle.text !== el.__customText)) {\n group.remove(el);\n el = null;\n } // `elOption.type` is undefined when `renderItem` returns nothing.\n\n\n if (simplyRemove) {\n return;\n }\n\n var isInit = !el;\n !el && (el = createEl(elOption));\n updateEl(el, dataIndex, elOption, animatableModel, data, isInit, isRoot);\n\n if (elOptionType === 'group') {\n mergeChildren(el, dataIndex, elOption, animatableModel, data);\n } // Always add whatever already added to ensure sequence.\n\n\n group.add(el);\n return el;\n} // Usage:\n// (1) By default, `elOption.$mergeChildren` is `'byIndex'`, which indicates that\n// the existing children will not be removed, and enables the feature that\n// update some of the props of some of the children simply by construct\n// the returned children of `renderItem` like:\n// `var children = group.children = []; children[3] = {opacity: 0.5};`\n// (2) If `elOption.$mergeChildren` is `'byName'`, add/update/remove children\n// by child.name. But that might be lower performance.\n// (3) If `elOption.$mergeChildren` is `false`, the existing children will be\n// replaced totally.\n// (4) If `!elOption.children`, following the \"merge\" principle, nothing will happen.\n//\n// For implementation simpleness, do not provide a direct way to remove sinlge\n// child (otherwise the total indicies of the children array have to be modified).\n// User can remove a single child by set its `ignore` as `true` or replace\n// it by another element, where its `$merge` can be set as `true` if necessary.\n\n\nfunction mergeChildren(el, dataIndex, elOption, animatableModel, data) {\n var newChildren = elOption.children;\n var newLen = newChildren ? newChildren.length : 0;\n var mergeChildren = elOption.$mergeChildren; // `diffChildrenByName` has been deprecated.\n\n var byName = mergeChildren === 'byName' || elOption.diffChildrenByName;\n var notMerge = mergeChildren === false; // For better performance on roam update, only enter if necessary.\n\n if (!newLen && !byName && !notMerge) {\n return;\n }\n\n if (byName) {\n diffGroupChildren({\n oldChildren: el.children() || [],\n newChildren: newChildren || [],\n dataIndex: dataIndex,\n animatableModel: animatableModel,\n group: el,\n data: data\n });\n return;\n }\n\n notMerge && el.removeAll(); // Mapping children of a group simply by index, which\n // might be better performance.\n\n var index = 0;\n\n for (; index < newLen; index++) {\n newChildren[index] && doCreateOrUpdate(el.childAt(index), dataIndex, newChildren[index], animatableModel, el, data);\n }\n}\n\nfunction diffGroupChildren(context) {\n new DataDiffer(context.oldChildren, context.newChildren, getKey, getKey, context).add(processAddUpdate).update(processAddUpdate).remove(processRemove).execute();\n}\n\nfunction getKey(item, idx) {\n var name = item && item.name;\n return name != null ? name : GROUP_DIFF_PREFIX + idx;\n}\n\nfunction processAddUpdate(newIndex, oldIndex) {\n var context = this.context;\n var childOption = newIndex != null ? context.newChildren[newIndex] : null;\n var child = oldIndex != null ? context.oldChildren[oldIndex] : null;\n doCreateOrUpdate(child, context.dataIndex, childOption, context.animatableModel, context.group, context.data);\n} // `graphic#applyDefaultTextStyle` will cache\n// textFill, textStroke, textStrokeWidth.\n// We have to do this trick.\n\n\nfunction applyExtraBefore(extra, model) {\n var dummyModel = new Model({}, model);\n zrUtil.each(CACHED_LABEL_STYLE_PROPERTIES, function (stylePropName, modelPropName) {\n if (extra.hasOwnProperty(stylePropName)) {\n dummyModel.option[modelPropName] = extra[stylePropName];\n }\n });\n return dummyModel;\n}\n\nfunction applyExtraAfter(itemStyle, extra) {\n for (var key in extra) {\n if (extra.hasOwnProperty(key) || !CACHED_LABEL_STYLE_PROPERTIES.hasOwnProperty(key)) {\n itemStyle[key] = extra[key];\n }\n }\n}\n\nfunction processRemove(oldIndex) {\n var context = this.context;\n var child = context.oldChildren[oldIndex];\n child && context.group.remove(child);\n}\n\nfunction getPathData(shape) {\n // \"d\" follows the SVG convention.\n return shape && (shape.pathData || shape.d);\n}\n\nfunction hasOwnPathData(shape) {\n return shape && (shape.hasOwnProperty('pathData') || shape.hasOwnProperty('d'));\n}\n\nfunction hasOwn(host, prop) {\n return host && host.hasOwnProperty(prop);\n}\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/custom.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/effectScatter.js": +/*!*********************************************************!*\ + !*** ./node_modules/echarts/lib/chart/effectScatter.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n__webpack_require__(/*! ./effectScatter/EffectScatterSeries */ \"./node_modules/echarts/lib/chart/effectScatter/EffectScatterSeries.js\");\n\n__webpack_require__(/*! ./effectScatter/EffectScatterView */ \"./node_modules/echarts/lib/chart/effectScatter/EffectScatterView.js\");\n\nvar visualSymbol = __webpack_require__(/*! ../visual/symbol */ \"./node_modules/echarts/lib/visual/symbol.js\");\n\nvar layoutPoints = __webpack_require__(/*! ../layout/points */ \"./node_modules/echarts/lib/layout/points.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerVisual(visualSymbol('effectScatter', 'circle'));\necharts.registerLayout(layoutPoints('effectScatter'));\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/effectScatter.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/effectScatter/EffectScatterSeries.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/effectScatter/EffectScatterSeries.js ***! + \*****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar createListFromArray = __webpack_require__(/*! ../helper/createListFromArray */ \"./node_modules/echarts/lib/chart/helper/createListFromArray.js\");\n\nvar SeriesModel = __webpack_require__(/*! ../../model/Series */ \"./node_modules/echarts/lib/model/Series.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n type: 'series.effectScatter',\n dependencies: ['grid', 'polar'],\n getInitialData: function (option, ecModel) {\n return createListFromArray(this.getSource(), this, {\n useEncodeDefaulter: true\n });\n },\n brushSelector: 'point',\n defaultOption: {\n coordinateSystem: 'cartesian2d',\n zlevel: 0,\n z: 2,\n legendHoverLink: true,\n effectType: 'ripple',\n progressive: 0,\n // When to show the effect, option: 'render'|'emphasis'\n showEffectOn: 'render',\n // Ripple effect config\n rippleEffect: {\n period: 4,\n // Scale of ripple\n scale: 2.5,\n // Brush type can be fill or stroke\n brushType: 'fill'\n },\n // Cartesian coordinate system\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // Polar coordinate system\n // polarIndex: 0,\n // Geo coordinate system\n // geoIndex: 0,\n // symbol: null, // 图形类型\n symbolSize: 10 // 图形大小,半宽(半径)参数,当图形为方向或菱形则总宽度为symbolSize * 2\n // symbolRotate: null, // 图形旋转控制\n // large: false,\n // Available when large is true\n // largeThreshold: 2000,\n // itemStyle: {\n // opacity: 1\n // }\n\n }\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/effectScatter/EffectScatterSeries.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/effectScatter/EffectScatterView.js": +/*!***************************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/effectScatter/EffectScatterView.js ***! + \***************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar SymbolDraw = __webpack_require__(/*! ../helper/SymbolDraw */ \"./node_modules/echarts/lib/chart/helper/SymbolDraw.js\");\n\nvar EffectSymbol = __webpack_require__(/*! ../helper/EffectSymbol */ \"./node_modules/echarts/lib/chart/helper/EffectSymbol.js\");\n\nvar matrix = __webpack_require__(/*! zrender/lib/core/matrix */ \"./node_modules/zrender/lib/core/matrix.js\");\n\nvar pointsLayout = __webpack_require__(/*! ../../layout/points */ \"./node_modules/echarts/lib/layout/points.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendChartView({\n type: 'effectScatter',\n init: function () {\n this._symbolDraw = new SymbolDraw(EffectSymbol);\n },\n render: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n var effectSymbolDraw = this._symbolDraw;\n effectSymbolDraw.updateData(data);\n this.group.add(effectSymbolDraw.group);\n },\n updateTransform: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n this.group.dirty();\n var res = pointsLayout().reset(seriesModel);\n\n if (res.progress) {\n res.progress({\n start: 0,\n end: data.count()\n }, data);\n }\n\n this._symbolDraw.updateLayout(data);\n },\n _updateGroupTransform: function (seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys && coordSys.getRoamTransform) {\n this.group.transform = matrix.clone(coordSys.getRoamTransform());\n this.group.decomposeTransform();\n }\n },\n remove: function (ecModel, api) {\n this._symbolDraw && this._symbolDraw.remove(api);\n },\n dispose: function () {}\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/effectScatter/EffectScatterView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/funnel.js": +/*!**************************************************!*\ + !*** ./node_modules/echarts/lib/chart/funnel.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n__webpack_require__(/*! ./funnel/FunnelSeries */ \"./node_modules/echarts/lib/chart/funnel/FunnelSeries.js\");\n\n__webpack_require__(/*! ./funnel/FunnelView */ \"./node_modules/echarts/lib/chart/funnel/FunnelView.js\");\n\nvar dataColor = __webpack_require__(/*! ../visual/dataColor */ \"./node_modules/echarts/lib/visual/dataColor.js\");\n\nvar funnelLayout = __webpack_require__(/*! ./funnel/funnelLayout */ \"./node_modules/echarts/lib/chart/funnel/funnelLayout.js\");\n\nvar dataFilter = __webpack_require__(/*! ../processor/dataFilter */ \"./node_modules/echarts/lib/processor/dataFilter.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerVisual(dataColor('funnel'));\necharts.registerLayout(funnelLayout);\necharts.registerProcessor(dataFilter('funnel'));\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/funnel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/funnel/FunnelSeries.js": +/*!***************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/funnel/FunnelSeries.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar createListSimply = __webpack_require__(/*! ../helper/createListSimply */ \"./node_modules/echarts/lib/chart/helper/createListSimply.js\");\n\nvar _model = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar defaultEmphasis = _model.defaultEmphasis;\n\nvar _sourceHelper = __webpack_require__(/*! ../../data/helper/sourceHelper */ \"./node_modules/echarts/lib/data/helper/sourceHelper.js\");\n\nvar makeSeriesEncodeForNameBased = _sourceHelper.makeSeriesEncodeForNameBased;\n\nvar LegendVisualProvider = __webpack_require__(/*! ../../visual/LegendVisualProvider */ \"./node_modules/echarts/lib/visual/LegendVisualProvider.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar FunnelSeries = echarts.extendSeriesModel({\n type: 'series.funnel',\n init: function (option) {\n FunnelSeries.superApply(this, 'init', arguments); // Enable legend selection for each data item\n // Use a function instead of direct access because data reference may changed\n\n this.legendVisualProvider = new LegendVisualProvider(zrUtil.bind(this.getData, this), zrUtil.bind(this.getRawData, this)); // Extend labelLine emphasis\n\n this._defaultLabelLine(option);\n },\n getInitialData: function (option, ecModel) {\n return createListSimply(this, {\n coordDimensions: ['value'],\n encodeDefaulter: zrUtil.curry(makeSeriesEncodeForNameBased, this)\n });\n },\n _defaultLabelLine: function (option) {\n // Extend labelLine emphasis\n defaultEmphasis(option, 'labelLine', ['show']);\n var labelLineNormalOpt = option.labelLine;\n var labelLineEmphasisOpt = option.emphasis.labelLine; // Not show label line if `label.normal.show = false`\n\n labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show;\n labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show;\n },\n // Overwrite\n getDataParams: function (dataIndex) {\n var data = this.getData();\n var params = FunnelSeries.superCall(this, 'getDataParams', dataIndex);\n var valueDim = data.mapDimension('value');\n var sum = data.getSum(valueDim); // Percent is 0 if sum is 0\n\n params.percent = !sum ? 0 : +(data.get(valueDim, dataIndex) / sum * 100).toFixed(2);\n params.$vars.push('percent');\n return params;\n },\n defaultOption: {\n zlevel: 0,\n // 一级层叠\n z: 2,\n // 二级层叠\n legendHoverLink: true,\n left: 80,\n top: 60,\n right: 80,\n bottom: 60,\n // width: {totalWidth} - left - right,\n // height: {totalHeight} - top - bottom,\n // 默认取数据最小最大值\n // min: 0,\n // max: 100,\n minSize: '0%',\n maxSize: '100%',\n sort: 'descending',\n // 'ascending', 'descending'\n orient: 'vertical',\n gap: 0,\n funnelAlign: 'center',\n label: {\n show: true,\n position: 'outer' // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调\n\n },\n labelLine: {\n show: true,\n length: 20,\n lineStyle: {\n // color: 各异,\n width: 1,\n type: 'solid'\n }\n },\n itemStyle: {\n // color: 各异,\n borderColor: '#fff',\n borderWidth: 1\n },\n emphasis: {\n label: {\n show: true\n }\n }\n }\n});\nvar _default = FunnelSeries;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/funnel/FunnelSeries.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/funnel/FunnelView.js": +/*!*************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/funnel/FunnelView.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar ChartView = __webpack_require__(/*! ../../view/Chart */ \"./node_modules/echarts/lib/view/Chart.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Piece of pie including Sector, Label, LabelLine\n * @constructor\n * @extends {module:zrender/graphic/Group}\n */\nfunction FunnelPiece(data, idx) {\n graphic.Group.call(this);\n var polygon = new graphic.Polygon();\n var labelLine = new graphic.Polyline();\n var text = new graphic.Text();\n this.add(polygon);\n this.add(labelLine);\n this.add(text);\n\n this.highDownOnUpdate = function (fromState, toState) {\n if (toState === 'emphasis') {\n labelLine.ignore = labelLine.hoverIgnore;\n text.ignore = text.hoverIgnore;\n } else {\n labelLine.ignore = labelLine.normalIgnore;\n text.ignore = text.normalIgnore;\n }\n };\n\n this.updateData(data, idx, true);\n}\n\nvar funnelPieceProto = FunnelPiece.prototype;\nvar opacityAccessPath = ['itemStyle', 'opacity'];\n\nfunnelPieceProto.updateData = function (data, idx, firstCreate) {\n var polygon = this.childAt(0);\n var seriesModel = data.hostModel;\n var itemModel = data.getItemModel(idx);\n var layout = data.getItemLayout(idx);\n var opacity = data.getItemModel(idx).get(opacityAccessPath);\n opacity = opacity == null ? 1 : opacity; // Reset style\n\n polygon.useStyle({});\n\n if (firstCreate) {\n polygon.setShape({\n points: layout.points\n });\n polygon.setStyle({\n opacity: 0\n });\n graphic.initProps(polygon, {\n style: {\n opacity: opacity\n }\n }, seriesModel, idx);\n } else {\n graphic.updateProps(polygon, {\n style: {\n opacity: opacity\n },\n shape: {\n points: layout.points\n }\n }, seriesModel, idx);\n } // Update common style\n\n\n var itemStyleModel = itemModel.getModel('itemStyle');\n var visualColor = data.getItemVisual(idx, 'color');\n polygon.setStyle(zrUtil.defaults({\n lineJoin: 'round',\n fill: visualColor\n }, itemStyleModel.getItemStyle(['opacity'])));\n polygon.hoverStyle = itemStyleModel.getModel('emphasis').getItemStyle();\n\n this._updateLabel(data, idx);\n\n graphic.setHoverStyle(this);\n};\n\nfunnelPieceProto._updateLabel = function (data, idx) {\n var labelLine = this.childAt(1);\n var labelText = this.childAt(2);\n var seriesModel = data.hostModel;\n var itemModel = data.getItemModel(idx);\n var layout = data.getItemLayout(idx);\n var labelLayout = layout.label;\n var visualColor = data.getItemVisual(idx, 'color');\n graphic.updateProps(labelLine, {\n shape: {\n points: labelLayout.linePoints || labelLayout.linePoints\n }\n }, seriesModel, idx);\n graphic.updateProps(labelText, {\n style: {\n x: labelLayout.x,\n y: labelLayout.y\n }\n }, seriesModel, idx);\n labelText.attr({\n rotation: labelLayout.rotation,\n origin: [labelLayout.x, labelLayout.y],\n z2: 10\n });\n var labelModel = itemModel.getModel('label');\n var labelHoverModel = itemModel.getModel('emphasis.label');\n var labelLineModel = itemModel.getModel('labelLine');\n var labelLineHoverModel = itemModel.getModel('emphasis.labelLine');\n var visualColor = data.getItemVisual(idx, 'color');\n graphic.setLabelStyle(labelText.style, labelText.hoverStyle = {}, labelModel, labelHoverModel, {\n labelFetcher: data.hostModel,\n labelDataIndex: idx,\n defaultText: data.getName(idx),\n autoColor: visualColor,\n useInsideStyle: !!labelLayout.inside\n }, {\n textAlign: labelLayout.textAlign,\n textVerticalAlign: labelLayout.verticalAlign\n });\n labelText.ignore = labelText.normalIgnore = !labelModel.get('show');\n labelText.hoverIgnore = !labelHoverModel.get('show');\n labelLine.ignore = labelLine.normalIgnore = !labelLineModel.get('show');\n labelLine.hoverIgnore = !labelLineHoverModel.get('show'); // Default use item visual color\n\n labelLine.setStyle({\n stroke: visualColor\n });\n labelLine.setStyle(labelLineModel.getModel('lineStyle').getLineStyle());\n labelLine.hoverStyle = labelLineHoverModel.getModel('lineStyle').getLineStyle();\n};\n\nzrUtil.inherits(FunnelPiece, graphic.Group);\nvar FunnelView = ChartView.extend({\n type: 'funnel',\n render: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n var oldData = this._data;\n var group = this.group;\n data.diff(oldData).add(function (idx) {\n var funnelPiece = new FunnelPiece(data, idx);\n data.setItemGraphicEl(idx, funnelPiece);\n group.add(funnelPiece);\n }).update(function (newIdx, oldIdx) {\n var piePiece = oldData.getItemGraphicEl(oldIdx);\n piePiece.updateData(data, newIdx);\n group.add(piePiece);\n data.setItemGraphicEl(newIdx, piePiece);\n }).remove(function (idx) {\n var piePiece = oldData.getItemGraphicEl(idx);\n group.remove(piePiece);\n }).execute();\n this._data = data;\n },\n remove: function () {\n this.group.removeAll();\n this._data = null;\n },\n dispose: function () {}\n});\nvar _default = FunnelView;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/funnel/FunnelView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/funnel/funnelLayout.js": +/*!***************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/funnel/funnelLayout.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar layout = __webpack_require__(/*! ../../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar _number = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar parsePercent = _number.parsePercent;\nvar linearMap = _number.linearMap;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction getViewRect(seriesModel, api) {\n return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n}\n\nfunction getSortedIndices(data, sort) {\n var valueDim = data.mapDimension('value');\n var valueArr = data.mapArray(valueDim, function (val) {\n return val;\n });\n var indices = [];\n var isAscending = sort === 'ascending';\n\n for (var i = 0, len = data.count(); i < len; i++) {\n indices[i] = i;\n } // Add custom sortable function & none sortable opetion by \"options.sort\"\n\n\n if (typeof sort === 'function') {\n indices.sort(sort);\n } else if (sort !== 'none') {\n indices.sort(function (a, b) {\n return isAscending ? valueArr[a] - valueArr[b] : valueArr[b] - valueArr[a];\n });\n }\n\n return indices;\n}\n\nfunction labelLayout(data) {\n data.each(function (idx) {\n var itemModel = data.getItemModel(idx);\n var labelModel = itemModel.getModel('label');\n var labelPosition = labelModel.get('position');\n var orient = itemModel.get('orient');\n var labelLineModel = itemModel.getModel('labelLine');\n var layout = data.getItemLayout(idx);\n var points = layout.points;\n var isLabelInside = labelPosition === 'inner' || labelPosition === 'inside' || labelPosition === 'center' || labelPosition === 'insideLeft' || labelPosition === 'insideRight';\n var textAlign;\n var textX;\n var textY;\n var linePoints;\n\n if (isLabelInside) {\n if (labelPosition === 'insideLeft') {\n textX = (points[0][0] + points[3][0]) / 2 + 5;\n textY = (points[0][1] + points[3][1]) / 2;\n textAlign = 'left';\n } else if (labelPosition === 'insideRight') {\n textX = (points[1][0] + points[2][0]) / 2 - 5;\n textY = (points[1][1] + points[2][1]) / 2;\n textAlign = 'right';\n } else {\n textX = (points[0][0] + points[1][0] + points[2][0] + points[3][0]) / 4;\n textY = (points[0][1] + points[1][1] + points[2][1] + points[3][1]) / 4;\n textAlign = 'center';\n }\n\n linePoints = [[textX, textY], [textX, textY]];\n } else {\n var x1;\n var y1;\n var x2;\n var y2;\n var labelLineLen = labelLineModel.get('length');\n\n if (labelPosition === 'left') {\n // Left side\n x1 = (points[3][0] + points[0][0]) / 2;\n y1 = (points[3][1] + points[0][1]) / 2;\n x2 = x1 - labelLineLen;\n textX = x2 - 5;\n textAlign = 'right';\n } else if (labelPosition === 'right') {\n // Right side\n x1 = (points[1][0] + points[2][0]) / 2;\n y1 = (points[1][1] + points[2][1]) / 2;\n x2 = x1 + labelLineLen;\n textX = x2 + 5;\n textAlign = 'left';\n } else if (labelPosition === 'top') {\n // Top side\n x1 = (points[3][0] + points[0][0]) / 2;\n y1 = (points[3][1] + points[0][1]) / 2;\n y2 = y1 - labelLineLen;\n textY = y2 - 5;\n textAlign = 'center';\n } else if (labelPosition === 'bottom') {\n // Bottom side\n x1 = (points[1][0] + points[2][0]) / 2;\n y1 = (points[1][1] + points[2][1]) / 2;\n y2 = y1 + labelLineLen;\n textY = y2 + 5;\n textAlign = 'center';\n } else if (labelPosition === 'rightTop') {\n // RightTop side\n x1 = orient === 'horizontal' ? points[3][0] : points[1][0];\n y1 = orient === 'horizontal' ? points[3][1] : points[1][1];\n\n if (orient === 'horizontal') {\n y2 = y1 - labelLineLen;\n textY = y2 - 5;\n textAlign = 'center';\n } else {\n x2 = x1 + labelLineLen;\n textX = x2 + 5;\n textAlign = 'top';\n }\n } else if (labelPosition === 'rightBottom') {\n // RightBottom side\n x1 = points[2][0];\n y1 = points[2][1];\n\n if (orient === 'horizontal') {\n y2 = y1 + labelLineLen;\n textY = y2 + 5;\n textAlign = 'center';\n } else {\n x2 = x1 + labelLineLen;\n textX = x2 + 5;\n textAlign = 'bottom';\n }\n } else if (labelPosition === 'leftTop') {\n // LeftTop side\n x1 = points[0][0];\n y1 = orient === 'horizontal' ? points[0][1] : points[1][1];\n\n if (orient === 'horizontal') {\n y2 = y1 - labelLineLen;\n textY = y2 - 5;\n textAlign = 'center';\n } else {\n x2 = x1 - labelLineLen;\n textX = x2 - 5;\n textAlign = 'right';\n }\n } else if (labelPosition === 'leftBottom') {\n // LeftBottom side\n x1 = orient === 'horizontal' ? points[1][0] : points[3][0];\n y1 = orient === 'horizontal' ? points[1][1] : points[2][1];\n\n if (orient === 'horizontal') {\n y2 = y1 + labelLineLen;\n textY = y2 + 5;\n textAlign = 'center';\n } else {\n x2 = x1 - labelLineLen;\n textX = x2 - 5;\n textAlign = 'right';\n }\n } else {\n // Right side or Bottom side\n x1 = (points[1][0] + points[2][0]) / 2;\n y1 = (points[1][1] + points[2][1]) / 2;\n\n if (orient === 'horizontal') {\n y2 = y1 + labelLineLen;\n textY = y2 + 5;\n textAlign = 'center';\n } else {\n x2 = x1 + labelLineLen;\n textX = x2 + 5;\n textAlign = 'left';\n }\n }\n\n if (orient === 'horizontal') {\n x2 = x1;\n textX = x2;\n } else {\n y2 = y1;\n textY = y2;\n }\n\n linePoints = [[x1, y1], [x2, y2]];\n }\n\n layout.label = {\n linePoints: linePoints,\n x: textX,\n y: textY,\n verticalAlign: 'middle',\n textAlign: textAlign,\n inside: isLabelInside\n };\n });\n}\n\nfunction _default(ecModel, api, payload) {\n ecModel.eachSeriesByType('funnel', function (seriesModel) {\n var data = seriesModel.getData();\n var valueDim = data.mapDimension('value');\n var sort = seriesModel.get('sort');\n var viewRect = getViewRect(seriesModel, api);\n var indices = getSortedIndices(data, sort);\n var orient = seriesModel.get('orient');\n var viewWidth = viewRect.width;\n var viewHeight = viewRect.height;\n var x = viewRect.x;\n var y = viewRect.y;\n var sizeExtent = orient === 'horizontal' ? [parsePercent(seriesModel.get('minSize'), viewHeight), parsePercent(seriesModel.get('maxSize'), viewHeight)] : [parsePercent(seriesModel.get('minSize'), viewWidth), parsePercent(seriesModel.get('maxSize'), viewWidth)];\n var dataExtent = data.getDataExtent(valueDim);\n var min = seriesModel.get('min');\n var max = seriesModel.get('max');\n\n if (min == null) {\n min = Math.min(dataExtent[0], 0);\n }\n\n if (max == null) {\n max = dataExtent[1];\n }\n\n var funnelAlign = seriesModel.get('funnelAlign');\n var gap = seriesModel.get('gap');\n var viewSize = orient === 'horizontal' ? viewWidth : viewHeight;\n var itemSize = (viewSize - gap * (data.count() - 1)) / data.count();\n\n var getLinePoints = function (idx, offset) {\n // End point index is data.count() and we assign it 0\n if (orient === 'horizontal') {\n var val = data.get(valueDim, idx) || 0;\n var itemHeight = linearMap(val, [min, max], sizeExtent, true);\n var y0;\n\n switch (funnelAlign) {\n case 'top':\n y0 = y;\n break;\n\n case 'center':\n y0 = y + (viewHeight - itemHeight) / 2;\n break;\n\n case 'bottom':\n y0 = y + (viewHeight - itemHeight);\n break;\n }\n\n return [[offset, y0], [offset, y0 + itemHeight]];\n }\n\n var val = data.get(valueDim, idx) || 0;\n var itemWidth = linearMap(val, [min, max], sizeExtent, true);\n var x0;\n\n switch (funnelAlign) {\n case 'left':\n x0 = x;\n break;\n\n case 'center':\n x0 = x + (viewWidth - itemWidth) / 2;\n break;\n\n case 'right':\n x0 = x + viewWidth - itemWidth;\n break;\n }\n\n return [[x0, offset], [x0 + itemWidth, offset]];\n };\n\n if (sort === 'ascending') {\n // From bottom to top\n itemSize = -itemSize;\n gap = -gap;\n\n if (orient === 'horizontal') {\n x += viewWidth;\n } else {\n y += viewHeight;\n }\n\n indices = indices.reverse();\n }\n\n for (var i = 0; i < indices.length; i++) {\n var idx = indices[i];\n var nextIdx = indices[i + 1];\n var itemModel = data.getItemModel(idx);\n\n if (orient === 'horizontal') {\n var width = itemModel.get('itemStyle.width');\n\n if (width == null) {\n width = itemSize;\n } else {\n width = parsePercent(width, viewWidth);\n\n if (sort === 'ascending') {\n width = -width;\n }\n }\n\n var start = getLinePoints(idx, x);\n var end = getLinePoints(nextIdx, x + width);\n x += width + gap;\n data.setItemLayout(idx, {\n points: start.concat(end.slice().reverse())\n });\n } else {\n var height = itemModel.get('itemStyle.height');\n\n if (height == null) {\n height = itemSize;\n } else {\n height = parsePercent(height, viewHeight);\n\n if (sort === 'ascending') {\n height = -height;\n }\n }\n\n var start = orient === 'horizontal' ? getLinePoints(idx, x) : getLinePoints(idx, y);\n var end = orient === 'horizontal' ? getLinePoints(nextIdx, x + width) : getLinePoints(nextIdx, y + height);\n y += height + gap;\n data.setItemLayout(idx, {\n points: start.concat(end.slice().reverse())\n });\n }\n }\n\n labelLayout(data);\n });\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/funnel/funnelLayout.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/gauge.js": /*!*************************************************!*\ - !*** ./src/components/generator/ruleTrigger.js ***! + !*** ./node_modules/echarts/lib/chart/gauge.js ***! \*************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -"use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/**\n * 用于生成表单校验,指定正则规则的触发方式。\n * 未在此处声明无触发方式的组件将不生成rule!!\n */\nvar _default = {\n 'el-input': 'blur',\n 'el-input-number': 'blur',\n 'el-select': 'change',\n 'el-radio-group': 'change',\n 'el-checkbox-group': 'change',\n 'el-cascader': 'change',\n 'el-time-picker': 'change',\n 'el-date-picker': 'change',\n 'el-rate': 'change',\n tinymce: 'blur'\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/components/generator/ruleTrigger.js?"); +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(/*! ./gauge/GaugeSeries */ \"./node_modules/echarts/lib/chart/gauge/GaugeSeries.js\");\n\n__webpack_require__(/*! ./gauge/GaugeView */ \"./node_modules/echarts/lib/chart/gauge/GaugeView.js\");\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/gauge.js?"); /***/ }), -/***/ "./src/utils/constants.js": -/*!********************************!*\ - !*** ./src/utils/constants.js ***! - \********************************/ +/***/ "./node_modules/echarts/lib/chart/gauge/GaugeSeries.js": +/*!*************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/gauge/GaugeSeries.js ***! + \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -"use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SystemUserSocialTypeEnum = exports.SystemRoleTypeEnum = exports.SystemMenuTypeEnum = exports.SystemDataScopeEnum = exports.PayType = exports.PayRefundStatusEnum = exports.PayOrderStatusEnum = exports.PayOrderRefundStatusEnum = exports.PayOrderNotifyStatusEnum = exports.PayChannelEnum = exports.InfraJobStatusEnum = exports.InfraCodegenTemplateTypeEnum = exports.InfraApiErrorLogProcessStatusEnum = exports.CommonStatusEnum = void 0;\n\n/**\n * Created by 芋道源码\n *\n * 枚举类\n */\n\n/**\n * 全局通用状态枚举\n */\nvar CommonStatusEnum = {\n ENABLE: 0,\n // 开启\n DISABLE: 1 // 禁用\n\n};\n/**\n * 菜单的类型枚举\n */\n\nexports.CommonStatusEnum = CommonStatusEnum;\nvar SystemMenuTypeEnum = {\n DIR: 1,\n // 目录\n MENU: 2,\n // 菜单\n BUTTON: 3 // 按钮\n\n};\n/**\n * 角色的类型枚举\n */\n\nexports.SystemMenuTypeEnum = SystemMenuTypeEnum;\nvar SystemRoleTypeEnum = {\n SYSTEM: 1,\n // 内置角色\n CUSTOM: 2 // 自定义角色\n\n};\n/**\n * 数据权限的范围枚举\n */\n\nexports.SystemRoleTypeEnum = SystemRoleTypeEnum;\nvar SystemDataScopeEnum = {\n ALL: 1,\n // 全部数据权限\n DEPT_CUSTOM: 2,\n // 指定部门数据权限\n DEPT_ONLY: 3,\n // 部门数据权限\n DEPT_AND_CHILD: 4,\n // 部门及以下数据权限\n DEPT_SELF: 5 // 仅本人数据权限\n\n};\n/**\n * 代码生成模板类型\n */\n\nexports.SystemDataScopeEnum = SystemDataScopeEnum;\nvar InfraCodegenTemplateTypeEnum = {\n CRUD: 1,\n // 基础 CRUD\n TREE: 2,\n // 树形 CRUD\n SUB: 3 // 主子表 CRUD\n\n};\n/**\n * 任务状态的枚举\n */\n\nexports.InfraCodegenTemplateTypeEnum = InfraCodegenTemplateTypeEnum;\nvar InfraJobStatusEnum = {\n INIT: 0,\n // 初始化中\n NORMAL: 1,\n // 运行中\n STOP: 2 // 暂停运行\n\n};\n/**\n * API 异常数据的处理状态\n */\n\nexports.InfraJobStatusEnum = InfraJobStatusEnum;\nvar InfraApiErrorLogProcessStatusEnum = {\n INIT: 0,\n // 未处理\n DONE: 1,\n // 已处理\n IGNORE: 2 // 已忽略\n\n};\n/**\n * 用户的社交平台的类型枚举\n */\n\nexports.InfraApiErrorLogProcessStatusEnum = InfraApiErrorLogProcessStatusEnum;\nvar SystemUserSocialTypeEnum = {\n DINGTALK: {\n title: \"钉钉\",\n type: 20,\n source: \"dingtalk\",\n img: \"https://cdn.jsdelivr.net/gh/justauth/justauth-oauth-logo@1.11/dingtalk.png\"\n },\n WECHAT_ENTERPRISE: {\n title: \"企业微信\",\n type: 30,\n source: \"wechat_enterprise\",\n img: \"https://cdn.jsdelivr.net/gh/justauth/justauth-oauth-logo@1.11/wechat_enterprise.png\"\n }\n};\n/**\n * 支付渠道枚举\n */\n\nexports.SystemUserSocialTypeEnum = SystemUserSocialTypeEnum;\nvar PayChannelEnum = {\n WX_PUB: {\n \"code\": \"wx_pub\",\n \"name\": \"微信 JSAPI 支付\"\n },\n WX_LITE: {\n \"code\": \"wx_lite\",\n \"name\": \"微信小程序支付\"\n },\n WX_APP: {\n \"code\": \"wx_app\",\n \"name\": \"微信 APP 支付\"\n },\n ALIPAY_PC: {\n \"code\": \"alipay_pc\",\n \"name\": \"支付宝 PC 网站支付\"\n },\n ALIPAY_WAP: {\n \"code\": \"alipay_wap\",\n \"name\": \"支付宝 WAP 网站支付\"\n },\n ALIPAY_APP: {\n \"code\": \"alipay_app\",\n \"name\": \"支付宝 APP 支付\"\n },\n ALIPAY_QR: {\n \"code\": \"alipay_qr\",\n \"name\": \"支付宝扫码支付\"\n }\n};\n/**\n * 支付类型枚举\n */\n\nexports.PayChannelEnum = PayChannelEnum;\nvar PayType = {\n WECHAT: \"WECHAT\",\n ALIPAY: \"ALIPAY\"\n};\n/**\n * 支付订单状态枚举\n */\n\nexports.PayType = PayType;\nvar PayOrderStatusEnum = {\n WAITING: {\n status: 0,\n name: '未支付'\n },\n SUCCESS: {\n status: 10,\n name: '已支付'\n },\n CLOSED: {\n status: 20,\n name: '未支付'\n }\n};\n/**\n * 支付订单回调状态枚举\n */\n\nexports.PayOrderStatusEnum = PayOrderStatusEnum;\nvar PayOrderNotifyStatusEnum = {\n NO: {\n status: 0,\n name: '未通知'\n },\n SUCCESS: {\n status: 10,\n name: '通知成功'\n },\n FAILURE: {\n status: 20,\n name: '通知失败'\n }\n};\n/**\n * 支付订单退款状态枚举\n */\n\nexports.PayOrderNotifyStatusEnum = PayOrderNotifyStatusEnum;\nvar PayOrderRefundStatusEnum = {\n NO: {\n status: 0,\n name: '未退款'\n },\n SOME: {\n status: 10,\n name: '部分退款'\n },\n ALL: {\n status: 20,\n name: '全部退款'\n }\n};\n/**\n * 支付退款订单状态枚举\n */\n\nexports.PayOrderRefundStatusEnum = PayOrderRefundStatusEnum;\nvar PayRefundStatusEnum = {\n CREATE: {\n status: 0,\n name: '退款订单生成'\n },\n SUCCESS: {\n status: 1,\n name: '退款成功'\n },\n FAILURE: {\n status: 2,\n name: '退款失败'\n },\n PROCESSING_NOTIFY: {\n status: 3,\n name: '退款中,渠道通知结果'\n },\n PROCESSING_QUERY: {\n status: 4,\n name: '退款中,系统查询结果'\n },\n UNKNOWN_RETRY: {\n status: 5,\n name: '状态未知,请重试'\n },\n UNKNOWN_QUERY: {\n status: 6,\n name: '状态未知,系统查询结果'\n },\n CLOSE: {\n status: 99,\n name: '退款关闭'\n }\n};\nexports.PayRefundStatusEnum = PayRefundStatusEnum;\n\n//# sourceURL=webpack:///./src/utils/constants.js?"); +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar createListSimply = __webpack_require__(/*! ../helper/createListSimply */ \"./node_modules/echarts/lib/chart/helper/createListSimply.js\");\n\nvar SeriesModel = __webpack_require__(/*! ../../model/Series */ \"./node_modules/echarts/lib/model/Series.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar GaugeSeries = SeriesModel.extend({\n type: 'series.gauge',\n getInitialData: function (option, ecModel) {\n return createListSimply(this, ['value']);\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n // 默认全局居中\n center: ['50%', '50%'],\n legendHoverLink: true,\n radius: '75%',\n startAngle: 225,\n endAngle: -45,\n clockwise: true,\n // 最小值\n min: 0,\n // 最大值\n max: 100,\n // 分割段数,默认为10\n splitNumber: 10,\n // 坐标轴线\n axisLine: {\n // 默认显示,属性show控制显示与否\n show: true,\n lineStyle: {\n // 属性lineStyle控制线条样式\n color: [[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']],\n width: 30\n }\n },\n // 分隔线\n splitLine: {\n // 默认显示,属性show控制显示与否\n show: true,\n // 属性length控制线长\n length: 30,\n // 属性lineStyle(详见lineStyle)控制线条样式\n lineStyle: {\n color: '#eee',\n width: 2,\n type: 'solid'\n }\n },\n // 坐标轴小标记\n axisTick: {\n // 属性show控制显示与否,默认不显示\n show: true,\n // 每份split细分多少段\n splitNumber: 5,\n // 属性length控制线长\n length: 8,\n // 属性lineStyle控制线条样式\n lineStyle: {\n color: '#eee',\n width: 1,\n type: 'solid'\n }\n },\n axisLabel: {\n show: true,\n distance: 5,\n // formatter: null,\n color: 'auto'\n },\n pointer: {\n show: true,\n length: '80%',\n width: 8\n },\n itemStyle: {\n color: 'auto'\n },\n title: {\n show: true,\n // x, y,单位px\n offsetCenter: [0, '-40%'],\n // 其余属性默认使用全局文本样式,详见TEXTSTYLE\n color: '#333',\n fontSize: 15\n },\n detail: {\n show: true,\n backgroundColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n borderColor: '#ccc',\n width: 100,\n height: null,\n // self-adaption\n padding: [5, 10],\n // x, y,单位px\n offsetCenter: [0, '40%'],\n // formatter: null,\n // 其余属性默认使用全局文本样式,详见TEXTSTYLE\n color: 'auto',\n fontSize: 30\n }\n }\n});\nvar _default = GaugeSeries;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/gauge/GaugeSeries.js?"); /***/ }), -/***/ "./src/utils/db.js": -/*!*************************!*\ - !*** ./src/utils/db.js ***! - \*************************/ +/***/ "./node_modules/echarts/lib/chart/gauge/GaugeView.js": +/*!***********************************************************!*\ + !*** ./node_modules/echarts/lib/chart/gauge/GaugeView.js ***! + \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -"use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getDrawingList = getDrawingList;\nexports.getFormConf = getFormConf;\nexports.getIdGlobal = getIdGlobal;\nexports.getTreeNodeId = getTreeNodeId;\nexports.saveDrawingList = saveDrawingList;\nexports.saveFormConf = saveFormConf;\nexports.saveIdGlobal = saveIdGlobal;\nexports.saveTreeNodeId = saveTreeNodeId;\n\n__webpack_require__(/*! core-js/modules/es.json.stringify.js */ \"./node_modules/core-js/modules/es.json.stringify.js\");\n\nvar DRAWING_ITEMS = 'drawingItems';\nvar DRAWING_ITEMS_VERSION = '1.2';\nvar DRAWING_ITEMS_VERSION_KEY = 'DRAWING_ITEMS_VERSION';\nvar DRAWING_ID = 'idGlobal';\nvar TREE_NODE_ID = 'treeNodeId';\nvar FORM_CONF = 'formConf';\n\nfunction getDrawingList() {\n // 加入缓存版本的概念,保证缓存数据与程序匹配\n var version = localStorage.getItem(DRAWING_ITEMS_VERSION_KEY);\n\n if (version !== DRAWING_ITEMS_VERSION) {\n localStorage.setItem(DRAWING_ITEMS_VERSION_KEY, DRAWING_ITEMS_VERSION);\n saveDrawingList([]);\n return null;\n }\n\n var str = localStorage.getItem(DRAWING_ITEMS);\n if (str) return JSON.parse(str);\n return null;\n}\n\nfunction saveDrawingList(list) {\n localStorage.setItem(DRAWING_ITEMS, JSON.stringify(list));\n}\n\nfunction getIdGlobal() {\n var str = localStorage.getItem(DRAWING_ID);\n if (str) return parseInt(str, 10);\n return 100;\n}\n\nfunction saveIdGlobal(id) {\n localStorage.setItem(DRAWING_ID, \"\".concat(id));\n}\n\nfunction getTreeNodeId() {\n var str = localStorage.getItem(TREE_NODE_ID);\n if (str) return parseInt(str, 10);\n return 100;\n}\n\nfunction saveTreeNodeId(id) {\n localStorage.setItem(TREE_NODE_ID, \"\".concat(id));\n}\n\nfunction getFormConf() {\n var str = localStorage.getItem(FORM_CONF);\n if (str) return JSON.parse(str);\n return null;\n}\n\nfunction saveFormConf(obj) {\n localStorage.setItem(FORM_CONF, JSON.stringify(obj));\n}\n\n//# sourceURL=webpack:///./src/utils/db.js?"); +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar PointerPath = __webpack_require__(/*! ./PointerPath */ \"./node_modules/echarts/lib/chart/gauge/PointerPath.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar ChartView = __webpack_require__(/*! ../../view/Chart */ \"./node_modules/echarts/lib/view/Chart.js\");\n\nvar _number = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar parsePercent = _number.parsePercent;\nvar round = _number.round;\nvar linearMap = _number.linearMap;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction parsePosition(seriesModel, api) {\n var center = seriesModel.get('center');\n var width = api.getWidth();\n var height = api.getHeight();\n var size = Math.min(width, height);\n var cx = parsePercent(center[0], api.getWidth());\n var cy = parsePercent(center[1], api.getHeight());\n var r = parsePercent(seriesModel.get('radius'), size / 2);\n return {\n cx: cx,\n cy: cy,\n r: r\n };\n}\n\nfunction formatLabel(label, labelFormatter) {\n if (labelFormatter) {\n if (typeof labelFormatter === 'string') {\n label = labelFormatter.replace('{value}', label != null ? label : '');\n } else if (typeof labelFormatter === 'function') {\n label = labelFormatter(label);\n }\n }\n\n return label;\n}\n\nvar PI2 = Math.PI * 2;\nvar GaugeView = ChartView.extend({\n type: 'gauge',\n render: function (seriesModel, ecModel, api) {\n this.group.removeAll();\n var colorList = seriesModel.get('axisLine.lineStyle.color');\n var posInfo = parsePosition(seriesModel, api);\n\n this._renderMain(seriesModel, ecModel, api, colorList, posInfo);\n },\n dispose: function () {},\n _renderMain: function (seriesModel, ecModel, api, colorList, posInfo) {\n var group = this.group;\n var axisLineModel = seriesModel.getModel('axisLine');\n var lineStyleModel = axisLineModel.getModel('lineStyle');\n var clockwise = seriesModel.get('clockwise');\n var startAngle = -seriesModel.get('startAngle') / 180 * Math.PI;\n var endAngle = -seriesModel.get('endAngle') / 180 * Math.PI;\n var angleRangeSpan = (endAngle - startAngle) % PI2;\n var prevEndAngle = startAngle;\n var axisLineWidth = lineStyleModel.get('width');\n var showAxis = axisLineModel.get('show');\n\n for (var i = 0; showAxis && i < colorList.length; i++) {\n // Clamp\n var percent = Math.min(Math.max(colorList[i][0], 0), 1);\n var endAngle = startAngle + angleRangeSpan * percent;\n var sector = new graphic.Sector({\n shape: {\n startAngle: prevEndAngle,\n endAngle: endAngle,\n cx: posInfo.cx,\n cy: posInfo.cy,\n clockwise: clockwise,\n r0: posInfo.r - axisLineWidth,\n r: posInfo.r\n },\n silent: true\n });\n sector.setStyle({\n fill: colorList[i][1]\n });\n sector.setStyle(lineStyleModel.getLineStyle( // Because we use sector to simulate arc\n // so the properties for stroking are useless\n ['color', 'borderWidth', 'borderColor']));\n group.add(sector);\n prevEndAngle = endAngle;\n }\n\n var getColor = function (percent) {\n // Less than 0\n if (percent <= 0) {\n return colorList[0][1];\n }\n\n for (var i = 0; i < colorList.length; i++) {\n if (colorList[i][0] >= percent && (i === 0 ? 0 : colorList[i - 1][0]) < percent) {\n return colorList[i][1];\n }\n } // More than 1\n\n\n return colorList[i - 1][1];\n };\n\n if (!clockwise) {\n var tmp = startAngle;\n startAngle = endAngle;\n endAngle = tmp;\n }\n\n this._renderTicks(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise);\n\n this._renderPointer(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise);\n\n this._renderTitle(seriesModel, ecModel, api, getColor, posInfo);\n\n this._renderDetail(seriesModel, ecModel, api, getColor, posInfo);\n },\n _renderTicks: function (seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise) {\n var group = this.group;\n var cx = posInfo.cx;\n var cy = posInfo.cy;\n var r = posInfo.r;\n var minVal = +seriesModel.get('min');\n var maxVal = +seriesModel.get('max');\n var splitLineModel = seriesModel.getModel('splitLine');\n var tickModel = seriesModel.getModel('axisTick');\n var labelModel = seriesModel.getModel('axisLabel');\n var splitNumber = seriesModel.get('splitNumber');\n var subSplitNumber = tickModel.get('splitNumber');\n var splitLineLen = parsePercent(splitLineModel.get('length'), r);\n var tickLen = parsePercent(tickModel.get('length'), r);\n var angle = startAngle;\n var step = (endAngle - startAngle) / splitNumber;\n var subStep = step / subSplitNumber;\n var splitLineStyle = splitLineModel.getModel('lineStyle').getLineStyle();\n var tickLineStyle = tickModel.getModel('lineStyle').getLineStyle();\n\n for (var i = 0; i <= splitNumber; i++) {\n var unitX = Math.cos(angle);\n var unitY = Math.sin(angle); // Split line\n\n if (splitLineModel.get('show')) {\n var splitLine = new graphic.Line({\n shape: {\n x1: unitX * r + cx,\n y1: unitY * r + cy,\n x2: unitX * (r - splitLineLen) + cx,\n y2: unitY * (r - splitLineLen) + cy\n },\n style: splitLineStyle,\n silent: true\n });\n\n if (splitLineStyle.stroke === 'auto') {\n splitLine.setStyle({\n stroke: getColor(i / splitNumber)\n });\n }\n\n group.add(splitLine);\n } // Label\n\n\n if (labelModel.get('show')) {\n var label = formatLabel(round(i / splitNumber * (maxVal - minVal) + minVal), labelModel.get('formatter'));\n var distance = labelModel.get('distance');\n var autoColor = getColor(i / splitNumber);\n group.add(new graphic.Text({\n style: graphic.setTextStyle({}, labelModel, {\n text: label,\n x: unitX * (r - splitLineLen - distance) + cx,\n y: unitY * (r - splitLineLen - distance) + cy,\n textVerticalAlign: unitY < -0.4 ? 'top' : unitY > 0.4 ? 'bottom' : 'middle',\n textAlign: unitX < -0.4 ? 'left' : unitX > 0.4 ? 'right' : 'center'\n }, {\n autoColor: autoColor\n }),\n silent: true\n }));\n } // Axis tick\n\n\n if (tickModel.get('show') && i !== splitNumber) {\n for (var j = 0; j <= subSplitNumber; j++) {\n var unitX = Math.cos(angle);\n var unitY = Math.sin(angle);\n var tickLine = new graphic.Line({\n shape: {\n x1: unitX * r + cx,\n y1: unitY * r + cy,\n x2: unitX * (r - tickLen) + cx,\n y2: unitY * (r - tickLen) + cy\n },\n silent: true,\n style: tickLineStyle\n });\n\n if (tickLineStyle.stroke === 'auto') {\n tickLine.setStyle({\n stroke: getColor((i + j / subSplitNumber) / splitNumber)\n });\n }\n\n group.add(tickLine);\n angle += subStep;\n }\n\n angle -= subStep;\n } else {\n angle += step;\n }\n }\n },\n _renderPointer: function (seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise) {\n var group = this.group;\n var oldData = this._data;\n\n if (!seriesModel.get('pointer.show')) {\n // Remove old element\n oldData && oldData.eachItemGraphicEl(function (el) {\n group.remove(el);\n });\n return;\n }\n\n var valueExtent = [+seriesModel.get('min'), +seriesModel.get('max')];\n var angleExtent = [startAngle, endAngle];\n var data = seriesModel.getData();\n var valueDim = data.mapDimension('value');\n data.diff(oldData).add(function (idx) {\n var pointer = new PointerPath({\n shape: {\n angle: startAngle\n }\n });\n graphic.initProps(pointer, {\n shape: {\n angle: linearMap(data.get(valueDim, idx), valueExtent, angleExtent, true)\n }\n }, seriesModel);\n group.add(pointer);\n data.setItemGraphicEl(idx, pointer);\n }).update(function (newIdx, oldIdx) {\n var pointer = oldData.getItemGraphicEl(oldIdx);\n graphic.updateProps(pointer, {\n shape: {\n angle: linearMap(data.get(valueDim, newIdx), valueExtent, angleExtent, true)\n }\n }, seriesModel);\n group.add(pointer);\n data.setItemGraphicEl(newIdx, pointer);\n }).remove(function (idx) {\n var pointer = oldData.getItemGraphicEl(idx);\n group.remove(pointer);\n }).execute();\n data.eachItemGraphicEl(function (pointer, idx) {\n var itemModel = data.getItemModel(idx);\n var pointerModel = itemModel.getModel('pointer');\n pointer.setShape({\n x: posInfo.cx,\n y: posInfo.cy,\n width: parsePercent(pointerModel.get('width'), posInfo.r),\n r: parsePercent(pointerModel.get('length'), posInfo.r)\n });\n pointer.useStyle(itemModel.getModel('itemStyle').getItemStyle());\n\n if (pointer.style.fill === 'auto') {\n pointer.setStyle('fill', getColor(linearMap(data.get(valueDim, idx), valueExtent, [0, 1], true)));\n }\n\n graphic.setHoverStyle(pointer, itemModel.getModel('emphasis.itemStyle').getItemStyle());\n });\n this._data = data;\n },\n _renderTitle: function (seriesModel, ecModel, api, getColor, posInfo) {\n var data = seriesModel.getData();\n var valueDim = data.mapDimension('value');\n var titleModel = seriesModel.getModel('title');\n\n if (titleModel.get('show')) {\n var offsetCenter = titleModel.get('offsetCenter');\n var x = posInfo.cx + parsePercent(offsetCenter[0], posInfo.r);\n var y = posInfo.cy + parsePercent(offsetCenter[1], posInfo.r);\n var minVal = +seriesModel.get('min');\n var maxVal = +seriesModel.get('max');\n var value = seriesModel.getData().get(valueDim, 0);\n var autoColor = getColor(linearMap(value, [minVal, maxVal], [0, 1], true));\n this.group.add(new graphic.Text({\n silent: true,\n style: graphic.setTextStyle({}, titleModel, {\n x: x,\n y: y,\n // FIXME First data name ?\n text: data.getName(0),\n textAlign: 'center',\n textVerticalAlign: 'middle'\n }, {\n autoColor: autoColor,\n forceRich: true\n })\n }));\n }\n },\n _renderDetail: function (seriesModel, ecModel, api, getColor, posInfo) {\n var detailModel = seriesModel.getModel('detail');\n var minVal = +seriesModel.get('min');\n var maxVal = +seriesModel.get('max');\n\n if (detailModel.get('show')) {\n var offsetCenter = detailModel.get('offsetCenter');\n var x = posInfo.cx + parsePercent(offsetCenter[0], posInfo.r);\n var y = posInfo.cy + parsePercent(offsetCenter[1], posInfo.r);\n var width = parsePercent(detailModel.get('width'), posInfo.r);\n var height = parsePercent(detailModel.get('height'), posInfo.r);\n var data = seriesModel.getData();\n var value = data.get(data.mapDimension('value'), 0);\n var autoColor = getColor(linearMap(value, [minVal, maxVal], [0, 1], true));\n this.group.add(new graphic.Text({\n silent: true,\n style: graphic.setTextStyle({}, detailModel, {\n x: x,\n y: y,\n text: formatLabel( // FIXME First data name ?\n value, detailModel.get('formatter')),\n textWidth: isNaN(width) ? null : width,\n textHeight: isNaN(height) ? null : height,\n textAlign: 'center',\n textVerticalAlign: 'middle'\n }, {\n autoColor: autoColor,\n forceRich: true\n })\n }));\n }\n }\n});\nvar _default = GaugeView;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/gauge/GaugeView.js?"); /***/ }), -/***/ "./src/utils/icon.json": -/*!*****************************!*\ - !*** ./src/utils/icon.json ***! - \*****************************/ -/*! exports provided: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, default */ -/***/ (function(module) { - -eval("module.exports = JSON.parse(\"[\\\"platform-eleme\\\",\\\"eleme\\\",\\\"delete-solid\\\",\\\"delete\\\",\\\"s-tools\\\",\\\"setting\\\",\\\"user-solid\\\",\\\"user\\\",\\\"phone\\\",\\\"phone-outline\\\",\\\"more\\\",\\\"more-outline\\\",\\\"star-on\\\",\\\"star-off\\\",\\\"s-goods\\\",\\\"goods\\\",\\\"warning\\\",\\\"warning-outline\\\",\\\"question\\\",\\\"info\\\",\\\"remove\\\",\\\"circle-plus\\\",\\\"success\\\",\\\"error\\\",\\\"zoom-in\\\",\\\"zoom-out\\\",\\\"remove-outline\\\",\\\"circle-plus-outline\\\",\\\"circle-check\\\",\\\"circle-close\\\",\\\"s-help\\\",\\\"help\\\",\\\"minus\\\",\\\"plus\\\",\\\"check\\\",\\\"close\\\",\\\"picture\\\",\\\"picture-outline\\\",\\\"picture-outline-round\\\",\\\"upload\\\",\\\"upload2\\\",\\\"download\\\",\\\"camera-solid\\\",\\\"camera\\\",\\\"video-camera-solid\\\",\\\"video-camera\\\",\\\"message-solid\\\",\\\"bell\\\",\\\"s-cooperation\\\",\\\"s-order\\\",\\\"s-platform\\\",\\\"s-fold\\\",\\\"s-unfold\\\",\\\"s-operation\\\",\\\"s-promotion\\\",\\\"s-home\\\",\\\"s-release\\\",\\\"s-ticket\\\",\\\"s-management\\\",\\\"s-open\\\",\\\"s-shop\\\",\\\"s-marketing\\\",\\\"s-flag\\\",\\\"s-comment\\\",\\\"s-finance\\\",\\\"s-claim\\\",\\\"s-custom\\\",\\\"s-opportunity\\\",\\\"s-data\\\",\\\"s-check\\\",\\\"s-grid\\\",\\\"menu\\\",\\\"share\\\",\\\"d-caret\\\",\\\"caret-left\\\",\\\"caret-right\\\",\\\"caret-bottom\\\",\\\"caret-top\\\",\\\"bottom-left\\\",\\\"bottom-right\\\",\\\"back\\\",\\\"right\\\",\\\"bottom\\\",\\\"top\\\",\\\"top-left\\\",\\\"top-right\\\",\\\"arrow-left\\\",\\\"arrow-right\\\",\\\"arrow-down\\\",\\\"arrow-up\\\",\\\"d-arrow-left\\\",\\\"d-arrow-right\\\",\\\"video-pause\\\",\\\"video-play\\\",\\\"refresh\\\",\\\"refresh-right\\\",\\\"refresh-left\\\",\\\"finished\\\",\\\"sort\\\",\\\"sort-up\\\",\\\"sort-down\\\",\\\"rank\\\",\\\"loading\\\",\\\"view\\\",\\\"c-scale-to-original\\\",\\\"date\\\",\\\"edit\\\",\\\"edit-outline\\\",\\\"folder\\\",\\\"folder-opened\\\",\\\"folder-add\\\",\\\"folder-remove\\\",\\\"folder-delete\\\",\\\"folder-checked\\\",\\\"tickets\\\",\\\"document-remove\\\",\\\"document-delete\\\",\\\"document-copy\\\",\\\"document-checked\\\",\\\"document\\\",\\\"document-add\\\",\\\"printer\\\",\\\"paperclip\\\",\\\"takeaway-box\\\",\\\"search\\\",\\\"monitor\\\",\\\"attract\\\",\\\"mobile\\\",\\\"scissors\\\",\\\"umbrella\\\",\\\"headset\\\",\\\"brush\\\",\\\"mouse\\\",\\\"coordinate\\\",\\\"magic-stick\\\",\\\"reading\\\",\\\"data-line\\\",\\\"data-board\\\",\\\"pie-chart\\\",\\\"data-analysis\\\",\\\"collection-tag\\\",\\\"film\\\",\\\"suitcase\\\",\\\"suitcase-1\\\",\\\"receiving\\\",\\\"collection\\\",\\\"files\\\",\\\"notebook-1\\\",\\\"notebook-2\\\",\\\"toilet-paper\\\",\\\"office-building\\\",\\\"school\\\",\\\"table-lamp\\\",\\\"house\\\",\\\"no-smoking\\\",\\\"smoking\\\",\\\"shopping-cart-full\\\",\\\"shopping-cart-1\\\",\\\"shopping-cart-2\\\",\\\"shopping-bag-1\\\",\\\"shopping-bag-2\\\",\\\"sold-out\\\",\\\"sell\\\",\\\"present\\\",\\\"box\\\",\\\"bank-card\\\",\\\"money\\\",\\\"coin\\\",\\\"wallet\\\",\\\"discount\\\",\\\"price-tag\\\",\\\"news\\\",\\\"guide\\\",\\\"male\\\",\\\"female\\\",\\\"thumb\\\",\\\"cpu\\\",\\\"link\\\",\\\"connection\\\",\\\"open\\\",\\\"turn-off\\\",\\\"set-up\\\",\\\"chat-round\\\",\\\"chat-line-round\\\",\\\"chat-square\\\",\\\"chat-dot-round\\\",\\\"chat-dot-square\\\",\\\"chat-line-square\\\",\\\"message\\\",\\\"postcard\\\",\\\"position\\\",\\\"turn-off-microphone\\\",\\\"microphone\\\",\\\"close-notification\\\",\\\"bangzhu\\\",\\\"time\\\",\\\"odometer\\\",\\\"crop\\\",\\\"aim\\\",\\\"switch-button\\\",\\\"full-screen\\\",\\\"copy-document\\\",\\\"mic\\\",\\\"stopwatch\\\",\\\"medal-1\\\",\\\"medal\\\",\\\"trophy\\\",\\\"trophy-1\\\",\\\"first-aid-kit\\\",\\\"discover\\\",\\\"place\\\",\\\"location\\\",\\\"location-outline\\\",\\\"location-information\\\",\\\"add-location\\\",\\\"delete-location\\\",\\\"map-location\\\",\\\"alarm-clock\\\",\\\"timer\\\",\\\"watch-1\\\",\\\"watch\\\",\\\"lock\\\",\\\"unlock\\\",\\\"key\\\",\\\"service\\\",\\\"mobile-phone\\\",\\\"bicycle\\\",\\\"truck\\\",\\\"ship\\\",\\\"basketball\\\",\\\"football\\\",\\\"soccer\\\",\\\"baseball\\\",\\\"wind-power\\\",\\\"light-rain\\\",\\\"lightning\\\",\\\"heavy-rain\\\",\\\"sunrise\\\",\\\"sunrise-1\\\",\\\"sunset\\\",\\\"sunny\\\",\\\"cloudy\\\",\\\"partly-cloudy\\\",\\\"cloudy-and-sunny\\\",\\\"moon\\\",\\\"moon-night\\\",\\\"dish\\\",\\\"dish-1\\\",\\\"food\\\",\\\"chicken\\\",\\\"fork-spoon\\\",\\\"knife-fork\\\",\\\"burger\\\",\\\"tableware\\\",\\\"sugar\\\",\\\"dessert\\\",\\\"ice-cream\\\",\\\"hot-water\\\",\\\"water-cup\\\",\\\"coffee-cup\\\",\\\"cold-drink\\\",\\\"goblet\\\",\\\"goblet-full\\\",\\\"goblet-square\\\",\\\"goblet-square-full\\\",\\\"refrigerator\\\",\\\"grape\\\",\\\"watermelon\\\",\\\"cherry\\\",\\\"apple\\\",\\\"pear\\\",\\\"orange\\\",\\\"coffee\\\",\\\"ice-tea\\\",\\\"ice-drink\\\",\\\"milk-tea\\\",\\\"potato-strips\\\",\\\"lollipop\\\",\\\"ice-cream-square\\\",\\\"ice-cream-round\\\"]\");\n\n//# sourceURL=webpack:///./src/utils/icon.json?"); - -/***/ }), - -/***/ "./src/utils/loadBeautifier.js": -/*!*************************************!*\ - !*** ./src/utils/loadBeautifier.js ***! - \*************************************/ +/***/ "./node_modules/echarts/lib/chart/gauge/PointerPath.js": +/*!*************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/gauge/PointerPath.js ***! + \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -"use strict"; -eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = loadBeautifier;\n\nvar _loadScript = _interopRequireDefault(__webpack_require__(/*! ./loadScript */ \"./src/utils/loadScript.js\"));\n\nvar _elementUi = _interopRequireDefault(__webpack_require__(/*! element-ui */ \"./node_modules/element-ui/lib/element-ui.common.js\"));\n\nvar _pluginsConfig = _interopRequireDefault(__webpack_require__(/*! ./pluginsConfig */ \"./src/utils/pluginsConfig.js\"));\n\nvar beautifierObj;\n\nfunction loadBeautifier(cb) {\n var beautifierUrl = _pluginsConfig.default.beautifierUrl;\n\n if (beautifierObj) {\n cb(beautifierObj);\n return;\n }\n\n var loading = _elementUi.default.Loading.service({\n fullscreen: true,\n lock: true,\n text: '格式化资源加载中...',\n spinner: 'el-icon-loading',\n background: 'rgba(255, 255, 255, 0.5)'\n });\n\n (0, _loadScript.default)(beautifierUrl, function () {\n loading.close(); // eslint-disable-next-line no-undef\n\n beautifierObj = beautifier;\n cb(beautifierObj);\n });\n}\n\n//# sourceURL=webpack:///./src/utils/loadBeautifier.js?"); +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Path = __webpack_require__(/*! zrender/lib/graphic/Path */ \"./node_modules/zrender/lib/graphic/Path.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = Path.extend({\n type: 'echartsGaugePointer',\n shape: {\n angle: 0,\n width: 10,\n r: 10,\n x: 0,\n y: 0\n },\n buildPath: function (ctx, shape) {\n var mathCos = Math.cos;\n var mathSin = Math.sin;\n var r = shape.r;\n var width = shape.width;\n var angle = shape.angle;\n var x = shape.x - mathCos(angle) * width * (width >= r / 3 ? 1 : 2);\n var y = shape.y - mathSin(angle) * width * (width >= r / 3 ? 1 : 2);\n angle = shape.angle - Math.PI / 2;\n ctx.moveTo(x, y);\n ctx.lineTo(shape.x + mathCos(angle) * width, shape.y + mathSin(angle) * width);\n ctx.lineTo(shape.x + mathCos(shape.angle) * r, shape.y + mathSin(shape.angle) * r);\n ctx.lineTo(shape.x - mathCos(angle) * width, shape.y - mathSin(angle) * width);\n ctx.lineTo(x, y);\n return;\n }\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/gauge/PointerPath.js?"); /***/ }), -/***/ "./src/utils/loadMonaco.js": -/*!*********************************!*\ - !*** ./src/utils/loadMonaco.js ***! - \*********************************/ +/***/ "./node_modules/echarts/lib/chart/graph.js": +/*!*************************************************!*\ + !*** ./node_modules/echarts/lib/chart/graph.js ***! + \*************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -"use strict"; -eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = loadMonaco;\n\nvar _loadScript = _interopRequireDefault(__webpack_require__(/*! ./loadScript */ \"./src/utils/loadScript.js\"));\n\nvar _elementUi = _interopRequireDefault(__webpack_require__(/*! element-ui */ \"./node_modules/element-ui/lib/element-ui.common.js\"));\n\nvar _pluginsConfig = _interopRequireDefault(__webpack_require__(/*! ./pluginsConfig */ \"./src/utils/pluginsConfig.js\"));\n\n// monaco-editor单例\nvar monacoEidtor;\n/**\n * 动态加载monaco-editor cdn资源\n * @param {Function} cb 回调,必填\n */\n\nfunction loadMonaco(cb) {\n if (monacoEidtor) {\n cb(monacoEidtor);\n return;\n }\n\n var vs = _pluginsConfig.default.monacoEditorUrl; // 使用element ui实现加载提示\n\n var loading = _elementUi.default.Loading.service({\n fullscreen: true,\n lock: true,\n text: '编辑器资源初始化中...',\n spinner: 'el-icon-loading',\n background: 'rgba(255, 255, 255, 0.5)'\n });\n\n !window.require && (window.require = {});\n !window.require.paths && (window.require.paths = {});\n window.require.paths.vs = vs;\n (0, _loadScript.default)(\"\".concat(vs, \"/loader.js\"), function () {\n window.require(['vs/editor/editor.main'], function () {\n loading.close();\n monacoEidtor = window.monaco;\n cb(monacoEidtor);\n });\n });\n}\n\n//# sourceURL=webpack:///./src/utils/loadMonaco.js?"); +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n__webpack_require__(/*! ./graph/GraphSeries */ \"./node_modules/echarts/lib/chart/graph/GraphSeries.js\");\n\n__webpack_require__(/*! ./graph/GraphView */ \"./node_modules/echarts/lib/chart/graph/GraphView.js\");\n\n__webpack_require__(/*! ./graph/graphAction */ \"./node_modules/echarts/lib/chart/graph/graphAction.js\");\n\nvar categoryFilter = __webpack_require__(/*! ./graph/categoryFilter */ \"./node_modules/echarts/lib/chart/graph/categoryFilter.js\");\n\nvar visualSymbol = __webpack_require__(/*! ../visual/symbol */ \"./node_modules/echarts/lib/visual/symbol.js\");\n\nvar categoryVisual = __webpack_require__(/*! ./graph/categoryVisual */ \"./node_modules/echarts/lib/chart/graph/categoryVisual.js\");\n\nvar edgeVisual = __webpack_require__(/*! ./graph/edgeVisual */ \"./node_modules/echarts/lib/chart/graph/edgeVisual.js\");\n\nvar simpleLayout = __webpack_require__(/*! ./graph/simpleLayout */ \"./node_modules/echarts/lib/chart/graph/simpleLayout.js\");\n\nvar circularLayout = __webpack_require__(/*! ./graph/circularLayout */ \"./node_modules/echarts/lib/chart/graph/circularLayout.js\");\n\nvar forceLayout = __webpack_require__(/*! ./graph/forceLayout */ \"./node_modules/echarts/lib/chart/graph/forceLayout.js\");\n\nvar createView = __webpack_require__(/*! ./graph/createView */ \"./node_modules/echarts/lib/chart/graph/createView.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerProcessor(categoryFilter);\necharts.registerVisual(visualSymbol('graph', 'circle', null));\necharts.registerVisual(categoryVisual);\necharts.registerVisual(edgeVisual);\necharts.registerLayout(simpleLayout);\necharts.registerLayout(echarts.PRIORITY.VISUAL.POST_CHART_LAYOUT, circularLayout);\necharts.registerLayout(forceLayout); // Graph view coordinate system\n\necharts.registerCoordinateSystem('graphView', {\n create: createView\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/graph.js?"); /***/ }), -/***/ "./src/views/bpm/form/formEditor.vue": +/***/ "./node_modules/echarts/lib/chart/graph/GraphSeries.js": +/*!*************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/graph/GraphSeries.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar List = __webpack_require__(/*! ../../data/List */ \"./node_modules/echarts/lib/data/List.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar _model = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar defaultEmphasis = _model.defaultEmphasis;\n\nvar Model = __webpack_require__(/*! ../../model/Model */ \"./node_modules/echarts/lib/model/Model.js\");\n\nvar _format = __webpack_require__(/*! ../../util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\nvar encodeHTML = _format.encodeHTML;\n\nvar createGraphFromNodeEdge = __webpack_require__(/*! ../helper/createGraphFromNodeEdge */ \"./node_modules/echarts/lib/chart/helper/createGraphFromNodeEdge.js\");\n\nvar LegendVisualProvider = __webpack_require__(/*! ../../visual/LegendVisualProvider */ \"./node_modules/echarts/lib/visual/LegendVisualProvider.js\");\n\nvar _multipleGraphEdgeHelper = __webpack_require__(/*! ../helper/multipleGraphEdgeHelper */ \"./node_modules/echarts/lib/chart/helper/multipleGraphEdgeHelper.js\");\n\nvar initCurvenessList = _multipleGraphEdgeHelper.initCurvenessList;\nvar createEdgeMapForCurveness = _multipleGraphEdgeHelper.createEdgeMapForCurveness;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar GraphSeries = echarts.extendSeriesModel({\n type: 'series.graph',\n init: function (option) {\n GraphSeries.superApply(this, 'init', arguments);\n var self = this;\n\n function getCategoriesData() {\n return self._categoriesData;\n } // Provide data for legend select\n\n\n this.legendVisualProvider = new LegendVisualProvider(getCategoriesData, getCategoriesData);\n this.fillDataTextStyle(option.edges || option.links);\n\n this._updateCategoriesData();\n },\n mergeOption: function (option) {\n GraphSeries.superApply(this, 'mergeOption', arguments);\n this.fillDataTextStyle(option.edges || option.links);\n\n this._updateCategoriesData();\n },\n mergeDefaultAndTheme: function (option) {\n GraphSeries.superApply(this, 'mergeDefaultAndTheme', arguments);\n defaultEmphasis(option, ['edgeLabel'], ['show']);\n },\n getInitialData: function (option, ecModel) {\n var edges = option.edges || option.links || [];\n var nodes = option.data || option.nodes || [];\n var self = this;\n\n if (nodes && edges) {\n // auto curveness\n initCurvenessList(this);\n var graph = createGraphFromNodeEdge(nodes, edges, this, true, beforeLink);\n zrUtil.each(graph.edges, function (edge) {\n createEdgeMapForCurveness(edge.node1, edge.node2, this, edge.dataIndex);\n }, this);\n return graph.data;\n }\n\n function beforeLink(nodeData, edgeData) {\n // Overwrite nodeData.getItemModel to\n nodeData.wrapMethod('getItemModel', function (model) {\n var categoriesModels = self._categoriesModels;\n var categoryIdx = model.getShallow('category');\n var categoryModel = categoriesModels[categoryIdx];\n\n if (categoryModel) {\n categoryModel.parentModel = model.parentModel;\n model.parentModel = categoryModel;\n }\n\n return model;\n });\n var edgeLabelModel = self.getModel('edgeLabel'); // For option `edgeLabel` can be found by label.xxx.xxx on item mode.\n\n var fakeSeriesModel = new Model({\n label: edgeLabelModel.option\n }, edgeLabelModel.parentModel, ecModel);\n var emphasisEdgeLabelModel = self.getModel('emphasis.edgeLabel');\n var emphasisFakeSeriesModel = new Model({\n emphasis: {\n label: emphasisEdgeLabelModel.option\n }\n }, emphasisEdgeLabelModel.parentModel, ecModel);\n edgeData.wrapMethod('getItemModel', function (model) {\n model.customizeGetParent(edgeGetParent);\n return model;\n });\n\n function edgeGetParent(path) {\n path = this.parsePath(path);\n return path && path[0] === 'label' ? fakeSeriesModel : path && path[0] === 'emphasis' && path[1] === 'label' ? emphasisFakeSeriesModel : this.parentModel;\n }\n }\n },\n\n /**\n * @return {module:echarts/data/Graph}\n */\n getGraph: function () {\n return this.getData().graph;\n },\n\n /**\n * @return {module:echarts/data/List}\n */\n getEdgeData: function () {\n return this.getGraph().edgeData;\n },\n\n /**\n * @return {module:echarts/data/List}\n */\n getCategoriesData: function () {\n return this._categoriesData;\n },\n\n /**\n * @override\n */\n formatTooltip: function (dataIndex, multipleSeries, dataType) {\n if (dataType === 'edge') {\n var nodeData = this.getData();\n var params = this.getDataParams(dataIndex, dataType);\n var edge = nodeData.graph.getEdgeByIndex(dataIndex);\n var sourceName = nodeData.getName(edge.node1.dataIndex);\n var targetName = nodeData.getName(edge.node2.dataIndex);\n var html = [];\n sourceName != null && html.push(sourceName);\n targetName != null && html.push(targetName);\n html = encodeHTML(html.join(' > '));\n\n if (params.value) {\n html += ' : ' + encodeHTML(params.value);\n }\n\n return html;\n } else {\n // dataType === 'node' or empty\n return GraphSeries.superApply(this, 'formatTooltip', arguments);\n }\n },\n _updateCategoriesData: function () {\n var categories = zrUtil.map(this.option.categories || [], function (category) {\n // Data must has value\n return category.value != null ? category : zrUtil.extend({\n value: 0\n }, category);\n });\n var categoriesData = new List(['value'], this);\n categoriesData.initData(categories);\n this._categoriesData = categoriesData;\n this._categoriesModels = categoriesData.mapArray(function (idx) {\n return categoriesData.getItemModel(idx, true);\n });\n },\n setZoom: function (zoom) {\n this.option.zoom = zoom;\n },\n setCenter: function (center) {\n this.option.center = center;\n },\n isAnimationEnabled: function () {\n return GraphSeries.superCall(this, 'isAnimationEnabled') // Not enable animation when do force layout\n && !(this.get('layout') === 'force' && this.get('force.layoutAnimation'));\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n coordinateSystem: 'view',\n // Default option for all coordinate systems\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // polarIndex: 0,\n // geoIndex: 0,\n legendHoverLink: true,\n hoverAnimation: true,\n layout: null,\n focusNodeAdjacency: false,\n // Configuration of circular layout\n circular: {\n rotateLabel: false\n },\n // Configuration of force directed layout\n force: {\n initLayout: null,\n // Node repulsion. Can be an array to represent range.\n repulsion: [0, 50],\n gravity: 0.1,\n // Initial friction\n friction: 0.6,\n // Edge length. Can be an array to represent range.\n edgeLength: 30,\n layoutAnimation: true\n },\n left: 'center',\n top: 'center',\n // right: null,\n // bottom: null,\n // width: '80%',\n // height: '80%',\n symbol: 'circle',\n symbolSize: 10,\n edgeSymbol: ['none', 'none'],\n edgeSymbolSize: 10,\n edgeLabel: {\n position: 'middle',\n distance: 5\n },\n draggable: false,\n roam: false,\n // Default on center of graph\n center: null,\n zoom: 1,\n // Symbol size scale ratio in roam\n nodeScaleRatio: 0.6,\n // cursor: null,\n // categories: [],\n // data: []\n // Or\n // nodes: []\n //\n // links: []\n // Or\n // edges: []\n label: {\n show: false,\n formatter: '{b}'\n },\n itemStyle: {},\n lineStyle: {\n color: '#aaa',\n width: 1,\n opacity: 0.5\n },\n emphasis: {\n label: {\n show: true\n }\n }\n }\n});\nvar _default = GraphSeries;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/graph/GraphSeries.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/graph/GraphView.js": +/*!***********************************************************!*\ + !*** ./node_modules/echarts/lib/chart/graph/GraphView.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar SymbolDraw = __webpack_require__(/*! ../helper/SymbolDraw */ \"./node_modules/echarts/lib/chart/helper/SymbolDraw.js\");\n\nvar LineDraw = __webpack_require__(/*! ../helper/LineDraw */ \"./node_modules/echarts/lib/chart/helper/LineDraw.js\");\n\nvar RoamController = __webpack_require__(/*! ../../component/helper/RoamController */ \"./node_modules/echarts/lib/component/helper/RoamController.js\");\n\nvar roamHelper = __webpack_require__(/*! ../../component/helper/roamHelper */ \"./node_modules/echarts/lib/component/helper/roamHelper.js\");\n\nvar _cursorHelper = __webpack_require__(/*! ../../component/helper/cursorHelper */ \"./node_modules/echarts/lib/component/helper/cursorHelper.js\");\n\nvar onIrrelevantElement = _cursorHelper.onIrrelevantElement;\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar adjustEdge = __webpack_require__(/*! ./adjustEdge */ \"./node_modules/echarts/lib/chart/graph/adjustEdge.js\");\n\nvar _graphHelper = __webpack_require__(/*! ./graphHelper */ \"./node_modules/echarts/lib/chart/graph/graphHelper.js\");\n\nvar getNodeGlobalScale = _graphHelper.getNodeGlobalScale;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar FOCUS_ADJACENCY = '__focusNodeAdjacency';\nvar UNFOCUS_ADJACENCY = '__unfocusNodeAdjacency';\nvar nodeOpacityPath = ['itemStyle', 'opacity'];\nvar lineOpacityPath = ['lineStyle', 'opacity'];\n\nfunction getItemOpacity(item, opacityPath) {\n var opacity = item.getVisual('opacity');\n return opacity != null ? opacity : item.getModel().get(opacityPath);\n}\n\nfunction fadeOutItem(item, opacityPath, opacityRatio) {\n var el = item.getGraphicEl();\n var opacity = getItemOpacity(item, opacityPath);\n\n if (opacityRatio != null) {\n opacity == null && (opacity = 1);\n opacity *= opacityRatio;\n }\n\n el.downplay && el.downplay();\n el.traverse(function (child) {\n if (!child.isGroup) {\n var opct = child.lineLabelOriginalOpacity;\n\n if (opct == null || opacityRatio != null) {\n opct = opacity;\n }\n\n child.setStyle('opacity', opct);\n }\n });\n}\n\nfunction fadeInItem(item, opacityPath) {\n var opacity = getItemOpacity(item, opacityPath);\n var el = item.getGraphicEl(); // Should go back to normal opacity first, consider hoverLayer,\n // where current state is copied to elMirror, and support\n // emphasis opacity here.\n\n el.traverse(function (child) {\n !child.isGroup && child.setStyle('opacity', opacity);\n });\n el.highlight && el.highlight();\n}\n\nvar _default = echarts.extendChartView({\n type: 'graph',\n init: function (ecModel, api) {\n var symbolDraw = new SymbolDraw();\n var lineDraw = new LineDraw();\n var group = this.group;\n this._controller = new RoamController(api.getZr());\n this._controllerHost = {\n target: group\n };\n group.add(symbolDraw.group);\n group.add(lineDraw.group);\n this._symbolDraw = symbolDraw;\n this._lineDraw = lineDraw;\n this._firstRender = true;\n },\n render: function (seriesModel, ecModel, api) {\n var graphView = this;\n var coordSys = seriesModel.coordinateSystem;\n this._model = seriesModel;\n var symbolDraw = this._symbolDraw;\n var lineDraw = this._lineDraw;\n var group = this.group;\n\n if (coordSys.type === 'view') {\n var groupNewProp = {\n position: coordSys.position,\n scale: coordSys.scale\n };\n\n if (this._firstRender) {\n group.attr(groupNewProp);\n } else {\n graphic.updateProps(group, groupNewProp, seriesModel);\n }\n } // Fix edge contact point with node\n\n\n adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));\n var data = seriesModel.getData();\n symbolDraw.updateData(data);\n var edgeData = seriesModel.getEdgeData();\n lineDraw.updateData(edgeData);\n\n this._updateNodeAndLinkScale();\n\n this._updateController(seriesModel, ecModel, api);\n\n clearTimeout(this._layoutTimeout);\n var forceLayout = seriesModel.forceLayout;\n var layoutAnimation = seriesModel.get('force.layoutAnimation');\n\n if (forceLayout) {\n this._startForceLayoutIteration(forceLayout, layoutAnimation);\n }\n\n data.eachItemGraphicEl(function (el, idx) {\n var itemModel = data.getItemModel(idx); // Update draggable\n\n el.off('drag').off('dragend');\n var draggable = itemModel.get('draggable');\n\n if (draggable) {\n el.on('drag', function () {\n if (forceLayout) {\n forceLayout.warmUp();\n !this._layouting && this._startForceLayoutIteration(forceLayout, layoutAnimation);\n forceLayout.setFixed(idx); // Write position back to layout\n\n data.setItemLayout(idx, el.position);\n }\n }, this).on('dragend', function () {\n if (forceLayout) {\n forceLayout.setUnfixed(idx);\n }\n }, this);\n }\n\n el.setDraggable(draggable && forceLayout);\n el[FOCUS_ADJACENCY] && el.off('mouseover', el[FOCUS_ADJACENCY]);\n el[UNFOCUS_ADJACENCY] && el.off('mouseout', el[UNFOCUS_ADJACENCY]);\n\n if (itemModel.get('focusNodeAdjacency')) {\n el.on('mouseover', el[FOCUS_ADJACENCY] = function () {\n graphView._clearTimer();\n\n api.dispatchAction({\n type: 'focusNodeAdjacency',\n seriesId: seriesModel.id,\n dataIndex: el.dataIndex\n });\n });\n el.on('mouseout', el[UNFOCUS_ADJACENCY] = function () {\n graphView._dispatchUnfocus(api);\n });\n }\n }, this);\n data.graph.eachEdge(function (edge) {\n var el = edge.getGraphicEl();\n el[FOCUS_ADJACENCY] && el.off('mouseover', el[FOCUS_ADJACENCY]);\n el[UNFOCUS_ADJACENCY] && el.off('mouseout', el[UNFOCUS_ADJACENCY]);\n\n if (edge.getModel().get('focusNodeAdjacency')) {\n el.on('mouseover', el[FOCUS_ADJACENCY] = function () {\n graphView._clearTimer();\n\n api.dispatchAction({\n type: 'focusNodeAdjacency',\n seriesId: seriesModel.id,\n edgeDataIndex: edge.dataIndex\n });\n });\n el.on('mouseout', el[UNFOCUS_ADJACENCY] = function () {\n graphView._dispatchUnfocus(api);\n });\n }\n });\n var circularRotateLabel = seriesModel.get('layout') === 'circular' && seriesModel.get('circular.rotateLabel');\n var cx = data.getLayout('cx');\n var cy = data.getLayout('cy');\n data.eachItemGraphicEl(function (el, idx) {\n var itemModel = data.getItemModel(idx);\n var labelRotate = itemModel.get('label.rotate') || 0;\n var symbolPath = el.getSymbolPath();\n\n if (circularRotateLabel) {\n var pos = data.getItemLayout(idx);\n var rad = Math.atan2(pos[1] - cy, pos[0] - cx);\n\n if (rad < 0) {\n rad = Math.PI * 2 + rad;\n }\n\n var isLeft = pos[0] < cx;\n\n if (isLeft) {\n rad = rad - Math.PI;\n }\n\n var textPosition = isLeft ? 'left' : 'right';\n graphic.modifyLabelStyle(symbolPath, {\n textRotation: -rad,\n textPosition: textPosition,\n textOrigin: 'center'\n }, {\n textPosition: textPosition\n });\n } else {\n graphic.modifyLabelStyle(symbolPath, {\n textRotation: labelRotate *= Math.PI / 180\n });\n }\n });\n this._firstRender = false;\n },\n dispose: function () {\n this._controller && this._controller.dispose();\n this._controllerHost = {};\n\n this._clearTimer();\n },\n _dispatchUnfocus: function (api, opt) {\n var self = this;\n\n this._clearTimer();\n\n this._unfocusDelayTimer = setTimeout(function () {\n self._unfocusDelayTimer = null;\n api.dispatchAction({\n type: 'unfocusNodeAdjacency',\n seriesId: self._model.id\n });\n }, 500);\n },\n _clearTimer: function () {\n if (this._unfocusDelayTimer) {\n clearTimeout(this._unfocusDelayTimer);\n this._unfocusDelayTimer = null;\n }\n },\n focusNodeAdjacency: function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var graph = data.graph;\n var dataIndex = payload.dataIndex;\n var edgeDataIndex = payload.edgeDataIndex;\n var node = graph.getNodeByIndex(dataIndex);\n var edge = graph.getEdgeByIndex(edgeDataIndex);\n\n if (!node && !edge) {\n return;\n }\n\n graph.eachNode(function (node) {\n fadeOutItem(node, nodeOpacityPath, 0.1);\n });\n graph.eachEdge(function (edge) {\n fadeOutItem(edge, lineOpacityPath, 0.1);\n });\n\n if (node) {\n fadeInItem(node, nodeOpacityPath);\n zrUtil.each(node.edges, function (adjacentEdge) {\n if (adjacentEdge.dataIndex < 0) {\n return;\n }\n\n fadeInItem(adjacentEdge, lineOpacityPath);\n fadeInItem(adjacentEdge.node1, nodeOpacityPath);\n fadeInItem(adjacentEdge.node2, nodeOpacityPath);\n });\n }\n\n if (edge) {\n fadeInItem(edge, lineOpacityPath);\n fadeInItem(edge.node1, nodeOpacityPath);\n fadeInItem(edge.node2, nodeOpacityPath);\n }\n },\n unfocusNodeAdjacency: function (seriesModel, ecModel, api, payload) {\n var graph = seriesModel.getData().graph;\n graph.eachNode(function (node) {\n fadeOutItem(node, nodeOpacityPath);\n });\n graph.eachEdge(function (edge) {\n fadeOutItem(edge, lineOpacityPath);\n });\n },\n _startForceLayoutIteration: function (forceLayout, layoutAnimation) {\n var self = this;\n\n (function step() {\n forceLayout.step(function (stopped) {\n self.updateLayout(self._model);\n (self._layouting = !stopped) && (layoutAnimation ? self._layoutTimeout = setTimeout(step, 16) : step());\n });\n })();\n },\n _updateController: function (seriesModel, ecModel, api) {\n var controller = this._controller;\n var controllerHost = this._controllerHost;\n var group = this.group;\n controller.setPointerChecker(function (e, x, y) {\n var rect = group.getBoundingRect();\n rect.applyTransform(group.transform);\n return rect.contain(x, y) && !onIrrelevantElement(e, api, seriesModel);\n });\n\n if (seriesModel.coordinateSystem.type !== 'view') {\n controller.disable();\n return;\n }\n\n controller.enable(seriesModel.get('roam'));\n controllerHost.zoomLimit = seriesModel.get('scaleLimit');\n controllerHost.zoom = seriesModel.coordinateSystem.getZoom();\n controller.off('pan').off('zoom').on('pan', function (e) {\n roamHelper.updateViewOnPan(controllerHost, e.dx, e.dy);\n api.dispatchAction({\n seriesId: seriesModel.id,\n type: 'graphRoam',\n dx: e.dx,\n dy: e.dy\n });\n }).on('zoom', function (e) {\n roamHelper.updateViewOnZoom(controllerHost, e.scale, e.originX, e.originY);\n api.dispatchAction({\n seriesId: seriesModel.id,\n type: 'graphRoam',\n zoom: e.scale,\n originX: e.originX,\n originY: e.originY\n });\n\n this._updateNodeAndLinkScale();\n\n adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));\n\n this._lineDraw.updateLayout();\n }, this);\n },\n _updateNodeAndLinkScale: function () {\n var seriesModel = this._model;\n var data = seriesModel.getData();\n var nodeScale = getNodeGlobalScale(seriesModel);\n var invScale = [nodeScale, nodeScale];\n data.eachItemGraphicEl(function (el, idx) {\n el.attr('scale', invScale);\n });\n },\n updateLayout: function (seriesModel) {\n adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));\n\n this._symbolDraw.updateLayout();\n\n this._lineDraw.updateLayout();\n },\n remove: function (ecModel, api) {\n this._symbolDraw && this._symbolDraw.remove();\n this._lineDraw && this._lineDraw.remove();\n }\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/graph/GraphView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/graph/adjustEdge.js": +/*!************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/graph/adjustEdge.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar curveTool = __webpack_require__(/*! zrender/lib/core/curve */ \"./node_modules/zrender/lib/core/curve.js\");\n\nvar vec2 = __webpack_require__(/*! zrender/lib/core/vector */ \"./node_modules/zrender/lib/core/vector.js\");\n\nvar _graphHelper = __webpack_require__(/*! ./graphHelper */ \"./node_modules/echarts/lib/chart/graph/graphHelper.js\");\n\nvar getSymbolSize = _graphHelper.getSymbolSize;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar v1 = [];\nvar v2 = [];\nvar v3 = [];\nvar quadraticAt = curveTool.quadraticAt;\nvar v2DistSquare = vec2.distSquare;\nvar mathAbs = Math.abs;\n\nfunction intersectCurveCircle(curvePoints, center, radius) {\n var p0 = curvePoints[0];\n var p1 = curvePoints[1];\n var p2 = curvePoints[2];\n var d = Infinity;\n var t;\n var radiusSquare = radius * radius;\n var interval = 0.1;\n\n for (var _t = 0.1; _t <= 0.9; _t += 0.1) {\n v1[0] = quadraticAt(p0[0], p1[0], p2[0], _t);\n v1[1] = quadraticAt(p0[1], p1[1], p2[1], _t);\n var diff = mathAbs(v2DistSquare(v1, center) - radiusSquare);\n\n if (diff < d) {\n d = diff;\n t = _t;\n }\n } // Assume the segment is monotone,Find root through Bisection method\n // At most 32 iteration\n\n\n for (var i = 0; i < 32; i++) {\n // var prev = t - interval;\n var next = t + interval; // v1[0] = quadraticAt(p0[0], p1[0], p2[0], prev);\n // v1[1] = quadraticAt(p0[1], p1[1], p2[1], prev);\n\n v2[0] = quadraticAt(p0[0], p1[0], p2[0], t);\n v2[1] = quadraticAt(p0[1], p1[1], p2[1], t);\n v3[0] = quadraticAt(p0[0], p1[0], p2[0], next);\n v3[1] = quadraticAt(p0[1], p1[1], p2[1], next);\n var diff = v2DistSquare(v2, center) - radiusSquare;\n\n if (mathAbs(diff) < 1e-2) {\n break;\n } // var prevDiff = v2DistSquare(v1, center) - radiusSquare;\n\n\n var nextDiff = v2DistSquare(v3, center) - radiusSquare;\n interval /= 2;\n\n if (diff < 0) {\n if (nextDiff >= 0) {\n t = t + interval;\n } else {\n t = t - interval;\n }\n } else {\n if (nextDiff >= 0) {\n t = t - interval;\n } else {\n t = t + interval;\n }\n }\n }\n\n return t;\n} // Adjust edge to avoid\n\n\nfunction _default(graph, scale) {\n var tmp0 = [];\n var quadraticSubdivide = curveTool.quadraticSubdivide;\n var pts = [[], [], []];\n var pts2 = [[], []];\n var v = [];\n scale /= 2;\n graph.eachEdge(function (edge, idx) {\n var linePoints = edge.getLayout();\n var fromSymbol = edge.getVisual('fromSymbol');\n var toSymbol = edge.getVisual('toSymbol');\n\n if (!linePoints.__original) {\n linePoints.__original = [vec2.clone(linePoints[0]), vec2.clone(linePoints[1])];\n\n if (linePoints[2]) {\n linePoints.__original.push(vec2.clone(linePoints[2]));\n }\n }\n\n var originalPoints = linePoints.__original; // Quadratic curve\n\n if (linePoints[2] != null) {\n vec2.copy(pts[0], originalPoints[0]);\n vec2.copy(pts[1], originalPoints[2]);\n vec2.copy(pts[2], originalPoints[1]);\n\n if (fromSymbol && fromSymbol !== 'none') {\n var symbolSize = getSymbolSize(edge.node1);\n var t = intersectCurveCircle(pts, originalPoints[0], symbolSize * scale); // Subdivide and get the second\n\n quadraticSubdivide(pts[0][0], pts[1][0], pts[2][0], t, tmp0);\n pts[0][0] = tmp0[3];\n pts[1][0] = tmp0[4];\n quadraticSubdivide(pts[0][1], pts[1][1], pts[2][1], t, tmp0);\n pts[0][1] = tmp0[3];\n pts[1][1] = tmp0[4];\n }\n\n if (toSymbol && toSymbol !== 'none') {\n var symbolSize = getSymbolSize(edge.node2);\n var t = intersectCurveCircle(pts, originalPoints[1], symbolSize * scale); // Subdivide and get the first\n\n quadraticSubdivide(pts[0][0], pts[1][0], pts[2][0], t, tmp0);\n pts[1][0] = tmp0[1];\n pts[2][0] = tmp0[2];\n quadraticSubdivide(pts[0][1], pts[1][1], pts[2][1], t, tmp0);\n pts[1][1] = tmp0[1];\n pts[2][1] = tmp0[2];\n } // Copy back to layout\n\n\n vec2.copy(linePoints[0], pts[0]);\n vec2.copy(linePoints[1], pts[2]);\n vec2.copy(linePoints[2], pts[1]);\n } // Line\n else {\n vec2.copy(pts2[0], originalPoints[0]);\n vec2.copy(pts2[1], originalPoints[1]);\n vec2.sub(v, pts2[1], pts2[0]);\n vec2.normalize(v, v);\n\n if (fromSymbol && fromSymbol !== 'none') {\n var symbolSize = getSymbolSize(edge.node1);\n vec2.scaleAndAdd(pts2[0], pts2[0], v, symbolSize * scale);\n }\n\n if (toSymbol && toSymbol !== 'none') {\n var symbolSize = getSymbolSize(edge.node2);\n vec2.scaleAndAdd(pts2[1], pts2[1], v, -symbolSize * scale);\n }\n\n vec2.copy(linePoints[0], pts2[0]);\n vec2.copy(linePoints[1], pts2[1]);\n }\n });\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/graph/adjustEdge.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/graph/categoryFilter.js": +/*!****************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/graph/categoryFilter.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel) {\n var legendModels = ecModel.findComponents({\n mainType: 'legend'\n });\n\n if (!legendModels || !legendModels.length) {\n return;\n }\n\n ecModel.eachSeriesByType('graph', function (graphSeries) {\n var categoriesData = graphSeries.getCategoriesData();\n var graph = graphSeries.getGraph();\n var data = graph.data;\n var categoryNames = categoriesData.mapArray(categoriesData.getName);\n data.filterSelf(function (idx) {\n var model = data.getItemModel(idx);\n var category = model.getShallow('category');\n\n if (category != null) {\n if (typeof category === 'number') {\n category = categoryNames[category];\n } // If in any legend component the status is not selected.\n\n\n for (var i = 0; i < legendModels.length; i++) {\n if (!legendModels[i].isSelected(category)) {\n return false;\n }\n }\n }\n\n return true;\n });\n }, this);\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/graph/categoryFilter.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/graph/categoryVisual.js": +/*!****************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/graph/categoryVisual.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel) {\n var paletteScope = {};\n ecModel.eachSeriesByType('graph', function (seriesModel) {\n var categoriesData = seriesModel.getCategoriesData();\n var data = seriesModel.getData();\n var categoryNameIdxMap = {};\n categoriesData.each(function (idx) {\n var name = categoriesData.getName(idx); // Add prefix to avoid conflict with Object.prototype.\n\n categoryNameIdxMap['ec-' + name] = idx;\n var itemModel = categoriesData.getItemModel(idx);\n var color = itemModel.get('itemStyle.color') || seriesModel.getColorFromPalette(name, paletteScope);\n categoriesData.setItemVisual(idx, 'color', color);\n var itemStyleList = ['opacity', 'symbol', 'symbolSize', 'symbolKeepAspect'];\n\n for (var i = 0; i < itemStyleList.length; i++) {\n var itemStyle = itemModel.getShallow(itemStyleList[i], true);\n\n if (itemStyle != null) {\n categoriesData.setItemVisual(idx, itemStyleList[i], itemStyle);\n }\n }\n }); // Assign category color to visual\n\n if (categoriesData.count()) {\n data.each(function (idx) {\n var model = data.getItemModel(idx);\n var category = model.getShallow('category');\n\n if (category != null) {\n if (typeof category === 'string') {\n category = categoryNameIdxMap['ec-' + category];\n }\n\n var itemStyleList = ['color', 'opacity', 'symbol', 'symbolSize', 'symbolKeepAspect'];\n\n for (var i = 0; i < itemStyleList.length; i++) {\n if (data.getItemVisual(idx, itemStyleList[i], true) == null) {\n data.setItemVisual(idx, itemStyleList[i], categoriesData.getItemVisual(category, itemStyleList[i]));\n }\n }\n }\n });\n }\n });\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/graph/categoryVisual.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/graph/circularLayout.js": +/*!****************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/graph/circularLayout.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _circularLayoutHelper = __webpack_require__(/*! ./circularLayoutHelper */ \"./node_modules/echarts/lib/chart/graph/circularLayoutHelper.js\");\n\nvar circularLayout = _circularLayoutHelper.circularLayout;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel) {\n ecModel.eachSeriesByType('graph', function (seriesModel) {\n if (seriesModel.get('layout') === 'circular') {\n circularLayout(seriesModel, 'symbolSize');\n }\n });\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/graph/circularLayout.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/graph/circularLayoutHelper.js": +/*!**********************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/graph/circularLayoutHelper.js ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar vec2 = __webpack_require__(/*! zrender/lib/core/vector */ \"./node_modules/zrender/lib/core/vector.js\");\n\nvar _graphHelper = __webpack_require__(/*! ./graphHelper */ \"./node_modules/echarts/lib/chart/graph/graphHelper.js\");\n\nvar getSymbolSize = _graphHelper.getSymbolSize;\nvar getNodeGlobalScale = _graphHelper.getNodeGlobalScale;\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar _multipleGraphEdgeHelper = __webpack_require__(/*! ../helper/multipleGraphEdgeHelper */ \"./node_modules/echarts/lib/chart/helper/multipleGraphEdgeHelper.js\");\n\nvar getCurvenessForEdge = _multipleGraphEdgeHelper.getCurvenessForEdge;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PI = Math.PI;\nvar _symbolRadiansHalf = [];\n/**\n * `basedOn` can be:\n * 'value':\n * This layout is not accurate and have same bad case. For example,\n * if the min value is very smaller than the max value, the nodes\n * with the min value probably overlap even though there is enough\n * space to layout them. So we only use this approach in the as the\n * init layout of the force layout.\n * FIXME\n * Probably we do not need this method any more but use\n * `basedOn: 'symbolSize'` in force layout if\n * delay its init operations to GraphView.\n * 'symbolSize':\n * This approach work only if all of the symbol size calculated.\n * That is, the progressive rendering is not applied to graph.\n * FIXME\n * If progressive rendering is applied to graph some day,\n * probably we have to use `basedOn: 'value'`.\n *\n * @param {module:echarts/src/model/Series} seriesModel\n * @param {string} basedOn 'value' or 'symbolSize'\n */\n\nfunction circularLayout(seriesModel, basedOn) {\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys && coordSys.type !== 'view') {\n return;\n }\n\n var rect = coordSys.getBoundingRect();\n var nodeData = seriesModel.getData();\n var graph = nodeData.graph;\n var cx = rect.width / 2 + rect.x;\n var cy = rect.height / 2 + rect.y;\n var r = Math.min(rect.width, rect.height) / 2;\n var count = nodeData.count();\n nodeData.setLayout({\n cx: cx,\n cy: cy\n });\n\n if (!count) {\n return;\n }\n\n _layoutNodesBasedOn[basedOn](seriesModel, coordSys, graph, nodeData, r, cx, cy, count);\n\n graph.eachEdge(function (edge, index) {\n var curveness = zrUtil.retrieve3(edge.getModel().get('lineStyle.curveness'), getCurvenessForEdge(edge, seriesModel, index), 0);\n var p1 = vec2.clone(edge.node1.getLayout());\n var p2 = vec2.clone(edge.node2.getLayout());\n var cp1;\n var x12 = (p1[0] + p2[0]) / 2;\n var y12 = (p1[1] + p2[1]) / 2;\n\n if (+curveness) {\n curveness *= 3;\n cp1 = [cx * curveness + x12 * (1 - curveness), cy * curveness + y12 * (1 - curveness)];\n }\n\n edge.setLayout([p1, p2, cp1]);\n });\n}\n\nvar _layoutNodesBasedOn = {\n value: function (seriesModel, coordSys, graph, nodeData, r, cx, cy, count) {\n var angle = 0;\n var sum = nodeData.getSum('value');\n var unitAngle = Math.PI * 2 / (sum || count);\n graph.eachNode(function (node) {\n var value = node.getValue('value');\n var radianHalf = unitAngle * (sum ? value : 1) / 2;\n angle += radianHalf;\n node.setLayout([r * Math.cos(angle) + cx, r * Math.sin(angle) + cy]);\n angle += radianHalf;\n });\n },\n symbolSize: function (seriesModel, coordSys, graph, nodeData, r, cx, cy, count) {\n var sumRadian = 0;\n _symbolRadiansHalf.length = count;\n var nodeScale = getNodeGlobalScale(seriesModel);\n graph.eachNode(function (node) {\n var symbolSize = getSymbolSize(node); // Normally this case will not happen, but we still add\n // some the defensive code (2px is an arbitrary value).\n\n isNaN(symbolSize) && (symbolSize = 2);\n symbolSize < 0 && (symbolSize = 0);\n symbolSize *= nodeScale;\n var symbolRadianHalf = Math.asin(symbolSize / 2 / r); // when `symbolSize / 2` is bigger than `r`.\n\n isNaN(symbolRadianHalf) && (symbolRadianHalf = PI / 2);\n _symbolRadiansHalf[node.dataIndex] = symbolRadianHalf;\n sumRadian += symbolRadianHalf * 2;\n });\n var halfRemainRadian = (2 * PI - sumRadian) / count / 2;\n var angle = 0;\n graph.eachNode(function (node) {\n var radianHalf = halfRemainRadian + _symbolRadiansHalf[node.dataIndex];\n angle += radianHalf;\n node.setLayout([r * Math.cos(angle) + cx, r * Math.sin(angle) + cy]);\n angle += radianHalf;\n });\n }\n};\nexports.circularLayout = circularLayout;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/graph/circularLayoutHelper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/graph/createView.js": +/*!************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/graph/createView.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar View = __webpack_require__(/*! ../../coord/View */ \"./node_modules/echarts/lib/coord/View.js\");\n\nvar _layout = __webpack_require__(/*! ../../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar getLayoutRect = _layout.getLayoutRect;\n\nvar bbox = __webpack_require__(/*! zrender/lib/core/bbox */ \"./node_modules/zrender/lib/core/bbox.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// FIXME Where to create the simple view coordinate system\nfunction getViewRect(seriesModel, api, aspect) {\n var option = seriesModel.getBoxLayoutParams();\n option.aspect = aspect;\n return getLayoutRect(option, {\n width: api.getWidth(),\n height: api.getHeight()\n });\n}\n\nfunction _default(ecModel, api) {\n var viewList = [];\n ecModel.eachSeriesByType('graph', function (seriesModel) {\n var coordSysType = seriesModel.get('coordinateSystem');\n\n if (!coordSysType || coordSysType === 'view') {\n var data = seriesModel.getData();\n var positions = data.mapArray(function (idx) {\n var itemModel = data.getItemModel(idx);\n return [+itemModel.get('x'), +itemModel.get('y')];\n });\n var min = [];\n var max = [];\n bbox.fromPoints(positions, min, max); // If width or height is 0\n\n if (max[0] - min[0] === 0) {\n max[0] += 1;\n min[0] -= 1;\n }\n\n if (max[1] - min[1] === 0) {\n max[1] += 1;\n min[1] -= 1;\n }\n\n var aspect = (max[0] - min[0]) / (max[1] - min[1]); // FIXME If get view rect after data processed?\n\n var viewRect = getViewRect(seriesModel, api, aspect); // Position may be NaN, use view rect instead\n\n if (isNaN(aspect)) {\n min = [viewRect.x, viewRect.y];\n max = [viewRect.x + viewRect.width, viewRect.y + viewRect.height];\n }\n\n var bbWidth = max[0] - min[0];\n var bbHeight = max[1] - min[1];\n var viewWidth = viewRect.width;\n var viewHeight = viewRect.height;\n var viewCoordSys = seriesModel.coordinateSystem = new View();\n viewCoordSys.zoomLimit = seriesModel.get('scaleLimit');\n viewCoordSys.setBoundingRect(min[0], min[1], bbWidth, bbHeight);\n viewCoordSys.setViewRect(viewRect.x, viewRect.y, viewWidth, viewHeight); // Update roam info\n\n viewCoordSys.setCenter(seriesModel.get('center'));\n viewCoordSys.setZoom(seriesModel.get('zoom'));\n viewList.push(viewCoordSys);\n }\n });\n return viewList;\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/graph/createView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/graph/edgeVisual.js": +/*!************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/graph/edgeVisual.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction normalize(a) {\n if (!(a instanceof Array)) {\n a = [a, a];\n }\n\n return a;\n}\n\nfunction _default(ecModel) {\n ecModel.eachSeriesByType('graph', function (seriesModel) {\n var graph = seriesModel.getGraph();\n var edgeData = seriesModel.getEdgeData();\n var symbolType = normalize(seriesModel.get('edgeSymbol'));\n var symbolSize = normalize(seriesModel.get('edgeSymbolSize'));\n var colorQuery = 'lineStyle.color'.split('.');\n var opacityQuery = 'lineStyle.opacity'.split('.');\n edgeData.setVisual('fromSymbol', symbolType && symbolType[0]);\n edgeData.setVisual('toSymbol', symbolType && symbolType[1]);\n edgeData.setVisual('fromSymbolSize', symbolSize && symbolSize[0]);\n edgeData.setVisual('toSymbolSize', symbolSize && symbolSize[1]);\n edgeData.setVisual('color', seriesModel.get(colorQuery));\n edgeData.setVisual('opacity', seriesModel.get(opacityQuery));\n edgeData.each(function (idx) {\n var itemModel = edgeData.getItemModel(idx);\n var edge = graph.getEdgeByIndex(idx);\n var symbolType = normalize(itemModel.getShallow('symbol', true));\n var symbolSize = normalize(itemModel.getShallow('symbolSize', true)); // Edge visual must after node visual\n\n var color = itemModel.get(colorQuery);\n var opacity = itemModel.get(opacityQuery);\n\n switch (color) {\n case 'source':\n color = edge.node1.getVisual('color');\n break;\n\n case 'target':\n color = edge.node2.getVisual('color');\n break;\n }\n\n symbolType[0] && edge.setVisual('fromSymbol', symbolType[0]);\n symbolType[1] && edge.setVisual('toSymbol', symbolType[1]);\n symbolSize[0] && edge.setVisual('fromSymbolSize', symbolSize[0]);\n symbolSize[1] && edge.setVisual('toSymbolSize', symbolSize[1]);\n edge.setVisual('color', color);\n edge.setVisual('opacity', opacity);\n });\n });\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/graph/edgeVisual.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/graph/forceHelper.js": +/*!*************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/graph/forceHelper.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar vec2 = __webpack_require__(/*! zrender/lib/core/vector */ \"./node_modules/zrender/lib/core/vector.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* A third-party license is embeded for some of the code in this file:\n* Some formulas were originally copied from \"d3.js\" with some\n* modifications made for this project.\n* (See more details in the comment of the method \"step\" below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\n* ).\n*/\nvar scaleAndAdd = vec2.scaleAndAdd; // function adjacentNode(n, e) {\n// return e.n1 === n ? e.n2 : e.n1;\n// }\n\nfunction forceLayout(nodes, edges, opts) {\n var rect = opts.rect;\n var width = rect.width;\n var height = rect.height;\n var center = [rect.x + width / 2, rect.y + height / 2]; // var scale = opts.scale || 1;\n\n var gravity = opts.gravity == null ? 0.1 : opts.gravity; // for (var i = 0; i < edges.length; i++) {\n // var e = edges[i];\n // var n1 = e.n1;\n // var n2 = e.n2;\n // n1.edges = n1.edges || [];\n // n2.edges = n2.edges || [];\n // n1.edges.push(e);\n // n2.edges.push(e);\n // }\n // Init position\n\n for (var i = 0; i < nodes.length; i++) {\n var n = nodes[i];\n\n if (!n.p) {\n n.p = vec2.create(width * (Math.random() - 0.5) + center[0], height * (Math.random() - 0.5) + center[1]);\n }\n\n n.pp = vec2.clone(n.p);\n n.edges = null;\n } // Formula in 'Graph Drawing by Force-directed Placement'\n // var k = scale * Math.sqrt(width * height / nodes.length);\n // var k2 = k * k;\n\n\n var initialFriction = opts.friction == null ? 0.6 : opts.friction;\n var friction = initialFriction;\n return {\n warmUp: function () {\n friction = initialFriction * 0.8;\n },\n setFixed: function (idx) {\n nodes[idx].fixed = true;\n },\n setUnfixed: function (idx) {\n nodes[idx].fixed = false;\n },\n\n /**\n * Some formulas were originally copied from \"d3.js\"\n * https://github.com/d3/d3/blob/b516d77fb8566b576088e73410437494717ada26/src/layout/force.js\n * with some modifications made for this project.\n * See the license statement at the head of this file.\n */\n step: function (cb) {\n var v12 = [];\n var nLen = nodes.length;\n\n for (var i = 0; i < edges.length; i++) {\n var e = edges[i];\n\n if (e.ignoreForceLayout) {\n continue;\n }\n\n var n1 = e.n1;\n var n2 = e.n2;\n vec2.sub(v12, n2.p, n1.p);\n var d = vec2.len(v12) - e.d;\n var w = n2.w / (n1.w + n2.w);\n\n if (isNaN(w)) {\n w = 0;\n }\n\n vec2.normalize(v12, v12);\n !n1.fixed && scaleAndAdd(n1.p, n1.p, v12, w * d * friction);\n !n2.fixed && scaleAndAdd(n2.p, n2.p, v12, -(1 - w) * d * friction);\n } // Gravity\n\n\n for (var i = 0; i < nLen; i++) {\n var n = nodes[i];\n\n if (!n.fixed) {\n vec2.sub(v12, center, n.p); // var d = vec2.len(v12);\n // vec2.scale(v12, v12, 1 / d);\n // var gravityFactor = gravity;\n\n scaleAndAdd(n.p, n.p, v12, gravity * friction);\n }\n } // Repulsive\n // PENDING\n\n\n for (var i = 0; i < nLen; i++) {\n var n1 = nodes[i];\n\n for (var j = i + 1; j < nLen; j++) {\n var n2 = nodes[j];\n vec2.sub(v12, n2.p, n1.p);\n var d = vec2.len(v12);\n\n if (d === 0) {\n // Random repulse\n vec2.set(v12, Math.random() - 0.5, Math.random() - 0.5);\n d = 1;\n }\n\n var repFact = (n1.rep + n2.rep) / d / d;\n !n1.fixed && scaleAndAdd(n1.pp, n1.pp, v12, repFact);\n !n2.fixed && scaleAndAdd(n2.pp, n2.pp, v12, -repFact);\n }\n }\n\n var v = [];\n\n for (var i = 0; i < nLen; i++) {\n var n = nodes[i];\n\n if (!n.fixed) {\n vec2.sub(v, n.p, n.pp);\n scaleAndAdd(n.p, n.p, v, friction);\n vec2.copy(n.pp, n.p);\n }\n }\n\n friction = friction * 0.992;\n cb && cb(nodes, edges, friction < 0.01);\n }\n };\n}\n\nexports.forceLayout = forceLayout;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/graph/forceHelper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/graph/forceLayout.js": +/*!*************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/graph/forceLayout.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _forceHelper = __webpack_require__(/*! ./forceHelper */ \"./node_modules/echarts/lib/chart/graph/forceHelper.js\");\n\nvar forceLayout = _forceHelper.forceLayout;\n\nvar _simpleLayoutHelper = __webpack_require__(/*! ./simpleLayoutHelper */ \"./node_modules/echarts/lib/chart/graph/simpleLayoutHelper.js\");\n\nvar simpleLayout = _simpleLayoutHelper.simpleLayout;\n\nvar _circularLayoutHelper = __webpack_require__(/*! ./circularLayoutHelper */ \"./node_modules/echarts/lib/chart/graph/circularLayoutHelper.js\");\n\nvar circularLayout = _circularLayoutHelper.circularLayout;\n\nvar _number = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar linearMap = _number.linearMap;\n\nvar vec2 = __webpack_require__(/*! zrender/lib/core/vector */ \"./node_modules/zrender/lib/core/vector.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar _multipleGraphEdgeHelper = __webpack_require__(/*! ../helper/multipleGraphEdgeHelper */ \"./node_modules/echarts/lib/chart/helper/multipleGraphEdgeHelper.js\");\n\nvar getCurvenessForEdge = _multipleGraphEdgeHelper.getCurvenessForEdge;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel) {\n ecModel.eachSeriesByType('graph', function (graphSeries) {\n var coordSys = graphSeries.coordinateSystem;\n\n if (coordSys && coordSys.type !== 'view') {\n return;\n }\n\n if (graphSeries.get('layout') === 'force') {\n var preservedPoints = graphSeries.preservedPoints || {};\n var graph = graphSeries.getGraph();\n var nodeData = graph.data;\n var edgeData = graph.edgeData;\n var forceModel = graphSeries.getModel('force');\n var initLayout = forceModel.get('initLayout');\n\n if (graphSeries.preservedPoints) {\n nodeData.each(function (idx) {\n var id = nodeData.getId(idx);\n nodeData.setItemLayout(idx, preservedPoints[id] || [NaN, NaN]);\n });\n } else if (!initLayout || initLayout === 'none') {\n simpleLayout(graphSeries);\n } else if (initLayout === 'circular') {\n circularLayout(graphSeries, 'value');\n }\n\n var nodeDataExtent = nodeData.getDataExtent('value');\n var edgeDataExtent = edgeData.getDataExtent('value'); // var edgeDataExtent = edgeData.getDataExtent('value');\n\n var repulsion = forceModel.get('repulsion');\n var edgeLength = forceModel.get('edgeLength');\n\n if (!zrUtil.isArray(repulsion)) {\n repulsion = [repulsion, repulsion];\n }\n\n if (!zrUtil.isArray(edgeLength)) {\n edgeLength = [edgeLength, edgeLength];\n } // Larger value has smaller length\n\n\n edgeLength = [edgeLength[1], edgeLength[0]];\n var nodes = nodeData.mapArray('value', function (value, idx) {\n var point = nodeData.getItemLayout(idx);\n var rep = linearMap(value, nodeDataExtent, repulsion);\n\n if (isNaN(rep)) {\n rep = (repulsion[0] + repulsion[1]) / 2;\n }\n\n return {\n w: rep,\n rep: rep,\n fixed: nodeData.getItemModel(idx).get('fixed'),\n p: !point || isNaN(point[0]) || isNaN(point[1]) ? null : point\n };\n });\n var edges = edgeData.mapArray('value', function (value, idx) {\n var edge = graph.getEdgeByIndex(idx);\n var d = linearMap(value, edgeDataExtent, edgeLength);\n\n if (isNaN(d)) {\n d = (edgeLength[0] + edgeLength[1]) / 2;\n }\n\n var edgeModel = edge.getModel();\n var curveness = zrUtil.retrieve3(edgeModel.get('lineStyle.curveness'), -getCurvenessForEdge(edge, graphSeries, idx, true), 0);\n return {\n n1: nodes[edge.node1.dataIndex],\n n2: nodes[edge.node2.dataIndex],\n d: d,\n curveness: curveness,\n ignoreForceLayout: edgeModel.get('ignoreForceLayout')\n };\n });\n var coordSys = graphSeries.coordinateSystem;\n var rect = coordSys.getBoundingRect();\n var forceInstance = forceLayout(nodes, edges, {\n rect: rect,\n gravity: forceModel.get('gravity'),\n friction: forceModel.get('friction')\n });\n var oldStep = forceInstance.step;\n\n forceInstance.step = function (cb) {\n for (var i = 0, l = nodes.length; i < l; i++) {\n if (nodes[i].fixed) {\n // Write back to layout instance\n vec2.copy(nodes[i].p, graph.getNodeByIndex(i).getLayout());\n }\n }\n\n oldStep(function (nodes, edges, stopped) {\n for (var i = 0, l = nodes.length; i < l; i++) {\n if (!nodes[i].fixed) {\n graph.getNodeByIndex(i).setLayout(nodes[i].p);\n }\n\n preservedPoints[nodeData.getId(i)] = nodes[i].p;\n }\n\n for (var i = 0, l = edges.length; i < l; i++) {\n var e = edges[i];\n var edge = graph.getEdgeByIndex(i);\n var p1 = e.n1.p;\n var p2 = e.n2.p;\n var points = edge.getLayout();\n points = points ? points.slice() : [];\n points[0] = points[0] || [];\n points[1] = points[1] || [];\n vec2.copy(points[0], p1);\n vec2.copy(points[1], p2);\n\n if (+e.curveness) {\n points[2] = [(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * e.curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * e.curveness];\n }\n\n edge.setLayout(points);\n } // Update layout\n\n\n cb && cb(stopped);\n });\n };\n\n graphSeries.forceLayout = forceInstance;\n graphSeries.preservedPoints = preservedPoints; // Step to get the layout\n\n forceInstance.step();\n } else {\n // Remove prev injected forceLayout instance\n graphSeries.forceLayout = null;\n }\n });\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/graph/forceLayout.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/graph/graphAction.js": +/*!*************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/graph/graphAction.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar _roamHelper = __webpack_require__(/*! ../../action/roamHelper */ \"./node_modules/echarts/lib/action/roamHelper.js\");\n\nvar updateCenterAndZoom = _roamHelper.updateCenterAndZoom;\n\n__webpack_require__(/*! ../helper/focusNodeAdjacencyAction */ \"./node_modules/echarts/lib/chart/helper/focusNodeAdjacencyAction.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar actionInfo = {\n type: 'graphRoam',\n event: 'graphRoam',\n update: 'none'\n};\n/**\n * @payload\n * @property {string} name Series name\n * @property {number} [dx]\n * @property {number} [dy]\n * @property {number} [zoom]\n * @property {number} [originX]\n * @property {number} [originY]\n */\n\necharts.registerAction(actionInfo, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'series',\n query: payload\n }, function (seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n var res = updateCenterAndZoom(coordSys, payload);\n seriesModel.setCenter && seriesModel.setCenter(res.center);\n seriesModel.setZoom && seriesModel.setZoom(res.zoom);\n });\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/graph/graphAction.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/graph/graphHelper.js": +/*!*************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/graph/graphHelper.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction getNodeGlobalScale(seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys.type !== 'view') {\n return 1;\n }\n\n var nodeScaleRatio = seriesModel.option.nodeScaleRatio;\n var groupScale = coordSys.scale;\n var groupZoom = groupScale && groupScale[0] || 1; // Scale node when zoom changes\n\n var roamZoom = coordSys.getZoom();\n var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1;\n return nodeScale / groupZoom;\n}\n\nfunction getSymbolSize(node) {\n var symbolSize = node.getVisual('symbolSize');\n\n if (symbolSize instanceof Array) {\n symbolSize = (symbolSize[0] + symbolSize[1]) / 2;\n }\n\n return +symbolSize;\n}\n\nexports.getNodeGlobalScale = getNodeGlobalScale;\nexports.getSymbolSize = getSymbolSize;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/graph/graphHelper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/graph/simpleLayout.js": +/*!**************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/graph/simpleLayout.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar each = _util.each;\n\nvar _simpleLayoutHelper = __webpack_require__(/*! ./simpleLayoutHelper */ \"./node_modules/echarts/lib/chart/graph/simpleLayoutHelper.js\");\n\nvar simpleLayout = _simpleLayoutHelper.simpleLayout;\nvar simpleLayoutEdge = _simpleLayoutHelper.simpleLayoutEdge;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel, api) {\n ecModel.eachSeriesByType('graph', function (seriesModel) {\n var layout = seriesModel.get('layout');\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys && coordSys.type !== 'view') {\n var data = seriesModel.getData();\n var dimensions = [];\n each(coordSys.dimensions, function (coordDim) {\n dimensions = dimensions.concat(data.mapDimension(coordDim, true));\n });\n\n for (var dataIndex = 0; dataIndex < data.count(); dataIndex++) {\n var value = [];\n var hasValue = false;\n\n for (var i = 0; i < dimensions.length; i++) {\n var val = data.get(dimensions[i], dataIndex);\n\n if (!isNaN(val)) {\n hasValue = true;\n }\n\n value.push(val);\n }\n\n if (hasValue) {\n data.setItemLayout(dataIndex, coordSys.dataToPoint(value));\n } else {\n // Also {Array.}, not undefined to avoid if...else... statement\n data.setItemLayout(dataIndex, [NaN, NaN]);\n }\n }\n\n simpleLayoutEdge(data.graph, seriesModel);\n } else if (!layout || layout === 'none') {\n simpleLayout(seriesModel);\n }\n });\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/graph/simpleLayout.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/graph/simpleLayoutHelper.js": +/*!********************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/graph/simpleLayoutHelper.js ***! + \********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar vec2 = __webpack_require__(/*! zrender/lib/core/vector */ \"./node_modules/zrender/lib/core/vector.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar _multipleGraphEdgeHelper = __webpack_require__(/*! ../helper/multipleGraphEdgeHelper */ \"./node_modules/echarts/lib/chart/helper/multipleGraphEdgeHelper.js\");\n\nvar getCurvenessForEdge = _multipleGraphEdgeHelper.getCurvenessForEdge;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction simpleLayout(seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys && coordSys.type !== 'view') {\n return;\n }\n\n var graph = seriesModel.getGraph();\n graph.eachNode(function (node) {\n var model = node.getModel();\n node.setLayout([+model.get('x'), +model.get('y')]);\n });\n simpleLayoutEdge(graph, seriesModel);\n}\n\nfunction simpleLayoutEdge(graph, seriesModel) {\n graph.eachEdge(function (edge, index) {\n var curveness = zrUtil.retrieve3(edge.getModel().get('lineStyle.curveness'), -getCurvenessForEdge(edge, seriesModel, index, true), 0);\n var p1 = vec2.clone(edge.node1.getLayout());\n var p2 = vec2.clone(edge.node2.getLayout());\n var points = [p1, p2];\n\n if (+curveness) {\n points.push([(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * curveness]);\n }\n\n edge.setLayout(points);\n });\n}\n\nexports.simpleLayout = simpleLayout;\nexports.simpleLayoutEdge = simpleLayoutEdge;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/graph/simpleLayoutHelper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/heatmap.js": +/*!***************************************************!*\ + !*** ./node_modules/echarts/lib/chart/heatmap.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(/*! ./heatmap/HeatmapSeries */ \"./node_modules/echarts/lib/chart/heatmap/HeatmapSeries.js\");\n\n__webpack_require__(/*! ./heatmap/HeatmapView */ \"./node_modules/echarts/lib/chart/heatmap/HeatmapView.js\");\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/heatmap.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/heatmap/HeatmapLayer.js": +/*!****************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/heatmap/HeatmapLayer.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Uint8ClampedArray */\nvar GRADIENT_LEVELS = 256;\n/**\n * Heatmap Chart\n *\n * @class\n */\n\nfunction Heatmap() {\n var canvas = zrUtil.createCanvas();\n this.canvas = canvas;\n this.blurSize = 30;\n this.pointSize = 20;\n this.maxOpacity = 1;\n this.minOpacity = 0;\n this._gradientPixels = {};\n}\n\nHeatmap.prototype = {\n /**\n * Renders Heatmap and returns the rendered canvas\n * @param {Array} data array of data, each has x, y, value\n * @param {number} width canvas width\n * @param {number} height canvas height\n */\n update: function (data, width, height, normalize, colorFunc, isInRange) {\n var brush = this._getBrush();\n\n var gradientInRange = this._getGradient(data, colorFunc, 'inRange');\n\n var gradientOutOfRange = this._getGradient(data, colorFunc, 'outOfRange');\n\n var r = this.pointSize + this.blurSize;\n var canvas = this.canvas;\n var ctx = canvas.getContext('2d');\n var len = data.length;\n canvas.width = width;\n canvas.height = height;\n\n for (var i = 0; i < len; ++i) {\n var p = data[i];\n var x = p[0];\n var y = p[1];\n var value = p[2]; // calculate alpha using value\n\n var alpha = normalize(value); // draw with the circle brush with alpha\n\n ctx.globalAlpha = alpha;\n ctx.drawImage(brush, x - r, y - r);\n }\n\n if (!canvas.width || !canvas.height) {\n // Avoid \"Uncaught DOMException: Failed to execute 'getImageData' on\n // 'CanvasRenderingContext2D': The source height is 0.\"\n return canvas;\n } // colorize the canvas using alpha value and set with gradient\n\n\n var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n var pixels = imageData.data;\n var offset = 0;\n var pixelLen = pixels.length;\n var minOpacity = this.minOpacity;\n var maxOpacity = this.maxOpacity;\n var diffOpacity = maxOpacity - minOpacity;\n\n while (offset < pixelLen) {\n var alpha = pixels[offset + 3] / 256;\n var gradientOffset = Math.floor(alpha * (GRADIENT_LEVELS - 1)) * 4; // Simple optimize to ignore the empty data\n\n if (alpha > 0) {\n var gradient = isInRange(alpha) ? gradientInRange : gradientOutOfRange; // Any alpha > 0 will be mapped to [minOpacity, maxOpacity]\n\n alpha > 0 && (alpha = alpha * diffOpacity + minOpacity);\n pixels[offset++] = gradient[gradientOffset];\n pixels[offset++] = gradient[gradientOffset + 1];\n pixels[offset++] = gradient[gradientOffset + 2];\n pixels[offset++] = gradient[gradientOffset + 3] * alpha * 256;\n } else {\n offset += 4;\n }\n }\n\n ctx.putImageData(imageData, 0, 0);\n return canvas;\n },\n\n /**\n * get canvas of a black circle brush used for canvas to draw later\n * @private\n * @returns {Object} circle brush canvas\n */\n _getBrush: function () {\n var brushCanvas = this._brushCanvas || (this._brushCanvas = zrUtil.createCanvas()); // set brush size\n\n var r = this.pointSize + this.blurSize;\n var d = r * 2;\n brushCanvas.width = d;\n brushCanvas.height = d;\n var ctx = brushCanvas.getContext('2d');\n ctx.clearRect(0, 0, d, d); // in order to render shadow without the distinct circle,\n // draw the distinct circle in an invisible place,\n // and use shadowOffset to draw shadow in the center of the canvas\n\n ctx.shadowOffsetX = d;\n ctx.shadowBlur = this.blurSize; // draw the shadow in black, and use alpha and shadow blur to generate\n // color in color map\n\n ctx.shadowColor = '#000'; // draw circle in the left to the canvas\n\n ctx.beginPath();\n ctx.arc(-r, r, this.pointSize, 0, Math.PI * 2, true);\n ctx.closePath();\n ctx.fill();\n return brushCanvas;\n },\n\n /**\n * get gradient color map\n * @private\n */\n _getGradient: function (data, colorFunc, state) {\n var gradientPixels = this._gradientPixels;\n var pixelsSingleState = gradientPixels[state] || (gradientPixels[state] = new Uint8ClampedArray(256 * 4));\n var color = [0, 0, 0, 0];\n var off = 0;\n\n for (var i = 0; i < 256; i++) {\n colorFunc[state](i / 255, true, color);\n pixelsSingleState[off++] = color[0];\n pixelsSingleState[off++] = color[1];\n pixelsSingleState[off++] = color[2];\n pixelsSingleState[off++] = color[3];\n }\n\n return pixelsSingleState;\n }\n};\nvar _default = Heatmap;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/heatmap/HeatmapLayer.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/heatmap/HeatmapSeries.js": +/*!*****************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/heatmap/HeatmapSeries.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar SeriesModel = __webpack_require__(/*! ../../model/Series */ \"./node_modules/echarts/lib/model/Series.js\");\n\nvar createListFromArray = __webpack_require__(/*! ../helper/createListFromArray */ \"./node_modules/echarts/lib/chart/helper/createListFromArray.js\");\n\nvar CoordinateSystem = __webpack_require__(/*! ../../CoordinateSystem */ \"./node_modules/echarts/lib/CoordinateSystem.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n type: 'series.heatmap',\n getInitialData: function (option, ecModel) {\n return createListFromArray(this.getSource(), this, {\n generateCoord: 'value'\n });\n },\n preventIncremental: function () {\n var coordSysCreator = CoordinateSystem.get(this.get('coordinateSystem'));\n\n if (coordSysCreator && coordSysCreator.dimensions) {\n return coordSysCreator.dimensions[0] === 'lng' && coordSysCreator.dimensions[1] === 'lat';\n }\n },\n defaultOption: {\n // Cartesian2D or geo\n coordinateSystem: 'cartesian2d',\n zlevel: 0,\n z: 2,\n // Cartesian coordinate system\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // Geo coordinate system\n geoIndex: 0,\n blurSize: 30,\n pointSize: 20,\n maxOpacity: 1,\n minOpacity: 0\n }\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/heatmap/HeatmapSeries.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/heatmap/HeatmapView.js": +/*!***************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/heatmap/HeatmapView.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar HeatmapLayer = __webpack_require__(/*! ./HeatmapLayer */ \"./node_modules/echarts/lib/chart/heatmap/HeatmapLayer.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction getIsInPiecewiseRange(dataExtent, pieceList, selected) {\n var dataSpan = dataExtent[1] - dataExtent[0];\n pieceList = zrUtil.map(pieceList, function (piece) {\n return {\n interval: [(piece.interval[0] - dataExtent[0]) / dataSpan, (piece.interval[1] - dataExtent[0]) / dataSpan]\n };\n });\n var len = pieceList.length;\n var lastIndex = 0;\n return function (val) {\n // Try to find in the location of the last found\n for (var i = lastIndex; i < len; i++) {\n var interval = pieceList[i].interval;\n\n if (interval[0] <= val && val <= interval[1]) {\n lastIndex = i;\n break;\n }\n }\n\n if (i === len) {\n // Not found, back interation\n for (var i = lastIndex - 1; i >= 0; i--) {\n var interval = pieceList[i].interval;\n\n if (interval[0] <= val && val <= interval[1]) {\n lastIndex = i;\n break;\n }\n }\n }\n\n return i >= 0 && i < len && selected[i];\n };\n}\n\nfunction getIsInContinuousRange(dataExtent, range) {\n var dataSpan = dataExtent[1] - dataExtent[0];\n range = [(range[0] - dataExtent[0]) / dataSpan, (range[1] - dataExtent[0]) / dataSpan];\n return function (val) {\n return val >= range[0] && val <= range[1];\n };\n}\n\nfunction isGeoCoordSys(coordSys) {\n var dimensions = coordSys.dimensions; // Not use coorSys.type === 'geo' because coordSys maybe extended\n\n return dimensions[0] === 'lng' && dimensions[1] === 'lat';\n}\n\nvar _default = echarts.extendChartView({\n type: 'heatmap',\n render: function (seriesModel, ecModel, api) {\n var visualMapOfThisSeries;\n ecModel.eachComponent('visualMap', function (visualMap) {\n visualMap.eachTargetSeries(function (targetSeries) {\n if (targetSeries === seriesModel) {\n visualMapOfThisSeries = visualMap;\n }\n });\n });\n this.group.removeAll();\n this._incrementalDisplayable = null;\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys.type === 'cartesian2d' || coordSys.type === 'calendar') {\n this._renderOnCartesianAndCalendar(seriesModel, api, 0, seriesModel.getData().count());\n } else if (isGeoCoordSys(coordSys)) {\n this._renderOnGeo(coordSys, seriesModel, visualMapOfThisSeries, api);\n }\n },\n incrementalPrepareRender: function (seriesModel, ecModel, api) {\n this.group.removeAll();\n },\n incrementalRender: function (params, seriesModel, ecModel, api) {\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys) {\n this._renderOnCartesianAndCalendar(seriesModel, api, params.start, params.end, true);\n }\n },\n _renderOnCartesianAndCalendar: function (seriesModel, api, start, end, incremental) {\n var coordSys = seriesModel.coordinateSystem;\n var width;\n var height;\n\n if (coordSys.type === 'cartesian2d') {\n var xAxis = coordSys.getAxis('x');\n var yAxis = coordSys.getAxis('y');\n width = xAxis.getBandWidth();\n height = yAxis.getBandWidth();\n }\n\n var group = this.group;\n var data = seriesModel.getData();\n var itemStyleQuery = 'itemStyle';\n var hoverItemStyleQuery = 'emphasis.itemStyle';\n var labelQuery = 'label';\n var hoverLabelQuery = 'emphasis.label';\n var style = seriesModel.getModel(itemStyleQuery).getItemStyle(['color']);\n var hoverStl = seriesModel.getModel(hoverItemStyleQuery).getItemStyle();\n var labelModel = seriesModel.getModel(labelQuery);\n var hoverLabelModel = seriesModel.getModel(hoverLabelQuery);\n var coordSysType = coordSys.type;\n var dataDims = coordSysType === 'cartesian2d' ? [data.mapDimension('x'), data.mapDimension('y'), data.mapDimension('value')] : [data.mapDimension('time'), data.mapDimension('value')];\n\n for (var idx = start; idx < end; idx++) {\n var rect;\n\n if (coordSysType === 'cartesian2d') {\n // Ignore empty data\n if (isNaN(data.get(dataDims[2], idx))) {\n continue;\n }\n\n var point = coordSys.dataToPoint([data.get(dataDims[0], idx), data.get(dataDims[1], idx)]);\n rect = new graphic.Rect({\n shape: {\n x: Math.floor(Math.round(point[0]) - width / 2),\n y: Math.floor(Math.round(point[1]) - height / 2),\n width: Math.ceil(width),\n height: Math.ceil(height)\n },\n style: {\n fill: data.getItemVisual(idx, 'color'),\n opacity: data.getItemVisual(idx, 'opacity')\n }\n });\n } else {\n // Ignore empty data\n if (isNaN(data.get(dataDims[1], idx))) {\n continue;\n }\n\n rect = new graphic.Rect({\n z2: 1,\n shape: coordSys.dataToRect([data.get(dataDims[0], idx)]).contentShape,\n style: {\n fill: data.getItemVisual(idx, 'color'),\n opacity: data.getItemVisual(idx, 'opacity')\n }\n });\n }\n\n var itemModel = data.getItemModel(idx); // Optimization for large datset\n\n if (data.hasItemOption) {\n style = itemModel.getModel(itemStyleQuery).getItemStyle(['color']);\n hoverStl = itemModel.getModel(hoverItemStyleQuery).getItemStyle();\n labelModel = itemModel.getModel(labelQuery);\n hoverLabelModel = itemModel.getModel(hoverLabelQuery);\n }\n\n var rawValue = seriesModel.getRawValue(idx);\n var defaultText = '-';\n\n if (rawValue && rawValue[2] != null) {\n defaultText = rawValue[2];\n }\n\n graphic.setLabelStyle(style, hoverStl, labelModel, hoverLabelModel, {\n labelFetcher: seriesModel,\n labelDataIndex: idx,\n defaultText: defaultText,\n isRectText: true\n });\n rect.setStyle(style);\n graphic.setHoverStyle(rect, data.hasItemOption ? hoverStl : zrUtil.extend({}, hoverStl));\n rect.incremental = incremental; // PENDING\n\n if (incremental) {\n // Rect must use hover layer if it's incremental.\n rect.useHoverLayer = true;\n }\n\n group.add(rect);\n data.setItemGraphicEl(idx, rect);\n }\n },\n _renderOnGeo: function (geo, seriesModel, visualMapModel, api) {\n var inRangeVisuals = visualMapModel.targetVisuals.inRange;\n var outOfRangeVisuals = visualMapModel.targetVisuals.outOfRange; // if (!visualMapping) {\n // throw new Error('Data range must have color visuals');\n // }\n\n var data = seriesModel.getData();\n var hmLayer = this._hmLayer || this._hmLayer || new HeatmapLayer();\n hmLayer.blurSize = seriesModel.get('blurSize');\n hmLayer.pointSize = seriesModel.get('pointSize');\n hmLayer.minOpacity = seriesModel.get('minOpacity');\n hmLayer.maxOpacity = seriesModel.get('maxOpacity');\n var rect = geo.getViewRect().clone();\n var roamTransform = geo.getRoamTransform();\n rect.applyTransform(roamTransform); // Clamp on viewport\n\n var x = Math.max(rect.x, 0);\n var y = Math.max(rect.y, 0);\n var x2 = Math.min(rect.width + rect.x, api.getWidth());\n var y2 = Math.min(rect.height + rect.y, api.getHeight());\n var width = x2 - x;\n var height = y2 - y;\n var dims = [data.mapDimension('lng'), data.mapDimension('lat'), data.mapDimension('value')];\n var points = data.mapArray(dims, function (lng, lat, value) {\n var pt = geo.dataToPoint([lng, lat]);\n pt[0] -= x;\n pt[1] -= y;\n pt.push(value);\n return pt;\n });\n var dataExtent = visualMapModel.getExtent();\n var isInRange = visualMapModel.type === 'visualMap.continuous' ? getIsInContinuousRange(dataExtent, visualMapModel.option.range) : getIsInPiecewiseRange(dataExtent, visualMapModel.getPieceList(), visualMapModel.option.selected);\n hmLayer.update(points, width, height, inRangeVisuals.color.getNormalizer(), {\n inRange: inRangeVisuals.color.getColorMapper(),\n outOfRange: outOfRangeVisuals.color.getColorMapper()\n }, isInRange);\n var img = new graphic.Image({\n style: {\n width: width,\n height: height,\n x: x,\n y: y,\n image: hmLayer.canvas\n },\n silent: true\n });\n this.group.add(img);\n },\n dispose: function () {}\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/heatmap/HeatmapView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/helper/EffectLine.js": +/*!*************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/helper/EffectLine.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar Line = __webpack_require__(/*! ./Line */ \"./node_modules/echarts/lib/chart/helper/Line.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar _symbol = __webpack_require__(/*! ../../util/symbol */ \"./node_modules/echarts/lib/util/symbol.js\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar vec2 = __webpack_require__(/*! zrender/lib/core/vector */ \"./node_modules/zrender/lib/core/vector.js\");\n\nvar curveUtil = __webpack_require__(/*! zrender/lib/core/curve */ \"./node_modules/zrender/lib/core/curve.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Provide effect for line\n * @module echarts/chart/helper/EffectLine\n */\n\n/**\n * @constructor\n * @extends {module:zrender/graphic/Group}\n * @alias {module:echarts/chart/helper/Line}\n */\nfunction EffectLine(lineData, idx, seriesScope) {\n graphic.Group.call(this);\n this.add(this.createLine(lineData, idx, seriesScope));\n\n this._updateEffectSymbol(lineData, idx);\n}\n\nvar effectLineProto = EffectLine.prototype;\n\neffectLineProto.createLine = function (lineData, idx, seriesScope) {\n return new Line(lineData, idx, seriesScope);\n};\n\neffectLineProto._updateEffectSymbol = function (lineData, idx) {\n var itemModel = lineData.getItemModel(idx);\n var effectModel = itemModel.getModel('effect');\n var size = effectModel.get('symbolSize');\n var symbolType = effectModel.get('symbol');\n\n if (!zrUtil.isArray(size)) {\n size = [size, size];\n }\n\n var color = effectModel.get('color') || lineData.getItemVisual(idx, 'color');\n var symbol = this.childAt(1);\n\n if (this._symbolType !== symbolType) {\n // Remove previous\n this.remove(symbol);\n symbol = createSymbol(symbolType, -0.5, -0.5, 1, 1, color);\n symbol.z2 = 100;\n symbol.culling = true;\n this.add(symbol);\n } // Symbol may be removed if loop is false\n\n\n if (!symbol) {\n return;\n } // Shadow color is same with color in default\n\n\n symbol.setStyle('shadowColor', color);\n symbol.setStyle(effectModel.getItemStyle(['color']));\n symbol.attr('scale', size);\n symbol.setColor(color);\n symbol.attr('scale', size);\n this._symbolType = symbolType;\n this._symbolScale = size;\n\n this._updateEffectAnimation(lineData, effectModel, idx);\n};\n\neffectLineProto._updateEffectAnimation = function (lineData, effectModel, idx) {\n var symbol = this.childAt(1);\n\n if (!symbol) {\n return;\n }\n\n var self = this;\n var points = lineData.getItemLayout(idx);\n var period = effectModel.get('period') * 1000;\n var loop = effectModel.get('loop');\n var constantSpeed = effectModel.get('constantSpeed');\n var delayExpr = zrUtil.retrieve(effectModel.get('delay'), function (idx) {\n return idx / lineData.count() * period / 3;\n });\n var isDelayFunc = typeof delayExpr === 'function'; // Ignore when updating\n\n symbol.ignore = true;\n this.updateAnimationPoints(symbol, points);\n\n if (constantSpeed > 0) {\n period = this.getLineLength(symbol) / constantSpeed * 1000;\n }\n\n if (period !== this._period || loop !== this._loop) {\n symbol.stopAnimation();\n var delay = delayExpr;\n\n if (isDelayFunc) {\n delay = delayExpr(idx);\n }\n\n if (symbol.__t > 0) {\n delay = -period * symbol.__t;\n }\n\n symbol.__t = 0;\n var animator = symbol.animate('', loop).when(period, {\n __t: 1\n }).delay(delay).during(function () {\n self.updateSymbolPosition(symbol);\n });\n\n if (!loop) {\n animator.done(function () {\n self.remove(symbol);\n });\n }\n\n animator.start();\n }\n\n this._period = period;\n this._loop = loop;\n};\n\neffectLineProto.getLineLength = function (symbol) {\n // Not so accurate\n return vec2.dist(symbol.__p1, symbol.__cp1) + vec2.dist(symbol.__cp1, symbol.__p2);\n};\n\neffectLineProto.updateAnimationPoints = function (symbol, points) {\n symbol.__p1 = points[0];\n symbol.__p2 = points[1];\n symbol.__cp1 = points[2] || [(points[0][0] + points[1][0]) / 2, (points[0][1] + points[1][1]) / 2];\n};\n\neffectLineProto.updateData = function (lineData, idx, seriesScope) {\n this.childAt(0).updateData(lineData, idx, seriesScope);\n\n this._updateEffectSymbol(lineData, idx);\n};\n\neffectLineProto.updateSymbolPosition = function (symbol) {\n var p1 = symbol.__p1;\n var p2 = symbol.__p2;\n var cp1 = symbol.__cp1;\n var t = symbol.__t;\n var pos = symbol.position;\n var lastPos = [pos[0], pos[1]];\n var quadraticAt = curveUtil.quadraticAt;\n var quadraticDerivativeAt = curveUtil.quadraticDerivativeAt;\n pos[0] = quadraticAt(p1[0], cp1[0], p2[0], t);\n pos[1] = quadraticAt(p1[1], cp1[1], p2[1], t); // Tangent\n\n var tx = quadraticDerivativeAt(p1[0], cp1[0], p2[0], t);\n var ty = quadraticDerivativeAt(p1[1], cp1[1], p2[1], t);\n symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2; // enable continuity trail for 'line', 'rect', 'roundRect' symbolType\n\n if (this._symbolType === 'line' || this._symbolType === 'rect' || this._symbolType === 'roundRect') {\n if (symbol.__lastT !== undefined && symbol.__lastT < symbol.__t) {\n var scaleY = vec2.dist(lastPos, pos) * 1.05;\n symbol.attr('scale', [symbol.scale[0], scaleY]); // make sure the last segment render within endPoint\n\n if (t === 1) {\n pos[0] = lastPos[0] + (pos[0] - lastPos[0]) / 2;\n pos[1] = lastPos[1] + (pos[1] - lastPos[1]) / 2;\n }\n } else if (symbol.__lastT === 1) {\n // After first loop, symbol.__t does NOT start with 0, so connect p1 to pos directly.\n var scaleY = 2 * vec2.dist(p1, pos);\n symbol.attr('scale', [symbol.scale[0], scaleY]);\n } else {\n symbol.attr('scale', this._symbolScale);\n }\n }\n\n symbol.__lastT = symbol.__t;\n symbol.ignore = false;\n};\n\neffectLineProto.updateLayout = function (lineData, idx) {\n this.childAt(0).updateLayout(lineData, idx);\n var effectModel = lineData.getItemModel(idx).getModel('effect');\n\n this._updateEffectAnimation(lineData, effectModel, idx);\n};\n\nzrUtil.inherits(EffectLine, graphic.Group);\nvar _default = EffectLine;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/helper/EffectLine.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/helper/EffectPolyline.js": +/*!*****************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/helper/EffectPolyline.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Polyline = __webpack_require__(/*! ./Polyline */ \"./node_modules/echarts/lib/chart/helper/Polyline.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar EffectLine = __webpack_require__(/*! ./EffectLine */ \"./node_modules/echarts/lib/chart/helper/EffectLine.js\");\n\nvar vec2 = __webpack_require__(/*! zrender/lib/core/vector */ \"./node_modules/zrender/lib/core/vector.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Provide effect for line\n * @module echarts/chart/helper/EffectLine\n */\n\n/**\n * @constructor\n * @extends {module:echarts/chart/helper/EffectLine}\n * @alias {module:echarts/chart/helper/Polyline}\n */\nfunction EffectPolyline(lineData, idx, seriesScope) {\n EffectLine.call(this, lineData, idx, seriesScope);\n this._lastFrame = 0;\n this._lastFramePercent = 0;\n}\n\nvar effectPolylineProto = EffectPolyline.prototype; // Overwrite\n\neffectPolylineProto.createLine = function (lineData, idx, seriesScope) {\n return new Polyline(lineData, idx, seriesScope);\n}; // Overwrite\n\n\neffectPolylineProto.updateAnimationPoints = function (symbol, points) {\n this._points = points;\n var accLenArr = [0];\n var len = 0;\n\n for (var i = 1; i < points.length; i++) {\n var p1 = points[i - 1];\n var p2 = points[i];\n len += vec2.dist(p1, p2);\n accLenArr.push(len);\n }\n\n if (len === 0) {\n return;\n }\n\n for (var i = 0; i < accLenArr.length; i++) {\n accLenArr[i] /= len;\n }\n\n this._offsets = accLenArr;\n this._length = len;\n}; // Overwrite\n\n\neffectPolylineProto.getLineLength = function (symbol) {\n return this._length;\n}; // Overwrite\n\n\neffectPolylineProto.updateSymbolPosition = function (symbol) {\n var t = symbol.__t;\n var points = this._points;\n var offsets = this._offsets;\n var len = points.length;\n\n if (!offsets) {\n // Has length 0\n return;\n }\n\n var lastFrame = this._lastFrame;\n var frame;\n\n if (t < this._lastFramePercent) {\n // Start from the next frame\n // PENDING start from lastFrame ?\n var start = Math.min(lastFrame + 1, len - 1);\n\n for (frame = start; frame >= 0; frame--) {\n if (offsets[frame] <= t) {\n break;\n }\n } // PENDING really need to do this ?\n\n\n frame = Math.min(frame, len - 2);\n } else {\n for (var frame = lastFrame; frame < len; frame++) {\n if (offsets[frame] > t) {\n break;\n }\n }\n\n frame = Math.min(frame - 1, len - 2);\n }\n\n vec2.lerp(symbol.position, points[frame], points[frame + 1], (t - offsets[frame]) / (offsets[frame + 1] - offsets[frame]));\n var tx = points[frame + 1][0] - points[frame][0];\n var ty = points[frame + 1][1] - points[frame][1];\n symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2;\n this._lastFrame = frame;\n this._lastFramePercent = t;\n symbol.ignore = false;\n};\n\nzrUtil.inherits(EffectPolyline, EffectLine);\nvar _default = EffectPolyline;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/helper/EffectPolyline.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/helper/EffectSymbol.js": +/*!***************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/helper/EffectSymbol.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar _symbol = __webpack_require__(/*! ../../util/symbol */ \"./node_modules/echarts/lib/util/symbol.js\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar _graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar Group = _graphic.Group;\n\nvar _number = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar parsePercent = _number.parsePercent;\n\nvar SymbolClz = __webpack_require__(/*! ./Symbol */ \"./node_modules/echarts/lib/chart/helper/Symbol.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Symbol with ripple effect\n * @module echarts/chart/helper/EffectSymbol\n */\nvar EFFECT_RIPPLE_NUMBER = 3;\n\nfunction normalizeSymbolSize(symbolSize) {\n if (!zrUtil.isArray(symbolSize)) {\n symbolSize = [+symbolSize, +symbolSize];\n }\n\n return symbolSize;\n}\n\nfunction updateRipplePath(rippleGroup, effectCfg) {\n var color = effectCfg.rippleEffectColor || effectCfg.color;\n rippleGroup.eachChild(function (ripplePath) {\n ripplePath.attr({\n z: effectCfg.z,\n zlevel: effectCfg.zlevel,\n style: {\n stroke: effectCfg.brushType === 'stroke' ? color : null,\n fill: effectCfg.brushType === 'fill' ? color : null\n }\n });\n });\n}\n/**\n * @constructor\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @extends {module:zrender/graphic/Group}\n */\n\n\nfunction EffectSymbol(data, idx) {\n Group.call(this);\n var symbol = new SymbolClz(data, idx);\n var rippleGroup = new Group();\n this.add(symbol);\n this.add(rippleGroup);\n\n rippleGroup.beforeUpdate = function () {\n this.attr(symbol.getScale());\n };\n\n this.updateData(data, idx);\n}\n\nvar effectSymbolProto = EffectSymbol.prototype;\n\neffectSymbolProto.stopEffectAnimation = function () {\n this.childAt(1).removeAll();\n};\n\neffectSymbolProto.startEffectAnimation = function (effectCfg) {\n var symbolType = effectCfg.symbolType;\n var color = effectCfg.color;\n var rippleGroup = this.childAt(1);\n\n for (var i = 0; i < EFFECT_RIPPLE_NUMBER; i++) {\n // If width/height are set too small (e.g., set to 1) on ios10\n // and macOS Sierra, a circle stroke become a rect, no matter what\n // the scale is set. So we set width/height as 2. See #4136.\n var ripplePath = createSymbol(symbolType, -1, -1, 2, 2, color);\n ripplePath.attr({\n style: {\n strokeNoScale: true\n },\n z2: 99,\n silent: true,\n scale: [0.5, 0.5]\n });\n var delay = -i / EFFECT_RIPPLE_NUMBER * effectCfg.period + effectCfg.effectOffset; // TODO Configurable effectCfg.period\n\n ripplePath.animate('', true).when(effectCfg.period, {\n scale: [effectCfg.rippleScale / 2, effectCfg.rippleScale / 2]\n }).delay(delay).start();\n ripplePath.animateStyle(true).when(effectCfg.period, {\n opacity: 0\n }).delay(delay).start();\n rippleGroup.add(ripplePath);\n }\n\n updateRipplePath(rippleGroup, effectCfg);\n};\n/**\n * Update effect symbol\n */\n\n\neffectSymbolProto.updateEffectAnimation = function (effectCfg) {\n var oldEffectCfg = this._effectCfg;\n var rippleGroup = this.childAt(1); // Must reinitialize effect if following configuration changed\n\n var DIFFICULT_PROPS = ['symbolType', 'period', 'rippleScale'];\n\n for (var i = 0; i < DIFFICULT_PROPS.length; i++) {\n var propName = DIFFICULT_PROPS[i];\n\n if (oldEffectCfg[propName] !== effectCfg[propName]) {\n this.stopEffectAnimation();\n this.startEffectAnimation(effectCfg);\n return;\n }\n }\n\n updateRipplePath(rippleGroup, effectCfg);\n};\n/**\n * Highlight symbol\n */\n\n\neffectSymbolProto.highlight = function () {\n this.trigger('emphasis');\n};\n/**\n * Downplay symbol\n */\n\n\neffectSymbolProto.downplay = function () {\n this.trigger('normal');\n};\n/**\n * Update symbol properties\n * @param {module:echarts/data/List} data\n * @param {number} idx\n */\n\n\neffectSymbolProto.updateData = function (data, idx) {\n var seriesModel = data.hostModel;\n this.childAt(0).updateData(data, idx);\n var rippleGroup = this.childAt(1);\n var itemModel = data.getItemModel(idx);\n var symbolType = data.getItemVisual(idx, 'symbol');\n var symbolSize = normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize'));\n var color = data.getItemVisual(idx, 'color');\n rippleGroup.attr('scale', symbolSize);\n rippleGroup.traverse(function (ripplePath) {\n ripplePath.attr({\n fill: color\n });\n });\n var symbolOffset = itemModel.getShallow('symbolOffset');\n\n if (symbolOffset) {\n var pos = rippleGroup.position;\n pos[0] = parsePercent(symbolOffset[0], symbolSize[0]);\n pos[1] = parsePercent(symbolOffset[1], symbolSize[1]);\n }\n\n var symbolRotate = data.getItemVisual(idx, 'symbolRotate');\n rippleGroup.rotation = (symbolRotate || 0) * Math.PI / 180 || 0;\n var effectCfg = {};\n effectCfg.showEffectOn = seriesModel.get('showEffectOn');\n effectCfg.rippleScale = itemModel.get('rippleEffect.scale');\n effectCfg.brushType = itemModel.get('rippleEffect.brushType');\n effectCfg.period = itemModel.get('rippleEffect.period') * 1000;\n effectCfg.effectOffset = idx / data.count();\n effectCfg.z = itemModel.getShallow('z') || 0;\n effectCfg.zlevel = itemModel.getShallow('zlevel') || 0;\n effectCfg.symbolType = symbolType;\n effectCfg.color = color;\n effectCfg.rippleEffectColor = itemModel.get('rippleEffect.color');\n this.off('mouseover').off('mouseout').off('emphasis').off('normal');\n\n if (effectCfg.showEffectOn === 'render') {\n this._effectCfg ? this.updateEffectAnimation(effectCfg) : this.startEffectAnimation(effectCfg);\n this._effectCfg = effectCfg;\n } else {\n // Not keep old effect config\n this._effectCfg = null;\n this.stopEffectAnimation();\n var symbol = this.childAt(0);\n\n var onEmphasis = function () {\n symbol.highlight();\n\n if (effectCfg.showEffectOn !== 'render') {\n this.startEffectAnimation(effectCfg);\n }\n };\n\n var onNormal = function () {\n symbol.downplay();\n\n if (effectCfg.showEffectOn !== 'render') {\n this.stopEffectAnimation();\n }\n };\n\n this.on('mouseover', onEmphasis, this).on('mouseout', onNormal, this).on('emphasis', onEmphasis, this).on('normal', onNormal, this);\n }\n\n this._effectCfg = effectCfg;\n};\n\neffectSymbolProto.fadeOut = function (cb) {\n this.off('mouseover').off('mouseout').off('emphasis').off('normal');\n cb && cb();\n};\n\nzrUtil.inherits(EffectSymbol, Group);\nvar _default = EffectSymbol;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/helper/EffectSymbol.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/helper/LargeLineDraw.js": +/*!****************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/helper/LargeLineDraw.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar IncrementalDisplayable = __webpack_require__(/*! zrender/lib/graphic/IncrementalDisplayable */ \"./node_modules/zrender/lib/graphic/IncrementalDisplayable.js\");\n\nvar lineContain = __webpack_require__(/*! zrender/lib/contain/line */ \"./node_modules/zrender/lib/contain/line.js\");\n\nvar quadraticContain = __webpack_require__(/*! zrender/lib/contain/quadratic */ \"./node_modules/zrender/lib/contain/quadratic.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// TODO Batch by color\nvar LargeLineShape = graphic.extendShape({\n shape: {\n polyline: false,\n curveness: 0,\n segs: []\n },\n buildPath: function (path, shape) {\n var segs = shape.segs;\n var curveness = shape.curveness;\n\n if (shape.polyline) {\n for (var i = 0; i < segs.length;) {\n var count = segs[i++];\n\n if (count > 0) {\n path.moveTo(segs[i++], segs[i++]);\n\n for (var k = 1; k < count; k++) {\n path.lineTo(segs[i++], segs[i++]);\n }\n }\n }\n } else {\n for (var i = 0; i < segs.length;) {\n var x0 = segs[i++];\n var y0 = segs[i++];\n var x1 = segs[i++];\n var y1 = segs[i++];\n path.moveTo(x0, y0);\n\n if (curveness > 0) {\n var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness;\n var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness;\n path.quadraticCurveTo(x2, y2, x1, y1);\n } else {\n path.lineTo(x1, y1);\n }\n }\n }\n },\n findDataIndex: function (x, y) {\n var shape = this.shape;\n var segs = shape.segs;\n var curveness = shape.curveness;\n\n if (shape.polyline) {\n var dataIndex = 0;\n\n for (var i = 0; i < segs.length;) {\n var count = segs[i++];\n\n if (count > 0) {\n var x0 = segs[i++];\n var y0 = segs[i++];\n\n for (var k = 1; k < count; k++) {\n var x1 = segs[i++];\n var y1 = segs[i++];\n\n if (lineContain.containStroke(x0, y0, x1, y1)) {\n return dataIndex;\n }\n }\n }\n\n dataIndex++;\n }\n } else {\n var dataIndex = 0;\n\n for (var i = 0; i < segs.length;) {\n var x0 = segs[i++];\n var y0 = segs[i++];\n var x1 = segs[i++];\n var y1 = segs[i++];\n\n if (curveness > 0) {\n var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness;\n var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness;\n\n if (quadraticContain.containStroke(x0, y0, x2, y2, x1, y1)) {\n return dataIndex;\n }\n } else {\n if (lineContain.containStroke(x0, y0, x1, y1)) {\n return dataIndex;\n }\n }\n\n dataIndex++;\n }\n }\n\n return -1;\n }\n});\n\nfunction LargeLineDraw() {\n this.group = new graphic.Group();\n}\n\nvar largeLineProto = LargeLineDraw.prototype;\n\nlargeLineProto.isPersistent = function () {\n return !this._incremental;\n};\n/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n */\n\n\nlargeLineProto.updateData = function (data) {\n this.group.removeAll();\n var lineEl = new LargeLineShape({\n rectHover: true,\n cursor: 'default'\n });\n lineEl.setShape({\n segs: data.getLayout('linesPoints')\n });\n\n this._setCommon(lineEl, data); // Add back\n\n\n this.group.add(lineEl);\n this._incremental = null;\n};\n/**\n * @override\n */\n\n\nlargeLineProto.incrementalPrepareUpdate = function (data) {\n this.group.removeAll();\n\n this._clearIncremental();\n\n if (data.count() > 5e5) {\n if (!this._incremental) {\n this._incremental = new IncrementalDisplayable({\n silent: true\n });\n }\n\n this.group.add(this._incremental);\n } else {\n this._incremental = null;\n }\n};\n/**\n * @override\n */\n\n\nlargeLineProto.incrementalUpdate = function (taskParams, data) {\n var lineEl = new LargeLineShape();\n lineEl.setShape({\n segs: data.getLayout('linesPoints')\n });\n\n this._setCommon(lineEl, data, !!this._incremental);\n\n if (!this._incremental) {\n lineEl.rectHover = true;\n lineEl.cursor = 'default';\n lineEl.__startIndex = taskParams.start;\n this.group.add(lineEl);\n } else {\n this._incremental.addDisplayable(lineEl, true);\n }\n};\n/**\n * @override\n */\n\n\nlargeLineProto.remove = function () {\n this._clearIncremental();\n\n this._incremental = null;\n this.group.removeAll();\n};\n\nlargeLineProto._setCommon = function (lineEl, data, isIncremental) {\n var hostModel = data.hostModel;\n lineEl.setShape({\n polyline: hostModel.get('polyline'),\n curveness: hostModel.get('lineStyle.curveness')\n });\n lineEl.useStyle(hostModel.getModel('lineStyle').getLineStyle());\n lineEl.style.strokeNoScale = true;\n var visualColor = data.getVisual('color');\n\n if (visualColor) {\n lineEl.setStyle('stroke', visualColor);\n }\n\n lineEl.setStyle('fill');\n\n if (!isIncremental) {\n // Enable tooltip\n // PENDING May have performance issue when path is extremely large\n lineEl.seriesIndex = hostModel.seriesIndex;\n lineEl.on('mousemove', function (e) {\n lineEl.dataIndex = null;\n var dataIndex = lineEl.findDataIndex(e.offsetX, e.offsetY);\n\n if (dataIndex > 0) {\n // Provide dataIndex for tooltip\n lineEl.dataIndex = dataIndex + lineEl.__startIndex;\n }\n });\n }\n};\n\nlargeLineProto._clearIncremental = function () {\n var incremental = this._incremental;\n\n if (incremental) {\n incremental.clearDisplaybles();\n }\n};\n\nvar _default = LargeLineDraw;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/helper/LargeLineDraw.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/helper/LargeSymbolDraw.js": +/*!******************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/helper/LargeSymbolDraw.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar _symbol = __webpack_require__(/*! ../../util/symbol */ \"./node_modules/echarts/lib/util/symbol.js\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar IncrementalDisplayable = __webpack_require__(/*! zrender/lib/graphic/IncrementalDisplayable */ \"./node_modules/zrender/lib/graphic/IncrementalDisplayable.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float32Array */\n// TODO Batch by color\nvar BOOST_SIZE_THRESHOLD = 4;\nvar LargeSymbolPath = graphic.extendShape({\n shape: {\n points: null\n },\n symbolProxy: null,\n softClipShape: null,\n buildPath: function (path, shape) {\n var points = shape.points;\n var size = shape.size;\n var symbolProxy = this.symbolProxy;\n var symbolProxyShape = symbolProxy.shape;\n var ctx = path.getContext ? path.getContext() : path;\n var canBoost = ctx && size[0] < BOOST_SIZE_THRESHOLD; // Do draw in afterBrush.\n\n if (canBoost) {\n return;\n }\n\n for (var i = 0; i < points.length;) {\n var x = points[i++];\n var y = points[i++];\n\n if (isNaN(x) || isNaN(y)) {\n continue;\n }\n\n if (this.softClipShape && !this.softClipShape.contain(x, y)) {\n continue;\n }\n\n symbolProxyShape.x = x - size[0] / 2;\n symbolProxyShape.y = y - size[1] / 2;\n symbolProxyShape.width = size[0];\n symbolProxyShape.height = size[1];\n symbolProxy.buildPath(path, symbolProxyShape, true);\n }\n },\n afterBrush: function (ctx) {\n var shape = this.shape;\n var points = shape.points;\n var size = shape.size;\n var canBoost = size[0] < BOOST_SIZE_THRESHOLD;\n\n if (!canBoost) {\n return;\n }\n\n this.setTransform(ctx); // PENDING If style or other canvas status changed?\n\n for (var i = 0; i < points.length;) {\n var x = points[i++];\n var y = points[i++];\n\n if (isNaN(x) || isNaN(y)) {\n continue;\n }\n\n if (this.softClipShape && !this.softClipShape.contain(x, y)) {\n continue;\n } // fillRect is faster than building a rect path and draw.\n // And it support light globalCompositeOperation.\n\n\n ctx.fillRect(x - size[0] / 2, y - size[1] / 2, size[0], size[1]);\n }\n\n this.restoreTransform(ctx);\n },\n findDataIndex: function (x, y) {\n // TODO ???\n // Consider transform\n var shape = this.shape;\n var points = shape.points;\n var size = shape.size;\n var w = Math.max(size[0], 4);\n var h = Math.max(size[1], 4); // Not consider transform\n // Treat each element as a rect\n // top down traverse\n\n for (var idx = points.length / 2 - 1; idx >= 0; idx--) {\n var i = idx * 2;\n var x0 = points[i] - w / 2;\n var y0 = points[i + 1] - h / 2;\n\n if (x >= x0 && y >= y0 && x <= x0 + w && y <= y0 + h) {\n return idx;\n }\n }\n\n return -1;\n }\n});\n\nfunction LargeSymbolDraw() {\n this.group = new graphic.Group();\n}\n\nvar largeSymbolProto = LargeSymbolDraw.prototype;\n\nlargeSymbolProto.isPersistent = function () {\n return !this._incremental;\n};\n/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n * @param {Object} opt\n * @param {Object} [opt.clipShape]\n */\n\n\nlargeSymbolProto.updateData = function (data, opt) {\n this.group.removeAll();\n var symbolEl = new LargeSymbolPath({\n rectHover: true,\n cursor: 'default'\n });\n symbolEl.setShape({\n points: data.getLayout('symbolPoints')\n });\n\n this._setCommon(symbolEl, data, false, opt);\n\n this.group.add(symbolEl);\n this._incremental = null;\n};\n\nlargeSymbolProto.updateLayout = function (data) {\n if (this._incremental) {\n return;\n }\n\n var points = data.getLayout('symbolPoints');\n this.group.eachChild(function (child) {\n if (child.startIndex != null) {\n var len = (child.endIndex - child.startIndex) * 2;\n var byteOffset = child.startIndex * 4 * 2;\n points = new Float32Array(points.buffer, byteOffset, len);\n }\n\n child.setShape('points', points);\n });\n};\n\nlargeSymbolProto.incrementalPrepareUpdate = function (data) {\n this.group.removeAll();\n\n this._clearIncremental(); // Only use incremental displayables when data amount is larger than 2 million.\n // PENDING Incremental data?\n\n\n if (data.count() > 2e6) {\n if (!this._incremental) {\n this._incremental = new IncrementalDisplayable({\n silent: true\n });\n }\n\n this.group.add(this._incremental);\n } else {\n this._incremental = null;\n }\n};\n\nlargeSymbolProto.incrementalUpdate = function (taskParams, data, opt) {\n var symbolEl;\n\n if (this._incremental) {\n symbolEl = new LargeSymbolPath();\n\n this._incremental.addDisplayable(symbolEl, true);\n } else {\n symbolEl = new LargeSymbolPath({\n rectHover: true,\n cursor: 'default',\n startIndex: taskParams.start,\n endIndex: taskParams.end\n });\n symbolEl.incremental = true;\n this.group.add(symbolEl);\n }\n\n symbolEl.setShape({\n points: data.getLayout('symbolPoints')\n });\n\n this._setCommon(symbolEl, data, !!this._incremental, opt);\n};\n\nlargeSymbolProto._setCommon = function (symbolEl, data, isIncremental, opt) {\n var hostModel = data.hostModel;\n opt = opt || {}; // TODO\n // if (data.hasItemVisual.symbolSize) {\n // // TODO typed array?\n // symbolEl.setShape('sizes', data.mapArray(\n // function (idx) {\n // var size = data.getItemVisual(idx, 'symbolSize');\n // return (size instanceof Array) ? size : [size, size];\n // }\n // ));\n // }\n // else {\n\n var size = data.getVisual('symbolSize');\n symbolEl.setShape('size', size instanceof Array ? size : [size, size]); // }\n\n symbolEl.softClipShape = opt.clipShape || null; // Create symbolProxy to build path for each data\n\n symbolEl.symbolProxy = createSymbol(data.getVisual('symbol'), 0, 0, 0, 0); // Use symbolProxy setColor method\n\n symbolEl.setColor = symbolEl.symbolProxy.setColor;\n var extrudeShadow = symbolEl.shape.size[0] < BOOST_SIZE_THRESHOLD;\n symbolEl.useStyle( // Draw shadow when doing fillRect is extremely slow.\n hostModel.getModel('itemStyle').getItemStyle(extrudeShadow ? ['color', 'shadowBlur', 'shadowColor'] : ['color']));\n var visualColor = data.getVisual('color');\n\n if (visualColor) {\n symbolEl.setColor(visualColor);\n }\n\n if (!isIncremental) {\n // Enable tooltip\n // PENDING May have performance issue when path is extremely large\n symbolEl.seriesIndex = hostModel.seriesIndex;\n symbolEl.on('mousemove', function (e) {\n symbolEl.dataIndex = null;\n var dataIndex = symbolEl.findDataIndex(e.offsetX, e.offsetY);\n\n if (dataIndex >= 0) {\n // Provide dataIndex for tooltip\n symbolEl.dataIndex = dataIndex + (symbolEl.startIndex || 0);\n }\n });\n }\n};\n\nlargeSymbolProto.remove = function () {\n this._clearIncremental();\n\n this._incremental = null;\n this.group.removeAll();\n};\n\nlargeSymbolProto._clearIncremental = function () {\n var incremental = this._incremental;\n\n if (incremental) {\n incremental.clearDisplaybles();\n }\n};\n\nvar _default = LargeSymbolDraw;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/helper/LargeSymbolDraw.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/helper/Line.js": +/*!*******************************************************!*\ + !*** ./node_modules/echarts/lib/chart/helper/Line.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar vector = __webpack_require__(/*! zrender/lib/core/vector */ \"./node_modules/zrender/lib/core/vector.js\");\n\nvar symbolUtil = __webpack_require__(/*! ../../util/symbol */ \"./node_modules/echarts/lib/util/symbol.js\");\n\nvar LinePath = __webpack_require__(/*! ./LinePath */ \"./node_modules/echarts/lib/chart/helper/LinePath.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar _number = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar round = _number.round;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/Line\n */\nvar SYMBOL_CATEGORIES = ['fromSymbol', 'toSymbol'];\n\nfunction makeSymbolTypeKey(symbolCategory) {\n return '_' + symbolCategory + 'Type';\n}\n/**\n * @inner\n */\n\n\nfunction createSymbol(name, lineData, idx) {\n var symbolType = lineData.getItemVisual(idx, name);\n\n if (!symbolType || symbolType === 'none') {\n return;\n }\n\n var color = lineData.getItemVisual(idx, 'color');\n var symbolSize = lineData.getItemVisual(idx, name + 'Size');\n var symbolRotate = lineData.getItemVisual(idx, name + 'Rotate');\n\n if (!zrUtil.isArray(symbolSize)) {\n symbolSize = [symbolSize, symbolSize];\n }\n\n var symbolPath = symbolUtil.createSymbol(symbolType, -symbolSize[0] / 2, -symbolSize[1] / 2, symbolSize[0], symbolSize[1], color); // rotate by default if symbolRotate is not specified or NaN\n\n symbolPath.__specifiedRotation = symbolRotate == null || isNaN(symbolRotate) ? void 0 : +symbolRotate * Math.PI / 180 || 0;\n symbolPath.name = name;\n return symbolPath;\n}\n\nfunction createLine(points) {\n var line = new LinePath({\n name: 'line',\n subPixelOptimize: true\n });\n setLinePoints(line.shape, points);\n return line;\n}\n\nfunction setLinePoints(targetShape, points) {\n targetShape.x1 = points[0][0];\n targetShape.y1 = points[0][1];\n targetShape.x2 = points[1][0];\n targetShape.y2 = points[1][1];\n targetShape.percent = 1;\n var cp1 = points[2];\n\n if (cp1) {\n targetShape.cpx1 = cp1[0];\n targetShape.cpy1 = cp1[1];\n } else {\n targetShape.cpx1 = NaN;\n targetShape.cpy1 = NaN;\n }\n}\n\nfunction updateSymbolAndLabelBeforeLineUpdate() {\n var lineGroup = this;\n var symbolFrom = lineGroup.childOfName('fromSymbol');\n var symbolTo = lineGroup.childOfName('toSymbol');\n var label = lineGroup.childOfName('label'); // Quick reject\n\n if (!symbolFrom && !symbolTo && label.ignore) {\n return;\n }\n\n var invScale = 1;\n var parentNode = this.parent;\n\n while (parentNode) {\n if (parentNode.scale) {\n invScale /= parentNode.scale[0];\n }\n\n parentNode = parentNode.parent;\n }\n\n var line = lineGroup.childOfName('line'); // If line not changed\n // FIXME Parent scale changed\n\n if (!this.__dirty && !line.__dirty) {\n return;\n }\n\n var percent = line.shape.percent;\n var fromPos = line.pointAt(0);\n var toPos = line.pointAt(percent);\n var d = vector.sub([], toPos, fromPos);\n vector.normalize(d, d);\n\n if (symbolFrom) {\n symbolFrom.attr('position', fromPos); // Fix #12388\n // when symbol is set to be 'arrow' in markLine,\n // symbolRotate value will be ignored, and compulsively use tangent angle.\n // rotate by default if symbol rotation is not specified\n\n var specifiedRotation = symbolFrom.__specifiedRotation;\n\n if (specifiedRotation == null) {\n var tangent = line.tangentAt(0);\n symbolFrom.attr('rotation', Math.PI / 2 - Math.atan2(tangent[1], tangent[0]));\n } else {\n symbolFrom.attr('rotation', specifiedRotation);\n }\n\n symbolFrom.attr('scale', [invScale * percent, invScale * percent]);\n }\n\n if (symbolTo) {\n symbolTo.attr('position', toPos); // Fix #12388\n // when symbol is set to be 'arrow' in markLine,\n // symbolRotate value will be ignored, and compulsively use tangent angle.\n // rotate by default if symbol rotation is not specified\n\n var specifiedRotation = symbolTo.__specifiedRotation;\n\n if (specifiedRotation == null) {\n var tangent = line.tangentAt(1);\n symbolTo.attr('rotation', -Math.PI / 2 - Math.atan2(tangent[1], tangent[0]));\n } else {\n symbolTo.attr('rotation', specifiedRotation);\n }\n\n symbolTo.attr('scale', [invScale * percent, invScale * percent]);\n }\n\n if (!label.ignore) {\n label.attr('position', toPos);\n var textPosition;\n var textAlign;\n var textVerticalAlign;\n var textOrigin;\n var distance = label.__labelDistance;\n var distanceX = distance[0] * invScale;\n var distanceY = distance[1] * invScale;\n var halfPercent = percent / 2;\n var tangent = line.tangentAt(halfPercent);\n var n = [tangent[1], -tangent[0]];\n var cp = line.pointAt(halfPercent);\n\n if (n[1] > 0) {\n n[0] = -n[0];\n n[1] = -n[1];\n }\n\n var dir = tangent[0] < 0 ? -1 : 1;\n\n if (label.__position !== 'start' && label.__position !== 'end') {\n var rotation = -Math.atan2(tangent[1], tangent[0]);\n\n if (toPos[0] < fromPos[0]) {\n rotation = Math.PI + rotation;\n }\n\n label.attr('rotation', rotation);\n }\n\n var dy;\n\n switch (label.__position) {\n case 'insideStartTop':\n case 'insideMiddleTop':\n case 'insideEndTop':\n case 'middle':\n dy = -distanceY;\n textVerticalAlign = 'bottom';\n break;\n\n case 'insideStartBottom':\n case 'insideMiddleBottom':\n case 'insideEndBottom':\n dy = distanceY;\n textVerticalAlign = 'top';\n break;\n\n default:\n dy = 0;\n textVerticalAlign = 'middle';\n }\n\n switch (label.__position) {\n case 'end':\n textPosition = [d[0] * distanceX + toPos[0], d[1] * distanceY + toPos[1]];\n textAlign = d[0] > 0.8 ? 'left' : d[0] < -0.8 ? 'right' : 'center';\n textVerticalAlign = d[1] > 0.8 ? 'top' : d[1] < -0.8 ? 'bottom' : 'middle';\n break;\n\n case 'start':\n textPosition = [-d[0] * distanceX + fromPos[0], -d[1] * distanceY + fromPos[1]];\n textAlign = d[0] > 0.8 ? 'right' : d[0] < -0.8 ? 'left' : 'center';\n textVerticalAlign = d[1] > 0.8 ? 'bottom' : d[1] < -0.8 ? 'top' : 'middle';\n break;\n\n case 'insideStartTop':\n case 'insideStart':\n case 'insideStartBottom':\n textPosition = [distanceX * dir + fromPos[0], fromPos[1] + dy];\n textAlign = tangent[0] < 0 ? 'right' : 'left';\n textOrigin = [-distanceX * dir, -dy];\n break;\n\n case 'insideMiddleTop':\n case 'insideMiddle':\n case 'insideMiddleBottom':\n case 'middle':\n textPosition = [cp[0], cp[1] + dy];\n textAlign = 'center';\n textOrigin = [0, -dy];\n break;\n\n case 'insideEndTop':\n case 'insideEnd':\n case 'insideEndBottom':\n textPosition = [-distanceX * dir + toPos[0], toPos[1] + dy];\n textAlign = tangent[0] >= 0 ? 'right' : 'left';\n textOrigin = [distanceX * dir, -dy];\n break;\n }\n\n label.attr({\n style: {\n // Use the user specified text align and baseline first\n textVerticalAlign: label.__verticalAlign || textVerticalAlign,\n textAlign: label.__textAlign || textAlign\n },\n position: textPosition,\n scale: [invScale, invScale],\n origin: textOrigin\n });\n }\n}\n/**\n * @constructor\n * @extends {module:zrender/graphic/Group}\n * @alias {module:echarts/chart/helper/Line}\n */\n\n\nfunction Line(lineData, idx, seriesScope) {\n graphic.Group.call(this);\n\n this._createLine(lineData, idx, seriesScope);\n}\n\nvar lineProto = Line.prototype; // Update symbol position and rotation\n\nlineProto.beforeUpdate = updateSymbolAndLabelBeforeLineUpdate;\n\nlineProto._createLine = function (lineData, idx, seriesScope) {\n var seriesModel = lineData.hostModel;\n var linePoints = lineData.getItemLayout(idx);\n var line = createLine(linePoints);\n line.shape.percent = 0;\n graphic.initProps(line, {\n shape: {\n percent: 1\n }\n }, seriesModel, idx);\n this.add(line);\n var label = new graphic.Text({\n name: 'label',\n // FIXME\n // Temporary solution for `focusNodeAdjacency`.\n // line label do not use the opacity of lineStyle.\n lineLabelOriginalOpacity: 1\n });\n this.add(label);\n zrUtil.each(SYMBOL_CATEGORIES, function (symbolCategory) {\n var symbol = createSymbol(symbolCategory, lineData, idx); // symbols must added after line to make sure\n // it will be updated after line#update.\n // Or symbol position and rotation update in line#beforeUpdate will be one frame slow\n\n this.add(symbol);\n this[makeSymbolTypeKey(symbolCategory)] = lineData.getItemVisual(idx, symbolCategory);\n }, this);\n\n this._updateCommonStl(lineData, idx, seriesScope);\n};\n\nlineProto.updateData = function (lineData, idx, seriesScope) {\n var seriesModel = lineData.hostModel;\n var line = this.childOfName('line');\n var linePoints = lineData.getItemLayout(idx);\n var target = {\n shape: {}\n };\n setLinePoints(target.shape, linePoints);\n graphic.updateProps(line, target, seriesModel, idx);\n zrUtil.each(SYMBOL_CATEGORIES, function (symbolCategory) {\n var symbolType = lineData.getItemVisual(idx, symbolCategory);\n var key = makeSymbolTypeKey(symbolCategory); // Symbol changed\n\n if (this[key] !== symbolType) {\n this.remove(this.childOfName(symbolCategory));\n var symbol = createSymbol(symbolCategory, lineData, idx);\n this.add(symbol);\n }\n\n this[key] = symbolType;\n }, this);\n\n this._updateCommonStl(lineData, idx, seriesScope);\n};\n\nlineProto._updateCommonStl = function (lineData, idx, seriesScope) {\n var seriesModel = lineData.hostModel;\n var line = this.childOfName('line');\n var lineStyle = seriesScope && seriesScope.lineStyle;\n var hoverLineStyle = seriesScope && seriesScope.hoverLineStyle;\n var labelModel = seriesScope && seriesScope.labelModel;\n var hoverLabelModel = seriesScope && seriesScope.hoverLabelModel; // Optimization for large dataset\n\n if (!seriesScope || lineData.hasItemOption) {\n var itemModel = lineData.getItemModel(idx);\n lineStyle = itemModel.getModel('lineStyle').getLineStyle();\n hoverLineStyle = itemModel.getModel('emphasis.lineStyle').getLineStyle();\n labelModel = itemModel.getModel('label');\n hoverLabelModel = itemModel.getModel('emphasis.label');\n }\n\n var visualColor = lineData.getItemVisual(idx, 'color');\n var visualOpacity = zrUtil.retrieve3(lineData.getItemVisual(idx, 'opacity'), lineStyle.opacity, 1);\n line.useStyle(zrUtil.defaults({\n strokeNoScale: true,\n fill: 'none',\n stroke: visualColor,\n opacity: visualOpacity\n }, lineStyle));\n line.hoverStyle = hoverLineStyle; // Update symbol\n\n zrUtil.each(SYMBOL_CATEGORIES, function (symbolCategory) {\n var symbol = this.childOfName(symbolCategory);\n\n if (symbol) {\n symbol.setColor(visualColor);\n symbol.setStyle({\n opacity: visualOpacity\n });\n }\n }, this);\n var showLabel = labelModel.getShallow('show');\n var hoverShowLabel = hoverLabelModel.getShallow('show');\n var label = this.childOfName('label');\n var defaultLabelColor;\n var baseText; // FIXME: the logic below probably should be merged to `graphic.setLabelStyle`.\n\n if (showLabel || hoverShowLabel) {\n defaultLabelColor = visualColor || '#000';\n baseText = seriesModel.getFormattedLabel(idx, 'normal', lineData.dataType);\n\n if (baseText == null) {\n var rawVal = seriesModel.getRawValue(idx);\n baseText = rawVal == null ? lineData.getName(idx) : isFinite(rawVal) ? round(rawVal) : rawVal;\n }\n }\n\n var normalText = showLabel ? baseText : null;\n var emphasisText = hoverShowLabel ? zrUtil.retrieve2(seriesModel.getFormattedLabel(idx, 'emphasis', lineData.dataType), baseText) : null;\n var labelStyle = label.style; // Always set `textStyle` even if `normalStyle.text` is null, because default\n // values have to be set on `normalStyle`.\n\n if (normalText != null || emphasisText != null) {\n graphic.setTextStyle(label.style, labelModel, {\n text: normalText\n }, {\n autoColor: defaultLabelColor\n });\n label.__textAlign = labelStyle.textAlign;\n label.__verticalAlign = labelStyle.textVerticalAlign; // 'start', 'middle', 'end'\n\n label.__position = labelModel.get('position') || 'middle';\n var distance = labelModel.get('distance');\n\n if (!zrUtil.isArray(distance)) {\n distance = [distance, distance];\n }\n\n label.__labelDistance = distance;\n }\n\n if (emphasisText != null) {\n // Only these properties supported in this emphasis style here.\n label.hoverStyle = {\n text: emphasisText,\n textFill: hoverLabelModel.getTextColor(true),\n // For merging hover style to normal style, do not use\n // `hoverLabelModel.getFont()` here.\n fontStyle: hoverLabelModel.getShallow('fontStyle'),\n fontWeight: hoverLabelModel.getShallow('fontWeight'),\n fontSize: hoverLabelModel.getShallow('fontSize'),\n fontFamily: hoverLabelModel.getShallow('fontFamily')\n };\n } else {\n label.hoverStyle = {\n text: null\n };\n }\n\n label.ignore = !showLabel && !hoverShowLabel;\n graphic.setHoverStyle(this);\n};\n\nlineProto.highlight = function () {\n this.trigger('emphasis');\n};\n\nlineProto.downplay = function () {\n this.trigger('normal');\n};\n\nlineProto.updateLayout = function (lineData, idx) {\n this.setLinePoints(lineData.getItemLayout(idx));\n};\n\nlineProto.setLinePoints = function (points) {\n var linePath = this.childOfName('line');\n setLinePoints(linePath.shape, points);\n linePath.dirty();\n};\n\nzrUtil.inherits(Line, graphic.Group);\nvar _default = Line;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/helper/Line.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/helper/LineDraw.js": +/*!***********************************************************!*\ + !*** ./node_modules/echarts/lib/chart/helper/LineDraw.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar LineGroup = __webpack_require__(/*! ./Line */ \"./node_modules/echarts/lib/chart/helper/Line.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/LineDraw\n */\n// import IncrementalDisplayable from 'zrender/src/graphic/IncrementalDisplayable';\n\n/**\n * @alias module:echarts/component/marker/LineDraw\n * @constructor\n */\nfunction LineDraw(ctor) {\n this._ctor = ctor || LineGroup;\n this.group = new graphic.Group();\n}\n\nvar lineDrawProto = LineDraw.prototype;\n\nlineDrawProto.isPersistent = function () {\n return true;\n};\n/**\n * @param {module:echarts/data/List} lineData\n */\n\n\nlineDrawProto.updateData = function (lineData) {\n var lineDraw = this;\n var group = lineDraw.group;\n var oldLineData = lineDraw._lineData;\n lineDraw._lineData = lineData; // There is no oldLineData only when first rendering or switching from\n // stream mode to normal mode, where previous elements should be removed.\n\n if (!oldLineData) {\n group.removeAll();\n }\n\n var seriesScope = makeSeriesScope(lineData);\n lineData.diff(oldLineData).add(function (idx) {\n doAdd(lineDraw, lineData, idx, seriesScope);\n }).update(function (newIdx, oldIdx) {\n doUpdate(lineDraw, oldLineData, lineData, oldIdx, newIdx, seriesScope);\n }).remove(function (idx) {\n group.remove(oldLineData.getItemGraphicEl(idx));\n }).execute();\n};\n\nfunction doAdd(lineDraw, lineData, idx, seriesScope) {\n var itemLayout = lineData.getItemLayout(idx);\n\n if (!lineNeedsDraw(itemLayout)) {\n return;\n }\n\n var el = new lineDraw._ctor(lineData, idx, seriesScope);\n lineData.setItemGraphicEl(idx, el);\n lineDraw.group.add(el);\n}\n\nfunction doUpdate(lineDraw, oldLineData, newLineData, oldIdx, newIdx, seriesScope) {\n var itemEl = oldLineData.getItemGraphicEl(oldIdx);\n\n if (!lineNeedsDraw(newLineData.getItemLayout(newIdx))) {\n lineDraw.group.remove(itemEl);\n return;\n }\n\n if (!itemEl) {\n itemEl = new lineDraw._ctor(newLineData, newIdx, seriesScope);\n } else {\n itemEl.updateData(newLineData, newIdx, seriesScope);\n }\n\n newLineData.setItemGraphicEl(newIdx, itemEl);\n lineDraw.group.add(itemEl);\n}\n\nlineDrawProto.updateLayout = function () {\n var lineData = this._lineData; // Do not support update layout in incremental mode.\n\n if (!lineData) {\n return;\n }\n\n lineData.eachItemGraphicEl(function (el, idx) {\n el.updateLayout(lineData, idx);\n }, this);\n};\n\nlineDrawProto.incrementalPrepareUpdate = function (lineData) {\n this._seriesScope = makeSeriesScope(lineData);\n this._lineData = null;\n this.group.removeAll();\n};\n\nfunction isEffectObject(el) {\n return el.animators && el.animators.length > 0;\n}\n\nlineDrawProto.incrementalUpdate = function (taskParams, lineData) {\n function updateIncrementalAndHover(el) {\n if (!el.isGroup && !isEffectObject(el)) {\n el.incremental = el.useHoverLayer = true;\n }\n }\n\n for (var idx = taskParams.start; idx < taskParams.end; idx++) {\n var itemLayout = lineData.getItemLayout(idx);\n\n if (lineNeedsDraw(itemLayout)) {\n var el = new this._ctor(lineData, idx, this._seriesScope);\n el.traverse(updateIncrementalAndHover);\n this.group.add(el);\n lineData.setItemGraphicEl(idx, el);\n }\n }\n};\n\nfunction makeSeriesScope(lineData) {\n var hostModel = lineData.hostModel;\n return {\n lineStyle: hostModel.getModel('lineStyle').getLineStyle(),\n hoverLineStyle: hostModel.getModel('emphasis.lineStyle').getLineStyle(),\n labelModel: hostModel.getModel('label'),\n hoverLabelModel: hostModel.getModel('emphasis.label')\n };\n}\n\nlineDrawProto.remove = function () {\n this._clearIncremental();\n\n this._incremental = null;\n this.group.removeAll();\n};\n\nlineDrawProto._clearIncremental = function () {\n var incremental = this._incremental;\n\n if (incremental) {\n incremental.clearDisplaybles();\n }\n};\n\nfunction isPointNaN(pt) {\n return isNaN(pt[0]) || isNaN(pt[1]);\n}\n\nfunction lineNeedsDraw(pts) {\n return !isPointNaN(pts[0]) && !isPointNaN(pts[1]);\n}\n\nvar _default = LineDraw;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/helper/LineDraw.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/helper/LinePath.js": +/*!***********************************************************!*\ + !*** ./node_modules/echarts/lib/chart/helper/LinePath.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar vec2 = __webpack_require__(/*! zrender/lib/core/vector */ \"./node_modules/zrender/lib/core/vector.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Line path for bezier and straight line draw\n */\nvar straightLineProto = graphic.Line.prototype;\nvar bezierCurveProto = graphic.BezierCurve.prototype;\n\nfunction isLine(shape) {\n return isNaN(+shape.cpx1) || isNaN(+shape.cpy1);\n}\n\nvar _default = graphic.extendShape({\n type: 'ec-line',\n style: {\n stroke: '#000',\n fill: null\n },\n shape: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n percent: 1,\n cpx1: null,\n cpy1: null\n },\n buildPath: function (ctx, shape) {\n this[isLine(shape) ? '_buildPathLine' : '_buildPathCurve'](ctx, shape);\n },\n _buildPathLine: straightLineProto.buildPath,\n _buildPathCurve: bezierCurveProto.buildPath,\n pointAt: function (t) {\n return this[isLine(this.shape) ? '_pointAtLine' : '_pointAtCurve'](t);\n },\n _pointAtLine: straightLineProto.pointAt,\n _pointAtCurve: bezierCurveProto.pointAt,\n tangentAt: function (t) {\n var shape = this.shape;\n var p = isLine(shape) ? [shape.x2 - shape.x1, shape.y2 - shape.y1] : this._tangentAtCurve(t);\n return vec2.normalize(p, p);\n },\n _tangentAtCurve: bezierCurveProto.tangentAt\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/helper/LinePath.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/helper/Polyline.js": +/*!***********************************************************!*\ + !*** ./node_modules/echarts/lib/chart/helper/Polyline.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/Line\n */\n\n/**\n * @constructor\n * @extends {module:zrender/graphic/Group}\n * @alias {module:echarts/chart/helper/Polyline}\n */\nfunction Polyline(lineData, idx, seriesScope) {\n graphic.Group.call(this);\n\n this._createPolyline(lineData, idx, seriesScope);\n}\n\nvar polylineProto = Polyline.prototype;\n\npolylineProto._createPolyline = function (lineData, idx, seriesScope) {\n // var seriesModel = lineData.hostModel;\n var points = lineData.getItemLayout(idx);\n var line = new graphic.Polyline({\n shape: {\n points: points\n }\n });\n this.add(line);\n\n this._updateCommonStl(lineData, idx, seriesScope);\n};\n\npolylineProto.updateData = function (lineData, idx, seriesScope) {\n var seriesModel = lineData.hostModel;\n var line = this.childAt(0);\n var target = {\n shape: {\n points: lineData.getItemLayout(idx)\n }\n };\n graphic.updateProps(line, target, seriesModel, idx);\n\n this._updateCommonStl(lineData, idx, seriesScope);\n};\n\npolylineProto._updateCommonStl = function (lineData, idx, seriesScope) {\n var line = this.childAt(0);\n var itemModel = lineData.getItemModel(idx);\n var visualColor = lineData.getItemVisual(idx, 'color');\n var lineStyle = seriesScope && seriesScope.lineStyle;\n var hoverLineStyle = seriesScope && seriesScope.hoverLineStyle;\n\n if (!seriesScope || lineData.hasItemOption) {\n lineStyle = itemModel.getModel('lineStyle').getLineStyle();\n hoverLineStyle = itemModel.getModel('emphasis.lineStyle').getLineStyle();\n }\n\n line.useStyle(zrUtil.defaults({\n strokeNoScale: true,\n fill: 'none',\n stroke: visualColor\n }, lineStyle));\n line.hoverStyle = hoverLineStyle;\n graphic.setHoverStyle(this);\n};\n\npolylineProto.updateLayout = function (lineData, idx) {\n var polyline = this.childAt(0);\n polyline.setShape('points', lineData.getItemLayout(idx));\n};\n\nzrUtil.inherits(Polyline, graphic.Group);\nvar _default = Polyline;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/helper/Polyline.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/helper/Symbol.js": +/*!*********************************************************!*\ + !*** ./node_modules/echarts/lib/chart/helper/Symbol.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar _symbol = __webpack_require__(/*! ../../util/symbol */ \"./node_modules/echarts/lib/util/symbol.js\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar _number = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _labelHelper = __webpack_require__(/*! ./labelHelper */ \"./node_modules/echarts/lib/chart/helper/labelHelper.js\");\n\nvar getDefaultLabel = _labelHelper.getDefaultLabel;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/Symbol\n */\n\n/**\n * @constructor\n * @alias {module:echarts/chart/helper/Symbol}\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @extends {module:zrender/graphic/Group}\n */\nfunction SymbolClz(data, idx, seriesScope) {\n graphic.Group.call(this);\n this.updateData(data, idx, seriesScope);\n}\n\nvar symbolProto = SymbolClz.prototype;\n/**\n * @public\n * @static\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @return {Array.} [width, height]\n */\n\nvar getSymbolSize = SymbolClz.getSymbolSize = function (data, idx) {\n var symbolSize = data.getItemVisual(idx, 'symbolSize');\n return symbolSize instanceof Array ? symbolSize.slice() : [+symbolSize, +symbolSize];\n};\n\nfunction getScale(symbolSize) {\n return [symbolSize[0] / 2, symbolSize[1] / 2];\n}\n\nfunction driftSymbol(dx, dy) {\n this.parent.drift(dx, dy);\n}\n\nsymbolProto._createSymbol = function (symbolType, data, idx, symbolSize, keepAspect) {\n // Remove paths created before\n this.removeAll();\n var color = data.getItemVisual(idx, 'color'); // var symbolPath = createSymbol(\n // symbolType, -0.5, -0.5, 1, 1, color\n // );\n // If width/height are set too small (e.g., set to 1) on ios10\n // and macOS Sierra, a circle stroke become a rect, no matter what\n // the scale is set. So we set width/height as 2. See #4150.\n\n var symbolPath = createSymbol(symbolType, -1, -1, 2, 2, color, keepAspect);\n symbolPath.attr({\n z2: 100,\n culling: true,\n scale: getScale(symbolSize)\n }); // Rewrite drift method\n\n symbolPath.drift = driftSymbol;\n this._symbolType = symbolType;\n this.add(symbolPath);\n};\n/**\n * Stop animation\n * @param {boolean} toLastFrame\n */\n\n\nsymbolProto.stopSymbolAnimation = function (toLastFrame) {\n this.childAt(0).stopAnimation(toLastFrame);\n};\n/**\n * FIXME:\n * Caution: This method breaks the encapsulation of this module,\n * but it indeed brings convenience. So do not use the method\n * unless you detailedly know all the implements of `Symbol`,\n * especially animation.\n *\n * Get symbol path element.\n */\n\n\nsymbolProto.getSymbolPath = function () {\n return this.childAt(0);\n};\n/**\n * Get scale(aka, current symbol size).\n * Including the change caused by animation\n */\n\n\nsymbolProto.getScale = function () {\n return this.childAt(0).scale;\n};\n/**\n * Highlight symbol\n */\n\n\nsymbolProto.highlight = function () {\n this.childAt(0).trigger('emphasis');\n};\n/**\n * Downplay symbol\n */\n\n\nsymbolProto.downplay = function () {\n this.childAt(0).trigger('normal');\n};\n/**\n * @param {number} zlevel\n * @param {number} z\n */\n\n\nsymbolProto.setZ = function (zlevel, z) {\n var symbolPath = this.childAt(0);\n symbolPath.zlevel = zlevel;\n symbolPath.z = z;\n};\n\nsymbolProto.setDraggable = function (draggable) {\n var symbolPath = this.childAt(0);\n symbolPath.draggable = draggable;\n symbolPath.cursor = draggable ? 'move' : symbolPath.cursor;\n};\n/**\n * Update symbol properties\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @param {Object} [seriesScope]\n * @param {Object} [seriesScope.itemStyle]\n * @param {Object} [seriesScope.hoverItemStyle]\n * @param {Object} [seriesScope.symbolRotate]\n * @param {Object} [seriesScope.symbolOffset]\n * @param {module:echarts/model/Model} [seriesScope.labelModel]\n * @param {module:echarts/model/Model} [seriesScope.hoverLabelModel]\n * @param {boolean} [seriesScope.hoverAnimation]\n * @param {Object} [seriesScope.cursorStyle]\n * @param {module:echarts/model/Model} [seriesScope.itemModel]\n * @param {string} [seriesScope.symbolInnerColor]\n * @param {Object} [seriesScope.fadeIn=false]\n */\n\n\nsymbolProto.updateData = function (data, idx, seriesScope) {\n this.silent = false;\n var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\n var seriesModel = data.hostModel;\n var symbolSize = getSymbolSize(data, idx);\n var isInit = symbolType !== this._symbolType;\n\n if (isInit) {\n var keepAspect = data.getItemVisual(idx, 'symbolKeepAspect');\n\n this._createSymbol(symbolType, data, idx, symbolSize, keepAspect);\n } else {\n var symbolPath = this.childAt(0);\n symbolPath.silent = false;\n graphic.updateProps(symbolPath, {\n scale: getScale(symbolSize)\n }, seriesModel, idx);\n }\n\n this._updateCommon(data, idx, symbolSize, seriesScope);\n\n if (isInit) {\n var symbolPath = this.childAt(0);\n var fadeIn = seriesScope && seriesScope.fadeIn;\n var target = {\n scale: symbolPath.scale.slice()\n };\n fadeIn && (target.style = {\n opacity: symbolPath.style.opacity\n });\n symbolPath.scale = [0, 0];\n fadeIn && (symbolPath.style.opacity = 0);\n graphic.initProps(symbolPath, target, seriesModel, idx);\n }\n\n this._seriesModel = seriesModel;\n}; // Update common properties\n\n\nvar normalStyleAccessPath = ['itemStyle'];\nvar emphasisStyleAccessPath = ['emphasis', 'itemStyle'];\nvar normalLabelAccessPath = ['label'];\nvar emphasisLabelAccessPath = ['emphasis', 'label'];\n/**\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @param {Array.} symbolSize\n * @param {Object} [seriesScope]\n */\n\nsymbolProto._updateCommon = function (data, idx, symbolSize, seriesScope) {\n var symbolPath = this.childAt(0);\n var seriesModel = data.hostModel;\n var color = data.getItemVisual(idx, 'color'); // Reset style\n\n if (symbolPath.type !== 'image') {\n symbolPath.useStyle({\n strokeNoScale: true\n });\n } else {\n symbolPath.setStyle({\n opacity: 1,\n shadowBlur: null,\n shadowOffsetX: null,\n shadowOffsetY: null,\n shadowColor: null\n });\n }\n\n var itemStyle = seriesScope && seriesScope.itemStyle;\n var hoverItemStyle = seriesScope && seriesScope.hoverItemStyle;\n var symbolOffset = seriesScope && seriesScope.symbolOffset;\n var labelModel = seriesScope && seriesScope.labelModel;\n var hoverLabelModel = seriesScope && seriesScope.hoverLabelModel;\n var hoverAnimation = seriesScope && seriesScope.hoverAnimation;\n var cursorStyle = seriesScope && seriesScope.cursorStyle;\n\n if (!seriesScope || data.hasItemOption) {\n var itemModel = seriesScope && seriesScope.itemModel ? seriesScope.itemModel : data.getItemModel(idx); // Color must be excluded.\n // Because symbol provide setColor individually to set fill and stroke\n\n itemStyle = itemModel.getModel(normalStyleAccessPath).getItemStyle(['color']);\n hoverItemStyle = itemModel.getModel(emphasisStyleAccessPath).getItemStyle();\n symbolOffset = itemModel.getShallow('symbolOffset');\n labelModel = itemModel.getModel(normalLabelAccessPath);\n hoverLabelModel = itemModel.getModel(emphasisLabelAccessPath);\n hoverAnimation = itemModel.getShallow('hoverAnimation');\n cursorStyle = itemModel.getShallow('cursor');\n } else {\n hoverItemStyle = zrUtil.extend({}, hoverItemStyle);\n }\n\n var elStyle = symbolPath.style;\n var symbolRotate = data.getItemVisual(idx, 'symbolRotate');\n symbolPath.attr('rotation', (symbolRotate || 0) * Math.PI / 180 || 0);\n\n if (symbolOffset) {\n symbolPath.attr('position', [parsePercent(symbolOffset[0], symbolSize[0]), parsePercent(symbolOffset[1], symbolSize[1])]);\n }\n\n cursorStyle && symbolPath.attr('cursor', cursorStyle); // PENDING setColor before setStyle!!!\n\n symbolPath.setColor(color, seriesScope && seriesScope.symbolInnerColor);\n symbolPath.setStyle(itemStyle);\n var opacity = data.getItemVisual(idx, 'opacity');\n\n if (opacity != null) {\n elStyle.opacity = opacity;\n }\n\n var liftZ = data.getItemVisual(idx, 'liftZ');\n var z2Origin = symbolPath.__z2Origin;\n\n if (liftZ != null) {\n if (z2Origin == null) {\n symbolPath.__z2Origin = symbolPath.z2;\n symbolPath.z2 += liftZ;\n }\n } else if (z2Origin != null) {\n symbolPath.z2 = z2Origin;\n symbolPath.__z2Origin = null;\n }\n\n var useNameLabel = seriesScope && seriesScope.useNameLabel;\n graphic.setLabelStyle(elStyle, hoverItemStyle, labelModel, hoverLabelModel, {\n labelFetcher: seriesModel,\n labelDataIndex: idx,\n defaultText: getLabelDefaultText,\n isRectText: true,\n autoColor: color\n }); // Do not execute util needed.\n\n function getLabelDefaultText(idx, opt) {\n return useNameLabel ? data.getName(idx) : getDefaultLabel(data, idx);\n }\n\n symbolPath.__symbolOriginalScale = getScale(symbolSize);\n symbolPath.hoverStyle = hoverItemStyle;\n symbolPath.highDownOnUpdate = hoverAnimation && seriesModel.isAnimationEnabled() ? highDownOnUpdate : null;\n graphic.setHoverStyle(symbolPath);\n};\n\nfunction highDownOnUpdate(fromState, toState) {\n // Do not support this hover animation util some scenario required.\n // Animation can only be supported in hover layer when using `el.incremetal`.\n if (this.incremental || this.useHoverLayer) {\n return;\n }\n\n if (toState === 'emphasis') {\n var scale = this.__symbolOriginalScale;\n var ratio = scale[1] / scale[0];\n var emphasisOpt = {\n scale: [Math.max(scale[0] * 1.1, scale[0] + 3), Math.max(scale[1] * 1.1, scale[1] + 3 * ratio)]\n }; // FIXME\n // modify it after support stop specified animation.\n // toState === fromState\n // ? (this.stopAnimation(), this.attr(emphasisOpt))\n\n this.animateTo(emphasisOpt, 400, 'elasticOut');\n } else if (toState === 'normal') {\n this.animateTo({\n scale: this.__symbolOriginalScale\n }, 400, 'elasticOut');\n }\n}\n/**\n * @param {Function} cb\n * @param {Object} [opt]\n * @param {Object} [opt.keepLabel=true]\n */\n\n\nsymbolProto.fadeOut = function (cb, opt) {\n var symbolPath = this.childAt(0); // Avoid mistaken hover when fading out\n\n this.silent = symbolPath.silent = true; // Not show text when animating\n\n !(opt && opt.keepLabel) && (symbolPath.style.text = null);\n graphic.updateProps(symbolPath, {\n style: {\n opacity: 0\n },\n scale: [0, 0]\n }, this._seriesModel, this.dataIndex, cb);\n};\n\nzrUtil.inherits(SymbolClz, graphic.Group);\nvar _default = SymbolClz;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/helper/Symbol.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/helper/SymbolDraw.js": +/*!*************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/helper/SymbolDraw.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar SymbolClz = __webpack_require__(/*! ./Symbol */ \"./node_modules/echarts/lib/chart/helper/Symbol.js\");\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar isObject = _util.isObject;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/SymbolDraw\n */\n\n/**\n * @constructor\n * @alias module:echarts/chart/helper/SymbolDraw\n * @param {module:zrender/graphic/Group} [symbolCtor]\n */\nfunction SymbolDraw(symbolCtor) {\n this.group = new graphic.Group();\n this._symbolCtor = symbolCtor || SymbolClz;\n}\n\nvar symbolDrawProto = SymbolDraw.prototype;\n\nfunction symbolNeedsDraw(data, point, idx, opt) {\n return point && !isNaN(point[0]) && !isNaN(point[1]) && !(opt.isIgnore && opt.isIgnore(idx)) // We do not set clipShape on group, because it will cut part of\n // the symbol element shape. We use the same clip shape here as\n // the line clip.\n && !(opt.clipShape && !opt.clipShape.contain(point[0], point[1])) && data.getItemVisual(idx, 'symbol') !== 'none';\n}\n/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n * @param {Object} [opt] Or isIgnore\n * @param {Function} [opt.isIgnore]\n * @param {Object} [opt.clipShape]\n */\n\n\nsymbolDrawProto.updateData = function (data, opt) {\n opt = normalizeUpdateOpt(opt);\n var group = this.group;\n var seriesModel = data.hostModel;\n var oldData = this._data;\n var SymbolCtor = this._symbolCtor;\n var seriesScope = makeSeriesScope(data); // There is no oldLineData only when first rendering or switching from\n // stream mode to normal mode, where previous elements should be removed.\n\n if (!oldData) {\n group.removeAll();\n }\n\n data.diff(oldData).add(function (newIdx) {\n var point = data.getItemLayout(newIdx);\n\n if (symbolNeedsDraw(data, point, newIdx, opt)) {\n var symbolEl = new SymbolCtor(data, newIdx, seriesScope);\n symbolEl.attr('position', point);\n data.setItemGraphicEl(newIdx, symbolEl);\n group.add(symbolEl);\n }\n }).update(function (newIdx, oldIdx) {\n var symbolEl = oldData.getItemGraphicEl(oldIdx);\n var point = data.getItemLayout(newIdx);\n\n if (!symbolNeedsDraw(data, point, newIdx, opt)) {\n group.remove(symbolEl);\n return;\n }\n\n if (!symbolEl) {\n symbolEl = new SymbolCtor(data, newIdx);\n symbolEl.attr('position', point);\n } else {\n symbolEl.updateData(data, newIdx, seriesScope);\n graphic.updateProps(symbolEl, {\n position: point\n }, seriesModel);\n } // Add back\n\n\n group.add(symbolEl);\n data.setItemGraphicEl(newIdx, symbolEl);\n }).remove(function (oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n el && el.fadeOut(function () {\n group.remove(el);\n });\n }).execute();\n this._data = data;\n};\n\nsymbolDrawProto.isPersistent = function () {\n return true;\n};\n\nsymbolDrawProto.updateLayout = function () {\n var data = this._data;\n\n if (data) {\n // Not use animation\n data.eachItemGraphicEl(function (el, idx) {\n var point = data.getItemLayout(idx);\n el.attr('position', point);\n });\n }\n};\n\nsymbolDrawProto.incrementalPrepareUpdate = function (data) {\n this._seriesScope = makeSeriesScope(data);\n this._data = null;\n this.group.removeAll();\n};\n/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n * @param {Object} [opt] Or isIgnore\n * @param {Function} [opt.isIgnore]\n * @param {Object} [opt.clipShape]\n */\n\n\nsymbolDrawProto.incrementalUpdate = function (taskParams, data, opt) {\n opt = normalizeUpdateOpt(opt);\n\n function updateIncrementalAndHover(el) {\n if (!el.isGroup) {\n el.incremental = el.useHoverLayer = true;\n }\n }\n\n for (var idx = taskParams.start; idx < taskParams.end; idx++) {\n var point = data.getItemLayout(idx);\n\n if (symbolNeedsDraw(data, point, idx, opt)) {\n var el = new this._symbolCtor(data, idx, this._seriesScope);\n el.traverse(updateIncrementalAndHover);\n el.attr('position', point);\n this.group.add(el);\n data.setItemGraphicEl(idx, el);\n }\n }\n};\n\nfunction normalizeUpdateOpt(opt) {\n if (opt != null && !isObject(opt)) {\n opt = {\n isIgnore: opt\n };\n }\n\n return opt || {};\n}\n\nsymbolDrawProto.remove = function (enableAnimation) {\n var group = this.group;\n var data = this._data; // Incremental model do not have this._data.\n\n if (data && enableAnimation) {\n data.eachItemGraphicEl(function (el) {\n el.fadeOut(function () {\n group.remove(el);\n });\n });\n } else {\n group.removeAll();\n }\n};\n\nfunction makeSeriesScope(data) {\n var seriesModel = data.hostModel;\n return {\n itemStyle: seriesModel.getModel('itemStyle').getItemStyle(['color']),\n hoverItemStyle: seriesModel.getModel('emphasis.itemStyle').getItemStyle(),\n symbolRotate: seriesModel.get('symbolRotate'),\n symbolOffset: seriesModel.get('symbolOffset'),\n hoverAnimation: seriesModel.get('hoverAnimation'),\n labelModel: seriesModel.getModel('label'),\n hoverLabelModel: seriesModel.getModel('emphasis.label'),\n cursorStyle: seriesModel.get('cursor')\n };\n}\n\nvar _default = SymbolDraw;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/helper/SymbolDraw.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/helper/createClipPathFromCoordSys.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/helper/createClipPathFromCoordSys.js ***! + \*****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar _number = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar round = _number.round;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction createGridClipPath(cartesian, hasAnimation, seriesModel) {\n var rect = cartesian.getArea();\n var isHorizontal = cartesian.getBaseAxis().isHorizontal();\n var x = rect.x;\n var y = rect.y;\n var width = rect.width;\n var height = rect.height;\n var lineWidth = seriesModel.get('lineStyle.width') || 2; // Expand the clip path a bit to avoid the border is clipped and looks thinner\n\n x -= lineWidth / 2;\n y -= lineWidth / 2;\n width += lineWidth;\n height += lineWidth; // fix: https://github.com/apache/incubator-echarts/issues/11369\n\n x = Math.floor(x);\n width = Math.round(width);\n var clipPath = new graphic.Rect({\n shape: {\n x: x,\n y: y,\n width: width,\n height: height\n }\n });\n\n if (hasAnimation) {\n clipPath.shape[isHorizontal ? 'width' : 'height'] = 0;\n graphic.initProps(clipPath, {\n shape: {\n width: width,\n height: height\n }\n }, seriesModel);\n }\n\n return clipPath;\n}\n\nfunction createPolarClipPath(polar, hasAnimation, seriesModel) {\n var sectorArea = polar.getArea(); // Avoid float number rounding error for symbol on the edge of axis extent.\n\n var clipPath = new graphic.Sector({\n shape: {\n cx: round(polar.cx, 1),\n cy: round(polar.cy, 1),\n r0: round(sectorArea.r0, 1),\n r: round(sectorArea.r, 1),\n startAngle: sectorArea.startAngle,\n endAngle: sectorArea.endAngle,\n clockwise: sectorArea.clockwise\n }\n });\n\n if (hasAnimation) {\n clipPath.shape.endAngle = sectorArea.startAngle;\n graphic.initProps(clipPath, {\n shape: {\n endAngle: sectorArea.endAngle\n }\n }, seriesModel);\n }\n\n return clipPath;\n}\n\nfunction createClipPath(coordSys, hasAnimation, seriesModel) {\n if (!coordSys) {\n return null;\n } else if (coordSys.type === 'polar') {\n return createPolarClipPath(coordSys, hasAnimation, seriesModel);\n } else if (coordSys.type === 'cartesian2d') {\n return createGridClipPath(coordSys, hasAnimation, seriesModel);\n }\n\n return null;\n}\n\nexports.createGridClipPath = createGridClipPath;\nexports.createPolarClipPath = createPolarClipPath;\nexports.createClipPath = createClipPath;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/helper/createClipPathFromCoordSys.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/helper/createGraphFromNodeEdge.js": +/*!**************************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/helper/createGraphFromNodeEdge.js ***! + \**************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar List = __webpack_require__(/*! ../../data/List */ \"./node_modules/echarts/lib/data/List.js\");\n\nvar Graph = __webpack_require__(/*! ../../data/Graph */ \"./node_modules/echarts/lib/data/Graph.js\");\n\nvar linkList = __webpack_require__(/*! ../../data/helper/linkList */ \"./node_modules/echarts/lib/data/helper/linkList.js\");\n\nvar createDimensions = __webpack_require__(/*! ../../data/helper/createDimensions */ \"./node_modules/echarts/lib/data/helper/createDimensions.js\");\n\nvar CoordinateSystem = __webpack_require__(/*! ../../CoordinateSystem */ \"./node_modules/echarts/lib/CoordinateSystem.js\");\n\nvar createListFromArray = __webpack_require__(/*! ./createListFromArray */ \"./node_modules/echarts/lib/chart/helper/createListFromArray.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(nodes, edges, seriesModel, directed, beforeLink) {\n // ??? TODO\n // support dataset?\n var graph = new Graph(directed);\n\n for (var i = 0; i < nodes.length; i++) {\n graph.addNode(zrUtil.retrieve( // Id, name, dataIndex\n nodes[i].id, nodes[i].name, i), i);\n }\n\n var linkNameList = [];\n var validEdges = [];\n var linkCount = 0;\n\n for (var i = 0; i < edges.length; i++) {\n var link = edges[i];\n var source = link.source;\n var target = link.target; // addEdge may fail when source or target not exists\n\n if (graph.addEdge(source, target, linkCount)) {\n validEdges.push(link);\n linkNameList.push(zrUtil.retrieve(link.id, source + ' > ' + target));\n linkCount++;\n }\n }\n\n var coordSys = seriesModel.get('coordinateSystem');\n var nodeData;\n\n if (coordSys === 'cartesian2d' || coordSys === 'polar') {\n nodeData = createListFromArray(nodes, seriesModel);\n } else {\n var coordSysCtor = CoordinateSystem.get(coordSys);\n var coordDimensions = coordSysCtor && coordSysCtor.type !== 'view' ? coordSysCtor.dimensions || [] : []; // FIXME: Some geo do not need `value` dimenson, whereas `calendar` needs\n // `value` dimension, but graph need `value` dimension. It's better to\n // uniform this behavior.\n\n if (zrUtil.indexOf(coordDimensions, 'value') < 0) {\n coordDimensions.concat(['value']);\n }\n\n var dimensionNames = createDimensions(nodes, {\n coordDimensions: coordDimensions\n });\n nodeData = new List(dimensionNames, seriesModel);\n nodeData.initData(nodes);\n }\n\n var edgeData = new List(['value'], seriesModel);\n edgeData.initData(validEdges, linkNameList);\n beforeLink && beforeLink(nodeData, edgeData);\n linkList({\n mainData: nodeData,\n struct: graph,\n structAttr: 'graph',\n datas: {\n node: nodeData,\n edge: edgeData\n },\n datasAttr: {\n node: 'data',\n edge: 'edgeData'\n }\n }); // Update dataIndex of nodes and edges because invalid edge may be removed\n\n graph.update();\n return graph;\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/helper/createGraphFromNodeEdge.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/helper/createListFromArray.js": +/*!**********************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/helper/createListFromArray.js ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar List = __webpack_require__(/*! ../../data/List */ \"./node_modules/echarts/lib/data/List.js\");\n\nvar createDimensions = __webpack_require__(/*! ../../data/helper/createDimensions */ \"./node_modules/echarts/lib/data/helper/createDimensions.js\");\n\nvar _sourceType = __webpack_require__(/*! ../../data/helper/sourceType */ \"./node_modules/echarts/lib/data/helper/sourceType.js\");\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\n\nvar _dimensionHelper = __webpack_require__(/*! ../../data/helper/dimensionHelper */ \"./node_modules/echarts/lib/data/helper/dimensionHelper.js\");\n\nvar getDimensionTypeByAxis = _dimensionHelper.getDimensionTypeByAxis;\n\nvar _model = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar getDataItemValue = _model.getDataItemValue;\n\nvar CoordinateSystem = __webpack_require__(/*! ../../CoordinateSystem */ \"./node_modules/echarts/lib/CoordinateSystem.js\");\n\nvar _referHelper = __webpack_require__(/*! ../../model/referHelper */ \"./node_modules/echarts/lib/model/referHelper.js\");\n\nvar getCoordSysInfoBySeries = _referHelper.getCoordSysInfoBySeries;\n\nvar Source = __webpack_require__(/*! ../../data/Source */ \"./node_modules/echarts/lib/data/Source.js\");\n\nvar _dataStackHelper = __webpack_require__(/*! ../../data/helper/dataStackHelper */ \"./node_modules/echarts/lib/data/helper/dataStackHelper.js\");\n\nvar enableDataStack = _dataStackHelper.enableDataStack;\n\nvar _sourceHelper = __webpack_require__(/*! ../../data/helper/sourceHelper */ \"./node_modules/echarts/lib/data/helper/sourceHelper.js\");\n\nvar makeSeriesEncodeForAxisCoordSys = _sourceHelper.makeSeriesEncodeForAxisCoordSys;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {module:echarts/data/Source|Array} source Or raw data.\n * @param {module:echarts/model/Series} seriesModel\n * @param {Object} [opt]\n * @param {string} [opt.generateCoord]\n * @param {boolean} [opt.useEncodeDefaulter]\n */\nfunction createListFromArray(source, seriesModel, opt) {\n opt = opt || {};\n\n if (!Source.isInstance(source)) {\n source = Source.seriesDataToSource(source);\n }\n\n var coordSysName = seriesModel.get('coordinateSystem');\n var registeredCoordSys = CoordinateSystem.get(coordSysName);\n var coordSysInfo = getCoordSysInfoBySeries(seriesModel);\n var coordSysDimDefs;\n\n if (coordSysInfo) {\n coordSysDimDefs = zrUtil.map(coordSysInfo.coordSysDims, function (dim) {\n var dimInfo = {\n name: dim\n };\n var axisModel = coordSysInfo.axisMap.get(dim);\n\n if (axisModel) {\n var axisType = axisModel.get('type');\n dimInfo.type = getDimensionTypeByAxis(axisType); // dimInfo.stackable = isStackable(axisType);\n }\n\n return dimInfo;\n });\n }\n\n if (!coordSysDimDefs) {\n // Get dimensions from registered coordinate system\n coordSysDimDefs = registeredCoordSys && (registeredCoordSys.getDimensionsInfo ? registeredCoordSys.getDimensionsInfo() : registeredCoordSys.dimensions.slice()) || ['x', 'y'];\n }\n\n var dimInfoList = createDimensions(source, {\n coordDimensions: coordSysDimDefs,\n generateCoord: opt.generateCoord,\n encodeDefaulter: opt.useEncodeDefaulter ? zrUtil.curry(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel) : null\n });\n var firstCategoryDimIndex;\n var hasNameEncode;\n coordSysInfo && zrUtil.each(dimInfoList, function (dimInfo, dimIndex) {\n var coordDim = dimInfo.coordDim;\n var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim);\n\n if (categoryAxisModel) {\n if (firstCategoryDimIndex == null) {\n firstCategoryDimIndex = dimIndex;\n }\n\n dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta();\n }\n\n if (dimInfo.otherDims.itemName != null) {\n hasNameEncode = true;\n }\n });\n\n if (!hasNameEncode && firstCategoryDimIndex != null) {\n dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0;\n }\n\n var stackCalculationInfo = enableDataStack(seriesModel, dimInfoList);\n var list = new List(dimInfoList, seriesModel);\n list.setCalculationInfo(stackCalculationInfo);\n var dimValueGetter = firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source) ? function (itemOpt, dimName, dataIndex, dimIndex) {\n // Use dataIndex as ordinal value in categoryAxis\n return dimIndex === firstCategoryDimIndex ? dataIndex : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex);\n } : null;\n list.hasItemOption = false;\n list.initData(source, null, dimValueGetter);\n return list;\n}\n\nfunction isNeedCompleteOrdinalData(source) {\n if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n var sampleItem = firstDataNotNull(source.data || []);\n return sampleItem != null && !zrUtil.isArray(getDataItemValue(sampleItem));\n }\n}\n\nfunction firstDataNotNull(data) {\n var i = 0;\n\n while (i < data.length && data[i] == null) {\n i++;\n }\n\n return data[i];\n}\n\nvar _default = createListFromArray;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/helper/createListFromArray.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/helper/createListSimply.js": +/*!*******************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/helper/createListSimply.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar createDimensions = __webpack_require__(/*! ../../data/helper/createDimensions */ \"./node_modules/echarts/lib/data/helper/createDimensions.js\");\n\nvar List = __webpack_require__(/*! ../../data/List */ \"./node_modules/echarts/lib/data/List.js\");\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar extend = _util.extend;\nvar isArray = _util.isArray;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * [Usage]:\n * (1)\n * createListSimply(seriesModel, ['value']);\n * (2)\n * createListSimply(seriesModel, {\n * coordDimensions: ['value'],\n * dimensionsCount: 5\n * });\n *\n * @param {module:echarts/model/Series} seriesModel\n * @param {Object|Array.} opt opt or coordDimensions\n * The options in opt, see `echarts/data/helper/createDimensions`\n * @param {Array.} [nameList]\n * @return {module:echarts/data/List}\n */\nfunction _default(seriesModel, opt, nameList) {\n opt = isArray(opt) && {\n coordDimensions: opt\n } || extend({}, opt);\n var source = seriesModel.getSource();\n var dimensionsInfo = createDimensions(source, opt);\n var list = new List(dimensionsInfo, seriesModel);\n list.initData(source, nameList);\n return list;\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/helper/createListSimply.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/helper/createRenderPlanner.js": +/*!**********************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/helper/createRenderPlanner.js ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _model = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar makeInner = _model.makeInner;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @return {string} If large mode changed, return string 'reset';\n */\nfunction _default() {\n var inner = makeInner();\n return function (seriesModel) {\n var fields = inner(seriesModel);\n var pipelineContext = seriesModel.pipelineContext;\n var originalLarge = fields.large;\n var originalProgressive = fields.progressiveRender; // FIXME: if the planner works on a filtered series, `pipelineContext` does not\n // exists. See #11611 . Probably we need to modify this structure, see the comment\n // on `performRawSeries` in `Schedular.js`.\n\n var large = fields.large = pipelineContext && pipelineContext.large;\n var progressive = fields.progressiveRender = pipelineContext && pipelineContext.progressiveRender;\n return !!(originalLarge ^ large || originalProgressive ^ progressive) && 'reset';\n };\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/helper/createRenderPlanner.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/helper/focusNodeAdjacencyAction.js": +/*!***************************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/helper/focusNodeAdjacencyAction.js ***! + \***************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @payload\n * @property {number} [seriesIndex]\n * @property {string} [seriesId]\n * @property {string} [seriesName]\n * @property {number} [dataIndex]\n */\necharts.registerAction({\n type: 'focusNodeAdjacency',\n event: 'focusNodeAdjacency',\n update: 'series:focusNodeAdjacency'\n}, function () {});\n/**\n * @payload\n * @property {number} [seriesIndex]\n * @property {string} [seriesId]\n * @property {string} [seriesName]\n */\n\necharts.registerAction({\n type: 'unfocusNodeAdjacency',\n event: 'unfocusNodeAdjacency',\n update: 'series:unfocusNodeAdjacency'\n}, function () {});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/helper/focusNodeAdjacencyAction.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/helper/labelHelper.js": +/*!**************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/helper/labelHelper.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _dataProvider = __webpack_require__(/*! ../../data/helper/dataProvider */ \"./node_modules/echarts/lib/data/helper/dataProvider.js\");\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @return {string} label string. Not null/undefined\n */\nfunction getDefaultLabel(data, dataIndex) {\n var labelDims = data.mapDimension('defaultedLabel', true);\n var len = labelDims.length; // Simple optimization (in lots of cases, label dims length is 1)\n\n if (len === 1) {\n return retrieveRawValue(data, dataIndex, labelDims[0]);\n } else if (len) {\n var vals = [];\n\n for (var i = 0; i < labelDims.length; i++) {\n var val = retrieveRawValue(data, dataIndex, labelDims[i]);\n vals.push(val);\n }\n\n return vals.join(' ');\n }\n}\n\nexports.getDefaultLabel = getDefaultLabel;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/helper/labelHelper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/helper/multipleGraphEdgeHelper.js": +/*!**************************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/helper/multipleGraphEdgeHelper.js ***! + \**************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar KEY_DELIMITER = '-->';\n/**\n * params handler\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @returns {*}\n */\n\nvar getAutoCurvenessParams = function (seriesModel) {\n return seriesModel.get('autoCurveness') || null;\n};\n/**\n * Generate a list of edge curvatures, 20 is the default\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @param {number} appendLength\n * @return 20 => [0, -0.2, 0.2, -0.4, 0.4, -0.6, 0.6, -0.8, 0.8, -1, 1, -1.2, 1.2, -1.4, 1.4, -1.6, 1.6, -1.8, 1.8, -2]\n */\n\n\nvar createCurveness = function (seriesModel, appendLength) {\n var autoCurvenessParmas = getAutoCurvenessParams(seriesModel);\n var length = 20;\n var curvenessList = []; // handler the function set\n\n if (typeof autoCurvenessParmas === 'number') {\n length = autoCurvenessParmas;\n } else if (zrUtil.isArray(autoCurvenessParmas)) {\n seriesModel.__curvenessList = autoCurvenessParmas;\n return;\n } // append length\n\n\n if (appendLength > length) {\n length = appendLength;\n } // make sure the length is even\n\n\n var len = length % 2 ? length + 2 : length + 3;\n curvenessList = [];\n\n for (var i = 0; i < len; i++) {\n curvenessList.push((i % 2 ? i + 1 : i) / 10 * (i % 2 ? -1 : 1));\n }\n\n seriesModel.__curvenessList = curvenessList;\n};\n/**\n * Create different cache key data in the positive and negative directions, in order to set the curvature later\n * @param {number|string|module:echarts/data/Graph.Node} n1\n * @param {number|string|module:echarts/data/Graph.Node} n2\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @returns {string} key\n */\n\n\nvar getKeyOfEdges = function (n1, n2, seriesModel) {\n var source = [n1.id, n1.dataIndex].join('.');\n var target = [n2.id, n2.dataIndex].join('.');\n return [seriesModel.uid, source, target].join(KEY_DELIMITER);\n};\n/**\n * get opposite key\n * @param {string} key\n * @returns {string}\n */\n\n\nvar getOppositeKey = function (key) {\n var keys = key.split(KEY_DELIMITER);\n return [keys[0], keys[2], keys[1]].join(KEY_DELIMITER);\n};\n/**\n * get edgeMap with key\n * @param edge\n * @param {module:echarts/model/SeriesModel} seriesModel\n */\n\n\nvar getEdgeFromMap = function (edge, seriesModel) {\n var key = getKeyOfEdges(edge.node1, edge.node2, seriesModel);\n return seriesModel.__edgeMap[key];\n};\n/**\n * calculate all cases total length\n * @param edge\n * @param seriesModel\n * @returns {number}\n */\n\n\nvar getTotalLengthBetweenNodes = function (edge, seriesModel) {\n var len = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node1, edge.node2, seriesModel), seriesModel);\n var lenV = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node2, edge.node1, seriesModel), seriesModel);\n return len + lenV;\n};\n/**\n *\n * @param key\n */\n\n\nvar getEdgeMapLengthWithKey = function (key, seriesModel) {\n var edgeMap = seriesModel.__edgeMap;\n return edgeMap[key] ? edgeMap[key].length : 0;\n};\n/**\n * Count the number of edges between the same two points, used to obtain the curvature table and the parity of the edge\n * @see /graph/GraphSeries.js@getInitialData\n * @param {module:echarts/model/SeriesModel} seriesModel\n */\n\n\nfunction initCurvenessList(seriesModel) {\n if (!getAutoCurvenessParams(seriesModel)) {\n return;\n }\n\n seriesModel.__curvenessList = [];\n seriesModel.__edgeMap = {}; // calc the array of curveness List\n\n createCurveness(seriesModel);\n}\n/**\n * set edgeMap with key\n * @param {number|string|module:echarts/data/Graph.Node} n1\n * @param {number|string|module:echarts/data/Graph.Node} n2\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @param {number} index\n */\n\n\nfunction createEdgeMapForCurveness(n1, n2, seriesModel, index) {\n if (!getAutoCurvenessParams(seriesModel)) {\n return;\n }\n\n var key = getKeyOfEdges(n1, n2, seriesModel);\n var edgeMap = seriesModel.__edgeMap;\n var oppositeEdges = edgeMap[getOppositeKey(key)]; // set direction\n\n if (edgeMap[key] && !oppositeEdges) {\n edgeMap[key].isForward = true;\n } else if (oppositeEdges && edgeMap[key]) {\n oppositeEdges.isForward = true;\n edgeMap[key].isForward = false;\n }\n\n edgeMap[key] = edgeMap[key] || [];\n edgeMap[key].push(index);\n}\n/**\n * get curvature for edge\n * @param edge\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @param index\n */\n\n\nfunction getCurvenessForEdge(edge, seriesModel, index, needReverse) {\n var autoCurvenessParams = getAutoCurvenessParams(seriesModel);\n var isArrayParam = zrUtil.isArray(autoCurvenessParams);\n\n if (!autoCurvenessParams) {\n return null;\n }\n\n var edgeArray = getEdgeFromMap(edge, seriesModel);\n\n if (!edgeArray) {\n return null;\n }\n\n var edgeIndex = -1;\n\n for (var i = 0; i < edgeArray.length; i++) {\n if (edgeArray[i] === index) {\n edgeIndex = i;\n break;\n }\n } // if totalLen is Longer createCurveness\n\n\n var totalLen = getTotalLengthBetweenNodes(edge, seriesModel);\n createCurveness(seriesModel, totalLen);\n edge.lineStyle = edge.lineStyle || {}; // if is opposite edge, must set curvenss to opposite number\n\n var curKey = getKeyOfEdges(edge.node1, edge.node2, seriesModel);\n var curvenessList = seriesModel.__curvenessList; // if pass array no need parity\n\n var parityCorrection = isArrayParam ? 0 : totalLen % 2 ? 0 : 1;\n\n if (!edgeArray.isForward) {\n // the opposite edge show outside\n var oppositeKey = getOppositeKey(curKey);\n var len = getEdgeMapLengthWithKey(oppositeKey, seriesModel);\n var resValue = curvenessList[edgeIndex + len + parityCorrection]; // isNeedReverse, simple, force type need reverse the curveness in the junction of the forword and the opposite\n\n if (needReverse) {\n // set as array may make the parity handle with the len of opposite\n if (isArrayParam) {\n if (autoCurvenessParams && autoCurvenessParams[0] === 0) {\n return (len + parityCorrection) % 2 ? resValue : -resValue;\n } else {\n return ((len % 2 ? 0 : 1) + parityCorrection) % 2 ? resValue : -resValue;\n }\n } else {\n return (len + parityCorrection) % 2 ? resValue : -resValue;\n }\n } else {\n return curvenessList[edgeIndex + len + parityCorrection];\n }\n } else {\n return curvenessList[parityCorrection + edgeIndex];\n }\n}\n\nexports.initCurvenessList = initCurvenessList;\nexports.createEdgeMapForCurveness = createEdgeMapForCurveness;\nexports.getCurvenessForEdge = getCurvenessForEdge;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/helper/multipleGraphEdgeHelper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/helper/treeHelper.js": +/*!*************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/helper/treeHelper.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction retrieveTargetInfo(payload, validPayloadTypes, seriesModel) {\n if (payload && zrUtil.indexOf(validPayloadTypes, payload.type) >= 0) {\n var root = seriesModel.getData().tree.root;\n var targetNode = payload.targetNode;\n\n if (typeof targetNode === 'string') {\n targetNode = root.getNodeById(targetNode);\n }\n\n if (targetNode && root.contains(targetNode)) {\n return {\n node: targetNode\n };\n }\n\n var targetNodeId = payload.targetNodeId;\n\n if (targetNodeId != null && (targetNode = root.getNodeById(targetNodeId))) {\n return {\n node: targetNode\n };\n }\n }\n} // Not includes the given node at the last item.\n\n\nfunction getPathToRoot(node) {\n var path = [];\n\n while (node) {\n node = node.parentNode;\n node && path.push(node);\n }\n\n return path.reverse();\n}\n\nfunction aboveViewRoot(viewRoot, node) {\n var viewPath = getPathToRoot(viewRoot);\n return zrUtil.indexOf(viewPath, node) >= 0;\n} // From root to the input node (the input node will be included).\n\n\nfunction wrapTreePathInfo(node, seriesModel) {\n var treePathInfo = [];\n\n while (node) {\n var nodeDataIndex = node.dataIndex;\n treePathInfo.push({\n name: node.name,\n dataIndex: nodeDataIndex,\n value: seriesModel.getRawValue(nodeDataIndex)\n });\n node = node.parentNode;\n }\n\n treePathInfo.reverse();\n return treePathInfo;\n}\n\nexports.retrieveTargetInfo = retrieveTargetInfo;\nexports.getPathToRoot = getPathToRoot;\nexports.aboveViewRoot = aboveViewRoot;\nexports.wrapTreePathInfo = wrapTreePathInfo;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/helper/treeHelper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/helper/whiskerBoxCommon.js": +/*!*******************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/helper/whiskerBoxCommon.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar createListSimply = __webpack_require__(/*! ../helper/createListSimply */ \"./node_modules/echarts/lib/chart/helper/createListSimply.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar _dimensionHelper = __webpack_require__(/*! ../../data/helper/dimensionHelper */ \"./node_modules/echarts/lib/data/helper/dimensionHelper.js\");\n\nvar getDimensionTypeByAxis = _dimensionHelper.getDimensionTypeByAxis;\n\nvar _sourceHelper = __webpack_require__(/*! ../../data/helper/sourceHelper */ \"./node_modules/echarts/lib/data/helper/sourceHelper.js\");\n\nvar makeSeriesEncodeForAxisCoordSys = _sourceHelper.makeSeriesEncodeForAxisCoordSys;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar seriesModelMixin = {\n /**\n * @private\n * @type {string}\n */\n _baseAxisDim: null,\n\n /**\n * @override\n */\n getInitialData: function (option, ecModel) {\n // When both types of xAxis and yAxis are 'value', layout is\n // needed to be specified by user. Otherwise, layout can be\n // judged by which axis is category.\n var ordinalMeta;\n var xAxisModel = ecModel.getComponent('xAxis', this.get('xAxisIndex'));\n var yAxisModel = ecModel.getComponent('yAxis', this.get('yAxisIndex'));\n var xAxisType = xAxisModel.get('type');\n var yAxisType = yAxisModel.get('type');\n var addOrdinal; // FIXME\n // Consider time axis.\n\n if (xAxisType === 'category') {\n option.layout = 'horizontal';\n ordinalMeta = xAxisModel.getOrdinalMeta();\n addOrdinal = true;\n } else if (yAxisType === 'category') {\n option.layout = 'vertical';\n ordinalMeta = yAxisModel.getOrdinalMeta();\n addOrdinal = true;\n } else {\n option.layout = option.layout || 'horizontal';\n }\n\n var coordDims = ['x', 'y'];\n var baseAxisDimIndex = option.layout === 'horizontal' ? 0 : 1;\n var baseAxisDim = this._baseAxisDim = coordDims[baseAxisDimIndex];\n var otherAxisDim = coordDims[1 - baseAxisDimIndex];\n var axisModels = [xAxisModel, yAxisModel];\n var baseAxisType = axisModels[baseAxisDimIndex].get('type');\n var otherAxisType = axisModels[1 - baseAxisDimIndex].get('type');\n var data = option.data; // ??? FIXME make a stage to perform data transfrom.\n // MUST create a new data, consider setOption({}) again.\n\n if (data && addOrdinal) {\n var newOptionData = [];\n zrUtil.each(data, function (item, index) {\n var newItem;\n\n if (item.value && zrUtil.isArray(item.value)) {\n newItem = item.value.slice();\n item.value.unshift(index);\n } else if (zrUtil.isArray(item)) {\n newItem = item.slice();\n item.unshift(index);\n } else {\n newItem = item;\n }\n\n newOptionData.push(newItem);\n });\n option.data = newOptionData;\n }\n\n var defaultValueDimensions = this.defaultValueDimensions;\n var coordDimensions = [{\n name: baseAxisDim,\n type: getDimensionTypeByAxis(baseAxisType),\n ordinalMeta: ordinalMeta,\n otherDims: {\n tooltip: false,\n itemName: 0\n },\n dimsDef: ['base']\n }, {\n name: otherAxisDim,\n type: getDimensionTypeByAxis(otherAxisType),\n dimsDef: defaultValueDimensions.slice()\n }];\n return createListSimply(this, {\n coordDimensions: coordDimensions,\n dimensionsCount: defaultValueDimensions.length + 1,\n encodeDefaulter: zrUtil.curry(makeSeriesEncodeForAxisCoordSys, coordDimensions, this)\n });\n },\n\n /**\n * If horizontal, base axis is x, otherwise y.\n * @override\n */\n getBaseAxis: function () {\n var dim = this._baseAxisDim;\n return this.ecModel.getComponent(dim + 'Axis', this.get(dim + 'AxisIndex')).axis;\n }\n};\nexports.seriesModelMixin = seriesModelMixin;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/helper/whiskerBoxCommon.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/line.js": +/*!************************************************!*\ + !*** ./node_modules/echarts/lib/chart/line.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n__webpack_require__(/*! ./line/LineSeries */ \"./node_modules/echarts/lib/chart/line/LineSeries.js\");\n\n__webpack_require__(/*! ./line/LineView */ \"./node_modules/echarts/lib/chart/line/LineView.js\");\n\nvar visualSymbol = __webpack_require__(/*! ../visual/symbol */ \"./node_modules/echarts/lib/visual/symbol.js\");\n\nvar layoutPoints = __webpack_require__(/*! ../layout/points */ \"./node_modules/echarts/lib/layout/points.js\");\n\nvar dataSample = __webpack_require__(/*! ../processor/dataSample */ \"./node_modules/echarts/lib/processor/dataSample.js\");\n\n__webpack_require__(/*! ../component/gridSimple */ \"./node_modules/echarts/lib/component/gridSimple.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// In case developer forget to include grid component\necharts.registerVisual(visualSymbol('line', 'circle', 'line'));\necharts.registerLayout(layoutPoints('line')); // Down sample after filter\n\necharts.registerProcessor(echarts.PRIORITY.PROCESSOR.STATISTIC, dataSample('line'));\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/line.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/line/LineSeries.js": +/*!***********************************************************!*\ + !*** ./node_modules/echarts/lib/chart/line/LineSeries.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar createListFromArray = __webpack_require__(/*! ../helper/createListFromArray */ \"./node_modules/echarts/lib/chart/helper/createListFromArray.js\");\n\nvar SeriesModel = __webpack_require__(/*! ../../model/Series */ \"./node_modules/echarts/lib/model/Series.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n type: 'series.line',\n dependencies: ['grid', 'polar'],\n getInitialData: function (option, ecModel) {\n return createListFromArray(this.getSource(), this, {\n useEncodeDefaulter: true\n });\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n coordinateSystem: 'cartesian2d',\n legendHoverLink: true,\n hoverAnimation: true,\n // stack: null\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // polarIndex: 0,\n // If clip the overflow value\n clip: true,\n // cursor: null,\n label: {\n position: 'top'\n },\n // itemStyle: {\n // },\n lineStyle: {\n width: 2,\n type: 'solid'\n },\n // areaStyle: {\n // origin of areaStyle. Valid values:\n // `'auto'/null/undefined`: from axisLine to data\n // `'start'`: from min to data\n // `'end'`: from data to max\n // origin: 'auto'\n // },\n // false, 'start', 'end', 'middle'\n step: false,\n // Disabled if step is true\n smooth: false,\n smoothMonotone: null,\n symbol: 'emptyCircle',\n symbolSize: 4,\n symbolRotate: null,\n showSymbol: true,\n // `false`: follow the label interval strategy.\n // `true`: show all symbols.\n // `'auto'`: If possible, show all symbols, otherwise\n // follow the label interval strategy.\n showAllSymbol: 'auto',\n // Whether to connect break point.\n connectNulls: false,\n // Sampling for large data. Can be: 'average', 'max', 'min', 'sum'.\n sampling: 'none',\n animationEasing: 'linear',\n // Disable progressive\n progressive: 0,\n hoverLayerThreshold: Infinity\n }\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/line/LineSeries.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/line/LineView.js": +/*!*********************************************************!*\ + !*** ./node_modules/echarts/lib/chart/line/LineView.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar _bbox = __webpack_require__(/*! zrender/lib/core/bbox */ \"./node_modules/zrender/lib/core/bbox.js\");\n\nvar fromPoints = _bbox.fromPoints;\n\nvar SymbolDraw = __webpack_require__(/*! ../helper/SymbolDraw */ \"./node_modules/echarts/lib/chart/helper/SymbolDraw.js\");\n\nvar SymbolClz = __webpack_require__(/*! ../helper/Symbol */ \"./node_modules/echarts/lib/chart/helper/Symbol.js\");\n\nvar lineAnimationDiff = __webpack_require__(/*! ./lineAnimationDiff */ \"./node_modules/echarts/lib/chart/line/lineAnimationDiff.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar modelUtil = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar _poly = __webpack_require__(/*! ./poly */ \"./node_modules/echarts/lib/chart/line/poly.js\");\n\nvar Polyline = _poly.Polyline;\nvar Polygon = _poly.Polygon;\n\nvar ChartView = __webpack_require__(/*! ../../view/Chart */ \"./node_modules/echarts/lib/view/Chart.js\");\n\nvar _helper = __webpack_require__(/*! ./helper */ \"./node_modules/echarts/lib/chart/line/helper.js\");\n\nvar prepareDataCoordInfo = _helper.prepareDataCoordInfo;\nvar getStackedOnPoint = _helper.getStackedOnPoint;\n\nvar _createClipPathFromCoordSys = __webpack_require__(/*! ../helper/createClipPathFromCoordSys */ \"./node_modules/echarts/lib/chart/helper/createClipPathFromCoordSys.js\");\n\nvar createGridClipPath = _createClipPathFromCoordSys.createGridClipPath;\nvar createPolarClipPath = _createClipPathFromCoordSys.createPolarClipPath;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// FIXME step not support polar\nfunction isPointsSame(points1, points2) {\n if (points1.length !== points2.length) {\n return;\n }\n\n for (var i = 0; i < points1.length; i++) {\n var p1 = points1[i];\n var p2 = points2[i];\n\n if (p1[0] !== p2[0] || p1[1] !== p2[1]) {\n return;\n }\n }\n\n return true;\n}\n\nfunction getBoundingDiff(points1, points2) {\n var min1 = [];\n var max1 = [];\n var min2 = [];\n var max2 = [];\n fromPoints(points1, min1, max1);\n fromPoints(points2, min2, max2); // Get a max value from each corner of two boundings.\n\n return Math.max(Math.abs(min1[0] - min2[0]), Math.abs(min1[1] - min2[1]), Math.abs(max1[0] - max2[0]), Math.abs(max1[1] - max2[1]));\n}\n\nfunction getSmooth(smooth) {\n return typeof smooth === 'number' ? smooth : smooth ? 0.5 : 0;\n}\n/**\n * @param {module:echarts/coord/cartesian/Cartesian2D|module:echarts/coord/polar/Polar} coordSys\n * @param {module:echarts/data/List} data\n * @param {Object} dataCoordInfo\n * @param {Array.>} points\n */\n\n\nfunction getStackedOnPoints(coordSys, data, dataCoordInfo) {\n if (!dataCoordInfo.valueDim) {\n return [];\n }\n\n var points = [];\n\n for (var idx = 0, len = data.count(); idx < len; idx++) {\n points.push(getStackedOnPoint(dataCoordInfo, coordSys, data, idx));\n }\n\n return points;\n}\n\nfunction turnPointsIntoStep(points, coordSys, stepTurnAt) {\n var baseAxis = coordSys.getBaseAxis();\n var baseIndex = baseAxis.dim === 'x' || baseAxis.dim === 'radius' ? 0 : 1;\n var stepPoints = [];\n\n for (var i = 0; i < points.length - 1; i++) {\n var nextPt = points[i + 1];\n var pt = points[i];\n stepPoints.push(pt);\n var stepPt = [];\n\n switch (stepTurnAt) {\n case 'end':\n stepPt[baseIndex] = nextPt[baseIndex];\n stepPt[1 - baseIndex] = pt[1 - baseIndex]; // default is start\n\n stepPoints.push(stepPt);\n break;\n\n case 'middle':\n // default is start\n var middle = (pt[baseIndex] + nextPt[baseIndex]) / 2;\n var stepPt2 = [];\n stepPt[baseIndex] = stepPt2[baseIndex] = middle;\n stepPt[1 - baseIndex] = pt[1 - baseIndex];\n stepPt2[1 - baseIndex] = nextPt[1 - baseIndex];\n stepPoints.push(stepPt);\n stepPoints.push(stepPt2);\n break;\n\n default:\n stepPt[baseIndex] = pt[baseIndex];\n stepPt[1 - baseIndex] = nextPt[1 - baseIndex]; // default is start\n\n stepPoints.push(stepPt);\n }\n } // Last points\n\n\n points[i] && stepPoints.push(points[i]);\n return stepPoints;\n}\n\nfunction getVisualGradient(data, coordSys) {\n var visualMetaList = data.getVisual('visualMeta');\n\n if (!visualMetaList || !visualMetaList.length || !data.count()) {\n // When data.count() is 0, gradient range can not be calculated.\n return;\n }\n\n if (coordSys.type !== 'cartesian2d') {\n return;\n }\n\n var coordDim;\n var visualMeta;\n\n for (var i = visualMetaList.length - 1; i >= 0; i--) {\n var dimIndex = visualMetaList[i].dimension;\n var dimName = data.dimensions[dimIndex];\n var dimInfo = data.getDimensionInfo(dimName);\n coordDim = dimInfo && dimInfo.coordDim; // Can only be x or y\n\n if (coordDim === 'x' || coordDim === 'y') {\n visualMeta = visualMetaList[i];\n break;\n }\n }\n\n if (!visualMeta) {\n return;\n } // If the area to be rendered is bigger than area defined by LinearGradient,\n // the canvas spec prescribes that the color of the first stop and the last\n // stop should be used. But if two stops are added at offset 0, in effect\n // browsers use the color of the second stop to render area outside\n // LinearGradient. So we can only infinitesimally extend area defined in\n // LinearGradient to render `outerColors`.\n\n\n var axis = coordSys.getAxis(coordDim); // dataToCoor mapping may not be linear, but must be monotonic.\n\n var colorStops = zrUtil.map(visualMeta.stops, function (stop) {\n return {\n coord: axis.toGlobalCoord(axis.dataToCoord(stop.value)),\n color: stop.color\n };\n });\n var stopLen = colorStops.length;\n var outerColors = visualMeta.outerColors.slice();\n\n if (stopLen && colorStops[0].coord > colorStops[stopLen - 1].coord) {\n colorStops.reverse();\n outerColors.reverse();\n }\n\n var tinyExtent = 10; // Arbitrary value: 10px\n\n var minCoord = colorStops[0].coord - tinyExtent;\n var maxCoord = colorStops[stopLen - 1].coord + tinyExtent;\n var coordSpan = maxCoord - minCoord;\n\n if (coordSpan < 1e-3) {\n return 'transparent';\n }\n\n zrUtil.each(colorStops, function (stop) {\n stop.offset = (stop.coord - minCoord) / coordSpan;\n });\n colorStops.push({\n offset: stopLen ? colorStops[stopLen - 1].offset : 0.5,\n color: outerColors[1] || 'transparent'\n });\n colorStops.unshift({\n // notice colorStops.length have been changed.\n offset: stopLen ? colorStops[0].offset : 0.5,\n color: outerColors[0] || 'transparent'\n }); // zrUtil.each(colorStops, function (colorStop) {\n // // Make sure each offset has rounded px to avoid not sharp edge\n // colorStop.offset = (Math.round(colorStop.offset * (end - start) + start) - start) / (end - start);\n // });\n\n var gradient = new graphic.LinearGradient(0, 0, 0, 0, colorStops, true);\n gradient[coordDim] = minCoord;\n gradient[coordDim + '2'] = maxCoord;\n return gradient;\n}\n\nfunction getIsIgnoreFunc(seriesModel, data, coordSys) {\n var showAllSymbol = seriesModel.get('showAllSymbol');\n var isAuto = showAllSymbol === 'auto';\n\n if (showAllSymbol && !isAuto) {\n return;\n }\n\n var categoryAxis = coordSys.getAxesByScale('ordinal')[0];\n\n if (!categoryAxis) {\n return;\n } // Note that category label interval strategy might bring some weird effect\n // in some scenario: users may wonder why some of the symbols are not\n // displayed. So we show all symbols as possible as we can.\n\n\n if (isAuto // Simplify the logic, do not determine label overlap here.\n && canShowAllSymbolForCategory(categoryAxis, data)) {\n return;\n } // Otherwise follow the label interval strategy on category axis.\n\n\n var categoryDataDim = data.mapDimension(categoryAxis.dim);\n var labelMap = {};\n zrUtil.each(categoryAxis.getViewLabels(), function (labelItem) {\n labelMap[labelItem.tickValue] = 1;\n });\n return function (dataIndex) {\n return !labelMap.hasOwnProperty(data.get(categoryDataDim, dataIndex));\n };\n}\n\nfunction canShowAllSymbolForCategory(categoryAxis, data) {\n // In mose cases, line is monotonous on category axis, and the label size\n // is close with each other. So we check the symbol size and some of the\n // label size alone with the category axis to estimate whether all symbol\n // can be shown without overlap.\n var axisExtent = categoryAxis.getExtent();\n var availSize = Math.abs(axisExtent[1] - axisExtent[0]) / categoryAxis.scale.count();\n isNaN(availSize) && (availSize = 0); // 0/0 is NaN.\n // Sampling some points, max 5.\n\n var dataLen = data.count();\n var step = Math.max(1, Math.round(dataLen / 5));\n\n for (var dataIndex = 0; dataIndex < dataLen; dataIndex += step) {\n if (SymbolClz.getSymbolSize(data, dataIndex // Only for cartesian, where `isHorizontal` exists.\n )[categoryAxis.isHorizontal() ? 1 : 0] // Empirical number\n * 1.5 > availSize) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction createLineClipPath(coordSys, hasAnimation, seriesModel) {\n if (coordSys.type === 'cartesian2d') {\n var isHorizontal = coordSys.getBaseAxis().isHorizontal();\n var clipPath = createGridClipPath(coordSys, hasAnimation, seriesModel); // Expand clip shape to avoid clipping when line value exceeds axis\n\n if (!seriesModel.get('clip', true)) {\n var rectShape = clipPath.shape;\n var expandSize = Math.max(rectShape.width, rectShape.height);\n\n if (isHorizontal) {\n rectShape.y -= expandSize;\n rectShape.height += expandSize * 2;\n } else {\n rectShape.x -= expandSize;\n rectShape.width += expandSize * 2;\n }\n }\n\n return clipPath;\n } else {\n return createPolarClipPath(coordSys, hasAnimation, seriesModel);\n }\n}\n\nvar _default = ChartView.extend({\n type: 'line',\n init: function () {\n var lineGroup = new graphic.Group();\n var symbolDraw = new SymbolDraw();\n this.group.add(symbolDraw.group);\n this._symbolDraw = symbolDraw;\n this._lineGroup = lineGroup;\n },\n render: function (seriesModel, ecModel, api) {\n var coordSys = seriesModel.coordinateSystem;\n var group = this.group;\n var data = seriesModel.getData();\n var lineStyleModel = seriesModel.getModel('lineStyle');\n var areaStyleModel = seriesModel.getModel('areaStyle');\n var points = data.mapArray(data.getItemLayout);\n var isCoordSysPolar = coordSys.type === 'polar';\n var prevCoordSys = this._coordSys;\n var symbolDraw = this._symbolDraw;\n var polyline = this._polyline;\n var polygon = this._polygon;\n var lineGroup = this._lineGroup;\n var hasAnimation = seriesModel.get('animation');\n var isAreaChart = !areaStyleModel.isEmpty();\n var valueOrigin = areaStyleModel.get('origin');\n var dataCoordInfo = prepareDataCoordInfo(coordSys, data, valueOrigin);\n var stackedOnPoints = getStackedOnPoints(coordSys, data, dataCoordInfo);\n var showSymbol = seriesModel.get('showSymbol');\n var isIgnoreFunc = showSymbol && !isCoordSysPolar && getIsIgnoreFunc(seriesModel, data, coordSys); // Remove temporary symbols\n\n var oldData = this._data;\n oldData && oldData.eachItemGraphicEl(function (el, idx) {\n if (el.__temp) {\n group.remove(el);\n oldData.setItemGraphicEl(idx, null);\n }\n }); // Remove previous created symbols if showSymbol changed to false\n\n if (!showSymbol) {\n symbolDraw.remove();\n }\n\n group.add(lineGroup); // FIXME step not support polar\n\n var step = !isCoordSysPolar && seriesModel.get('step');\n var clipShapeForSymbol;\n\n if (coordSys && coordSys.getArea && seriesModel.get('clip', true)) {\n clipShapeForSymbol = coordSys.getArea(); // Avoid float number rounding error for symbol on the edge of axis extent.\n // See #7913 and `test/dataZoom-clip.html`.\n\n if (clipShapeForSymbol.width != null) {\n clipShapeForSymbol.x -= 0.1;\n clipShapeForSymbol.y -= 0.1;\n clipShapeForSymbol.width += 0.2;\n clipShapeForSymbol.height += 0.2;\n } else if (clipShapeForSymbol.r0) {\n clipShapeForSymbol.r0 -= 0.5;\n clipShapeForSymbol.r1 += 0.5;\n }\n }\n\n this._clipShapeForSymbol = clipShapeForSymbol; // Initialization animation or coordinate system changed\n\n if (!(polyline && prevCoordSys.type === coordSys.type && step === this._step)) {\n showSymbol && symbolDraw.updateData(data, {\n isIgnore: isIgnoreFunc,\n clipShape: clipShapeForSymbol\n });\n\n if (step) {\n // TODO If stacked series is not step\n points = turnPointsIntoStep(points, coordSys, step);\n stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step);\n }\n\n polyline = this._newPolyline(points, coordSys, hasAnimation);\n\n if (isAreaChart) {\n polygon = this._newPolygon(points, stackedOnPoints, coordSys, hasAnimation);\n }\n\n lineGroup.setClipPath(createLineClipPath(coordSys, true, seriesModel));\n } else {\n if (isAreaChart && !polygon) {\n // If areaStyle is added\n polygon = this._newPolygon(points, stackedOnPoints, coordSys, hasAnimation);\n } else if (polygon && !isAreaChart) {\n // If areaStyle is removed\n lineGroup.remove(polygon);\n polygon = this._polygon = null;\n } // Update clipPath\n\n\n lineGroup.setClipPath(createLineClipPath(coordSys, false, seriesModel)); // Always update, or it is wrong in the case turning on legend\n // because points are not changed\n\n showSymbol && symbolDraw.updateData(data, {\n isIgnore: isIgnoreFunc,\n clipShape: clipShapeForSymbol\n }); // Stop symbol animation and sync with line points\n // FIXME performance?\n\n data.eachItemGraphicEl(function (el) {\n el.stopAnimation(true);\n }); // In the case data zoom triggerred refreshing frequently\n // Data may not change if line has a category axis. So it should animate nothing\n\n if (!isPointsSame(this._stackedOnPoints, stackedOnPoints) || !isPointsSame(this._points, points)) {\n if (hasAnimation) {\n this._updateAnimation(data, stackedOnPoints, coordSys, api, step, valueOrigin);\n } else {\n // Not do it in update with animation\n if (step) {\n // TODO If stacked series is not step\n points = turnPointsIntoStep(points, coordSys, step);\n stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step);\n }\n\n polyline.setShape({\n points: points\n });\n polygon && polygon.setShape({\n points: points,\n stackedOnPoints: stackedOnPoints\n });\n }\n }\n }\n\n var visualColor = getVisualGradient(data, coordSys) || data.getVisual('color');\n polyline.useStyle(zrUtil.defaults( // Use color in lineStyle first\n lineStyleModel.getLineStyle(), {\n fill: 'none',\n stroke: visualColor,\n lineJoin: 'bevel'\n }));\n var smooth = seriesModel.get('smooth');\n smooth = getSmooth(seriesModel.get('smooth'));\n polyline.setShape({\n smooth: smooth,\n smoothMonotone: seriesModel.get('smoothMonotone'),\n connectNulls: seriesModel.get('connectNulls')\n });\n\n if (polygon) {\n var stackedOnSeries = data.getCalculationInfo('stackedOnSeries');\n var stackedOnSmooth = 0;\n polygon.useStyle(zrUtil.defaults(areaStyleModel.getAreaStyle(), {\n fill: visualColor,\n opacity: 0.7,\n lineJoin: 'bevel'\n }));\n\n if (stackedOnSeries) {\n stackedOnSmooth = getSmooth(stackedOnSeries.get('smooth'));\n }\n\n polygon.setShape({\n smooth: smooth,\n stackedOnSmooth: stackedOnSmooth,\n smoothMonotone: seriesModel.get('smoothMonotone'),\n connectNulls: seriesModel.get('connectNulls')\n });\n }\n\n this._data = data; // Save the coordinate system for transition animation when data changed\n\n this._coordSys = coordSys;\n this._stackedOnPoints = stackedOnPoints;\n this._points = points;\n this._step = step;\n this._valueOrigin = valueOrigin;\n },\n dispose: function () {},\n highlight: function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n\n if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) {\n var symbol = data.getItemGraphicEl(dataIndex);\n\n if (!symbol) {\n // Create a temporary symbol if it is not exists\n var pt = data.getItemLayout(dataIndex);\n\n if (!pt) {\n // Null data\n return;\n } // fix #11360: should't draw symbol outside clipShapeForSymbol\n\n\n if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(pt[0], pt[1])) {\n return;\n }\n\n symbol = new SymbolClz(data, dataIndex);\n symbol.position = pt;\n symbol.setZ(seriesModel.get('zlevel'), seriesModel.get('z'));\n symbol.ignore = isNaN(pt[0]) || isNaN(pt[1]);\n symbol.__temp = true;\n data.setItemGraphicEl(dataIndex, symbol); // Stop scale animation\n\n symbol.stopSymbolAnimation(true);\n this.group.add(symbol);\n }\n\n symbol.highlight();\n } else {\n // Highlight whole series\n ChartView.prototype.highlight.call(this, seriesModel, ecModel, api, payload);\n }\n },\n downplay: function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n\n if (dataIndex != null && dataIndex >= 0) {\n var symbol = data.getItemGraphicEl(dataIndex);\n\n if (symbol) {\n if (symbol.__temp) {\n data.setItemGraphicEl(dataIndex, null);\n this.group.remove(symbol);\n } else {\n symbol.downplay();\n }\n }\n } else {\n // FIXME\n // can not downplay completely.\n // Downplay whole series\n ChartView.prototype.downplay.call(this, seriesModel, ecModel, api, payload);\n }\n },\n\n /**\n * @param {module:zrender/container/Group} group\n * @param {Array.>} points\n * @private\n */\n _newPolyline: function (points) {\n var polyline = this._polyline; // Remove previous created polyline\n\n if (polyline) {\n this._lineGroup.remove(polyline);\n }\n\n polyline = new Polyline({\n shape: {\n points: points\n },\n silent: true,\n z2: 10\n });\n\n this._lineGroup.add(polyline);\n\n this._polyline = polyline;\n return polyline;\n },\n\n /**\n * @param {module:zrender/container/Group} group\n * @param {Array.>} stackedOnPoints\n * @param {Array.>} points\n * @private\n */\n _newPolygon: function (points, stackedOnPoints) {\n var polygon = this._polygon; // Remove previous created polygon\n\n if (polygon) {\n this._lineGroup.remove(polygon);\n }\n\n polygon = new Polygon({\n shape: {\n points: points,\n stackedOnPoints: stackedOnPoints\n },\n silent: true\n });\n\n this._lineGroup.add(polygon);\n\n this._polygon = polygon;\n return polygon;\n },\n\n /**\n * @private\n */\n // FIXME Two value axis\n _updateAnimation: function (data, stackedOnPoints, coordSys, api, step, valueOrigin) {\n var polyline = this._polyline;\n var polygon = this._polygon;\n var seriesModel = data.hostModel;\n var diff = lineAnimationDiff(this._data, data, this._stackedOnPoints, stackedOnPoints, this._coordSys, coordSys, this._valueOrigin, valueOrigin);\n var current = diff.current;\n var stackedOnCurrent = diff.stackedOnCurrent;\n var next = diff.next;\n var stackedOnNext = diff.stackedOnNext;\n\n if (step) {\n // TODO If stacked series is not step\n current = turnPointsIntoStep(diff.current, coordSys, step);\n stackedOnCurrent = turnPointsIntoStep(diff.stackedOnCurrent, coordSys, step);\n next = turnPointsIntoStep(diff.next, coordSys, step);\n stackedOnNext = turnPointsIntoStep(diff.stackedOnNext, coordSys, step);\n } // Don't apply animation if diff is large.\n // For better result and avoid memory explosion problems like\n // https://github.com/apache/incubator-echarts/issues/12229\n\n\n if (getBoundingDiff(current, next) > 3000 || polygon && getBoundingDiff(stackedOnCurrent, stackedOnNext) > 3000) {\n polyline.setShape({\n points: next\n });\n\n if (polygon) {\n polygon.setShape({\n points: next,\n stackedOnPoints: stackedOnNext\n });\n }\n\n return;\n } // `diff.current` is subset of `current` (which should be ensured by\n // turnPointsIntoStep), so points in `__points` can be updated when\n // points in `current` are update during animation.\n\n\n polyline.shape.__points = diff.current;\n polyline.shape.points = current;\n graphic.updateProps(polyline, {\n shape: {\n points: next\n }\n }, seriesModel);\n\n if (polygon) {\n polygon.setShape({\n points: current,\n stackedOnPoints: stackedOnCurrent\n });\n graphic.updateProps(polygon, {\n shape: {\n points: next,\n stackedOnPoints: stackedOnNext\n }\n }, seriesModel);\n }\n\n var updatedDataInfo = [];\n var diffStatus = diff.status;\n\n for (var i = 0; i < diffStatus.length; i++) {\n var cmd = diffStatus[i].cmd;\n\n if (cmd === '=') {\n var el = data.getItemGraphicEl(diffStatus[i].idx1);\n\n if (el) {\n updatedDataInfo.push({\n el: el,\n ptIdx: i // Index of points\n\n });\n }\n }\n }\n\n if (polyline.animators && polyline.animators.length) {\n polyline.animators[0].during(function () {\n for (var i = 0; i < updatedDataInfo.length; i++) {\n var el = updatedDataInfo[i].el;\n el.attr('position', polyline.shape.__points[updatedDataInfo[i].ptIdx]);\n }\n });\n }\n },\n remove: function (ecModel) {\n var group = this.group;\n var oldData = this._data;\n\n this._lineGroup.removeAll();\n\n this._symbolDraw.remove(true); // Remove temporary created elements when highlighting\n\n\n oldData && oldData.eachItemGraphicEl(function (el, idx) {\n if (el.__temp) {\n group.remove(el);\n oldData.setItemGraphicEl(idx, null);\n }\n });\n this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._data = null;\n }\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/line/LineView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/line/helper.js": +/*!*******************************************************!*\ + !*** ./node_modules/echarts/lib/chart/line/helper.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _dataStackHelper = __webpack_require__(/*! ../../data/helper/dataStackHelper */ \"./node_modules/echarts/lib/data/helper/dataStackHelper.js\");\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar map = _util.map;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {Object} coordSys\n * @param {module:echarts/data/List} data\n * @param {string} valueOrigin lineSeries.option.areaStyle.origin\n */\nfunction prepareDataCoordInfo(coordSys, data, valueOrigin) {\n var baseAxis = coordSys.getBaseAxis();\n var valueAxis = coordSys.getOtherAxis(baseAxis);\n var valueStart = getValueStart(valueAxis, valueOrigin);\n var baseAxisDim = baseAxis.dim;\n var valueAxisDim = valueAxis.dim;\n var valueDim = data.mapDimension(valueAxisDim);\n var baseDim = data.mapDimension(baseAxisDim);\n var baseDataOffset = valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0;\n var dims = map(coordSys.dimensions, function (coordDim) {\n return data.mapDimension(coordDim);\n });\n var stacked;\n var stackResultDim = data.getCalculationInfo('stackResultDimension');\n\n if (stacked |= isDimensionStacked(data, dims[0]\n /*, dims[1]*/\n )) {\n // jshint ignore:line\n dims[0] = stackResultDim;\n }\n\n if (stacked |= isDimensionStacked(data, dims[1]\n /*, dims[0]*/\n )) {\n // jshint ignore:line\n dims[1] = stackResultDim;\n }\n\n return {\n dataDimsForPoint: dims,\n valueStart: valueStart,\n valueAxisDim: valueAxisDim,\n baseAxisDim: baseAxisDim,\n stacked: !!stacked,\n valueDim: valueDim,\n baseDim: baseDim,\n baseDataOffset: baseDataOffset,\n stackedOverDimension: data.getCalculationInfo('stackedOverDimension')\n };\n}\n\nfunction getValueStart(valueAxis, valueOrigin) {\n var valueStart = 0;\n var extent = valueAxis.scale.getExtent();\n\n if (valueOrigin === 'start') {\n valueStart = extent[0];\n } else if (valueOrigin === 'end') {\n valueStart = extent[1];\n } // auto\n else {\n // Both positive\n if (extent[0] > 0) {\n valueStart = extent[0];\n } // Both negative\n else if (extent[1] < 0) {\n valueStart = extent[1];\n } // If is one positive, and one negative, onZero shall be true\n\n }\n\n return valueStart;\n}\n\nfunction getStackedOnPoint(dataCoordInfo, coordSys, data, idx) {\n var value = NaN;\n\n if (dataCoordInfo.stacked) {\n value = data.get(data.getCalculationInfo('stackedOverDimension'), idx);\n }\n\n if (isNaN(value)) {\n value = dataCoordInfo.valueStart;\n }\n\n var baseDataOffset = dataCoordInfo.baseDataOffset;\n var stackedData = [];\n stackedData[baseDataOffset] = data.get(dataCoordInfo.baseDim, idx);\n stackedData[1 - baseDataOffset] = value;\n return coordSys.dataToPoint(stackedData);\n}\n\nexports.prepareDataCoordInfo = prepareDataCoordInfo;\nexports.getStackedOnPoint = getStackedOnPoint;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/line/helper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/line/lineAnimationDiff.js": +/*!******************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/line/lineAnimationDiff.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _helper = __webpack_require__(/*! ./helper */ \"./node_modules/echarts/lib/chart/line/helper.js\");\n\nvar prepareDataCoordInfo = _helper.prepareDataCoordInfo;\nvar getStackedOnPoint = _helper.getStackedOnPoint;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// var arrayDiff = require('zrender/src/core/arrayDiff');\n// 'zrender/src/core/arrayDiff' has been used before, but it did\n// not do well in performance when roam with fixed dataZoom window.\n// function convertToIntId(newIdList, oldIdList) {\n// // Generate int id instead of string id.\n// // Compare string maybe slow in score function of arrDiff\n// // Assume id in idList are all unique\n// var idIndicesMap = {};\n// var idx = 0;\n// for (var i = 0; i < newIdList.length; i++) {\n// idIndicesMap[newIdList[i]] = idx;\n// newIdList[i] = idx++;\n// }\n// for (var i = 0; i < oldIdList.length; i++) {\n// var oldId = oldIdList[i];\n// // Same with newIdList\n// if (idIndicesMap[oldId]) {\n// oldIdList[i] = idIndicesMap[oldId];\n// }\n// else {\n// oldIdList[i] = idx++;\n// }\n// }\n// }\nfunction diffData(oldData, newData) {\n var diffResult = [];\n newData.diff(oldData).add(function (idx) {\n diffResult.push({\n cmd: '+',\n idx: idx\n });\n }).update(function (newIdx, oldIdx) {\n diffResult.push({\n cmd: '=',\n idx: oldIdx,\n idx1: newIdx\n });\n }).remove(function (idx) {\n diffResult.push({\n cmd: '-',\n idx: idx\n });\n }).execute();\n return diffResult;\n}\n\nfunction _default(oldData, newData, oldStackedOnPoints, newStackedOnPoints, oldCoordSys, newCoordSys, oldValueOrigin, newValueOrigin) {\n var diff = diffData(oldData, newData); // var newIdList = newData.mapArray(newData.getId);\n // var oldIdList = oldData.mapArray(oldData.getId);\n // convertToIntId(newIdList, oldIdList);\n // // FIXME One data ?\n // diff = arrayDiff(oldIdList, newIdList);\n\n var currPoints = [];\n var nextPoints = []; // Points for stacking base line\n\n var currStackedPoints = [];\n var nextStackedPoints = [];\n var status = [];\n var sortedIndices = [];\n var rawIndices = [];\n var newDataOldCoordInfo = prepareDataCoordInfo(oldCoordSys, newData, oldValueOrigin);\n var oldDataNewCoordInfo = prepareDataCoordInfo(newCoordSys, oldData, newValueOrigin);\n\n for (var i = 0; i < diff.length; i++) {\n var diffItem = diff[i];\n var pointAdded = true; // FIXME, animation is not so perfect when dataZoom window moves fast\n // Which is in case remvoing or add more than one data in the tail or head\n\n switch (diffItem.cmd) {\n case '=':\n var currentPt = oldData.getItemLayout(diffItem.idx);\n var nextPt = newData.getItemLayout(diffItem.idx1); // If previous data is NaN, use next point directly\n\n if (isNaN(currentPt[0]) || isNaN(currentPt[1])) {\n currentPt = nextPt.slice();\n }\n\n currPoints.push(currentPt);\n nextPoints.push(nextPt);\n currStackedPoints.push(oldStackedOnPoints[diffItem.idx]);\n nextStackedPoints.push(newStackedOnPoints[diffItem.idx1]);\n rawIndices.push(newData.getRawIndex(diffItem.idx1));\n break;\n\n case '+':\n var idx = diffItem.idx;\n currPoints.push(oldCoordSys.dataToPoint([newData.get(newDataOldCoordInfo.dataDimsForPoint[0], idx), newData.get(newDataOldCoordInfo.dataDimsForPoint[1], idx)]));\n nextPoints.push(newData.getItemLayout(idx).slice());\n currStackedPoints.push(getStackedOnPoint(newDataOldCoordInfo, oldCoordSys, newData, idx));\n nextStackedPoints.push(newStackedOnPoints[idx]);\n rawIndices.push(newData.getRawIndex(idx));\n break;\n\n case '-':\n var idx = diffItem.idx;\n var rawIndex = oldData.getRawIndex(idx); // Data is replaced. In the case of dynamic data queue\n // FIXME FIXME FIXME\n\n if (rawIndex !== idx) {\n currPoints.push(oldData.getItemLayout(idx));\n nextPoints.push(newCoordSys.dataToPoint([oldData.get(oldDataNewCoordInfo.dataDimsForPoint[0], idx), oldData.get(oldDataNewCoordInfo.dataDimsForPoint[1], idx)]));\n currStackedPoints.push(oldStackedOnPoints[idx]);\n nextStackedPoints.push(getStackedOnPoint(oldDataNewCoordInfo, newCoordSys, oldData, idx));\n rawIndices.push(rawIndex);\n } else {\n pointAdded = false;\n }\n\n } // Original indices\n\n\n if (pointAdded) {\n status.push(diffItem);\n sortedIndices.push(sortedIndices.length);\n }\n } // Diff result may be crossed if all items are changed\n // Sort by data index\n\n\n sortedIndices.sort(function (a, b) {\n return rawIndices[a] - rawIndices[b];\n });\n var sortedCurrPoints = [];\n var sortedNextPoints = [];\n var sortedCurrStackedPoints = [];\n var sortedNextStackedPoints = [];\n var sortedStatus = [];\n\n for (var i = 0; i < sortedIndices.length; i++) {\n var idx = sortedIndices[i];\n sortedCurrPoints[i] = currPoints[idx];\n sortedNextPoints[i] = nextPoints[idx];\n sortedCurrStackedPoints[i] = currStackedPoints[idx];\n sortedNextStackedPoints[i] = nextStackedPoints[idx];\n sortedStatus[i] = status[idx];\n }\n\n return {\n current: sortedCurrPoints,\n next: sortedNextPoints,\n stackedOnCurrent: sortedCurrStackedPoints,\n stackedOnNext: sortedNextStackedPoints,\n status: sortedStatus\n };\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/line/lineAnimationDiff.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/line/poly.js": +/*!*****************************************************!*\ + !*** ./node_modules/echarts/lib/chart/line/poly.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Path = __webpack_require__(/*! zrender/lib/graphic/Path */ \"./node_modules/zrender/lib/graphic/Path.js\");\n\nvar vec2 = __webpack_require__(/*! zrender/lib/core/vector */ \"./node_modules/zrender/lib/core/vector.js\");\n\nvar fixClipWithShadow = __webpack_require__(/*! zrender/lib/graphic/helper/fixClipWithShadow */ \"./node_modules/zrender/lib/graphic/helper/fixClipWithShadow.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Poly path support NaN point\nvar vec2Min = vec2.min;\nvar vec2Max = vec2.max;\nvar scaleAndAdd = vec2.scaleAndAdd;\nvar v2Copy = vec2.copy; // Temporary variable\n\nvar v = [];\nvar cp0 = [];\nvar cp1 = [];\n\nfunction isPointNull(p) {\n return isNaN(p[0]) || isNaN(p[1]);\n}\n\nfunction drawSegment(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n // if (smoothMonotone == null) {\n // if (isMono(points, 'x')) {\n // return drawMono(ctx, points, start, segLen, allLen,\n // dir, smoothMin, smoothMax, smooth, 'x', connectNulls);\n // }\n // else if (isMono(points, 'y')) {\n // return drawMono(ctx, points, start, segLen, allLen,\n // dir, smoothMin, smoothMax, smooth, 'y', connectNulls);\n // }\n // else {\n // return drawNonMono.apply(this, arguments);\n // }\n // }\n // else if (smoothMonotone !== 'none' && isMono(points, smoothMonotone)) {\n // return drawMono.apply(this, arguments);\n // }\n // else {\n // return drawNonMono.apply(this, arguments);\n // }\n if (smoothMonotone === 'none' || !smoothMonotone) {\n return drawNonMono.apply(this, arguments);\n } else {\n return drawMono.apply(this, arguments);\n }\n}\n/**\n * Check if points is in monotone.\n *\n * @param {number[][]} points Array of points which is in [x, y] form\n * @param {string} smoothMonotone 'x', 'y', or 'none', stating for which\n * dimension that is checking.\n * If is 'none', `drawNonMono` should be\n * called.\n * If is undefined, either being monotone\n * in 'x' or 'y' will call `drawMono`.\n */\n// function isMono(points, smoothMonotone) {\n// if (points.length <= 1) {\n// return true;\n// }\n// var dim = smoothMonotone === 'x' ? 0 : 1;\n// var last = points[0][dim];\n// var lastDiff = 0;\n// for (var i = 1; i < points.length; ++i) {\n// var diff = points[i][dim] - last;\n// if (!isNaN(diff) && !isNaN(lastDiff)\n// && diff !== 0 && lastDiff !== 0\n// && ((diff >= 0) !== (lastDiff >= 0))\n// ) {\n// return false;\n// }\n// if (!isNaN(diff) && diff !== 0) {\n// lastDiff = diff;\n// last = points[i][dim];\n// }\n// }\n// return true;\n// }\n\n/**\n * Draw smoothed line in monotone, in which only vertical or horizontal bezier\n * control points will be used. This should be used when points are monotone\n * either in x or y dimension.\n */\n\n\nfunction drawMono(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n var prevIdx = 0;\n var idx = start;\n\n for (var k = 0; k < segLen; k++) {\n var p = points[idx];\n\n if (idx >= allLen || idx < 0) {\n break;\n }\n\n if (isPointNull(p)) {\n if (connectNulls) {\n idx += dir;\n continue;\n }\n\n break;\n }\n\n if (idx === start) {\n ctx[dir > 0 ? 'moveTo' : 'lineTo'](p[0], p[1]);\n } else {\n if (smooth > 0) {\n var prevP = points[prevIdx];\n var dim = smoothMonotone === 'y' ? 1 : 0; // Length of control point to p, either in x or y, but not both\n\n var ctrlLen = (p[dim] - prevP[dim]) * smooth;\n v2Copy(cp0, prevP);\n cp0[dim] = prevP[dim] + ctrlLen;\n v2Copy(cp1, p);\n cp1[dim] = p[dim] - ctrlLen;\n ctx.bezierCurveTo(cp0[0], cp0[1], cp1[0], cp1[1], p[0], p[1]);\n } else {\n ctx.lineTo(p[0], p[1]);\n }\n }\n\n prevIdx = idx;\n idx += dir;\n }\n\n return k;\n}\n/**\n * Draw smoothed line in non-monotone, in may cause undesired curve in extreme\n * situations. This should be used when points are non-monotone neither in x or\n * y dimension.\n */\n\n\nfunction drawNonMono(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n var prevIdx = 0;\n var idx = start;\n\n for (var k = 0; k < segLen; k++) {\n var p = points[idx];\n\n if (idx >= allLen || idx < 0) {\n break;\n }\n\n if (isPointNull(p)) {\n if (connectNulls) {\n idx += dir;\n continue;\n }\n\n break;\n }\n\n if (idx === start) {\n ctx[dir > 0 ? 'moveTo' : 'lineTo'](p[0], p[1]);\n v2Copy(cp0, p);\n } else {\n if (smooth > 0) {\n var nextIdx = idx + dir;\n var nextP = points[nextIdx];\n\n if (connectNulls) {\n // Find next point not null\n while (nextP && isPointNull(points[nextIdx])) {\n nextIdx += dir;\n nextP = points[nextIdx];\n }\n }\n\n var ratioNextSeg = 0.5;\n var prevP = points[prevIdx];\n var nextP = points[nextIdx]; // Last point\n\n if (!nextP || isPointNull(nextP)) {\n v2Copy(cp1, p);\n } else {\n // If next data is null in not connect case\n if (isPointNull(nextP) && !connectNulls) {\n nextP = p;\n }\n\n vec2.sub(v, nextP, prevP);\n var lenPrevSeg;\n var lenNextSeg;\n\n if (smoothMonotone === 'x' || smoothMonotone === 'y') {\n var dim = smoothMonotone === 'x' ? 0 : 1;\n lenPrevSeg = Math.abs(p[dim] - prevP[dim]);\n lenNextSeg = Math.abs(p[dim] - nextP[dim]);\n } else {\n lenPrevSeg = vec2.dist(p, prevP);\n lenNextSeg = vec2.dist(p, nextP);\n } // Use ratio of seg length\n\n\n ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg);\n scaleAndAdd(cp1, p, v, -smooth * (1 - ratioNextSeg));\n } // Smooth constraint\n\n\n vec2Min(cp0, cp0, smoothMax);\n vec2Max(cp0, cp0, smoothMin);\n vec2Min(cp1, cp1, smoothMax);\n vec2Max(cp1, cp1, smoothMin);\n ctx.bezierCurveTo(cp0[0], cp0[1], cp1[0], cp1[1], p[0], p[1]); // cp0 of next segment\n\n scaleAndAdd(cp0, p, v, smooth * ratioNextSeg);\n } else {\n ctx.lineTo(p[0], p[1]);\n }\n }\n\n prevIdx = idx;\n idx += dir;\n }\n\n return k;\n}\n\nfunction getBoundingBox(points, smoothConstraint) {\n var ptMin = [Infinity, Infinity];\n var ptMax = [-Infinity, -Infinity];\n\n if (smoothConstraint) {\n for (var i = 0; i < points.length; i++) {\n var pt = points[i];\n\n if (pt[0] < ptMin[0]) {\n ptMin[0] = pt[0];\n }\n\n if (pt[1] < ptMin[1]) {\n ptMin[1] = pt[1];\n }\n\n if (pt[0] > ptMax[0]) {\n ptMax[0] = pt[0];\n }\n\n if (pt[1] > ptMax[1]) {\n ptMax[1] = pt[1];\n }\n }\n }\n\n return {\n min: smoothConstraint ? ptMin : ptMax,\n max: smoothConstraint ? ptMax : ptMin\n };\n}\n\nvar Polyline = Path.extend({\n type: 'ec-polyline',\n shape: {\n points: [],\n smooth: 0,\n smoothConstraint: true,\n smoothMonotone: null,\n connectNulls: false\n },\n style: {\n fill: null,\n stroke: '#000'\n },\n brush: fixClipWithShadow(Path.prototype.brush),\n buildPath: function (ctx, shape) {\n var points = shape.points;\n var i = 0;\n var len = points.length;\n var result = getBoundingBox(points, shape.smoothConstraint);\n\n if (shape.connectNulls) {\n // Must remove first and last null values avoid draw error in polygon\n for (; len > 0; len--) {\n if (!isPointNull(points[len - 1])) {\n break;\n }\n }\n\n for (; i < len; i++) {\n if (!isPointNull(points[i])) {\n break;\n }\n }\n }\n\n while (i < len) {\n i += drawSegment(ctx, points, i, len, len, 1, result.min, result.max, shape.smooth, shape.smoothMonotone, shape.connectNulls) + 1;\n }\n }\n});\nvar Polygon = Path.extend({\n type: 'ec-polygon',\n shape: {\n points: [],\n // Offset between stacked base points and points\n stackedOnPoints: [],\n smooth: 0,\n stackedOnSmooth: 0,\n smoothConstraint: true,\n smoothMonotone: null,\n connectNulls: false\n },\n brush: fixClipWithShadow(Path.prototype.brush),\n buildPath: function (ctx, shape) {\n var points = shape.points;\n var stackedOnPoints = shape.stackedOnPoints;\n var i = 0;\n var len = points.length;\n var smoothMonotone = shape.smoothMonotone;\n var bbox = getBoundingBox(points, shape.smoothConstraint);\n var stackedOnBBox = getBoundingBox(stackedOnPoints, shape.smoothConstraint);\n\n if (shape.connectNulls) {\n // Must remove first and last null values avoid draw error in polygon\n for (; len > 0; len--) {\n if (!isPointNull(points[len - 1])) {\n break;\n }\n }\n\n for (; i < len; i++) {\n if (!isPointNull(points[i])) {\n break;\n }\n }\n }\n\n while (i < len) {\n var k = drawSegment(ctx, points, i, len, len, 1, bbox.min, bbox.max, shape.smooth, smoothMonotone, shape.connectNulls);\n drawSegment(ctx, stackedOnPoints, i + k - 1, k, len, -1, stackedOnBBox.min, stackedOnBBox.max, shape.stackedOnSmooth, smoothMonotone, shape.connectNulls);\n i += k + 1;\n ctx.closePath();\n }\n }\n});\nexports.Polyline = Polyline;\nexports.Polygon = Polygon;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/line/poly.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/lines.js": +/*!*************************************************!*\ + !*** ./node_modules/echarts/lib/chart/lines.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n__webpack_require__(/*! ./lines/LinesSeries */ \"./node_modules/echarts/lib/chart/lines/LinesSeries.js\");\n\n__webpack_require__(/*! ./lines/LinesView */ \"./node_modules/echarts/lib/chart/lines/LinesView.js\");\n\nvar linesLayout = __webpack_require__(/*! ./lines/linesLayout */ \"./node_modules/echarts/lib/chart/lines/linesLayout.js\");\n\nvar linesVisual = __webpack_require__(/*! ./lines/linesVisual */ \"./node_modules/echarts/lib/chart/lines/linesVisual.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerLayout(linesLayout);\necharts.registerVisual(linesVisual);\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/lines.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/lines/LinesSeries.js": +/*!*************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/lines/LinesSeries.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar SeriesModel = __webpack_require__(/*! ../../model/Series */ \"./node_modules/echarts/lib/model/Series.js\");\n\nvar List = __webpack_require__(/*! ../../data/List */ \"./node_modules/echarts/lib/data/List.js\");\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar concatArray = _util.concatArray;\nvar mergeAll = _util.mergeAll;\nvar map = _util.map;\n\nvar _format = __webpack_require__(/*! ../../util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\nvar encodeHTML = _format.encodeHTML;\n\nvar CoordinateSystem = __webpack_require__(/*! ../../CoordinateSystem */ \"./node_modules/echarts/lib/CoordinateSystem.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Uint32Array, Float64Array, Float32Array */\nvar Uint32Arr = typeof Uint32Array === 'undefined' ? Array : Uint32Array;\nvar Float64Arr = typeof Float64Array === 'undefined' ? Array : Float64Array;\n\nfunction compatEc2(seriesOpt) {\n var data = seriesOpt.data;\n\n if (data && data[0] && data[0][0] && data[0][0].coord) {\n seriesOpt.data = map(data, function (itemOpt) {\n var coords = [itemOpt[0].coord, itemOpt[1].coord];\n var target = {\n coords: coords\n };\n\n if (itemOpt[0].name) {\n target.fromName = itemOpt[0].name;\n }\n\n if (itemOpt[1].name) {\n target.toName = itemOpt[1].name;\n }\n\n return mergeAll([target, itemOpt[0], itemOpt[1]]);\n });\n }\n}\n\nvar LinesSeries = SeriesModel.extend({\n type: 'series.lines',\n dependencies: ['grid', 'polar'],\n visualColorAccessPath: 'lineStyle.color',\n init: function (option) {\n // The input data may be null/undefined.\n option.data = option.data || []; // Not using preprocessor because mergeOption may not have series.type\n\n compatEc2(option);\n\n var result = this._processFlatCoordsArray(option.data);\n\n this._flatCoords = result.flatCoords;\n this._flatCoordsOffset = result.flatCoordsOffset;\n\n if (result.flatCoords) {\n option.data = new Float32Array(result.count);\n }\n\n LinesSeries.superApply(this, 'init', arguments);\n },\n mergeOption: function (option) {\n compatEc2(option);\n\n if (option.data) {\n // Only update when have option data to merge.\n var result = this._processFlatCoordsArray(option.data);\n\n this._flatCoords = result.flatCoords;\n this._flatCoordsOffset = result.flatCoordsOffset;\n\n if (result.flatCoords) {\n option.data = new Float32Array(result.count);\n }\n }\n\n LinesSeries.superApply(this, 'mergeOption', arguments);\n },\n appendData: function (params) {\n var result = this._processFlatCoordsArray(params.data);\n\n if (result.flatCoords) {\n if (!this._flatCoords) {\n this._flatCoords = result.flatCoords;\n this._flatCoordsOffset = result.flatCoordsOffset;\n } else {\n this._flatCoords = concatArray(this._flatCoords, result.flatCoords);\n this._flatCoordsOffset = concatArray(this._flatCoordsOffset, result.flatCoordsOffset);\n }\n\n params.data = new Float32Array(result.count);\n }\n\n this.getRawData().appendData(params.data);\n },\n _getCoordsFromItemModel: function (idx) {\n var itemModel = this.getData().getItemModel(idx);\n var coords = itemModel.option instanceof Array ? itemModel.option : itemModel.getShallow('coords');\n return coords;\n },\n getLineCoordsCount: function (idx) {\n if (this._flatCoordsOffset) {\n return this._flatCoordsOffset[idx * 2 + 1];\n } else {\n return this._getCoordsFromItemModel(idx).length;\n }\n },\n getLineCoords: function (idx, out) {\n if (this._flatCoordsOffset) {\n var offset = this._flatCoordsOffset[idx * 2];\n var len = this._flatCoordsOffset[idx * 2 + 1];\n\n for (var i = 0; i < len; i++) {\n out[i] = out[i] || [];\n out[i][0] = this._flatCoords[offset + i * 2];\n out[i][1] = this._flatCoords[offset + i * 2 + 1];\n }\n\n return len;\n } else {\n var coords = this._getCoordsFromItemModel(idx);\n\n for (var i = 0; i < coords.length; i++) {\n out[i] = out[i] || [];\n out[i][0] = coords[i][0];\n out[i][1] = coords[i][1];\n }\n\n return coords.length;\n }\n },\n _processFlatCoordsArray: function (data) {\n var startOffset = 0;\n\n if (this._flatCoords) {\n startOffset = this._flatCoords.length;\n } // Stored as a typed array. In format\n // Points Count(2) | x | y | x | y | Points Count(3) | x | y | x | y | x | y |\n\n\n if (typeof data[0] === 'number') {\n var len = data.length; // Store offset and len of each segment\n\n var coordsOffsetAndLenStorage = new Uint32Arr(len);\n var coordsStorage = new Float64Arr(len);\n var coordsCursor = 0;\n var offsetCursor = 0;\n var dataCount = 0;\n\n for (var i = 0; i < len;) {\n dataCount++;\n var count = data[i++]; // Offset\n\n coordsOffsetAndLenStorage[offsetCursor++] = coordsCursor + startOffset; // Len\n\n coordsOffsetAndLenStorage[offsetCursor++] = count;\n\n for (var k = 0; k < count; k++) {\n var x = data[i++];\n var y = data[i++];\n coordsStorage[coordsCursor++] = x;\n coordsStorage[coordsCursor++] = y;\n\n if (i > len) {}\n }\n }\n\n return {\n flatCoordsOffset: new Uint32Array(coordsOffsetAndLenStorage.buffer, 0, offsetCursor),\n flatCoords: coordsStorage,\n count: dataCount\n };\n }\n\n return {\n flatCoordsOffset: null,\n flatCoords: null,\n count: data.length\n };\n },\n getInitialData: function (option, ecModel) {\n var lineData = new List(['value'], this);\n lineData.hasItemOption = false;\n lineData.initData(option.data, [], function (dataItem, dimName, dataIndex, dimIndex) {\n // dataItem is simply coords\n if (dataItem instanceof Array) {\n return NaN;\n } else {\n lineData.hasItemOption = true;\n var value = dataItem.value;\n\n if (value != null) {\n return value instanceof Array ? value[dimIndex] : value;\n }\n }\n });\n return lineData;\n },\n formatTooltip: function (dataIndex) {\n var data = this.getData();\n var itemModel = data.getItemModel(dataIndex);\n var name = itemModel.get('name');\n\n if (name) {\n return name;\n }\n\n var fromName = itemModel.get('fromName');\n var toName = itemModel.get('toName');\n var html = [];\n fromName != null && html.push(fromName);\n toName != null && html.push(toName);\n return encodeHTML(html.join(' > '));\n },\n preventIncremental: function () {\n return !!this.get('effect.show');\n },\n getProgressive: function () {\n var progressive = this.option.progressive;\n\n if (progressive == null) {\n return this.option.large ? 1e4 : this.get('progressive');\n }\n\n return progressive;\n },\n getProgressiveThreshold: function () {\n var progressiveThreshold = this.option.progressiveThreshold;\n\n if (progressiveThreshold == null) {\n return this.option.large ? 2e4 : this.get('progressiveThreshold');\n }\n\n return progressiveThreshold;\n },\n defaultOption: {\n coordinateSystem: 'geo',\n zlevel: 0,\n z: 2,\n legendHoverLink: true,\n hoverAnimation: true,\n // Cartesian coordinate system\n xAxisIndex: 0,\n yAxisIndex: 0,\n symbol: ['none', 'none'],\n symbolSize: [10, 10],\n // Geo coordinate system\n geoIndex: 0,\n effect: {\n show: false,\n period: 4,\n // Animation delay. support callback\n // delay: 0,\n // If move with constant speed px/sec\n // period will be ignored if this property is > 0,\n constantSpeed: 0,\n symbol: 'circle',\n symbolSize: 3,\n loop: true,\n // Length of trail, 0 - 1\n trailLength: 0.2 // Same with lineStyle.color\n // color\n\n },\n large: false,\n // Available when large is true\n largeThreshold: 2000,\n // If lines are polyline\n // polyline not support curveness, label, animation\n polyline: false,\n // If clip the overflow.\n // Available when coordinateSystem is cartesian or polar.\n clip: true,\n label: {\n show: false,\n position: 'end' // distance: 5,\n // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调\n\n },\n lineStyle: {\n opacity: 0.5\n }\n }\n});\nvar _default = LinesSeries;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/lines/LinesSeries.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/lines/LinesView.js": +/*!***********************************************************!*\ + !*** ./node_modules/echarts/lib/chart/lines/LinesView.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar LineDraw = __webpack_require__(/*! ../helper/LineDraw */ \"./node_modules/echarts/lib/chart/helper/LineDraw.js\");\n\nvar EffectLine = __webpack_require__(/*! ../helper/EffectLine */ \"./node_modules/echarts/lib/chart/helper/EffectLine.js\");\n\nvar Line = __webpack_require__(/*! ../helper/Line */ \"./node_modules/echarts/lib/chart/helper/Line.js\");\n\nvar Polyline = __webpack_require__(/*! ../helper/Polyline */ \"./node_modules/echarts/lib/chart/helper/Polyline.js\");\n\nvar EffectPolyline = __webpack_require__(/*! ../helper/EffectPolyline */ \"./node_modules/echarts/lib/chart/helper/EffectPolyline.js\");\n\nvar LargeLineDraw = __webpack_require__(/*! ../helper/LargeLineDraw */ \"./node_modules/echarts/lib/chart/helper/LargeLineDraw.js\");\n\nvar linesLayout = __webpack_require__(/*! ./linesLayout */ \"./node_modules/echarts/lib/chart/lines/linesLayout.js\");\n\nvar _createClipPathFromCoordSys = __webpack_require__(/*! ../helper/createClipPathFromCoordSys */ \"./node_modules/echarts/lib/chart/helper/createClipPathFromCoordSys.js\");\n\nvar createClipPath = _createClipPathFromCoordSys.createClipPath;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendChartView({\n type: 'lines',\n init: function () {},\n render: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n\n var lineDraw = this._updateLineDraw(data, seriesModel);\n\n var zlevel = seriesModel.get('zlevel');\n var trailLength = seriesModel.get('effect.trailLength');\n var zr = api.getZr(); // Avoid the drag cause ghost shadow\n // FIXME Better way ?\n // SVG doesn't support\n\n var isSvg = zr.painter.getType() === 'svg';\n\n if (!isSvg) {\n zr.painter.getLayer(zlevel).clear(true);\n } // Config layer with motion blur\n\n\n if (this._lastZlevel != null && !isSvg) {\n zr.configLayer(this._lastZlevel, {\n motionBlur: false\n });\n }\n\n if (this._showEffect(seriesModel) && trailLength) {\n if (!isSvg) {\n zr.configLayer(zlevel, {\n motionBlur: true,\n lastFrameAlpha: Math.max(Math.min(trailLength / 10 + 0.9, 1), 0)\n });\n }\n }\n\n lineDraw.updateData(data);\n var clipPath = seriesModel.get('clip', true) && createClipPath(seriesModel.coordinateSystem, false, seriesModel);\n\n if (clipPath) {\n this.group.setClipPath(clipPath);\n } else {\n this.group.removeClipPath();\n }\n\n this._lastZlevel = zlevel;\n this._finished = true;\n },\n incrementalPrepareRender: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n\n var lineDraw = this._updateLineDraw(data, seriesModel);\n\n lineDraw.incrementalPrepareUpdate(data);\n\n this._clearLayer(api);\n\n this._finished = false;\n },\n incrementalRender: function (taskParams, seriesModel, ecModel) {\n this._lineDraw.incrementalUpdate(taskParams, seriesModel.getData());\n\n this._finished = taskParams.end === seriesModel.getData().count();\n },\n updateTransform: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n var pipelineContext = seriesModel.pipelineContext;\n\n if (!this._finished || pipelineContext.large || pipelineContext.progressiveRender) {\n // TODO Don't have to do update in large mode. Only do it when there are millions of data.\n return {\n update: true\n };\n } else {\n // TODO Use same logic with ScatterView.\n // Manually update layout\n var res = linesLayout.reset(seriesModel);\n\n if (res.progress) {\n res.progress({\n start: 0,\n end: data.count()\n }, data);\n }\n\n this._lineDraw.updateLayout();\n\n this._clearLayer(api);\n }\n },\n _updateLineDraw: function (data, seriesModel) {\n var lineDraw = this._lineDraw;\n\n var hasEffect = this._showEffect(seriesModel);\n\n var isPolyline = !!seriesModel.get('polyline');\n var pipelineContext = seriesModel.pipelineContext;\n var isLargeDraw = pipelineContext.large;\n\n if (!lineDraw || hasEffect !== this._hasEffet || isPolyline !== this._isPolyline || isLargeDraw !== this._isLargeDraw) {\n if (lineDraw) {\n lineDraw.remove();\n }\n\n lineDraw = this._lineDraw = isLargeDraw ? new LargeLineDraw() : new LineDraw(isPolyline ? hasEffect ? EffectPolyline : Polyline : hasEffect ? EffectLine : Line);\n this._hasEffet = hasEffect;\n this._isPolyline = isPolyline;\n this._isLargeDraw = isLargeDraw;\n this.group.removeAll();\n }\n\n this.group.add(lineDraw.group);\n return lineDraw;\n },\n _showEffect: function (seriesModel) {\n return !!seriesModel.get('effect.show');\n },\n _clearLayer: function (api) {\n // Not use motion when dragging or zooming\n var zr = api.getZr();\n var isSvg = zr.painter.getType() === 'svg';\n\n if (!isSvg && this._lastZlevel != null) {\n zr.painter.getLayer(this._lastZlevel).clear(true);\n }\n },\n remove: function (ecModel, api) {\n this._lineDraw && this._lineDraw.remove();\n this._lineDraw = null; // Clear motion when lineDraw is removed\n\n this._clearLayer(api);\n },\n dispose: function () {}\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/lines/LinesView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/lines/linesLayout.js": +/*!*************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/lines/linesLayout.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar createRenderPlanner = __webpack_require__(/*! ../helper/createRenderPlanner */ \"./node_modules/echarts/lib/chart/helper/createRenderPlanner.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float32Array */\nvar _default = {\n seriesType: 'lines',\n plan: createRenderPlanner(),\n reset: function (seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n var isPolyline = seriesModel.get('polyline');\n var isLarge = seriesModel.pipelineContext.large;\n\n function progress(params, lineData) {\n var lineCoords = [];\n\n if (isLarge) {\n var points;\n var segCount = params.end - params.start;\n\n if (isPolyline) {\n var totalCoordsCount = 0;\n\n for (var i = params.start; i < params.end; i++) {\n totalCoordsCount += seriesModel.getLineCoordsCount(i);\n }\n\n points = new Float32Array(segCount + totalCoordsCount * 2);\n } else {\n points = new Float32Array(segCount * 4);\n }\n\n var offset = 0;\n var pt = [];\n\n for (var i = params.start; i < params.end; i++) {\n var len = seriesModel.getLineCoords(i, lineCoords);\n\n if (isPolyline) {\n points[offset++] = len;\n }\n\n for (var k = 0; k < len; k++) {\n pt = coordSys.dataToPoint(lineCoords[k], false, pt);\n points[offset++] = pt[0];\n points[offset++] = pt[1];\n }\n }\n\n lineData.setLayout('linesPoints', points);\n } else {\n for (var i = params.start; i < params.end; i++) {\n var itemModel = lineData.getItemModel(i);\n var len = seriesModel.getLineCoords(i, lineCoords);\n var pts = [];\n\n if (isPolyline) {\n for (var j = 0; j < len; j++) {\n pts.push(coordSys.dataToPoint(lineCoords[j]));\n }\n } else {\n pts[0] = coordSys.dataToPoint(lineCoords[0]);\n pts[1] = coordSys.dataToPoint(lineCoords[1]);\n var curveness = itemModel.get('lineStyle.curveness');\n\n if (+curveness) {\n pts[2] = [(pts[0][0] + pts[1][0]) / 2 - (pts[0][1] - pts[1][1]) * curveness, (pts[0][1] + pts[1][1]) / 2 - (pts[1][0] - pts[0][0]) * curveness];\n }\n }\n\n lineData.setItemLayout(i, pts);\n }\n }\n }\n\n return {\n progress: progress\n };\n }\n};\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/lines/linesLayout.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/lines/linesVisual.js": +/*!*************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/lines/linesVisual.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction normalize(a) {\n if (!(a instanceof Array)) {\n a = [a, a];\n }\n\n return a;\n}\n\nvar opacityQuery = 'lineStyle.opacity'.split('.');\nvar _default = {\n seriesType: 'lines',\n reset: function (seriesModel, ecModel, api) {\n var symbolType = normalize(seriesModel.get('symbol'));\n var symbolSize = normalize(seriesModel.get('symbolSize'));\n var data = seriesModel.getData();\n data.setVisual('fromSymbol', symbolType && symbolType[0]);\n data.setVisual('toSymbol', symbolType && symbolType[1]);\n data.setVisual('fromSymbolSize', symbolSize && symbolSize[0]);\n data.setVisual('toSymbolSize', symbolSize && symbolSize[1]);\n data.setVisual('opacity', seriesModel.get(opacityQuery));\n\n function dataEach(data, idx) {\n var itemModel = data.getItemModel(idx);\n var symbolType = normalize(itemModel.getShallow('symbol', true));\n var symbolSize = normalize(itemModel.getShallow('symbolSize', true));\n var opacity = itemModel.get(opacityQuery);\n symbolType[0] && data.setItemVisual(idx, 'fromSymbol', symbolType[0]);\n symbolType[1] && data.setItemVisual(idx, 'toSymbol', symbolType[1]);\n symbolSize[0] && data.setItemVisual(idx, 'fromSymbolSize', symbolSize[0]);\n symbolSize[1] && data.setItemVisual(idx, 'toSymbolSize', symbolSize[1]);\n data.setItemVisual(idx, 'opacity', opacity);\n }\n\n return {\n dataEach: data.hasItemOption ? dataEach : null\n };\n }\n};\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/lines/linesVisual.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/map.js": +/*!***********************************************!*\ + !*** ./node_modules/echarts/lib/chart/map.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n__webpack_require__(/*! ./map/MapSeries */ \"./node_modules/echarts/lib/chart/map/MapSeries.js\");\n\n__webpack_require__(/*! ./map/MapView */ \"./node_modules/echarts/lib/chart/map/MapView.js\");\n\n__webpack_require__(/*! ../action/geoRoam */ \"./node_modules/echarts/lib/action/geoRoam.js\");\n\n__webpack_require__(/*! ../coord/geo/geoCreator */ \"./node_modules/echarts/lib/coord/geo/geoCreator.js\");\n\nvar mapSymbolLayout = __webpack_require__(/*! ./map/mapSymbolLayout */ \"./node_modules/echarts/lib/chart/map/mapSymbolLayout.js\");\n\nvar mapVisual = __webpack_require__(/*! ./map/mapVisual */ \"./node_modules/echarts/lib/chart/map/mapVisual.js\");\n\nvar mapDataStatistic = __webpack_require__(/*! ./map/mapDataStatistic */ \"./node_modules/echarts/lib/chart/map/mapDataStatistic.js\");\n\nvar backwardCompat = __webpack_require__(/*! ./map/backwardCompat */ \"./node_modules/echarts/lib/chart/map/backwardCompat.js\");\n\nvar createDataSelectAction = __webpack_require__(/*! ../action/createDataSelectAction */ \"./node_modules/echarts/lib/action/createDataSelectAction.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerLayout(mapSymbolLayout);\necharts.registerVisual(mapVisual);\necharts.registerProcessor(echarts.PRIORITY.PROCESSOR.STATISTIC, mapDataStatistic);\necharts.registerPreprocessor(backwardCompat);\ncreateDataSelectAction('map', [{\n type: 'mapToggleSelect',\n event: 'mapselectchanged',\n method: 'toggleSelected'\n}, {\n type: 'mapSelect',\n event: 'mapselected',\n method: 'select'\n}, {\n type: 'mapUnSelect',\n event: 'mapunselected',\n method: 'unSelect'\n}]);\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/map.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/map/MapSeries.js": +/*!*********************************************************!*\ + !*** ./node_modules/echarts/lib/chart/map/MapSeries.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar createListSimply = __webpack_require__(/*! ../helper/createListSimply */ \"./node_modules/echarts/lib/chart/helper/createListSimply.js\");\n\nvar SeriesModel = __webpack_require__(/*! ../../model/Series */ \"./node_modules/echarts/lib/model/Series.js\");\n\nvar _format = __webpack_require__(/*! ../../util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\nvar encodeHTML = _format.encodeHTML;\nvar addCommas = _format.addCommas;\n\nvar dataSelectableMixin = __webpack_require__(/*! ../../component/helper/selectableMixin */ \"./node_modules/echarts/lib/component/helper/selectableMixin.js\");\n\nvar _dataProvider = __webpack_require__(/*! ../../data/helper/dataProvider */ \"./node_modules/echarts/lib/data/helper/dataProvider.js\");\n\nvar retrieveRawAttr = _dataProvider.retrieveRawAttr;\n\nvar geoSourceManager = __webpack_require__(/*! ../../coord/geo/geoSourceManager */ \"./node_modules/echarts/lib/coord/geo/geoSourceManager.js\");\n\nvar _sourceHelper = __webpack_require__(/*! ../../data/helper/sourceHelper */ \"./node_modules/echarts/lib/data/helper/sourceHelper.js\");\n\nvar makeSeriesEncodeForNameBased = _sourceHelper.makeSeriesEncodeForNameBased;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar MapSeries = SeriesModel.extend({\n type: 'series.map',\n dependencies: ['geo'],\n layoutMode: 'box',\n\n /**\n * Only first map series of same mapType will drawMap\n * @type {boolean}\n */\n needsDrawMap: false,\n\n /**\n * Group of all map series with same mapType\n * @type {boolean}\n */\n seriesGroup: [],\n getInitialData: function (option) {\n var data = createListSimply(this, {\n coordDimensions: ['value'],\n encodeDefaulter: zrUtil.curry(makeSeriesEncodeForNameBased, this)\n });\n var valueDim = data.mapDimension('value');\n var dataNameMap = zrUtil.createHashMap();\n var selectTargetList = [];\n var toAppendNames = [];\n\n for (var i = 0, len = data.count(); i < len; i++) {\n var name = data.getName(i);\n dataNameMap.set(name, true);\n selectTargetList.push({\n name: name,\n value: data.get(valueDim, i),\n selected: retrieveRawAttr(data, i, 'selected')\n });\n }\n\n var geoSource = geoSourceManager.load(this.getMapType(), this.option.nameMap, this.option.nameProperty);\n zrUtil.each(geoSource.regions, function (region) {\n var name = region.name;\n\n if (!dataNameMap.get(name)) {\n selectTargetList.push({\n name: name\n });\n toAppendNames.push(name);\n }\n });\n this.updateSelectedMap(selectTargetList); // Complete data with missing regions. The consequent processes (like visual\n // map and render) can not be performed without a \"full data\". For example,\n // find `dataIndex` by name.\n\n data.appendValues([], toAppendNames);\n return data;\n },\n\n /**\n * If no host geo model, return null, which means using a\n * inner exclusive geo model.\n */\n getHostGeoModel: function () {\n var geoIndex = this.option.geoIndex;\n return geoIndex != null ? this.dependentModels.geo[geoIndex] : null;\n },\n getMapType: function () {\n return (this.getHostGeoModel() || this).option.map;\n },\n // _fillOption: function (option, mapName) {\n // Shallow clone\n // option = zrUtil.extend({}, option);\n // option.data = geoCreator.getFilledRegions(option.data, mapName, option.nameMap);\n // return option;\n // },\n getRawValue: function (dataIndex) {\n // Use value stored in data instead because it is calculated from multiple series\n // FIXME Provide all value of multiple series ?\n var data = this.getData();\n return data.get(data.mapDimension('value'), dataIndex);\n },\n\n /**\n * Get model of region\n * @param {string} name\n * @return {module:echarts/model/Model}\n */\n getRegionModel: function (regionName) {\n var data = this.getData();\n return data.getItemModel(data.indexOfName(regionName));\n },\n\n /**\n * Map tooltip formatter\n *\n * @param {number} dataIndex\n */\n formatTooltip: function (dataIndex, multipleSeries, dataType, renderMode) {\n // FIXME orignalData and data is a bit confusing\n var data = this.getData();\n var formattedValue = addCommas(this.getRawValue(dataIndex));\n var name = data.getName(dataIndex);\n var seriesGroup = this.seriesGroup;\n var seriesNames = [];\n\n for (var i = 0; i < seriesGroup.length; i++) {\n var otherIndex = seriesGroup[i].originalData.indexOfName(name);\n var valueDim = data.mapDimension('value');\n\n if (!isNaN(seriesGroup[i].originalData.get(valueDim, otherIndex))) {\n seriesNames.push(encodeHTML(seriesGroup[i].name));\n }\n }\n\n var newLine = renderMode === 'html' ? '
' : '\\n';\n return seriesNames.join(', ') + newLine + encodeHTML(name + ' : ' + formattedValue);\n },\n\n /**\n * @implement\n */\n getTooltipPosition: function (dataIndex) {\n if (dataIndex != null) {\n var name = this.getData().getName(dataIndex);\n var geo = this.coordinateSystem;\n var region = geo.getRegion(name);\n return region && geo.dataToPoint(region.center);\n }\n },\n setZoom: function (zoom) {\n this.option.zoom = zoom;\n },\n setCenter: function (center) {\n this.option.center = center;\n },\n defaultOption: {\n // 一级层叠\n zlevel: 0,\n // 二级层叠\n z: 2,\n coordinateSystem: 'geo',\n // map should be explicitly specified since ec3.\n map: '',\n // If `geoIndex` is not specified, a exclusive geo will be\n // created. Otherwise use the specified geo component, and\n // `map` and `mapType` are ignored.\n // geoIndex: 0,\n // 'center' | 'left' | 'right' | 'x%' | {number}\n left: 'center',\n // 'center' | 'top' | 'bottom' | 'x%' | {number}\n top: 'center',\n // right\n // bottom\n // width:\n // height\n // Aspect is width / height. Inited to be geoJson bbox aspect\n // This parameter is used for scale this aspect\n aspectScale: 0.75,\n ///// Layout with center and size\n // If you wan't to put map in a fixed size box with right aspect ratio\n // This two properties may more conveninet\n // layoutCenter: [50%, 50%]\n // layoutSize: 100\n // 数值合并方式,默认加和,可选为:\n // 'sum' | 'average' | 'max' | 'min'\n // mapValueCalculation: 'sum',\n // 地图数值计算结果小数精度\n // mapValuePrecision: 0,\n // 显示图例颜色标识(系列标识的小圆点),图例开启时有效\n showLegendSymbol: true,\n // 选择模式,默认关闭,可选single,multiple\n // selectedMode: false,\n dataRangeHoverLink: true,\n // 是否开启缩放及漫游模式\n // roam: false,\n // Define left-top, right-bottom coords to control view\n // For example, [ [180, 90], [-180, -90] ],\n // higher priority than center and zoom\n boundingCoords: null,\n // Default on center of map\n center: null,\n zoom: 1,\n scaleLimit: null,\n label: {\n show: false,\n color: '#000'\n },\n // scaleLimit: null,\n itemStyle: {\n borderWidth: 0.5,\n borderColor: '#444',\n areaColor: '#eee'\n },\n emphasis: {\n label: {\n show: true,\n color: 'rgb(100,0,0)'\n },\n itemStyle: {\n areaColor: 'rgba(255,215,0,0.8)'\n }\n },\n nameProperty: 'name'\n }\n});\nzrUtil.mixin(MapSeries, dataSelectableMixin);\nvar _default = MapSeries;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/map/MapSeries.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/map/MapView.js": +/*!*******************************************************!*\ + !*** ./node_modules/echarts/lib/chart/map/MapView.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar MapDraw = __webpack_require__(/*! ../../component/helper/MapDraw */ \"./node_modules/echarts/lib/component/helper/MapDraw.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar HIGH_DOWN_PROP = '__seriesMapHighDown';\nvar RECORD_VERSION_PROP = '__seriesMapCallKey';\n\nvar _default = echarts.extendChartView({\n type: 'map',\n render: function (mapModel, ecModel, api, payload) {\n // Not render if it is an toggleSelect action from self\n if (payload && payload.type === 'mapToggleSelect' && payload.from === this.uid) {\n return;\n }\n\n var group = this.group;\n group.removeAll();\n\n if (mapModel.getHostGeoModel()) {\n return;\n } // Not update map if it is an roam action from self\n\n\n if (!(payload && payload.type === 'geoRoam' && payload.componentType === 'series' && payload.seriesId === mapModel.id)) {\n if (mapModel.needsDrawMap) {\n var mapDraw = this._mapDraw || new MapDraw(api, true);\n group.add(mapDraw.group);\n mapDraw.draw(mapModel, ecModel, api, this, payload);\n this._mapDraw = mapDraw;\n } else {\n // Remove drawed map\n this._mapDraw && this._mapDraw.remove();\n this._mapDraw = null;\n }\n } else {\n var mapDraw = this._mapDraw;\n mapDraw && group.add(mapDraw.group);\n }\n\n mapModel.get('showLegendSymbol') && ecModel.getComponent('legend') && this._renderSymbols(mapModel, ecModel, api);\n },\n remove: function () {\n this._mapDraw && this._mapDraw.remove();\n this._mapDraw = null;\n this.group.removeAll();\n },\n dispose: function () {\n this._mapDraw && this._mapDraw.remove();\n this._mapDraw = null;\n },\n _renderSymbols: function (mapModel, ecModel, api) {\n var originalData = mapModel.originalData;\n var group = this.group;\n originalData.each(originalData.mapDimension('value'), function (value, originalDataIndex) {\n if (isNaN(value)) {\n return;\n }\n\n var layout = originalData.getItemLayout(originalDataIndex);\n\n if (!layout || !layout.point) {\n // Not exists in map\n return;\n }\n\n var point = layout.point;\n var offset = layout.offset;\n var circle = new graphic.Circle({\n style: {\n // Because the special of map draw.\n // Which needs statistic of multiple series and draw on one map.\n // And each series also need a symbol with legend color\n //\n // Layout and visual are put one the different data\n fill: mapModel.getData().getVisual('color')\n },\n shape: {\n cx: point[0] + offset * 9,\n cy: point[1],\n r: 3\n },\n silent: true,\n // Do not overlap the first series, on which labels are displayed.\n z2: 8 + (!offset ? graphic.Z2_EMPHASIS_LIFT + 1 : 0)\n }); // Only the series that has the first value on the same region is in charge of rendering the label.\n // But consider the case:\n // series: [\n // {id: 'X', type: 'map', map: 'm', {data: [{name: 'A', value: 11}, {name: 'B', {value: 22}]},\n // {id: 'Y', type: 'map', map: 'm', {data: [{name: 'A', value: 21}, {name: 'C', {value: 33}]}\n // ]\n // The offset `0` of item `A` is at series `X`, but of item `C` is at series `Y`.\n // For backward compatibility, we follow the rule that render label `A` by the\n // settings on series `X` but render label `C` by the settings on series `Y`.\n\n if (!offset) {\n var fullData = mapModel.mainSeries.getData();\n var name = originalData.getName(originalDataIndex);\n var fullIndex = fullData.indexOfName(name);\n var itemModel = originalData.getItemModel(originalDataIndex);\n var labelModel = itemModel.getModel('label');\n var hoverLabelModel = itemModel.getModel('emphasis.label');\n var regionGroup = fullData.getItemGraphicEl(fullIndex); // `getFormattedLabel` needs to use `getData` inside. Here\n // `mapModel.getData()` is shallow cloned from `mainSeries.getData()`.\n // FIXME\n // If this is not the `mainSeries`, the item model (like label formatter)\n // set on original data item will never get. But it has been working\n // like that from the begining, and this scenario is rarely encountered.\n // So it won't be fixed until have to.\n\n var normalText = zrUtil.retrieve2(mapModel.getFormattedLabel(fullIndex, 'normal'), name);\n var emphasisText = zrUtil.retrieve2(mapModel.getFormattedLabel(fullIndex, 'emphasis'), normalText);\n var highDownRecord = regionGroup[HIGH_DOWN_PROP];\n var recordVersion = Math.random(); // Prevent from register listeners duplicatedly when roaming.\n\n if (!highDownRecord) {\n highDownRecord = regionGroup[HIGH_DOWN_PROP] = {};\n var onEmphasis = zrUtil.curry(onRegionHighDown, true);\n var onNormal = zrUtil.curry(onRegionHighDown, false);\n regionGroup.on('mouseover', onEmphasis).on('mouseout', onNormal).on('emphasis', onEmphasis).on('normal', onNormal);\n } // Prevent removed regions effect current grapics.\n\n\n regionGroup[RECORD_VERSION_PROP] = recordVersion;\n zrUtil.extend(highDownRecord, {\n recordVersion: recordVersion,\n circle: circle,\n labelModel: labelModel,\n hoverLabelModel: hoverLabelModel,\n emphasisText: emphasisText,\n normalText: normalText\n }); // FIXME\n // Consider set option when emphasis.\n\n enterRegionHighDown(highDownRecord, false);\n }\n\n group.add(circle);\n });\n }\n});\n\nfunction onRegionHighDown(toHighOrDown) {\n var highDownRecord = this[HIGH_DOWN_PROP];\n\n if (highDownRecord && highDownRecord.recordVersion === this[RECORD_VERSION_PROP]) {\n enterRegionHighDown(highDownRecord, toHighOrDown);\n }\n}\n\nfunction enterRegionHighDown(highDownRecord, toHighOrDown) {\n var circle = highDownRecord.circle;\n var labelModel = highDownRecord.labelModel;\n var hoverLabelModel = highDownRecord.hoverLabelModel;\n var emphasisText = highDownRecord.emphasisText;\n var normalText = highDownRecord.normalText;\n\n if (toHighOrDown) {\n circle.style.extendFrom(graphic.setTextStyle({}, hoverLabelModel, {\n text: hoverLabelModel.get('show') ? emphasisText : null\n }, {\n isRectText: true,\n useInsideStyle: false\n }, true)); // Make label upper than others if overlaps.\n\n circle.__mapOriginalZ2 = circle.z2;\n circle.z2 += graphic.Z2_EMPHASIS_LIFT;\n } else {\n graphic.setTextStyle(circle.style, labelModel, {\n text: labelModel.get('show') ? normalText : null,\n textPosition: labelModel.getShallow('position') || 'bottom'\n }, {\n isRectText: true,\n useInsideStyle: false\n }); // Trigger normalize style like padding.\n\n circle.dirty(false);\n\n if (circle.__mapOriginalZ2 != null) {\n circle.z2 = circle.__mapOriginalZ2;\n circle.__mapOriginalZ2 = null;\n }\n }\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/map/MapView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/map/backwardCompat.js": +/*!**************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/map/backwardCompat.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(option) {\n // Save geoCoord\n var mapSeries = [];\n zrUtil.each(option.series, function (seriesOpt) {\n if (seriesOpt && seriesOpt.type === 'map') {\n mapSeries.push(seriesOpt);\n seriesOpt.map = seriesOpt.map || seriesOpt.mapType; // Put x, y, width, height, x2, y2 in the top level\n\n zrUtil.defaults(seriesOpt, seriesOpt.mapLocation);\n }\n });\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/map/backwardCompat.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/map/mapDataStatistic.js": +/*!****************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/map/mapDataStatistic.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// FIXME 公用?\n\n/**\n * @param {Array.} datas\n * @param {string} statisticType 'average' 'sum'\n * @inner\n */\nfunction dataStatistics(datas, statisticType) {\n var dataNameMap = {};\n zrUtil.each(datas, function (data) {\n data.each(data.mapDimension('value'), function (value, idx) {\n // Add prefix to avoid conflict with Object.prototype.\n var mapKey = 'ec-' + data.getName(idx);\n dataNameMap[mapKey] = dataNameMap[mapKey] || [];\n\n if (!isNaN(value)) {\n dataNameMap[mapKey].push(value);\n }\n });\n });\n return datas[0].map(datas[0].mapDimension('value'), function (value, idx) {\n var mapKey = 'ec-' + datas[0].getName(idx);\n var sum = 0;\n var min = Infinity;\n var max = -Infinity;\n var len = dataNameMap[mapKey].length;\n\n for (var i = 0; i < len; i++) {\n min = Math.min(min, dataNameMap[mapKey][i]);\n max = Math.max(max, dataNameMap[mapKey][i]);\n sum += dataNameMap[mapKey][i];\n }\n\n var result;\n\n if (statisticType === 'min') {\n result = min;\n } else if (statisticType === 'max') {\n result = max;\n } else if (statisticType === 'average') {\n result = sum / len;\n } else {\n result = sum;\n }\n\n return len === 0 ? NaN : result;\n });\n}\n\nfunction _default(ecModel) {\n var seriesGroups = {};\n ecModel.eachSeriesByType('map', function (seriesModel) {\n var hostGeoModel = seriesModel.getHostGeoModel();\n var key = hostGeoModel ? 'o' + hostGeoModel.id : 'i' + seriesModel.getMapType();\n (seriesGroups[key] = seriesGroups[key] || []).push(seriesModel);\n });\n zrUtil.each(seriesGroups, function (seriesList, key) {\n var data = dataStatistics(zrUtil.map(seriesList, function (seriesModel) {\n return seriesModel.getData();\n }), seriesList[0].get('mapValueCalculation'));\n\n for (var i = 0; i < seriesList.length; i++) {\n seriesList[i].originalData = seriesList[i].getData();\n } // FIXME Put where?\n\n\n for (var i = 0; i < seriesList.length; i++) {\n seriesList[i].seriesGroup = seriesList;\n seriesList[i].needsDrawMap = i === 0 && !seriesList[i].getHostGeoModel();\n seriesList[i].setData(data.cloneShallow());\n seriesList[i].mainSeries = seriesList[0];\n }\n });\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/map/mapDataStatistic.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/map/mapSymbolLayout.js": +/*!***************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/map/mapSymbolLayout.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel) {\n var processedMapType = {};\n ecModel.eachSeriesByType('map', function (mapSeries) {\n var mapType = mapSeries.getMapType();\n\n if (mapSeries.getHostGeoModel() || processedMapType[mapType]) {\n return;\n }\n\n var mapSymbolOffsets = {};\n zrUtil.each(mapSeries.seriesGroup, function (subMapSeries) {\n var geo = subMapSeries.coordinateSystem;\n var data = subMapSeries.originalData;\n\n if (subMapSeries.get('showLegendSymbol') && ecModel.getComponent('legend')) {\n data.each(data.mapDimension('value'), function (value, idx) {\n var name = data.getName(idx);\n var region = geo.getRegion(name); // If input series.data is [11, 22, '-'/null/undefined, 44],\n // it will be filled with NaN: [11, 22, NaN, 44] and NaN will\n // not be drawn. So here must validate if value is NaN.\n\n if (!region || isNaN(value)) {\n return;\n }\n\n var offset = mapSymbolOffsets[name] || 0;\n var point = geo.dataToPoint(region.center);\n mapSymbolOffsets[name] = offset + 1;\n data.setItemLayout(idx, {\n point: point,\n offset: offset\n });\n });\n }\n }); // Show label of those region not has legendSymbol(which is offset 0)\n\n var data = mapSeries.getData();\n data.each(function (idx) {\n var name = data.getName(idx);\n var layout = data.getItemLayout(idx) || {};\n layout.showLabel = !mapSymbolOffsets[name];\n data.setItemLayout(idx, layout);\n });\n processedMapType[mapType] = true;\n });\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/map/mapSymbolLayout.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/map/mapVisual.js": +/*!*********************************************************!*\ + !*** ./node_modules/echarts/lib/chart/map/mapVisual.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel) {\n ecModel.eachSeriesByType('map', function (seriesModel) {\n var colorList = seriesModel.get('color');\n var itemStyleModel = seriesModel.getModel('itemStyle');\n var areaColor = itemStyleModel.get('areaColor');\n var color = itemStyleModel.get('color') || colorList[seriesModel.seriesIndex % colorList.length];\n seriesModel.getData().setVisual({\n 'areaColor': areaColor,\n 'color': color\n });\n });\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/map/mapVisual.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/parallel.js": +/*!****************************************************!*\ + !*** ./node_modules/echarts/lib/chart/parallel.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n__webpack_require__(/*! ../component/parallel */ \"./node_modules/echarts/lib/component/parallel.js\");\n\n__webpack_require__(/*! ./parallel/ParallelSeries */ \"./node_modules/echarts/lib/chart/parallel/ParallelSeries.js\");\n\n__webpack_require__(/*! ./parallel/ParallelView */ \"./node_modules/echarts/lib/chart/parallel/ParallelView.js\");\n\nvar parallelVisual = __webpack_require__(/*! ./parallel/parallelVisual */ \"./node_modules/echarts/lib/chart/parallel/parallelVisual.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerVisual(parallelVisual);\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/parallel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/parallel/ParallelSeries.js": +/*!*******************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/parallel/ParallelSeries.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar each = _util.each;\nvar createHashMap = _util.createHashMap;\n\nvar SeriesModel = __webpack_require__(/*! ../../model/Series */ \"./node_modules/echarts/lib/model/Series.js\");\n\nvar createListFromArray = __webpack_require__(/*! ../helper/createListFromArray */ \"./node_modules/echarts/lib/chart/helper/createListFromArray.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n type: 'series.parallel',\n dependencies: ['parallel'],\n visualColorAccessPath: 'lineStyle.color',\n getInitialData: function (option, ecModel) {\n var source = this.getSource();\n setEncodeAndDimensions(source, this);\n return createListFromArray(source, this);\n },\n\n /**\n * User can get data raw indices on 'axisAreaSelected' event received.\n *\n * @public\n * @param {string} activeState 'active' or 'inactive' or 'normal'\n * @return {Array.} Raw indices\n */\n getRawIndicesByActiveState: function (activeState) {\n var coordSys = this.coordinateSystem;\n var data = this.getData();\n var indices = [];\n coordSys.eachActiveState(data, function (theActiveState, dataIndex) {\n if (activeState === theActiveState) {\n indices.push(data.getRawIndex(dataIndex));\n }\n });\n return indices;\n },\n defaultOption: {\n zlevel: 0,\n // 一级层叠\n z: 2,\n // 二级层叠\n coordinateSystem: 'parallel',\n parallelIndex: 0,\n label: {\n show: false\n },\n inactiveOpacity: 0.05,\n activeOpacity: 1,\n lineStyle: {\n width: 1,\n opacity: 0.45,\n type: 'solid'\n },\n emphasis: {\n label: {\n show: false\n }\n },\n progressive: 500,\n smooth: false,\n // true | false | number\n animationEasing: 'linear'\n }\n});\n\nfunction setEncodeAndDimensions(source, seriesModel) {\n // The mapping of parallelAxis dimension to data dimension can\n // be specified in parallelAxis.option.dim. For example, if\n // parallelAxis.option.dim is 'dim3', it mapping to the third\n // dimension of data. But `data.encode` has higher priority.\n // Moreover, parallelModel.dimension should not be regarded as data\n // dimensions. Consider dimensions = ['dim4', 'dim2', 'dim6'];\n if (source.encodeDefine) {\n return;\n }\n\n var parallelModel = seriesModel.ecModel.getComponent('parallel', seriesModel.get('parallelIndex'));\n\n if (!parallelModel) {\n return;\n }\n\n var encodeDefine = source.encodeDefine = createHashMap();\n each(parallelModel.dimensions, function (axisDim) {\n var dataDimIndex = convertDimNameToNumber(axisDim);\n encodeDefine.set(axisDim, dataDimIndex);\n });\n}\n\nfunction convertDimNameToNumber(dimName) {\n return +dimName.replace('dim', '');\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/parallel/ParallelSeries.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/parallel/ParallelView.js": +/*!*****************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/parallel/ParallelView.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar ChartView = __webpack_require__(/*! ../../view/Chart */ \"./node_modules/echarts/lib/view/Chart.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar DEFAULT_SMOOTH = 0.3;\nvar ParallelView = ChartView.extend({\n type: 'parallel',\n init: function () {\n /**\n * @type {module:zrender/container/Group}\n * @private\n */\n this._dataGroup = new graphic.Group();\n this.group.add(this._dataGroup);\n /**\n * @type {module:echarts/data/List}\n */\n\n this._data;\n /**\n * @type {boolean}\n */\n\n this._initialized;\n },\n\n /**\n * @override\n */\n render: function (seriesModel, ecModel, api, payload) {\n var dataGroup = this._dataGroup;\n var data = seriesModel.getData();\n var oldData = this._data;\n var coordSys = seriesModel.coordinateSystem;\n var dimensions = coordSys.dimensions;\n var seriesScope = makeSeriesScope(seriesModel);\n data.diff(oldData).add(add).update(update).remove(remove).execute();\n\n function add(newDataIndex) {\n var line = addEl(data, dataGroup, newDataIndex, dimensions, coordSys);\n updateElCommon(line, data, newDataIndex, seriesScope);\n }\n\n function update(newDataIndex, oldDataIndex) {\n var line = oldData.getItemGraphicEl(oldDataIndex);\n var points = createLinePoints(data, newDataIndex, dimensions, coordSys);\n data.setItemGraphicEl(newDataIndex, line);\n var animationModel = payload && payload.animation === false ? null : seriesModel;\n graphic.updateProps(line, {\n shape: {\n points: points\n }\n }, animationModel, newDataIndex);\n updateElCommon(line, data, newDataIndex, seriesScope);\n }\n\n function remove(oldDataIndex) {\n var line = oldData.getItemGraphicEl(oldDataIndex);\n dataGroup.remove(line);\n } // First create\n\n\n if (!this._initialized) {\n this._initialized = true;\n var clipPath = createGridClipShape(coordSys, seriesModel, function () {\n // Callback will be invoked immediately if there is no animation\n setTimeout(function () {\n dataGroup.removeClipPath();\n });\n });\n dataGroup.setClipPath(clipPath);\n }\n\n this._data = data;\n },\n incrementalPrepareRender: function (seriesModel, ecModel, api) {\n this._initialized = true;\n this._data = null;\n\n this._dataGroup.removeAll();\n },\n incrementalRender: function (taskParams, seriesModel, ecModel) {\n var data = seriesModel.getData();\n var coordSys = seriesModel.coordinateSystem;\n var dimensions = coordSys.dimensions;\n var seriesScope = makeSeriesScope(seriesModel);\n\n for (var dataIndex = taskParams.start; dataIndex < taskParams.end; dataIndex++) {\n var line = addEl(data, this._dataGroup, dataIndex, dimensions, coordSys);\n line.incremental = true;\n updateElCommon(line, data, dataIndex, seriesScope);\n }\n },\n dispose: function () {},\n // _renderForProgressive: function (seriesModel) {\n // var dataGroup = this._dataGroup;\n // var data = seriesModel.getData();\n // var oldData = this._data;\n // var coordSys = seriesModel.coordinateSystem;\n // var dimensions = coordSys.dimensions;\n // var option = seriesModel.option;\n // var progressive = option.progressive;\n // var smooth = option.smooth ? SMOOTH : null;\n // // In progressive animation is disabled, so use simple data diff,\n // // which effects performance less.\n // // (Typically performance for data with length 7000+ like:\n // // simpleDiff: 60ms, addEl: 184ms,\n // // in RMBP 2.4GHz intel i7, OSX 10.9 chrome 50.0.2661.102 (64-bit))\n // if (simpleDiff(oldData, data, dimensions)) {\n // dataGroup.removeAll();\n // data.each(function (dataIndex) {\n // addEl(data, dataGroup, dataIndex, dimensions, coordSys);\n // });\n // }\n // updateElCommon(data, progressive, smooth);\n // // Consider switch between progressive and not.\n // data.__plProgressive = true;\n // this._data = data;\n // },\n\n /**\n * @override\n */\n remove: function () {\n this._dataGroup && this._dataGroup.removeAll();\n this._data = null;\n }\n});\n\nfunction createGridClipShape(coordSys, seriesModel, cb) {\n var parallelModel = coordSys.model;\n var rect = coordSys.getRect();\n var rectEl = new graphic.Rect({\n shape: {\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height\n }\n });\n var dim = parallelModel.get('layout') === 'horizontal' ? 'width' : 'height';\n rectEl.setShape(dim, 0);\n graphic.initProps(rectEl, {\n shape: {\n width: rect.width,\n height: rect.height\n }\n }, seriesModel, cb);\n return rectEl;\n}\n\nfunction createLinePoints(data, dataIndex, dimensions, coordSys) {\n var points = [];\n\n for (var i = 0; i < dimensions.length; i++) {\n var dimName = dimensions[i];\n var value = data.get(data.mapDimension(dimName), dataIndex);\n\n if (!isEmptyValue(value, coordSys.getAxis(dimName).type)) {\n points.push(coordSys.dataToPoint(value, dimName));\n }\n }\n\n return points;\n}\n\nfunction addEl(data, dataGroup, dataIndex, dimensions, coordSys) {\n var points = createLinePoints(data, dataIndex, dimensions, coordSys);\n var line = new graphic.Polyline({\n shape: {\n points: points\n },\n silent: true,\n z2: 10\n });\n dataGroup.add(line);\n data.setItemGraphicEl(dataIndex, line);\n return line;\n}\n\nfunction makeSeriesScope(seriesModel) {\n var smooth = seriesModel.get('smooth', true);\n smooth === true && (smooth = DEFAULT_SMOOTH);\n return {\n lineStyle: seriesModel.getModel('lineStyle').getLineStyle(),\n smooth: smooth != null ? smooth : DEFAULT_SMOOTH\n };\n}\n\nfunction updateElCommon(el, data, dataIndex, seriesScope) {\n var lineStyle = seriesScope.lineStyle;\n\n if (data.hasItemOption) {\n var lineStyleModel = data.getItemModel(dataIndex).getModel('lineStyle');\n lineStyle = lineStyleModel.getLineStyle();\n }\n\n el.useStyle(lineStyle);\n var elStyle = el.style;\n elStyle.fill = null; // lineStyle.color have been set to itemVisual in module:echarts/visual/seriesColor.\n\n elStyle.stroke = data.getItemVisual(dataIndex, 'color'); // lineStyle.opacity have been set to itemVisual in parallelVisual.\n\n elStyle.opacity = data.getItemVisual(dataIndex, 'opacity');\n seriesScope.smooth && (el.shape.smooth = seriesScope.smooth);\n} // function simpleDiff(oldData, newData, dimensions) {\n// var oldLen;\n// if (!oldData\n// || !oldData.__plProgressive\n// || (oldLen = oldData.count()) !== newData.count()\n// ) {\n// return true;\n// }\n// var dimLen = dimensions.length;\n// for (var i = 0; i < oldLen; i++) {\n// for (var j = 0; j < dimLen; j++) {\n// if (oldData.get(dimensions[j], i) !== newData.get(dimensions[j], i)) {\n// return true;\n// }\n// }\n// }\n// return false;\n// }\n// FIXME\n// 公用方法?\n\n\nfunction isEmptyValue(val, axisType) {\n return axisType === 'category' ? val == null : val == null || isNaN(val); // axisType === 'value'\n}\n\nvar _default = ParallelView;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/parallel/ParallelView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/parallel/parallelVisual.js": +/*!*******************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/parallel/parallelVisual.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar opacityAccessPath = ['lineStyle', 'normal', 'opacity'];\nvar _default = {\n seriesType: 'parallel',\n reset: function (seriesModel, ecModel, api) {\n var itemStyleModel = seriesModel.getModel('itemStyle');\n var lineStyleModel = seriesModel.getModel('lineStyle');\n var globalColors = ecModel.get('color');\n var color = lineStyleModel.get('color') || itemStyleModel.get('color') || globalColors[seriesModel.seriesIndex % globalColors.length];\n var inactiveOpacity = seriesModel.get('inactiveOpacity');\n var activeOpacity = seriesModel.get('activeOpacity');\n var lineStyle = seriesModel.getModel('lineStyle').getLineStyle();\n var coordSys = seriesModel.coordinateSystem;\n var data = seriesModel.getData();\n var opacityMap = {\n normal: lineStyle.opacity,\n active: activeOpacity,\n inactive: inactiveOpacity\n };\n data.setVisual('color', color);\n\n function progress(params, data) {\n coordSys.eachActiveState(data, function (activeState, dataIndex) {\n var opacity = opacityMap[activeState];\n\n if (activeState === 'normal' && data.hasItemOption) {\n var itemOpacity = data.getItemModel(dataIndex).get(opacityAccessPath, true);\n itemOpacity != null && (opacity = itemOpacity);\n }\n\n data.setItemVisual(dataIndex, 'opacity', opacity);\n }, params.start, params.end);\n }\n\n return {\n progress: progress\n };\n }\n};\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/parallel/parallelVisual.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/pictorialBar.js": +/*!********************************************************!*\ + !*** ./node_modules/echarts/lib/chart/pictorialBar.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n__webpack_require__(/*! ../coord/cartesian/Grid */ \"./node_modules/echarts/lib/coord/cartesian/Grid.js\");\n\n__webpack_require__(/*! ./bar/PictorialBarSeries */ \"./node_modules/echarts/lib/chart/bar/PictorialBarSeries.js\");\n\n__webpack_require__(/*! ./bar/PictorialBarView */ \"./node_modules/echarts/lib/chart/bar/PictorialBarView.js\");\n\nvar _barGrid = __webpack_require__(/*! ../layout/barGrid */ \"./node_modules/echarts/lib/layout/barGrid.js\");\n\nvar layout = _barGrid.layout;\n\nvar visualSymbol = __webpack_require__(/*! ../visual/symbol */ \"./node_modules/echarts/lib/visual/symbol.js\");\n\n__webpack_require__(/*! ../component/gridSimple */ \"./node_modules/echarts/lib/component/gridSimple.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// In case developer forget to include grid component\necharts.registerLayout(zrUtil.curry(layout, 'pictorialBar'));\necharts.registerVisual(visualSymbol('pictorialBar', 'roundRect'));\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/pictorialBar.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/pie.js": +/*!***********************************************!*\ + !*** ./node_modules/echarts/lib/chart/pie.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n__webpack_require__(/*! ./pie/PieSeries */ \"./node_modules/echarts/lib/chart/pie/PieSeries.js\");\n\n__webpack_require__(/*! ./pie/PieView */ \"./node_modules/echarts/lib/chart/pie/PieView.js\");\n\nvar createDataSelectAction = __webpack_require__(/*! ../action/createDataSelectAction */ \"./node_modules/echarts/lib/action/createDataSelectAction.js\");\n\nvar dataColor = __webpack_require__(/*! ../visual/dataColor */ \"./node_modules/echarts/lib/visual/dataColor.js\");\n\nvar pieLayout = __webpack_require__(/*! ./pie/pieLayout */ \"./node_modules/echarts/lib/chart/pie/pieLayout.js\");\n\nvar dataFilter = __webpack_require__(/*! ../processor/dataFilter */ \"./node_modules/echarts/lib/processor/dataFilter.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\ncreateDataSelectAction('pie', [{\n type: 'pieToggleSelect',\n event: 'pieselectchanged',\n method: 'toggleSelected'\n}, {\n type: 'pieSelect',\n event: 'pieselected',\n method: 'select'\n}, {\n type: 'pieUnSelect',\n event: 'pieunselected',\n method: 'unSelect'\n}]);\necharts.registerVisual(dataColor('pie'));\necharts.registerLayout(zrUtil.curry(pieLayout, 'pie'));\necharts.registerProcessor(dataFilter('pie'));\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/pie.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/pie/PieSeries.js": +/*!*********************************************************!*\ + !*** ./node_modules/echarts/lib/chart/pie/PieSeries.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar createListSimply = __webpack_require__(/*! ../helper/createListSimply */ \"./node_modules/echarts/lib/chart/helper/createListSimply.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar modelUtil = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar _number = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar getPercentWithPrecision = _number.getPercentWithPrecision;\n\nvar dataSelectableMixin = __webpack_require__(/*! ../../component/helper/selectableMixin */ \"./node_modules/echarts/lib/component/helper/selectableMixin.js\");\n\nvar _dataProvider = __webpack_require__(/*! ../../data/helper/dataProvider */ \"./node_modules/echarts/lib/data/helper/dataProvider.js\");\n\nvar retrieveRawAttr = _dataProvider.retrieveRawAttr;\n\nvar _sourceHelper = __webpack_require__(/*! ../../data/helper/sourceHelper */ \"./node_modules/echarts/lib/data/helper/sourceHelper.js\");\n\nvar makeSeriesEncodeForNameBased = _sourceHelper.makeSeriesEncodeForNameBased;\n\nvar LegendVisualProvider = __webpack_require__(/*! ../../visual/LegendVisualProvider */ \"./node_modules/echarts/lib/visual/LegendVisualProvider.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PieSeries = echarts.extendSeriesModel({\n type: 'series.pie',\n // Overwrite\n init: function (option) {\n PieSeries.superApply(this, 'init', arguments); // Enable legend selection for each data item\n // Use a function instead of direct access because data reference may changed\n\n this.legendVisualProvider = new LegendVisualProvider(zrUtil.bind(this.getData, this), zrUtil.bind(this.getRawData, this));\n this.updateSelectedMap(this._createSelectableList());\n\n this._defaultLabelLine(option);\n },\n // Overwrite\n mergeOption: function (newOption) {\n PieSeries.superCall(this, 'mergeOption', newOption);\n this.updateSelectedMap(this._createSelectableList());\n },\n getInitialData: function (option, ecModel) {\n return createListSimply(this, {\n coordDimensions: ['value'],\n encodeDefaulter: zrUtil.curry(makeSeriesEncodeForNameBased, this)\n });\n },\n _createSelectableList: function () {\n var data = this.getRawData();\n var valueDim = data.mapDimension('value');\n var targetList = [];\n\n for (var i = 0, len = data.count(); i < len; i++) {\n targetList.push({\n name: data.getName(i),\n value: data.get(valueDim, i),\n selected: retrieveRawAttr(data, i, 'selected')\n });\n }\n\n return targetList;\n },\n // Overwrite\n getDataParams: function (dataIndex) {\n var data = this.getData();\n var params = PieSeries.superCall(this, 'getDataParams', dataIndex); // FIXME toFixed?\n\n var valueList = [];\n data.each(data.mapDimension('value'), function (value) {\n valueList.push(value);\n });\n params.percent = getPercentWithPrecision(valueList, dataIndex, data.hostModel.get('percentPrecision'));\n params.$vars.push('percent');\n return params;\n },\n _defaultLabelLine: function (option) {\n // Extend labelLine emphasis\n modelUtil.defaultEmphasis(option, 'labelLine', ['show']);\n var labelLineNormalOpt = option.labelLine;\n var labelLineEmphasisOpt = option.emphasis.labelLine; // Not show label line if `label.normal.show = false`\n\n labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show;\n labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show;\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n legendHoverLink: true,\n hoverAnimation: true,\n // 默认全局居中\n center: ['50%', '50%'],\n radius: [0, '75%'],\n // 默认顺时针\n clockwise: true,\n startAngle: 90,\n // 最小角度改为0\n minAngle: 0,\n // If the angle of a sector less than `minShowLabelAngle`,\n // the label will not be displayed.\n minShowLabelAngle: 0,\n // 选中时扇区偏移量\n selectedOffset: 10,\n // 高亮扇区偏移量\n hoverOffset: 10,\n // If use strategy to avoid label overlapping\n avoidLabelOverlap: true,\n // 选择模式,默认关闭,可选single,multiple\n // selectedMode: false,\n // 南丁格尔玫瑰图模式,'radius'(半径) | 'area'(面积)\n // roseType: null,\n percentPrecision: 2,\n // If still show when all data zero.\n stillShowZeroSum: true,\n // cursor: null,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n width: null,\n height: null,\n label: {\n // If rotate around circle\n rotate: false,\n show: true,\n // 'outer', 'inside', 'center'\n position: 'outer',\n // 'none', 'labelLine', 'edge'. Works only when position is 'outer'\n alignTo: 'none',\n // Closest distance between label and chart edge.\n // Works only position is 'outer' and alignTo is 'edge'.\n margin: '25%',\n // Works only position is 'outer' and alignTo is not 'edge'.\n bleedMargin: 10,\n // Distance between text and label line.\n distanceToLabelLine: 5 // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调\n // 默认使用全局文本样式,详见TEXTSTYLE\n // distance: 当position为inner时有效,为label位置到圆心的距离与圆半径(环状图为内外半径和)的比例系数\n\n },\n // Enabled when label.normal.position is 'outer'\n labelLine: {\n show: true,\n // 引导线两段中的第一段长度\n length: 15,\n // 引导线两段中的第二段长度\n length2: 15,\n smooth: false,\n lineStyle: {\n // color: 各异,\n width: 1,\n type: 'solid'\n }\n },\n itemStyle: {\n borderWidth: 1\n },\n // Animation type. Valid values: expansion, scale\n animationType: 'expansion',\n // Animation type when update. Valid values: transition, expansion\n animationTypeUpdate: 'transition',\n animationEasing: 'cubicOut'\n }\n});\nzrUtil.mixin(PieSeries, dataSelectableMixin);\nvar _default = PieSeries;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/pie/PieSeries.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/pie/PieView.js": +/*!*******************************************************!*\ + !*** ./node_modules/echarts/lib/chart/pie/PieView.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar ChartView = __webpack_require__(/*! ../../view/Chart */ \"./node_modules/echarts/lib/view/Chart.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {module:echarts/model/Series} seriesModel\n * @param {boolean} hasAnimation\n * @inner\n */\nfunction updateDataSelected(uid, seriesModel, hasAnimation, api) {\n var data = seriesModel.getData();\n var dataIndex = this.dataIndex;\n var name = data.getName(dataIndex);\n var selectedOffset = seriesModel.get('selectedOffset');\n api.dispatchAction({\n type: 'pieToggleSelect',\n from: uid,\n name: name,\n seriesId: seriesModel.id\n });\n data.each(function (idx) {\n toggleItemSelected(data.getItemGraphicEl(idx), data.getItemLayout(idx), seriesModel.isSelected(data.getName(idx)), selectedOffset, hasAnimation);\n });\n}\n/**\n * @param {module:zrender/graphic/Sector} el\n * @param {Object} layout\n * @param {boolean} isSelected\n * @param {number} selectedOffset\n * @param {boolean} hasAnimation\n * @inner\n */\n\n\nfunction toggleItemSelected(el, layout, isSelected, selectedOffset, hasAnimation) {\n var midAngle = (layout.startAngle + layout.endAngle) / 2;\n var dx = Math.cos(midAngle);\n var dy = Math.sin(midAngle);\n var offset = isSelected ? selectedOffset : 0;\n var position = [dx * offset, dy * offset];\n hasAnimation // animateTo will stop revious animation like update transition\n ? el.animate().when(200, {\n position: position\n }).start('bounceOut') : el.attr('position', position);\n}\n/**\n * Piece of pie including Sector, Label, LabelLine\n * @constructor\n * @extends {module:zrender/graphic/Group}\n */\n\n\nfunction PiePiece(data, idx) {\n graphic.Group.call(this);\n var sector = new graphic.Sector({\n z2: 2\n });\n var polyline = new graphic.Polyline();\n var text = new graphic.Text();\n this.add(sector);\n this.add(polyline);\n this.add(text);\n this.updateData(data, idx, true);\n}\n\nvar piePieceProto = PiePiece.prototype;\n\npiePieceProto.updateData = function (data, idx, firstCreate) {\n var sector = this.childAt(0);\n var labelLine = this.childAt(1);\n var labelText = this.childAt(2);\n var seriesModel = data.hostModel;\n var itemModel = data.getItemModel(idx);\n var layout = data.getItemLayout(idx);\n var sectorShape = zrUtil.extend({}, layout);\n sectorShape.label = null;\n var animationTypeUpdate = seriesModel.getShallow('animationTypeUpdate');\n\n if (firstCreate) {\n sector.setShape(sectorShape);\n var animationType = seriesModel.getShallow('animationType');\n\n if (animationType === 'scale') {\n sector.shape.r = layout.r0;\n graphic.initProps(sector, {\n shape: {\n r: layout.r\n }\n }, seriesModel, idx);\n } // Expansion\n else {\n sector.shape.endAngle = layout.startAngle;\n graphic.updateProps(sector, {\n shape: {\n endAngle: layout.endAngle\n }\n }, seriesModel, idx);\n }\n } else {\n if (animationTypeUpdate === 'expansion') {\n // Sectors are set to be target shape and an overlaying clipPath is used for animation\n sector.setShape(sectorShape);\n } else {\n // Transition animation from the old shape\n graphic.updateProps(sector, {\n shape: sectorShape\n }, seriesModel, idx);\n }\n } // Update common style\n\n\n var visualColor = data.getItemVisual(idx, 'color');\n sector.useStyle(zrUtil.defaults({\n lineJoin: 'bevel',\n fill: visualColor\n }, itemModel.getModel('itemStyle').getItemStyle()));\n sector.hoverStyle = itemModel.getModel('emphasis.itemStyle').getItemStyle();\n var cursorStyle = itemModel.getShallow('cursor');\n cursorStyle && sector.attr('cursor', cursorStyle); // Toggle selected\n\n toggleItemSelected(this, data.getItemLayout(idx), seriesModel.isSelected(data.getName(idx)), seriesModel.get('selectedOffset'), seriesModel.get('animation')); // Label and text animation should be applied only for transition type animation when update\n\n var withAnimation = !firstCreate && animationTypeUpdate === 'transition';\n\n this._updateLabel(data, idx, withAnimation);\n\n this.highDownOnUpdate = !seriesModel.get('silent') ? function (fromState, toState) {\n var hasAnimation = seriesModel.isAnimationEnabled() && itemModel.get('hoverAnimation');\n\n if (toState === 'emphasis') {\n labelLine.ignore = labelLine.hoverIgnore;\n labelText.ignore = labelText.hoverIgnore; // Sector may has animation of updating data. Force to move to the last frame\n // Or it may stopped on the wrong shape\n\n if (hasAnimation) {\n sector.stopAnimation(true);\n sector.animateTo({\n shape: {\n r: layout.r + seriesModel.get('hoverOffset')\n }\n }, 300, 'elasticOut');\n }\n } else {\n labelLine.ignore = labelLine.normalIgnore;\n labelText.ignore = labelText.normalIgnore;\n\n if (hasAnimation) {\n sector.stopAnimation(true);\n sector.animateTo({\n shape: {\n r: layout.r\n }\n }, 300, 'elasticOut');\n }\n }\n } : null;\n graphic.setHoverStyle(this);\n};\n\npiePieceProto._updateLabel = function (data, idx, withAnimation) {\n var labelLine = this.childAt(1);\n var labelText = this.childAt(2);\n var seriesModel = data.hostModel;\n var itemModel = data.getItemModel(idx);\n var layout = data.getItemLayout(idx);\n var labelLayout = layout.label;\n var visualColor = data.getItemVisual(idx, 'color');\n\n if (!labelLayout || isNaN(labelLayout.x) || isNaN(labelLayout.y)) {\n labelText.ignore = labelText.normalIgnore = labelText.hoverIgnore = labelLine.ignore = labelLine.normalIgnore = labelLine.hoverIgnore = true;\n return;\n }\n\n var targetLineShape = {\n points: labelLayout.linePoints || [[labelLayout.x, labelLayout.y], [labelLayout.x, labelLayout.y], [labelLayout.x, labelLayout.y]]\n };\n var targetTextStyle = {\n x: labelLayout.x,\n y: labelLayout.y\n };\n\n if (withAnimation) {\n graphic.updateProps(labelLine, {\n shape: targetLineShape\n }, seriesModel, idx);\n graphic.updateProps(labelText, {\n style: targetTextStyle\n }, seriesModel, idx);\n } else {\n labelLine.attr({\n shape: targetLineShape\n });\n labelText.attr({\n style: targetTextStyle\n });\n }\n\n labelText.attr({\n rotation: labelLayout.rotation,\n origin: [labelLayout.x, labelLayout.y],\n z2: 10\n });\n var labelModel = itemModel.getModel('label');\n var labelHoverModel = itemModel.getModel('emphasis.label');\n var labelLineModel = itemModel.getModel('labelLine');\n var labelLineHoverModel = itemModel.getModel('emphasis.labelLine');\n var visualColor = data.getItemVisual(idx, 'color');\n graphic.setLabelStyle(labelText.style, labelText.hoverStyle = {}, labelModel, labelHoverModel, {\n labelFetcher: data.hostModel,\n labelDataIndex: idx,\n defaultText: labelLayout.text,\n autoColor: visualColor,\n useInsideStyle: !!labelLayout.inside\n }, {\n textAlign: labelLayout.textAlign,\n textVerticalAlign: labelLayout.verticalAlign,\n opacity: data.getItemVisual(idx, 'opacity')\n });\n labelText.ignore = labelText.normalIgnore = !labelModel.get('show');\n labelText.hoverIgnore = !labelHoverModel.get('show');\n labelLine.ignore = labelLine.normalIgnore = !labelLineModel.get('show');\n labelLine.hoverIgnore = !labelLineHoverModel.get('show'); // Default use item visual color\n\n labelLine.setStyle({\n stroke: visualColor,\n opacity: data.getItemVisual(idx, 'opacity')\n });\n labelLine.setStyle(labelLineModel.getModel('lineStyle').getLineStyle());\n labelLine.hoverStyle = labelLineHoverModel.getModel('lineStyle').getLineStyle();\n var smooth = labelLineModel.get('smooth');\n\n if (smooth && smooth === true) {\n smooth = 0.4;\n }\n\n labelLine.setShape({\n smooth: smooth\n });\n};\n\nzrUtil.inherits(PiePiece, graphic.Group); // Pie view\n\nvar PieView = ChartView.extend({\n type: 'pie',\n init: function () {\n var sectorGroup = new graphic.Group();\n this._sectorGroup = sectorGroup;\n },\n render: function (seriesModel, ecModel, api, payload) {\n if (payload && payload.from === this.uid) {\n return;\n }\n\n var data = seriesModel.getData();\n var oldData = this._data;\n var group = this.group;\n var hasAnimation = ecModel.get('animation');\n var isFirstRender = !oldData;\n var animationType = seriesModel.get('animationType');\n var animationTypeUpdate = seriesModel.get('animationTypeUpdate');\n var onSectorClick = zrUtil.curry(updateDataSelected, this.uid, seriesModel, hasAnimation, api);\n var selectedMode = seriesModel.get('selectedMode');\n data.diff(oldData).add(function (idx) {\n var piePiece = new PiePiece(data, idx); // Default expansion animation\n\n if (isFirstRender && animationType !== 'scale') {\n piePiece.eachChild(function (child) {\n child.stopAnimation(true);\n });\n }\n\n selectedMode && piePiece.on('click', onSectorClick);\n data.setItemGraphicEl(idx, piePiece);\n group.add(piePiece);\n }).update(function (newIdx, oldIdx) {\n var piePiece = oldData.getItemGraphicEl(oldIdx);\n\n if (!isFirstRender && animationTypeUpdate !== 'transition') {\n piePiece.eachChild(function (child) {\n child.stopAnimation(true);\n });\n }\n\n piePiece.updateData(data, newIdx);\n piePiece.off('click');\n selectedMode && piePiece.on('click', onSectorClick);\n group.add(piePiece);\n data.setItemGraphicEl(newIdx, piePiece);\n }).remove(function (idx) {\n var piePiece = oldData.getItemGraphicEl(idx);\n group.remove(piePiece);\n }).execute();\n\n if (hasAnimation && data.count() > 0 && (isFirstRender ? animationType !== 'scale' : animationTypeUpdate !== 'transition')) {\n var shape = data.getItemLayout(0);\n\n for (var s = 1; isNaN(shape.startAngle) && s < data.count(); ++s) {\n shape = data.getItemLayout(s);\n }\n\n var r = Math.max(api.getWidth(), api.getHeight()) / 2;\n var removeClipPath = zrUtil.bind(group.removeClipPath, group);\n group.setClipPath(this._createClipPath(shape.cx, shape.cy, r, shape.startAngle, shape.clockwise, removeClipPath, seriesModel, isFirstRender));\n } else {\n // clipPath is used in first-time animation, so remove it when otherwise. See: #8994\n group.removeClipPath();\n }\n\n this._data = data;\n },\n dispose: function () {},\n _createClipPath: function (cx, cy, r, startAngle, clockwise, cb, seriesModel, isFirstRender) {\n var clipPath = new graphic.Sector({\n shape: {\n cx: cx,\n cy: cy,\n r0: 0,\n r: r,\n startAngle: startAngle,\n endAngle: startAngle,\n clockwise: clockwise\n }\n });\n var initOrUpdate = isFirstRender ? graphic.initProps : graphic.updateProps;\n initOrUpdate(clipPath, {\n shape: {\n endAngle: startAngle + (clockwise ? 1 : -1) * Math.PI * 2\n }\n }, seriesModel, cb);\n return clipPath;\n },\n\n /**\n * @implement\n */\n containPoint: function (point, seriesModel) {\n var data = seriesModel.getData();\n var itemLayout = data.getItemLayout(0);\n\n if (itemLayout) {\n var dx = point[0] - itemLayout.cx;\n var dy = point[1] - itemLayout.cy;\n var radius = Math.sqrt(dx * dx + dy * dy);\n return radius <= itemLayout.r && radius >= itemLayout.r0;\n }\n }\n});\nvar _default = PieView;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/pie/PieView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/pie/labelLayout.js": +/*!***********************************************************!*\ + !*** ./node_modules/echarts/lib/chart/pie/labelLayout.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar textContain = __webpack_require__(/*! zrender/lib/contain/text */ \"./node_modules/zrender/lib/contain/text.js\");\n\nvar _number = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar parsePercent = _number.parsePercent;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// FIXME emphasis label position is not same with normal label position\nvar RADIAN = Math.PI / 180;\n\nfunction adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight, viewLeft, viewTop, farthestX) {\n list.sort(function (a, b) {\n return a.y - b.y;\n });\n\n function shiftDown(start, end, delta, dir) {\n for (var j = start; j < end; j++) {\n if (list[j].y + delta > viewTop + viewHeight) {\n break;\n }\n\n list[j].y += delta;\n\n if (j > start && j + 1 < end && list[j + 1].y > list[j].y + list[j].height) {\n shiftUp(j, delta / 2);\n return;\n }\n }\n\n shiftUp(end - 1, delta / 2);\n }\n\n function shiftUp(end, delta) {\n for (var j = end; j >= 0; j--) {\n if (list[j].y - delta < viewTop) {\n break;\n }\n\n list[j].y -= delta;\n\n if (j > 0 && list[j].y > list[j - 1].y + list[j - 1].height) {\n break;\n }\n }\n }\n\n function changeX(list, isDownList, cx, cy, r, dir) {\n var lastDeltaX = dir > 0 ? isDownList // right-side\n ? Number.MAX_VALUE // down\n : 0 // up\n : isDownList // left-side\n ? Number.MAX_VALUE // down\n : 0; // up\n\n for (var i = 0, l = list.length; i < l; i++) {\n if (list[i].labelAlignTo !== 'none') {\n continue;\n }\n\n var deltaY = Math.abs(list[i].y - cy);\n var length = list[i].len;\n var length2 = list[i].len2;\n var deltaX = deltaY < r + length ? Math.sqrt((r + length + length2) * (r + length + length2) - deltaY * deltaY) : Math.abs(list[i].x - cx);\n\n if (isDownList && deltaX >= lastDeltaX) {\n // right-down, left-down\n deltaX = lastDeltaX - 10;\n }\n\n if (!isDownList && deltaX <= lastDeltaX) {\n // right-up, left-up\n deltaX = lastDeltaX + 10;\n }\n\n list[i].x = cx + deltaX * dir;\n lastDeltaX = deltaX;\n }\n }\n\n var lastY = 0;\n var delta;\n var len = list.length;\n var upList = [];\n var downList = [];\n\n for (var i = 0; i < len; i++) {\n if (list[i].position === 'outer' && list[i].labelAlignTo === 'labelLine') {\n var dx = list[i].x - farthestX;\n list[i].linePoints[1][0] += dx;\n list[i].x = farthestX;\n }\n\n delta = list[i].y - lastY;\n\n if (delta < 0) {\n shiftDown(i, len, -delta, dir);\n }\n\n lastY = list[i].y + list[i].height;\n }\n\n if (viewHeight - lastY < 0) {\n shiftUp(len - 1, lastY - viewHeight);\n }\n\n for (var i = 0; i < len; i++) {\n if (list[i].y >= cy) {\n downList.push(list[i]);\n } else {\n upList.push(list[i]);\n }\n }\n\n changeX(upList, false, cx, cy, r, dir);\n changeX(downList, true, cx, cy, r, dir);\n}\n\nfunction avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop) {\n var leftList = [];\n var rightList = [];\n var leftmostX = Number.MAX_VALUE;\n var rightmostX = -Number.MAX_VALUE;\n\n for (var i = 0; i < labelLayoutList.length; i++) {\n if (isPositionCenter(labelLayoutList[i])) {\n continue;\n }\n\n if (labelLayoutList[i].x < cx) {\n leftmostX = Math.min(leftmostX, labelLayoutList[i].x);\n leftList.push(labelLayoutList[i]);\n } else {\n rightmostX = Math.max(rightmostX, labelLayoutList[i].x);\n rightList.push(labelLayoutList[i]);\n }\n }\n\n adjustSingleSide(rightList, cx, cy, r, 1, viewWidth, viewHeight, viewLeft, viewTop, rightmostX);\n adjustSingleSide(leftList, cx, cy, r, -1, viewWidth, viewHeight, viewLeft, viewTop, leftmostX);\n\n for (var i = 0; i < labelLayoutList.length; i++) {\n var layout = labelLayoutList[i];\n\n if (isPositionCenter(layout)) {\n continue;\n }\n\n var linePoints = layout.linePoints;\n\n if (linePoints) {\n var isAlignToEdge = layout.labelAlignTo === 'edge';\n var realTextWidth = layout.textRect.width;\n var targetTextWidth;\n\n if (isAlignToEdge) {\n if (layout.x < cx) {\n targetTextWidth = linePoints[2][0] - layout.labelDistance - viewLeft - layout.labelMargin;\n } else {\n targetTextWidth = viewLeft + viewWidth - layout.labelMargin - linePoints[2][0] - layout.labelDistance;\n }\n } else {\n if (layout.x < cx) {\n targetTextWidth = layout.x - viewLeft - layout.bleedMargin;\n } else {\n targetTextWidth = viewLeft + viewWidth - layout.x - layout.bleedMargin;\n }\n }\n\n if (targetTextWidth < layout.textRect.width) {\n layout.text = textContain.truncateText(layout.text, targetTextWidth, layout.font);\n\n if (layout.labelAlignTo === 'edge') {\n realTextWidth = textContain.getWidth(layout.text, layout.font);\n }\n }\n\n var dist = linePoints[1][0] - linePoints[2][0];\n\n if (isAlignToEdge) {\n if (layout.x < cx) {\n linePoints[2][0] = viewLeft + layout.labelMargin + realTextWidth + layout.labelDistance;\n } else {\n linePoints[2][0] = viewLeft + viewWidth - layout.labelMargin - realTextWidth - layout.labelDistance;\n }\n } else {\n if (layout.x < cx) {\n linePoints[2][0] = layout.x + layout.labelDistance;\n } else {\n linePoints[2][0] = layout.x - layout.labelDistance;\n }\n\n linePoints[1][0] = linePoints[2][0] + dist;\n }\n\n linePoints[1][1] = linePoints[2][1] = layout.y;\n }\n }\n}\n\nfunction isPositionCenter(layout) {\n // Not change x for center label\n return layout.position === 'center';\n}\n\nfunction _default(seriesModel, r, viewWidth, viewHeight, viewLeft, viewTop) {\n var data = seriesModel.getData();\n var labelLayoutList = [];\n var cx;\n var cy;\n var hasLabelRotate = false;\n var minShowLabelRadian = (seriesModel.get('minShowLabelAngle') || 0) * RADIAN;\n data.each(function (idx) {\n var layout = data.getItemLayout(idx);\n var itemModel = data.getItemModel(idx);\n var labelModel = itemModel.getModel('label'); // Use position in normal or emphasis\n\n var labelPosition = labelModel.get('position') || itemModel.get('emphasis.label.position');\n var labelDistance = labelModel.get('distanceToLabelLine');\n var labelAlignTo = labelModel.get('alignTo');\n var labelMargin = parsePercent(labelModel.get('margin'), viewWidth);\n var bleedMargin = labelModel.get('bleedMargin');\n var font = labelModel.getFont();\n var labelLineModel = itemModel.getModel('labelLine');\n var labelLineLen = labelLineModel.get('length');\n labelLineLen = parsePercent(labelLineLen, viewWidth);\n var labelLineLen2 = labelLineModel.get('length2');\n labelLineLen2 = parsePercent(labelLineLen2, viewWidth);\n\n if (layout.angle < minShowLabelRadian) {\n return;\n }\n\n var midAngle = (layout.startAngle + layout.endAngle) / 2;\n var dx = Math.cos(midAngle);\n var dy = Math.sin(midAngle);\n var textX;\n var textY;\n var linePoints;\n var textAlign;\n cx = layout.cx;\n cy = layout.cy;\n var text = seriesModel.getFormattedLabel(idx, 'normal') || data.getName(idx);\n var textRect = textContain.getBoundingRect(text, font, textAlign, 'top');\n var isLabelInside = labelPosition === 'inside' || labelPosition === 'inner';\n\n if (labelPosition === 'center') {\n textX = layout.cx;\n textY = layout.cy;\n textAlign = 'center';\n } else {\n var x1 = (isLabelInside ? (layout.r + layout.r0) / 2 * dx : layout.r * dx) + cx;\n var y1 = (isLabelInside ? (layout.r + layout.r0) / 2 * dy : layout.r * dy) + cy;\n textX = x1 + dx * 3;\n textY = y1 + dy * 3;\n\n if (!isLabelInside) {\n // For roseType\n var x2 = x1 + dx * (labelLineLen + r - layout.r);\n var y2 = y1 + dy * (labelLineLen + r - layout.r);\n var x3 = x2 + (dx < 0 ? -1 : 1) * labelLineLen2;\n var y3 = y2;\n\n if (labelAlignTo === 'edge') {\n // Adjust textX because text align of edge is opposite\n textX = dx < 0 ? viewLeft + labelMargin : viewLeft + viewWidth - labelMargin;\n } else {\n textX = x3 + (dx < 0 ? -labelDistance : labelDistance);\n }\n\n textY = y3;\n linePoints = [[x1, y1], [x2, y2], [x3, y3]];\n }\n\n textAlign = isLabelInside ? 'center' : labelAlignTo === 'edge' ? dx > 0 ? 'right' : 'left' : dx > 0 ? 'left' : 'right';\n }\n\n var labelRotate;\n var rotate = labelModel.get('rotate');\n\n if (typeof rotate === 'number') {\n labelRotate = rotate * (Math.PI / 180);\n } else {\n labelRotate = rotate ? dx < 0 ? -midAngle + Math.PI : -midAngle : 0;\n }\n\n hasLabelRotate = !!labelRotate;\n layout.label = {\n x: textX,\n y: textY,\n position: labelPosition,\n height: textRect.height,\n len: labelLineLen,\n len2: labelLineLen2,\n linePoints: linePoints,\n textAlign: textAlign,\n verticalAlign: 'middle',\n rotation: labelRotate,\n inside: isLabelInside,\n labelDistance: labelDistance,\n labelAlignTo: labelAlignTo,\n labelMargin: labelMargin,\n bleedMargin: bleedMargin,\n textRect: textRect,\n text: text,\n font: font\n }; // Not layout the inside label\n\n if (!isLabelInside) {\n labelLayoutList.push(layout.label);\n }\n });\n\n if (!hasLabelRotate && seriesModel.get('avoidLabelOverlap')) {\n avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop);\n }\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/pie/labelLayout.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/pie/pieLayout.js": +/*!*********************************************************!*\ + !*** ./node_modules/echarts/lib/chart/pie/pieLayout.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _number = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar parsePercent = _number.parsePercent;\nvar linearMap = _number.linearMap;\n\nvar layout = __webpack_require__(/*! ../../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar labelLayout = __webpack_require__(/*! ./labelLayout */ \"./node_modules/echarts/lib/chart/pie/labelLayout.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PI2 = Math.PI * 2;\nvar RADIAN = Math.PI / 180;\n\nfunction getViewRect(seriesModel, api) {\n return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n}\n\nfunction _default(seriesType, ecModel, api, payload) {\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n var data = seriesModel.getData();\n var valueDim = data.mapDimension('value');\n var viewRect = getViewRect(seriesModel, api);\n var center = seriesModel.get('center');\n var radius = seriesModel.get('radius');\n\n if (!zrUtil.isArray(radius)) {\n radius = [0, radius];\n }\n\n if (!zrUtil.isArray(center)) {\n center = [center, center];\n }\n\n var width = parsePercent(viewRect.width, api.getWidth());\n var height = parsePercent(viewRect.height, api.getHeight());\n var size = Math.min(width, height);\n var cx = parsePercent(center[0], width) + viewRect.x;\n var cy = parsePercent(center[1], height) + viewRect.y;\n var r0 = parsePercent(radius[0], size / 2);\n var r = parsePercent(radius[1], size / 2);\n var startAngle = -seriesModel.get('startAngle') * RADIAN;\n var minAngle = seriesModel.get('minAngle') * RADIAN;\n var validDataCount = 0;\n data.each(valueDim, function (value) {\n !isNaN(value) && validDataCount++;\n });\n var sum = data.getSum(valueDim); // Sum may be 0\n\n var unitRadian = Math.PI / (sum || validDataCount) * 2;\n var clockwise = seriesModel.get('clockwise');\n var roseType = seriesModel.get('roseType');\n var stillShowZeroSum = seriesModel.get('stillShowZeroSum'); // [0...max]\n\n var extent = data.getDataExtent(valueDim);\n extent[0] = 0; // In the case some sector angle is smaller than minAngle\n\n var restAngle = PI2;\n var valueSumLargerThanMinAngle = 0;\n var currentAngle = startAngle;\n var dir = clockwise ? 1 : -1;\n data.each(valueDim, function (value, idx) {\n var angle;\n\n if (isNaN(value)) {\n data.setItemLayout(idx, {\n angle: NaN,\n startAngle: NaN,\n endAngle: NaN,\n clockwise: clockwise,\n cx: cx,\n cy: cy,\n r0: r0,\n r: roseType ? NaN : r,\n viewRect: viewRect\n });\n return;\n } // FIXME 兼容 2.0 但是 roseType 是 area 的时候才是这样?\n\n\n if (roseType !== 'area') {\n angle = sum === 0 && stillShowZeroSum ? unitRadian : value * unitRadian;\n } else {\n angle = PI2 / validDataCount;\n }\n\n if (angle < minAngle) {\n angle = minAngle;\n restAngle -= minAngle;\n } else {\n valueSumLargerThanMinAngle += value;\n }\n\n var endAngle = currentAngle + dir * angle;\n data.setItemLayout(idx, {\n angle: angle,\n startAngle: currentAngle,\n endAngle: endAngle,\n clockwise: clockwise,\n cx: cx,\n cy: cy,\n r0: r0,\n r: roseType ? linearMap(value, extent, [r0, r]) : r,\n viewRect: viewRect\n });\n currentAngle = endAngle;\n }); // Some sector is constrained by minAngle\n // Rest sectors needs recalculate angle\n\n if (restAngle < PI2 && validDataCount) {\n // Average the angle if rest angle is not enough after all angles is\n // Constrained by minAngle\n if (restAngle <= 1e-3) {\n var angle = PI2 / validDataCount;\n data.each(valueDim, function (value, idx) {\n if (!isNaN(value)) {\n var layout = data.getItemLayout(idx);\n layout.angle = angle;\n layout.startAngle = startAngle + dir * idx * angle;\n layout.endAngle = startAngle + dir * (idx + 1) * angle;\n }\n });\n } else {\n unitRadian = restAngle / valueSumLargerThanMinAngle;\n currentAngle = startAngle;\n data.each(valueDim, function (value, idx) {\n if (!isNaN(value)) {\n var layout = data.getItemLayout(idx);\n var angle = layout.angle === minAngle ? minAngle : value * unitRadian;\n layout.startAngle = currentAngle;\n layout.endAngle = currentAngle + dir * angle;\n currentAngle += dir * angle;\n }\n });\n }\n }\n\n labelLayout(seriesModel, r, viewRect.width, viewRect.height, viewRect.x, viewRect.y);\n });\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/pie/pieLayout.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/radar.js": +/*!*************************************************!*\ + !*** ./node_modules/echarts/lib/chart/radar.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n__webpack_require__(/*! ../component/radar */ \"./node_modules/echarts/lib/component/radar.js\");\n\n__webpack_require__(/*! ./radar/RadarSeries */ \"./node_modules/echarts/lib/chart/radar/RadarSeries.js\");\n\n__webpack_require__(/*! ./radar/RadarView */ \"./node_modules/echarts/lib/chart/radar/RadarView.js\");\n\nvar dataColor = __webpack_require__(/*! ../visual/dataColor */ \"./node_modules/echarts/lib/visual/dataColor.js\");\n\nvar visualSymbol = __webpack_require__(/*! ../visual/symbol */ \"./node_modules/echarts/lib/visual/symbol.js\");\n\nvar radarLayout = __webpack_require__(/*! ./radar/radarLayout */ \"./node_modules/echarts/lib/chart/radar/radarLayout.js\");\n\nvar dataFilter = __webpack_require__(/*! ../processor/dataFilter */ \"./node_modules/echarts/lib/processor/dataFilter.js\");\n\nvar backwardCompat = __webpack_require__(/*! ./radar/backwardCompat */ \"./node_modules/echarts/lib/chart/radar/backwardCompat.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Must use radar component\necharts.registerVisual(dataColor('radar'));\necharts.registerVisual(visualSymbol('radar', 'circle'));\necharts.registerLayout(radarLayout);\necharts.registerProcessor(dataFilter('radar'));\necharts.registerPreprocessor(backwardCompat);\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/radar.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/radar/RadarSeries.js": +/*!*************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/radar/RadarSeries.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar SeriesModel = __webpack_require__(/*! ../../model/Series */ \"./node_modules/echarts/lib/model/Series.js\");\n\nvar createListSimply = __webpack_require__(/*! ../helper/createListSimply */ \"./node_modules/echarts/lib/chart/helper/createListSimply.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar _format = __webpack_require__(/*! ../../util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\nvar encodeHTML = _format.encodeHTML;\n\nvar LegendVisualProvider = __webpack_require__(/*! ../../visual/LegendVisualProvider */ \"./node_modules/echarts/lib/visual/LegendVisualProvider.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar RadarSeries = SeriesModel.extend({\n type: 'series.radar',\n dependencies: ['radar'],\n // Overwrite\n init: function (option) {\n RadarSeries.superApply(this, 'init', arguments); // Enable legend selection for each data item\n // Use a function instead of direct access because data reference may changed\n\n this.legendVisualProvider = new LegendVisualProvider(zrUtil.bind(this.getData, this), zrUtil.bind(this.getRawData, this));\n },\n getInitialData: function (option, ecModel) {\n return createListSimply(this, {\n generateCoord: 'indicator_',\n generateCoordCount: Infinity\n });\n },\n formatTooltip: function (dataIndex, multipleSeries, dataType, renderMode) {\n var data = this.getData();\n var coordSys = this.coordinateSystem;\n var indicatorAxes = coordSys.getIndicatorAxes();\n var name = this.getData().getName(dataIndex);\n var newLine = renderMode === 'html' ? '
' : '\\n';\n return encodeHTML(name === '' ? this.name : name) + newLine + zrUtil.map(indicatorAxes, function (axis, idx) {\n var val = data.get(data.mapDimension(axis.dim), dataIndex);\n return encodeHTML(axis.name + ' : ' + val);\n }).join(newLine);\n },\n\n /**\n * @implement\n */\n getTooltipPosition: function (dataIndex) {\n if (dataIndex != null) {\n var data = this.getData();\n var coordSys = this.coordinateSystem;\n var values = data.getValues(zrUtil.map(coordSys.dimensions, function (dim) {\n return data.mapDimension(dim);\n }), dataIndex, true);\n\n for (var i = 0, len = values.length; i < len; i++) {\n if (!isNaN(values[i])) {\n var indicatorAxes = coordSys.getIndicatorAxes();\n return coordSys.coordToPoint(indicatorAxes[i].dataToCoord(values[i]), i);\n }\n }\n }\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n coordinateSystem: 'radar',\n legendHoverLink: true,\n radarIndex: 0,\n lineStyle: {\n width: 2,\n type: 'solid'\n },\n label: {\n position: 'top'\n },\n // areaStyle: {\n // },\n // itemStyle: {}\n symbol: 'emptyCircle',\n symbolSize: 4 // symbolRotate: null\n\n }\n});\nvar _default = RadarSeries;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/radar/RadarSeries.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/radar/RadarView.js": +/*!***********************************************************!*\ + !*** ./node_modules/echarts/lib/chart/radar/RadarView.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar symbolUtil = __webpack_require__(/*! ../../util/symbol */ \"./node_modules/echarts/lib/util/symbol.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction normalizeSymbolSize(symbolSize) {\n if (!zrUtil.isArray(symbolSize)) {\n symbolSize = [+symbolSize, +symbolSize];\n }\n\n return symbolSize;\n}\n\nvar _default = echarts.extendChartView({\n type: 'radar',\n render: function (seriesModel, ecModel, api) {\n var polar = seriesModel.coordinateSystem;\n var group = this.group;\n var data = seriesModel.getData();\n var oldData = this._data;\n\n function createSymbol(data, idx) {\n var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\n var color = data.getItemVisual(idx, 'color');\n\n if (symbolType === 'none') {\n return;\n }\n\n var symbolSize = normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize'));\n var symbolPath = symbolUtil.createSymbol(symbolType, -1, -1, 2, 2, color);\n var symbolRotate = data.getItemVisual(idx, 'symbolRotate') || 0;\n symbolPath.attr({\n style: {\n strokeNoScale: true\n },\n z2: 100,\n scale: [symbolSize[0] / 2, symbolSize[1] / 2],\n rotation: symbolRotate * Math.PI / 180 || 0\n });\n return symbolPath;\n }\n\n function updateSymbols(oldPoints, newPoints, symbolGroup, data, idx, isInit) {\n // Simply rerender all\n symbolGroup.removeAll();\n\n for (var i = 0; i < newPoints.length - 1; i++) {\n var symbolPath = createSymbol(data, idx);\n\n if (symbolPath) {\n symbolPath.__dimIdx = i;\n\n if (oldPoints[i]) {\n symbolPath.attr('position', oldPoints[i]);\n graphic[isInit ? 'initProps' : 'updateProps'](symbolPath, {\n position: newPoints[i]\n }, seriesModel, idx);\n } else {\n symbolPath.attr('position', newPoints[i]);\n }\n\n symbolGroup.add(symbolPath);\n }\n }\n }\n\n function getInitialPoints(points) {\n return zrUtil.map(points, function (pt) {\n return [polar.cx, polar.cy];\n });\n }\n\n data.diff(oldData).add(function (idx) {\n var points = data.getItemLayout(idx);\n\n if (!points) {\n return;\n }\n\n var polygon = new graphic.Polygon();\n var polyline = new graphic.Polyline();\n var target = {\n shape: {\n points: points\n }\n };\n polygon.shape.points = getInitialPoints(points);\n polyline.shape.points = getInitialPoints(points);\n graphic.initProps(polygon, target, seriesModel, idx);\n graphic.initProps(polyline, target, seriesModel, idx);\n var itemGroup = new graphic.Group();\n var symbolGroup = new graphic.Group();\n itemGroup.add(polyline);\n itemGroup.add(polygon);\n itemGroup.add(symbolGroup);\n updateSymbols(polyline.shape.points, points, symbolGroup, data, idx, true);\n data.setItemGraphicEl(idx, itemGroup);\n }).update(function (newIdx, oldIdx) {\n var itemGroup = oldData.getItemGraphicEl(oldIdx);\n var polyline = itemGroup.childAt(0);\n var polygon = itemGroup.childAt(1);\n var symbolGroup = itemGroup.childAt(2);\n var target = {\n shape: {\n points: data.getItemLayout(newIdx)\n }\n };\n\n if (!target.shape.points) {\n return;\n }\n\n updateSymbols(polyline.shape.points, target.shape.points, symbolGroup, data, newIdx, false);\n graphic.updateProps(polyline, target, seriesModel);\n graphic.updateProps(polygon, target, seriesModel);\n data.setItemGraphicEl(newIdx, itemGroup);\n }).remove(function (idx) {\n group.remove(oldData.getItemGraphicEl(idx));\n }).execute();\n data.eachItemGraphicEl(function (itemGroup, idx) {\n var itemModel = data.getItemModel(idx);\n var polyline = itemGroup.childAt(0);\n var polygon = itemGroup.childAt(1);\n var symbolGroup = itemGroup.childAt(2);\n var color = data.getItemVisual(idx, 'color');\n group.add(itemGroup);\n polyline.useStyle(zrUtil.defaults(itemModel.getModel('lineStyle').getLineStyle(), {\n fill: 'none',\n stroke: color\n }));\n polyline.hoverStyle = itemModel.getModel('emphasis.lineStyle').getLineStyle();\n var areaStyleModel = itemModel.getModel('areaStyle');\n var hoverAreaStyleModel = itemModel.getModel('emphasis.areaStyle');\n var polygonIgnore = areaStyleModel.isEmpty() && areaStyleModel.parentModel.isEmpty();\n var hoverPolygonIgnore = hoverAreaStyleModel.isEmpty() && hoverAreaStyleModel.parentModel.isEmpty();\n hoverPolygonIgnore = hoverPolygonIgnore && polygonIgnore;\n polygon.ignore = polygonIgnore;\n polygon.useStyle(zrUtil.defaults(areaStyleModel.getAreaStyle(), {\n fill: color,\n opacity: 0.7\n }));\n polygon.hoverStyle = hoverAreaStyleModel.getAreaStyle();\n var itemStyle = itemModel.getModel('itemStyle').getItemStyle(['color']);\n var itemHoverStyle = itemModel.getModel('emphasis.itemStyle').getItemStyle();\n var labelModel = itemModel.getModel('label');\n var labelHoverModel = itemModel.getModel('emphasis.label');\n symbolGroup.eachChild(function (symbolPath) {\n symbolPath.setStyle(itemStyle);\n symbolPath.hoverStyle = zrUtil.clone(itemHoverStyle);\n var defaultText = data.get(data.dimensions[symbolPath.__dimIdx], idx);\n (defaultText == null || isNaN(defaultText)) && (defaultText = '');\n graphic.setLabelStyle(symbolPath.style, symbolPath.hoverStyle, labelModel, labelHoverModel, {\n labelFetcher: data.hostModel,\n labelDataIndex: idx,\n labelDimIndex: symbolPath.__dimIdx,\n defaultText: defaultText,\n autoColor: color,\n isRectText: true\n });\n });\n\n itemGroup.highDownOnUpdate = function (fromState, toState) {\n polygon.attr('ignore', toState === 'emphasis' ? hoverPolygonIgnore : polygonIgnore);\n };\n\n graphic.setHoverStyle(itemGroup);\n });\n this._data = data;\n },\n remove: function () {\n this.group.removeAll();\n this._data = null;\n },\n dispose: function () {}\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/radar/RadarView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/radar/backwardCompat.js": +/*!****************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/radar/backwardCompat.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Backward compat for radar chart in 2\nfunction _default(option) {\n var polarOptArr = option.polar;\n\n if (polarOptArr) {\n if (!zrUtil.isArray(polarOptArr)) {\n polarOptArr = [polarOptArr];\n }\n\n var polarNotRadar = [];\n zrUtil.each(polarOptArr, function (polarOpt, idx) {\n if (polarOpt.indicator) {\n if (polarOpt.type && !polarOpt.shape) {\n polarOpt.shape = polarOpt.type;\n }\n\n option.radar = option.radar || [];\n\n if (!zrUtil.isArray(option.radar)) {\n option.radar = [option.radar];\n }\n\n option.radar.push(polarOpt);\n } else {\n polarNotRadar.push(polarOpt);\n }\n });\n option.polar = polarNotRadar;\n }\n\n zrUtil.each(option.series, function (seriesOpt) {\n if (seriesOpt && seriesOpt.type === 'radar' && seriesOpt.polarIndex) {\n seriesOpt.radarIndex = seriesOpt.polarIndex;\n }\n });\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/radar/backwardCompat.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/radar/radarLayout.js": +/*!*************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/radar/radarLayout.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel) {\n ecModel.eachSeriesByType('radar', function (seriesModel) {\n var data = seriesModel.getData();\n var points = [];\n var coordSys = seriesModel.coordinateSystem;\n\n if (!coordSys) {\n return;\n }\n\n var axes = coordSys.getIndicatorAxes();\n zrUtil.each(axes, function (axis, axisIndex) {\n data.each(data.mapDimension(axes[axisIndex].dim), function (val, dataIndex) {\n points[dataIndex] = points[dataIndex] || [];\n var point = coordSys.dataToPoint(val, axisIndex);\n points[dataIndex][axisIndex] = isValidPoint(point) ? point : getValueMissingPoint(coordSys);\n });\n }); // Close polygon\n\n data.each(function (idx) {\n // TODO\n // Is it appropriate to connect to the next data when some data is missing?\n // Or, should trade it like `connectNull` in line chart?\n var firstPoint = zrUtil.find(points[idx], function (point) {\n return isValidPoint(point);\n }) || getValueMissingPoint(coordSys); // Copy the first actual point to the end of the array\n\n points[idx].push(firstPoint.slice());\n data.setItemLayout(idx, points[idx]);\n });\n });\n}\n\nfunction isValidPoint(point) {\n return !isNaN(point[0]) && !isNaN(point[1]);\n}\n\nfunction getValueMissingPoint(coordSys) {\n // It is error-prone to input [NaN, NaN] into polygon, polygon.\n // (probably cause problem when refreshing or animating)\n return [coordSys.cx, coordSys.cy];\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/radar/radarLayout.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/sankey.js": +/*!**************************************************!*\ + !*** ./node_modules/echarts/lib/chart/sankey.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n__webpack_require__(/*! ./sankey/SankeySeries */ \"./node_modules/echarts/lib/chart/sankey/SankeySeries.js\");\n\n__webpack_require__(/*! ./sankey/SankeyView */ \"./node_modules/echarts/lib/chart/sankey/SankeyView.js\");\n\n__webpack_require__(/*! ./sankey/sankeyAction */ \"./node_modules/echarts/lib/chart/sankey/sankeyAction.js\");\n\nvar sankeyLayout = __webpack_require__(/*! ./sankey/sankeyLayout */ \"./node_modules/echarts/lib/chart/sankey/sankeyLayout.js\");\n\nvar sankeyVisual = __webpack_require__(/*! ./sankey/sankeyVisual */ \"./node_modules/echarts/lib/chart/sankey/sankeyVisual.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerLayout(sankeyLayout);\necharts.registerVisual(sankeyVisual);\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/sankey.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/sankey/SankeySeries.js": +/*!***************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/sankey/SankeySeries.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar SeriesModel = __webpack_require__(/*! ../../model/Series */ \"./node_modules/echarts/lib/model/Series.js\");\n\nvar createGraphFromNodeEdge = __webpack_require__(/*! ../helper/createGraphFromNodeEdge */ \"./node_modules/echarts/lib/chart/helper/createGraphFromNodeEdge.js\");\n\nvar _format = __webpack_require__(/*! ../../util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\nvar encodeHTML = _format.encodeHTML;\n\nvar Model = __webpack_require__(/*! ../../model/Model */ \"./node_modules/echarts/lib/model/Model.js\");\n\nvar _config = __webpack_require__(/*! ../../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar SankeySeries = SeriesModel.extend({\n type: 'series.sankey',\n layoutInfo: null,\n levelModels: null,\n\n /**\n * Init a graph data structure from data in option series\n *\n * @param {Object} option the object used to config echarts view\n * @return {module:echarts/data/List} storage initial data\n */\n getInitialData: function (option, ecModel) {\n var links = option.edges || option.links;\n var nodes = option.data || option.nodes;\n var levels = option.levels;\n var levelModels = this.levelModels = {};\n\n for (var i = 0; i < levels.length; i++) {\n if (levels[i].depth != null && levels[i].depth >= 0) {\n levelModels[levels[i].depth] = new Model(levels[i], this, ecModel);\n } else {}\n }\n\n if (nodes && links) {\n var graph = createGraphFromNodeEdge(nodes, links, this, true, beforeLink);\n return graph.data;\n }\n\n function beforeLink(nodeData, edgeData) {\n nodeData.wrapMethod('getItemModel', function (model, idx) {\n model.customizeGetParent(function (path) {\n var parentModel = this.parentModel;\n var nodeDepth = parentModel.getData().getItemLayout(idx).depth;\n var levelModel = parentModel.levelModels[nodeDepth];\n return levelModel || this.parentModel;\n });\n return model;\n });\n edgeData.wrapMethod('getItemModel', function (model, idx) {\n model.customizeGetParent(function (path) {\n var parentModel = this.parentModel;\n var edge = parentModel.getGraph().getEdgeByIndex(idx);\n var depth = edge.node1.getLayout().depth;\n var levelModel = parentModel.levelModels[depth];\n return levelModel || this.parentModel;\n });\n return model;\n });\n }\n },\n setNodePosition: function (dataIndex, localPosition) {\n var dataItem = this.option.data[dataIndex];\n dataItem.localX = localPosition[0];\n dataItem.localY = localPosition[1];\n },\n\n /**\n * Return the graphic data structure\n *\n * @return {module:echarts/data/Graph} graphic data structure\n */\n getGraph: function () {\n return this.getData().graph;\n },\n\n /**\n * Get edge data of graphic data structure\n *\n * @return {module:echarts/data/List} data structure of list\n */\n getEdgeData: function () {\n return this.getGraph().edgeData;\n },\n\n /**\n * @override\n */\n formatTooltip: function (dataIndex, multipleSeries, dataType) {\n // dataType === 'node' or empty do not show tooltip by default\n if (dataType === 'edge') {\n var params = this.getDataParams(dataIndex, dataType);\n var rawDataOpt = params.data;\n var html = rawDataOpt.source + ' -- ' + rawDataOpt.target;\n\n if (params.value) {\n html += ' : ' + params.value;\n }\n\n return encodeHTML(html);\n } else if (dataType === 'node') {\n var node = this.getGraph().getNodeByIndex(dataIndex);\n var value = node.getLayout().value;\n var name = this.getDataParams(dataIndex, dataType).data.name;\n\n if (value) {\n var html = name + ' : ' + value;\n }\n\n return encodeHTML(html);\n }\n\n return SankeySeries.superCall(this, 'formatTooltip', dataIndex, multipleSeries);\n },\n optionUpdated: function () {\n var option = this.option;\n\n if (option.focusNodeAdjacency === true) {\n option.focusNodeAdjacency = 'allEdges';\n }\n },\n // Override Series.getDataParams()\n getDataParams: function (dataIndex, dataType) {\n var params = SankeySeries.superCall(this, 'getDataParams', dataIndex, dataType);\n\n if (params.value == null && dataType === 'node') {\n var node = this.getGraph().getNodeByIndex(dataIndex);\n var nodeValue = node.getLayout().value;\n params.value = nodeValue;\n }\n\n return params;\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n coordinateSystem: 'view',\n layout: null,\n // The position of the whole view\n left: '5%',\n top: '5%',\n right: '20%',\n bottom: '5%',\n // Value can be 'vertical'\n orient: 'horizontal',\n // The dx of the node\n nodeWidth: 20,\n // The vertical distance between two nodes\n nodeGap: 8,\n // Control if the node can move or not\n draggable: true,\n // Value can be 'inEdges', 'outEdges', 'allEdges', true (the same as 'allEdges').\n focusNodeAdjacency: false,\n // The number of iterations to change the position of the node\n layoutIterations: 32,\n label: {\n show: true,\n position: 'right',\n color: '#000',\n fontSize: 12\n },\n levels: [],\n // Value can be 'left' or 'right'\n nodeAlign: 'justify',\n itemStyle: {\n borderWidth: 1,\n borderColor: '#333'\n },\n lineStyle: {\n color: '#314656',\n opacity: 0.2,\n curveness: 0.5\n },\n emphasis: {\n label: {\n show: true\n },\n lineStyle: {\n opacity: 0.5\n }\n },\n animationEasing: 'linear',\n animationDuration: 1000\n }\n});\nvar _default = SankeySeries;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/sankey/SankeySeries.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/sankey/SankeyView.js": +/*!*************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/sankey/SankeyView.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar nodeOpacityPath = ['itemStyle', 'opacity'];\nvar hoverNodeOpacityPath = ['emphasis', 'itemStyle', 'opacity'];\nvar lineOpacityPath = ['lineStyle', 'opacity'];\nvar hoverLineOpacityPath = ['emphasis', 'lineStyle', 'opacity'];\n\nfunction getItemOpacity(item, opacityPath) {\n return item.getVisual('opacity') || item.getModel().get(opacityPath);\n}\n\nfunction fadeOutItem(item, opacityPath, opacityRatio) {\n var el = item.getGraphicEl();\n var opacity = getItemOpacity(item, opacityPath);\n\n if (opacityRatio != null) {\n opacity == null && (opacity = 1);\n opacity *= opacityRatio;\n }\n\n el.downplay && el.downplay();\n el.traverse(function (child) {\n if (child.type !== 'group') {\n child.setStyle('opacity', opacity);\n }\n });\n}\n\nfunction fadeInItem(item, opacityPath) {\n var opacity = getItemOpacity(item, opacityPath);\n var el = item.getGraphicEl();\n el.traverse(function (child) {\n if (child.type !== 'group') {\n child.setStyle('opacity', opacity);\n }\n }); // Support emphasis here.\n\n el.highlight && el.highlight();\n}\n\nvar SankeyShape = graphic.extendShape({\n shape: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n cpx1: 0,\n cpy1: 0,\n cpx2: 0,\n cpy2: 0,\n extent: 0,\n orient: ''\n },\n buildPath: function (ctx, shape) {\n var extent = shape.extent;\n ctx.moveTo(shape.x1, shape.y1);\n ctx.bezierCurveTo(shape.cpx1, shape.cpy1, shape.cpx2, shape.cpy2, shape.x2, shape.y2);\n\n if (shape.orient === 'vertical') {\n ctx.lineTo(shape.x2 + extent, shape.y2);\n ctx.bezierCurveTo(shape.cpx2 + extent, shape.cpy2, shape.cpx1 + extent, shape.cpy1, shape.x1 + extent, shape.y1);\n } else {\n ctx.lineTo(shape.x2, shape.y2 + extent);\n ctx.bezierCurveTo(shape.cpx2, shape.cpy2 + extent, shape.cpx1, shape.cpy1 + extent, shape.x1, shape.y1 + extent);\n }\n\n ctx.closePath();\n },\n highlight: function () {\n this.trigger('emphasis');\n },\n downplay: function () {\n this.trigger('normal');\n }\n});\n\nvar _default = echarts.extendChartView({\n type: 'sankey',\n\n /**\n * @private\n * @type {module:echarts/chart/sankey/SankeySeries}\n */\n _model: null,\n\n /**\n * @private\n * @type {boolean}\n */\n _focusAdjacencyDisabled: false,\n render: function (seriesModel, ecModel, api) {\n var sankeyView = this;\n var graph = seriesModel.getGraph();\n var group = this.group;\n var layoutInfo = seriesModel.layoutInfo; // view width\n\n var width = layoutInfo.width; // view height\n\n var height = layoutInfo.height;\n var nodeData = seriesModel.getData();\n var edgeData = seriesModel.getData('edge');\n var orient = seriesModel.get('orient');\n this._model = seriesModel;\n group.removeAll();\n group.attr('position', [layoutInfo.x, layoutInfo.y]); // generate a bezire Curve for each edge\n\n graph.eachEdge(function (edge) {\n var curve = new SankeyShape();\n curve.dataIndex = edge.dataIndex;\n curve.seriesIndex = seriesModel.seriesIndex;\n curve.dataType = 'edge';\n var lineStyleModel = edge.getModel('lineStyle');\n var curvature = lineStyleModel.get('curveness');\n var n1Layout = edge.node1.getLayout();\n var node1Model = edge.node1.getModel();\n var dragX1 = node1Model.get('localX');\n var dragY1 = node1Model.get('localY');\n var n2Layout = edge.node2.getLayout();\n var node2Model = edge.node2.getModel();\n var dragX2 = node2Model.get('localX');\n var dragY2 = node2Model.get('localY');\n var edgeLayout = edge.getLayout();\n var x1;\n var y1;\n var x2;\n var y2;\n var cpx1;\n var cpy1;\n var cpx2;\n var cpy2;\n curve.shape.extent = Math.max(1, edgeLayout.dy);\n curve.shape.orient = orient;\n\n if (orient === 'vertical') {\n x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + edgeLayout.sy;\n y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + n1Layout.dy;\n x2 = (dragX2 != null ? dragX2 * width : n2Layout.x) + edgeLayout.ty;\n y2 = dragY2 != null ? dragY2 * height : n2Layout.y;\n cpx1 = x1;\n cpy1 = y1 * (1 - curvature) + y2 * curvature;\n cpx2 = x2;\n cpy2 = y1 * curvature + y2 * (1 - curvature);\n } else {\n x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + n1Layout.dx;\n y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + edgeLayout.sy;\n x2 = dragX2 != null ? dragX2 * width : n2Layout.x;\n y2 = (dragY2 != null ? dragY2 * height : n2Layout.y) + edgeLayout.ty;\n cpx1 = x1 * (1 - curvature) + x2 * curvature;\n cpy1 = y1;\n cpx2 = x1 * curvature + x2 * (1 - curvature);\n cpy2 = y2;\n }\n\n curve.setShape({\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n cpx1: cpx1,\n cpy1: cpy1,\n cpx2: cpx2,\n cpy2: cpy2\n });\n curve.setStyle(lineStyleModel.getItemStyle()); // Special color, use source node color or target node color\n\n switch (curve.style.fill) {\n case 'source':\n curve.style.fill = edge.node1.getVisual('color');\n break;\n\n case 'target':\n curve.style.fill = edge.node2.getVisual('color');\n break;\n }\n\n graphic.setHoverStyle(curve, edge.getModel('emphasis.lineStyle').getItemStyle());\n group.add(curve);\n edgeData.setItemGraphicEl(edge.dataIndex, curve);\n }); // Generate a rect for each node\n\n graph.eachNode(function (node) {\n var layout = node.getLayout();\n var itemModel = node.getModel();\n var dragX = itemModel.get('localX');\n var dragY = itemModel.get('localY');\n var labelModel = itemModel.getModel('label');\n var labelHoverModel = itemModel.getModel('emphasis.label');\n var rect = new graphic.Rect({\n shape: {\n x: dragX != null ? dragX * width : layout.x,\n y: dragY != null ? dragY * height : layout.y,\n width: layout.dx,\n height: layout.dy\n },\n style: itemModel.getModel('itemStyle').getItemStyle()\n });\n var hoverStyle = node.getModel('emphasis.itemStyle').getItemStyle();\n graphic.setLabelStyle(rect.style, hoverStyle, labelModel, labelHoverModel, {\n labelFetcher: seriesModel,\n labelDataIndex: node.dataIndex,\n defaultText: node.id,\n isRectText: true\n });\n rect.setStyle('fill', node.getVisual('color'));\n graphic.setHoverStyle(rect, hoverStyle);\n group.add(rect);\n nodeData.setItemGraphicEl(node.dataIndex, rect);\n rect.dataType = 'node';\n });\n nodeData.eachItemGraphicEl(function (el, dataIndex) {\n var itemModel = nodeData.getItemModel(dataIndex);\n\n if (itemModel.get('draggable')) {\n el.drift = function (dx, dy) {\n sankeyView._focusAdjacencyDisabled = true;\n this.shape.x += dx;\n this.shape.y += dy;\n this.dirty();\n api.dispatchAction({\n type: 'dragNode',\n seriesId: seriesModel.id,\n dataIndex: nodeData.getRawIndex(dataIndex),\n localX: this.shape.x / width,\n localY: this.shape.y / height\n });\n };\n\n el.ondragend = function () {\n sankeyView._focusAdjacencyDisabled = false;\n };\n\n el.draggable = true;\n el.cursor = 'move';\n }\n\n el.highlight = function () {\n this.trigger('emphasis');\n };\n\n el.downplay = function () {\n this.trigger('normal');\n };\n\n el.focusNodeAdjHandler && el.off('mouseover', el.focusNodeAdjHandler);\n el.unfocusNodeAdjHandler && el.off('mouseout', el.unfocusNodeAdjHandler);\n\n if (itemModel.get('focusNodeAdjacency')) {\n el.on('mouseover', el.focusNodeAdjHandler = function () {\n if (!sankeyView._focusAdjacencyDisabled) {\n sankeyView._clearTimer();\n\n api.dispatchAction({\n type: 'focusNodeAdjacency',\n seriesId: seriesModel.id,\n dataIndex: el.dataIndex\n });\n }\n });\n el.on('mouseout', el.unfocusNodeAdjHandler = function () {\n if (!sankeyView._focusAdjacencyDisabled) {\n sankeyView._dispatchUnfocus(api);\n }\n });\n }\n });\n edgeData.eachItemGraphicEl(function (el, dataIndex) {\n var edgeModel = edgeData.getItemModel(dataIndex);\n el.focusNodeAdjHandler && el.off('mouseover', el.focusNodeAdjHandler);\n el.unfocusNodeAdjHandler && el.off('mouseout', el.unfocusNodeAdjHandler);\n\n if (edgeModel.get('focusNodeAdjacency')) {\n el.on('mouseover', el.focusNodeAdjHandler = function () {\n if (!sankeyView._focusAdjacencyDisabled) {\n sankeyView._clearTimer();\n\n api.dispatchAction({\n type: 'focusNodeAdjacency',\n seriesId: seriesModel.id,\n edgeDataIndex: el.dataIndex\n });\n }\n });\n el.on('mouseout', el.unfocusNodeAdjHandler = function () {\n if (!sankeyView._focusAdjacencyDisabled) {\n sankeyView._dispatchUnfocus(api);\n }\n });\n }\n });\n\n if (!this._data && seriesModel.get('animation')) {\n group.setClipPath(createGridClipShape(group.getBoundingRect(), seriesModel, function () {\n group.removeClipPath();\n }));\n }\n\n this._data = seriesModel.getData();\n },\n dispose: function () {\n this._clearTimer();\n },\n _dispatchUnfocus: function (api) {\n var self = this;\n\n this._clearTimer();\n\n this._unfocusDelayTimer = setTimeout(function () {\n self._unfocusDelayTimer = null;\n api.dispatchAction({\n type: 'unfocusNodeAdjacency',\n seriesId: self._model.id\n });\n }, 500);\n },\n _clearTimer: function () {\n if (this._unfocusDelayTimer) {\n clearTimeout(this._unfocusDelayTimer);\n this._unfocusDelayTimer = null;\n }\n },\n focusNodeAdjacency: function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var graph = data.graph;\n var dataIndex = payload.dataIndex;\n var itemModel = data.getItemModel(dataIndex);\n var edgeDataIndex = payload.edgeDataIndex;\n\n if (dataIndex == null && edgeDataIndex == null) {\n return;\n }\n\n var node = graph.getNodeByIndex(dataIndex);\n var edge = graph.getEdgeByIndex(edgeDataIndex);\n graph.eachNode(function (node) {\n fadeOutItem(node, nodeOpacityPath, 0.1);\n });\n graph.eachEdge(function (edge) {\n fadeOutItem(edge, lineOpacityPath, 0.1);\n });\n\n if (node) {\n fadeInItem(node, hoverNodeOpacityPath);\n var focusNodeAdj = itemModel.get('focusNodeAdjacency');\n\n if (focusNodeAdj === 'outEdges') {\n zrUtil.each(node.outEdges, function (edge) {\n if (edge.dataIndex < 0) {\n return;\n }\n\n fadeInItem(edge, hoverLineOpacityPath);\n fadeInItem(edge.node2, hoverNodeOpacityPath);\n });\n } else if (focusNodeAdj === 'inEdges') {\n zrUtil.each(node.inEdges, function (edge) {\n if (edge.dataIndex < 0) {\n return;\n }\n\n fadeInItem(edge, hoverLineOpacityPath);\n fadeInItem(edge.node1, hoverNodeOpacityPath);\n });\n } else if (focusNodeAdj === 'allEdges') {\n zrUtil.each(node.edges, function (edge) {\n if (edge.dataIndex < 0) {\n return;\n }\n\n fadeInItem(edge, hoverLineOpacityPath);\n edge.node1 !== node && fadeInItem(edge.node1, hoverNodeOpacityPath);\n edge.node2 !== node && fadeInItem(edge.node2, hoverNodeOpacityPath);\n });\n }\n }\n\n if (edge) {\n fadeInItem(edge, hoverLineOpacityPath);\n fadeInItem(edge.node1, hoverNodeOpacityPath);\n fadeInItem(edge.node2, hoverNodeOpacityPath);\n }\n },\n unfocusNodeAdjacency: function (seriesModel, ecModel, api, payload) {\n var graph = seriesModel.getGraph();\n graph.eachNode(function (node) {\n fadeOutItem(node, nodeOpacityPath);\n });\n graph.eachEdge(function (edge) {\n fadeOutItem(edge, lineOpacityPath);\n });\n }\n}); // Add animation to the view\n\n\nfunction createGridClipShape(rect, seriesModel, cb) {\n var rectEl = new graphic.Rect({\n shape: {\n x: rect.x - 10,\n y: rect.y - 10,\n width: 0,\n height: rect.height + 20\n }\n });\n graphic.initProps(rectEl, {\n shape: {\n width: rect.width + 20\n }\n }, seriesModel, cb);\n return rectEl;\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/sankey/SankeyView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/sankey/sankeyAction.js": +/*!***************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/sankey/sankeyAction.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n__webpack_require__(/*! ../helper/focusNodeAdjacencyAction */ \"./node_modules/echarts/lib/chart/helper/focusNodeAdjacencyAction.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerAction({\n type: 'dragNode',\n event: 'dragnode',\n // here can only use 'update' now, other value is not support in echarts.\n update: 'update'\n}, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'series',\n subType: 'sankey',\n query: payload\n }, function (seriesModel) {\n seriesModel.setNodePosition(payload.dataIndex, [payload.localX, payload.localY]);\n });\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/sankey/sankeyAction.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/sankey/sankeyLayout.js": +/*!***************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/sankey/sankeyLayout.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar layout = __webpack_require__(/*! ../../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar _model = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar groupData = _model.groupData;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel, api, payload) {\n ecModel.eachSeriesByType('sankey', function (seriesModel) {\n var nodeWidth = seriesModel.get('nodeWidth');\n var nodeGap = seriesModel.get('nodeGap');\n var layoutInfo = getViewRect(seriesModel, api);\n seriesModel.layoutInfo = layoutInfo;\n var width = layoutInfo.width;\n var height = layoutInfo.height;\n var graph = seriesModel.getGraph();\n var nodes = graph.nodes;\n var edges = graph.edges;\n computeNodeValues(nodes);\n var filteredNodes = zrUtil.filter(nodes, function (node) {\n return node.getLayout().value === 0;\n });\n var iterations = filteredNodes.length !== 0 ? 0 : seriesModel.get('layoutIterations');\n var orient = seriesModel.get('orient');\n var nodeAlign = seriesModel.get('nodeAlign');\n layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations, orient, nodeAlign);\n });\n}\n/**\n * Get the layout position of the whole view\n *\n * @param {module:echarts/model/Series} seriesModel the model object of sankey series\n * @param {module:echarts/ExtensionAPI} api provide the API list that the developer can call\n * @return {module:zrender/core/BoundingRect} size of rect to draw the sankey view\n */\n\n\nfunction getViewRect(seriesModel, api) {\n return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n}\n\nfunction layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations, orient, nodeAlign) {\n computeNodeBreadths(nodes, edges, nodeWidth, width, height, orient, nodeAlign);\n computeNodeDepths(nodes, edges, height, width, nodeGap, iterations, orient);\n computeEdgeDepths(nodes, orient);\n}\n/**\n * Compute the value of each node by summing the associated edge's value\n *\n * @param {module:echarts/data/Graph~Node} nodes node of sankey view\n */\n\n\nfunction computeNodeValues(nodes) {\n zrUtil.each(nodes, function (node) {\n var value1 = sum(node.outEdges, getEdgeValue);\n var value2 = sum(node.inEdges, getEdgeValue);\n var nodeRawValue = node.getValue() || 0;\n var value = Math.max(value1, value2, nodeRawValue);\n node.setLayout({\n value: value\n }, true);\n });\n}\n/**\n * Compute the x-position for each node.\n *\n * Here we use Kahn algorithm to detect cycle when we traverse\n * the node to computer the initial x position.\n *\n * @param {module:echarts/data/Graph~Node} nodes node of sankey view\n * @param {number} nodeWidth the dx of the node\n * @param {number} width the whole width of the area to draw the view\n */\n\n\nfunction computeNodeBreadths(nodes, edges, nodeWidth, width, height, orient, nodeAlign) {\n // Used to mark whether the edge is deleted. if it is deleted,\n // the value is 0, otherwise it is 1.\n var remainEdges = []; // Storage each node's indegree.\n\n var indegreeArr = []; //Used to storage the node with indegree is equal to 0.\n\n var zeroIndegrees = [];\n var nextTargetNode = [];\n var x = 0;\n var kx = 0;\n\n for (var i = 0; i < edges.length; i++) {\n remainEdges[i] = 1;\n }\n\n for (i = 0; i < nodes.length; i++) {\n indegreeArr[i] = nodes[i].inEdges.length;\n\n if (indegreeArr[i] === 0) {\n zeroIndegrees.push(nodes[i]);\n }\n }\n\n var maxNodeDepth = -1; // Traversing nodes using topological sorting to calculate the\n // horizontal(if orient === 'horizontal') or vertical(if orient === 'vertical')\n // position of the nodes.\n\n while (zeroIndegrees.length) {\n for (var idx = 0; idx < zeroIndegrees.length; idx++) {\n var node = zeroIndegrees[idx];\n var item = node.hostGraph.data.getRawDataItem(node.dataIndex);\n var isItemDepth = item.depth != null && item.depth >= 0;\n\n if (isItemDepth && item.depth > maxNodeDepth) {\n maxNodeDepth = item.depth;\n }\n\n node.setLayout({\n depth: isItemDepth ? item.depth : x\n }, true);\n orient === 'vertical' ? node.setLayout({\n dy: nodeWidth\n }, true) : node.setLayout({\n dx: nodeWidth\n }, true);\n\n for (var edgeIdx = 0; edgeIdx < node.outEdges.length; edgeIdx++) {\n var edge = node.outEdges[edgeIdx];\n var indexEdge = edges.indexOf(edge);\n remainEdges[indexEdge] = 0;\n var targetNode = edge.node2;\n var nodeIndex = nodes.indexOf(targetNode);\n\n if (--indegreeArr[nodeIndex] === 0 && nextTargetNode.indexOf(targetNode) < 0) {\n nextTargetNode.push(targetNode);\n }\n }\n }\n\n ++x;\n zeroIndegrees = nextTargetNode;\n nextTargetNode = [];\n }\n\n for (i = 0; i < remainEdges.length; i++) {\n if (remainEdges[i] === 1) {\n throw new Error('Sankey is a DAG, the original data has cycle!');\n }\n }\n\n var maxDepth = maxNodeDepth > x - 1 ? maxNodeDepth : x - 1;\n\n if (nodeAlign && nodeAlign !== 'left') {\n adjustNodeWithNodeAlign(nodes, nodeAlign, orient, maxDepth);\n }\n\n var kx = orient === 'vertical' ? (height - nodeWidth) / maxDepth : (width - nodeWidth) / maxDepth;\n scaleNodeBreadths(nodes, kx, orient);\n}\n\nfunction isNodeDepth(node) {\n var item = node.hostGraph.data.getRawDataItem(node.dataIndex);\n return item.depth != null && item.depth >= 0;\n}\n\nfunction adjustNodeWithNodeAlign(nodes, nodeAlign, orient, maxDepth) {\n if (nodeAlign === 'right') {\n var nextSourceNode = [];\n var remainNodes = nodes;\n var nodeHeight = 0;\n\n while (remainNodes.length) {\n for (var i = 0; i < remainNodes.length; i++) {\n var node = remainNodes[i];\n node.setLayout({\n skNodeHeight: nodeHeight\n }, true);\n\n for (var j = 0; j < node.inEdges.length; j++) {\n var edge = node.inEdges[j];\n\n if (nextSourceNode.indexOf(edge.node1) < 0) {\n nextSourceNode.push(edge.node1);\n }\n }\n }\n\n remainNodes = nextSourceNode;\n nextSourceNode = [];\n ++nodeHeight;\n }\n\n zrUtil.each(nodes, function (node) {\n if (!isNodeDepth(node)) {\n node.setLayout({\n depth: Math.max(0, maxDepth - node.getLayout().skNodeHeight)\n }, true);\n }\n });\n } else if (nodeAlign === 'justify') {\n moveSinksRight(nodes, maxDepth);\n }\n}\n/**\n * All the node without outEgdes are assigned maximum x-position and\n * be aligned in the last column.\n *\n * @param {module:echarts/data/Graph~Node} nodes. node of sankey view.\n * @param {number} maxDepth. use to assign to node without outEdges as x-position.\n */\n\n\nfunction moveSinksRight(nodes, maxDepth) {\n zrUtil.each(nodes, function (node) {\n if (!isNodeDepth(node) && !node.outEdges.length) {\n node.setLayout({\n depth: maxDepth\n }, true);\n }\n });\n}\n/**\n * Scale node x-position to the width\n *\n * @param {module:echarts/data/Graph~Node} nodes node of sankey view\n * @param {number} kx multiple used to scale nodes\n */\n\n\nfunction scaleNodeBreadths(nodes, kx, orient) {\n zrUtil.each(nodes, function (node) {\n var nodeDepth = node.getLayout().depth * kx;\n orient === 'vertical' ? node.setLayout({\n y: nodeDepth\n }, true) : node.setLayout({\n x: nodeDepth\n }, true);\n });\n}\n/**\n * Using Gauss-Seidel iterations method to compute the node depth(y-position)\n *\n * @param {module:echarts/data/Graph~Node} nodes node of sankey view\n * @param {module:echarts/data/Graph~Edge} edges edge of sankey view\n * @param {number} height the whole height of the area to draw the view\n * @param {number} nodeGap the vertical distance between two nodes\n * in the same column.\n * @param {number} iterations the number of iterations for the algorithm\n */\n\n\nfunction computeNodeDepths(nodes, edges, height, width, nodeGap, iterations, orient) {\n var nodesByBreadth = prepareNodesByBreadth(nodes, orient);\n initializeNodeDepth(nodesByBreadth, edges, height, width, nodeGap, orient);\n resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);\n\n for (var alpha = 1; iterations > 0; iterations--) {\n // 0.99 is a experience parameter, ensure that each iterations of\n // changes as small as possible.\n alpha *= 0.99;\n relaxRightToLeft(nodesByBreadth, alpha, orient);\n resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);\n relaxLeftToRight(nodesByBreadth, alpha, orient);\n resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);\n }\n}\n\nfunction prepareNodesByBreadth(nodes, orient) {\n var nodesByBreadth = [];\n var keyAttr = orient === 'vertical' ? 'y' : 'x';\n var groupResult = groupData(nodes, function (node) {\n return node.getLayout()[keyAttr];\n });\n groupResult.keys.sort(function (a, b) {\n return a - b;\n });\n zrUtil.each(groupResult.keys, function (key) {\n nodesByBreadth.push(groupResult.buckets.get(key));\n });\n return nodesByBreadth;\n}\n/**\n * Compute the original y-position for each node\n *\n * @param {module:echarts/data/Graph~Node} nodes node of sankey view\n * @param {Array.>} nodesByBreadth\n * group by the array of all sankey nodes based on the nodes x-position.\n * @param {module:echarts/data/Graph~Edge} edges edge of sankey view\n * @param {number} height the whole height of the area to draw the view\n * @param {number} nodeGap the vertical distance between two nodes\n */\n\n\nfunction initializeNodeDepth(nodesByBreadth, edges, height, width, nodeGap, orient) {\n var minKy = Infinity;\n zrUtil.each(nodesByBreadth, function (nodes) {\n var n = nodes.length;\n var sum = 0;\n zrUtil.each(nodes, function (node) {\n sum += node.getLayout().value;\n });\n var ky = orient === 'vertical' ? (width - (n - 1) * nodeGap) / sum : (height - (n - 1) * nodeGap) / sum;\n\n if (ky < minKy) {\n minKy = ky;\n }\n });\n zrUtil.each(nodesByBreadth, function (nodes) {\n zrUtil.each(nodes, function (node, i) {\n var nodeDy = node.getLayout().value * minKy;\n\n if (orient === 'vertical') {\n node.setLayout({\n x: i\n }, true);\n node.setLayout({\n dx: nodeDy\n }, true);\n } else {\n node.setLayout({\n y: i\n }, true);\n node.setLayout({\n dy: nodeDy\n }, true);\n }\n });\n });\n zrUtil.each(edges, function (edge) {\n var edgeDy = +edge.getValue() * minKy;\n edge.setLayout({\n dy: edgeDy\n }, true);\n });\n}\n/**\n * Resolve the collision of initialized depth (y-position)\n *\n * @param {Array.>} nodesByBreadth\n * group by the array of all sankey nodes based on the nodes x-position.\n * @param {number} nodeGap the vertical distance between two nodes\n * @param {number} height the whole height of the area to draw the view\n */\n\n\nfunction resolveCollisions(nodesByBreadth, nodeGap, height, width, orient) {\n var keyAttr = orient === 'vertical' ? 'x' : 'y';\n zrUtil.each(nodesByBreadth, function (nodes) {\n nodes.sort(function (a, b) {\n return a.getLayout()[keyAttr] - b.getLayout()[keyAttr];\n });\n var nodeX;\n var node;\n var dy;\n var y0 = 0;\n var n = nodes.length;\n var nodeDyAttr = orient === 'vertical' ? 'dx' : 'dy';\n\n for (var i = 0; i < n; i++) {\n node = nodes[i];\n dy = y0 - node.getLayout()[keyAttr];\n\n if (dy > 0) {\n nodeX = node.getLayout()[keyAttr] + dy;\n orient === 'vertical' ? node.setLayout({\n x: nodeX\n }, true) : node.setLayout({\n y: nodeX\n }, true);\n }\n\n y0 = node.getLayout()[keyAttr] + node.getLayout()[nodeDyAttr] + nodeGap;\n }\n\n var viewWidth = orient === 'vertical' ? width : height; // If the bottommost node goes outside the bounds, push it back up\n\n dy = y0 - nodeGap - viewWidth;\n\n if (dy > 0) {\n nodeX = node.getLayout()[keyAttr] - dy;\n orient === 'vertical' ? node.setLayout({\n x: nodeX\n }, true) : node.setLayout({\n y: nodeX\n }, true);\n y0 = nodeX;\n\n for (i = n - 2; i >= 0; --i) {\n node = nodes[i];\n dy = node.getLayout()[keyAttr] + node.getLayout()[nodeDyAttr] + nodeGap - y0;\n\n if (dy > 0) {\n nodeX = node.getLayout()[keyAttr] - dy;\n orient === 'vertical' ? node.setLayout({\n x: nodeX\n }, true) : node.setLayout({\n y: nodeX\n }, true);\n }\n\n y0 = node.getLayout()[keyAttr];\n }\n }\n });\n}\n/**\n * Change the y-position of the nodes, except most the right side nodes\n *\n * @param {Array.>} nodesByBreadth\n * group by the array of all sankey nodes based on the node x-position.\n * @param {number} alpha parameter used to adjust the nodes y-position\n */\n\n\nfunction relaxRightToLeft(nodesByBreadth, alpha, orient) {\n zrUtil.each(nodesByBreadth.slice().reverse(), function (nodes) {\n zrUtil.each(nodes, function (node) {\n if (node.outEdges.length) {\n var y = sum(node.outEdges, weightedTarget, orient) / sum(node.outEdges, getEdgeValue, orient);\n\n if (isNaN(y)) {\n var len = node.outEdges.length;\n y = len ? sum(node.outEdges, centerTarget, orient) / len : 0;\n }\n\n if (orient === 'vertical') {\n var nodeX = node.getLayout().x + (y - center(node, orient)) * alpha;\n node.setLayout({\n x: nodeX\n }, true);\n } else {\n var nodeY = node.getLayout().y + (y - center(node, orient)) * alpha;\n node.setLayout({\n y: nodeY\n }, true);\n }\n }\n });\n });\n}\n\nfunction weightedTarget(edge, orient) {\n return center(edge.node2, orient) * edge.getValue();\n}\n\nfunction centerTarget(edge, orient) {\n return center(edge.node2, orient);\n}\n\nfunction weightedSource(edge, orient) {\n return center(edge.node1, orient) * edge.getValue();\n}\n\nfunction centerSource(edge, orient) {\n return center(edge.node1, orient);\n}\n\nfunction center(node, orient) {\n return orient === 'vertical' ? node.getLayout().x + node.getLayout().dx / 2 : node.getLayout().y + node.getLayout().dy / 2;\n}\n\nfunction getEdgeValue(edge) {\n return edge.getValue();\n}\n\nfunction sum(array, cb, orient) {\n var sum = 0;\n var len = array.length;\n var i = -1;\n\n while (++i < len) {\n var value = +cb.call(array, array[i], orient);\n\n if (!isNaN(value)) {\n sum += value;\n }\n }\n\n return sum;\n}\n/**\n * Change the y-position of the nodes, except most the left side nodes\n *\n * @param {Array.>} nodesByBreadth\n * group by the array of all sankey nodes based on the node x-position.\n * @param {number} alpha parameter used to adjust the nodes y-position\n */\n\n\nfunction relaxLeftToRight(nodesByBreadth, alpha, orient) {\n zrUtil.each(nodesByBreadth, function (nodes) {\n zrUtil.each(nodes, function (node) {\n if (node.inEdges.length) {\n var y = sum(node.inEdges, weightedSource, orient) / sum(node.inEdges, getEdgeValue, orient);\n\n if (isNaN(y)) {\n var len = node.inEdges.length;\n y = len ? sum(node.inEdges, centerSource, orient) / len : 0;\n }\n\n if (orient === 'vertical') {\n var nodeX = node.getLayout().x + (y - center(node, orient)) * alpha;\n node.setLayout({\n x: nodeX\n }, true);\n } else {\n var nodeY = node.getLayout().y + (y - center(node, orient)) * alpha;\n node.setLayout({\n y: nodeY\n }, true);\n }\n }\n });\n });\n}\n/**\n * Compute the depth(y-position) of each edge\n *\n * @param {module:echarts/data/Graph~Node} nodes node of sankey view\n */\n\n\nfunction computeEdgeDepths(nodes, orient) {\n var keyAttr = orient === 'vertical' ? 'x' : 'y';\n zrUtil.each(nodes, function (node) {\n node.outEdges.sort(function (a, b) {\n return a.node2.getLayout()[keyAttr] - b.node2.getLayout()[keyAttr];\n });\n node.inEdges.sort(function (a, b) {\n return a.node1.getLayout()[keyAttr] - b.node1.getLayout()[keyAttr];\n });\n });\n zrUtil.each(nodes, function (node) {\n var sy = 0;\n var ty = 0;\n zrUtil.each(node.outEdges, function (edge) {\n edge.setLayout({\n sy: sy\n }, true);\n sy += edge.getLayout().dy;\n });\n zrUtil.each(node.inEdges, function (edge) {\n edge.setLayout({\n ty: ty\n }, true);\n ty += edge.getLayout().dy;\n });\n });\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/sankey/sankeyLayout.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/sankey/sankeyVisual.js": +/*!***************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/sankey/sankeyVisual.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar VisualMapping = __webpack_require__(/*! ../../visual/VisualMapping */ \"./node_modules/echarts/lib/visual/VisualMapping.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel, payload) {\n ecModel.eachSeriesByType('sankey', function (seriesModel) {\n var graph = seriesModel.getGraph();\n var nodes = graph.nodes;\n\n if (nodes.length) {\n var minValue = Infinity;\n var maxValue = -Infinity;\n zrUtil.each(nodes, function (node) {\n var nodeValue = node.getLayout().value;\n\n if (nodeValue < minValue) {\n minValue = nodeValue;\n }\n\n if (nodeValue > maxValue) {\n maxValue = nodeValue;\n }\n });\n zrUtil.each(nodes, function (node) {\n var mapping = new VisualMapping({\n type: 'color',\n mappingMethod: 'linear',\n dataExtent: [minValue, maxValue],\n visual: seriesModel.get('color')\n });\n var mapValueToColor = mapping.mapValueToVisual(node.getLayout().value);\n var customColor = node.getModel().get('itemStyle.color');\n customColor != null ? node.setVisual('color', customColor) : node.setVisual('color', mapValueToColor);\n });\n }\n });\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/sankey/sankeyVisual.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/scatter.js": +/*!***************************************************!*\ + !*** ./node_modules/echarts/lib/chart/scatter.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n__webpack_require__(/*! ./scatter/ScatterSeries */ \"./node_modules/echarts/lib/chart/scatter/ScatterSeries.js\");\n\n__webpack_require__(/*! ./scatter/ScatterView */ \"./node_modules/echarts/lib/chart/scatter/ScatterView.js\");\n\nvar visualSymbol = __webpack_require__(/*! ../visual/symbol */ \"./node_modules/echarts/lib/visual/symbol.js\");\n\nvar layoutPoints = __webpack_require__(/*! ../layout/points */ \"./node_modules/echarts/lib/layout/points.js\");\n\n__webpack_require__(/*! ../component/gridSimple */ \"./node_modules/echarts/lib/component/gridSimple.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// import * as zrUtil from 'zrender/src/core/util';\n// In case developer forget to include grid component\necharts.registerVisual(visualSymbol('scatter', 'circle'));\necharts.registerLayout(layoutPoints('scatter')); // echarts.registerProcessor(function (ecModel, api) {\n// ecModel.eachSeriesByType('scatter', function (seriesModel) {\n// var data = seriesModel.getData();\n// var coordSys = seriesModel.coordinateSystem;\n// if (coordSys.type !== 'geo') {\n// return;\n// }\n// var startPt = coordSys.pointToData([0, 0]);\n// var endPt = coordSys.pointToData([api.getWidth(), api.getHeight()]);\n// var dims = zrUtil.map(coordSys.dimensions, function (dim) {\n// return data.mapDimension(dim);\n// });\n// var range = {};\n// range[dims[0]] = [Math.min(startPt[0], endPt[0]), Math.max(startPt[0], endPt[0])];\n// range[dims[1]] = [Math.min(startPt[1], endPt[1]), Math.max(startPt[1], endPt[1])];\n// data.selectRange(range);\n// });\n// });\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/scatter.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/scatter/ScatterSeries.js": +/*!*****************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/scatter/ScatterSeries.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar createListFromArray = __webpack_require__(/*! ../helper/createListFromArray */ \"./node_modules/echarts/lib/chart/helper/createListFromArray.js\");\n\nvar SeriesModel = __webpack_require__(/*! ../../model/Series */ \"./node_modules/echarts/lib/model/Series.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n type: 'series.scatter',\n dependencies: ['grid', 'polar', 'geo', 'singleAxis', 'calendar'],\n getInitialData: function (option, ecModel) {\n return createListFromArray(this.getSource(), this, {\n useEncodeDefaulter: true\n });\n },\n brushSelector: 'point',\n getProgressive: function () {\n var progressive = this.option.progressive;\n\n if (progressive == null) {\n // PENDING\n return this.option.large ? 5e3 : this.get('progressive');\n }\n\n return progressive;\n },\n getProgressiveThreshold: function () {\n var progressiveThreshold = this.option.progressiveThreshold;\n\n if (progressiveThreshold == null) {\n // PENDING\n return this.option.large ? 1e4 : this.get('progressiveThreshold');\n }\n\n return progressiveThreshold;\n },\n defaultOption: {\n coordinateSystem: 'cartesian2d',\n zlevel: 0,\n z: 2,\n legendHoverLink: true,\n hoverAnimation: true,\n // Cartesian coordinate system\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // Polar coordinate system\n // polarIndex: 0,\n // Geo coordinate system\n // geoIndex: 0,\n // symbol: null, // 图形类型\n symbolSize: 10,\n // 图形大小,半宽(半径)参数,当图形为方向或菱形则总宽度为symbolSize * 2\n // symbolRotate: null, // 图形旋转控制\n large: false,\n // Available when large is true\n largeThreshold: 2000,\n // cursor: null,\n // label: {\n // show: false\n // distance: 5,\n // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调\n // position: 默认自适应,水平布局为'top',垂直布局为'right',可选为\n // 'inside'|'left'|'right'|'top'|'bottom'\n // 默认使用全局文本样式,详见TEXTSTYLE\n // },\n itemStyle: {\n opacity: 0.8 // color: 各异\n\n },\n // If clip the overflow graphics\n // Works on cartesian / polar series\n clip: true // progressive: null\n\n }\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/scatter/ScatterSeries.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/scatter/ScatterView.js": +/*!***************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/scatter/ScatterView.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar SymbolDraw = __webpack_require__(/*! ../helper/SymbolDraw */ \"./node_modules/echarts/lib/chart/helper/SymbolDraw.js\");\n\nvar LargeSymbolDraw = __webpack_require__(/*! ../helper/LargeSymbolDraw */ \"./node_modules/echarts/lib/chart/helper/LargeSymbolDraw.js\");\n\nvar pointsLayout = __webpack_require__(/*! ../../layout/points */ \"./node_modules/echarts/lib/layout/points.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.extendChartView({\n type: 'scatter',\n render: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n\n var symbolDraw = this._updateSymbolDraw(data, seriesModel);\n\n symbolDraw.updateData(data, {\n // TODO\n // If this parameter should be a shape or a bounding volume\n // shape will be more general.\n // But bounding volume like bounding rect will be much faster in the contain calculation\n clipShape: this._getClipShape(seriesModel)\n });\n this._finished = true;\n },\n incrementalPrepareRender: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n\n var symbolDraw = this._updateSymbolDraw(data, seriesModel);\n\n symbolDraw.incrementalPrepareUpdate(data);\n this._finished = false;\n },\n incrementalRender: function (taskParams, seriesModel, ecModel) {\n this._symbolDraw.incrementalUpdate(taskParams, seriesModel.getData(), {\n clipShape: this._getClipShape(seriesModel)\n });\n\n this._finished = taskParams.end === seriesModel.getData().count();\n },\n updateTransform: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData(); // Must mark group dirty and make sure the incremental layer will be cleared\n // PENDING\n\n this.group.dirty();\n\n if (!this._finished || data.count() > 1e4 || !this._symbolDraw.isPersistent()) {\n return {\n update: true\n };\n } else {\n var res = pointsLayout().reset(seriesModel);\n\n if (res.progress) {\n res.progress({\n start: 0,\n end: data.count()\n }, data);\n }\n\n this._symbolDraw.updateLayout(data);\n }\n },\n _getClipShape: function (seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n var clipArea = coordSys && coordSys.getArea && coordSys.getArea();\n return seriesModel.get('clip', true) ? clipArea : null;\n },\n _updateSymbolDraw: function (data, seriesModel) {\n var symbolDraw = this._symbolDraw;\n var pipelineContext = seriesModel.pipelineContext;\n var isLargeDraw = pipelineContext.large;\n\n if (!symbolDraw || isLargeDraw !== this._isLargeDraw) {\n symbolDraw && symbolDraw.remove();\n symbolDraw = this._symbolDraw = isLargeDraw ? new LargeSymbolDraw() : new SymbolDraw();\n this._isLargeDraw = isLargeDraw;\n this.group.removeAll();\n }\n\n this.group.add(symbolDraw.group);\n return symbolDraw;\n },\n remove: function (ecModel, api) {\n this._symbolDraw && this._symbolDraw.remove(true);\n this._symbolDraw = null;\n },\n dispose: function () {}\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/scatter/ScatterView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/sunburst.js": +/*!****************************************************!*\ + !*** ./node_modules/echarts/lib/chart/sunburst.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n__webpack_require__(/*! ./sunburst/SunburstSeries */ \"./node_modules/echarts/lib/chart/sunburst/SunburstSeries.js\");\n\n__webpack_require__(/*! ./sunburst/SunburstView */ \"./node_modules/echarts/lib/chart/sunburst/SunburstView.js\");\n\n__webpack_require__(/*! ./sunburst/sunburstAction */ \"./node_modules/echarts/lib/chart/sunburst/sunburstAction.js\");\n\nvar dataColor = __webpack_require__(/*! ../visual/dataColor */ \"./node_modules/echarts/lib/visual/dataColor.js\");\n\nvar sunburstLayout = __webpack_require__(/*! ./sunburst/sunburstLayout */ \"./node_modules/echarts/lib/chart/sunburst/sunburstLayout.js\");\n\nvar dataFilter = __webpack_require__(/*! ../processor/dataFilter */ \"./node_modules/echarts/lib/processor/dataFilter.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerVisual(zrUtil.curry(dataColor, 'sunburst'));\necharts.registerLayout(zrUtil.curry(sunburstLayout, 'sunburst'));\necharts.registerProcessor(zrUtil.curry(dataFilter, 'sunburst'));\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/sunburst.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/sunburst/SunburstPiece.js": +/*!******************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/sunburst/SunburstPiece.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar NodeHighlightPolicy = {\n NONE: 'none',\n // not downplay others\n DESCENDANT: 'descendant',\n ANCESTOR: 'ancestor',\n SELF: 'self'\n};\nvar DEFAULT_SECTOR_Z = 2;\nvar DEFAULT_TEXT_Z = 4;\n/**\n * Sunburstce of Sunburst including Sector, Label, LabelLine\n * @constructor\n * @extends {module:zrender/graphic/Group}\n */\n\nfunction SunburstPiece(node, seriesModel, ecModel) {\n graphic.Group.call(this);\n var sector = new graphic.Sector({\n z2: DEFAULT_SECTOR_Z\n });\n sector.seriesIndex = seriesModel.seriesIndex;\n var text = new graphic.Text({\n z2: DEFAULT_TEXT_Z,\n silent: node.getModel('label').get('silent')\n });\n this.add(sector);\n this.add(text);\n this.updateData(true, node, 'normal', seriesModel, ecModel); // Hover to change label and labelLine\n\n function onEmphasis() {\n text.ignore = text.hoverIgnore;\n }\n\n function onNormal() {\n text.ignore = text.normalIgnore;\n }\n\n this.on('emphasis', onEmphasis).on('normal', onNormal).on('mouseover', onEmphasis).on('mouseout', onNormal);\n}\n\nvar SunburstPieceProto = SunburstPiece.prototype;\n\nSunburstPieceProto.updateData = function (firstCreate, node, state, seriesModel, ecModel) {\n this.node = node;\n node.piece = this;\n seriesModel = seriesModel || this._seriesModel;\n ecModel = ecModel || this._ecModel;\n var sector = this.childAt(0);\n sector.dataIndex = node.dataIndex;\n var itemModel = node.getModel();\n var layout = node.getLayout(); // if (!layout) {\n // console.log(node.getLayout());\n // }\n\n var sectorShape = zrUtil.extend({}, layout);\n sectorShape.label = null;\n var visualColor = getNodeColor(node, seriesModel, ecModel);\n fillDefaultColor(node, seriesModel, visualColor);\n var normalStyle = itemModel.getModel('itemStyle').getItemStyle();\n var style;\n\n if (state === 'normal') {\n style = normalStyle;\n } else {\n var stateStyle = itemModel.getModel(state + '.itemStyle').getItemStyle();\n style = zrUtil.merge(stateStyle, normalStyle);\n }\n\n style = zrUtil.defaults({\n lineJoin: 'bevel',\n fill: style.fill || visualColor\n }, style);\n\n if (firstCreate) {\n sector.setShape(sectorShape);\n sector.shape.r = layout.r0;\n graphic.updateProps(sector, {\n shape: {\n r: layout.r\n }\n }, seriesModel, node.dataIndex);\n sector.useStyle(style);\n } else if (typeof style.fill === 'object' && style.fill.type || typeof sector.style.fill === 'object' && sector.style.fill.type) {\n // Disable animation for gradient since no interpolation method\n // is supported for gradient\n graphic.updateProps(sector, {\n shape: sectorShape\n }, seriesModel);\n sector.useStyle(style);\n } else {\n graphic.updateProps(sector, {\n shape: sectorShape,\n style: style\n }, seriesModel);\n }\n\n this._updateLabel(seriesModel, visualColor, state);\n\n var cursorStyle = itemModel.getShallow('cursor');\n cursorStyle && sector.attr('cursor', cursorStyle);\n\n if (firstCreate) {\n var highlightPolicy = seriesModel.getShallow('highlightPolicy');\n\n this._initEvents(sector, node, seriesModel, highlightPolicy);\n }\n\n this._seriesModel = seriesModel || this._seriesModel;\n this._ecModel = ecModel || this._ecModel;\n graphic.setHoverStyle(this);\n};\n\nSunburstPieceProto.onEmphasis = function (highlightPolicy) {\n var that = this;\n this.node.hostTree.root.eachNode(function (n) {\n if (n.piece) {\n if (that.node === n) {\n n.piece.updateData(false, n, 'emphasis');\n } else if (isNodeHighlighted(n, that.node, highlightPolicy)) {\n n.piece.childAt(0).trigger('highlight');\n } else if (highlightPolicy !== NodeHighlightPolicy.NONE) {\n n.piece.childAt(0).trigger('downplay');\n }\n }\n });\n};\n\nSunburstPieceProto.onNormal = function () {\n this.node.hostTree.root.eachNode(function (n) {\n if (n.piece) {\n n.piece.updateData(false, n, 'normal');\n }\n });\n};\n\nSunburstPieceProto.onHighlight = function () {\n this.updateData(false, this.node, 'highlight');\n};\n\nSunburstPieceProto.onDownplay = function () {\n this.updateData(false, this.node, 'downplay');\n};\n\nSunburstPieceProto._updateLabel = function (seriesModel, visualColor, state) {\n var itemModel = this.node.getModel();\n var normalModel = itemModel.getModel('label');\n var labelModel = state === 'normal' || state === 'emphasis' ? normalModel : itemModel.getModel(state + '.label');\n var labelHoverModel = itemModel.getModel('emphasis.label');\n var labelFormatter = labelModel.get('formatter'); // Use normal formatter if no state formatter is defined\n\n var labelState = labelFormatter ? state : 'normal';\n var text = zrUtil.retrieve(seriesModel.getFormattedLabel(this.node.dataIndex, labelState, null, null, 'label'), this.node.name);\n\n if (getLabelAttr('show') === false) {\n text = '';\n }\n\n var layout = this.node.getLayout();\n var labelMinAngle = labelModel.get('minAngle');\n\n if (labelMinAngle == null) {\n labelMinAngle = normalModel.get('minAngle');\n }\n\n labelMinAngle = labelMinAngle / 180 * Math.PI;\n var angle = layout.endAngle - layout.startAngle;\n\n if (labelMinAngle != null && Math.abs(angle) < labelMinAngle) {\n // Not displaying text when angle is too small\n text = '';\n }\n\n var label = this.childAt(1);\n graphic.setLabelStyle(label.style, label.hoverStyle || {}, normalModel, labelHoverModel, {\n defaultText: labelModel.getShallow('show') ? text : null,\n autoColor: visualColor,\n useInsideStyle: true\n });\n var midAngle = (layout.startAngle + layout.endAngle) / 2;\n var dx = Math.cos(midAngle);\n var dy = Math.sin(midAngle);\n var r;\n var labelPosition = getLabelAttr('position');\n var labelPadding = getLabelAttr('distance') || 0;\n var textAlign = getLabelAttr('align');\n\n if (labelPosition === 'outside') {\n r = layout.r + labelPadding;\n textAlign = midAngle > Math.PI / 2 ? 'right' : 'left';\n } else {\n if (!textAlign || textAlign === 'center') {\n r = (layout.r + layout.r0) / 2;\n textAlign = 'center';\n } else if (textAlign === 'left') {\n r = layout.r0 + labelPadding;\n\n if (midAngle > Math.PI / 2) {\n textAlign = 'right';\n }\n } else if (textAlign === 'right') {\n r = layout.r - labelPadding;\n\n if (midAngle > Math.PI / 2) {\n textAlign = 'left';\n }\n }\n }\n\n label.attr('style', {\n text: text,\n textAlign: textAlign,\n textVerticalAlign: getLabelAttr('verticalAlign') || 'middle',\n opacity: getLabelAttr('opacity')\n });\n var textX = r * dx + layout.cx;\n var textY = r * dy + layout.cy;\n label.attr('position', [textX, textY]);\n var rotateType = getLabelAttr('rotate');\n var rotate = 0;\n\n if (rotateType === 'radial') {\n rotate = -midAngle;\n\n if (rotate < -Math.PI / 2) {\n rotate += Math.PI;\n }\n } else if (rotateType === 'tangential') {\n rotate = Math.PI / 2 - midAngle;\n\n if (rotate > Math.PI / 2) {\n rotate -= Math.PI;\n } else if (rotate < -Math.PI / 2) {\n rotate += Math.PI;\n }\n } else if (typeof rotateType === 'number') {\n rotate = rotateType * Math.PI / 180;\n }\n\n label.attr('rotation', rotate);\n\n function getLabelAttr(name) {\n var stateAttr = labelModel.get(name);\n\n if (stateAttr == null) {\n return normalModel.get(name);\n } else {\n return stateAttr;\n }\n }\n};\n\nSunburstPieceProto._initEvents = function (sector, node, seriesModel, highlightPolicy) {\n sector.off('mouseover').off('mouseout').off('emphasis').off('normal');\n var that = this;\n\n var onEmphasis = function () {\n that.onEmphasis(highlightPolicy);\n };\n\n var onNormal = function () {\n that.onNormal();\n };\n\n var onDownplay = function () {\n that.onDownplay();\n };\n\n var onHighlight = function () {\n that.onHighlight();\n };\n\n if (seriesModel.isAnimationEnabled()) {\n sector.on('mouseover', onEmphasis).on('mouseout', onNormal).on('emphasis', onEmphasis).on('normal', onNormal).on('downplay', onDownplay).on('highlight', onHighlight);\n }\n};\n\nzrUtil.inherits(SunburstPiece, graphic.Group);\nvar _default = SunburstPiece;\n/**\n * Get node color\n *\n * @param {TreeNode} node the node to get color\n * @param {module:echarts/model/Series} seriesModel series\n * @param {module:echarts/model/Global} ecModel echarts defaults\n */\n\nfunction getNodeColor(node, seriesModel, ecModel) {\n // Color from visualMap\n var visualColor = node.getVisual('color');\n var visualMetaList = node.getVisual('visualMeta');\n\n if (!visualMetaList || visualMetaList.length === 0) {\n // Use first-generation color if has no visualMap\n visualColor = null;\n } // Self color or level color\n\n\n var color = node.getModel('itemStyle').get('color');\n\n if (color) {\n return color;\n } else if (visualColor) {\n // Color mapping\n return visualColor;\n } else if (node.depth === 0) {\n // Virtual root node\n return ecModel.option.color[0];\n } else {\n // First-generation color\n var length = ecModel.option.color.length;\n color = ecModel.option.color[getRootId(node) % length];\n }\n\n return color;\n}\n/**\n * Get index of root in sorted order\n *\n * @param {TreeNode} node current node\n * @return {number} index in root\n */\n\n\nfunction getRootId(node) {\n var ancestor = node;\n\n while (ancestor.depth > 1) {\n ancestor = ancestor.parentNode;\n }\n\n var virtualRoot = node.getAncestors()[0];\n return zrUtil.indexOf(virtualRoot.children, ancestor);\n}\n\nfunction isNodeHighlighted(node, activeNode, policy) {\n if (policy === NodeHighlightPolicy.NONE) {\n return false;\n } else if (policy === NodeHighlightPolicy.SELF) {\n return node === activeNode;\n } else if (policy === NodeHighlightPolicy.ANCESTOR) {\n return node === activeNode || node.isAncestorOf(activeNode);\n } else {\n return node === activeNode || node.isDescendantOf(activeNode);\n }\n} // Fix tooltip callback function params.color incorrect when pick a default color\n\n\nfunction fillDefaultColor(node, seriesModel, color) {\n var data = seriesModel.getData();\n data.setItemVisual(node.dataIndex, 'color', color);\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/sunburst/SunburstPiece.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/sunburst/SunburstSeries.js": +/*!*******************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/sunburst/SunburstSeries.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar SeriesModel = __webpack_require__(/*! ../../model/Series */ \"./node_modules/echarts/lib/model/Series.js\");\n\nvar Tree = __webpack_require__(/*! ../../data/Tree */ \"./node_modules/echarts/lib/data/Tree.js\");\n\nvar Model = __webpack_require__(/*! ../../model/Model */ \"./node_modules/echarts/lib/model/Model.js\");\n\nvar _treeHelper = __webpack_require__(/*! ../helper/treeHelper */ \"./node_modules/echarts/lib/chart/helper/treeHelper.js\");\n\nvar wrapTreePathInfo = _treeHelper.wrapTreePathInfo;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n type: 'series.sunburst',\n\n /**\n * @type {module:echarts/data/Tree~Node}\n */\n _viewRoot: null,\n getInitialData: function (option, ecModel) {\n // Create a virtual root.\n var root = {\n name: option.name,\n children: option.data\n };\n completeTreeValue(root);\n var levelModels = zrUtil.map(option.levels || [], function (levelDefine) {\n return new Model(levelDefine, this, ecModel);\n }, this); // Make sure always a new tree is created when setOption,\n // in TreemapView, we check whether oldTree === newTree\n // to choose mappings approach among old shapes and new shapes.\n\n var tree = Tree.createTree(root, this, beforeLink);\n\n function beforeLink(nodeData) {\n nodeData.wrapMethod('getItemModel', function (model, idx) {\n var node = tree.getNodeByDataIndex(idx);\n var levelModel = levelModels[node.depth];\n levelModel && (model.parentModel = levelModel);\n return model;\n });\n }\n\n return tree.data;\n },\n optionUpdated: function () {\n this.resetViewRoot();\n },\n\n /*\n * @override\n */\n getDataParams: function (dataIndex) {\n var params = SeriesModel.prototype.getDataParams.apply(this, arguments);\n var node = this.getData().tree.getNodeByDataIndex(dataIndex);\n params.treePathInfo = wrapTreePathInfo(node, this);\n return params;\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n // 默认全局居中\n center: ['50%', '50%'],\n radius: [0, '75%'],\n // 默认顺时针\n clockwise: true,\n startAngle: 90,\n // 最小角度改为0\n minAngle: 0,\n percentPrecision: 2,\n // If still show when all data zero.\n stillShowZeroSum: true,\n // Policy of highlighting pieces when hover on one\n // Valid values: 'none' (for not downplay others), 'descendant',\n // 'ancestor', 'self'\n highlightPolicy: 'descendant',\n // 'rootToNode', 'link', or false\n nodeClick: 'rootToNode',\n renderLabelForZeroData: false,\n label: {\n // could be: 'radial', 'tangential', or 'none'\n rotate: 'radial',\n show: true,\n opacity: 1,\n // 'left' is for inner side of inside, and 'right' is for outter\n // side for inside\n align: 'center',\n position: 'inside',\n distance: 5,\n silent: true\n },\n itemStyle: {\n borderWidth: 1,\n borderColor: 'white',\n borderType: 'solid',\n shadowBlur: 0,\n shadowColor: 'rgba(0, 0, 0, 0.2)',\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n opacity: 1\n },\n highlight: {\n itemStyle: {\n opacity: 1\n }\n },\n downplay: {\n itemStyle: {\n opacity: 0.5\n },\n label: {\n opacity: 0.6\n }\n },\n // Animation type canbe expansion, scale\n animationType: 'expansion',\n animationDuration: 1000,\n animationDurationUpdate: 500,\n animationEasing: 'cubicOut',\n data: [],\n levels: [],\n\n /**\n * Sort order.\n *\n * Valid values: 'desc', 'asc', null, or callback function.\n * 'desc' and 'asc' for descend and ascendant order;\n * null for not sorting;\n * example of callback function:\n * function(nodeA, nodeB) {\n * return nodeA.getValue() - nodeB.getValue();\n * }\n */\n sort: 'desc'\n },\n getViewRoot: function () {\n return this._viewRoot;\n },\n\n /**\n * @param {module:echarts/data/Tree~Node} [viewRoot]\n */\n resetViewRoot: function (viewRoot) {\n viewRoot ? this._viewRoot = viewRoot : viewRoot = this._viewRoot;\n var root = this.getRawData().tree.root;\n\n if (!viewRoot || viewRoot !== root && !root.contains(viewRoot)) {\n this._viewRoot = root;\n }\n }\n});\n/**\n * @param {Object} dataNode\n */\n\n\nfunction completeTreeValue(dataNode) {\n // Postorder travel tree.\n // If value of none-leaf node is not set,\n // calculate it by suming up the value of all children.\n var sum = 0;\n zrUtil.each(dataNode.children, function (child) {\n completeTreeValue(child);\n var childValue = child.value;\n zrUtil.isArray(childValue) && (childValue = childValue[0]);\n sum += childValue;\n });\n var thisValue = dataNode.value;\n\n if (zrUtil.isArray(thisValue)) {\n thisValue = thisValue[0];\n }\n\n if (thisValue == null || isNaN(thisValue)) {\n thisValue = sum;\n } // Value should not less than 0.\n\n\n if (thisValue < 0) {\n thisValue = 0;\n }\n\n zrUtil.isArray(dataNode.value) ? dataNode.value[0] = thisValue : dataNode.value = thisValue;\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/sunburst/SunburstSeries.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/sunburst/SunburstView.js": +/*!*****************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/sunburst/SunburstView.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar ChartView = __webpack_require__(/*! ../../view/Chart */ \"./node_modules/echarts/lib/view/Chart.js\");\n\nvar SunburstPiece = __webpack_require__(/*! ./SunburstPiece */ \"./node_modules/echarts/lib/chart/sunburst/SunburstPiece.js\");\n\nvar DataDiffer = __webpack_require__(/*! ../../data/DataDiffer */ \"./node_modules/echarts/lib/data/DataDiffer.js\");\n\nvar _format = __webpack_require__(/*! ../../util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\nvar windowOpen = _format.windowOpen;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar ROOT_TO_NODE_ACTION = 'sunburstRootToNode';\nvar SunburstView = ChartView.extend({\n type: 'sunburst',\n init: function () {},\n render: function (seriesModel, ecModel, api, payload) {\n var that = this;\n this.seriesModel = seriesModel;\n this.api = api;\n this.ecModel = ecModel;\n var data = seriesModel.getData();\n var virtualRoot = data.tree.root;\n var newRoot = seriesModel.getViewRoot();\n var group = this.group;\n var renderLabelForZeroData = seriesModel.get('renderLabelForZeroData');\n var newChildren = [];\n newRoot.eachNode(function (node) {\n newChildren.push(node);\n });\n var oldChildren = this._oldChildren || [];\n dualTravel(newChildren, oldChildren);\n renderRollUp(virtualRoot, newRoot);\n\n if (payload && payload.highlight && payload.highlight.piece) {\n var highlightPolicy = seriesModel.getShallow('highlightPolicy');\n payload.highlight.piece.onEmphasis(highlightPolicy);\n } else if (payload && payload.unhighlight) {\n var piece = this.virtualPiece;\n\n if (!piece && virtualRoot.children.length) {\n piece = virtualRoot.children[0].piece;\n }\n\n if (piece) {\n piece.onNormal();\n }\n }\n\n this._initEvents();\n\n this._oldChildren = newChildren;\n\n function dualTravel(newChildren, oldChildren) {\n if (newChildren.length === 0 && oldChildren.length === 0) {\n return;\n }\n\n new DataDiffer(oldChildren, newChildren, getKey, getKey).add(processNode).update(processNode).remove(zrUtil.curry(processNode, null)).execute();\n\n function getKey(node) {\n return node.getId();\n }\n\n function processNode(newId, oldId) {\n var newNode = newId == null ? null : newChildren[newId];\n var oldNode = oldId == null ? null : oldChildren[oldId];\n doRenderNode(newNode, oldNode);\n }\n }\n\n function doRenderNode(newNode, oldNode) {\n if (!renderLabelForZeroData && newNode && !newNode.getValue()) {\n // Not render data with value 0\n newNode = null;\n }\n\n if (newNode !== virtualRoot && oldNode !== virtualRoot) {\n if (oldNode && oldNode.piece) {\n if (newNode) {\n // Update\n oldNode.piece.updateData(false, newNode, 'normal', seriesModel, ecModel); // For tooltip\n\n data.setItemGraphicEl(newNode.dataIndex, oldNode.piece);\n } else {\n // Remove\n removeNode(oldNode);\n }\n } else if (newNode) {\n // Add\n var piece = new SunburstPiece(newNode, seriesModel, ecModel);\n group.add(piece); // For tooltip\n\n data.setItemGraphicEl(newNode.dataIndex, piece);\n }\n }\n }\n\n function removeNode(node) {\n if (!node) {\n return;\n }\n\n if (node.piece) {\n group.remove(node.piece);\n node.piece = null;\n }\n }\n\n function renderRollUp(virtualRoot, viewRoot) {\n if (viewRoot.depth > 0) {\n // Render\n if (that.virtualPiece) {\n // Update\n that.virtualPiece.updateData(false, virtualRoot, 'normal', seriesModel, ecModel);\n } else {\n // Add\n that.virtualPiece = new SunburstPiece(virtualRoot, seriesModel, ecModel);\n group.add(that.virtualPiece);\n }\n\n if (viewRoot.piece._onclickEvent) {\n viewRoot.piece.off('click', viewRoot.piece._onclickEvent);\n }\n\n var event = function (e) {\n that._rootToNode(viewRoot.parentNode);\n };\n\n viewRoot.piece._onclickEvent = event;\n that.virtualPiece.on('click', event);\n } else if (that.virtualPiece) {\n // Remove\n group.remove(that.virtualPiece);\n that.virtualPiece = null;\n }\n }\n },\n dispose: function () {},\n\n /**\n * @private\n */\n _initEvents: function () {\n var that = this;\n\n var event = function (e) {\n var targetFound = false;\n var viewRoot = that.seriesModel.getViewRoot();\n viewRoot.eachNode(function (node) {\n if (!targetFound && node.piece && node.piece.childAt(0) === e.target) {\n var nodeClick = node.getModel().get('nodeClick');\n\n if (nodeClick === 'rootToNode') {\n that._rootToNode(node);\n } else if (nodeClick === 'link') {\n var itemModel = node.getModel();\n var link = itemModel.get('link');\n\n if (link) {\n var linkTarget = itemModel.get('target', true) || '_blank';\n windowOpen(link, linkTarget);\n }\n }\n\n targetFound = true;\n }\n });\n };\n\n if (this.group._onclickEvent) {\n this.group.off('click', this.group._onclickEvent);\n }\n\n this.group.on('click', event);\n this.group._onclickEvent = event;\n },\n\n /**\n * @private\n */\n _rootToNode: function (node) {\n if (node !== this.seriesModel.getViewRoot()) {\n this.api.dispatchAction({\n type: ROOT_TO_NODE_ACTION,\n from: this.uid,\n seriesId: this.seriesModel.id,\n targetNode: node\n });\n }\n },\n\n /**\n * @implement\n */\n containPoint: function (point, seriesModel) {\n var treeRoot = seriesModel.getData();\n var itemLayout = treeRoot.getItemLayout(0);\n\n if (itemLayout) {\n var dx = point[0] - itemLayout.cx;\n var dy = point[1] - itemLayout.cy;\n var radius = Math.sqrt(dx * dx + dy * dy);\n return radius <= itemLayout.r && radius >= itemLayout.r0;\n }\n }\n});\nvar _default = SunburstView;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/sunburst/SunburstView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/sunburst/sunburstAction.js": +/*!*******************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/sunburst/sunburstAction.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar helper = __webpack_require__(/*! ../helper/treeHelper */ \"./node_modules/echarts/lib/chart/helper/treeHelper.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @file Sunburst action\n */\nvar ROOT_TO_NODE_ACTION = 'sunburstRootToNode';\necharts.registerAction({\n type: ROOT_TO_NODE_ACTION,\n update: 'updateView'\n}, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'series',\n subType: 'sunburst',\n query: payload\n }, handleRootToNode);\n\n function handleRootToNode(model, index) {\n var targetInfo = helper.retrieveTargetInfo(payload, [ROOT_TO_NODE_ACTION], model);\n\n if (targetInfo) {\n var originViewRoot = model.getViewRoot();\n\n if (originViewRoot) {\n payload.direction = helper.aboveViewRoot(originViewRoot, targetInfo.node) ? 'rollUp' : 'drillDown';\n }\n\n model.resetViewRoot(targetInfo.node);\n }\n }\n});\nvar HIGHLIGHT_ACTION = 'sunburstHighlight';\necharts.registerAction({\n type: HIGHLIGHT_ACTION,\n update: 'updateView'\n}, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'series',\n subType: 'sunburst',\n query: payload\n }, handleHighlight);\n\n function handleHighlight(model, index) {\n var targetInfo = helper.retrieveTargetInfo(payload, [HIGHLIGHT_ACTION], model);\n\n if (targetInfo) {\n payload.highlight = targetInfo.node;\n }\n }\n});\nvar UNHIGHLIGHT_ACTION = 'sunburstUnhighlight';\necharts.registerAction({\n type: UNHIGHLIGHT_ACTION,\n update: 'updateView'\n}, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'series',\n subType: 'sunburst',\n query: payload\n }, handleUnhighlight);\n\n function handleUnhighlight(model, index) {\n payload.unhighlight = true;\n }\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/sunburst/sunburstAction.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/sunburst/sunburstLayout.js": +/*!*******************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/sunburst/sunburstLayout.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _number = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar parsePercent = _number.parsePercent;\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// var PI2 = Math.PI * 2;\nvar RADIAN = Math.PI / 180;\n\nfunction _default(seriesType, ecModel, api, payload) {\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n var center = seriesModel.get('center');\n var radius = seriesModel.get('radius');\n\n if (!zrUtil.isArray(radius)) {\n radius = [0, radius];\n }\n\n if (!zrUtil.isArray(center)) {\n center = [center, center];\n }\n\n var width = api.getWidth();\n var height = api.getHeight();\n var size = Math.min(width, height);\n var cx = parsePercent(center[0], width);\n var cy = parsePercent(center[1], height);\n var r0 = parsePercent(radius[0], size / 2);\n var r = parsePercent(radius[1], size / 2);\n var startAngle = -seriesModel.get('startAngle') * RADIAN;\n var minAngle = seriesModel.get('minAngle') * RADIAN;\n var virtualRoot = seriesModel.getData().tree.root;\n var treeRoot = seriesModel.getViewRoot();\n var rootDepth = treeRoot.depth;\n var sort = seriesModel.get('sort');\n\n if (sort != null) {\n initChildren(treeRoot, sort);\n }\n\n var validDataCount = 0;\n zrUtil.each(treeRoot.children, function (child) {\n !isNaN(child.getValue()) && validDataCount++;\n });\n var sum = treeRoot.getValue(); // Sum may be 0\n\n var unitRadian = Math.PI / (sum || validDataCount) * 2;\n var renderRollupNode = treeRoot.depth > 0;\n var levels = treeRoot.height - (renderRollupNode ? -1 : 1);\n var rPerLevel = (r - r0) / (levels || 1);\n var clockwise = seriesModel.get('clockwise');\n var stillShowZeroSum = seriesModel.get('stillShowZeroSum'); // In the case some sector angle is smaller than minAngle\n // var restAngle = PI2;\n // var valueSumLargerThanMinAngle = 0;\n\n var dir = clockwise ? 1 : -1;\n /**\n * Render a tree\n * @return increased angle\n */\n\n var renderNode = function (node, startAngle) {\n if (!node) {\n return;\n }\n\n var endAngle = startAngle; // Render self\n\n if (node !== virtualRoot) {\n // Tree node is virtual, so it doesn't need to be drawn\n var value = node.getValue();\n var angle = sum === 0 && stillShowZeroSum ? unitRadian : value * unitRadian;\n\n if (angle < minAngle) {\n angle = minAngle; // restAngle -= minAngle;\n } // else {\n // valueSumLargerThanMinAngle += value;\n // }\n\n\n endAngle = startAngle + dir * angle;\n var depth = node.depth - rootDepth - (renderRollupNode ? -1 : 1);\n var rStart = r0 + rPerLevel * depth;\n var rEnd = r0 + rPerLevel * (depth + 1);\n var itemModel = node.getModel();\n\n if (itemModel.get('r0') != null) {\n rStart = parsePercent(itemModel.get('r0'), size / 2);\n }\n\n if (itemModel.get('r') != null) {\n rEnd = parsePercent(itemModel.get('r'), size / 2);\n }\n\n node.setLayout({\n angle: angle,\n startAngle: startAngle,\n endAngle: endAngle,\n clockwise: clockwise,\n cx: cx,\n cy: cy,\n r0: rStart,\n r: rEnd\n });\n } // Render children\n\n\n if (node.children && node.children.length) {\n // currentAngle = startAngle;\n var siblingAngle = 0;\n zrUtil.each(node.children, function (node) {\n siblingAngle += renderNode(node, startAngle + siblingAngle);\n });\n }\n\n return endAngle - startAngle;\n }; // Virtual root node for roll up\n\n\n if (renderRollupNode) {\n var rStart = r0;\n var rEnd = r0 + rPerLevel;\n var angle = Math.PI * 2;\n virtualRoot.setLayout({\n angle: angle,\n startAngle: startAngle,\n endAngle: startAngle + angle,\n clockwise: clockwise,\n cx: cx,\n cy: cy,\n r0: rStart,\n r: rEnd\n });\n }\n\n renderNode(treeRoot, startAngle);\n });\n}\n/**\n * Init node children by order and update visual\n *\n * @param {TreeNode} node root node\n * @param {boolean} isAsc if is in ascendant order\n */\n\n\nfunction initChildren(node, isAsc) {\n var children = node.children || [];\n node.children = sort(children, isAsc); // Init children recursively\n\n if (children.length) {\n zrUtil.each(node.children, function (child) {\n initChildren(child, isAsc);\n });\n }\n}\n/**\n * Sort children nodes\n *\n * @param {TreeNode[]} children children of node to be sorted\n * @param {string | function | null} sort sort method\n * See SunburstSeries.js for details.\n */\n\n\nfunction sort(children, sortOrder) {\n if (typeof sortOrder === 'function') {\n return children.sort(sortOrder);\n } else {\n var isAsc = sortOrder === 'asc';\n return children.sort(function (a, b) {\n var diff = (a.getValue() - b.getValue()) * (isAsc ? 1 : -1);\n return diff === 0 ? (a.dataIndex - b.dataIndex) * (isAsc ? -1 : 1) : diff;\n });\n }\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/sunburst/sunburstLayout.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/themeRiver.js": +/*!******************************************************!*\ + !*** ./node_modules/echarts/lib/chart/themeRiver.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n__webpack_require__(/*! ../component/singleAxis */ \"./node_modules/echarts/lib/component/singleAxis.js\");\n\n__webpack_require__(/*! ./themeRiver/ThemeRiverSeries */ \"./node_modules/echarts/lib/chart/themeRiver/ThemeRiverSeries.js\");\n\n__webpack_require__(/*! ./themeRiver/ThemeRiverView */ \"./node_modules/echarts/lib/chart/themeRiver/ThemeRiverView.js\");\n\nvar themeRiverLayout = __webpack_require__(/*! ./themeRiver/themeRiverLayout */ \"./node_modules/echarts/lib/chart/themeRiver/themeRiverLayout.js\");\n\nvar themeRiverVisual = __webpack_require__(/*! ./themeRiver/themeRiverVisual */ \"./node_modules/echarts/lib/chart/themeRiver/themeRiverVisual.js\");\n\nvar dataFilter = __webpack_require__(/*! ../processor/dataFilter */ \"./node_modules/echarts/lib/processor/dataFilter.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerLayout(themeRiverLayout);\necharts.registerVisual(themeRiverVisual);\necharts.registerProcessor(dataFilter('themeRiver'));\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/themeRiver.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/themeRiver/ThemeRiverSeries.js": +/*!***********************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/themeRiver/ThemeRiverSeries.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar SeriesModel = __webpack_require__(/*! ../../model/Series */ \"./node_modules/echarts/lib/model/Series.js\");\n\nvar createDimensions = __webpack_require__(/*! ../../data/helper/createDimensions */ \"./node_modules/echarts/lib/data/helper/createDimensions.js\");\n\nvar _dimensionHelper = __webpack_require__(/*! ../../data/helper/dimensionHelper */ \"./node_modules/echarts/lib/data/helper/dimensionHelper.js\");\n\nvar getDimensionTypeByAxis = _dimensionHelper.getDimensionTypeByAxis;\n\nvar List = __webpack_require__(/*! ../../data/List */ \"./node_modules/echarts/lib/data/List.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar _model = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar groupData = _model.groupData;\n\nvar _format = __webpack_require__(/*! ../../util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\nvar encodeHTML = _format.encodeHTML;\n\nvar LegendVisualProvider = __webpack_require__(/*! ../../visual/LegendVisualProvider */ \"./node_modules/echarts/lib/visual/LegendVisualProvider.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar DATA_NAME_INDEX = 2;\nvar ThemeRiverSeries = SeriesModel.extend({\n type: 'series.themeRiver',\n dependencies: ['singleAxis'],\n\n /**\n * @readOnly\n * @type {module:zrender/core/util#HashMap}\n */\n nameMap: null,\n\n /**\n * @override\n */\n init: function (option) {\n // eslint-disable-next-line\n ThemeRiverSeries.superApply(this, 'init', arguments); // Put this function here is for the sake of consistency of code style.\n // Enable legend selection for each data item\n // Use a function instead of direct access because data reference may changed\n\n this.legendVisualProvider = new LegendVisualProvider(zrUtil.bind(this.getData, this), zrUtil.bind(this.getRawData, this));\n },\n\n /**\n * If there is no value of a certain point in the time for some event,set it value to 0.\n *\n * @param {Array} data initial data in the option\n * @return {Array}\n */\n fixData: function (data) {\n var rawDataLength = data.length;\n /**\n * Make sure every layer data get the same keys.\n * The value index tells which layer has visited.\n * {\n * 2014/01/01: -1\n * }\n */\n\n var timeValueKeys = {}; // grouped data by name\n\n var groupResult = groupData(data, function (item) {\n if (!timeValueKeys.hasOwnProperty(item[0])) {\n timeValueKeys[item[0]] = -1;\n }\n\n return item[2];\n });\n var layData = [];\n groupResult.buckets.each(function (items, key) {\n layData.push({\n name: key,\n dataList: items\n });\n });\n var layerNum = layData.length;\n\n for (var k = 0; k < layerNum; ++k) {\n var name = layData[k].name;\n\n for (var j = 0; j < layData[k].dataList.length; ++j) {\n var timeValue = layData[k].dataList[j][0];\n timeValueKeys[timeValue] = k;\n }\n\n for (var timeValue in timeValueKeys) {\n if (timeValueKeys.hasOwnProperty(timeValue) && timeValueKeys[timeValue] !== k) {\n timeValueKeys[timeValue] = k;\n data[rawDataLength] = [];\n data[rawDataLength][0] = timeValue;\n data[rawDataLength][1] = 0;\n data[rawDataLength][2] = name;\n rawDataLength++;\n }\n }\n }\n\n return data;\n },\n\n /**\n * @override\n * @param {Object} option the initial option that user gived\n * @param {module:echarts/model/Model} ecModel the model object for themeRiver option\n * @return {module:echarts/data/List}\n */\n getInitialData: function (option, ecModel) {\n var singleAxisModel = ecModel.queryComponents({\n mainType: 'singleAxis',\n index: this.get('singleAxisIndex'),\n id: this.get('singleAxisId')\n })[0];\n var axisType = singleAxisModel.get('type'); // filter the data item with the value of label is undefined\n\n var filterData = zrUtil.filter(option.data, function (dataItem) {\n return dataItem[2] !== undefined;\n }); // ??? TODO design a stage to transfer data for themeRiver and lines?\n\n var data = this.fixData(filterData || []);\n var nameList = [];\n var nameMap = this.nameMap = zrUtil.createHashMap();\n var count = 0;\n\n for (var i = 0; i < data.length; ++i) {\n nameList.push(data[i][DATA_NAME_INDEX]);\n\n if (!nameMap.get(data[i][DATA_NAME_INDEX])) {\n nameMap.set(data[i][DATA_NAME_INDEX], count);\n count++;\n }\n }\n\n var dimensionsInfo = createDimensions(data, {\n coordDimensions: ['single'],\n dimensionsDefine: [{\n name: 'time',\n type: getDimensionTypeByAxis(axisType)\n }, {\n name: 'value',\n type: 'float'\n }, {\n name: 'name',\n type: 'ordinal'\n }],\n encodeDefine: {\n single: 0,\n value: 1,\n itemName: 2\n }\n });\n var list = new List(dimensionsInfo, this);\n list.initData(data);\n return list;\n },\n\n /**\n * The raw data is divided into multiple layers and each layer\n * has same name.\n *\n * @return {Array.>}\n */\n getLayerSeries: function () {\n var data = this.getData();\n var lenCount = data.count();\n var indexArr = [];\n\n for (var i = 0; i < lenCount; ++i) {\n indexArr[i] = i;\n }\n\n var timeDim = data.mapDimension('single'); // data group by name\n\n var groupResult = groupData(indexArr, function (index) {\n return data.get('name', index);\n });\n var layerSeries = [];\n groupResult.buckets.each(function (items, key) {\n items.sort(function (index1, index2) {\n return data.get(timeDim, index1) - data.get(timeDim, index2);\n });\n layerSeries.push({\n name: key,\n indices: items\n });\n });\n return layerSeries;\n },\n\n /**\n * Get data indices for show tooltip content\n * @param {Array.|string} dim single coordinate dimension\n * @param {number} value axis value\n * @param {module:echarts/coord/single/SingleAxis} baseAxis single Axis used\n * the themeRiver.\n * @return {Object} {dataIndices, nestestValue}\n */\n getAxisTooltipData: function (dim, value, baseAxis) {\n if (!zrUtil.isArray(dim)) {\n dim = dim ? [dim] : [];\n }\n\n var data = this.getData();\n var layerSeries = this.getLayerSeries();\n var indices = [];\n var layerNum = layerSeries.length;\n var nestestValue;\n\n for (var i = 0; i < layerNum; ++i) {\n var minDist = Number.MAX_VALUE;\n var nearestIdx = -1;\n var pointNum = layerSeries[i].indices.length;\n\n for (var j = 0; j < pointNum; ++j) {\n var theValue = data.get(dim[0], layerSeries[i].indices[j]);\n var dist = Math.abs(theValue - value);\n\n if (dist <= minDist) {\n nestestValue = theValue;\n minDist = dist;\n nearestIdx = layerSeries[i].indices[j];\n }\n }\n\n indices.push(nearestIdx);\n }\n\n return {\n dataIndices: indices,\n nestestValue: nestestValue\n };\n },\n\n /**\n * @override\n * @param {number} dataIndex index of data\n */\n formatTooltip: function (dataIndex) {\n var data = this.getData();\n var htmlName = data.getName(dataIndex);\n var htmlValue = data.get(data.mapDimension('value'), dataIndex);\n\n if (isNaN(htmlValue) || htmlValue == null) {\n htmlValue = '-';\n }\n\n return encodeHTML(htmlName + ' : ' + htmlValue);\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n coordinateSystem: 'singleAxis',\n // gap in axis's orthogonal orientation\n boundaryGap: ['10%', '10%'],\n // legendHoverLink: true,\n singleAxisIndex: 0,\n animationEasing: 'linear',\n label: {\n margin: 4,\n show: true,\n position: 'left',\n color: '#000',\n fontSize: 11\n },\n emphasis: {\n label: {\n show: true\n }\n }\n }\n});\nvar _default = ThemeRiverSeries;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/themeRiver/ThemeRiverSeries.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/themeRiver/ThemeRiverView.js": +/*!*********************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/themeRiver/ThemeRiverView.js ***! + \*********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar _poly = __webpack_require__(/*! ../line/poly */ \"./node_modules/echarts/lib/chart/line/poly.js\");\n\nvar Polygon = _poly.Polygon;\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar bind = _util.bind;\nvar extend = _util.extend;\n\nvar DataDiffer = __webpack_require__(/*! ../../data/DataDiffer */ \"./node_modules/echarts/lib/data/DataDiffer.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendChartView({\n type: 'themeRiver',\n init: function () {\n this._layers = [];\n },\n render: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n var group = this.group;\n var layerSeries = seriesModel.getLayerSeries();\n var layoutInfo = data.getLayout('layoutInfo');\n var rect = layoutInfo.rect;\n var boundaryGap = layoutInfo.boundaryGap;\n group.attr('position', [0, rect.y + boundaryGap[0]]);\n\n function keyGetter(item) {\n return item.name;\n }\n\n var dataDiffer = new DataDiffer(this._layersSeries || [], layerSeries, keyGetter, keyGetter);\n var newLayersGroups = {};\n dataDiffer.add(bind(process, this, 'add')).update(bind(process, this, 'update')).remove(bind(process, this, 'remove')).execute();\n\n function process(status, idx, oldIdx) {\n var oldLayersGroups = this._layers;\n\n if (status === 'remove') {\n group.remove(oldLayersGroups[idx]);\n return;\n }\n\n var points0 = [];\n var points1 = [];\n var color;\n var indices = layerSeries[idx].indices;\n\n for (var j = 0; j < indices.length; j++) {\n var layout = data.getItemLayout(indices[j]);\n var x = layout.x;\n var y0 = layout.y0;\n var y = layout.y;\n points0.push([x, y0]);\n points1.push([x, y0 + y]);\n color = data.getItemVisual(indices[j], 'color');\n }\n\n var polygon;\n var text;\n var textLayout = data.getItemLayout(indices[0]);\n var itemModel = data.getItemModel(indices[j - 1]);\n var labelModel = itemModel.getModel('label');\n var margin = labelModel.get('margin');\n\n if (status === 'add') {\n var layerGroup = newLayersGroups[idx] = new graphic.Group();\n polygon = new Polygon({\n shape: {\n points: points0,\n stackedOnPoints: points1,\n smooth: 0.4,\n stackedOnSmooth: 0.4,\n smoothConstraint: false\n },\n z2: 0\n });\n text = new graphic.Text({\n style: {\n x: textLayout.x - margin,\n y: textLayout.y0 + textLayout.y / 2\n }\n });\n layerGroup.add(polygon);\n layerGroup.add(text);\n group.add(layerGroup);\n polygon.setClipPath(createGridClipShape(polygon.getBoundingRect(), seriesModel, function () {\n polygon.removeClipPath();\n }));\n } else {\n var layerGroup = oldLayersGroups[oldIdx];\n polygon = layerGroup.childAt(0);\n text = layerGroup.childAt(1);\n group.add(layerGroup);\n newLayersGroups[idx] = layerGroup;\n graphic.updateProps(polygon, {\n shape: {\n points: points0,\n stackedOnPoints: points1\n }\n }, seriesModel);\n graphic.updateProps(text, {\n style: {\n x: textLayout.x - margin,\n y: textLayout.y0 + textLayout.y / 2\n }\n }, seriesModel);\n }\n\n var hoverItemStyleModel = itemModel.getModel('emphasis.itemStyle');\n var itemStyleModel = itemModel.getModel('itemStyle');\n graphic.setTextStyle(text.style, labelModel, {\n text: labelModel.get('show') ? seriesModel.getFormattedLabel(indices[j - 1], 'normal') || data.getName(indices[j - 1]) : null,\n textVerticalAlign: 'middle'\n });\n polygon.setStyle(extend({\n fill: color\n }, itemStyleModel.getItemStyle(['color'])));\n graphic.setHoverStyle(polygon, hoverItemStyleModel.getItemStyle());\n }\n\n this._layersSeries = layerSeries;\n this._layers = newLayersGroups;\n },\n dispose: function () {}\n}); // add animation to the view\n\n\nfunction createGridClipShape(rect, seriesModel, cb) {\n var rectEl = new graphic.Rect({\n shape: {\n x: rect.x - 10,\n y: rect.y - 10,\n width: 0,\n height: rect.height + 20\n }\n });\n graphic.initProps(rectEl, {\n shape: {\n width: rect.width + 20,\n height: rect.height + 20\n }\n }, seriesModel, cb);\n return rectEl;\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/themeRiver/ThemeRiverView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/themeRiver/themeRiverLayout.js": +/*!***********************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/themeRiver/themeRiverLayout.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar numberUtil = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel, api) {\n ecModel.eachSeriesByType('themeRiver', function (seriesModel) {\n var data = seriesModel.getData();\n var single = seriesModel.coordinateSystem;\n var layoutInfo = {}; // use the axis boundingRect for view\n\n var rect = single.getRect();\n layoutInfo.rect = rect;\n var boundaryGap = seriesModel.get('boundaryGap');\n var axis = single.getAxis();\n layoutInfo.boundaryGap = boundaryGap;\n\n if (axis.orient === 'horizontal') {\n boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], rect.height);\n boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], rect.height);\n var height = rect.height - boundaryGap[0] - boundaryGap[1];\n themeRiverLayout(data, seriesModel, height);\n } else {\n boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], rect.width);\n boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], rect.width);\n var width = rect.width - boundaryGap[0] - boundaryGap[1];\n themeRiverLayout(data, seriesModel, width);\n }\n\n data.setLayout('layoutInfo', layoutInfo);\n });\n}\n/**\n * The layout information about themeriver\n *\n * @param {module:echarts/data/List} data data in the series\n * @param {module:echarts/model/Series} seriesModel the model object of themeRiver series\n * @param {number} height value used to compute every series height\n */\n\n\nfunction themeRiverLayout(data, seriesModel, height) {\n if (!data.count()) {\n return;\n }\n\n var coordSys = seriesModel.coordinateSystem; // the data in each layer are organized into a series.\n\n var layerSeries = seriesModel.getLayerSeries(); // the points in each layer.\n\n var timeDim = data.mapDimension('single');\n var valueDim = data.mapDimension('value');\n var layerPoints = zrUtil.map(layerSeries, function (singleLayer) {\n return zrUtil.map(singleLayer.indices, function (idx) {\n var pt = coordSys.dataToPoint(data.get(timeDim, idx));\n pt[1] = data.get(valueDim, idx);\n return pt;\n });\n });\n var base = computeBaseline(layerPoints);\n var baseLine = base.y0;\n var ky = height / base.max; // set layout information for each item.\n\n var n = layerSeries.length;\n var m = layerSeries[0].indices.length;\n var baseY0;\n\n for (var j = 0; j < m; ++j) {\n baseY0 = baseLine[j] * ky;\n data.setItemLayout(layerSeries[0].indices[j], {\n layerIndex: 0,\n x: layerPoints[0][j][0],\n y0: baseY0,\n y: layerPoints[0][j][1] * ky\n });\n\n for (var i = 1; i < n; ++i) {\n baseY0 += layerPoints[i - 1][j][1] * ky;\n data.setItemLayout(layerSeries[i].indices[j], {\n layerIndex: i,\n x: layerPoints[i][j][0],\n y0: baseY0,\n y: layerPoints[i][j][1] * ky\n });\n }\n }\n}\n/**\n * Compute the baseLine of the rawdata\n * Inspired by Lee Byron's paper Stacked Graphs - Geometry & Aesthetics\n *\n * @param {Array.} data the points in each layer\n * @return {Object}\n */\n\n\nfunction computeBaseline(data) {\n var layerNum = data.length;\n var pointNum = data[0].length;\n var sums = [];\n var y0 = [];\n var max = 0;\n var temp;\n var base = {};\n\n for (var i = 0; i < pointNum; ++i) {\n for (var j = 0, temp = 0; j < layerNum; ++j) {\n temp += data[j][i][1];\n }\n\n if (temp > max) {\n max = temp;\n }\n\n sums.push(temp);\n }\n\n for (var k = 0; k < pointNum; ++k) {\n y0[k] = (max - sums[k]) / 2;\n }\n\n max = 0;\n\n for (var l = 0; l < pointNum; ++l) {\n var sum = sums[l] + y0[l];\n\n if (sum > max) {\n max = sum;\n }\n }\n\n base.y0 = y0;\n base.max = max;\n return base;\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/themeRiver/themeRiverLayout.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/themeRiver/themeRiverVisual.js": +/*!***********************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/themeRiver/themeRiverVisual.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar createHashMap = _util.createHashMap;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel) {\n ecModel.eachSeriesByType('themeRiver', function (seriesModel) {\n var data = seriesModel.getData();\n var rawData = seriesModel.getRawData();\n var colorList = seriesModel.get('color');\n var idxMap = createHashMap();\n data.each(function (idx) {\n idxMap.set(data.getRawIndex(idx), idx);\n });\n rawData.each(function (rawIndex) {\n var name = rawData.getName(rawIndex);\n var color = colorList[(seriesModel.nameMap.get(name) - 1) % colorList.length];\n rawData.setItemVisual(rawIndex, 'color', color);\n var idx = idxMap.get(rawIndex);\n\n if (idx != null) {\n data.setItemVisual(idx, 'color', color);\n }\n });\n });\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/themeRiver/themeRiverVisual.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/tree.js": +/*!************************************************!*\ + !*** ./node_modules/echarts/lib/chart/tree.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n__webpack_require__(/*! ./tree/TreeSeries */ \"./node_modules/echarts/lib/chart/tree/TreeSeries.js\");\n\n__webpack_require__(/*! ./tree/TreeView */ \"./node_modules/echarts/lib/chart/tree/TreeView.js\");\n\n__webpack_require__(/*! ./tree/treeAction */ \"./node_modules/echarts/lib/chart/tree/treeAction.js\");\n\nvar visualSymbol = __webpack_require__(/*! ../visual/symbol */ \"./node_modules/echarts/lib/visual/symbol.js\");\n\nvar treeLayout = __webpack_require__(/*! ./tree/treeLayout */ \"./node_modules/echarts/lib/chart/tree/treeLayout.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerVisual(visualSymbol('tree', 'circle'));\necharts.registerLayout(treeLayout);\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/tree.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/tree/TreeSeries.js": +/*!***********************************************************!*\ + !*** ./node_modules/echarts/lib/chart/tree/TreeSeries.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar SeriesModel = __webpack_require__(/*! ../../model/Series */ \"./node_modules/echarts/lib/model/Series.js\");\n\nvar Tree = __webpack_require__(/*! ../../data/Tree */ \"./node_modules/echarts/lib/data/Tree.js\");\n\nvar _format = __webpack_require__(/*! ../../util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\nvar encodeHTML = _format.encodeHTML;\n\nvar Model = __webpack_require__(/*! ../../model/Model */ \"./node_modules/echarts/lib/model/Model.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n type: 'series.tree',\n layoutInfo: null,\n // can support the position parameters 'left', 'top','right','bottom', 'width',\n // 'height' in the setOption() with 'merge' mode normal.\n layoutMode: 'box',\n\n /**\n * Init a tree data structure from data in option series\n * @param {Object} option the object used to config echarts view\n * @return {module:echarts/data/List} storage initial data\n */\n getInitialData: function (option) {\n //create an virtual root\n var root = {\n name: option.name,\n children: option.data\n };\n var leaves = option.leaves || {};\n var leavesModel = new Model(leaves, this, this.ecModel);\n var tree = Tree.createTree(root, this, beforeLink);\n\n function beforeLink(nodeData) {\n nodeData.wrapMethod('getItemModel', function (model, idx) {\n var node = tree.getNodeByDataIndex(idx);\n\n if (!node.children.length || !node.isExpand) {\n model.parentModel = leavesModel;\n }\n\n return model;\n });\n }\n\n var treeDepth = 0;\n tree.eachNode('preorder', function (node) {\n if (node.depth > treeDepth) {\n treeDepth = node.depth;\n }\n });\n var expandAndCollapse = option.expandAndCollapse;\n var expandTreeDepth = expandAndCollapse && option.initialTreeDepth >= 0 ? option.initialTreeDepth : treeDepth;\n tree.root.eachNode('preorder', function (node) {\n var item = node.hostTree.data.getRawDataItem(node.dataIndex); // Add item.collapsed != null, because users can collapse node original in the series.data.\n\n node.isExpand = item && item.collapsed != null ? !item.collapsed : node.depth <= expandTreeDepth;\n });\n return tree.data;\n },\n\n /**\n * Make the configuration 'orient' backward compatibly, with 'horizontal = LR', 'vertical = TB'.\n * @returns {string} orient\n */\n getOrient: function () {\n var orient = this.get('orient');\n\n if (orient === 'horizontal') {\n orient = 'LR';\n } else if (orient === 'vertical') {\n orient = 'TB';\n }\n\n return orient;\n },\n setZoom: function (zoom) {\n this.option.zoom = zoom;\n },\n setCenter: function (center) {\n this.option.center = center;\n },\n\n /**\n * @override\n * @param {number} dataIndex\n */\n formatTooltip: function (dataIndex) {\n var tree = this.getData().tree;\n var realRoot = tree.root.children[0];\n var node = tree.getNodeByDataIndex(dataIndex);\n var value = node.getValue();\n var name = node.name;\n\n while (node && node !== realRoot) {\n name = node.parentNode.name + '.' + name;\n node = node.parentNode;\n }\n\n return encodeHTML(name + (isNaN(value) || value == null ? '' : ' : ' + value));\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n coordinateSystem: 'view',\n // the position of the whole view\n left: '12%',\n top: '12%',\n right: '12%',\n bottom: '12%',\n // the layout of the tree, two value can be selected, 'orthogonal' or 'radial'\n layout: 'orthogonal',\n // value can be 'polyline'\n edgeShape: 'curve',\n edgeForkPosition: '50%',\n // true | false | 'move' | 'scale', see module:component/helper/RoamController.\n roam: false,\n // Symbol size scale ratio in roam\n nodeScaleRatio: 0.4,\n // Default on center of graph\n center: null,\n zoom: 1,\n // The orient of orthoginal layout, can be setted to 'LR', 'TB', 'RL', 'BT'.\n // and the backward compatibility configuration 'horizontal = LR', 'vertical = TB'.\n orient: 'LR',\n symbol: 'emptyCircle',\n symbolSize: 7,\n expandAndCollapse: true,\n initialTreeDepth: 2,\n lineStyle: {\n color: '#ccc',\n width: 1.5,\n curveness: 0.5\n },\n itemStyle: {\n color: 'lightsteelblue',\n borderColor: '#c23531',\n borderWidth: 1.5\n },\n label: {\n show: true,\n color: '#555'\n },\n leaves: {\n label: {\n show: true\n }\n },\n animationEasing: 'linear',\n animationDuration: 700,\n animationDurationUpdate: 1000\n }\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/tree/TreeSeries.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/tree/TreeView.js": +/*!*********************************************************!*\ + !*** ./node_modules/echarts/lib/chart/tree/TreeView.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar SymbolClz = __webpack_require__(/*! ../helper/Symbol */ \"./node_modules/echarts/lib/chart/helper/Symbol.js\");\n\nvar _layoutHelper = __webpack_require__(/*! ./layoutHelper */ \"./node_modules/echarts/lib/chart/tree/layoutHelper.js\");\n\nvar radialCoordinate = _layoutHelper.radialCoordinate;\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar bbox = __webpack_require__(/*! zrender/lib/core/bbox */ \"./node_modules/zrender/lib/core/bbox.js\");\n\nvar View = __webpack_require__(/*! ../../coord/View */ \"./node_modules/echarts/lib/coord/View.js\");\n\nvar roamHelper = __webpack_require__(/*! ../../component/helper/roamHelper */ \"./node_modules/echarts/lib/component/helper/roamHelper.js\");\n\nvar RoamController = __webpack_require__(/*! ../../component/helper/RoamController */ \"./node_modules/echarts/lib/component/helper/RoamController.js\");\n\nvar _cursorHelper = __webpack_require__(/*! ../../component/helper/cursorHelper */ \"./node_modules/echarts/lib/component/helper/cursorHelper.js\");\n\nvar onIrrelevantElement = _cursorHelper.onIrrelevantElement;\n\nvar _config = __webpack_require__(/*! ../../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _number = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar parsePercent = _number.parsePercent;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar TreeShape = graphic.extendShape({\n shape: {\n parentPoint: [],\n childPoints: [],\n orient: '',\n forkPosition: ''\n },\n style: {\n stroke: '#000',\n fill: null\n },\n buildPath: function (ctx, shape) {\n var childPoints = shape.childPoints;\n var childLen = childPoints.length;\n var parentPoint = shape.parentPoint;\n var firstChildPos = childPoints[0];\n var lastChildPos = childPoints[childLen - 1];\n\n if (childLen === 1) {\n ctx.moveTo(parentPoint[0], parentPoint[1]);\n ctx.lineTo(firstChildPos[0], firstChildPos[1]);\n return;\n }\n\n var orient = shape.orient;\n var forkDim = orient === 'TB' || orient === 'BT' ? 0 : 1;\n var otherDim = 1 - forkDim;\n var forkPosition = parsePercent(shape.forkPosition, 1);\n var tmpPoint = [];\n tmpPoint[forkDim] = parentPoint[forkDim];\n tmpPoint[otherDim] = parentPoint[otherDim] + (lastChildPos[otherDim] - parentPoint[otherDim]) * forkPosition;\n ctx.moveTo(parentPoint[0], parentPoint[1]);\n ctx.lineTo(tmpPoint[0], tmpPoint[1]);\n ctx.moveTo(firstChildPos[0], firstChildPos[1]);\n tmpPoint[forkDim] = firstChildPos[forkDim];\n ctx.lineTo(tmpPoint[0], tmpPoint[1]);\n tmpPoint[forkDim] = lastChildPos[forkDim];\n ctx.lineTo(tmpPoint[0], tmpPoint[1]);\n ctx.lineTo(lastChildPos[0], lastChildPos[1]);\n\n for (var i = 1; i < childLen - 1; i++) {\n var point = childPoints[i];\n ctx.moveTo(point[0], point[1]);\n tmpPoint[forkDim] = point[forkDim];\n ctx.lineTo(tmpPoint[0], tmpPoint[1]);\n }\n }\n});\n\nvar _default = echarts.extendChartView({\n type: 'tree',\n\n /**\n * Init the chart\n * @override\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n init: function (ecModel, api) {\n /**\n * @private\n * @type {module:echarts/data/Tree}\n */\n this._oldTree;\n /**\n * @private\n * @type {module:zrender/container/Group}\n */\n\n this._mainGroup = new graphic.Group();\n /**\n * @private\n * @type {module:echarts/componet/helper/RoamController}\n */\n\n this._controller = new RoamController(api.getZr());\n this._controllerHost = {\n target: this.group\n };\n this.group.add(this._mainGroup);\n },\n render: function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var layoutInfo = seriesModel.layoutInfo;\n var group = this._mainGroup;\n var layout = seriesModel.get('layout');\n\n if (layout === 'radial') {\n group.attr('position', [layoutInfo.x + layoutInfo.width / 2, layoutInfo.y + layoutInfo.height / 2]);\n } else {\n group.attr('position', [layoutInfo.x, layoutInfo.y]);\n }\n\n this._updateViewCoordSys(seriesModel, layoutInfo, layout);\n\n this._updateController(seriesModel, ecModel, api);\n\n var oldData = this._data;\n var seriesScope = {\n expandAndCollapse: seriesModel.get('expandAndCollapse'),\n layout: layout,\n edgeShape: seriesModel.get('edgeShape'),\n edgeForkPosition: seriesModel.get('edgeForkPosition'),\n orient: seriesModel.getOrient(),\n curvature: seriesModel.get('lineStyle.curveness'),\n symbolRotate: seriesModel.get('symbolRotate'),\n symbolOffset: seriesModel.get('symbolOffset'),\n hoverAnimation: seriesModel.get('hoverAnimation'),\n useNameLabel: true,\n fadeIn: true\n };\n data.diff(oldData).add(function (newIdx) {\n if (symbolNeedsDraw(data, newIdx)) {\n // Create node and edge\n updateNode(data, newIdx, null, group, seriesModel, seriesScope);\n }\n }).update(function (newIdx, oldIdx) {\n var symbolEl = oldData.getItemGraphicEl(oldIdx);\n\n if (!symbolNeedsDraw(data, newIdx)) {\n symbolEl && removeNode(oldData, oldIdx, symbolEl, group, seriesModel, seriesScope);\n return;\n } // Update node and edge\n\n\n updateNode(data, newIdx, symbolEl, group, seriesModel, seriesScope);\n }).remove(function (oldIdx) {\n var symbolEl = oldData.getItemGraphicEl(oldIdx); // When remove a collapsed node of subtree, since the collapsed\n // node haven't been initialized with a symbol element,\n // you can't found it's symbol element through index.\n // so if we want to remove the symbol element we should insure\n // that the symbol element is not null.\n\n if (symbolEl) {\n removeNode(oldData, oldIdx, symbolEl, group, seriesModel, seriesScope);\n }\n }).execute();\n this._nodeScaleRatio = seriesModel.get('nodeScaleRatio');\n\n this._updateNodeAndLinkScale(seriesModel);\n\n if (seriesScope.expandAndCollapse === true) {\n data.eachItemGraphicEl(function (el, dataIndex) {\n el.off('click').on('click', function () {\n api.dispatchAction({\n type: 'treeExpandAndCollapse',\n seriesId: seriesModel.id,\n dataIndex: dataIndex\n });\n });\n });\n }\n\n this._data = data;\n },\n _updateViewCoordSys: function (seriesModel) {\n var data = seriesModel.getData();\n var points = [];\n data.each(function (idx) {\n var layout = data.getItemLayout(idx);\n\n if (layout && !isNaN(layout.x) && !isNaN(layout.y)) {\n points.push([+layout.x, +layout.y]);\n }\n });\n var min = [];\n var max = [];\n bbox.fromPoints(points, min, max); // If don't Store min max when collapse the root node after roam,\n // the root node will disappear.\n\n var oldMin = this._min;\n var oldMax = this._max; // If width or height is 0\n\n if (max[0] - min[0] === 0) {\n min[0] = oldMin ? oldMin[0] : min[0] - 1;\n max[0] = oldMax ? oldMax[0] : max[0] + 1;\n }\n\n if (max[1] - min[1] === 0) {\n min[1] = oldMin ? oldMin[1] : min[1] - 1;\n max[1] = oldMax ? oldMax[1] : max[1] + 1;\n }\n\n var viewCoordSys = seriesModel.coordinateSystem = new View();\n viewCoordSys.zoomLimit = seriesModel.get('scaleLimit');\n viewCoordSys.setBoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n viewCoordSys.setCenter(seriesModel.get('center'));\n viewCoordSys.setZoom(seriesModel.get('zoom')); // Here we use viewCoordSys just for computing the 'position' and 'scale' of the group\n\n this.group.attr({\n position: viewCoordSys.position,\n scale: viewCoordSys.scale\n });\n this._viewCoordSys = viewCoordSys;\n this._min = min;\n this._max = max;\n },\n _updateController: function (seriesModel, ecModel, api) {\n var controller = this._controller;\n var controllerHost = this._controllerHost;\n var group = this.group;\n controller.setPointerChecker(function (e, x, y) {\n var rect = group.getBoundingRect();\n rect.applyTransform(group.transform);\n return rect.contain(x, y) && !onIrrelevantElement(e, api, seriesModel);\n });\n controller.enable(seriesModel.get('roam'));\n controllerHost.zoomLimit = seriesModel.get('scaleLimit');\n controllerHost.zoom = seriesModel.coordinateSystem.getZoom();\n controller.off('pan').off('zoom').on('pan', function (e) {\n roamHelper.updateViewOnPan(controllerHost, e.dx, e.dy);\n api.dispatchAction({\n seriesId: seriesModel.id,\n type: 'treeRoam',\n dx: e.dx,\n dy: e.dy\n });\n }, this).on('zoom', function (e) {\n roamHelper.updateViewOnZoom(controllerHost, e.scale, e.originX, e.originY);\n api.dispatchAction({\n seriesId: seriesModel.id,\n type: 'treeRoam',\n zoom: e.scale,\n originX: e.originX,\n originY: e.originY\n });\n\n this._updateNodeAndLinkScale(seriesModel);\n }, this);\n },\n _updateNodeAndLinkScale: function (seriesModel) {\n var data = seriesModel.getData();\n\n var nodeScale = this._getNodeGlobalScale(seriesModel);\n\n var invScale = [nodeScale, nodeScale];\n data.eachItemGraphicEl(function (el, idx) {\n el.attr('scale', invScale);\n });\n },\n _getNodeGlobalScale: function (seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys.type !== 'view') {\n return 1;\n }\n\n var nodeScaleRatio = this._nodeScaleRatio;\n var groupScale = coordSys.scale;\n var groupZoom = groupScale && groupScale[0] || 1; // Scale node when zoom changes\n\n var roamZoom = coordSys.getZoom();\n var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1;\n return nodeScale / groupZoom;\n },\n dispose: function () {\n this._controller && this._controller.dispose();\n this._controllerHost = {};\n },\n remove: function () {\n this._mainGroup.removeAll();\n\n this._data = null;\n }\n});\n\nfunction symbolNeedsDraw(data, dataIndex) {\n var layout = data.getItemLayout(dataIndex);\n return layout && !isNaN(layout.x) && !isNaN(layout.y) && data.getItemVisual(dataIndex, 'symbol') !== 'none';\n}\n\nfunction getTreeNodeStyle(node, itemModel, seriesScope) {\n seriesScope.itemModel = itemModel;\n seriesScope.itemStyle = itemModel.getModel('itemStyle').getItemStyle();\n seriesScope.hoverItemStyle = itemModel.getModel('emphasis.itemStyle').getItemStyle();\n seriesScope.lineStyle = itemModel.getModel('lineStyle').getLineStyle();\n seriesScope.labelModel = itemModel.getModel('label');\n seriesScope.hoverLabelModel = itemModel.getModel('emphasis.label');\n\n if (node.isExpand === false && node.children.length !== 0) {\n seriesScope.symbolInnerColor = seriesScope.itemStyle.fill;\n } else {\n seriesScope.symbolInnerColor = '#fff';\n }\n\n return seriesScope;\n}\n\nfunction updateNode(data, dataIndex, symbolEl, group, seriesModel, seriesScope) {\n var isInit = !symbolEl;\n var node = data.tree.getNodeByDataIndex(dataIndex);\n var itemModel = node.getModel();\n var seriesScope = getTreeNodeStyle(node, itemModel, seriesScope);\n var virtualRoot = data.tree.root;\n var source = node.parentNode === virtualRoot ? node : node.parentNode || node;\n var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex);\n var sourceLayout = source.getLayout();\n var sourceOldLayout = sourceSymbolEl ? {\n x: sourceSymbolEl.position[0],\n y: sourceSymbolEl.position[1],\n rawX: sourceSymbolEl.__radialOldRawX,\n rawY: sourceSymbolEl.__radialOldRawY\n } : sourceLayout;\n var targetLayout = node.getLayout();\n\n if (isInit) {\n symbolEl = new SymbolClz(data, dataIndex, seriesScope);\n symbolEl.attr('position', [sourceOldLayout.x, sourceOldLayout.y]);\n } else {\n symbolEl.updateData(data, dataIndex, seriesScope);\n }\n\n symbolEl.__radialOldRawX = symbolEl.__radialRawX;\n symbolEl.__radialOldRawY = symbolEl.__radialRawY;\n symbolEl.__radialRawX = targetLayout.rawX;\n symbolEl.__radialRawY = targetLayout.rawY;\n group.add(symbolEl);\n data.setItemGraphicEl(dataIndex, symbolEl);\n graphic.updateProps(symbolEl, {\n position: [targetLayout.x, targetLayout.y]\n }, seriesModel);\n var symbolPath = symbolEl.getSymbolPath();\n\n if (seriesScope.layout === 'radial') {\n var realRoot = virtualRoot.children[0];\n var rootLayout = realRoot.getLayout();\n var length = realRoot.children.length;\n var rad;\n var isLeft;\n\n if (targetLayout.x === rootLayout.x && node.isExpand === true) {\n var center = {};\n center.x = (realRoot.children[0].getLayout().x + realRoot.children[length - 1].getLayout().x) / 2;\n center.y = (realRoot.children[0].getLayout().y + realRoot.children[length - 1].getLayout().y) / 2;\n rad = Math.atan2(center.y - rootLayout.y, center.x - rootLayout.x);\n\n if (rad < 0) {\n rad = Math.PI * 2 + rad;\n }\n\n isLeft = center.x < rootLayout.x;\n\n if (isLeft) {\n rad = rad - Math.PI;\n }\n } else {\n rad = Math.atan2(targetLayout.y - rootLayout.y, targetLayout.x - rootLayout.x);\n\n if (rad < 0) {\n rad = Math.PI * 2 + rad;\n }\n\n if (node.children.length === 0 || node.children.length !== 0 && node.isExpand === false) {\n isLeft = targetLayout.x < rootLayout.x;\n\n if (isLeft) {\n rad = rad - Math.PI;\n }\n } else {\n isLeft = targetLayout.x > rootLayout.x;\n\n if (!isLeft) {\n rad = rad - Math.PI;\n }\n }\n }\n\n var textPosition = isLeft ? 'left' : 'right';\n var rotate = seriesScope.labelModel.get('rotate');\n var labelRotateRadian = rotate * (Math.PI / 180);\n symbolPath.setStyle({\n textPosition: seriesScope.labelModel.get('position') || textPosition,\n textRotation: rotate == null ? -rad : labelRotateRadian,\n textOrigin: 'center',\n verticalAlign: 'middle'\n });\n }\n\n drawEdge(seriesModel, node, virtualRoot, symbolEl, sourceOldLayout, sourceLayout, targetLayout, group, seriesScope);\n}\n\nfunction drawEdge(seriesModel, node, virtualRoot, symbolEl, sourceOldLayout, sourceLayout, targetLayout, group, seriesScope) {\n var edgeShape = seriesScope.edgeShape;\n var edge = symbolEl.__edge;\n\n if (edgeShape === 'curve') {\n if (node.parentNode && node.parentNode !== virtualRoot) {\n if (!edge) {\n edge = symbolEl.__edge = new graphic.BezierCurve({\n shape: getEdgeShape(seriesScope, sourceOldLayout, sourceOldLayout),\n style: zrUtil.defaults({\n opacity: 0,\n strokeNoScale: true\n }, seriesScope.lineStyle)\n });\n }\n\n graphic.updateProps(edge, {\n shape: getEdgeShape(seriesScope, sourceLayout, targetLayout),\n style: zrUtil.defaults({\n opacity: 1\n }, seriesScope.lineStyle)\n }, seriesModel);\n }\n } else if (edgeShape === 'polyline') {\n if (seriesScope.layout === 'orthogonal') {\n if (node !== virtualRoot && node.children && node.children.length !== 0 && node.isExpand === true) {\n var children = node.children;\n var childPoints = [];\n\n for (var i = 0; i < children.length; i++) {\n var childLayout = children[i].getLayout();\n childPoints.push([childLayout.x, childLayout.y]);\n }\n\n if (!edge) {\n edge = symbolEl.__edge = new TreeShape({\n shape: {\n parentPoint: [targetLayout.x, targetLayout.y],\n childPoints: [[targetLayout.x, targetLayout.y]],\n orient: seriesScope.orient,\n forkPosition: seriesScope.edgeForkPosition\n },\n style: zrUtil.defaults({\n opacity: 0,\n strokeNoScale: true\n }, seriesScope.lineStyle)\n });\n }\n\n graphic.updateProps(edge, {\n shape: {\n parentPoint: [targetLayout.x, targetLayout.y],\n childPoints: childPoints\n },\n style: zrUtil.defaults({\n opacity: 1\n }, seriesScope.lineStyle)\n }, seriesModel);\n }\n } else {}\n }\n\n group.add(edge);\n}\n\nfunction removeNode(data, dataIndex, symbolEl, group, seriesModel, seriesScope) {\n var node = data.tree.getNodeByDataIndex(dataIndex);\n var virtualRoot = data.tree.root;\n var itemModel = node.getModel();\n var seriesScope = getTreeNodeStyle(node, itemModel, seriesScope);\n var source = node.parentNode === virtualRoot ? node : node.parentNode || node;\n var edgeShape = seriesScope.edgeShape;\n var sourceLayout;\n\n while (sourceLayout = source.getLayout(), sourceLayout == null) {\n source = source.parentNode === virtualRoot ? source : source.parentNode || source;\n }\n\n graphic.updateProps(symbolEl, {\n position: [sourceLayout.x + 1, sourceLayout.y + 1]\n }, seriesModel, function () {\n group.remove(symbolEl);\n data.setItemGraphicEl(dataIndex, null);\n });\n symbolEl.fadeOut(null, {\n keepLabel: true\n });\n var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex);\n var sourceEdge = sourceSymbolEl.__edge; // 1. when expand the sub tree, delete the children node should delete the edge of\n // the source at the same time. because the polyline edge shape is only owned by the source.\n // 2.when the node is the only children of the source, delete the node should delete the edge of\n // the source at the same time. the same reason as above.\n\n var edge = symbolEl.__edge || (source.isExpand === false || source.children.length === 1 ? sourceEdge : undefined);\n var edgeShape = seriesScope.edgeShape;\n\n if (edge) {\n if (edgeShape === 'curve') {\n graphic.updateProps(edge, {\n shape: getEdgeShape(seriesScope, sourceLayout, sourceLayout),\n style: {\n opacity: 0\n }\n }, seriesModel, function () {\n group.remove(edge);\n });\n } else if (edgeShape === 'polyline' && seriesScope.layout === 'orthogonal') {\n graphic.updateProps(edge, {\n shape: {\n parentPoint: [sourceLayout.x, sourceLayout.y],\n childPoints: [[sourceLayout.x, sourceLayout.y]]\n },\n style: {\n opacity: 0\n }\n }, seriesModel, function () {\n group.remove(edge);\n });\n }\n }\n}\n\nfunction getEdgeShape(seriesScope, sourceLayout, targetLayout) {\n var cpx1;\n var cpy1;\n var cpx2;\n var cpy2;\n var orient = seriesScope.orient;\n var x1;\n var x2;\n var y1;\n var y2;\n\n if (seriesScope.layout === 'radial') {\n x1 = sourceLayout.rawX;\n y1 = sourceLayout.rawY;\n x2 = targetLayout.rawX;\n y2 = targetLayout.rawY;\n var radialCoor1 = radialCoordinate(x1, y1);\n var radialCoor2 = radialCoordinate(x1, y1 + (y2 - y1) * seriesScope.curvature);\n var radialCoor3 = radialCoordinate(x2, y2 + (y1 - y2) * seriesScope.curvature);\n var radialCoor4 = radialCoordinate(x2, y2);\n return {\n x1: radialCoor1.x,\n y1: radialCoor1.y,\n x2: radialCoor4.x,\n y2: radialCoor4.y,\n cpx1: radialCoor2.x,\n cpy1: radialCoor2.y,\n cpx2: radialCoor3.x,\n cpy2: radialCoor3.y\n };\n } else {\n x1 = sourceLayout.x;\n y1 = sourceLayout.y;\n x2 = targetLayout.x;\n y2 = targetLayout.y;\n\n if (orient === 'LR' || orient === 'RL') {\n cpx1 = x1 + (x2 - x1) * seriesScope.curvature;\n cpy1 = y1;\n cpx2 = x2 + (x1 - x2) * seriesScope.curvature;\n cpy2 = y2;\n }\n\n if (orient === 'TB' || orient === 'BT') {\n cpx1 = x1;\n cpy1 = y1 + (y2 - y1) * seriesScope.curvature;\n cpx2 = x2;\n cpy2 = y2 + (y1 - y2) * seriesScope.curvature;\n }\n }\n\n return {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n cpx1: cpx1,\n cpy1: cpy1,\n cpx2: cpx2,\n cpy2: cpy2\n };\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/tree/TreeView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/tree/layoutHelper.js": +/*!*************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/tree/layoutHelper.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar layout = __webpack_require__(/*! ../../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* A third-party license is embeded for some of the code in this file:\n* The tree layoutHelper implementation was originally copied from\n* \"d3.js\"(https://github.com/d3/d3-hierarchy) with\n* some modifications made for this project.\n* (see more details in the comment of the specific method below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the licence of \"d3.js\" (BSD-3Clause, see\n* ).\n*/\n\n/**\n * @file The layout algorithm of node-link tree diagrams. Here we using Reingold-Tilford algorithm to drawing\n * the tree.\n */\n\n/**\n * Initialize all computational message for following algorithm.\n *\n * @param {module:echarts/data/Tree~TreeNode} root The virtual root of the tree.\n */\nfunction init(root) {\n root.hierNode = {\n defaultAncestor: null,\n ancestor: root,\n prelim: 0,\n modifier: 0,\n change: 0,\n shift: 0,\n i: 0,\n thread: null\n };\n var nodes = [root];\n var node;\n var children;\n\n while (node = nodes.pop()) {\n // jshint ignore:line\n children = node.children;\n\n if (node.isExpand && children.length) {\n var n = children.length;\n\n for (var i = n - 1; i >= 0; i--) {\n var child = children[i];\n child.hierNode = {\n defaultAncestor: null,\n ancestor: child,\n prelim: 0,\n modifier: 0,\n change: 0,\n shift: 0,\n i: i,\n thread: null\n };\n nodes.push(child);\n }\n }\n }\n}\n/**\n * The implementation of this function was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * Computes a preliminary x coordinate for node. Before that, this function is\n * applied recursively to the children of node, as well as the function\n * apportion(). After spacing out the children by calling executeShifts(), the\n * node is placed to the midpoint of its outermost children.\n *\n * @param {module:echarts/data/Tree~TreeNode} node\n * @param {Function} separation\n */\n\n\nfunction firstWalk(node, separation) {\n var children = node.isExpand ? node.children : [];\n var siblings = node.parentNode.children;\n var subtreeW = node.hierNode.i ? siblings[node.hierNode.i - 1] : null;\n\n if (children.length) {\n executeShifts(node);\n var midPoint = (children[0].hierNode.prelim + children[children.length - 1].hierNode.prelim) / 2;\n\n if (subtreeW) {\n node.hierNode.prelim = subtreeW.hierNode.prelim + separation(node, subtreeW);\n node.hierNode.modifier = node.hierNode.prelim - midPoint;\n } else {\n node.hierNode.prelim = midPoint;\n }\n } else if (subtreeW) {\n node.hierNode.prelim = subtreeW.hierNode.prelim + separation(node, subtreeW);\n }\n\n node.parentNode.hierNode.defaultAncestor = apportion(node, subtreeW, node.parentNode.hierNode.defaultAncestor || siblings[0], separation);\n}\n/**\n * The implementation of this function was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * Computes all real x-coordinates by summing up the modifiers recursively.\n *\n * @param {module:echarts/data/Tree~TreeNode} node\n */\n\n\nfunction secondWalk(node) {\n var nodeX = node.hierNode.prelim + node.parentNode.hierNode.modifier;\n node.setLayout({\n x: nodeX\n }, true);\n node.hierNode.modifier += node.parentNode.hierNode.modifier;\n}\n\nfunction separation(cb) {\n return arguments.length ? cb : defaultSeparation;\n}\n/**\n * Transform the common coordinate to radial coordinate.\n *\n * @param {number} x\n * @param {number} y\n * @return {Object}\n */\n\n\nfunction radialCoordinate(x, y) {\n var radialCoor = {};\n x -= Math.PI / 2;\n radialCoor.x = y * Math.cos(x);\n radialCoor.y = y * Math.sin(x);\n return radialCoor;\n}\n/**\n * Get the layout position of the whole view.\n *\n * @param {module:echarts/model/Series} seriesModel the model object of sankey series\n * @param {module:echarts/ExtensionAPI} api provide the API list that the developer can call\n * @return {module:zrender/core/BoundingRect} size of rect to draw the sankey view\n */\n\n\nfunction getViewRect(seriesModel, api) {\n return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n}\n/**\n * All other shifts, applied to the smaller subtrees between w- and w+, are\n * performed by this function.\n *\n * The implementation of this function was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * @param {module:echarts/data/Tree~TreeNode} node\n */\n\n\nfunction executeShifts(node) {\n var children = node.children;\n var n = children.length;\n var shift = 0;\n var change = 0;\n\n while (--n >= 0) {\n var child = children[n];\n child.hierNode.prelim += shift;\n child.hierNode.modifier += shift;\n change += child.hierNode.change;\n shift += child.hierNode.shift + change;\n }\n}\n/**\n * The implementation of this function was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * The core of the algorithm. Here, a new subtree is combined with the\n * previous subtrees. Threads are used to traverse the inside and outside\n * contours of the left and right subtree up to the highest common level.\n * Whenever two nodes of the inside contours conflict, we compute the left\n * one of the greatest uncommon ancestors using the function nextAncestor()\n * and call moveSubtree() to shift the subtree and prepare the shifts of\n * smaller subtrees. Finally, we add a new thread (if necessary).\n *\n * @param {module:echarts/data/Tree~TreeNode} subtreeV\n * @param {module:echarts/data/Tree~TreeNode} subtreeW\n * @param {module:echarts/data/Tree~TreeNode} ancestor\n * @param {Function} separation\n * @return {module:echarts/data/Tree~TreeNode}\n */\n\n\nfunction apportion(subtreeV, subtreeW, ancestor, separation) {\n if (subtreeW) {\n var nodeOutRight = subtreeV;\n var nodeInRight = subtreeV;\n var nodeOutLeft = nodeInRight.parentNode.children[0];\n var nodeInLeft = subtreeW;\n var sumOutRight = nodeOutRight.hierNode.modifier;\n var sumInRight = nodeInRight.hierNode.modifier;\n var sumOutLeft = nodeOutLeft.hierNode.modifier;\n var sumInLeft = nodeInLeft.hierNode.modifier;\n\n while (nodeInLeft = nextRight(nodeInLeft), nodeInRight = nextLeft(nodeInRight), nodeInLeft && nodeInRight) {\n nodeOutRight = nextRight(nodeOutRight);\n nodeOutLeft = nextLeft(nodeOutLeft);\n nodeOutRight.hierNode.ancestor = subtreeV;\n var shift = nodeInLeft.hierNode.prelim + sumInLeft - nodeInRight.hierNode.prelim - sumInRight + separation(nodeInLeft, nodeInRight);\n\n if (shift > 0) {\n moveSubtree(nextAncestor(nodeInLeft, subtreeV, ancestor), subtreeV, shift);\n sumInRight += shift;\n sumOutRight += shift;\n }\n\n sumInLeft += nodeInLeft.hierNode.modifier;\n sumInRight += nodeInRight.hierNode.modifier;\n sumOutRight += nodeOutRight.hierNode.modifier;\n sumOutLeft += nodeOutLeft.hierNode.modifier;\n }\n\n if (nodeInLeft && !nextRight(nodeOutRight)) {\n nodeOutRight.hierNode.thread = nodeInLeft;\n nodeOutRight.hierNode.modifier += sumInLeft - sumOutRight;\n }\n\n if (nodeInRight && !nextLeft(nodeOutLeft)) {\n nodeOutLeft.hierNode.thread = nodeInRight;\n nodeOutLeft.hierNode.modifier += sumInRight - sumOutLeft;\n ancestor = subtreeV;\n }\n }\n\n return ancestor;\n}\n/**\n * This function is used to traverse the right contour of a subtree.\n * It returns the rightmost child of node or the thread of node. The function\n * returns null if and only if node is on the highest depth of its subtree.\n *\n * @param {module:echarts/data/Tree~TreeNode} node\n * @return {module:echarts/data/Tree~TreeNode}\n */\n\n\nfunction nextRight(node) {\n var children = node.children;\n return children.length && node.isExpand ? children[children.length - 1] : node.hierNode.thread;\n}\n/**\n * This function is used to traverse the left contour of a subtree (or a subforest).\n * It returns the leftmost child of node or the thread of node. The function\n * returns null if and only if node is on the highest depth of its subtree.\n *\n * @param {module:echarts/data/Tree~TreeNode} node\n * @return {module:echarts/data/Tree~TreeNode}\n */\n\n\nfunction nextLeft(node) {\n var children = node.children;\n return children.length && node.isExpand ? children[0] : node.hierNode.thread;\n}\n/**\n * If nodeInLeft’s ancestor is a sibling of node, returns nodeInLeft’s ancestor.\n * Otherwise, returns the specified ancestor.\n *\n * @param {module:echarts/data/Tree~TreeNode} nodeInLeft\n * @param {module:echarts/data/Tree~TreeNode} node\n * @param {module:echarts/data/Tree~TreeNode} ancestor\n * @return {module:echarts/data/Tree~TreeNode}\n */\n\n\nfunction nextAncestor(nodeInLeft, node, ancestor) {\n return nodeInLeft.hierNode.ancestor.parentNode === node.parentNode ? nodeInLeft.hierNode.ancestor : ancestor;\n}\n/**\n * The implementation of this function was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * Shifts the current subtree rooted at wr.\n * This is done by increasing prelim(w+) and modifier(w+) by shift.\n *\n * @param {module:echarts/data/Tree~TreeNode} wl\n * @param {module:echarts/data/Tree~TreeNode} wr\n * @param {number} shift [description]\n */\n\n\nfunction moveSubtree(wl, wr, shift) {\n var change = shift / (wr.hierNode.i - wl.hierNode.i);\n wr.hierNode.change -= change;\n wr.hierNode.shift += shift;\n wr.hierNode.modifier += shift;\n wr.hierNode.prelim += shift;\n wl.hierNode.change += change;\n}\n/**\n * The implementation of this function was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n */\n\n\nfunction defaultSeparation(node1, node2) {\n return node1.parentNode === node2.parentNode ? 1 : 2;\n}\n\nexports.init = init;\nexports.firstWalk = firstWalk;\nexports.secondWalk = secondWalk;\nexports.separation = separation;\nexports.radialCoordinate = radialCoordinate;\nexports.getViewRect = getViewRect;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/tree/layoutHelper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/tree/traversalHelper.js": +/*!****************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/tree/traversalHelper.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Traverse the tree from bottom to top and do something\n * @param {module:echarts/data/Tree~TreeNode} root The real root of the tree\n * @param {Function} callback\n */\nfunction eachAfter(root, callback, separation) {\n var nodes = [root];\n var next = [];\n var node;\n\n while (node = nodes.pop()) {\n // jshint ignore:line\n next.push(node);\n\n if (node.isExpand) {\n var children = node.children;\n\n if (children.length) {\n for (var i = 0; i < children.length; i++) {\n nodes.push(children[i]);\n }\n }\n }\n }\n\n while (node = next.pop()) {\n // jshint ignore:line\n callback(node, separation);\n }\n}\n/**\n * Traverse the tree from top to bottom and do something\n * @param {module:echarts/data/Tree~TreeNode} root The real root of the tree\n * @param {Function} callback\n */\n\n\nfunction eachBefore(root, callback) {\n var nodes = [root];\n var node;\n\n while (node = nodes.pop()) {\n // jshint ignore:line\n callback(node);\n\n if (node.isExpand) {\n var children = node.children;\n\n if (children.length) {\n for (var i = children.length - 1; i >= 0; i--) {\n nodes.push(children[i]);\n }\n }\n }\n }\n}\n\nexports.eachAfter = eachAfter;\nexports.eachBefore = eachBefore;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/tree/traversalHelper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/tree/treeAction.js": +/*!***********************************************************!*\ + !*** ./node_modules/echarts/lib/chart/tree/treeAction.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar _roamHelper = __webpack_require__(/*! ../../action/roamHelper */ \"./node_modules/echarts/lib/action/roamHelper.js\");\n\nvar updateCenterAndZoom = _roamHelper.updateCenterAndZoom;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerAction({\n type: 'treeExpandAndCollapse',\n event: 'treeExpandAndCollapse',\n update: 'update'\n}, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'series',\n subType: 'tree',\n query: payload\n }, function (seriesModel) {\n var dataIndex = payload.dataIndex;\n var tree = seriesModel.getData().tree;\n var node = tree.getNodeByDataIndex(dataIndex);\n node.isExpand = !node.isExpand;\n });\n});\necharts.registerAction({\n type: 'treeRoam',\n event: 'treeRoam',\n // Here we set 'none' instead of 'update', because roam action\n // just need to update the transform matrix without having to recalculate\n // the layout. So don't need to go through the whole update process, such\n // as 'dataPrcocess', 'coordSystemUpdate', 'layout' and so on.\n update: 'none'\n}, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'series',\n subType: 'tree',\n query: payload\n }, function (seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n var res = updateCenterAndZoom(coordSys, payload);\n seriesModel.setCenter && seriesModel.setCenter(res.center);\n seriesModel.setZoom && seriesModel.setZoom(res.zoom);\n });\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/tree/treeAction.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/tree/treeLayout.js": +/*!***********************************************************!*\ + !*** ./node_modules/echarts/lib/chart/tree/treeLayout.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _traversalHelper = __webpack_require__(/*! ./traversalHelper */ \"./node_modules/echarts/lib/chart/tree/traversalHelper.js\");\n\nvar eachAfter = _traversalHelper.eachAfter;\nvar eachBefore = _traversalHelper.eachBefore;\n\nvar _layoutHelper = __webpack_require__(/*! ./layoutHelper */ \"./node_modules/echarts/lib/chart/tree/layoutHelper.js\");\n\nvar init = _layoutHelper.init;\nvar firstWalk = _layoutHelper.firstWalk;\nvar secondWalk = _layoutHelper.secondWalk;\nvar sep = _layoutHelper.separation;\nvar radialCoordinate = _layoutHelper.radialCoordinate;\nvar getViewRect = _layoutHelper.getViewRect;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel, api) {\n ecModel.eachSeriesByType('tree', function (seriesModel) {\n commonLayout(seriesModel, api);\n });\n}\n\nfunction commonLayout(seriesModel, api) {\n var layoutInfo = getViewRect(seriesModel, api);\n seriesModel.layoutInfo = layoutInfo;\n var layout = seriesModel.get('layout');\n var width = 0;\n var height = 0;\n var separation = null;\n\n if (layout === 'radial') {\n width = 2 * Math.PI;\n height = Math.min(layoutInfo.height, layoutInfo.width) / 2;\n separation = sep(function (node1, node2) {\n return (node1.parentNode === node2.parentNode ? 1 : 2) / node1.depth;\n });\n } else {\n width = layoutInfo.width;\n height = layoutInfo.height;\n separation = sep();\n }\n\n var virtualRoot = seriesModel.getData().tree.root;\n var realRoot = virtualRoot.children[0];\n\n if (realRoot) {\n init(virtualRoot);\n eachAfter(realRoot, firstWalk, separation);\n virtualRoot.hierNode.modifier = -realRoot.hierNode.prelim;\n eachBefore(realRoot, secondWalk);\n var left = realRoot;\n var right = realRoot;\n var bottom = realRoot;\n eachBefore(realRoot, function (node) {\n var x = node.getLayout().x;\n\n if (x < left.getLayout().x) {\n left = node;\n }\n\n if (x > right.getLayout().x) {\n right = node;\n }\n\n if (node.depth > bottom.depth) {\n bottom = node;\n }\n });\n var delta = left === right ? 1 : separation(left, right) / 2;\n var tx = delta - left.getLayout().x;\n var kx = 0;\n var ky = 0;\n var coorX = 0;\n var coorY = 0;\n\n if (layout === 'radial') {\n kx = width / (right.getLayout().x + delta + tx); // here we use (node.depth - 1), bucause the real root's depth is 1\n\n ky = height / (bottom.depth - 1 || 1);\n eachBefore(realRoot, function (node) {\n coorX = (node.getLayout().x + tx) * kx;\n coorY = (node.depth - 1) * ky;\n var finalCoor = radialCoordinate(coorX, coorY);\n node.setLayout({\n x: finalCoor.x,\n y: finalCoor.y,\n rawX: coorX,\n rawY: coorY\n }, true);\n });\n } else {\n var orient = seriesModel.getOrient();\n\n if (orient === 'RL' || orient === 'LR') {\n ky = height / (right.getLayout().x + delta + tx);\n kx = width / (bottom.depth - 1 || 1);\n eachBefore(realRoot, function (node) {\n coorY = (node.getLayout().x + tx) * ky;\n coorX = orient === 'LR' ? (node.depth - 1) * kx : width - (node.depth - 1) * kx;\n node.setLayout({\n x: coorX,\n y: coorY\n }, true);\n });\n } else if (orient === 'TB' || orient === 'BT') {\n kx = width / (right.getLayout().x + delta + tx);\n ky = height / (bottom.depth - 1 || 1);\n eachBefore(realRoot, function (node) {\n coorX = (node.getLayout().x + tx) * kx;\n coorY = orient === 'TB' ? (node.depth - 1) * ky : height - (node.depth - 1) * ky;\n node.setLayout({\n x: coorX,\n y: coorY\n }, true);\n });\n }\n }\n }\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/tree/treeLayout.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/treemap.js": +/*!***************************************************!*\ + !*** ./node_modules/echarts/lib/chart/treemap.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n__webpack_require__(/*! ./treemap/TreemapSeries */ \"./node_modules/echarts/lib/chart/treemap/TreemapSeries.js\");\n\n__webpack_require__(/*! ./treemap/TreemapView */ \"./node_modules/echarts/lib/chart/treemap/TreemapView.js\");\n\n__webpack_require__(/*! ./treemap/treemapAction */ \"./node_modules/echarts/lib/chart/treemap/treemapAction.js\");\n\nvar treemapVisual = __webpack_require__(/*! ./treemap/treemapVisual */ \"./node_modules/echarts/lib/chart/treemap/treemapVisual.js\");\n\nvar treemapLayout = __webpack_require__(/*! ./treemap/treemapLayout */ \"./node_modules/echarts/lib/chart/treemap/treemapLayout.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerVisual(treemapVisual);\necharts.registerLayout(treemapLayout);\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/treemap.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/treemap/Breadcrumb.js": +/*!**************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/treemap/Breadcrumb.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar layout = __webpack_require__(/*! ../../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar _treeHelper = __webpack_require__(/*! ../helper/treeHelper */ \"./node_modules/echarts/lib/chart/helper/treeHelper.js\");\n\nvar wrapTreePathInfo = _treeHelper.wrapTreePathInfo;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar TEXT_PADDING = 8;\nvar ITEM_GAP = 8;\nvar ARRAY_LENGTH = 5;\n\nfunction Breadcrumb(containerGroup) {\n /**\n * @private\n * @type {module:zrender/container/Group}\n */\n this.group = new graphic.Group();\n containerGroup.add(this.group);\n}\n\nBreadcrumb.prototype = {\n constructor: Breadcrumb,\n render: function (seriesModel, api, targetNode, onSelect) {\n var model = seriesModel.getModel('breadcrumb');\n var thisGroup = this.group;\n thisGroup.removeAll();\n\n if (!model.get('show') || !targetNode) {\n return;\n }\n\n var normalStyleModel = model.getModel('itemStyle'); // var emphasisStyleModel = model.getModel('emphasis.itemStyle');\n\n var textStyleModel = normalStyleModel.getModel('textStyle');\n var layoutParam = {\n pos: {\n left: model.get('left'),\n right: model.get('right'),\n top: model.get('top'),\n bottom: model.get('bottom')\n },\n box: {\n width: api.getWidth(),\n height: api.getHeight()\n },\n emptyItemWidth: model.get('emptyItemWidth'),\n totalWidth: 0,\n renderList: []\n };\n\n this._prepare(targetNode, layoutParam, textStyleModel);\n\n this._renderContent(seriesModel, layoutParam, normalStyleModel, textStyleModel, onSelect);\n\n layout.positionElement(thisGroup, layoutParam.pos, layoutParam.box);\n },\n\n /**\n * Prepare render list and total width\n * @private\n */\n _prepare: function (targetNode, layoutParam, textStyleModel) {\n for (var node = targetNode; node; node = node.parentNode) {\n var text = node.getModel().get('name');\n var textRect = textStyleModel.getTextRect(text);\n var itemWidth = Math.max(textRect.width + TEXT_PADDING * 2, layoutParam.emptyItemWidth);\n layoutParam.totalWidth += itemWidth + ITEM_GAP;\n layoutParam.renderList.push({\n node: node,\n text: text,\n width: itemWidth\n });\n }\n },\n\n /**\n * @private\n */\n _renderContent: function (seriesModel, layoutParam, normalStyleModel, textStyleModel, onSelect) {\n // Start rendering.\n var lastX = 0;\n var emptyItemWidth = layoutParam.emptyItemWidth;\n var height = seriesModel.get('breadcrumb.height');\n var availableSize = layout.getAvailableSize(layoutParam.pos, layoutParam.box);\n var totalWidth = layoutParam.totalWidth;\n var renderList = layoutParam.renderList;\n\n for (var i = renderList.length - 1; i >= 0; i--) {\n var item = renderList[i];\n var itemNode = item.node;\n var itemWidth = item.width;\n var text = item.text; // Hdie text and shorten width if necessary.\n\n if (totalWidth > availableSize.width) {\n totalWidth -= itemWidth - emptyItemWidth;\n itemWidth = emptyItemWidth;\n text = null;\n }\n\n var el = new graphic.Polygon({\n shape: {\n points: makeItemPoints(lastX, 0, itemWidth, height, i === renderList.length - 1, i === 0)\n },\n style: zrUtil.defaults(normalStyleModel.getItemStyle(), {\n lineJoin: 'bevel',\n text: text,\n textFill: textStyleModel.getTextColor(),\n textFont: textStyleModel.getFont()\n }),\n z: 10,\n onclick: zrUtil.curry(onSelect, itemNode)\n });\n this.group.add(el);\n packEventData(el, seriesModel, itemNode);\n lastX += itemWidth + ITEM_GAP;\n }\n },\n\n /**\n * @override\n */\n remove: function () {\n this.group.removeAll();\n }\n};\n\nfunction makeItemPoints(x, y, itemWidth, itemHeight, head, tail) {\n var points = [[head ? x : x - ARRAY_LENGTH, y], [x + itemWidth, y], [x + itemWidth, y + itemHeight], [head ? x : x - ARRAY_LENGTH, y + itemHeight]];\n !tail && points.splice(2, 0, [x + itemWidth + ARRAY_LENGTH, y + itemHeight / 2]);\n !head && points.push([x, y + itemHeight / 2]);\n return points;\n} // Package custom mouse event.\n\n\nfunction packEventData(el, seriesModel, itemNode) {\n el.eventData = {\n componentType: 'series',\n componentSubType: 'treemap',\n componentIndex: seriesModel.componentIndex,\n seriesIndex: seriesModel.componentIndex,\n seriesName: seriesModel.name,\n seriesType: 'treemap',\n selfType: 'breadcrumb',\n // Distinguish with click event on treemap node.\n nodeData: {\n dataIndex: itemNode && itemNode.dataIndex,\n name: itemNode && itemNode.name\n },\n treePathInfo: itemNode && wrapTreePathInfo(itemNode, seriesModel)\n };\n}\n\nvar _default = Breadcrumb;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/treemap/Breadcrumb.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/treemap/TreemapSeries.js": +/*!*****************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/treemap/TreemapSeries.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar SeriesModel = __webpack_require__(/*! ../../model/Series */ \"./node_modules/echarts/lib/model/Series.js\");\n\nvar Tree = __webpack_require__(/*! ../../data/Tree */ \"./node_modules/echarts/lib/data/Tree.js\");\n\nvar Model = __webpack_require__(/*! ../../model/Model */ \"./node_modules/echarts/lib/model/Model.js\");\n\nvar _format = __webpack_require__(/*! ../../util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\nvar encodeHTML = _format.encodeHTML;\nvar addCommas = _format.addCommas;\n\nvar _treeHelper = __webpack_require__(/*! ../helper/treeHelper */ \"./node_modules/echarts/lib/chart/helper/treeHelper.js\");\n\nvar wrapTreePathInfo = _treeHelper.wrapTreePathInfo;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n type: 'series.treemap',\n layoutMode: 'box',\n dependencies: ['grid', 'polar'],\n preventUsingHoverLayer: true,\n\n /**\n * @type {module:echarts/data/Tree~Node}\n */\n _viewRoot: null,\n defaultOption: {\n // Disable progressive rendering\n progressive: 0,\n // center: ['50%', '50%'], // not supported in ec3.\n // size: ['80%', '80%'], // deprecated, compatible with ec2.\n left: 'center',\n top: 'middle',\n right: null,\n bottom: null,\n width: '80%',\n height: '80%',\n sort: true,\n // Can be null or false or true\n // (order by desc default, asc not supported yet (strange effect))\n clipWindow: 'origin',\n // Size of clipped window when zooming. 'origin' or 'fullscreen'\n squareRatio: 0.5 * (1 + Math.sqrt(5)),\n // golden ratio\n leafDepth: null,\n // Nodes on depth from root are regarded as leaves.\n // Count from zero (zero represents only view root).\n drillDownIcon: '▶',\n // Use html character temporarily because it is complicated\n // to align specialized icon. ▷▶❒❐▼✚\n zoomToNodeRatio: 0.32 * 0.32,\n // Be effective when using zoomToNode. Specify the proportion of the\n // target node area in the view area.\n roam: true,\n // true, false, 'scale' or 'zoom', 'move'.\n nodeClick: 'zoomToNode',\n // Leaf node click behaviour: 'zoomToNode', 'link', false.\n // If leafDepth is set and clicking a node which has children but\n // be on left depth, the behaviour would be changing root. Otherwise\n // use behavious defined above.\n animation: true,\n animationDurationUpdate: 900,\n animationEasing: 'quinticInOut',\n breadcrumb: {\n show: true,\n height: 22,\n left: 'center',\n top: 'bottom',\n // right\n // bottom\n emptyItemWidth: 25,\n // Width of empty node.\n itemStyle: {\n color: 'rgba(0,0,0,0.7)',\n //'#5793f3',\n borderColor: 'rgba(255,255,255,0.7)',\n borderWidth: 1,\n shadowColor: 'rgba(150,150,150,1)',\n shadowBlur: 3,\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n textStyle: {\n color: '#fff'\n }\n },\n emphasis: {\n textStyle: {}\n }\n },\n label: {\n show: true,\n // Do not use textDistance, for ellipsis rect just the same as treemap node rect.\n distance: 0,\n padding: 5,\n position: 'inside',\n // Can be [5, '5%'] or position stirng like 'insideTopLeft', ...\n // formatter: null,\n color: '#fff',\n ellipsis: true // align\n // verticalAlign\n\n },\n upperLabel: {\n // Label when node is parent.\n show: false,\n position: [0, '50%'],\n height: 20,\n // formatter: null,\n color: '#fff',\n ellipsis: true,\n // align: null,\n verticalAlign: 'middle'\n },\n itemStyle: {\n color: null,\n // Can be 'none' if not necessary.\n colorAlpha: null,\n // Can be 'none' if not necessary.\n colorSaturation: null,\n // Can be 'none' if not necessary.\n borderWidth: 0,\n gapWidth: 0,\n borderColor: '#fff',\n borderColorSaturation: null // If specified, borderColor will be ineffective, and the\n // border color is evaluated by color of current node and\n // borderColorSaturation.\n\n },\n emphasis: {\n upperLabel: {\n show: true,\n position: [0, '50%'],\n color: '#fff',\n ellipsis: true,\n verticalAlign: 'middle'\n }\n },\n visualDimension: 0,\n // Can be 0, 1, 2, 3.\n visualMin: null,\n visualMax: null,\n color: [],\n // + treemapSeries.color should not be modified. Please only modified\n // level[n].color (if necessary).\n // + Specify color list of each level. level[0].color would be global\n // color list if not specified. (see method `setDefault`).\n // + But set as a empty array to forbid fetch color from global palette\n // when using nodeModel.get('color'), otherwise nodes on deep level\n // will always has color palette set and are not able to inherit color\n // from parent node.\n // + TreemapSeries.color can not be set as 'none', otherwise effect\n // legend color fetching (see seriesColor.js).\n colorAlpha: null,\n // Array. Specify color alpha range of each level, like [0.2, 0.8]\n colorSaturation: null,\n // Array. Specify color saturation of each level, like [0.2, 0.5]\n colorMappingBy: 'index',\n // 'value' or 'index' or 'id'.\n visibleMin: 10,\n // If area less than this threshold (unit: pixel^2), node will not\n // be rendered. Only works when sort is 'asc' or 'desc'.\n childrenVisibleMin: null,\n // If area of a node less than this threshold (unit: pixel^2),\n // grandchildren will not show.\n // Why grandchildren? If not grandchildren but children,\n // some siblings show children and some not,\n // the appearance may be mess and not consistent,\n levels: [] // Each item: {\n // visibleMin, itemStyle, visualDimension, label\n // }\n // data: {\n // value: [],\n // children: [],\n // link: 'http://xxx.xxx.xxx',\n // target: 'blank' or 'self'\n // }\n\n },\n\n /**\n * @override\n */\n getInitialData: function (option, ecModel) {\n // Create a virtual root.\n var root = {\n name: option.name,\n children: option.data\n };\n completeTreeValue(root);\n var levels = option.levels || []; // Used in \"visual priority\" in `treemapVisual.js`.\n // This way is a little tricky, must satisfy the precondition:\n // 1. There is no `treeNode.getModel('itemStyle.xxx')` used.\n // 2. The `Model.prototype.getModel()` will not use any clone-like way.\n\n var designatedVisualItemStyle = this.designatedVisualItemStyle = {};\n var designatedVisualModel = new Model({\n itemStyle: designatedVisualItemStyle\n }, this, ecModel);\n levels = option.levels = setDefault(levels, ecModel);\n var levelModels = zrUtil.map(levels || [], function (levelDefine) {\n return new Model(levelDefine, designatedVisualModel, ecModel);\n }, this); // Make sure always a new tree is created when setOption,\n // in TreemapView, we check whether oldTree === newTree\n // to choose mappings approach among old shapes and new shapes.\n\n var tree = Tree.createTree(root, this, beforeLink);\n\n function beforeLink(nodeData) {\n nodeData.wrapMethod('getItemModel', function (model, idx) {\n var node = tree.getNodeByDataIndex(idx);\n var levelModel = levelModels[node.depth]; // If no levelModel, we also need `designatedVisualModel`.\n\n model.parentModel = levelModel || designatedVisualModel;\n return model;\n });\n }\n\n return tree.data;\n },\n optionUpdated: function () {\n this.resetViewRoot();\n },\n\n /**\n * @override\n * @param {number} dataIndex\n * @param {boolean} [mutipleSeries=false]\n */\n formatTooltip: function (dataIndex) {\n var data = this.getData();\n var value = this.getRawValue(dataIndex);\n var formattedValue = zrUtil.isArray(value) ? addCommas(value[0]) : addCommas(value);\n var name = data.getName(dataIndex);\n return encodeHTML(name + ': ' + formattedValue);\n },\n\n /**\n * Add tree path to tooltip param\n *\n * @override\n * @param {number} dataIndex\n * @return {Object}\n */\n getDataParams: function (dataIndex) {\n var params = SeriesModel.prototype.getDataParams.apply(this, arguments);\n var node = this.getData().tree.getNodeByDataIndex(dataIndex);\n params.treePathInfo = wrapTreePathInfo(node, this);\n return params;\n },\n\n /**\n * @public\n * @param {Object} layoutInfo {\n * x: containerGroup x\n * y: containerGroup y\n * width: containerGroup width\n * height: containerGroup height\n * }\n */\n setLayoutInfo: function (layoutInfo) {\n /**\n * @readOnly\n * @type {Object}\n */\n this.layoutInfo = this.layoutInfo || {};\n zrUtil.extend(this.layoutInfo, layoutInfo);\n },\n\n /**\n * @param {string} id\n * @return {number} index\n */\n mapIdToIndex: function (id) {\n // A feature is implemented:\n // index is monotone increasing with the sequence of\n // input id at the first time.\n // This feature can make sure that each data item and its\n // mapped color have the same index between data list and\n // color list at the beginning, which is useful for user\n // to adjust data-color mapping.\n\n /**\n * @private\n * @type {Object}\n */\n var idIndexMap = this._idIndexMap;\n\n if (!idIndexMap) {\n idIndexMap = this._idIndexMap = zrUtil.createHashMap();\n /**\n * @private\n * @type {number}\n */\n\n this._idIndexMapCount = 0;\n }\n\n var index = idIndexMap.get(id);\n\n if (index == null) {\n idIndexMap.set(id, index = this._idIndexMapCount++);\n }\n\n return index;\n },\n getViewRoot: function () {\n return this._viewRoot;\n },\n\n /**\n * @param {module:echarts/data/Tree~Node} [viewRoot]\n */\n resetViewRoot: function (viewRoot) {\n viewRoot ? this._viewRoot = viewRoot : viewRoot = this._viewRoot;\n var root = this.getRawData().tree.root;\n\n if (!viewRoot || viewRoot !== root && !root.contains(viewRoot)) {\n this._viewRoot = root;\n }\n }\n});\n/**\n * @param {Object} dataNode\n */\n\n\nfunction completeTreeValue(dataNode) {\n // Postorder travel tree.\n // If value of none-leaf node is not set,\n // calculate it by suming up the value of all children.\n var sum = 0;\n zrUtil.each(dataNode.children, function (child) {\n completeTreeValue(child);\n var childValue = child.value;\n zrUtil.isArray(childValue) && (childValue = childValue[0]);\n sum += childValue;\n });\n var thisValue = dataNode.value;\n\n if (zrUtil.isArray(thisValue)) {\n thisValue = thisValue[0];\n }\n\n if (thisValue == null || isNaN(thisValue)) {\n thisValue = sum;\n } // Value should not less than 0.\n\n\n if (thisValue < 0) {\n thisValue = 0;\n }\n\n zrUtil.isArray(dataNode.value) ? dataNode.value[0] = thisValue : dataNode.value = thisValue;\n}\n/**\n * set default to level configuration\n */\n\n\nfunction setDefault(levels, ecModel) {\n var globalColorList = ecModel.get('color');\n\n if (!globalColorList) {\n return;\n }\n\n levels = levels || [];\n var hasColorDefine;\n zrUtil.each(levels, function (levelDefine) {\n var model = new Model(levelDefine);\n var modelColor = model.get('color');\n\n if (model.get('itemStyle.color') || modelColor && modelColor !== 'none') {\n hasColorDefine = true;\n }\n });\n\n if (!hasColorDefine) {\n var level0 = levels[0] || (levels[0] = {});\n level0.color = globalColorList.slice();\n }\n\n return levels;\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/treemap/TreemapSeries.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/treemap/TreemapView.js": +/*!***************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/treemap/TreemapView.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar DataDiffer = __webpack_require__(/*! ../../data/DataDiffer */ \"./node_modules/echarts/lib/data/DataDiffer.js\");\n\nvar helper = __webpack_require__(/*! ../helper/treeHelper */ \"./node_modules/echarts/lib/chart/helper/treeHelper.js\");\n\nvar Breadcrumb = __webpack_require__(/*! ./Breadcrumb */ \"./node_modules/echarts/lib/chart/treemap/Breadcrumb.js\");\n\nvar RoamController = __webpack_require__(/*! ../../component/helper/RoamController */ \"./node_modules/echarts/lib/component/helper/RoamController.js\");\n\nvar BoundingRect = __webpack_require__(/*! zrender/lib/core/BoundingRect */ \"./node_modules/zrender/lib/core/BoundingRect.js\");\n\nvar matrix = __webpack_require__(/*! zrender/lib/core/matrix */ \"./node_modules/zrender/lib/core/matrix.js\");\n\nvar animationUtil = __webpack_require__(/*! ../../util/animation */ \"./node_modules/echarts/lib/util/animation.js\");\n\nvar makeStyleMapper = __webpack_require__(/*! ../../model/mixin/makeStyleMapper */ \"./node_modules/echarts/lib/model/mixin/makeStyleMapper.js\");\n\nvar _format = __webpack_require__(/*! ../../util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\nvar windowOpen = _format.windowOpen;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar bind = zrUtil.bind;\nvar Group = graphic.Group;\nvar Rect = graphic.Rect;\nvar each = zrUtil.each;\nvar DRAG_THRESHOLD = 3;\nvar PATH_LABEL_NOAMAL = ['label'];\nvar PATH_LABEL_EMPHASIS = ['emphasis', 'label'];\nvar PATH_UPPERLABEL_NORMAL = ['upperLabel'];\nvar PATH_UPPERLABEL_EMPHASIS = ['emphasis', 'upperLabel'];\nvar Z_BASE = 10; // Should bigger than every z.\n\nvar Z_BG = 1;\nvar Z_CONTENT = 2;\nvar getItemStyleEmphasis = makeStyleMapper([['fill', 'color'], // `borderColor` and `borderWidth` has been occupied,\n// so use `stroke` to indicate the stroke of the rect.\n['stroke', 'strokeColor'], ['lineWidth', 'strokeWidth'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor']]);\n\nvar getItemStyleNormal = function (model) {\n // Normal style props should include emphasis style props.\n var itemStyle = getItemStyleEmphasis(model); // Clear styles set by emphasis.\n\n itemStyle.stroke = itemStyle.fill = itemStyle.lineWidth = null;\n return itemStyle;\n};\n\nvar _default = echarts.extendChartView({\n type: 'treemap',\n\n /**\n * @override\n */\n init: function (o, api) {\n /**\n * @private\n * @type {module:zrender/container/Group}\n */\n this._containerGroup;\n /**\n * @private\n * @type {Object.>}\n */\n\n this._storage = createStorage();\n /**\n * @private\n * @type {module:echarts/data/Tree}\n */\n\n this._oldTree;\n /**\n * @private\n * @type {module:echarts/chart/treemap/Breadcrumb}\n */\n\n this._breadcrumb;\n /**\n * @private\n * @type {module:echarts/component/helper/RoamController}\n */\n\n this._controller;\n /**\n * 'ready', 'animating'\n * @private\n */\n\n this._state = 'ready';\n },\n\n /**\n * @override\n */\n render: function (seriesModel, ecModel, api, payload) {\n var models = ecModel.findComponents({\n mainType: 'series',\n subType: 'treemap',\n query: payload\n });\n\n if (zrUtil.indexOf(models, seriesModel) < 0) {\n return;\n }\n\n this.seriesModel = seriesModel;\n this.api = api;\n this.ecModel = ecModel;\n var types = ['treemapZoomToNode', 'treemapRootToNode'];\n var targetInfo = helper.retrieveTargetInfo(payload, types, seriesModel);\n var payloadType = payload && payload.type;\n var layoutInfo = seriesModel.layoutInfo;\n var isInit = !this._oldTree;\n var thisStorage = this._storage; // Mark new root when action is treemapRootToNode.\n\n var reRoot = payloadType === 'treemapRootToNode' && targetInfo && thisStorage ? {\n rootNodeGroup: thisStorage.nodeGroup[targetInfo.node.getRawIndex()],\n direction: payload.direction\n } : null;\n\n var containerGroup = this._giveContainerGroup(layoutInfo);\n\n var renderResult = this._doRender(containerGroup, seriesModel, reRoot);\n\n !isInit && (!payloadType || payloadType === 'treemapZoomToNode' || payloadType === 'treemapRootToNode') ? this._doAnimation(containerGroup, renderResult, seriesModel, reRoot) : renderResult.renderFinally();\n\n this._resetController(api);\n\n this._renderBreadcrumb(seriesModel, api, targetInfo);\n },\n\n /**\n * @private\n */\n _giveContainerGroup: function (layoutInfo) {\n var containerGroup = this._containerGroup;\n\n if (!containerGroup) {\n // FIXME\n // 加一层containerGroup是为了clip,但是现在clip功能并没有实现。\n containerGroup = this._containerGroup = new Group();\n\n this._initEvents(containerGroup);\n\n this.group.add(containerGroup);\n }\n\n containerGroup.attr('position', [layoutInfo.x, layoutInfo.y]);\n return containerGroup;\n },\n\n /**\n * @private\n */\n _doRender: function (containerGroup, seriesModel, reRoot) {\n var thisTree = seriesModel.getData().tree;\n var oldTree = this._oldTree; // Clear last shape records.\n\n var lastsForAnimation = createStorage();\n var thisStorage = createStorage();\n var oldStorage = this._storage;\n var willInvisibleEls = [];\n var doRenderNode = zrUtil.curry(renderNode, seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls); // Notice: when thisTree and oldTree are the same tree (see list.cloneShallow),\n // the oldTree is actually losted, so we can not find all of the old graphic\n // elements from tree. So we use this stragegy: make element storage, move\n // from old storage to new storage, clear old storage.\n\n dualTravel(thisTree.root ? [thisTree.root] : [], oldTree && oldTree.root ? [oldTree.root] : [], containerGroup, thisTree === oldTree || !oldTree, 0); // Process all removing.\n\n var willDeleteEls = clearStorage(oldStorage);\n this._oldTree = thisTree;\n this._storage = thisStorage;\n return {\n lastsForAnimation: lastsForAnimation,\n willDeleteEls: willDeleteEls,\n renderFinally: renderFinally\n };\n\n function dualTravel(thisViewChildren, oldViewChildren, parentGroup, sameTree, depth) {\n // When 'render' is triggered by action,\n // 'this' and 'old' may be the same tree,\n // we use rawIndex in that case.\n if (sameTree) {\n oldViewChildren = thisViewChildren;\n each(thisViewChildren, function (child, index) {\n !child.isRemoved() && processNode(index, index);\n });\n } // Diff hierarchically (diff only in each subtree, but not whole).\n // because, consistency of view is important.\n else {\n new DataDiffer(oldViewChildren, thisViewChildren, getKey, getKey).add(processNode).update(processNode).remove(zrUtil.curry(processNode, null)).execute();\n }\n\n function getKey(node) {\n // Identify by name or raw index.\n return node.getId();\n }\n\n function processNode(newIndex, oldIndex) {\n var thisNode = newIndex != null ? thisViewChildren[newIndex] : null;\n var oldNode = oldIndex != null ? oldViewChildren[oldIndex] : null;\n var group = doRenderNode(thisNode, oldNode, parentGroup, depth);\n group && dualTravel(thisNode && thisNode.viewChildren || [], oldNode && oldNode.viewChildren || [], group, sameTree, depth + 1);\n }\n }\n\n function clearStorage(storage) {\n var willDeleteEls = createStorage();\n storage && each(storage, function (store, storageName) {\n var delEls = willDeleteEls[storageName];\n each(store, function (el) {\n el && (delEls.push(el), el.__tmWillDelete = 1);\n });\n });\n return willDeleteEls;\n }\n\n function renderFinally() {\n each(willDeleteEls, function (els) {\n each(els, function (el) {\n el.parent && el.parent.remove(el);\n });\n });\n each(willInvisibleEls, function (el) {\n el.invisible = true; // Setting invisible is for optimizing, so no need to set dirty,\n // just mark as invisible.\n\n el.dirty();\n });\n }\n },\n\n /**\n * @private\n */\n _doAnimation: function (containerGroup, renderResult, seriesModel, reRoot) {\n if (!seriesModel.get('animation')) {\n return;\n }\n\n var duration = seriesModel.get('animationDurationUpdate');\n var easing = seriesModel.get('animationEasing');\n var animationWrap = animationUtil.createWrap(); // Make delete animations.\n\n each(renderResult.willDeleteEls, function (store, storageName) {\n each(store, function (el, rawIndex) {\n if (el.invisible) {\n return;\n }\n\n var parent = el.parent; // Always has parent, and parent is nodeGroup.\n\n var target;\n\n if (reRoot && reRoot.direction === 'drillDown') {\n target = parent === reRoot.rootNodeGroup // This is the content element of view root.\n // Only `content` will enter this branch, because\n // `background` and `nodeGroup` will not be deleted.\n ? {\n shape: {\n x: 0,\n y: 0,\n width: parent.__tmNodeWidth,\n height: parent.__tmNodeHeight\n },\n style: {\n opacity: 0\n } // Others.\n\n } : {\n style: {\n opacity: 0\n }\n };\n } else {\n var targetX = 0;\n var targetY = 0;\n\n if (!parent.__tmWillDelete) {\n // Let node animate to right-bottom corner, cooperating with fadeout,\n // which is appropriate for user understanding.\n // Divided by 2 for reRoot rolling up effect.\n targetX = parent.__tmNodeWidth / 2;\n targetY = parent.__tmNodeHeight / 2;\n }\n\n target = storageName === 'nodeGroup' ? {\n position: [targetX, targetY],\n style: {\n opacity: 0\n }\n } : {\n shape: {\n x: targetX,\n y: targetY,\n width: 0,\n height: 0\n },\n style: {\n opacity: 0\n }\n };\n }\n\n target && animationWrap.add(el, target, duration, easing);\n });\n }); // Make other animations\n\n each(this._storage, function (store, storageName) {\n each(store, function (el, rawIndex) {\n var last = renderResult.lastsForAnimation[storageName][rawIndex];\n var target = {};\n\n if (!last) {\n return;\n }\n\n if (storageName === 'nodeGroup') {\n if (last.old) {\n target.position = el.position.slice();\n el.attr('position', last.old);\n }\n } else {\n if (last.old) {\n target.shape = zrUtil.extend({}, el.shape);\n el.setShape(last.old);\n }\n\n if (last.fadein) {\n el.setStyle('opacity', 0);\n target.style = {\n opacity: 1\n };\n } // When animation is stopped for succedent animation starting,\n // el.style.opacity might not be 1\n else if (el.style.opacity !== 1) {\n target.style = {\n opacity: 1\n };\n }\n }\n\n animationWrap.add(el, target, duration, easing);\n });\n }, this);\n this._state = 'animating';\n animationWrap.done(bind(function () {\n this._state = 'ready';\n renderResult.renderFinally();\n }, this)).start();\n },\n\n /**\n * @private\n */\n _resetController: function (api) {\n var controller = this._controller; // Init controller.\n\n if (!controller) {\n controller = this._controller = new RoamController(api.getZr());\n controller.enable(this.seriesModel.get('roam'));\n controller.on('pan', bind(this._onPan, this));\n controller.on('zoom', bind(this._onZoom, this));\n }\n\n var rect = new BoundingRect(0, 0, api.getWidth(), api.getHeight());\n controller.setPointerChecker(function (e, x, y) {\n return rect.contain(x, y);\n });\n },\n\n /**\n * @private\n */\n _clearController: function () {\n var controller = this._controller;\n\n if (controller) {\n controller.dispose();\n controller = null;\n }\n },\n\n /**\n * @private\n */\n _onPan: function (e) {\n if (this._state !== 'animating' && (Math.abs(e.dx) > DRAG_THRESHOLD || Math.abs(e.dy) > DRAG_THRESHOLD)) {\n // These param must not be cached.\n var root = this.seriesModel.getData().tree.root;\n\n if (!root) {\n return;\n }\n\n var rootLayout = root.getLayout();\n\n if (!rootLayout) {\n return;\n }\n\n this.api.dispatchAction({\n type: 'treemapMove',\n from: this.uid,\n seriesId: this.seriesModel.id,\n rootRect: {\n x: rootLayout.x + e.dx,\n y: rootLayout.y + e.dy,\n width: rootLayout.width,\n height: rootLayout.height\n }\n });\n }\n },\n\n /**\n * @private\n */\n _onZoom: function (e) {\n var mouseX = e.originX;\n var mouseY = e.originY;\n\n if (this._state !== 'animating') {\n // These param must not be cached.\n var root = this.seriesModel.getData().tree.root;\n\n if (!root) {\n return;\n }\n\n var rootLayout = root.getLayout();\n\n if (!rootLayout) {\n return;\n }\n\n var rect = new BoundingRect(rootLayout.x, rootLayout.y, rootLayout.width, rootLayout.height);\n var layoutInfo = this.seriesModel.layoutInfo; // Transform mouse coord from global to containerGroup.\n\n mouseX -= layoutInfo.x;\n mouseY -= layoutInfo.y; // Scale root bounding rect.\n\n var m = matrix.create();\n matrix.translate(m, m, [-mouseX, -mouseY]);\n matrix.scale(m, m, [e.scale, e.scale]);\n matrix.translate(m, m, [mouseX, mouseY]);\n rect.applyTransform(m);\n this.api.dispatchAction({\n type: 'treemapRender',\n from: this.uid,\n seriesId: this.seriesModel.id,\n rootRect: {\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height\n }\n });\n }\n },\n\n /**\n * @private\n */\n _initEvents: function (containerGroup) {\n containerGroup.on('click', function (e) {\n if (this._state !== 'ready') {\n return;\n }\n\n var nodeClick = this.seriesModel.get('nodeClick', true);\n\n if (!nodeClick) {\n return;\n }\n\n var targetInfo = this.findTarget(e.offsetX, e.offsetY);\n\n if (!targetInfo) {\n return;\n }\n\n var node = targetInfo.node;\n\n if (node.getLayout().isLeafRoot) {\n this._rootToNode(targetInfo);\n } else {\n if (nodeClick === 'zoomToNode') {\n this._zoomToNode(targetInfo);\n } else if (nodeClick === 'link') {\n var itemModel = node.hostTree.data.getItemModel(node.dataIndex);\n var link = itemModel.get('link', true);\n var linkTarget = itemModel.get('target', true) || 'blank';\n link && windowOpen(link, linkTarget);\n }\n }\n }, this);\n },\n\n /**\n * @private\n */\n _renderBreadcrumb: function (seriesModel, api, targetInfo) {\n if (!targetInfo) {\n targetInfo = seriesModel.get('leafDepth', true) != null ? {\n node: seriesModel.getViewRoot() // FIXME\n // better way?\n // Find breadcrumb tail on center of containerGroup.\n\n } : this.findTarget(api.getWidth() / 2, api.getHeight() / 2);\n\n if (!targetInfo) {\n targetInfo = {\n node: seriesModel.getData().tree.root\n };\n }\n }\n\n (this._breadcrumb || (this._breadcrumb = new Breadcrumb(this.group))).render(seriesModel, api, targetInfo.node, bind(onSelect, this));\n\n function onSelect(node) {\n if (this._state !== 'animating') {\n helper.aboveViewRoot(seriesModel.getViewRoot(), node) ? this._rootToNode({\n node: node\n }) : this._zoomToNode({\n node: node\n });\n }\n }\n },\n\n /**\n * @override\n */\n remove: function () {\n this._clearController();\n\n this._containerGroup && this._containerGroup.removeAll();\n this._storage = createStorage();\n this._state = 'ready';\n this._breadcrumb && this._breadcrumb.remove();\n },\n dispose: function () {\n this._clearController();\n },\n\n /**\n * @private\n */\n _zoomToNode: function (targetInfo) {\n this.api.dispatchAction({\n type: 'treemapZoomToNode',\n from: this.uid,\n seriesId: this.seriesModel.id,\n targetNode: targetInfo.node\n });\n },\n\n /**\n * @private\n */\n _rootToNode: function (targetInfo) {\n this.api.dispatchAction({\n type: 'treemapRootToNode',\n from: this.uid,\n seriesId: this.seriesModel.id,\n targetNode: targetInfo.node\n });\n },\n\n /**\n * @public\n * @param {number} x Global coord x.\n * @param {number} y Global coord y.\n * @return {Object} info If not found, return undefined;\n * @return {number} info.node Target node.\n * @return {number} info.offsetX x refer to target node.\n * @return {number} info.offsetY y refer to target node.\n */\n findTarget: function (x, y) {\n var targetInfo;\n var viewRoot = this.seriesModel.getViewRoot();\n viewRoot.eachNode({\n attr: 'viewChildren',\n order: 'preorder'\n }, function (node) {\n var bgEl = this._storage.background[node.getRawIndex()]; // If invisible, there might be no element.\n\n\n if (bgEl) {\n var point = bgEl.transformCoordToLocal(x, y);\n var shape = bgEl.shape; // For performance consideration, dont use 'getBoundingRect'.\n\n if (shape.x <= point[0] && point[0] <= shape.x + shape.width && shape.y <= point[1] && point[1] <= shape.y + shape.height) {\n targetInfo = {\n node: node,\n offsetX: point[0],\n offsetY: point[1]\n };\n } else {\n return false; // Suppress visit subtree.\n }\n }\n }, this);\n return targetInfo;\n }\n});\n/**\n * @inner\n */\n\n\nfunction createStorage() {\n return {\n nodeGroup: [],\n background: [],\n content: []\n };\n}\n/**\n * @inner\n * @return Return undefined means do not travel further.\n */\n\n\nfunction renderNode(seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls, thisNode, oldNode, parentGroup, depth) {\n // Whether under viewRoot.\n if (!thisNode) {\n // Deleting nodes will be performed finally. This method just find\n // element from old storage, or create new element, set them to new\n // storage, and set styles.\n return;\n } // -------------------------------------------------------------------\n // Start of closure variables available in \"Procedures in renderNode\".\n\n\n var thisLayout = thisNode.getLayout();\n var data = seriesModel.getData(); // Only for enabling highlight/downplay. Clear firstly.\n // Because some node will not be rendered.\n\n data.setItemGraphicEl(thisNode.dataIndex, null);\n\n if (!thisLayout || !thisLayout.isInView) {\n return;\n }\n\n var thisWidth = thisLayout.width;\n var thisHeight = thisLayout.height;\n var borderWidth = thisLayout.borderWidth;\n var thisInvisible = thisLayout.invisible;\n var thisRawIndex = thisNode.getRawIndex();\n var oldRawIndex = oldNode && oldNode.getRawIndex();\n var thisViewChildren = thisNode.viewChildren;\n var upperHeight = thisLayout.upperHeight;\n var isParent = thisViewChildren && thisViewChildren.length;\n var itemStyleNormalModel = thisNode.getModel('itemStyle');\n var itemStyleEmphasisModel = thisNode.getModel('emphasis.itemStyle'); // End of closure ariables available in \"Procedures in renderNode\".\n // -----------------------------------------------------------------\n // Node group\n\n var group = giveGraphic('nodeGroup', Group);\n\n if (!group) {\n return;\n }\n\n parentGroup.add(group); // x,y are not set when el is above view root.\n\n group.attr('position', [thisLayout.x || 0, thisLayout.y || 0]);\n group.__tmNodeWidth = thisWidth;\n group.__tmNodeHeight = thisHeight;\n\n if (thisLayout.isAboveViewRoot) {\n return group;\n }\n\n var nodeModel = thisNode.getModel(); // Background\n\n var bg = giveGraphic('background', Rect, depth, Z_BG);\n bg && renderBackground(group, bg, isParent && thisLayout.upperLabelHeight); // No children, render content.\n\n if (isParent) {\n // Because of the implementation about \"traverse\" in graphic hover style, we\n // can not set hover listener on the \"group\" of non-leaf node. Otherwise the\n // hover event from the descendents will be listenered.\n if (graphic.isHighDownDispatcher(group)) {\n graphic.setAsHighDownDispatcher(group, false);\n }\n\n if (bg) {\n graphic.setAsHighDownDispatcher(bg, true); // Only for enabling highlight/downplay.\n\n data.setItemGraphicEl(thisNode.dataIndex, bg);\n }\n } else {\n var content = giveGraphic('content', Rect, depth, Z_CONTENT);\n content && renderContent(group, content);\n\n if (bg && graphic.isHighDownDispatcher(bg)) {\n graphic.setAsHighDownDispatcher(bg, false);\n }\n\n graphic.setAsHighDownDispatcher(group, true); // Only for enabling highlight/downplay.\n\n data.setItemGraphicEl(thisNode.dataIndex, group);\n }\n\n return group; // ----------------------------\n // | Procedures in renderNode |\n // ----------------------------\n\n function renderBackground(group, bg, useUpperLabel) {\n // For tooltip.\n bg.dataIndex = thisNode.dataIndex;\n bg.seriesIndex = seriesModel.seriesIndex;\n bg.setShape({\n x: 0,\n y: 0,\n width: thisWidth,\n height: thisHeight\n });\n\n if (thisInvisible) {\n // If invisible, do not set visual, otherwise the element will\n // change immediately before animation. We think it is OK to\n // remain its origin color when moving out of the view window.\n processInvisible(bg);\n } else {\n bg.invisible = false;\n var visualBorderColor = thisNode.getVisual('borderColor', true);\n var emphasisBorderColor = itemStyleEmphasisModel.get('borderColor');\n var normalStyle = getItemStyleNormal(itemStyleNormalModel);\n normalStyle.fill = visualBorderColor;\n var emphasisStyle = getItemStyleEmphasis(itemStyleEmphasisModel);\n emphasisStyle.fill = emphasisBorderColor;\n\n if (useUpperLabel) {\n var upperLabelWidth = thisWidth - 2 * borderWidth;\n prepareText(normalStyle, emphasisStyle, visualBorderColor, upperLabelWidth, upperHeight, {\n x: borderWidth,\n y: 0,\n width: upperLabelWidth,\n height: upperHeight\n });\n } // For old bg.\n else {\n normalStyle.text = emphasisStyle.text = null;\n }\n\n bg.setStyle(normalStyle);\n graphic.setElementHoverStyle(bg, emphasisStyle);\n }\n\n group.add(bg);\n }\n\n function renderContent(group, content) {\n // For tooltip.\n content.dataIndex = thisNode.dataIndex;\n content.seriesIndex = seriesModel.seriesIndex;\n var contentWidth = Math.max(thisWidth - 2 * borderWidth, 0);\n var contentHeight = Math.max(thisHeight - 2 * borderWidth, 0);\n content.culling = true;\n content.setShape({\n x: borderWidth,\n y: borderWidth,\n width: contentWidth,\n height: contentHeight\n });\n\n if (thisInvisible) {\n // If invisible, do not set visual, otherwise the element will\n // change immediately before animation. We think it is OK to\n // remain its origin color when moving out of the view window.\n processInvisible(content);\n } else {\n content.invisible = false;\n var visualColor = thisNode.getVisual('color', true);\n var normalStyle = getItemStyleNormal(itemStyleNormalModel);\n normalStyle.fill = visualColor;\n var emphasisStyle = getItemStyleEmphasis(itemStyleEmphasisModel);\n prepareText(normalStyle, emphasisStyle, visualColor, contentWidth, contentHeight);\n content.setStyle(normalStyle);\n graphic.setElementHoverStyle(content, emphasisStyle);\n }\n\n group.add(content);\n }\n\n function processInvisible(element) {\n // Delay invisible setting utill animation finished,\n // avoid element vanish suddenly before animation.\n !element.invisible && willInvisibleEls.push(element);\n }\n\n function prepareText(normalStyle, emphasisStyle, visualColor, width, height, upperLabelRect) {\n var defaultText = nodeModel.get('name');\n var normalLabelModel = nodeModel.getModel(upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL);\n var emphasisLabelModel = nodeModel.getModel(upperLabelRect ? PATH_UPPERLABEL_EMPHASIS : PATH_LABEL_EMPHASIS);\n var isShow = normalLabelModel.getShallow('show');\n graphic.setLabelStyle(normalStyle, emphasisStyle, normalLabelModel, emphasisLabelModel, {\n defaultText: isShow ? defaultText : null,\n autoColor: visualColor,\n isRectText: true,\n labelFetcher: seriesModel,\n labelDataIndex: thisNode.dataIndex,\n labelProp: upperLabelRect ? 'upperLabel' : 'label'\n });\n addDrillDownIcon(normalStyle, upperLabelRect, thisLayout);\n addDrillDownIcon(emphasisStyle, upperLabelRect, thisLayout);\n upperLabelRect && (normalStyle.textRect = zrUtil.clone(upperLabelRect));\n normalStyle.truncate = isShow && normalLabelModel.get('ellipsis') ? {\n outerWidth: width,\n outerHeight: height,\n minChar: 2\n } : null;\n }\n\n function addDrillDownIcon(style, upperLabelRect, thisLayout) {\n var text = style.text;\n\n if (!upperLabelRect && thisLayout.isLeafRoot && text != null) {\n var iconChar = seriesModel.get('drillDownIcon', true);\n style.text = iconChar ? iconChar + ' ' + text : text;\n }\n }\n\n function giveGraphic(storageName, Ctor, depth, z) {\n var element = oldRawIndex != null && oldStorage[storageName][oldRawIndex];\n var lasts = lastsForAnimation[storageName];\n\n if (element) {\n // Remove from oldStorage\n oldStorage[storageName][oldRawIndex] = null;\n prepareAnimationWhenHasOld(lasts, element, storageName);\n } // If invisible and no old element, do not create new element (for optimizing).\n else if (!thisInvisible) {\n element = new Ctor({\n z: calculateZ(depth, z)\n });\n element.__tmDepth = depth;\n element.__tmStorageName = storageName;\n prepareAnimationWhenNoOld(lasts, element, storageName);\n } // Set to thisStorage\n\n\n return thisStorage[storageName][thisRawIndex] = element;\n }\n\n function prepareAnimationWhenHasOld(lasts, element, storageName) {\n var lastCfg = lasts[thisRawIndex] = {};\n lastCfg.old = storageName === 'nodeGroup' ? element.position.slice() : zrUtil.extend({}, element.shape);\n } // If a element is new, we need to find the animation start point carefully,\n // otherwise it will looks strange when 'zoomToNode'.\n\n\n function prepareAnimationWhenNoOld(lasts, element, storageName) {\n var lastCfg = lasts[thisRawIndex] = {};\n var parentNode = thisNode.parentNode;\n\n if (parentNode && (!reRoot || reRoot.direction === 'drillDown')) {\n var parentOldX = 0;\n var parentOldY = 0; // New nodes appear from right-bottom corner in 'zoomToNode' animation.\n // For convenience, get old bounding rect from background.\n\n var parentOldBg = lastsForAnimation.background[parentNode.getRawIndex()];\n\n if (!reRoot && parentOldBg && parentOldBg.old) {\n parentOldX = parentOldBg.old.width;\n parentOldY = parentOldBg.old.height;\n } // When no parent old shape found, its parent is new too,\n // so we can just use {x:0, y:0}.\n\n\n lastCfg.old = storageName === 'nodeGroup' ? [0, parentOldY] : {\n x: parentOldX,\n y: parentOldY,\n width: 0,\n height: 0\n };\n } // Fade in, user can be aware that these nodes are new.\n\n\n lastCfg.fadein = storageName !== 'nodeGroup';\n }\n} // We can not set all backgroud with the same z, Because the behaviour of\n// drill down and roll up differ background creation sequence from tree\n// hierarchy sequence, which cause that lowser background element overlap\n// upper ones. So we calculate z based on depth.\n// Moreover, we try to shrink down z interval to [0, 1] to avoid that\n// treemap with large z overlaps other components.\n\n\nfunction calculateZ(depth, zInLevel) {\n var zb = depth * Z_BASE + zInLevel;\n return (zb - 1) / zb;\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/treemap/TreemapView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/treemap/treemapAction.js": +/*!*****************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/treemap/treemapAction.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar helper = __webpack_require__(/*! ../helper/treeHelper */ \"./node_modules/echarts/lib/chart/helper/treeHelper.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @file Treemap action\n */\nvar noop = function () {};\n\nvar actionTypes = ['treemapZoomToNode', 'treemapRender', 'treemapMove'];\n\nfor (var i = 0; i < actionTypes.length; i++) {\n echarts.registerAction({\n type: actionTypes[i],\n update: 'updateView'\n }, noop);\n}\n\necharts.registerAction({\n type: 'treemapRootToNode',\n update: 'updateView'\n}, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'series',\n subType: 'treemap',\n query: payload\n }, handleRootToNode);\n\n function handleRootToNode(model, index) {\n var types = ['treemapZoomToNode', 'treemapRootToNode'];\n var targetInfo = helper.retrieveTargetInfo(payload, types, model);\n\n if (targetInfo) {\n var originViewRoot = model.getViewRoot();\n\n if (originViewRoot) {\n payload.direction = helper.aboveViewRoot(originViewRoot, targetInfo.node) ? 'rollUp' : 'drillDown';\n }\n\n model.resetViewRoot(targetInfo.node);\n }\n }\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/treemap/treemapAction.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/treemap/treemapLayout.js": +/*!*****************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/treemap/treemapLayout.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar BoundingRect = __webpack_require__(/*! zrender/lib/core/BoundingRect */ \"./node_modules/zrender/lib/core/BoundingRect.js\");\n\nvar _number = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar parsePercent = _number.parsePercent;\nvar MAX_SAFE_INTEGER = _number.MAX_SAFE_INTEGER;\n\nvar layout = __webpack_require__(/*! ../../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar helper = __webpack_require__(/*! ../helper/treeHelper */ \"./node_modules/echarts/lib/chart/helper/treeHelper.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* A third-party license is embeded for some of the code in this file:\n* The treemap layout implementation was originally copied from\n* \"d3.js\" with some modifications made for this project.\n* (See more details in the comment of the method \"squarify\" below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\n* ).\n*/\nvar mathMax = Math.max;\nvar mathMin = Math.min;\nvar retrieveValue = zrUtil.retrieve;\nvar each = zrUtil.each;\nvar PATH_BORDER_WIDTH = ['itemStyle', 'borderWidth'];\nvar PATH_GAP_WIDTH = ['itemStyle', 'gapWidth'];\nvar PATH_UPPER_LABEL_SHOW = ['upperLabel', 'show'];\nvar PATH_UPPER_LABEL_HEIGHT = ['upperLabel', 'height'];\n/**\n * @public\n */\n\nvar _default = {\n seriesType: 'treemap',\n reset: function (seriesModel, ecModel, api, payload) {\n // Layout result in each node:\n // {x, y, width, height, area, borderWidth}\n var ecWidth = api.getWidth();\n var ecHeight = api.getHeight();\n var seriesOption = seriesModel.option;\n var layoutInfo = layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n var size = seriesOption.size || []; // Compatible with ec2.\n\n var containerWidth = parsePercent(retrieveValue(layoutInfo.width, size[0]), ecWidth);\n var containerHeight = parsePercent(retrieveValue(layoutInfo.height, size[1]), ecHeight); // Fetch payload info.\n\n var payloadType = payload && payload.type;\n var types = ['treemapZoomToNode', 'treemapRootToNode'];\n var targetInfo = helper.retrieveTargetInfo(payload, types, seriesModel);\n var rootRect = payloadType === 'treemapRender' || payloadType === 'treemapMove' ? payload.rootRect : null;\n var viewRoot = seriesModel.getViewRoot();\n var viewAbovePath = helper.getPathToRoot(viewRoot);\n\n if (payloadType !== 'treemapMove') {\n var rootSize = payloadType === 'treemapZoomToNode' ? estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) : rootRect ? [rootRect.width, rootRect.height] : [containerWidth, containerHeight];\n var sort = seriesOption.sort;\n\n if (sort && sort !== 'asc' && sort !== 'desc') {\n sort = 'desc';\n }\n\n var options = {\n squareRatio: seriesOption.squareRatio,\n sort: sort,\n leafDepth: seriesOption.leafDepth\n }; // layout should be cleared because using updateView but not update.\n\n viewRoot.hostTree.clearLayouts(); // TODO\n // optimize: if out of view clip, do not layout.\n // But take care that if do not render node out of view clip,\n // how to calculate start po\n\n var viewRootLayout = {\n x: 0,\n y: 0,\n width: rootSize[0],\n height: rootSize[1],\n area: rootSize[0] * rootSize[1]\n };\n viewRoot.setLayout(viewRootLayout);\n squarify(viewRoot, options, false, 0); // Supplement layout.\n\n var viewRootLayout = viewRoot.getLayout();\n each(viewAbovePath, function (node, index) {\n var childValue = (viewAbovePath[index + 1] || viewRoot).getValue();\n node.setLayout(zrUtil.extend({\n dataExtent: [childValue, childValue],\n borderWidth: 0,\n upperHeight: 0\n }, viewRootLayout));\n });\n }\n\n var treeRoot = seriesModel.getData().tree.root;\n treeRoot.setLayout(calculateRootPosition(layoutInfo, rootRect, targetInfo), true);\n seriesModel.setLayoutInfo(layoutInfo); // FIXME\n // 现在没有clip功能,暂时取ec高宽。\n\n prunning(treeRoot, // Transform to base element coordinate system.\n new BoundingRect(-layoutInfo.x, -layoutInfo.y, ecWidth, ecHeight), viewAbovePath, viewRoot, 0);\n }\n};\n/**\n * Layout treemap with squarify algorithm.\n * The original presentation of this algorithm\n * was made by Mark Bruls, Kees Huizing, and Jarke J. van Wijk\n * .\n * The implementation of this algorithm was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * @protected\n * @param {module:echarts/data/Tree~TreeNode} node\n * @param {Object} options\n * @param {string} options.sort 'asc' or 'desc'\n * @param {number} options.squareRatio\n * @param {boolean} hideChildren\n * @param {number} depth\n */\n\nfunction squarify(node, options, hideChildren, depth) {\n var width;\n var height;\n\n if (node.isRemoved()) {\n return;\n }\n\n var thisLayout = node.getLayout();\n width = thisLayout.width;\n height = thisLayout.height; // Considering border and gap\n\n var nodeModel = node.getModel();\n var borderWidth = nodeModel.get(PATH_BORDER_WIDTH);\n var halfGapWidth = nodeModel.get(PATH_GAP_WIDTH) / 2;\n var upperLabelHeight = getUpperLabelHeight(nodeModel);\n var upperHeight = Math.max(borderWidth, upperLabelHeight);\n var layoutOffset = borderWidth - halfGapWidth;\n var layoutOffsetUpper = upperHeight - halfGapWidth;\n var nodeModel = node.getModel();\n node.setLayout({\n borderWidth: borderWidth,\n upperHeight: upperHeight,\n upperLabelHeight: upperLabelHeight\n }, true);\n width = mathMax(width - 2 * layoutOffset, 0);\n height = mathMax(height - layoutOffset - layoutOffsetUpper, 0);\n var totalArea = width * height;\n var viewChildren = initChildren(node, nodeModel, totalArea, options, hideChildren, depth);\n\n if (!viewChildren.length) {\n return;\n }\n\n var rect = {\n x: layoutOffset,\n y: layoutOffsetUpper,\n width: width,\n height: height\n };\n var rowFixedLength = mathMin(width, height);\n var best = Infinity; // the best row score so far\n\n var row = [];\n row.area = 0;\n\n for (var i = 0, len = viewChildren.length; i < len;) {\n var child = viewChildren[i];\n row.push(child);\n row.area += child.getLayout().area;\n var score = worst(row, rowFixedLength, options.squareRatio); // continue with this orientation\n\n if (score <= best) {\n i++;\n best = score;\n } // abort, and try a different orientation\n else {\n row.area -= row.pop().getLayout().area;\n position(row, rowFixedLength, rect, halfGapWidth, false);\n rowFixedLength = mathMin(rect.width, rect.height);\n row.length = row.area = 0;\n best = Infinity;\n }\n }\n\n if (row.length) {\n position(row, rowFixedLength, rect, halfGapWidth, true);\n }\n\n if (!hideChildren) {\n var childrenVisibleMin = nodeModel.get('childrenVisibleMin');\n\n if (childrenVisibleMin != null && totalArea < childrenVisibleMin) {\n hideChildren = true;\n }\n }\n\n for (var i = 0, len = viewChildren.length; i < len; i++) {\n squarify(viewChildren[i], options, hideChildren, depth + 1);\n }\n}\n/**\n * Set area to each child, and calculate data extent for visual coding.\n */\n\n\nfunction initChildren(node, nodeModel, totalArea, options, hideChildren, depth) {\n var viewChildren = node.children || [];\n var orderBy = options.sort;\n orderBy !== 'asc' && orderBy !== 'desc' && (orderBy = null);\n var overLeafDepth = options.leafDepth != null && options.leafDepth <= depth; // leafDepth has higher priority.\n\n if (hideChildren && !overLeafDepth) {\n return node.viewChildren = [];\n } // Sort children, order by desc.\n\n\n viewChildren = zrUtil.filter(viewChildren, function (child) {\n return !child.isRemoved();\n });\n sort(viewChildren, orderBy);\n var info = statistic(nodeModel, viewChildren, orderBy);\n\n if (info.sum === 0) {\n return node.viewChildren = [];\n }\n\n info.sum = filterByThreshold(nodeModel, totalArea, info.sum, orderBy, viewChildren);\n\n if (info.sum === 0) {\n return node.viewChildren = [];\n } // Set area to each child.\n\n\n for (var i = 0, len = viewChildren.length; i < len; i++) {\n var area = viewChildren[i].getValue() / info.sum * totalArea; // Do not use setLayout({...}, true), because it is needed to clear last layout.\n\n viewChildren[i].setLayout({\n area: area\n });\n }\n\n if (overLeafDepth) {\n viewChildren.length && node.setLayout({\n isLeafRoot: true\n }, true);\n viewChildren.length = 0;\n }\n\n node.viewChildren = viewChildren;\n node.setLayout({\n dataExtent: info.dataExtent\n }, true);\n return viewChildren;\n}\n/**\n * Consider 'visibleMin'. Modify viewChildren and get new sum.\n */\n\n\nfunction filterByThreshold(nodeModel, totalArea, sum, orderBy, orderedChildren) {\n // visibleMin is not supported yet when no option.sort.\n if (!orderBy) {\n return sum;\n }\n\n var visibleMin = nodeModel.get('visibleMin');\n var len = orderedChildren.length;\n var deletePoint = len; // Always travel from little value to big value.\n\n for (var i = len - 1; i >= 0; i--) {\n var value = orderedChildren[orderBy === 'asc' ? len - i - 1 : i].getValue();\n\n if (value / sum * totalArea < visibleMin) {\n deletePoint = i;\n sum -= value;\n }\n }\n\n orderBy === 'asc' ? orderedChildren.splice(0, len - deletePoint) : orderedChildren.splice(deletePoint, len - deletePoint);\n return sum;\n}\n/**\n * Sort\n */\n\n\nfunction sort(viewChildren, orderBy) {\n if (orderBy) {\n viewChildren.sort(function (a, b) {\n var diff = orderBy === 'asc' ? a.getValue() - b.getValue() : b.getValue() - a.getValue();\n return diff === 0 ? orderBy === 'asc' ? a.dataIndex - b.dataIndex : b.dataIndex - a.dataIndex : diff;\n });\n }\n\n return viewChildren;\n}\n/**\n * Statistic\n */\n\n\nfunction statistic(nodeModel, children, orderBy) {\n // Calculate sum.\n var sum = 0;\n\n for (var i = 0, len = children.length; i < len; i++) {\n sum += children[i].getValue();\n } // Statistic data extent for latter visual coding.\n // Notice: data extent should be calculate based on raw children\n // but not filtered view children, otherwise visual mapping will not\n // be stable when zoom (where children is filtered by visibleMin).\n\n\n var dimension = nodeModel.get('visualDimension');\n var dataExtent; // The same as area dimension.\n\n if (!children || !children.length) {\n dataExtent = [NaN, NaN];\n } else if (dimension === 'value' && orderBy) {\n dataExtent = [children[children.length - 1].getValue(), children[0].getValue()];\n orderBy === 'asc' && dataExtent.reverse();\n } // Other dimension.\n else {\n var dataExtent = [Infinity, -Infinity];\n each(children, function (child) {\n var value = child.getValue(dimension);\n value < dataExtent[0] && (dataExtent[0] = value);\n value > dataExtent[1] && (dataExtent[1] = value);\n });\n }\n\n return {\n sum: sum,\n dataExtent: dataExtent\n };\n}\n/**\n * Computes the score for the specified row,\n * as the worst aspect ratio.\n */\n\n\nfunction worst(row, rowFixedLength, ratio) {\n var areaMax = 0;\n var areaMin = Infinity;\n\n for (var i = 0, area, len = row.length; i < len; i++) {\n area = row[i].getLayout().area;\n\n if (area) {\n area < areaMin && (areaMin = area);\n area > areaMax && (areaMax = area);\n }\n }\n\n var squareArea = row.area * row.area;\n var f = rowFixedLength * rowFixedLength * ratio;\n return squareArea ? mathMax(f * areaMax / squareArea, squareArea / (f * areaMin)) : Infinity;\n}\n/**\n * Positions the specified row of nodes. Modifies `rect`.\n */\n\n\nfunction position(row, rowFixedLength, rect, halfGapWidth, flush) {\n // When rowFixedLength === rect.width,\n // it is horizontal subdivision,\n // rowFixedLength is the width of the subdivision,\n // rowOtherLength is the height of the subdivision,\n // and nodes will be positioned from left to right.\n // wh[idx0WhenH] means: when horizontal,\n // wh[idx0WhenH] => wh[0] => 'width'.\n // xy[idx1WhenH] => xy[1] => 'y'.\n var idx0WhenH = rowFixedLength === rect.width ? 0 : 1;\n var idx1WhenH = 1 - idx0WhenH;\n var xy = ['x', 'y'];\n var wh = ['width', 'height'];\n var last = rect[xy[idx0WhenH]];\n var rowOtherLength = rowFixedLength ? row.area / rowFixedLength : 0;\n\n if (flush || rowOtherLength > rect[wh[idx1WhenH]]) {\n rowOtherLength = rect[wh[idx1WhenH]]; // over+underflow\n }\n\n for (var i = 0, rowLen = row.length; i < rowLen; i++) {\n var node = row[i];\n var nodeLayout = {};\n var step = rowOtherLength ? node.getLayout().area / rowOtherLength : 0;\n var wh1 = nodeLayout[wh[idx1WhenH]] = mathMax(rowOtherLength - 2 * halfGapWidth, 0); // We use Math.max/min to avoid negative width/height when considering gap width.\n\n var remain = rect[xy[idx0WhenH]] + rect[wh[idx0WhenH]] - last;\n var modWH = i === rowLen - 1 || remain < step ? remain : step;\n var wh0 = nodeLayout[wh[idx0WhenH]] = mathMax(modWH - 2 * halfGapWidth, 0);\n nodeLayout[xy[idx1WhenH]] = rect[xy[idx1WhenH]] + mathMin(halfGapWidth, wh1 / 2);\n nodeLayout[xy[idx0WhenH]] = last + mathMin(halfGapWidth, wh0 / 2);\n last += modWH;\n node.setLayout(nodeLayout, true);\n }\n\n rect[xy[idx1WhenH]] += rowOtherLength;\n rect[wh[idx1WhenH]] -= rowOtherLength;\n} // Return [containerWidth, containerHeight] as default.\n\n\nfunction estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) {\n // If targetInfo.node exists, we zoom to the node,\n // so estimate whold width and heigth by target node.\n var currNode = (targetInfo || {}).node;\n var defaultSize = [containerWidth, containerHeight];\n\n if (!currNode || currNode === viewRoot) {\n return defaultSize;\n }\n\n var parent;\n var viewArea = containerWidth * containerHeight;\n var area = viewArea * seriesModel.option.zoomToNodeRatio;\n\n while (parent = currNode.parentNode) {\n // jshint ignore:line\n var sum = 0;\n var siblings = parent.children;\n\n for (var i = 0, len = siblings.length; i < len; i++) {\n sum += siblings[i].getValue();\n }\n\n var currNodeValue = currNode.getValue();\n\n if (currNodeValue === 0) {\n return defaultSize;\n }\n\n area *= sum / currNodeValue; // Considering border, suppose aspect ratio is 1.\n\n var parentModel = parent.getModel();\n var borderWidth = parentModel.get(PATH_BORDER_WIDTH);\n var upperHeight = Math.max(borderWidth, getUpperLabelHeight(parentModel, borderWidth));\n area += 4 * borderWidth * borderWidth + (3 * borderWidth + upperHeight) * Math.pow(area, 0.5);\n area > MAX_SAFE_INTEGER && (area = MAX_SAFE_INTEGER);\n currNode = parent;\n }\n\n area < viewArea && (area = viewArea);\n var scale = Math.pow(area / viewArea, 0.5);\n return [containerWidth * scale, containerHeight * scale];\n} // Root postion base on coord of containerGroup\n\n\nfunction calculateRootPosition(layoutInfo, rootRect, targetInfo) {\n if (rootRect) {\n return {\n x: rootRect.x,\n y: rootRect.y\n };\n }\n\n var defaultPosition = {\n x: 0,\n y: 0\n };\n\n if (!targetInfo) {\n return defaultPosition;\n } // If targetInfo is fetched by 'retrieveTargetInfo',\n // old tree and new tree are the same tree,\n // so the node still exists and we can visit it.\n\n\n var targetNode = targetInfo.node;\n var layout = targetNode.getLayout();\n\n if (!layout) {\n return defaultPosition;\n } // Transform coord from local to container.\n\n\n var targetCenter = [layout.width / 2, layout.height / 2];\n var node = targetNode;\n\n while (node) {\n var nodeLayout = node.getLayout();\n targetCenter[0] += nodeLayout.x;\n targetCenter[1] += nodeLayout.y;\n node = node.parentNode;\n }\n\n return {\n x: layoutInfo.width / 2 - targetCenter[0],\n y: layoutInfo.height / 2 - targetCenter[1]\n };\n} // Mark nodes visible for prunning when visual coding and rendering.\n// Prunning depends on layout and root position, so we have to do it after layout.\n\n\nfunction prunning(node, clipRect, viewAbovePath, viewRoot, depth) {\n var nodeLayout = node.getLayout();\n var nodeInViewAbovePath = viewAbovePath[depth];\n var isAboveViewRoot = nodeInViewAbovePath && nodeInViewAbovePath === node;\n\n if (nodeInViewAbovePath && !isAboveViewRoot || depth === viewAbovePath.length && node !== viewRoot) {\n return;\n }\n\n node.setLayout({\n // isInView means: viewRoot sub tree + viewAbovePath\n isInView: true,\n // invisible only means: outside view clip so that the node can not\n // see but still layout for animation preparation but not render.\n invisible: !isAboveViewRoot && !clipRect.intersect(nodeLayout),\n isAboveViewRoot: isAboveViewRoot\n }, true); // Transform to child coordinate.\n\n var childClipRect = new BoundingRect(clipRect.x - nodeLayout.x, clipRect.y - nodeLayout.y, clipRect.width, clipRect.height);\n each(node.viewChildren || [], function (child) {\n prunning(child, childClipRect, viewAbovePath, viewRoot, depth + 1);\n });\n}\n\nfunction getUpperLabelHeight(model) {\n return model.get(PATH_UPPER_LABEL_SHOW) ? model.get(PATH_UPPER_LABEL_HEIGHT) : 0;\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/treemap/treemapLayout.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/chart/treemap/treemapVisual.js": +/*!*****************************************************************!*\ + !*** ./node_modules/echarts/lib/chart/treemap/treemapVisual.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar VisualMapping = __webpack_require__(/*! ../../visual/VisualMapping */ \"./node_modules/echarts/lib/visual/VisualMapping.js\");\n\nvar zrColor = __webpack_require__(/*! zrender/lib/tool/color */ \"./node_modules/zrender/lib/tool/color.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar isArray = zrUtil.isArray;\nvar ITEM_STYLE_NORMAL = 'itemStyle';\nvar _default = {\n seriesType: 'treemap',\n reset: function (seriesModel, ecModel, api, payload) {\n var tree = seriesModel.getData().tree;\n var root = tree.root;\n\n if (root.isRemoved()) {\n return;\n }\n\n travelTree(root, // Visual should calculate from tree root but not view root.\n {}, seriesModel.getViewRoot().getAncestors(), seriesModel);\n }\n};\n\nfunction travelTree(node, designatedVisual, viewRootAncestors, seriesModel) {\n var nodeModel = node.getModel();\n var nodeLayout = node.getLayout(); // Optimize\n\n if (!nodeLayout || nodeLayout.invisible || !nodeLayout.isInView) {\n return;\n }\n\n var nodeItemStyleModel = node.getModel(ITEM_STYLE_NORMAL);\n var visuals = buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel); // calculate border color\n\n var borderColor = nodeItemStyleModel.get('borderColor');\n var borderColorSaturation = nodeItemStyleModel.get('borderColorSaturation');\n var thisNodeColor;\n\n if (borderColorSaturation != null) {\n // For performance, do not always execute 'calculateColor'.\n thisNodeColor = calculateColor(visuals, node);\n borderColor = calculateBorderColor(borderColorSaturation, thisNodeColor);\n }\n\n node.setVisual('borderColor', borderColor);\n var viewChildren = node.viewChildren;\n\n if (!viewChildren || !viewChildren.length) {\n thisNodeColor = calculateColor(visuals, node); // Apply visual to this node.\n\n node.setVisual('color', thisNodeColor);\n } else {\n var mapping = buildVisualMapping(node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren); // Designate visual to children.\n\n zrUtil.each(viewChildren, function (child, index) {\n // If higher than viewRoot, only ancestors of viewRoot is needed to visit.\n if (child.depth >= viewRootAncestors.length || child === viewRootAncestors[child.depth]) {\n var childVisual = mapVisual(nodeModel, visuals, child, index, mapping, seriesModel);\n travelTree(child, childVisual, viewRootAncestors, seriesModel);\n }\n });\n }\n}\n\nfunction buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel) {\n var visuals = zrUtil.extend({}, designatedVisual);\n var designatedVisualItemStyle = seriesModel.designatedVisualItemStyle;\n zrUtil.each(['color', 'colorAlpha', 'colorSaturation'], function (visualName) {\n // Priority: thisNode > thisLevel > parentNodeDesignated > seriesModel\n designatedVisualItemStyle[visualName] = designatedVisual[visualName];\n var val = nodeItemStyleModel.get(visualName);\n designatedVisualItemStyle[visualName] = null;\n val != null && (visuals[visualName] = val);\n });\n return visuals;\n}\n\nfunction calculateColor(visuals) {\n var color = getValueVisualDefine(visuals, 'color');\n\n if (color) {\n var colorAlpha = getValueVisualDefine(visuals, 'colorAlpha');\n var colorSaturation = getValueVisualDefine(visuals, 'colorSaturation');\n\n if (colorSaturation) {\n color = zrColor.modifyHSL(color, null, null, colorSaturation);\n }\n\n if (colorAlpha) {\n color = zrColor.modifyAlpha(color, colorAlpha);\n }\n\n return color;\n }\n}\n\nfunction calculateBorderColor(borderColorSaturation, thisNodeColor) {\n return thisNodeColor != null ? zrColor.modifyHSL(thisNodeColor, null, null, borderColorSaturation) : null;\n}\n\nfunction getValueVisualDefine(visuals, name) {\n var value = visuals[name];\n\n if (value != null && value !== 'none') {\n return value;\n }\n}\n\nfunction buildVisualMapping(node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren) {\n if (!viewChildren || !viewChildren.length) {\n return;\n }\n\n var rangeVisual = getRangeVisual(nodeModel, 'color') || visuals.color != null && visuals.color !== 'none' && (getRangeVisual(nodeModel, 'colorAlpha') || getRangeVisual(nodeModel, 'colorSaturation'));\n\n if (!rangeVisual) {\n return;\n }\n\n var visualMin = nodeModel.get('visualMin');\n var visualMax = nodeModel.get('visualMax');\n var dataExtent = nodeLayout.dataExtent.slice();\n visualMin != null && visualMin < dataExtent[0] && (dataExtent[0] = visualMin);\n visualMax != null && visualMax > dataExtent[1] && (dataExtent[1] = visualMax);\n var colorMappingBy = nodeModel.get('colorMappingBy');\n var opt = {\n type: rangeVisual.name,\n dataExtent: dataExtent,\n visual: rangeVisual.range\n };\n\n if (opt.type === 'color' && (colorMappingBy === 'index' || colorMappingBy === 'id')) {\n opt.mappingMethod = 'category';\n opt.loop = true; // categories is ordinal, so do not set opt.categories.\n } else {\n opt.mappingMethod = 'linear';\n }\n\n var mapping = new VisualMapping(opt);\n mapping.__drColorMappingBy = colorMappingBy;\n return mapping;\n} // Notice: If we dont have the attribute 'colorRange', but only use\n// attribute 'color' to represent both concepts of 'colorRange' and 'color',\n// (It means 'colorRange' when 'color' is Array, means 'color' when not array),\n// this problem will be encountered:\n// If a level-1 node dont have children, and its siblings has children,\n// and colorRange is set on level-1, then the node can not be colored.\n// So we separate 'colorRange' and 'color' to different attributes.\n\n\nfunction getRangeVisual(nodeModel, name) {\n // 'colorRange', 'colorARange', 'colorSRange'.\n // If not exsits on this node, fetch from levels and series.\n var range = nodeModel.get(name);\n return isArray(range) && range.length ? {\n name: name,\n range: range\n } : null;\n}\n\nfunction mapVisual(nodeModel, visuals, child, index, mapping, seriesModel) {\n var childVisuals = zrUtil.extend({}, visuals);\n\n if (mapping) {\n var mappingType = mapping.type;\n var colorMappingBy = mappingType === 'color' && mapping.__drColorMappingBy;\n var value = colorMappingBy === 'index' ? index : colorMappingBy === 'id' ? seriesModel.mapIdToIndex(child.getId()) : child.getValue(nodeModel.get('visualDimension'));\n childVisuals[mappingType] = mapping.mapValueToVisual(value);\n }\n\n return childVisuals;\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/chart/treemap/treemapVisual.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/angleAxis.js": +/*!*********************************************************!*\ + !*** ./node_modules/echarts/lib/component/angleAxis.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(/*! ../coord/polar/polarCreator */ \"./node_modules/echarts/lib/coord/polar/polarCreator.js\");\n\n__webpack_require__(/*! ./axis/AngleAxisView */ \"./node_modules/echarts/lib/component/axis/AngleAxisView.js\");\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/angleAxis.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/axis.js": +/*!****************************************************!*\ + !*** ./node_modules/echarts/lib/component/axis.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(/*! ../coord/cartesian/AxisModel */ \"./node_modules/echarts/lib/coord/cartesian/AxisModel.js\");\n\n__webpack_require__(/*! ./axis/CartesianAxisView */ \"./node_modules/echarts/lib/component/axis/CartesianAxisView.js\");\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/axis.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/axis/AngleAxisView.js": +/*!******************************************************************!*\ + !*** ./node_modules/echarts/lib/component/axis/AngleAxisView.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar Model = __webpack_require__(/*! ../../model/Model */ \"./node_modules/echarts/lib/model/Model.js\");\n\nvar AxisView = __webpack_require__(/*! ./AxisView */ \"./node_modules/echarts/lib/component/axis/AxisView.js\");\n\nvar AxisBuilder = __webpack_require__(/*! ./AxisBuilder */ \"./node_modules/echarts/lib/component/axis/AxisBuilder.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar elementList = ['axisLine', 'axisLabel', 'axisTick', 'minorTick', 'splitLine', 'minorSplitLine', 'splitArea'];\n\nfunction getAxisLineShape(polar, rExtent, angle) {\n rExtent[1] > rExtent[0] && (rExtent = rExtent.slice().reverse());\n var start = polar.coordToPoint([rExtent[0], angle]);\n var end = polar.coordToPoint([rExtent[1], angle]);\n return {\n x1: start[0],\n y1: start[1],\n x2: end[0],\n y2: end[1]\n };\n}\n\nfunction getRadiusIdx(polar) {\n var radiusAxis = polar.getRadiusAxis();\n return radiusAxis.inverse ? 0 : 1;\n} // Remove the last tick which will overlap the first tick\n\n\nfunction fixAngleOverlap(list) {\n var firstItem = list[0];\n var lastItem = list[list.length - 1];\n\n if (firstItem && lastItem && Math.abs(Math.abs(firstItem.coord - lastItem.coord) - 360) < 1e-4) {\n list.pop();\n }\n}\n\nvar _default = AxisView.extend({\n type: 'angleAxis',\n axisPointerClass: 'PolarAxisPointer',\n render: function (angleAxisModel, ecModel) {\n this.group.removeAll();\n\n if (!angleAxisModel.get('show')) {\n return;\n }\n\n var angleAxis = angleAxisModel.axis;\n var polar = angleAxis.polar;\n var radiusExtent = polar.getRadiusAxis().getExtent();\n var ticksAngles = angleAxis.getTicksCoords();\n var minorTickAngles = angleAxis.getMinorTicksCoords();\n var labels = zrUtil.map(angleAxis.getViewLabels(), function (labelItem) {\n var labelItem = zrUtil.clone(labelItem);\n labelItem.coord = angleAxis.dataToCoord(labelItem.tickValue);\n return labelItem;\n });\n fixAngleOverlap(labels);\n fixAngleOverlap(ticksAngles);\n zrUtil.each(elementList, function (name) {\n if (angleAxisModel.get(name + '.show') && (!angleAxis.scale.isBlank() || name === 'axisLine')) {\n this['_' + name](angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent, labels);\n }\n }, this);\n },\n\n /**\n * @private\n */\n _axisLine: function (angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\n var lineStyleModel = angleAxisModel.getModel('axisLine.lineStyle'); // extent id of the axis radius (r0 and r)\n\n var rId = getRadiusIdx(polar);\n var r0Id = rId ? 0 : 1;\n var shape;\n\n if (radiusExtent[r0Id] === 0) {\n shape = new graphic.Circle({\n shape: {\n cx: polar.cx,\n cy: polar.cy,\n r: radiusExtent[rId]\n },\n style: lineStyleModel.getLineStyle(),\n z2: 1,\n silent: true\n });\n } else {\n shape = new graphic.Ring({\n shape: {\n cx: polar.cx,\n cy: polar.cy,\n r: radiusExtent[rId],\n r0: radiusExtent[r0Id]\n },\n style: lineStyleModel.getLineStyle(),\n z2: 1,\n silent: true\n });\n }\n\n shape.style.fill = null;\n this.group.add(shape);\n },\n\n /**\n * @private\n */\n _axisTick: function (angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\n var tickModel = angleAxisModel.getModel('axisTick');\n var tickLen = (tickModel.get('inside') ? -1 : 1) * tickModel.get('length');\n var radius = radiusExtent[getRadiusIdx(polar)];\n var lines = zrUtil.map(ticksAngles, function (tickAngleItem) {\n return new graphic.Line({\n shape: getAxisLineShape(polar, [radius, radius + tickLen], tickAngleItem.coord)\n });\n });\n this.group.add(graphic.mergePath(lines, {\n style: zrUtil.defaults(tickModel.getModel('lineStyle').getLineStyle(), {\n stroke: angleAxisModel.get('axisLine.lineStyle.color')\n })\n }));\n },\n\n /**\n * @private\n */\n _minorTick: function (angleAxisModel, polar, tickAngles, minorTickAngles, radiusExtent) {\n if (!minorTickAngles.length) {\n return;\n }\n\n var tickModel = angleAxisModel.getModel('axisTick');\n var minorTickModel = angleAxisModel.getModel('minorTick');\n var tickLen = (tickModel.get('inside') ? -1 : 1) * minorTickModel.get('length');\n var radius = radiusExtent[getRadiusIdx(polar)];\n var lines = [];\n\n for (var i = 0; i < minorTickAngles.length; i++) {\n for (var k = 0; k < minorTickAngles[i].length; k++) {\n lines.push(new graphic.Line({\n shape: getAxisLineShape(polar, [radius, radius + tickLen], minorTickAngles[i][k].coord)\n }));\n }\n }\n\n this.group.add(graphic.mergePath(lines, {\n style: zrUtil.defaults(minorTickModel.getModel('lineStyle').getLineStyle(), zrUtil.defaults(tickModel.getLineStyle(), {\n stroke: angleAxisModel.get('axisLine.lineStyle.color')\n }))\n }));\n },\n\n /**\n * @private\n */\n _axisLabel: function (angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent, labels) {\n var rawCategoryData = angleAxisModel.getCategories(true);\n var commonLabelModel = angleAxisModel.getModel('axisLabel');\n var labelMargin = commonLabelModel.get('margin');\n var triggerEvent = angleAxisModel.get('triggerEvent'); // Use length of ticksAngles because it may remove the last tick to avoid overlapping\n\n zrUtil.each(labels, function (labelItem, idx) {\n var labelModel = commonLabelModel;\n var tickValue = labelItem.tickValue;\n var r = radiusExtent[getRadiusIdx(polar)];\n var p = polar.coordToPoint([r + labelMargin, labelItem.coord]);\n var cx = polar.cx;\n var cy = polar.cy;\n var labelTextAlign = Math.abs(p[0] - cx) / r < 0.3 ? 'center' : p[0] > cx ? 'left' : 'right';\n var labelTextVerticalAlign = Math.abs(p[1] - cy) / r < 0.3 ? 'middle' : p[1] > cy ? 'top' : 'bottom';\n\n if (rawCategoryData && rawCategoryData[tickValue] && rawCategoryData[tickValue].textStyle) {\n labelModel = new Model(rawCategoryData[tickValue].textStyle, commonLabelModel, commonLabelModel.ecModel);\n }\n\n var textEl = new graphic.Text({\n silent: AxisBuilder.isLabelSilent(angleAxisModel)\n });\n this.group.add(textEl);\n graphic.setTextStyle(textEl.style, labelModel, {\n x: p[0],\n y: p[1],\n textFill: labelModel.getTextColor() || angleAxisModel.get('axisLine.lineStyle.color'),\n text: labelItem.formattedLabel,\n textAlign: labelTextAlign,\n textVerticalAlign: labelTextVerticalAlign\n }); // Pack data for mouse event\n\n if (triggerEvent) {\n textEl.eventData = AxisBuilder.makeAxisEventDataBase(angleAxisModel);\n textEl.eventData.targetType = 'axisLabel';\n textEl.eventData.value = labelItem.rawLabel;\n }\n }, this);\n },\n\n /**\n * @private\n */\n _splitLine: function (angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\n var splitLineModel = angleAxisModel.getModel('splitLine');\n var lineStyleModel = splitLineModel.getModel('lineStyle');\n var lineColors = lineStyleModel.get('color');\n var lineCount = 0;\n lineColors = lineColors instanceof Array ? lineColors : [lineColors];\n var splitLines = [];\n\n for (var i = 0; i < ticksAngles.length; i++) {\n var colorIndex = lineCount++ % lineColors.length;\n splitLines[colorIndex] = splitLines[colorIndex] || [];\n splitLines[colorIndex].push(new graphic.Line({\n shape: getAxisLineShape(polar, radiusExtent, ticksAngles[i].coord)\n }));\n } // Simple optimization\n // Batching the lines if color are the same\n\n\n for (var i = 0; i < splitLines.length; i++) {\n this.group.add(graphic.mergePath(splitLines[i], {\n style: zrUtil.defaults({\n stroke: lineColors[i % lineColors.length]\n }, lineStyleModel.getLineStyle()),\n silent: true,\n z: angleAxisModel.get('z')\n }));\n }\n },\n\n /**\n * @private\n */\n _minorSplitLine: function (angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\n if (!minorTickAngles.length) {\n return;\n }\n\n var minorSplitLineModel = angleAxisModel.getModel('minorSplitLine');\n var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\n var lines = [];\n\n for (var i = 0; i < minorTickAngles.length; i++) {\n for (var k = 0; k < minorTickAngles[i].length; k++) {\n lines.push(new graphic.Line({\n shape: getAxisLineShape(polar, radiusExtent, minorTickAngles[i][k].coord)\n }));\n }\n }\n\n this.group.add(graphic.mergePath(lines, {\n style: lineStyleModel.getLineStyle(),\n silent: true,\n z: angleAxisModel.get('z')\n }));\n },\n\n /**\n * @private\n */\n _splitArea: function (angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\n if (!ticksAngles.length) {\n return;\n }\n\n var splitAreaModel = angleAxisModel.getModel('splitArea');\n var areaStyleModel = splitAreaModel.getModel('areaStyle');\n var areaColors = areaStyleModel.get('color');\n var lineCount = 0;\n areaColors = areaColors instanceof Array ? areaColors : [areaColors];\n var splitAreas = [];\n var RADIAN = Math.PI / 180;\n var prevAngle = -ticksAngles[0].coord * RADIAN;\n var r0 = Math.min(radiusExtent[0], radiusExtent[1]);\n var r1 = Math.max(radiusExtent[0], radiusExtent[1]);\n var clockwise = angleAxisModel.get('clockwise');\n\n for (var i = 1; i < ticksAngles.length; i++) {\n var colorIndex = lineCount++ % areaColors.length;\n splitAreas[colorIndex] = splitAreas[colorIndex] || [];\n splitAreas[colorIndex].push(new graphic.Sector({\n shape: {\n cx: polar.cx,\n cy: polar.cy,\n r0: r0,\n r: r1,\n startAngle: prevAngle,\n endAngle: -ticksAngles[i].coord * RADIAN,\n clockwise: clockwise\n },\n silent: true\n }));\n prevAngle = -ticksAngles[i].coord * RADIAN;\n } // Simple optimization\n // Batching the lines if color are the same\n\n\n for (var i = 0; i < splitAreas.length; i++) {\n this.group.add(graphic.mergePath(splitAreas[i], {\n style: zrUtil.defaults({\n fill: areaColors[i % areaColors.length]\n }, areaStyleModel.getAreaStyle()),\n silent: true\n }));\n }\n }\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/axis/AngleAxisView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/axis/AxisBuilder.js": +/*!****************************************************************!*\ + !*** ./node_modules/echarts/lib/component/axis/AxisBuilder.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar retrieve = _util.retrieve;\nvar defaults = _util.defaults;\nvar extend = _util.extend;\nvar each = _util.each;\n\nvar formatUtil = __webpack_require__(/*! ../../util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar Model = __webpack_require__(/*! ../../model/Model */ \"./node_modules/echarts/lib/model/Model.js\");\n\nvar _number = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar isRadianAroundZero = _number.isRadianAroundZero;\nvar remRadian = _number.remRadian;\n\nvar _symbol = __webpack_require__(/*! ../../util/symbol */ \"./node_modules/echarts/lib/util/symbol.js\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar matrixUtil = __webpack_require__(/*! zrender/lib/core/matrix */ \"./node_modules/zrender/lib/core/matrix.js\");\n\nvar _vector = __webpack_require__(/*! zrender/lib/core/vector */ \"./node_modules/zrender/lib/core/vector.js\");\n\nvar v2ApplyTransform = _vector.applyTransform;\n\nvar _axisHelper = __webpack_require__(/*! ../../coord/axisHelper */ \"./node_modules/echarts/lib/coord/axisHelper.js\");\n\nvar shouldShowAllLabels = _axisHelper.shouldShowAllLabels;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PI = Math.PI;\n/**\n * A final axis is translated and rotated from a \"standard axis\".\n * So opt.position and opt.rotation is required.\n *\n * A standard axis is and axis from [0, 0] to [0, axisExtent[1]],\n * for example: (0, 0) ------------> (0, 50)\n *\n * nameDirection or tickDirection or labelDirection is 1 means tick\n * or label is below the standard axis, whereas is -1 means above\n * the standard axis. labelOffset means offset between label and axis,\n * which is useful when 'onZero', where axisLabel is in the grid and\n * label in outside grid.\n *\n * Tips: like always,\n * positive rotation represents anticlockwise, and negative rotation\n * represents clockwise.\n * The direction of position coordinate is the same as the direction\n * of screen coordinate.\n *\n * Do not need to consider axis 'inverse', which is auto processed by\n * axis extent.\n *\n * @param {module:zrender/container/Group} group\n * @param {Object} axisModel\n * @param {Object} opt Standard axis parameters.\n * @param {Array.} opt.position [x, y]\n * @param {number} opt.rotation by radian\n * @param {number} [opt.nameDirection=1] 1 or -1 Used when nameLocation is 'middle' or 'center'.\n * @param {number} [opt.tickDirection=1] 1 or -1\n * @param {number} [opt.labelDirection=1] 1 or -1\n * @param {number} [opt.labelOffset=0] Usefull when onZero.\n * @param {string} [opt.axisLabelShow] default get from axisModel.\n * @param {string} [opt.axisName] default get from axisModel.\n * @param {number} [opt.axisNameAvailableWidth]\n * @param {number} [opt.labelRotate] by degree, default get from axisModel.\n * @param {number} [opt.strokeContainThreshold] Default label interval when label\n * @param {number} [opt.nameTruncateMaxWidth]\n */\n\nvar AxisBuilder = function (axisModel, opt) {\n /**\n * @readOnly\n */\n this.opt = opt;\n /**\n * @readOnly\n */\n\n this.axisModel = axisModel; // Default value\n\n defaults(opt, {\n labelOffset: 0,\n nameDirection: 1,\n tickDirection: 1,\n labelDirection: 1,\n silent: true\n });\n /**\n * @readOnly\n */\n\n this.group = new graphic.Group(); // FIXME Not use a seperate text group?\n\n var dumbGroup = new graphic.Group({\n position: opt.position.slice(),\n rotation: opt.rotation\n }); // this.group.add(dumbGroup);\n // this._dumbGroup = dumbGroup;\n\n dumbGroup.updateTransform();\n this._transform = dumbGroup.transform;\n this._dumbGroup = dumbGroup;\n};\n\nAxisBuilder.prototype = {\n constructor: AxisBuilder,\n hasBuilder: function (name) {\n return !!builders[name];\n },\n add: function (name) {\n builders[name].call(this);\n },\n getGroup: function () {\n return this.group;\n }\n};\nvar builders = {\n /**\n * @private\n */\n axisLine: function () {\n var opt = this.opt;\n var axisModel = this.axisModel;\n\n if (!axisModel.get('axisLine.show')) {\n return;\n }\n\n var extent = this.axisModel.axis.getExtent();\n var matrix = this._transform;\n var pt1 = [extent[0], 0];\n var pt2 = [extent[1], 0];\n\n if (matrix) {\n v2ApplyTransform(pt1, pt1, matrix);\n v2ApplyTransform(pt2, pt2, matrix);\n }\n\n var lineStyle = extend({\n lineCap: 'round'\n }, axisModel.getModel('axisLine.lineStyle').getLineStyle());\n this.group.add(new graphic.Line({\n // Id for animation\n anid: 'line',\n subPixelOptimize: true,\n shape: {\n x1: pt1[0],\n y1: pt1[1],\n x2: pt2[0],\n y2: pt2[1]\n },\n style: lineStyle,\n strokeContainThreshold: opt.strokeContainThreshold || 5,\n silent: true,\n z2: 1\n }));\n var arrows = axisModel.get('axisLine.symbol');\n var arrowSize = axisModel.get('axisLine.symbolSize');\n var arrowOffset = axisModel.get('axisLine.symbolOffset') || 0;\n\n if (typeof arrowOffset === 'number') {\n arrowOffset = [arrowOffset, arrowOffset];\n }\n\n if (arrows != null) {\n if (typeof arrows === 'string') {\n // Use the same arrow for start and end point\n arrows = [arrows, arrows];\n }\n\n if (typeof arrowSize === 'string' || typeof arrowSize === 'number') {\n // Use the same size for width and height\n arrowSize = [arrowSize, arrowSize];\n }\n\n var symbolWidth = arrowSize[0];\n var symbolHeight = arrowSize[1];\n each([{\n rotate: opt.rotation + Math.PI / 2,\n offset: arrowOffset[0],\n r: 0\n }, {\n rotate: opt.rotation - Math.PI / 2,\n offset: arrowOffset[1],\n r: Math.sqrt((pt1[0] - pt2[0]) * (pt1[0] - pt2[0]) + (pt1[1] - pt2[1]) * (pt1[1] - pt2[1]))\n }], function (point, index) {\n if (arrows[index] !== 'none' && arrows[index] != null) {\n var symbol = createSymbol(arrows[index], -symbolWidth / 2, -symbolHeight / 2, symbolWidth, symbolHeight, lineStyle.stroke, true); // Calculate arrow position with offset\n\n var r = point.r + point.offset;\n var pos = [pt1[0] + r * Math.cos(opt.rotation), pt1[1] - r * Math.sin(opt.rotation)];\n symbol.attr({\n rotation: point.rotate,\n position: pos,\n silent: true,\n z2: 11\n });\n this.group.add(symbol);\n }\n }, this);\n }\n },\n\n /**\n * @private\n */\n axisTickLabel: function () {\n var axisModel = this.axisModel;\n var opt = this.opt;\n var ticksEls = buildAxisMajorTicks(this, axisModel, opt);\n var labelEls = buildAxisLabel(this, axisModel, opt);\n fixMinMaxLabelShow(axisModel, labelEls, ticksEls);\n buildAxisMinorTicks(this, axisModel, opt);\n },\n\n /**\n * @private\n */\n axisName: function () {\n var opt = this.opt;\n var axisModel = this.axisModel;\n var name = retrieve(opt.axisName, axisModel.get('name'));\n\n if (!name) {\n return;\n }\n\n var nameLocation = axisModel.get('nameLocation');\n var nameDirection = opt.nameDirection;\n var textStyleModel = axisModel.getModel('nameTextStyle');\n var gap = axisModel.get('nameGap') || 0;\n var extent = this.axisModel.axis.getExtent();\n var gapSignal = extent[0] > extent[1] ? -1 : 1;\n var pos = [nameLocation === 'start' ? extent[0] - gapSignal * gap : nameLocation === 'end' ? extent[1] + gapSignal * gap : (extent[0] + extent[1]) / 2, // 'middle'\n // Reuse labelOffset.\n isNameLocationCenter(nameLocation) ? opt.labelOffset + nameDirection * gap : 0];\n var labelLayout;\n var nameRotation = axisModel.get('nameRotate');\n\n if (nameRotation != null) {\n nameRotation = nameRotation * PI / 180; // To radian.\n }\n\n var axisNameAvailableWidth;\n\n if (isNameLocationCenter(nameLocation)) {\n labelLayout = innerTextLayout(opt.rotation, nameRotation != null ? nameRotation : opt.rotation, // Adapt to axis.\n nameDirection);\n } else {\n labelLayout = endTextLayout(opt, nameLocation, nameRotation || 0, extent);\n axisNameAvailableWidth = opt.axisNameAvailableWidth;\n\n if (axisNameAvailableWidth != null) {\n axisNameAvailableWidth = Math.abs(axisNameAvailableWidth / Math.sin(labelLayout.rotation));\n !isFinite(axisNameAvailableWidth) && (axisNameAvailableWidth = null);\n }\n }\n\n var textFont = textStyleModel.getFont();\n var truncateOpt = axisModel.get('nameTruncate', true) || {};\n var ellipsis = truncateOpt.ellipsis;\n var maxWidth = retrieve(opt.nameTruncateMaxWidth, truncateOpt.maxWidth, axisNameAvailableWidth); // FIXME\n // truncate rich text? (consider performance)\n\n var truncatedText = ellipsis != null && maxWidth != null ? formatUtil.truncateText(name, maxWidth, textFont, ellipsis, {\n minChar: 2,\n placeholder: truncateOpt.placeholder\n }) : name;\n var tooltipOpt = axisModel.get('tooltip', true);\n var mainType = axisModel.mainType;\n var formatterParams = {\n componentType: mainType,\n name: name,\n $vars: ['name']\n };\n formatterParams[mainType + 'Index'] = axisModel.componentIndex;\n var textEl = new graphic.Text({\n // Id for animation\n anid: 'name',\n __fullText: name,\n __truncatedText: truncatedText,\n position: pos,\n rotation: labelLayout.rotation,\n silent: isLabelSilent(axisModel),\n z2: 1,\n tooltip: tooltipOpt && tooltipOpt.show ? extend({\n content: name,\n formatter: function () {\n return name;\n },\n formatterParams: formatterParams\n }, tooltipOpt) : null\n });\n graphic.setTextStyle(textEl.style, textStyleModel, {\n text: truncatedText,\n textFont: textFont,\n textFill: textStyleModel.getTextColor() || axisModel.get('axisLine.lineStyle.color'),\n textAlign: textStyleModel.get('align') || labelLayout.textAlign,\n textVerticalAlign: textStyleModel.get('verticalAlign') || labelLayout.textVerticalAlign\n });\n\n if (axisModel.get('triggerEvent')) {\n textEl.eventData = makeAxisEventDataBase(axisModel);\n textEl.eventData.targetType = 'axisName';\n textEl.eventData.name = name;\n } // FIXME\n\n\n this._dumbGroup.add(textEl);\n\n textEl.updateTransform();\n this.group.add(textEl);\n textEl.decomposeTransform();\n }\n};\n\nvar makeAxisEventDataBase = AxisBuilder.makeAxisEventDataBase = function (axisModel) {\n var eventData = {\n componentType: axisModel.mainType,\n componentIndex: axisModel.componentIndex\n };\n eventData[axisModel.mainType + 'Index'] = axisModel.componentIndex;\n return eventData;\n};\n/**\n * @public\n * @static\n * @param {Object} opt\n * @param {number} axisRotation in radian\n * @param {number} textRotation in radian\n * @param {number} direction\n * @return {Object} {\n * rotation, // according to axis\n * textAlign,\n * textVerticalAlign\n * }\n */\n\n\nvar innerTextLayout = AxisBuilder.innerTextLayout = function (axisRotation, textRotation, direction) {\n var rotationDiff = remRadian(textRotation - axisRotation);\n var textAlign;\n var textVerticalAlign;\n\n if (isRadianAroundZero(rotationDiff)) {\n // Label is parallel with axis line.\n textVerticalAlign = direction > 0 ? 'top' : 'bottom';\n textAlign = 'center';\n } else if (isRadianAroundZero(rotationDiff - PI)) {\n // Label is inverse parallel with axis line.\n textVerticalAlign = direction > 0 ? 'bottom' : 'top';\n textAlign = 'center';\n } else {\n textVerticalAlign = 'middle';\n\n if (rotationDiff > 0 && rotationDiff < PI) {\n textAlign = direction > 0 ? 'right' : 'left';\n } else {\n textAlign = direction > 0 ? 'left' : 'right';\n }\n }\n\n return {\n rotation: rotationDiff,\n textAlign: textAlign,\n textVerticalAlign: textVerticalAlign\n };\n};\n\nfunction endTextLayout(opt, textPosition, textRotate, extent) {\n var rotationDiff = remRadian(textRotate - opt.rotation);\n var textAlign;\n var textVerticalAlign;\n var inverse = extent[0] > extent[1];\n var onLeft = textPosition === 'start' && !inverse || textPosition !== 'start' && inverse;\n\n if (isRadianAroundZero(rotationDiff - PI / 2)) {\n textVerticalAlign = onLeft ? 'bottom' : 'top';\n textAlign = 'center';\n } else if (isRadianAroundZero(rotationDiff - PI * 1.5)) {\n textVerticalAlign = onLeft ? 'top' : 'bottom';\n textAlign = 'center';\n } else {\n textVerticalAlign = 'middle';\n\n if (rotationDiff < PI * 1.5 && rotationDiff > PI / 2) {\n textAlign = onLeft ? 'left' : 'right';\n } else {\n textAlign = onLeft ? 'right' : 'left';\n }\n }\n\n return {\n rotation: rotationDiff,\n textAlign: textAlign,\n textVerticalAlign: textVerticalAlign\n };\n}\n\nvar isLabelSilent = AxisBuilder.isLabelSilent = function (axisModel) {\n var tooltipOpt = axisModel.get('tooltip');\n return axisModel.get('silent') // Consider mouse cursor, add these restrictions.\n || !(axisModel.get('triggerEvent') || tooltipOpt && tooltipOpt.show);\n};\n\nfunction fixMinMaxLabelShow(axisModel, labelEls, tickEls) {\n if (shouldShowAllLabels(axisModel.axis)) {\n return;\n } // If min or max are user set, we need to check\n // If the tick on min(max) are overlap on their neighbour tick\n // If they are overlapped, we need to hide the min(max) tick label\n\n\n var showMinLabel = axisModel.get('axisLabel.showMinLabel');\n var showMaxLabel = axisModel.get('axisLabel.showMaxLabel'); // FIXME\n // Have not consider onBand yet, where tick els is more than label els.\n\n labelEls = labelEls || [];\n tickEls = tickEls || [];\n var firstLabel = labelEls[0];\n var nextLabel = labelEls[1];\n var lastLabel = labelEls[labelEls.length - 1];\n var prevLabel = labelEls[labelEls.length - 2];\n var firstTick = tickEls[0];\n var nextTick = tickEls[1];\n var lastTick = tickEls[tickEls.length - 1];\n var prevTick = tickEls[tickEls.length - 2];\n\n if (showMinLabel === false) {\n ignoreEl(firstLabel);\n ignoreEl(firstTick);\n } else if (isTwoLabelOverlapped(firstLabel, nextLabel)) {\n if (showMinLabel) {\n ignoreEl(nextLabel);\n ignoreEl(nextTick);\n } else {\n ignoreEl(firstLabel);\n ignoreEl(firstTick);\n }\n }\n\n if (showMaxLabel === false) {\n ignoreEl(lastLabel);\n ignoreEl(lastTick);\n } else if (isTwoLabelOverlapped(prevLabel, lastLabel)) {\n if (showMaxLabel) {\n ignoreEl(prevLabel);\n ignoreEl(prevTick);\n } else {\n ignoreEl(lastLabel);\n ignoreEl(lastTick);\n }\n }\n}\n\nfunction ignoreEl(el) {\n el && (el.ignore = true);\n}\n\nfunction isTwoLabelOverlapped(current, next, labelLayout) {\n // current and next has the same rotation.\n var firstRect = current && current.getBoundingRect().clone();\n var nextRect = next && next.getBoundingRect().clone();\n\n if (!firstRect || !nextRect) {\n return;\n } // When checking intersect of two rotated labels, we use mRotationBack\n // to avoid that boundingRect is enlarge when using `boundingRect.applyTransform`.\n\n\n var mRotationBack = matrixUtil.identity([]);\n matrixUtil.rotate(mRotationBack, mRotationBack, -current.rotation);\n firstRect.applyTransform(matrixUtil.mul([], mRotationBack, current.getLocalTransform()));\n nextRect.applyTransform(matrixUtil.mul([], mRotationBack, next.getLocalTransform()));\n return firstRect.intersect(nextRect);\n}\n\nfunction isNameLocationCenter(nameLocation) {\n return nameLocation === 'middle' || nameLocation === 'center';\n}\n\nfunction createTicks(ticksCoords, tickTransform, tickEndCoord, tickLineStyle, aniid) {\n var tickEls = [];\n var pt1 = [];\n var pt2 = [];\n\n for (var i = 0; i < ticksCoords.length; i++) {\n var tickCoord = ticksCoords[i].coord;\n pt1[0] = tickCoord;\n pt1[1] = 0;\n pt2[0] = tickCoord;\n pt2[1] = tickEndCoord;\n\n if (tickTransform) {\n v2ApplyTransform(pt1, pt1, tickTransform);\n v2ApplyTransform(pt2, pt2, tickTransform);\n } // Tick line, Not use group transform to have better line draw\n\n\n var tickEl = new graphic.Line({\n // Id for animation\n anid: aniid + '_' + ticksCoords[i].tickValue,\n subPixelOptimize: true,\n shape: {\n x1: pt1[0],\n y1: pt1[1],\n x2: pt2[0],\n y2: pt2[1]\n },\n style: tickLineStyle,\n z2: 2,\n silent: true\n });\n tickEls.push(tickEl);\n }\n\n return tickEls;\n}\n\nfunction buildAxisMajorTicks(axisBuilder, axisModel, opt) {\n var axis = axisModel.axis;\n var tickModel = axisModel.getModel('axisTick');\n\n if (!tickModel.get('show') || axis.scale.isBlank()) {\n return;\n }\n\n var lineStyleModel = tickModel.getModel('lineStyle');\n var tickEndCoord = opt.tickDirection * tickModel.get('length');\n var ticksCoords = axis.getTicksCoords();\n var ticksEls = createTicks(ticksCoords, axisBuilder._transform, tickEndCoord, defaults(lineStyleModel.getLineStyle(), {\n stroke: axisModel.get('axisLine.lineStyle.color')\n }), 'ticks');\n\n for (var i = 0; i < ticksEls.length; i++) {\n axisBuilder.group.add(ticksEls[i]);\n }\n\n return ticksEls;\n}\n\nfunction buildAxisMinorTicks(axisBuilder, axisModel, opt) {\n var axis = axisModel.axis;\n var minorTickModel = axisModel.getModel('minorTick');\n\n if (!minorTickModel.get('show') || axis.scale.isBlank()) {\n return;\n }\n\n var minorTicksCoords = axis.getMinorTicksCoords();\n\n if (!minorTicksCoords.length) {\n return;\n }\n\n var lineStyleModel = minorTickModel.getModel('lineStyle');\n var tickEndCoord = opt.tickDirection * minorTickModel.get('length');\n var minorTickLineStyle = defaults(lineStyleModel.getLineStyle(), defaults(axisModel.getModel('axisTick').getLineStyle(), {\n stroke: axisModel.get('axisLine.lineStyle.color')\n }));\n\n for (var i = 0; i < minorTicksCoords.length; i++) {\n var minorTicksEls = createTicks(minorTicksCoords[i], axisBuilder._transform, tickEndCoord, minorTickLineStyle, 'minorticks_' + i);\n\n for (var k = 0; k < minorTicksEls.length; k++) {\n axisBuilder.group.add(minorTicksEls[k]);\n }\n }\n}\n\nfunction buildAxisLabel(axisBuilder, axisModel, opt) {\n var axis = axisModel.axis;\n var show = retrieve(opt.axisLabelShow, axisModel.get('axisLabel.show'));\n\n if (!show || axis.scale.isBlank()) {\n return;\n }\n\n var labelModel = axisModel.getModel('axisLabel');\n var labelMargin = labelModel.get('margin');\n var labels = axis.getViewLabels(); // Special label rotate.\n\n var labelRotation = (retrieve(opt.labelRotate, labelModel.get('rotate')) || 0) * PI / 180;\n var labelLayout = innerTextLayout(opt.rotation, labelRotation, opt.labelDirection);\n var rawCategoryData = axisModel.getCategories && axisModel.getCategories(true);\n var labelEls = [];\n var silent = isLabelSilent(axisModel);\n var triggerEvent = axisModel.get('triggerEvent');\n each(labels, function (labelItem, index) {\n var tickValue = labelItem.tickValue;\n var formattedLabel = labelItem.formattedLabel;\n var rawLabel = labelItem.rawLabel;\n var itemLabelModel = labelModel;\n\n if (rawCategoryData && rawCategoryData[tickValue] && rawCategoryData[tickValue].textStyle) {\n itemLabelModel = new Model(rawCategoryData[tickValue].textStyle, labelModel, axisModel.ecModel);\n }\n\n var textColor = itemLabelModel.getTextColor() || axisModel.get('axisLine.lineStyle.color');\n var tickCoord = axis.dataToCoord(tickValue);\n var pos = [tickCoord, opt.labelOffset + opt.labelDirection * labelMargin];\n var textEl = new graphic.Text({\n // Id for animation\n anid: 'label_' + tickValue,\n position: pos,\n rotation: labelLayout.rotation,\n silent: silent,\n z2: 10\n });\n graphic.setTextStyle(textEl.style, itemLabelModel, {\n text: formattedLabel,\n textAlign: itemLabelModel.getShallow('align', true) || labelLayout.textAlign,\n textVerticalAlign: itemLabelModel.getShallow('verticalAlign', true) || itemLabelModel.getShallow('baseline', true) || labelLayout.textVerticalAlign,\n textFill: typeof textColor === 'function' ? textColor( // (1) In category axis with data zoom, tick is not the original\n // index of axis.data. So tick should not be exposed to user\n // in category axis.\n // (2) Compatible with previous version, which always use formatted label as\n // input. But in interval scale the formatted label is like '223,445', which\n // maked user repalce ','. So we modify it to return original val but remain\n // it as 'string' to avoid error in replacing.\n axis.type === 'category' ? rawLabel : axis.type === 'value' ? tickValue + '' : tickValue, index) : textColor\n }); // Pack data for mouse event\n\n if (triggerEvent) {\n textEl.eventData = makeAxisEventDataBase(axisModel);\n textEl.eventData.targetType = 'axisLabel';\n textEl.eventData.value = rawLabel;\n } // FIXME\n\n\n axisBuilder._dumbGroup.add(textEl);\n\n textEl.updateTransform();\n labelEls.push(textEl);\n axisBuilder.group.add(textEl);\n textEl.decomposeTransform();\n });\n return labelEls;\n}\n\nvar _default = AxisBuilder;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/axis/AxisBuilder.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/axis/AxisView.js": +/*!*************************************************************!*\ + !*** ./node_modules/echarts/lib/component/axis/AxisView.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar axisPointerModelHelper = __webpack_require__(/*! ../axisPointer/modelHelper */ \"./node_modules/echarts/lib/component/axisPointer/modelHelper.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Base class of AxisView.\n */\nvar AxisView = echarts.extendComponentView({\n type: 'axis',\n\n /**\n * @private\n */\n _axisPointer: null,\n\n /**\n * @protected\n * @type {string}\n */\n axisPointerClass: null,\n\n /**\n * @override\n */\n render: function (axisModel, ecModel, api, payload) {\n // FIXME\n // This process should proformed after coordinate systems updated\n // (axis scale updated), and should be performed each time update.\n // So put it here temporarily, although it is not appropriate to\n // put a model-writing procedure in `view`.\n this.axisPointerClass && axisPointerModelHelper.fixValue(axisModel);\n AxisView.superApply(this, 'render', arguments);\n updateAxisPointer(this, axisModel, ecModel, api, payload, true);\n },\n\n /**\n * Action handler.\n * @public\n * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n updateAxisPointer: function (axisModel, ecModel, api, payload, force) {\n updateAxisPointer(this, axisModel, ecModel, api, payload, false);\n },\n\n /**\n * @override\n */\n remove: function (ecModel, api) {\n var axisPointer = this._axisPointer;\n axisPointer && axisPointer.remove(api);\n AxisView.superApply(this, 'remove', arguments);\n },\n\n /**\n * @override\n */\n dispose: function (ecModel, api) {\n disposeAxisPointer(this, api);\n AxisView.superApply(this, 'dispose', arguments);\n }\n});\n\nfunction updateAxisPointer(axisView, axisModel, ecModel, api, payload, forceRender) {\n var Clazz = AxisView.getAxisPointerClass(axisView.axisPointerClass);\n\n if (!Clazz) {\n return;\n }\n\n var axisPointerModel = axisPointerModelHelper.getAxisPointerModel(axisModel);\n axisPointerModel ? (axisView._axisPointer || (axisView._axisPointer = new Clazz())).render(axisModel, axisPointerModel, api, forceRender) : disposeAxisPointer(axisView, api);\n}\n\nfunction disposeAxisPointer(axisView, ecModel, api) {\n var axisPointer = axisView._axisPointer;\n axisPointer && axisPointer.dispose(ecModel, api);\n axisView._axisPointer = null;\n}\n\nvar axisPointerClazz = [];\n\nAxisView.registerAxisPointerClass = function (type, clazz) {\n axisPointerClazz[type] = clazz;\n};\n\nAxisView.getAxisPointerClass = function (type) {\n return type && axisPointerClazz[type];\n};\n\nvar _default = AxisView;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/axis/AxisView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/axis/CartesianAxisView.js": +/*!**********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/axis/CartesianAxisView.js ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar AxisBuilder = __webpack_require__(/*! ./AxisBuilder */ \"./node_modules/echarts/lib/component/axis/AxisBuilder.js\");\n\nvar AxisView = __webpack_require__(/*! ./AxisView */ \"./node_modules/echarts/lib/component/axis/AxisView.js\");\n\nvar cartesianAxisHelper = __webpack_require__(/*! ../../coord/cartesian/cartesianAxisHelper */ \"./node_modules/echarts/lib/coord/cartesian/cartesianAxisHelper.js\");\n\nvar _axisSplitHelper = __webpack_require__(/*! ./axisSplitHelper */ \"./node_modules/echarts/lib/component/axis/axisSplitHelper.js\");\n\nvar rectCoordAxisBuildSplitArea = _axisSplitHelper.rectCoordAxisBuildSplitArea;\nvar rectCoordAxisHandleRemove = _axisSplitHelper.rectCoordAxisHandleRemove;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];\nvar selfBuilderAttrs = ['splitArea', 'splitLine', 'minorSplitLine'];\nvar CartesianAxisView = AxisView.extend({\n type: 'cartesianAxis',\n axisPointerClass: 'CartesianAxisPointer',\n\n /**\n * @override\n */\n render: function (axisModel, ecModel, api, payload) {\n this.group.removeAll();\n var oldAxisGroup = this._axisGroup;\n this._axisGroup = new graphic.Group();\n this.group.add(this._axisGroup);\n\n if (!axisModel.get('show')) {\n return;\n }\n\n var gridModel = axisModel.getCoordSysModel();\n var layout = cartesianAxisHelper.layout(gridModel, axisModel);\n var axisBuilder = new AxisBuilder(axisModel, layout);\n zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n\n this._axisGroup.add(axisBuilder.getGroup());\n\n zrUtil.each(selfBuilderAttrs, function (name) {\n if (axisModel.get(name + '.show')) {\n this['_' + name](axisModel, gridModel);\n }\n }, this);\n graphic.groupTransition(oldAxisGroup, this._axisGroup, axisModel);\n CartesianAxisView.superCall(this, 'render', axisModel, ecModel, api, payload);\n },\n remove: function () {\n rectCoordAxisHandleRemove(this);\n },\n\n /**\n * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n * @param {module:echarts/coord/cartesian/GridModel} gridModel\n * @private\n */\n _splitLine: function (axisModel, gridModel) {\n var axis = axisModel.axis;\n\n if (axis.scale.isBlank()) {\n return;\n }\n\n var splitLineModel = axisModel.getModel('splitLine');\n var lineStyleModel = splitLineModel.getModel('lineStyle');\n var lineColors = lineStyleModel.get('color');\n lineColors = zrUtil.isArray(lineColors) ? lineColors : [lineColors];\n var gridRect = gridModel.coordinateSystem.getRect();\n var isHorizontal = axis.isHorizontal();\n var lineCount = 0;\n var ticksCoords = axis.getTicksCoords({\n tickModel: splitLineModel\n });\n var p1 = [];\n var p2 = [];\n var lineStyle = lineStyleModel.getLineStyle();\n\n for (var i = 0; i < ticksCoords.length; i++) {\n var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\n\n if (isHorizontal) {\n p1[0] = tickCoord;\n p1[1] = gridRect.y;\n p2[0] = tickCoord;\n p2[1] = gridRect.y + gridRect.height;\n } else {\n p1[0] = gridRect.x;\n p1[1] = tickCoord;\n p2[0] = gridRect.x + gridRect.width;\n p2[1] = tickCoord;\n }\n\n var colorIndex = lineCount++ % lineColors.length;\n var tickValue = ticksCoords[i].tickValue;\n\n this._axisGroup.add(new graphic.Line({\n anid: tickValue != null ? 'line_' + ticksCoords[i].tickValue : null,\n subPixelOptimize: true,\n shape: {\n x1: p1[0],\n y1: p1[1],\n x2: p2[0],\n y2: p2[1]\n },\n style: zrUtil.defaults({\n stroke: lineColors[colorIndex]\n }, lineStyle),\n silent: true\n }));\n }\n },\n\n /**\n * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n * @param {module:echarts/coord/cartesian/GridModel} gridModel\n * @private\n */\n _minorSplitLine: function (axisModel, gridModel) {\n var axis = axisModel.axis;\n var minorSplitLineModel = axisModel.getModel('minorSplitLine');\n var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\n var gridRect = gridModel.coordinateSystem.getRect();\n var isHorizontal = axis.isHorizontal();\n var minorTicksCoords = axis.getMinorTicksCoords();\n\n if (!minorTicksCoords.length) {\n return;\n }\n\n var p1 = [];\n var p2 = [];\n var lineStyle = lineStyleModel.getLineStyle();\n\n for (var i = 0; i < minorTicksCoords.length; i++) {\n for (var k = 0; k < minorTicksCoords[i].length; k++) {\n var tickCoord = axis.toGlobalCoord(minorTicksCoords[i][k].coord);\n\n if (isHorizontal) {\n p1[0] = tickCoord;\n p1[1] = gridRect.y;\n p2[0] = tickCoord;\n p2[1] = gridRect.y + gridRect.height;\n } else {\n p1[0] = gridRect.x;\n p1[1] = tickCoord;\n p2[0] = gridRect.x + gridRect.width;\n p2[1] = tickCoord;\n }\n\n this._axisGroup.add(new graphic.Line({\n anid: 'minor_line_' + minorTicksCoords[i][k].tickValue,\n subPixelOptimize: true,\n shape: {\n x1: p1[0],\n y1: p1[1],\n x2: p2[0],\n y2: p2[1]\n },\n style: lineStyle,\n silent: true\n }));\n }\n }\n },\n\n /**\n * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n * @param {module:echarts/coord/cartesian/GridModel} gridModel\n * @private\n */\n _splitArea: function (axisModel, gridModel) {\n rectCoordAxisBuildSplitArea(this, this._axisGroup, axisModel, gridModel);\n }\n});\nCartesianAxisView.extend({\n type: 'xAxis'\n});\nCartesianAxisView.extend({\n type: 'yAxis'\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/axis/CartesianAxisView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/axis/ParallelAxisView.js": +/*!*********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/axis/ParallelAxisView.js ***! + \*********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar AxisBuilder = __webpack_require__(/*! ./AxisBuilder */ \"./node_modules/echarts/lib/component/axis/AxisBuilder.js\");\n\nvar BrushController = __webpack_require__(/*! ../helper/BrushController */ \"./node_modules/echarts/lib/component/helper/BrushController.js\");\n\nvar brushHelper = __webpack_require__(/*! ../helper/brushHelper */ \"./node_modules/echarts/lib/component/helper/brushHelper.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar elementList = ['axisLine', 'axisTickLabel', 'axisName'];\nvar AxisView = echarts.extendComponentView({\n type: 'parallelAxis',\n\n /**\n * @override\n */\n init: function (ecModel, api) {\n AxisView.superApply(this, 'init', arguments);\n /**\n * @type {module:echarts/component/helper/BrushController}\n */\n\n (this._brushController = new BrushController(api.getZr())).on('brush', zrUtil.bind(this._onBrush, this));\n },\n\n /**\n * @override\n */\n render: function (axisModel, ecModel, api, payload) {\n if (fromAxisAreaSelect(axisModel, ecModel, payload)) {\n return;\n }\n\n this.axisModel = axisModel;\n this.api = api;\n this.group.removeAll();\n var oldAxisGroup = this._axisGroup;\n this._axisGroup = new graphic.Group();\n this.group.add(this._axisGroup);\n\n if (!axisModel.get('show')) {\n return;\n }\n\n var coordSysModel = getCoordSysModel(axisModel, ecModel);\n var coordSys = coordSysModel.coordinateSystem;\n var areaSelectStyle = axisModel.getAreaSelectStyle();\n var areaWidth = areaSelectStyle.width;\n var dim = axisModel.axis.dim;\n var axisLayout = coordSys.getAxisLayout(dim);\n var builderOpt = zrUtil.extend({\n strokeContainThreshold: areaWidth\n }, axisLayout);\n var axisBuilder = new AxisBuilder(axisModel, builderOpt);\n zrUtil.each(elementList, axisBuilder.add, axisBuilder);\n\n this._axisGroup.add(axisBuilder.getGroup());\n\n this._refreshBrushController(builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api);\n\n var animationModel = payload && payload.animation === false ? null : axisModel;\n graphic.groupTransition(oldAxisGroup, this._axisGroup, animationModel);\n },\n // /**\n // * @override\n // */\n // updateVisual: function (axisModel, ecModel, api, payload) {\n // this._brushController && this._brushController\n // .updateCovers(getCoverInfoList(axisModel));\n // },\n _refreshBrushController: function (builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api) {\n // After filtering, axis may change, select area needs to be update.\n var extent = axisModel.axis.getExtent();\n var extentLen = extent[1] - extent[0];\n var extra = Math.min(30, Math.abs(extentLen) * 0.1); // Arbitrary value.\n // width/height might be negative, which will be\n // normalized in BoundingRect.\n\n var rect = graphic.BoundingRect.create({\n x: extent[0],\n y: -areaWidth / 2,\n width: extentLen,\n height: areaWidth\n });\n rect.x -= extra;\n rect.width += 2 * extra;\n\n this._brushController.mount({\n enableGlobalPan: true,\n rotation: builderOpt.rotation,\n position: builderOpt.position\n }).setPanels([{\n panelId: 'pl',\n clipPath: brushHelper.makeRectPanelClipPath(rect),\n isTargetByCursor: brushHelper.makeRectIsTargetByCursor(rect, api, coordSysModel),\n getLinearBrushOtherExtent: brushHelper.makeLinearBrushOtherExtent(rect, 0)\n }]).enableBrush({\n brushType: 'lineX',\n brushStyle: areaSelectStyle,\n removeOnClick: true\n }).updateCovers(getCoverInfoList(axisModel));\n },\n _onBrush: function (coverInfoList, opt) {\n // Do not cache these object, because the mey be changed.\n var axisModel = this.axisModel;\n var axis = axisModel.axis;\n var intervals = zrUtil.map(coverInfoList, function (coverInfo) {\n return [axis.coordToData(coverInfo.range[0], true), axis.coordToData(coverInfo.range[1], true)];\n }); // If realtime is true, action is not dispatched on drag end, because\n // the drag end emits the same params with the last drag move event,\n // and may have some delay when using touch pad.\n\n if (!axisModel.option.realtime === opt.isEnd || opt.removeOnClick) {\n // jshint ignore:line\n this.api.dispatchAction({\n type: 'axisAreaSelect',\n parallelAxisId: axisModel.id,\n intervals: intervals\n });\n }\n },\n\n /**\n * @override\n */\n dispose: function () {\n this._brushController.dispose();\n }\n});\n\nfunction fromAxisAreaSelect(axisModel, ecModel, payload) {\n return payload && payload.type === 'axisAreaSelect' && ecModel.findComponents({\n mainType: 'parallelAxis',\n query: payload\n })[0] === axisModel;\n}\n\nfunction getCoverInfoList(axisModel) {\n var axis = axisModel.axis;\n return zrUtil.map(axisModel.activeIntervals, function (interval) {\n return {\n brushType: 'lineX',\n panelId: 'pl',\n range: [axis.dataToCoord(interval[0], true), axis.dataToCoord(interval[1], true)]\n };\n });\n}\n\nfunction getCoordSysModel(axisModel, ecModel) {\n return ecModel.getComponent('parallel', axisModel.get('parallelIndex'));\n}\n\nvar _default = AxisView;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/axis/ParallelAxisView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/axis/RadiusAxisView.js": +/*!*******************************************************************!*\ + !*** ./node_modules/echarts/lib/component/axis/RadiusAxisView.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar AxisBuilder = __webpack_require__(/*! ./AxisBuilder */ \"./node_modules/echarts/lib/component/axis/AxisBuilder.js\");\n\nvar AxisView = __webpack_require__(/*! ./AxisView */ \"./node_modules/echarts/lib/component/axis/AxisView.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];\nvar selfBuilderAttrs = ['splitLine', 'splitArea', 'minorSplitLine'];\n\nvar _default = AxisView.extend({\n type: 'radiusAxis',\n axisPointerClass: 'PolarAxisPointer',\n render: function (radiusAxisModel, ecModel) {\n this.group.removeAll();\n\n if (!radiusAxisModel.get('show')) {\n return;\n }\n\n var radiusAxis = radiusAxisModel.axis;\n var polar = radiusAxis.polar;\n var angleAxis = polar.getAngleAxis();\n var ticksCoords = radiusAxis.getTicksCoords();\n var minorTicksCoords = radiusAxis.getMinorTicksCoords();\n var axisAngle = angleAxis.getExtent()[0];\n var radiusExtent = radiusAxis.getExtent();\n var layout = layoutAxis(polar, radiusAxisModel, axisAngle);\n var axisBuilder = new AxisBuilder(radiusAxisModel, layout);\n zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n this.group.add(axisBuilder.getGroup());\n zrUtil.each(selfBuilderAttrs, function (name) {\n if (radiusAxisModel.get(name + '.show') && !radiusAxis.scale.isBlank()) {\n this['_' + name](radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords);\n }\n }, this);\n },\n\n /**\n * @private\n */\n _splitLine: function (radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) {\n var splitLineModel = radiusAxisModel.getModel('splitLine');\n var lineStyleModel = splitLineModel.getModel('lineStyle');\n var lineColors = lineStyleModel.get('color');\n var lineCount = 0;\n lineColors = lineColors instanceof Array ? lineColors : [lineColors];\n var splitLines = [];\n\n for (var i = 0; i < ticksCoords.length; i++) {\n var colorIndex = lineCount++ % lineColors.length;\n splitLines[colorIndex] = splitLines[colorIndex] || [];\n splitLines[colorIndex].push(new graphic.Circle({\n shape: {\n cx: polar.cx,\n cy: polar.cy,\n r: ticksCoords[i].coord\n }\n }));\n } // Simple optimization\n // Batching the lines if color are the same\n\n\n for (var i = 0; i < splitLines.length; i++) {\n this.group.add(graphic.mergePath(splitLines[i], {\n style: zrUtil.defaults({\n stroke: lineColors[i % lineColors.length],\n fill: null\n }, lineStyleModel.getLineStyle()),\n silent: true\n }));\n }\n },\n\n /**\n * @private\n */\n _minorSplitLine: function (radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords) {\n if (!minorTicksCoords.length) {\n return;\n }\n\n var minorSplitLineModel = radiusAxisModel.getModel('minorSplitLine');\n var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\n var lines = [];\n\n for (var i = 0; i < minorTicksCoords.length; i++) {\n for (var k = 0; k < minorTicksCoords[i].length; k++) {\n lines.push(new graphic.Circle({\n shape: {\n cx: polar.cx,\n cy: polar.cy,\n r: minorTicksCoords[i][k].coord\n }\n }));\n }\n }\n\n this.group.add(graphic.mergePath(lines, {\n style: zrUtil.defaults({\n fill: null\n }, lineStyleModel.getLineStyle()),\n silent: true\n }));\n },\n\n /**\n * @private\n */\n _splitArea: function (radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) {\n if (!ticksCoords.length) {\n return;\n }\n\n var splitAreaModel = radiusAxisModel.getModel('splitArea');\n var areaStyleModel = splitAreaModel.getModel('areaStyle');\n var areaColors = areaStyleModel.get('color');\n var lineCount = 0;\n areaColors = areaColors instanceof Array ? areaColors : [areaColors];\n var splitAreas = [];\n var prevRadius = ticksCoords[0].coord;\n\n for (var i = 1; i < ticksCoords.length; i++) {\n var colorIndex = lineCount++ % areaColors.length;\n splitAreas[colorIndex] = splitAreas[colorIndex] || [];\n splitAreas[colorIndex].push(new graphic.Sector({\n shape: {\n cx: polar.cx,\n cy: polar.cy,\n r0: prevRadius,\n r: ticksCoords[i].coord,\n startAngle: 0,\n endAngle: Math.PI * 2\n },\n silent: true\n }));\n prevRadius = ticksCoords[i].coord;\n } // Simple optimization\n // Batching the lines if color are the same\n\n\n for (var i = 0; i < splitAreas.length; i++) {\n this.group.add(graphic.mergePath(splitAreas[i], {\n style: zrUtil.defaults({\n fill: areaColors[i % areaColors.length]\n }, areaStyleModel.getAreaStyle()),\n silent: true\n }));\n }\n }\n});\n/**\n * @inner\n */\n\n\nfunction layoutAxis(polar, radiusAxisModel, axisAngle) {\n return {\n position: [polar.cx, polar.cy],\n rotation: axisAngle / 180 * Math.PI,\n labelDirection: -1,\n tickDirection: -1,\n nameDirection: 1,\n labelRotate: radiusAxisModel.getModel('axisLabel').get('rotate'),\n // Over splitLine and splitArea\n z2: 1\n };\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/axis/RadiusAxisView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/axis/SingleAxisView.js": +/*!*******************************************************************!*\ + !*** ./node_modules/echarts/lib/component/axis/SingleAxisView.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar AxisBuilder = __webpack_require__(/*! ./AxisBuilder */ \"./node_modules/echarts/lib/component/axis/AxisBuilder.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar singleAxisHelper = __webpack_require__(/*! ../../coord/single/singleAxisHelper */ \"./node_modules/echarts/lib/coord/single/singleAxisHelper.js\");\n\nvar AxisView = __webpack_require__(/*! ./AxisView */ \"./node_modules/echarts/lib/component/axis/AxisView.js\");\n\nvar _axisSplitHelper = __webpack_require__(/*! ./axisSplitHelper */ \"./node_modules/echarts/lib/component/axis/axisSplitHelper.js\");\n\nvar rectCoordAxisBuildSplitArea = _axisSplitHelper.rectCoordAxisBuildSplitArea;\nvar rectCoordAxisHandleRemove = _axisSplitHelper.rectCoordAxisHandleRemove;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];\nvar selfBuilderAttrs = ['splitArea', 'splitLine'];\nvar SingleAxisView = AxisView.extend({\n type: 'singleAxis',\n axisPointerClass: 'SingleAxisPointer',\n render: function (axisModel, ecModel, api, payload) {\n var group = this.group;\n group.removeAll();\n var oldAxisGroup = this._axisGroup;\n this._axisGroup = new graphic.Group();\n var layout = singleAxisHelper.layout(axisModel);\n var axisBuilder = new AxisBuilder(axisModel, layout);\n zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n group.add(this._axisGroup);\n group.add(axisBuilder.getGroup());\n zrUtil.each(selfBuilderAttrs, function (name) {\n if (axisModel.get(name + '.show')) {\n this['_' + name](axisModel);\n }\n }, this);\n graphic.groupTransition(oldAxisGroup, this._axisGroup, axisModel);\n SingleAxisView.superCall(this, 'render', axisModel, ecModel, api, payload);\n },\n remove: function () {\n rectCoordAxisHandleRemove(this);\n },\n _splitLine: function (axisModel) {\n var axis = axisModel.axis;\n\n if (axis.scale.isBlank()) {\n return;\n }\n\n var splitLineModel = axisModel.getModel('splitLine');\n var lineStyleModel = splitLineModel.getModel('lineStyle');\n var lineWidth = lineStyleModel.get('width');\n var lineColors = lineStyleModel.get('color');\n lineColors = lineColors instanceof Array ? lineColors : [lineColors];\n var gridRect = axisModel.coordinateSystem.getRect();\n var isHorizontal = axis.isHorizontal();\n var splitLines = [];\n var lineCount = 0;\n var ticksCoords = axis.getTicksCoords({\n tickModel: splitLineModel\n });\n var p1 = [];\n var p2 = [];\n\n for (var i = 0; i < ticksCoords.length; ++i) {\n var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\n\n if (isHorizontal) {\n p1[0] = tickCoord;\n p1[1] = gridRect.y;\n p2[0] = tickCoord;\n p2[1] = gridRect.y + gridRect.height;\n } else {\n p1[0] = gridRect.x;\n p1[1] = tickCoord;\n p2[0] = gridRect.x + gridRect.width;\n p2[1] = tickCoord;\n }\n\n var colorIndex = lineCount++ % lineColors.length;\n splitLines[colorIndex] = splitLines[colorIndex] || [];\n splitLines[colorIndex].push(new graphic.Line({\n subPixelOptimize: true,\n shape: {\n x1: p1[0],\n y1: p1[1],\n x2: p2[0],\n y2: p2[1]\n },\n style: {\n lineWidth: lineWidth\n },\n silent: true\n }));\n }\n\n for (var i = 0; i < splitLines.length; ++i) {\n this.group.add(graphic.mergePath(splitLines[i], {\n style: {\n stroke: lineColors[i % lineColors.length],\n lineDash: lineStyleModel.getLineDash(lineWidth),\n lineWidth: lineWidth\n },\n silent: true\n }));\n }\n },\n _splitArea: function (axisModel) {\n rectCoordAxisBuildSplitArea(this, this._axisGroup, axisModel, axisModel);\n }\n});\nvar _default = SingleAxisView;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/axis/SingleAxisView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/axis/axisSplitHelper.js": +/*!********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/axis/axisSplitHelper.js ***! + \********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel) {\n var axis = axisModel.axis;\n\n if (axis.scale.isBlank()) {\n return;\n }\n\n var splitAreaModel = axisModel.getModel('splitArea');\n var areaStyleModel = splitAreaModel.getModel('areaStyle');\n var areaColors = areaStyleModel.get('color');\n var gridRect = gridModel.coordinateSystem.getRect();\n var ticksCoords = axis.getTicksCoords({\n tickModel: splitAreaModel,\n clamp: true\n });\n\n if (!ticksCoords.length) {\n return;\n } // For Making appropriate splitArea animation, the color and anid\n // should be corresponding to previous one if possible.\n\n\n var areaColorsLen = areaColors.length;\n var lastSplitAreaColors = axisView.__splitAreaColors;\n var newSplitAreaColors = zrUtil.createHashMap();\n var colorIndex = 0;\n\n if (lastSplitAreaColors) {\n for (var i = 0; i < ticksCoords.length; i++) {\n var cIndex = lastSplitAreaColors.get(ticksCoords[i].tickValue);\n\n if (cIndex != null) {\n colorIndex = (cIndex + (areaColorsLen - 1) * i) % areaColorsLen;\n break;\n }\n }\n }\n\n var prev = axis.toGlobalCoord(ticksCoords[0].coord);\n var areaStyle = areaStyleModel.getAreaStyle();\n areaColors = zrUtil.isArray(areaColors) ? areaColors : [areaColors];\n\n for (var i = 1; i < ticksCoords.length; i++) {\n var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\n var x;\n var y;\n var width;\n var height;\n\n if (axis.isHorizontal()) {\n x = prev;\n y = gridRect.y;\n width = tickCoord - x;\n height = gridRect.height;\n prev = x + width;\n } else {\n x = gridRect.x;\n y = prev;\n width = gridRect.width;\n height = tickCoord - y;\n prev = y + height;\n }\n\n var tickValue = ticksCoords[i - 1].tickValue;\n tickValue != null && newSplitAreaColors.set(tickValue, colorIndex);\n axisGroup.add(new graphic.Rect({\n anid: tickValue != null ? 'area_' + tickValue : null,\n shape: {\n x: x,\n y: y,\n width: width,\n height: height\n },\n style: zrUtil.defaults({\n fill: areaColors[colorIndex]\n }, areaStyle),\n silent: true\n }));\n colorIndex = (colorIndex + 1) % areaColorsLen;\n }\n\n axisView.__splitAreaColors = newSplitAreaColors;\n}\n\nfunction rectCoordAxisHandleRemove(axisView) {\n axisView.__splitAreaColors = null;\n}\n\nexports.rectCoordAxisBuildSplitArea = rectCoordAxisBuildSplitArea;\nexports.rectCoordAxisHandleRemove = rectCoordAxisHandleRemove;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/axis/axisSplitHelper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/axis/parallelAxisAction.js": +/*!***********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/axis/parallelAxisAction.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @payload\n * @property {string} parallelAxisId\n * @property {Array.>} intervals\n */\nvar actionInfo = {\n type: 'axisAreaSelect',\n event: 'axisAreaSelected' // update: 'updateVisual'\n\n};\necharts.registerAction(actionInfo, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'parallelAxis',\n query: payload\n }, function (parallelAxisModel) {\n parallelAxisModel.axis.model.setActiveIntervals(payload.intervals);\n });\n});\n/**\n * @payload\n */\n\necharts.registerAction('parallelAxisExpand', function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'parallel',\n query: payload\n }, function (parallelModel) {\n parallelModel.setAxisExpand(payload);\n });\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/axis/parallelAxisAction.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/axisPointer.js": +/*!***********************************************************!*\ + !*** ./node_modules/echarts/lib/component/axisPointer.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar axisPointerModelHelper = __webpack_require__(/*! ./axisPointer/modelHelper */ \"./node_modules/echarts/lib/component/axisPointer/modelHelper.js\");\n\nvar axisTrigger = __webpack_require__(/*! ./axisPointer/axisTrigger */ \"./node_modules/echarts/lib/component/axisPointer/axisTrigger.js\");\n\n__webpack_require__(/*! ./axisPointer/AxisPointerModel */ \"./node_modules/echarts/lib/component/axisPointer/AxisPointerModel.js\");\n\n__webpack_require__(/*! ./axisPointer/AxisPointerView */ \"./node_modules/echarts/lib/component/axisPointer/AxisPointerView.js\");\n\n__webpack_require__(/*! ./axisPointer/CartesianAxisPointer */ \"./node_modules/echarts/lib/component/axisPointer/CartesianAxisPointer.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// CartesianAxisPointer is not supposed to be required here. But consider\n// echarts.simple.js and online build tooltip, which only require gridSimple,\n// CartesianAxisPointer should be able to required somewhere.\necharts.registerPreprocessor(function (option) {\n // Always has a global axisPointerModel for default setting.\n if (option) {\n (!option.axisPointer || option.axisPointer.length === 0) && (option.axisPointer = {});\n var link = option.axisPointer.link; // Normalize to array to avoid object mergin. But if link\n // is not set, remain null/undefined, otherwise it will\n // override existent link setting.\n\n if (link && !zrUtil.isArray(link)) {\n option.axisPointer.link = [link];\n }\n }\n}); // This process should proformed after coordinate systems created\n// and series data processed. So put it on statistic processing stage.\n\necharts.registerProcessor(echarts.PRIORITY.PROCESSOR.STATISTIC, function (ecModel, api) {\n // Build axisPointerModel, mergin tooltip.axisPointer model for each axis.\n // allAxesInfo should be updated when setOption performed.\n ecModel.getComponent('axisPointer').coordSysAxesInfo = axisPointerModelHelper.collect(ecModel, api);\n}); // Broadcast to all views.\n\necharts.registerAction({\n type: 'updateAxisPointer',\n event: 'updateAxisPointer',\n update: ':updateAxisPointer'\n}, axisTrigger);\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/axisPointer.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/axisPointer/AxisPointerModel.js": +/*!****************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/axisPointer/AxisPointerModel.js ***! + \****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar AxisPointerModel = echarts.extendComponentModel({\n type: 'axisPointer',\n coordSysAxesInfo: null,\n defaultOption: {\n // 'auto' means that show when triggered by tooltip or handle.\n show: 'auto',\n // 'click' | 'mousemove' | 'none'\n triggerOn: null,\n // set default in AxisPonterView.js\n zlevel: 0,\n z: 50,\n type: 'line',\n // 'line' 'shadow' 'cross' 'none'.\n // axispointer triggered by tootip determine snap automatically,\n // see `modelHelper`.\n snap: false,\n triggerTooltip: true,\n value: null,\n status: null,\n // Init value depends on whether handle is used.\n // [group0, group1, ...]\n // Each group can be: {\n // mapper: function () {},\n // singleTooltip: 'multiple', // 'multiple' or 'single'\n // xAxisId: ...,\n // yAxisName: ...,\n // angleAxisIndex: ...\n // }\n // mapper: can be ignored.\n // input: {axisInfo, value}\n // output: {axisInfo, value}\n link: [],\n // Do not set 'auto' here, otherwise global animation: false\n // will not effect at this axispointer.\n animation: null,\n animationDurationUpdate: 200,\n lineStyle: {\n color: '#aaa',\n width: 1,\n type: 'solid'\n },\n shadowStyle: {\n color: 'rgba(150,150,150,0.3)'\n },\n label: {\n show: true,\n formatter: null,\n // string | Function\n precision: 'auto',\n // Or a number like 0, 1, 2 ...\n margin: 3,\n color: '#fff',\n padding: [5, 7, 5, 7],\n backgroundColor: 'auto',\n // default: axis line color\n borderColor: null,\n borderWidth: 0,\n shadowBlur: 3,\n shadowColor: '#aaa' // Considering applicability, common style should\n // better not have shadowOffset.\n // shadowOffsetX: 0,\n // shadowOffsetY: 2\n\n },\n handle: {\n show: false,\n\n /* eslint-disable */\n icon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z',\n // jshint ignore:line\n\n /* eslint-enable */\n size: 45,\n // handle margin is from symbol center to axis, which is stable when circular move.\n margin: 50,\n // color: '#1b8bbd'\n // color: '#2f4554'\n color: '#333',\n shadowBlur: 3,\n shadowColor: '#aaa',\n shadowOffsetX: 0,\n shadowOffsetY: 2,\n // For mobile performance\n throttle: 40\n }\n }\n});\nvar _default = AxisPointerModel;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/axisPointer/AxisPointerModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/axisPointer/AxisPointerView.js": +/*!***************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/axisPointer/AxisPointerView.js ***! + \***************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar globalListener = __webpack_require__(/*! ./globalListener */ \"./node_modules/echarts/lib/component/axisPointer/globalListener.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar AxisPointerView = echarts.extendComponentView({\n type: 'axisPointer',\n render: function (globalAxisPointerModel, ecModel, api) {\n var globalTooltipModel = ecModel.getComponent('tooltip');\n var triggerOn = globalAxisPointerModel.get('triggerOn') || globalTooltipModel && globalTooltipModel.get('triggerOn') || 'mousemove|click'; // Register global listener in AxisPointerView to enable\n // AxisPointerView to be independent to Tooltip.\n\n globalListener.register('axisPointer', api, function (currTrigger, e, dispatchAction) {\n // If 'none', it is not controlled by mouse totally.\n if (triggerOn !== 'none' && (currTrigger === 'leave' || triggerOn.indexOf(currTrigger) >= 0)) {\n dispatchAction({\n type: 'updateAxisPointer',\n currTrigger: currTrigger,\n x: e && e.offsetX,\n y: e && e.offsetY\n });\n }\n });\n },\n\n /**\n * @override\n */\n remove: function (ecModel, api) {\n globalListener.unregister(api.getZr(), 'axisPointer');\n AxisPointerView.superApply(this._model, 'remove', arguments);\n },\n\n /**\n * @override\n */\n dispose: function (ecModel, api) {\n globalListener.unregister('axisPointer', api);\n AxisPointerView.superApply(this._model, 'dispose', arguments);\n }\n});\nvar _default = AxisPointerView;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/axisPointer/AxisPointerView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/axisPointer/BaseAxisPointer.js": +/*!***************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/axisPointer/BaseAxisPointer.js ***! + \***************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar clazzUtil = __webpack_require__(/*! ../../util/clazz */ \"./node_modules/echarts/lib/util/clazz.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar axisPointerModelHelper = __webpack_require__(/*! ./modelHelper */ \"./node_modules/echarts/lib/component/axisPointer/modelHelper.js\");\n\nvar eventTool = __webpack_require__(/*! zrender/lib/core/event */ \"./node_modules/zrender/lib/core/event.js\");\n\nvar throttleUtil = __webpack_require__(/*! ../../util/throttle */ \"./node_modules/echarts/lib/util/throttle.js\");\n\nvar _model = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar makeInner = _model.makeInner;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = makeInner();\nvar clone = zrUtil.clone;\nvar bind = zrUtil.bind;\n/**\n * Base axis pointer class in 2D.\n * Implemenents {module:echarts/component/axis/IAxisPointer}.\n */\n\nfunction BaseAxisPointer() {}\n\nBaseAxisPointer.prototype = {\n /**\n * @private\n */\n _group: null,\n\n /**\n * @private\n */\n _lastGraphicKey: null,\n\n /**\n * @private\n */\n _handle: null,\n\n /**\n * @private\n */\n _dragging: false,\n\n /**\n * @private\n */\n _lastValue: null,\n\n /**\n * @private\n */\n _lastStatus: null,\n\n /**\n * @private\n */\n _payloadInfo: null,\n\n /**\n * In px, arbitrary value. Do not set too small,\n * no animation is ok for most cases.\n * @protected\n */\n animationThreshold: 15,\n\n /**\n * @implement\n */\n render: function (axisModel, axisPointerModel, api, forceRender) {\n var value = axisPointerModel.get('value');\n var status = axisPointerModel.get('status'); // Bind them to `this`, not in closure, otherwise they will not\n // be replaced when user calling setOption in not merge mode.\n\n this._axisModel = axisModel;\n this._axisPointerModel = axisPointerModel;\n this._api = api; // Optimize: `render` will be called repeatly during mouse move.\n // So it is power consuming if performing `render` each time,\n // especially on mobile device.\n\n if (!forceRender && this._lastValue === value && this._lastStatus === status) {\n return;\n }\n\n this._lastValue = value;\n this._lastStatus = status;\n var group = this._group;\n var handle = this._handle;\n\n if (!status || status === 'hide') {\n // Do not clear here, for animation better.\n group && group.hide();\n handle && handle.hide();\n return;\n }\n\n group && group.show();\n handle && handle.show(); // Otherwise status is 'show'\n\n var elOption = {};\n this.makeElOption(elOption, value, axisModel, axisPointerModel, api); // Enable change axis pointer type.\n\n var graphicKey = elOption.graphicKey;\n\n if (graphicKey !== this._lastGraphicKey) {\n this.clear(api);\n }\n\n this._lastGraphicKey = graphicKey;\n var moveAnimation = this._moveAnimation = this.determineAnimation(axisModel, axisPointerModel);\n\n if (!group) {\n group = this._group = new graphic.Group();\n this.createPointerEl(group, elOption, axisModel, axisPointerModel);\n this.createLabelEl(group, elOption, axisModel, axisPointerModel);\n api.getZr().add(group);\n } else {\n var doUpdateProps = zrUtil.curry(updateProps, axisPointerModel, moveAnimation);\n this.updatePointerEl(group, elOption, doUpdateProps, axisPointerModel);\n this.updateLabelEl(group, elOption, doUpdateProps, axisPointerModel);\n }\n\n updateMandatoryProps(group, axisPointerModel, true);\n\n this._renderHandle(value);\n },\n\n /**\n * @implement\n */\n remove: function (api) {\n this.clear(api);\n },\n\n /**\n * @implement\n */\n dispose: function (api) {\n this.clear(api);\n },\n\n /**\n * @protected\n */\n determineAnimation: function (axisModel, axisPointerModel) {\n var animation = axisPointerModel.get('animation');\n var axis = axisModel.axis;\n var isCategoryAxis = axis.type === 'category';\n var useSnap = axisPointerModel.get('snap'); // Value axis without snap always do not snap.\n\n if (!useSnap && !isCategoryAxis) {\n return false;\n }\n\n if (animation === 'auto' || animation == null) {\n var animationThreshold = this.animationThreshold;\n\n if (isCategoryAxis && axis.getBandWidth() > animationThreshold) {\n return true;\n } // It is important to auto animation when snap used. Consider if there is\n // a dataZoom, animation will be disabled when too many points exist, while\n // it will be enabled for better visual effect when little points exist.\n\n\n if (useSnap) {\n var seriesDataCount = axisPointerModelHelper.getAxisInfo(axisModel).seriesDataCount;\n var axisExtent = axis.getExtent(); // Approximate band width\n\n return Math.abs(axisExtent[0] - axisExtent[1]) / seriesDataCount > animationThreshold;\n }\n\n return false;\n }\n\n return animation === true;\n },\n\n /**\n * add {pointer, label, graphicKey} to elOption\n * @protected\n */\n makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {// Shoule be implemenented by sub-class.\n },\n\n /**\n * @protected\n */\n createPointerEl: function (group, elOption, axisModel, axisPointerModel) {\n var pointerOption = elOption.pointer;\n\n if (pointerOption) {\n var pointerEl = inner(group).pointerEl = new graphic[pointerOption.type](clone(elOption.pointer));\n group.add(pointerEl);\n }\n },\n\n /**\n * @protected\n */\n createLabelEl: function (group, elOption, axisModel, axisPointerModel) {\n if (elOption.label) {\n var labelEl = inner(group).labelEl = new graphic.Rect(clone(elOption.label));\n group.add(labelEl);\n updateLabelShowHide(labelEl, axisPointerModel);\n }\n },\n\n /**\n * @protected\n */\n updatePointerEl: function (group, elOption, updateProps) {\n var pointerEl = inner(group).pointerEl;\n\n if (pointerEl && elOption.pointer) {\n pointerEl.setStyle(elOption.pointer.style);\n updateProps(pointerEl, {\n shape: elOption.pointer.shape\n });\n }\n },\n\n /**\n * @protected\n */\n updateLabelEl: function (group, elOption, updateProps, axisPointerModel) {\n var labelEl = inner(group).labelEl;\n\n if (labelEl) {\n labelEl.setStyle(elOption.label.style);\n updateProps(labelEl, {\n // Consider text length change in vertical axis, animation should\n // be used on shape, otherwise the effect will be weird.\n shape: elOption.label.shape,\n position: elOption.label.position\n });\n updateLabelShowHide(labelEl, axisPointerModel);\n }\n },\n\n /**\n * @private\n */\n _renderHandle: function (value) {\n if (this._dragging || !this.updateHandleTransform) {\n return;\n }\n\n var axisPointerModel = this._axisPointerModel;\n\n var zr = this._api.getZr();\n\n var handle = this._handle;\n var handleModel = axisPointerModel.getModel('handle');\n var status = axisPointerModel.get('status');\n\n if (!handleModel.get('show') || !status || status === 'hide') {\n handle && zr.remove(handle);\n this._handle = null;\n return;\n }\n\n var isInit;\n\n if (!this._handle) {\n isInit = true;\n handle = this._handle = graphic.createIcon(handleModel.get('icon'), {\n cursor: 'move',\n draggable: true,\n onmousemove: function (e) {\n // Fot mobile devicem, prevent screen slider on the button.\n eventTool.stop(e.event);\n },\n onmousedown: bind(this._onHandleDragMove, this, 0, 0),\n drift: bind(this._onHandleDragMove, this),\n ondragend: bind(this._onHandleDragEnd, this)\n });\n zr.add(handle);\n }\n\n updateMandatoryProps(handle, axisPointerModel, false); // update style\n\n var includeStyles = ['color', 'borderColor', 'borderWidth', 'opacity', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'];\n handle.setStyle(handleModel.getItemStyle(null, includeStyles)); // update position\n\n var handleSize = handleModel.get('size');\n\n if (!zrUtil.isArray(handleSize)) {\n handleSize = [handleSize, handleSize];\n }\n\n handle.attr('scale', [handleSize[0] / 2, handleSize[1] / 2]);\n throttleUtil.createOrUpdate(this, '_doDispatchAxisPointer', handleModel.get('throttle') || 0, 'fixRate');\n\n this._moveHandleToValue(value, isInit);\n },\n\n /**\n * @private\n */\n _moveHandleToValue: function (value, isInit) {\n updateProps(this._axisPointerModel, !isInit && this._moveAnimation, this._handle, getHandleTransProps(this.getHandleTransform(value, this._axisModel, this._axisPointerModel)));\n },\n\n /**\n * @private\n */\n _onHandleDragMove: function (dx, dy) {\n var handle = this._handle;\n\n if (!handle) {\n return;\n }\n\n this._dragging = true; // Persistent for throttle.\n\n var trans = this.updateHandleTransform(getHandleTransProps(handle), [dx, dy], this._axisModel, this._axisPointerModel);\n this._payloadInfo = trans;\n handle.stopAnimation();\n handle.attr(getHandleTransProps(trans));\n inner(handle).lastProp = null;\n\n this._doDispatchAxisPointer();\n },\n\n /**\n * Throttled method.\n * @private\n */\n _doDispatchAxisPointer: function () {\n var handle = this._handle;\n\n if (!handle) {\n return;\n }\n\n var payloadInfo = this._payloadInfo;\n var axisModel = this._axisModel;\n\n this._api.dispatchAction({\n type: 'updateAxisPointer',\n x: payloadInfo.cursorPoint[0],\n y: payloadInfo.cursorPoint[1],\n tooltipOption: payloadInfo.tooltipOption,\n axesInfo: [{\n axisDim: axisModel.axis.dim,\n axisIndex: axisModel.componentIndex\n }]\n });\n },\n\n /**\n * @private\n */\n _onHandleDragEnd: function (moveAnimation) {\n this._dragging = false;\n var handle = this._handle;\n\n if (!handle) {\n return;\n }\n\n var value = this._axisPointerModel.get('value'); // Consider snap or categroy axis, handle may be not consistent with\n // axisPointer. So move handle to align the exact value position when\n // drag ended.\n\n\n this._moveHandleToValue(value); // For the effect: tooltip will be shown when finger holding on handle\n // button, and will be hidden after finger left handle button.\n\n\n this._api.dispatchAction({\n type: 'hideTip'\n });\n },\n\n /**\n * Should be implemenented by sub-class if support `handle`.\n * @protected\n * @param {number} value\n * @param {module:echarts/model/Model} axisModel\n * @param {module:echarts/model/Model} axisPointerModel\n * @return {Object} {position: [x, y], rotation: 0}\n */\n getHandleTransform: null,\n\n /**\n * * Should be implemenented by sub-class if support `handle`.\n * @protected\n * @param {Object} transform {position, rotation}\n * @param {Array.} delta [dx, dy]\n * @param {module:echarts/model/Model} axisModel\n * @param {module:echarts/model/Model} axisPointerModel\n * @return {Object} {position: [x, y], rotation: 0, cursorPoint: [x, y]}\n */\n updateHandleTransform: null,\n\n /**\n * @private\n */\n clear: function (api) {\n this._lastValue = null;\n this._lastStatus = null;\n var zr = api.getZr();\n var group = this._group;\n var handle = this._handle;\n\n if (zr && group) {\n this._lastGraphicKey = null;\n group && zr.remove(group);\n handle && zr.remove(handle);\n this._group = null;\n this._handle = null;\n this._payloadInfo = null;\n }\n },\n\n /**\n * @protected\n */\n doClear: function () {// Implemented by sub-class if necessary.\n },\n\n /**\n * @protected\n * @param {Array.} xy\n * @param {Array.} wh\n * @param {number} [xDimIndex=0] or 1\n */\n buildLabel: function (xy, wh, xDimIndex) {\n xDimIndex = xDimIndex || 0;\n return {\n x: xy[xDimIndex],\n y: xy[1 - xDimIndex],\n width: wh[xDimIndex],\n height: wh[1 - xDimIndex]\n };\n }\n};\nBaseAxisPointer.prototype.constructor = BaseAxisPointer;\n\nfunction updateProps(animationModel, moveAnimation, el, props) {\n // Animation optimize.\n if (!propsEqual(inner(el).lastProp, props)) {\n inner(el).lastProp = props;\n moveAnimation ? graphic.updateProps(el, props, animationModel) : (el.stopAnimation(), el.attr(props));\n }\n}\n\nfunction propsEqual(lastProps, newProps) {\n if (zrUtil.isObject(lastProps) && zrUtil.isObject(newProps)) {\n var equals = true;\n zrUtil.each(newProps, function (item, key) {\n equals = equals && propsEqual(lastProps[key], item);\n });\n return !!equals;\n } else {\n return lastProps === newProps;\n }\n}\n\nfunction updateLabelShowHide(labelEl, axisPointerModel) {\n labelEl[axisPointerModel.get('label.show') ? 'show' : 'hide']();\n}\n\nfunction getHandleTransProps(trans) {\n return {\n position: trans.position.slice(),\n rotation: trans.rotation || 0\n };\n}\n\nfunction updateMandatoryProps(group, axisPointerModel, silent) {\n var z = axisPointerModel.get('z');\n var zlevel = axisPointerModel.get('zlevel');\n group && group.traverse(function (el) {\n if (el.type !== 'group') {\n z != null && (el.z = z);\n zlevel != null && (el.zlevel = zlevel);\n el.silent = silent;\n }\n });\n}\n\nclazzUtil.enableClassExtend(BaseAxisPointer);\nvar _default = BaseAxisPointer;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/axisPointer/BaseAxisPointer.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/axisPointer/CartesianAxisPointer.js": +/*!********************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/axisPointer/CartesianAxisPointer.js ***! + \********************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar BaseAxisPointer = __webpack_require__(/*! ./BaseAxisPointer */ \"./node_modules/echarts/lib/component/axisPointer/BaseAxisPointer.js\");\n\nvar viewHelper = __webpack_require__(/*! ./viewHelper */ \"./node_modules/echarts/lib/component/axisPointer/viewHelper.js\");\n\nvar cartesianAxisHelper = __webpack_require__(/*! ../../coord/cartesian/cartesianAxisHelper */ \"./node_modules/echarts/lib/coord/cartesian/cartesianAxisHelper.js\");\n\nvar AxisView = __webpack_require__(/*! ../axis/AxisView */ \"./node_modules/echarts/lib/component/axis/AxisView.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar CartesianAxisPointer = BaseAxisPointer.extend({\n /**\n * @override\n */\n makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {\n var axis = axisModel.axis;\n var grid = axis.grid;\n var axisPointerType = axisPointerModel.get('type');\n var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\n var pixelValue = axis.toGlobalCoord(axis.dataToCoord(value, true));\n\n if (axisPointerType && axisPointerType !== 'none') {\n var elStyle = viewHelper.buildElStyle(axisPointerModel);\n var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent);\n pointerOption.style = elStyle;\n elOption.graphicKey = pointerOption.type;\n elOption.pointer = pointerOption;\n }\n\n var layoutInfo = cartesianAxisHelper.layout(grid.model, axisModel);\n viewHelper.buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api);\n },\n\n /**\n * @override\n */\n getHandleTransform: function (value, axisModel, axisPointerModel) {\n var layoutInfo = cartesianAxisHelper.layout(axisModel.axis.grid.model, axisModel, {\n labelInside: false\n });\n layoutInfo.labelMargin = axisPointerModel.get('handle.margin');\n return {\n position: viewHelper.getTransformedPosition(axisModel.axis, value, layoutInfo),\n rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)\n };\n },\n\n /**\n * @override\n */\n updateHandleTransform: function (transform, delta, axisModel, axisPointerModel) {\n var axis = axisModel.axis;\n var grid = axis.grid;\n var axisExtent = axis.getGlobalExtent(true);\n var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\n var dimIndex = axis.dim === 'x' ? 0 : 1;\n var currPosition = transform.position;\n currPosition[dimIndex] += delta[dimIndex];\n currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);\n currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);\n var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;\n var cursorPoint = [cursorOtherValue, cursorOtherValue];\n cursorPoint[dimIndex] = currPosition[dimIndex]; // Make tooltip do not overlap axisPointer and in the middle of the grid.\n\n var tooltipOptions = [{\n verticalAlign: 'middle'\n }, {\n align: 'center'\n }];\n return {\n position: currPosition,\n rotation: transform.rotation,\n cursorPoint: cursorPoint,\n tooltipOption: tooltipOptions[dimIndex]\n };\n }\n});\n\nfunction getCartesian(grid, axis) {\n var opt = {};\n opt[axis.dim + 'AxisIndex'] = axis.index;\n return grid.getCartesian(opt);\n}\n\nvar pointerShapeBuilder = {\n line: function (axis, pixelValue, otherExtent) {\n var targetShape = viewHelper.makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getAxisDimIndex(axis));\n return {\n type: 'Line',\n subPixelOptimize: true,\n shape: targetShape\n };\n },\n shadow: function (axis, pixelValue, otherExtent) {\n var bandWidth = Math.max(1, axis.getBandWidth());\n var span = otherExtent[1] - otherExtent[0];\n return {\n type: 'Rect',\n shape: viewHelper.makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getAxisDimIndex(axis))\n };\n }\n};\n\nfunction getAxisDimIndex(axis) {\n return axis.dim === 'x' ? 0 : 1;\n}\n\nAxisView.registerAxisPointerClass('CartesianAxisPointer', CartesianAxisPointer);\nvar _default = CartesianAxisPointer;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/axisPointer/CartesianAxisPointer.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/axisPointer/PolarAxisPointer.js": +/*!****************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/axisPointer/PolarAxisPointer.js ***! + \****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar formatUtil = __webpack_require__(/*! ../../util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\nvar BaseAxisPointer = __webpack_require__(/*! ./BaseAxisPointer */ \"./node_modules/echarts/lib/component/axisPointer/BaseAxisPointer.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar viewHelper = __webpack_require__(/*! ./viewHelper */ \"./node_modules/echarts/lib/component/axisPointer/viewHelper.js\");\n\nvar matrix = __webpack_require__(/*! zrender/lib/core/matrix */ \"./node_modules/zrender/lib/core/matrix.js\");\n\nvar AxisBuilder = __webpack_require__(/*! ../axis/AxisBuilder */ \"./node_modules/echarts/lib/component/axis/AxisBuilder.js\");\n\nvar AxisView = __webpack_require__(/*! ../axis/AxisView */ \"./node_modules/echarts/lib/component/axis/AxisView.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PolarAxisPointer = BaseAxisPointer.extend({\n /**\n * @override\n */\n makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {\n var axis = axisModel.axis;\n\n if (axis.dim === 'angle') {\n this.animationThreshold = Math.PI / 18;\n }\n\n var polar = axis.polar;\n var otherAxis = polar.getOtherAxis(axis);\n var otherExtent = otherAxis.getExtent();\n var coordValue;\n coordValue = axis['dataTo' + formatUtil.capitalFirst(axis.dim)](value);\n var axisPointerType = axisPointerModel.get('type');\n\n if (axisPointerType && axisPointerType !== 'none') {\n var elStyle = viewHelper.buildElStyle(axisPointerModel);\n var pointerOption = pointerShapeBuilder[axisPointerType](axis, polar, coordValue, otherExtent, elStyle);\n pointerOption.style = elStyle;\n elOption.graphicKey = pointerOption.type;\n elOption.pointer = pointerOption;\n }\n\n var labelMargin = axisPointerModel.get('label.margin');\n var labelPos = getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin);\n viewHelper.buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos);\n } // Do not support handle, utill any user requires it.\n\n});\n\nfunction getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin) {\n var axis = axisModel.axis;\n var coord = axis.dataToCoord(value);\n var axisAngle = polar.getAngleAxis().getExtent()[0];\n axisAngle = axisAngle / 180 * Math.PI;\n var radiusExtent = polar.getRadiusAxis().getExtent();\n var position;\n var align;\n var verticalAlign;\n\n if (axis.dim === 'radius') {\n var transform = matrix.create();\n matrix.rotate(transform, transform, axisAngle);\n matrix.translate(transform, transform, [polar.cx, polar.cy]);\n position = graphic.applyTransform([coord, -labelMargin], transform);\n var labelRotation = axisModel.getModel('axisLabel').get('rotate') || 0;\n var labelLayout = AxisBuilder.innerTextLayout(axisAngle, labelRotation * Math.PI / 180, -1);\n align = labelLayout.textAlign;\n verticalAlign = labelLayout.textVerticalAlign;\n } else {\n // angle axis\n var r = radiusExtent[1];\n position = polar.coordToPoint([r + labelMargin, coord]);\n var cx = polar.cx;\n var cy = polar.cy;\n align = Math.abs(position[0] - cx) / r < 0.3 ? 'center' : position[0] > cx ? 'left' : 'right';\n verticalAlign = Math.abs(position[1] - cy) / r < 0.3 ? 'middle' : position[1] > cy ? 'top' : 'bottom';\n }\n\n return {\n position: position,\n align: align,\n verticalAlign: verticalAlign\n };\n}\n\nvar pointerShapeBuilder = {\n line: function (axis, polar, coordValue, otherExtent, elStyle) {\n return axis.dim === 'angle' ? {\n type: 'Line',\n shape: viewHelper.makeLineShape(polar.coordToPoint([otherExtent[0], coordValue]), polar.coordToPoint([otherExtent[1], coordValue]))\n } : {\n type: 'Circle',\n shape: {\n cx: polar.cx,\n cy: polar.cy,\n r: coordValue\n }\n };\n },\n shadow: function (axis, polar, coordValue, otherExtent, elStyle) {\n var bandWidth = Math.max(1, axis.getBandWidth());\n var radian = Math.PI / 180;\n return axis.dim === 'angle' ? {\n type: 'Sector',\n shape: viewHelper.makeSectorShape(polar.cx, polar.cy, otherExtent[0], otherExtent[1], // In ECharts y is negative if angle is positive\n (-coordValue - bandWidth / 2) * radian, (-coordValue + bandWidth / 2) * radian)\n } : {\n type: 'Sector',\n shape: viewHelper.makeSectorShape(polar.cx, polar.cy, coordValue - bandWidth / 2, coordValue + bandWidth / 2, 0, Math.PI * 2)\n };\n }\n};\nAxisView.registerAxisPointerClass('PolarAxisPointer', PolarAxisPointer);\nvar _default = PolarAxisPointer;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/axisPointer/PolarAxisPointer.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/axisPointer/SingleAxisPointer.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/axisPointer/SingleAxisPointer.js ***! + \*****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar BaseAxisPointer = __webpack_require__(/*! ./BaseAxisPointer */ \"./node_modules/echarts/lib/component/axisPointer/BaseAxisPointer.js\");\n\nvar viewHelper = __webpack_require__(/*! ./viewHelper */ \"./node_modules/echarts/lib/component/axisPointer/viewHelper.js\");\n\nvar singleAxisHelper = __webpack_require__(/*! ../../coord/single/singleAxisHelper */ \"./node_modules/echarts/lib/coord/single/singleAxisHelper.js\");\n\nvar AxisView = __webpack_require__(/*! ../axis/AxisView */ \"./node_modules/echarts/lib/component/axis/AxisView.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar XY = ['x', 'y'];\nvar WH = ['width', 'height'];\nvar SingleAxisPointer = BaseAxisPointer.extend({\n /**\n * @override\n */\n makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {\n var axis = axisModel.axis;\n var coordSys = axis.coordinateSystem;\n var otherExtent = getGlobalExtent(coordSys, 1 - getPointDimIndex(axis));\n var pixelValue = coordSys.dataToPoint(value)[0];\n var axisPointerType = axisPointerModel.get('type');\n\n if (axisPointerType && axisPointerType !== 'none') {\n var elStyle = viewHelper.buildElStyle(axisPointerModel);\n var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent);\n pointerOption.style = elStyle;\n elOption.graphicKey = pointerOption.type;\n elOption.pointer = pointerOption;\n }\n\n var layoutInfo = singleAxisHelper.layout(axisModel);\n viewHelper.buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api);\n },\n\n /**\n * @override\n */\n getHandleTransform: function (value, axisModel, axisPointerModel) {\n var layoutInfo = singleAxisHelper.layout(axisModel, {\n labelInside: false\n });\n layoutInfo.labelMargin = axisPointerModel.get('handle.margin');\n return {\n position: viewHelper.getTransformedPosition(axisModel.axis, value, layoutInfo),\n rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)\n };\n },\n\n /**\n * @override\n */\n updateHandleTransform: function (transform, delta, axisModel, axisPointerModel) {\n var axis = axisModel.axis;\n var coordSys = axis.coordinateSystem;\n var dimIndex = getPointDimIndex(axis);\n var axisExtent = getGlobalExtent(coordSys, dimIndex);\n var currPosition = transform.position;\n currPosition[dimIndex] += delta[dimIndex];\n currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);\n currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);\n var otherExtent = getGlobalExtent(coordSys, 1 - dimIndex);\n var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;\n var cursorPoint = [cursorOtherValue, cursorOtherValue];\n cursorPoint[dimIndex] = currPosition[dimIndex];\n return {\n position: currPosition,\n rotation: transform.rotation,\n cursorPoint: cursorPoint,\n tooltipOption: {\n verticalAlign: 'middle'\n }\n };\n }\n});\nvar pointerShapeBuilder = {\n line: function (axis, pixelValue, otherExtent) {\n var targetShape = viewHelper.makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getPointDimIndex(axis));\n return {\n type: 'Line',\n subPixelOptimize: true,\n shape: targetShape\n };\n },\n shadow: function (axis, pixelValue, otherExtent) {\n var bandWidth = axis.getBandWidth();\n var span = otherExtent[1] - otherExtent[0];\n return {\n type: 'Rect',\n shape: viewHelper.makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getPointDimIndex(axis))\n };\n }\n};\n\nfunction getPointDimIndex(axis) {\n return axis.isHorizontal() ? 0 : 1;\n}\n\nfunction getGlobalExtent(coordSys, dimIndex) {\n var rect = coordSys.getRect();\n return [rect[XY[dimIndex]], rect[XY[dimIndex]] + rect[WH[dimIndex]]];\n}\n\nAxisView.registerAxisPointerClass('SingleAxisPointer', SingleAxisPointer);\nvar _default = SingleAxisPointer;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/axisPointer/SingleAxisPointer.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/axisPointer/axisTrigger.js": +/*!***********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/axisPointer/axisTrigger.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar _model = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar makeInner = _model.makeInner;\n\nvar modelHelper = __webpack_require__(/*! ./modelHelper */ \"./node_modules/echarts/lib/component/axisPointer/modelHelper.js\");\n\nvar findPointFromSeries = __webpack_require__(/*! ./findPointFromSeries */ \"./node_modules/echarts/lib/component/axisPointer/findPointFromSeries.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar curry = zrUtil.curry;\nvar inner = makeInner();\n/**\n * Basic logic: check all axis, if they do not demand show/highlight,\n * then hide/downplay them.\n *\n * @param {Object} coordSysAxesInfo\n * @param {Object} payload\n * @param {string} [payload.currTrigger] 'click' | 'mousemove' | 'leave'\n * @param {Array.} [payload.x] x and y, which are mandatory, specify a point to\n * trigger axisPointer and tooltip.\n * @param {Array.} [payload.y] x and y, which are mandatory, specify a point to\n * trigger axisPointer and tooltip.\n * @param {Object} [payload.seriesIndex] finder, optional, restrict target axes.\n * @param {Object} [payload.dataIndex] finder, restrict target axes.\n * @param {Object} [payload.axesInfo] finder, restrict target axes.\n * [{\n * axisDim: 'x'|'y'|'angle'|...,\n * axisIndex: ...,\n * value: ...\n * }, ...]\n * @param {Function} [payload.dispatchAction]\n * @param {Object} [payload.tooltipOption]\n * @param {Object|Array.|Function} [payload.position] Tooltip position,\n * which can be specified in dispatchAction\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @return {Object} content of event obj for echarts.connect.\n */\n\nfunction _default(payload, ecModel, api) {\n var currTrigger = payload.currTrigger;\n var point = [payload.x, payload.y];\n var finder = payload;\n var dispatchAction = payload.dispatchAction || zrUtil.bind(api.dispatchAction, api);\n var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo; // Pending\n // See #6121. But we are not able to reproduce it yet.\n\n if (!coordSysAxesInfo) {\n return;\n }\n\n if (illegalPoint(point)) {\n // Used in the default behavior of `connection`: use the sample seriesIndex\n // and dataIndex. And also used in the tooltipView trigger.\n point = findPointFromSeries({\n seriesIndex: finder.seriesIndex,\n // Do not use dataIndexInside from other ec instance.\n // FIXME: auto detect it?\n dataIndex: finder.dataIndex\n }, ecModel).point;\n }\n\n var isIllegalPoint = illegalPoint(point); // Axis and value can be specified when calling dispatchAction({type: 'updateAxisPointer'}).\n // Notice: In this case, it is difficult to get the `point` (which is necessary to show\n // tooltip, so if point is not given, we just use the point found by sample seriesIndex\n // and dataIndex.\n\n var inputAxesInfo = finder.axesInfo;\n var axesInfo = coordSysAxesInfo.axesInfo;\n var shouldHide = currTrigger === 'leave' || illegalPoint(point);\n var outputFinder = {};\n var showValueMap = {};\n var dataByCoordSys = {\n list: [],\n map: {}\n };\n var updaters = {\n showPointer: curry(showPointer, showValueMap),\n showTooltip: curry(showTooltip, dataByCoordSys)\n }; // Process for triggered axes.\n\n each(coordSysAxesInfo.coordSysMap, function (coordSys, coordSysKey) {\n // If a point given, it must be contained by the coordinate system.\n var coordSysContainsPoint = isIllegalPoint || coordSys.containPoint(point);\n each(coordSysAxesInfo.coordSysAxesInfo[coordSysKey], function (axisInfo, key) {\n var axis = axisInfo.axis;\n var inputAxisInfo = findInputAxisInfo(inputAxesInfo, axisInfo); // If no inputAxesInfo, no axis is restricted.\n\n if (!shouldHide && coordSysContainsPoint && (!inputAxesInfo || inputAxisInfo)) {\n var val = inputAxisInfo && inputAxisInfo.value;\n\n if (val == null && !isIllegalPoint) {\n val = axis.pointToData(point);\n }\n\n val != null && processOnAxis(axisInfo, val, updaters, false, outputFinder);\n }\n });\n }); // Process for linked axes.\n\n var linkTriggers = {};\n each(axesInfo, function (tarAxisInfo, tarKey) {\n var linkGroup = tarAxisInfo.linkGroup; // If axis has been triggered in the previous stage, it should not be triggered by link.\n\n if (linkGroup && !showValueMap[tarKey]) {\n each(linkGroup.axesInfo, function (srcAxisInfo, srcKey) {\n var srcValItem = showValueMap[srcKey]; // If srcValItem exist, source axis is triggered, so link to target axis.\n\n if (srcAxisInfo !== tarAxisInfo && srcValItem) {\n var val = srcValItem.value;\n linkGroup.mapper && (val = tarAxisInfo.axis.scale.parse(linkGroup.mapper(val, makeMapperParam(srcAxisInfo), makeMapperParam(tarAxisInfo))));\n linkTriggers[tarAxisInfo.key] = val;\n }\n });\n }\n });\n each(linkTriggers, function (val, tarKey) {\n processOnAxis(axesInfo[tarKey], val, updaters, true, outputFinder);\n });\n updateModelActually(showValueMap, axesInfo, outputFinder);\n dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction);\n dispatchHighDownActually(axesInfo, dispatchAction, api);\n return outputFinder;\n}\n\nfunction processOnAxis(axisInfo, newValue, updaters, dontSnap, outputFinder) {\n var axis = axisInfo.axis;\n\n if (axis.scale.isBlank() || !axis.containData(newValue)) {\n return;\n }\n\n if (!axisInfo.involveSeries) {\n updaters.showPointer(axisInfo, newValue);\n return;\n } // Heavy calculation. So put it after axis.containData checking.\n\n\n var payloadInfo = buildPayloadsBySeries(newValue, axisInfo);\n var payloadBatch = payloadInfo.payloadBatch;\n var snapToValue = payloadInfo.snapToValue; // Fill content of event obj for echarts.connect.\n // By default use the first involved series data as a sample to connect.\n\n if (payloadBatch[0] && outputFinder.seriesIndex == null) {\n zrUtil.extend(outputFinder, payloadBatch[0]);\n } // If no linkSource input, this process is for collecting link\n // target, where snap should not be accepted.\n\n\n if (!dontSnap && axisInfo.snap) {\n if (axis.containData(snapToValue) && snapToValue != null) {\n newValue = snapToValue;\n }\n }\n\n updaters.showPointer(axisInfo, newValue, payloadBatch, outputFinder); // Tooltip should always be snapToValue, otherwise there will be\n // incorrect \"axis value ~ series value\" mapping displayed in tooltip.\n\n updaters.showTooltip(axisInfo, payloadInfo, snapToValue);\n}\n\nfunction buildPayloadsBySeries(value, axisInfo) {\n var axis = axisInfo.axis;\n var dim = axis.dim;\n var snapToValue = value;\n var payloadBatch = [];\n var minDist = Number.MAX_VALUE;\n var minDiff = -1;\n each(axisInfo.seriesModels, function (series, idx) {\n var dataDim = series.getData().mapDimension(dim, true);\n var seriesNestestValue;\n var dataIndices;\n\n if (series.getAxisTooltipData) {\n var result = series.getAxisTooltipData(dataDim, value, axis);\n dataIndices = result.dataIndices;\n seriesNestestValue = result.nestestValue;\n } else {\n dataIndices = series.getData().indicesOfNearest(dataDim[0], value, // Add a threshold to avoid find the wrong dataIndex\n // when data length is not same.\n // false,\n axis.type === 'category' ? 0.5 : null);\n\n if (!dataIndices.length) {\n return;\n }\n\n seriesNestestValue = series.getData().get(dataDim[0], dataIndices[0]);\n }\n\n if (seriesNestestValue == null || !isFinite(seriesNestestValue)) {\n return;\n }\n\n var diff = value - seriesNestestValue;\n var dist = Math.abs(diff); // Consider category case\n\n if (dist <= minDist) {\n if (dist < minDist || diff >= 0 && minDiff < 0) {\n minDist = dist;\n minDiff = diff;\n snapToValue = seriesNestestValue;\n payloadBatch.length = 0;\n }\n\n each(dataIndices, function (dataIndex) {\n payloadBatch.push({\n seriesIndex: series.seriesIndex,\n dataIndexInside: dataIndex,\n dataIndex: series.getData().getRawIndex(dataIndex)\n });\n });\n }\n });\n return {\n payloadBatch: payloadBatch,\n snapToValue: snapToValue\n };\n}\n\nfunction showPointer(showValueMap, axisInfo, value, payloadBatch) {\n showValueMap[axisInfo.key] = {\n value: value,\n payloadBatch: payloadBatch\n };\n}\n\nfunction showTooltip(dataByCoordSys, axisInfo, payloadInfo, value) {\n var payloadBatch = payloadInfo.payloadBatch;\n var axis = axisInfo.axis;\n var axisModel = axis.model;\n var axisPointerModel = axisInfo.axisPointerModel; // If no data, do not create anything in dataByCoordSys,\n // whose length will be used to judge whether dispatch action.\n\n if (!axisInfo.triggerTooltip || !payloadBatch.length) {\n return;\n }\n\n var coordSysModel = axisInfo.coordSys.model;\n var coordSysKey = modelHelper.makeKey(coordSysModel);\n var coordSysItem = dataByCoordSys.map[coordSysKey];\n\n if (!coordSysItem) {\n coordSysItem = dataByCoordSys.map[coordSysKey] = {\n coordSysId: coordSysModel.id,\n coordSysIndex: coordSysModel.componentIndex,\n coordSysType: coordSysModel.type,\n coordSysMainType: coordSysModel.mainType,\n dataByAxis: []\n };\n dataByCoordSys.list.push(coordSysItem);\n }\n\n coordSysItem.dataByAxis.push({\n axisDim: axis.dim,\n axisIndex: axisModel.componentIndex,\n axisType: axisModel.type,\n axisId: axisModel.id,\n value: value,\n // Caustion: viewHelper.getValueLabel is actually on \"view stage\", which\n // depends that all models have been updated. So it should not be performed\n // here. Considering axisPointerModel used here is volatile, which is hard\n // to be retrieve in TooltipView, we prepare parameters here.\n valueLabelOpt: {\n precision: axisPointerModel.get('label.precision'),\n formatter: axisPointerModel.get('label.formatter')\n },\n seriesDataIndices: payloadBatch.slice()\n });\n}\n\nfunction updateModelActually(showValueMap, axesInfo, outputFinder) {\n var outputAxesInfo = outputFinder.axesInfo = []; // Basic logic: If no 'show' required, 'hide' this axisPointer.\n\n each(axesInfo, function (axisInfo, key) {\n var option = axisInfo.axisPointerModel.option;\n var valItem = showValueMap[key];\n\n if (valItem) {\n !axisInfo.useHandle && (option.status = 'show');\n option.value = valItem.value; // For label formatter param and highlight.\n\n option.seriesDataIndices = (valItem.payloadBatch || []).slice();\n } // When always show (e.g., handle used), remain\n // original value and status.\n else {\n // If hide, value still need to be set, consider\n // click legend to toggle axis blank.\n !axisInfo.useHandle && (option.status = 'hide');\n } // If status is 'hide', should be no info in payload.\n\n\n option.status === 'show' && outputAxesInfo.push({\n axisDim: axisInfo.axis.dim,\n axisIndex: axisInfo.axis.model.componentIndex,\n value: option.value\n });\n });\n}\n\nfunction dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction) {\n // Basic logic: If no showTip required, hideTip will be dispatched.\n if (illegalPoint(point) || !dataByCoordSys.list.length) {\n dispatchAction({\n type: 'hideTip'\n });\n return;\n } // In most case only one axis (or event one series is used). It is\n // convinient to fetch payload.seriesIndex and payload.dataIndex\n // dirtectly. So put the first seriesIndex and dataIndex of the first\n // axis on the payload.\n\n\n var sampleItem = ((dataByCoordSys.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {};\n dispatchAction({\n type: 'showTip',\n escapeConnect: true,\n x: point[0],\n y: point[1],\n tooltipOption: payload.tooltipOption,\n position: payload.position,\n dataIndexInside: sampleItem.dataIndexInside,\n dataIndex: sampleItem.dataIndex,\n seriesIndex: sampleItem.seriesIndex,\n dataByCoordSys: dataByCoordSys.list\n });\n}\n\nfunction dispatchHighDownActually(axesInfo, dispatchAction, api) {\n // FIXME\n // highlight status modification shoule be a stage of main process?\n // (Consider confilct (e.g., legend and axisPointer) and setOption)\n var zr = api.getZr();\n var highDownKey = 'axisPointerLastHighlights';\n var lastHighlights = inner(zr)[highDownKey] || {};\n var newHighlights = inner(zr)[highDownKey] = {}; // Update highlight/downplay status according to axisPointer model.\n // Build hash map and remove duplicate incidentally.\n\n each(axesInfo, function (axisInfo, key) {\n var option = axisInfo.axisPointerModel.option;\n option.status === 'show' && each(option.seriesDataIndices, function (batchItem) {\n var key = batchItem.seriesIndex + ' | ' + batchItem.dataIndex;\n newHighlights[key] = batchItem;\n });\n }); // Diff.\n\n var toHighlight = [];\n var toDownplay = [];\n zrUtil.each(lastHighlights, function (batchItem, key) {\n !newHighlights[key] && toDownplay.push(batchItem);\n });\n zrUtil.each(newHighlights, function (batchItem, key) {\n !lastHighlights[key] && toHighlight.push(batchItem);\n });\n toDownplay.length && api.dispatchAction({\n type: 'downplay',\n escapeConnect: true,\n batch: toDownplay\n });\n toHighlight.length && api.dispatchAction({\n type: 'highlight',\n escapeConnect: true,\n batch: toHighlight\n });\n}\n\nfunction findInputAxisInfo(inputAxesInfo, axisInfo) {\n for (var i = 0; i < (inputAxesInfo || []).length; i++) {\n var inputAxisInfo = inputAxesInfo[i];\n\n if (axisInfo.axis.dim === inputAxisInfo.axisDim && axisInfo.axis.model.componentIndex === inputAxisInfo.axisIndex) {\n return inputAxisInfo;\n }\n }\n}\n\nfunction makeMapperParam(axisInfo) {\n var axisModel = axisInfo.axis.model;\n var item = {};\n var dim = item.axisDim = axisInfo.axis.dim;\n item.axisIndex = item[dim + 'AxisIndex'] = axisModel.componentIndex;\n item.axisName = item[dim + 'AxisName'] = axisModel.name;\n item.axisId = item[dim + 'AxisId'] = axisModel.id;\n return item;\n}\n\nfunction illegalPoint(point) {\n return !point || point[0] == null || isNaN(point[0]) || point[1] == null || isNaN(point[1]);\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/axisPointer/axisTrigger.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/axisPointer/findPointFromSeries.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/axisPointer/findPointFromSeries.js ***! + \*******************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar modelUtil = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {Object} finder contains {seriesIndex, dataIndex, dataIndexInside}\n * @param {module:echarts/model/Global} ecModel\n * @return {Object} {point: [x, y], el: ...} point Will not be null.\n */\nfunction _default(finder, ecModel) {\n var point = [];\n var seriesIndex = finder.seriesIndex;\n var seriesModel;\n\n if (seriesIndex == null || !(seriesModel = ecModel.getSeriesByIndex(seriesIndex))) {\n return {\n point: []\n };\n }\n\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, finder);\n\n if (dataIndex == null || dataIndex < 0 || zrUtil.isArray(dataIndex)) {\n return {\n point: []\n };\n }\n\n var el = data.getItemGraphicEl(dataIndex);\n var coordSys = seriesModel.coordinateSystem;\n\n if (seriesModel.getTooltipPosition) {\n point = seriesModel.getTooltipPosition(dataIndex) || [];\n } else if (coordSys && coordSys.dataToPoint) {\n point = coordSys.dataToPoint(data.getValues(zrUtil.map(coordSys.dimensions, function (dim) {\n return data.mapDimension(dim);\n }), dataIndex, true)) || [];\n } else if (el) {\n // Use graphic bounding rect\n var rect = el.getBoundingRect().clone();\n rect.applyTransform(el.transform);\n point = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n }\n\n return {\n point: point,\n el: el\n };\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/axisPointer/findPointFromSeries.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/axisPointer/globalListener.js": +/*!**************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/axisPointer/globalListener.js ***! + \**************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar env = __webpack_require__(/*! zrender/lib/core/env */ \"./node_modules/zrender/lib/core/env.js\");\n\nvar _model = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar makeInner = _model.makeInner;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = makeInner();\nvar each = zrUtil.each;\n/**\n * @param {string} key\n * @param {module:echarts/ExtensionAPI} api\n * @param {Function} handler\n * param: {string} currTrigger\n * param: {Array.} point\n */\n\nfunction register(key, api, handler) {\n if (env.node) {\n return;\n }\n\n var zr = api.getZr();\n inner(zr).records || (inner(zr).records = {});\n initGlobalListeners(zr, api);\n var record = inner(zr).records[key] || (inner(zr).records[key] = {});\n record.handler = handler;\n}\n\nfunction initGlobalListeners(zr, api) {\n if (inner(zr).initialized) {\n return;\n }\n\n inner(zr).initialized = true;\n useHandler('click', zrUtil.curry(doEnter, 'click'));\n useHandler('mousemove', zrUtil.curry(doEnter, 'mousemove')); // useHandler('mouseout', onLeave);\n\n useHandler('globalout', onLeave);\n\n function useHandler(eventType, cb) {\n zr.on(eventType, function (e) {\n var dis = makeDispatchAction(api);\n each(inner(zr).records, function (record) {\n record && cb(record, e, dis.dispatchAction);\n });\n dispatchTooltipFinally(dis.pendings, api);\n });\n }\n}\n\nfunction dispatchTooltipFinally(pendings, api) {\n var showLen = pendings.showTip.length;\n var hideLen = pendings.hideTip.length;\n var actuallyPayload;\n\n if (showLen) {\n actuallyPayload = pendings.showTip[showLen - 1];\n } else if (hideLen) {\n actuallyPayload = pendings.hideTip[hideLen - 1];\n }\n\n if (actuallyPayload) {\n actuallyPayload.dispatchAction = null;\n api.dispatchAction(actuallyPayload);\n }\n}\n\nfunction onLeave(record, e, dispatchAction) {\n record.handler('leave', null, dispatchAction);\n}\n\nfunction doEnter(currTrigger, record, e, dispatchAction) {\n record.handler(currTrigger, e, dispatchAction);\n}\n\nfunction makeDispatchAction(api) {\n var pendings = {\n showTip: [],\n hideTip: []\n }; // FIXME\n // better approach?\n // 'showTip' and 'hideTip' can be triggered by axisPointer and tooltip,\n // which may be conflict, (axisPointer call showTip but tooltip call hideTip);\n // So we have to add \"final stage\" to merge those dispatched actions.\n\n var dispatchAction = function (payload) {\n var pendingList = pendings[payload.type];\n\n if (pendingList) {\n pendingList.push(payload);\n } else {\n payload.dispatchAction = dispatchAction;\n api.dispatchAction(payload);\n }\n };\n\n return {\n dispatchAction: dispatchAction,\n pendings: pendings\n };\n}\n/**\n * @param {string} key\n * @param {module:echarts/ExtensionAPI} api\n */\n\n\nfunction unregister(key, api) {\n if (env.node) {\n return;\n }\n\n var zr = api.getZr();\n var record = (inner(zr).records || {})[key];\n\n if (record) {\n inner(zr).records[key] = null;\n }\n}\n\nexports.register = register;\nexports.unregister = unregister;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/axisPointer/globalListener.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/axisPointer/modelHelper.js": +/*!***********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/axisPointer/modelHelper.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar Model = __webpack_require__(/*! ../../model/Model */ \"./node_modules/echarts/lib/model/Model.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar curry = zrUtil.curry; // Build axisPointerModel, mergin tooltip.axisPointer model for each axis.\n// allAxesInfo should be updated when setOption performed.\n\nfunction collect(ecModel, api) {\n var result = {\n /**\n * key: makeKey(axis.model)\n * value: {\n * axis,\n * coordSys,\n * axisPointerModel,\n * triggerTooltip,\n * involveSeries,\n * snap,\n * seriesModels,\n * seriesDataCount\n * }\n */\n axesInfo: {},\n seriesInvolved: false,\n\n /**\n * key: makeKey(coordSys.model)\n * value: Object: key makeKey(axis.model), value: axisInfo\n */\n coordSysAxesInfo: {},\n coordSysMap: {}\n };\n collectAxesInfo(result, ecModel, api); // Check seriesInvolved for performance, in case too many series in some chart.\n\n result.seriesInvolved && collectSeriesInfo(result, ecModel);\n return result;\n}\n\nfunction collectAxesInfo(result, ecModel, api) {\n var globalTooltipModel = ecModel.getComponent('tooltip');\n var globalAxisPointerModel = ecModel.getComponent('axisPointer'); // links can only be set on global.\n\n var linksOption = globalAxisPointerModel.get('link', true) || [];\n var linkGroups = []; // Collect axes info.\n\n each(api.getCoordinateSystems(), function (coordSys) {\n // Some coordinate system do not support axes, like geo.\n if (!coordSys.axisPointerEnabled) {\n return;\n }\n\n var coordSysKey = makeKey(coordSys.model);\n var axesInfoInCoordSys = result.coordSysAxesInfo[coordSysKey] = {};\n result.coordSysMap[coordSysKey] = coordSys; // Set tooltip (like 'cross') is a convienent way to show axisPointer\n // for user. So we enable seting tooltip on coordSys model.\n\n var coordSysModel = coordSys.model;\n var baseTooltipModel = coordSysModel.getModel('tooltip', globalTooltipModel);\n each(coordSys.getAxes(), curry(saveTooltipAxisInfo, false, null)); // If axis tooltip used, choose tooltip axis for each coordSys.\n // Notice this case: coordSys is `grid` but not `cartesian2D` here.\n\n if (coordSys.getTooltipAxes && globalTooltipModel // If tooltip.showContent is set as false, tooltip will not\n // show but axisPointer will show as normal.\n && baseTooltipModel.get('show')) {\n // Compatible with previous logic. But series.tooltip.trigger: 'axis'\n // or series.data[n].tooltip.trigger: 'axis' are not support any more.\n var triggerAxis = baseTooltipModel.get('trigger') === 'axis';\n var cross = baseTooltipModel.get('axisPointer.type') === 'cross';\n var tooltipAxes = coordSys.getTooltipAxes(baseTooltipModel.get('axisPointer.axis'));\n\n if (triggerAxis || cross) {\n each(tooltipAxes.baseAxes, curry(saveTooltipAxisInfo, cross ? 'cross' : true, triggerAxis));\n }\n\n if (cross) {\n each(tooltipAxes.otherAxes, curry(saveTooltipAxisInfo, 'cross', false));\n }\n } // fromTooltip: true | false | 'cross'\n // triggerTooltip: true | false | null\n\n\n function saveTooltipAxisInfo(fromTooltip, triggerTooltip, axis) {\n var axisPointerModel = axis.model.getModel('axisPointer', globalAxisPointerModel);\n var axisPointerShow = axisPointerModel.get('show');\n\n if (!axisPointerShow || axisPointerShow === 'auto' && !fromTooltip && !isHandleTrigger(axisPointerModel)) {\n return;\n }\n\n if (triggerTooltip == null) {\n triggerTooltip = axisPointerModel.get('triggerTooltip');\n }\n\n axisPointerModel = fromTooltip ? makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) : axisPointerModel;\n var snap = axisPointerModel.get('snap');\n var key = makeKey(axis.model);\n var involveSeries = triggerTooltip || snap || axis.type === 'category'; // If result.axesInfo[key] exist, override it (tooltip has higher priority).\n\n var axisInfo = result.axesInfo[key] = {\n key: key,\n axis: axis,\n coordSys: coordSys,\n axisPointerModel: axisPointerModel,\n triggerTooltip: triggerTooltip,\n involveSeries: involveSeries,\n snap: snap,\n useHandle: isHandleTrigger(axisPointerModel),\n seriesModels: []\n };\n axesInfoInCoordSys[key] = axisInfo;\n result.seriesInvolved |= involveSeries;\n var groupIndex = getLinkGroupIndex(linksOption, axis);\n\n if (groupIndex != null) {\n var linkGroup = linkGroups[groupIndex] || (linkGroups[groupIndex] = {\n axesInfo: {}\n });\n linkGroup.axesInfo[key] = axisInfo;\n linkGroup.mapper = linksOption[groupIndex].mapper;\n axisInfo.linkGroup = linkGroup;\n }\n }\n });\n}\n\nfunction makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) {\n var tooltipAxisPointerModel = baseTooltipModel.getModel('axisPointer');\n var volatileOption = {};\n each(['type', 'snap', 'lineStyle', 'shadowStyle', 'label', 'animation', 'animationDurationUpdate', 'animationEasingUpdate', 'z'], function (field) {\n volatileOption[field] = zrUtil.clone(tooltipAxisPointerModel.get(field));\n }); // category axis do not auto snap, otherwise some tick that do not\n // has value can not be hovered. value/time/log axis default snap if\n // triggered from tooltip and trigger tooltip.\n\n volatileOption.snap = axis.type !== 'category' && !!triggerTooltip; // Compatibel with previous behavior, tooltip axis do not show label by default.\n // Only these properties can be overrided from tooltip to axisPointer.\n\n if (tooltipAxisPointerModel.get('type') === 'cross') {\n volatileOption.type = 'line';\n }\n\n var labelOption = volatileOption.label || (volatileOption.label = {}); // Follow the convention, do not show label when triggered by tooltip by default.\n\n labelOption.show == null && (labelOption.show = false);\n\n if (fromTooltip === 'cross') {\n // When 'cross', both axes show labels.\n var tooltipAxisPointerLabelShow = tooltipAxisPointerModel.get('label.show');\n labelOption.show = tooltipAxisPointerLabelShow != null ? tooltipAxisPointerLabelShow : true; // If triggerTooltip, this is a base axis, which should better not use cross style\n // (cross style is dashed by default)\n\n if (!triggerTooltip) {\n var crossStyle = volatileOption.lineStyle = tooltipAxisPointerModel.get('crossStyle');\n crossStyle && zrUtil.defaults(labelOption, crossStyle.textStyle);\n }\n }\n\n return axis.model.getModel('axisPointer', new Model(volatileOption, globalAxisPointerModel, ecModel));\n}\n\nfunction collectSeriesInfo(result, ecModel) {\n // Prepare data for axis trigger\n ecModel.eachSeries(function (seriesModel) {\n // Notice this case: this coordSys is `cartesian2D` but not `grid`.\n var coordSys = seriesModel.coordinateSystem;\n var seriesTooltipTrigger = seriesModel.get('tooltip.trigger', true);\n var seriesTooltipShow = seriesModel.get('tooltip.show', true);\n\n if (!coordSys || seriesTooltipTrigger === 'none' || seriesTooltipTrigger === false || seriesTooltipTrigger === 'item' || seriesTooltipShow === false || seriesModel.get('axisPointer.show', true) === false) {\n return;\n }\n\n each(result.coordSysAxesInfo[makeKey(coordSys.model)], function (axisInfo) {\n var axis = axisInfo.axis;\n\n if (coordSys.getAxis(axis.dim) === axis) {\n axisInfo.seriesModels.push(seriesModel);\n axisInfo.seriesDataCount == null && (axisInfo.seriesDataCount = 0);\n axisInfo.seriesDataCount += seriesModel.getData().count();\n }\n });\n }, this);\n}\n/**\n * For example:\n * {\n * axisPointer: {\n * links: [{\n * xAxisIndex: [2, 4],\n * yAxisIndex: 'all'\n * }, {\n * xAxisId: ['a5', 'a7'],\n * xAxisName: 'xxx'\n * }]\n * }\n * }\n */\n\n\nfunction getLinkGroupIndex(linksOption, axis) {\n var axisModel = axis.model;\n var dim = axis.dim;\n\n for (var i = 0; i < linksOption.length; i++) {\n var linkOption = linksOption[i] || {};\n\n if (checkPropInLink(linkOption[dim + 'AxisId'], axisModel.id) || checkPropInLink(linkOption[dim + 'AxisIndex'], axisModel.componentIndex) || checkPropInLink(linkOption[dim + 'AxisName'], axisModel.name)) {\n return i;\n }\n }\n}\n\nfunction checkPropInLink(linkPropValue, axisPropValue) {\n return linkPropValue === 'all' || zrUtil.isArray(linkPropValue) && zrUtil.indexOf(linkPropValue, axisPropValue) >= 0 || linkPropValue === axisPropValue;\n}\n\nfunction fixValue(axisModel) {\n var axisInfo = getAxisInfo(axisModel);\n\n if (!axisInfo) {\n return;\n }\n\n var axisPointerModel = axisInfo.axisPointerModel;\n var scale = axisInfo.axis.scale;\n var option = axisPointerModel.option;\n var status = axisPointerModel.get('status');\n var value = axisPointerModel.get('value'); // Parse init value for category and time axis.\n\n if (value != null) {\n value = scale.parse(value);\n }\n\n var useHandle = isHandleTrigger(axisPointerModel); // If `handle` used, `axisPointer` will always be displayed, so value\n // and status should be initialized.\n\n if (status == null) {\n option.status = useHandle ? 'show' : 'hide';\n }\n\n var extent = scale.getExtent().slice();\n extent[0] > extent[1] && extent.reverse();\n\n if ( // Pick a value on axis when initializing.\n value == null // If both `handle` and `dataZoom` are used, value may be out of axis extent,\n // where we should re-pick a value to keep `handle` displaying normally.\n || value > extent[1]) {\n // Make handle displayed on the end of the axis when init, which looks better.\n value = extent[1];\n }\n\n if (value < extent[0]) {\n value = extent[0];\n }\n\n option.value = value;\n\n if (useHandle) {\n option.status = axisInfo.axis.scale.isBlank() ? 'hide' : 'show';\n }\n}\n\nfunction getAxisInfo(axisModel) {\n var coordSysAxesInfo = (axisModel.ecModel.getComponent('axisPointer') || {}).coordSysAxesInfo;\n return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey(axisModel)];\n}\n\nfunction getAxisPointerModel(axisModel) {\n var axisInfo = getAxisInfo(axisModel);\n return axisInfo && axisInfo.axisPointerModel;\n}\n\nfunction isHandleTrigger(axisPointerModel) {\n return !!axisPointerModel.get('handle.show');\n}\n/**\n * @param {module:echarts/model/Model} model\n * @return {string} unique key\n */\n\n\nfunction makeKey(model) {\n return model.type + '||' + model.id;\n}\n\nexports.collect = collect;\nexports.fixValue = fixValue;\nexports.getAxisInfo = getAxisInfo;\nexports.getAxisPointerModel = getAxisPointerModel;\nexports.makeKey = makeKey;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/axisPointer/modelHelper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/axisPointer/viewHelper.js": +/*!**********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/axisPointer/viewHelper.js ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar textContain = __webpack_require__(/*! zrender/lib/contain/text */ \"./node_modules/zrender/lib/contain/text.js\");\n\nvar formatUtil = __webpack_require__(/*! ../../util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\nvar matrix = __webpack_require__(/*! zrender/lib/core/matrix */ \"./node_modules/zrender/lib/core/matrix.js\");\n\nvar axisHelper = __webpack_require__(/*! ../../coord/axisHelper */ \"./node_modules/echarts/lib/coord/axisHelper.js\");\n\nvar AxisBuilder = __webpack_require__(/*! ../axis/AxisBuilder */ \"./node_modules/echarts/lib/component/axis/AxisBuilder.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {module:echarts/model/Model} axisPointerModel\n */\nfunction buildElStyle(axisPointerModel) {\n var axisPointerType = axisPointerModel.get('type');\n var styleModel = axisPointerModel.getModel(axisPointerType + 'Style');\n var style;\n\n if (axisPointerType === 'line') {\n style = styleModel.getLineStyle();\n style.fill = null;\n } else if (axisPointerType === 'shadow') {\n style = styleModel.getAreaStyle();\n style.stroke = null;\n }\n\n return style;\n}\n/**\n * @param {Function} labelPos {align, verticalAlign, position}\n */\n\n\nfunction buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos) {\n var value = axisPointerModel.get('value');\n var text = getValueLabel(value, axisModel.axis, axisModel.ecModel, axisPointerModel.get('seriesDataIndices'), {\n precision: axisPointerModel.get('label.precision'),\n formatter: axisPointerModel.get('label.formatter')\n });\n var labelModel = axisPointerModel.getModel('label');\n var paddings = formatUtil.normalizeCssArray(labelModel.get('padding') || 0);\n var font = labelModel.getFont();\n var textRect = textContain.getBoundingRect(text, font);\n var position = labelPos.position;\n var width = textRect.width + paddings[1] + paddings[3];\n var height = textRect.height + paddings[0] + paddings[2]; // Adjust by align.\n\n var align = labelPos.align;\n align === 'right' && (position[0] -= width);\n align === 'center' && (position[0] -= width / 2);\n var verticalAlign = labelPos.verticalAlign;\n verticalAlign === 'bottom' && (position[1] -= height);\n verticalAlign === 'middle' && (position[1] -= height / 2); // Not overflow ec container\n\n confineInContainer(position, width, height, api);\n var bgColor = labelModel.get('backgroundColor');\n\n if (!bgColor || bgColor === 'auto') {\n bgColor = axisModel.get('axisLine.lineStyle.color');\n }\n\n elOption.label = {\n shape: {\n x: 0,\n y: 0,\n width: width,\n height: height,\n r: labelModel.get('borderRadius')\n },\n position: position.slice(),\n // TODO: rich\n style: {\n text: text,\n textFont: font,\n textFill: labelModel.getTextColor(),\n textPosition: 'inside',\n textPadding: paddings,\n fill: bgColor,\n stroke: labelModel.get('borderColor') || 'transparent',\n lineWidth: labelModel.get('borderWidth') || 0,\n shadowBlur: labelModel.get('shadowBlur'),\n shadowColor: labelModel.get('shadowColor'),\n shadowOffsetX: labelModel.get('shadowOffsetX'),\n shadowOffsetY: labelModel.get('shadowOffsetY')\n },\n // Lable should be over axisPointer.\n z2: 10\n };\n} // Do not overflow ec container\n\n\nfunction confineInContainer(position, width, height, api) {\n var viewWidth = api.getWidth();\n var viewHeight = api.getHeight();\n position[0] = Math.min(position[0] + width, viewWidth) - width;\n position[1] = Math.min(position[1] + height, viewHeight) - height;\n position[0] = Math.max(position[0], 0);\n position[1] = Math.max(position[1], 0);\n}\n/**\n * @param {number} value\n * @param {module:echarts/coord/Axis} axis\n * @param {module:echarts/model/Global} ecModel\n * @param {Object} opt\n * @param {Array.} seriesDataIndices\n * @param {number|string} opt.precision 'auto' or a number\n * @param {string|Function} opt.formatter label formatter\n */\n\n\nfunction getValueLabel(value, axis, ecModel, seriesDataIndices, opt) {\n value = axis.scale.parse(value);\n var text = axis.scale.getLabel( // If `precision` is set, width can be fixed (like '12.00500'), which\n // helps to debounce when when moving label.\n value, {\n precision: opt.precision\n });\n var formatter = opt.formatter;\n\n if (formatter) {\n var params = {\n value: axisHelper.getAxisRawValue(axis, value),\n axisDimension: axis.dim,\n axisIndex: axis.index,\n seriesData: []\n };\n zrUtil.each(seriesDataIndices, function (idxItem) {\n var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);\n var dataIndex = idxItem.dataIndexInside;\n var dataParams = series && series.getDataParams(dataIndex);\n dataParams && params.seriesData.push(dataParams);\n });\n\n if (zrUtil.isString(formatter)) {\n text = formatter.replace('{value}', text);\n } else if (zrUtil.isFunction(formatter)) {\n text = formatter(params);\n }\n }\n\n return text;\n}\n/**\n * @param {module:echarts/coord/Axis} axis\n * @param {number} value\n * @param {Object} layoutInfo {\n * rotation, position, labelOffset, labelDirection, labelMargin\n * }\n */\n\n\nfunction getTransformedPosition(axis, value, layoutInfo) {\n var transform = matrix.create();\n matrix.rotate(transform, transform, layoutInfo.rotation);\n matrix.translate(transform, transform, layoutInfo.position);\n return graphic.applyTransform([axis.dataToCoord(value), (layoutInfo.labelOffset || 0) + (layoutInfo.labelDirection || 1) * (layoutInfo.labelMargin || 0)], transform);\n}\n\nfunction buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api) {\n var textLayout = AxisBuilder.innerTextLayout(layoutInfo.rotation, 0, layoutInfo.labelDirection);\n layoutInfo.labelMargin = axisPointerModel.get('label.margin');\n buildLabelElOption(elOption, axisModel, axisPointerModel, api, {\n position: getTransformedPosition(axisModel.axis, value, layoutInfo),\n align: textLayout.textAlign,\n verticalAlign: textLayout.textVerticalAlign\n });\n}\n/**\n * @param {Array.} p1\n * @param {Array.} p2\n * @param {number} [xDimIndex=0] or 1\n */\n\n\nfunction makeLineShape(p1, p2, xDimIndex) {\n xDimIndex = xDimIndex || 0;\n return {\n x1: p1[xDimIndex],\n y1: p1[1 - xDimIndex],\n x2: p2[xDimIndex],\n y2: p2[1 - xDimIndex]\n };\n}\n/**\n * @param {Array.} xy\n * @param {Array.} wh\n * @param {number} [xDimIndex=0] or 1\n */\n\n\nfunction makeRectShape(xy, wh, xDimIndex) {\n xDimIndex = xDimIndex || 0;\n return {\n x: xy[xDimIndex],\n y: xy[1 - xDimIndex],\n width: wh[xDimIndex],\n height: wh[1 - xDimIndex]\n };\n}\n\nfunction makeSectorShape(cx, cy, r0, r, startAngle, endAngle) {\n return {\n cx: cx,\n cy: cy,\n r0: r0,\n r: r,\n startAngle: startAngle,\n endAngle: endAngle,\n clockwise: true\n };\n}\n\nexports.buildElStyle = buildElStyle;\nexports.buildLabelElOption = buildLabelElOption;\nexports.getValueLabel = getValueLabel;\nexports.getTransformedPosition = getTransformedPosition;\nexports.buildCartesianSingleLabelElOption = buildCartesianSingleLabelElOption;\nexports.makeLineShape = makeLineShape;\nexports.makeRectShape = makeRectShape;\nexports.makeSectorShape = makeSectorShape;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/axisPointer/viewHelper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/brush.js": +/*!*****************************************************!*\ + !*** ./node_modules/echarts/lib/component/brush.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar preprocessor = __webpack_require__(/*! ./brush/preprocessor */ \"./node_modules/echarts/lib/component/brush/preprocessor.js\");\n\n__webpack_require__(/*! ./brush/visualEncoding */ \"./node_modules/echarts/lib/component/brush/visualEncoding.js\");\n\n__webpack_require__(/*! ./brush/BrushModel */ \"./node_modules/echarts/lib/component/brush/BrushModel.js\");\n\n__webpack_require__(/*! ./brush/BrushView */ \"./node_modules/echarts/lib/component/brush/BrushView.js\");\n\n__webpack_require__(/*! ./brush/brushAction */ \"./node_modules/echarts/lib/component/brush/brushAction.js\");\n\n__webpack_require__(/*! ./toolbox/feature/Brush */ \"./node_modules/echarts/lib/component/toolbox/feature/Brush.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Brush component entry\n */\necharts.registerPreprocessor(preprocessor);\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/brush.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/brush/BrushModel.js": +/*!****************************************************************!*\ + !*** ./node_modules/echarts/lib/component/brush/BrushModel.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar visualSolution = __webpack_require__(/*! ../../visual/visualSolution */ \"./node_modules/echarts/lib/visual/visualSolution.js\");\n\nvar Model = __webpack_require__(/*! ../../model/Model */ \"./node_modules/echarts/lib/model/Model.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar DEFAULT_OUT_OF_BRUSH_COLOR = ['#ddd'];\nvar BrushModel = echarts.extendComponentModel({\n type: 'brush',\n dependencies: ['geo', 'grid', 'xAxis', 'yAxis', 'parallel', 'series'],\n\n /**\n * @protected\n */\n defaultOption: {\n // inBrush: null,\n // outOfBrush: null,\n toolbox: null,\n // Default value see preprocessor.\n brushLink: null,\n // Series indices array, broadcast using dataIndex.\n // or 'all', which means all series. 'none' or null means no series.\n seriesIndex: 'all',\n // seriesIndex array, specify series controlled by this brush component.\n geoIndex: null,\n //\n xAxisIndex: null,\n yAxisIndex: null,\n brushType: 'rect',\n // Default brushType, see BrushController.\n brushMode: 'single',\n // Default brushMode, 'single' or 'multiple'\n transformable: true,\n // Default transformable.\n brushStyle: {\n // Default brushStyle\n borderWidth: 1,\n color: 'rgba(120,140,180,0.3)',\n borderColor: 'rgba(120,140,180,0.8)'\n },\n throttleType: 'fixRate',\n // Throttle in brushSelected event. 'fixRate' or 'debounce'.\n // If null, no throttle. Valid only in the first brush component\n throttleDelay: 0,\n // Unit: ms, 0 means every event will be triggered.\n // FIXME\n // 试验效果\n removeOnClick: true,\n z: 10000\n },\n\n /**\n * @readOnly\n * @type {Array.}\n */\n areas: [],\n\n /**\n * Current activated brush type.\n * If null, brush is inactived.\n * see module:echarts/component/helper/BrushController\n * @readOnly\n * @type {string}\n */\n brushType: null,\n\n /**\n * Current brush opt.\n * see module:echarts/component/helper/BrushController\n * @readOnly\n * @type {Object}\n */\n brushOption: {},\n\n /**\n * @readOnly\n * @type {Array.}\n */\n coordInfoList: [],\n optionUpdated: function (newOption, isInit) {\n var thisOption = this.option;\n !isInit && visualSolution.replaceVisualOption(thisOption, newOption, ['inBrush', 'outOfBrush']);\n var inBrush = thisOption.inBrush = thisOption.inBrush || {}; // Always give default visual, consider setOption at the second time.\n\n thisOption.outOfBrush = thisOption.outOfBrush || {\n color: DEFAULT_OUT_OF_BRUSH_COLOR\n };\n\n if (!inBrush.hasOwnProperty('liftZ')) {\n // Bigger than the highlight z lift, otherwise it will\n // be effected by the highlight z when brush.\n inBrush.liftZ = 5;\n }\n },\n\n /**\n * If ranges is null/undefined, range state remain.\n *\n * @param {Array.} [ranges]\n */\n setAreas: function (areas) {\n // If ranges is null/undefined, range state remain.\n // This helps user to dispatchAction({type: 'brush'}) with no areas\n // set but just want to get the current brush select info from a `brush` event.\n if (!areas) {\n return;\n }\n\n this.areas = zrUtil.map(areas, function (area) {\n return generateBrushOption(this.option, area);\n }, this);\n },\n\n /**\n * see module:echarts/component/helper/BrushController\n * @param {Object} brushOption\n */\n setBrushOption: function (brushOption) {\n this.brushOption = generateBrushOption(this.option, brushOption);\n this.brushType = this.brushOption.brushType;\n }\n});\n\nfunction generateBrushOption(option, brushOption) {\n return zrUtil.merge({\n brushType: option.brushType,\n brushMode: option.brushMode,\n transformable: option.transformable,\n brushStyle: new Model(option.brushStyle).getItemStyle(),\n removeOnClick: option.removeOnClick,\n z: option.z\n }, brushOption, true);\n}\n\nvar _default = BrushModel;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/brush/BrushModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/brush/BrushView.js": +/*!***************************************************************!*\ + !*** ./node_modules/echarts/lib/component/brush/BrushView.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar BrushController = __webpack_require__(/*! ../helper/BrushController */ \"./node_modules/echarts/lib/component/helper/BrushController.js\");\n\nvar _visualEncoding = __webpack_require__(/*! ./visualEncoding */ \"./node_modules/echarts/lib/component/brush/visualEncoding.js\");\n\nvar layoutCovers = _visualEncoding.layoutCovers;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendComponentView({\n type: 'brush',\n init: function (ecModel, api) {\n /**\n * @readOnly\n * @type {module:echarts/model/Global}\n */\n this.ecModel = ecModel;\n /**\n * @readOnly\n * @type {module:echarts/ExtensionAPI}\n */\n\n this.api = api;\n /**\n * @readOnly\n * @type {module:echarts/component/brush/BrushModel}\n */\n\n this.model;\n /**\n * @private\n * @type {module:echarts/component/helper/BrushController}\n */\n\n (this._brushController = new BrushController(api.getZr())).on('brush', zrUtil.bind(this._onBrush, this)).mount();\n },\n\n /**\n * @override\n */\n render: function (brushModel) {\n this.model = brushModel;\n return updateController.apply(this, arguments);\n },\n\n /**\n * @override\n */\n updateTransform: function (brushModel, ecModel) {\n // PENDING: `updateTransform` is a little tricky, whose layout need\n // to be calculate mandatorily and other stages will not be performed.\n // Take care the correctness of the logic. See #11754 .\n layoutCovers(ecModel);\n return updateController.apply(this, arguments);\n },\n\n /**\n * @override\n */\n updateView: updateController,\n // /**\n // * @override\n // */\n // updateLayout: updateController,\n // /**\n // * @override\n // */\n // updateVisual: updateController,\n\n /**\n * @override\n */\n dispose: function () {\n this._brushController.dispose();\n },\n\n /**\n * @private\n */\n _onBrush: function (areas, opt) {\n var modelId = this.model.id;\n this.model.brushTargetManager.setOutputRanges(areas, this.ecModel); // Action is not dispatched on drag end, because the drag end\n // emits the same params with the last drag move event, and\n // may have some delay when using touch pad, which makes\n // animation not smooth (when using debounce).\n\n (!opt.isEnd || opt.removeOnClick) && this.api.dispatchAction({\n type: 'brush',\n brushId: modelId,\n areas: zrUtil.clone(areas),\n $from: modelId\n });\n opt.isEnd && this.api.dispatchAction({\n type: 'brushEnd',\n brushId: modelId,\n areas: zrUtil.clone(areas),\n $from: modelId\n });\n }\n});\n\nfunction updateController(brushModel, ecModel, api, payload) {\n // Do not update controller when drawing.\n (!payload || payload.$from !== brushModel.id) && this._brushController.setPanels(brushModel.brushTargetManager.makePanelOpts(api)).enableBrush(brushModel.brushOption).updateCovers(brushModel.areas.slice());\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/brush/BrushView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/brush/brushAction.js": +/*!*****************************************************************!*\ + !*** ./node_modules/echarts/lib/component/brush/brushAction.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * payload: {\n * brushIndex: number, or,\n * brushId: string, or,\n * brushName: string,\n * globalRanges: Array\n * }\n */\necharts.registerAction({\n type: 'brush',\n event: 'brush'\n /*, update: 'updateView' */\n\n}, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'brush',\n query: payload\n }, function (brushModel) {\n brushModel.setAreas(payload.areas);\n });\n});\n/**\n * payload: {\n * brushComponents: [\n * {\n * brushId,\n * brushIndex,\n * brushName,\n * series: [\n * {\n * seriesId,\n * seriesIndex,\n * seriesName,\n * rawIndices: [21, 34, ...]\n * },\n * ...\n * ]\n * },\n * ...\n * ]\n * }\n */\n\necharts.registerAction({\n type: 'brushSelect',\n event: 'brushSelected',\n update: 'none'\n}, function () {});\necharts.registerAction({\n type: 'brushEnd',\n event: 'brushEnd',\n update: 'none'\n}, function () {});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/brush/brushAction.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/brush/preprocessor.js": +/*!******************************************************************!*\ + !*** ./node_modules/echarts/lib/component/brush/preprocessor.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar DEFAULT_TOOLBOX_BTNS = ['rect', 'polygon', 'keep', 'clear'];\n\nfunction _default(option, isNew) {\n var brushComponents = option && option.brush;\n\n if (!zrUtil.isArray(brushComponents)) {\n brushComponents = brushComponents ? [brushComponents] : [];\n }\n\n if (!brushComponents.length) {\n return;\n }\n\n var brushComponentSpecifiedBtns = [];\n zrUtil.each(brushComponents, function (brushOpt) {\n var tbs = brushOpt.hasOwnProperty('toolbox') ? brushOpt.toolbox : [];\n\n if (tbs instanceof Array) {\n brushComponentSpecifiedBtns = brushComponentSpecifiedBtns.concat(tbs);\n }\n });\n var toolbox = option && option.toolbox;\n\n if (zrUtil.isArray(toolbox)) {\n toolbox = toolbox[0];\n }\n\n if (!toolbox) {\n toolbox = {\n feature: {}\n };\n option.toolbox = [toolbox];\n }\n\n var toolboxFeature = toolbox.feature || (toolbox.feature = {});\n var toolboxBrush = toolboxFeature.brush || (toolboxFeature.brush = {});\n var brushTypes = toolboxBrush.type || (toolboxBrush.type = []);\n brushTypes.push.apply(brushTypes, brushComponentSpecifiedBtns);\n removeDuplicate(brushTypes);\n\n if (isNew && !brushTypes.length) {\n brushTypes.push.apply(brushTypes, DEFAULT_TOOLBOX_BTNS);\n }\n}\n\nfunction removeDuplicate(arr) {\n var map = {};\n zrUtil.each(arr, function (val) {\n map[val] = 1;\n });\n arr.length = 0;\n zrUtil.each(map, function (flag, val) {\n arr.push(val);\n });\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/brush/preprocessor.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/brush/selector.js": +/*!**************************************************************!*\ + !*** ./node_modules/echarts/lib/component/brush/selector.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar polygonContain = __webpack_require__(/*! zrender/lib/contain/polygon */ \"./node_modules/zrender/lib/contain/polygon.js\");\n\nvar BoundingRect = __webpack_require__(/*! zrender/lib/core/BoundingRect */ \"./node_modules/zrender/lib/core/BoundingRect.js\");\n\nvar _graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar linePolygonIntersect = _graphic.linePolygonIntersect;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Key of the first level is brushType: `line`, `rect`, `polygon`.\n// Key of the second level is chart element type: `point`, `rect`.\n// See moudule:echarts/component/helper/BrushController\n// function param:\n// {Object} itemLayout fetch from data.getItemLayout(dataIndex)\n// {Object} selectors {point: selector, rect: selector, ...}\n// {Object} area {range: [[], [], ..], boudingRect}\n// function return:\n// {boolean} Whether in the given brush.\nvar selector = {\n lineX: getLineSelectors(0),\n lineY: getLineSelectors(1),\n rect: {\n point: function (itemLayout, selectors, area) {\n return itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1]);\n },\n rect: function (itemLayout, selectors, area) {\n return itemLayout && area.boundingRect.intersect(itemLayout);\n }\n },\n polygon: {\n point: function (itemLayout, selectors, area) {\n return itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1]) && polygonContain.contain(area.range, itemLayout[0], itemLayout[1]);\n },\n rect: function (itemLayout, selectors, area) {\n var points = area.range;\n\n if (!itemLayout || points.length <= 1) {\n return false;\n }\n\n var x = itemLayout.x;\n var y = itemLayout.y;\n var width = itemLayout.width;\n var height = itemLayout.height;\n var p = points[0];\n\n if (polygonContain.contain(points, x, y) || polygonContain.contain(points, x + width, y) || polygonContain.contain(points, x, y + height) || polygonContain.contain(points, x + width, y + height) || BoundingRect.create(itemLayout).contain(p[0], p[1]) || linePolygonIntersect(x, y, x + width, y, points) || linePolygonIntersect(x, y, x, y + height, points) || linePolygonIntersect(x + width, y, x + width, y + height, points) || linePolygonIntersect(x, y + height, x + width, y + height, points)) {\n return true;\n }\n }\n }\n};\n\nfunction getLineSelectors(xyIndex) {\n var xy = ['x', 'y'];\n var wh = ['width', 'height'];\n return {\n point: function (itemLayout, selectors, area) {\n if (itemLayout) {\n var range = area.range;\n var p = itemLayout[xyIndex];\n return inLineRange(p, range);\n }\n },\n rect: function (itemLayout, selectors, area) {\n if (itemLayout) {\n var range = area.range;\n var layoutRange = [itemLayout[xy[xyIndex]], itemLayout[xy[xyIndex]] + itemLayout[wh[xyIndex]]];\n layoutRange[1] < layoutRange[0] && layoutRange.reverse();\n return inLineRange(layoutRange[0], range) || inLineRange(layoutRange[1], range) || inLineRange(range[0], layoutRange) || inLineRange(range[1], layoutRange);\n }\n }\n };\n}\n\nfunction inLineRange(p, range) {\n return range[0] <= p && p <= range[1];\n}\n\nvar _default = selector;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/brush/selector.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/brush/visualEncoding.js": +/*!********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/brush/visualEncoding.js ***! + \********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar BoundingRect = __webpack_require__(/*! zrender/lib/core/BoundingRect */ \"./node_modules/zrender/lib/core/BoundingRect.js\");\n\nvar visualSolution = __webpack_require__(/*! ../../visual/visualSolution */ \"./node_modules/echarts/lib/visual/visualSolution.js\");\n\nvar selector = __webpack_require__(/*! ./selector */ \"./node_modules/echarts/lib/component/brush/selector.js\");\n\nvar throttleUtil = __webpack_require__(/*! ../../util/throttle */ \"./node_modules/echarts/lib/util/throttle.js\");\n\nvar BrushTargetManager = __webpack_require__(/*! ../helper/BrushTargetManager */ \"./node_modules/echarts/lib/component/helper/BrushTargetManager.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar STATE_LIST = ['inBrush', 'outOfBrush'];\nvar DISPATCH_METHOD = '__ecBrushSelect';\nvar DISPATCH_FLAG = '__ecInBrushSelectEvent';\nvar PRIORITY_BRUSH = echarts.PRIORITY.VISUAL.BRUSH;\n/**\n * Layout for visual, the priority higher than other layout, and before brush visual.\n */\n\necharts.registerLayout(PRIORITY_BRUSH, function (ecModel, api, payload) {\n ecModel.eachComponent({\n mainType: 'brush'\n }, function (brushModel) {\n payload && payload.type === 'takeGlobalCursor' && brushModel.setBrushOption(payload.key === 'brush' ? payload.brushOption : {\n brushType: false\n });\n });\n layoutCovers(ecModel);\n});\n\nfunction layoutCovers(ecModel) {\n ecModel.eachComponent({\n mainType: 'brush'\n }, function (brushModel) {\n var brushTargetManager = brushModel.brushTargetManager = new BrushTargetManager(brushModel.option, ecModel);\n brushTargetManager.setInputRanges(brushModel.areas, ecModel);\n });\n}\n/**\n * Register the visual encoding if this modules required.\n */\n\n\necharts.registerVisual(PRIORITY_BRUSH, function (ecModel, api, payload) {\n var brushSelected = [];\n var throttleType;\n var throttleDelay;\n ecModel.eachComponent({\n mainType: 'brush'\n }, function (brushModel, brushIndex) {\n var thisBrushSelected = {\n brushId: brushModel.id,\n brushIndex: brushIndex,\n brushName: brushModel.name,\n areas: zrUtil.clone(brushModel.areas),\n selected: []\n }; // Every brush component exists in event params, convenient\n // for user to find by index.\n\n brushSelected.push(thisBrushSelected);\n var brushOption = brushModel.option;\n var brushLink = brushOption.brushLink;\n var linkedSeriesMap = [];\n var selectedDataIndexForLink = [];\n var rangeInfoBySeries = [];\n var hasBrushExists = 0;\n\n if (!brushIndex) {\n // Only the first throttle setting works.\n throttleType = brushOption.throttleType;\n throttleDelay = brushOption.throttleDelay;\n } // Add boundingRect and selectors to range.\n\n\n var areas = zrUtil.map(brushModel.areas, function (area) {\n return bindSelector(zrUtil.defaults({\n boundingRect: boundingRectBuilders[area.brushType](area)\n }, area));\n });\n var visualMappings = visualSolution.createVisualMappings(brushModel.option, STATE_LIST, function (mappingOption) {\n mappingOption.mappingMethod = 'fixed';\n });\n zrUtil.isArray(brushLink) && zrUtil.each(brushLink, function (seriesIndex) {\n linkedSeriesMap[seriesIndex] = 1;\n });\n\n function linkOthers(seriesIndex) {\n return brushLink === 'all' || linkedSeriesMap[seriesIndex];\n } // If no supported brush or no brush on the series,\n // all visuals should be in original state.\n\n\n function brushed(rangeInfoList) {\n return !!rangeInfoList.length;\n }\n /**\n * Logic for each series: (If the logic has to be modified one day, do it carefully!)\n *\n * ( brushed ┬ && ┬hasBrushExist ┬ && linkOthers ) => StepA: ┬record, ┬ StepB: ┬visualByRecord.\n * !brushed┘ ├hasBrushExist ┤ └nothing,┘ ├visualByRecord.\n * └!hasBrushExist┘ └nothing.\n * ( !brushed && ┬hasBrushExist ┬ && linkOthers ) => StepA: nothing, StepB: ┬visualByRecord.\n * └!hasBrushExist┘ └nothing.\n * ( brushed ┬ && !linkOthers ) => StepA: nothing, StepB: ┬visualByCheck.\n * !brushed┘ └nothing.\n * ( !brushed && !linkOthers ) => StepA: nothing, StepB: nothing.\n */\n // Step A\n\n\n ecModel.eachSeries(function (seriesModel, seriesIndex) {\n var rangeInfoList = rangeInfoBySeries[seriesIndex] = [];\n seriesModel.subType === 'parallel' ? stepAParallel(seriesModel, seriesIndex, rangeInfoList) : stepAOthers(seriesModel, seriesIndex, rangeInfoList);\n });\n\n function stepAParallel(seriesModel, seriesIndex) {\n var coordSys = seriesModel.coordinateSystem;\n hasBrushExists |= coordSys.hasAxisBrushed();\n linkOthers(seriesIndex) && coordSys.eachActiveState(seriesModel.getData(), function (activeState, dataIndex) {\n activeState === 'active' && (selectedDataIndexForLink[dataIndex] = 1);\n });\n }\n\n function stepAOthers(seriesModel, seriesIndex, rangeInfoList) {\n var selectorsByBrushType = getSelectorsByBrushType(seriesModel);\n\n if (!selectorsByBrushType || brushModelNotControll(brushModel, seriesIndex)) {\n return;\n }\n\n zrUtil.each(areas, function (area) {\n selectorsByBrushType[area.brushType] && brushModel.brushTargetManager.controlSeries(area, seriesModel, ecModel) && rangeInfoList.push(area);\n hasBrushExists |= brushed(rangeInfoList);\n });\n\n if (linkOthers(seriesIndex) && brushed(rangeInfoList)) {\n var data = seriesModel.getData();\n data.each(function (dataIndex) {\n if (checkInRange(selectorsByBrushType, rangeInfoList, data, dataIndex)) {\n selectedDataIndexForLink[dataIndex] = 1;\n }\n });\n }\n } // Step B\n\n\n ecModel.eachSeries(function (seriesModel, seriesIndex) {\n var seriesBrushSelected = {\n seriesId: seriesModel.id,\n seriesIndex: seriesIndex,\n seriesName: seriesModel.name,\n dataIndex: []\n }; // Every series exists in event params, convenient\n // for user to find series by seriesIndex.\n\n thisBrushSelected.selected.push(seriesBrushSelected);\n var selectorsByBrushType = getSelectorsByBrushType(seriesModel);\n var rangeInfoList = rangeInfoBySeries[seriesIndex];\n var data = seriesModel.getData();\n var getValueState = linkOthers(seriesIndex) ? function (dataIndex) {\n return selectedDataIndexForLink[dataIndex] ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), 'inBrush') : 'outOfBrush';\n } : function (dataIndex) {\n return checkInRange(selectorsByBrushType, rangeInfoList, data, dataIndex) ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), 'inBrush') : 'outOfBrush';\n }; // If no supported brush or no brush, all visuals are in original state.\n\n (linkOthers(seriesIndex) ? hasBrushExists : brushed(rangeInfoList)) && visualSolution.applyVisual(STATE_LIST, visualMappings, data, getValueState);\n });\n });\n dispatchAction(api, throttleType, throttleDelay, brushSelected, payload);\n});\n\nfunction dispatchAction(api, throttleType, throttleDelay, brushSelected, payload) {\n // This event will not be triggered when `setOpion`, otherwise dead lock may\n // triggered when do `setOption` in event listener, which we do not find\n // satisfactory way to solve yet. Some considered resolutions:\n // (a) Diff with prevoius selected data ant only trigger event when changed.\n // But store previous data and diff precisely (i.e., not only by dataIndex, but\n // also detect value changes in selected data) might bring complexity or fragility.\n // (b) Use spectial param like `silent` to suppress event triggering.\n // But such kind of volatile param may be weird in `setOption`.\n if (!payload) {\n return;\n }\n\n var zr = api.getZr();\n\n if (zr[DISPATCH_FLAG]) {\n return;\n }\n\n if (!zr[DISPATCH_METHOD]) {\n zr[DISPATCH_METHOD] = doDispatch;\n }\n\n var fn = throttleUtil.createOrUpdate(zr, DISPATCH_METHOD, throttleDelay, throttleType);\n fn(api, brushSelected);\n}\n\nfunction doDispatch(api, brushSelected) {\n if (!api.isDisposed()) {\n var zr = api.getZr();\n zr[DISPATCH_FLAG] = true;\n api.dispatchAction({\n type: 'brushSelect',\n batch: brushSelected\n });\n zr[DISPATCH_FLAG] = false;\n }\n}\n\nfunction checkInRange(selectorsByBrushType, rangeInfoList, data, dataIndex) {\n for (var i = 0, len = rangeInfoList.length; i < len; i++) {\n var area = rangeInfoList[i];\n\n if (selectorsByBrushType[area.brushType](dataIndex, data, area.selectors, area)) {\n return true;\n }\n }\n}\n\nfunction getSelectorsByBrushType(seriesModel) {\n var brushSelector = seriesModel.brushSelector;\n\n if (zrUtil.isString(brushSelector)) {\n var sels = [];\n zrUtil.each(selector, function (selectorsByElementType, brushType) {\n sels[brushType] = function (dataIndex, data, selectors, area) {\n var itemLayout = data.getItemLayout(dataIndex);\n return selectorsByElementType[brushSelector](itemLayout, selectors, area);\n };\n });\n return sels;\n } else if (zrUtil.isFunction(brushSelector)) {\n var bSelector = {};\n zrUtil.each(selector, function (sel, brushType) {\n bSelector[brushType] = brushSelector;\n });\n return bSelector;\n }\n\n return brushSelector;\n}\n\nfunction brushModelNotControll(brushModel, seriesIndex) {\n var seriesIndices = brushModel.option.seriesIndex;\n return seriesIndices != null && seriesIndices !== 'all' && (zrUtil.isArray(seriesIndices) ? zrUtil.indexOf(seriesIndices, seriesIndex) < 0 : seriesIndex !== seriesIndices);\n}\n\nfunction bindSelector(area) {\n var selectors = area.selectors = {};\n zrUtil.each(selector[area.brushType], function (selFn, elType) {\n // Do not use function binding or curry for performance.\n selectors[elType] = function (itemLayout) {\n return selFn(itemLayout, selectors, area);\n };\n });\n return area;\n}\n\nvar boundingRectBuilders = {\n lineX: zrUtil.noop,\n lineY: zrUtil.noop,\n rect: function (area) {\n return getBoundingRectFromMinMax(area.range);\n },\n polygon: function (area) {\n var minMax;\n var range = area.range;\n\n for (var i = 0, len = range.length; i < len; i++) {\n minMax = minMax || [[Infinity, -Infinity], [Infinity, -Infinity]];\n var rg = range[i];\n rg[0] < minMax[0][0] && (minMax[0][0] = rg[0]);\n rg[0] > minMax[0][1] && (minMax[0][1] = rg[0]);\n rg[1] < minMax[1][0] && (minMax[1][0] = rg[1]);\n rg[1] > minMax[1][1] && (minMax[1][1] = rg[1]);\n }\n\n return minMax && getBoundingRectFromMinMax(minMax);\n }\n};\n\nfunction getBoundingRectFromMinMax(minMax) {\n return new BoundingRect(minMax[0][0], minMax[1][0], minMax[0][1] - minMax[0][0], minMax[1][1] - minMax[1][0]);\n}\n\nexports.layoutCovers = layoutCovers;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/brush/visualEncoding.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/calendar.js": +/*!********************************************************!*\ + !*** ./node_modules/echarts/lib/component/calendar.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(/*! ../coord/calendar/Calendar */ \"./node_modules/echarts/lib/coord/calendar/Calendar.js\");\n\n__webpack_require__(/*! ../coord/calendar/CalendarModel */ \"./node_modules/echarts/lib/coord/calendar/CalendarModel.js\");\n\n__webpack_require__(/*! ./calendar/CalendarView */ \"./node_modules/echarts/lib/component/calendar/CalendarView.js\");\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/calendar.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/calendar/CalendarView.js": +/*!*********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/calendar/CalendarView.js ***! + \*********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar formatUtil = __webpack_require__(/*! ../../util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\nvar numberUtil = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar MONTH_TEXT = {\n EN: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n CN: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']\n};\nvar WEEK_TEXT = {\n EN: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n CN: ['日', '一', '二', '三', '四', '五', '六']\n};\n\nvar _default = echarts.extendComponentView({\n type: 'calendar',\n\n /**\n * top/left line points\n * @private\n */\n _tlpoints: null,\n\n /**\n * bottom/right line points\n * @private\n */\n _blpoints: null,\n\n /**\n * first day of month\n * @private\n */\n _firstDayOfMonth: null,\n\n /**\n * first day point of month\n * @private\n */\n _firstDayPoints: null,\n render: function (calendarModel, ecModel, api) {\n var group = this.group;\n group.removeAll();\n var coordSys = calendarModel.coordinateSystem; // range info\n\n var rangeData = coordSys.getRangeInfo();\n var orient = coordSys.getOrient();\n\n this._renderDayRect(calendarModel, rangeData, group); // _renderLines must be called prior to following function\n\n\n this._renderLines(calendarModel, rangeData, orient, group);\n\n this._renderYearText(calendarModel, rangeData, orient, group);\n\n this._renderMonthText(calendarModel, orient, group);\n\n this._renderWeekText(calendarModel, rangeData, orient, group);\n },\n // render day rect\n _renderDayRect: function (calendarModel, rangeData, group) {\n var coordSys = calendarModel.coordinateSystem;\n var itemRectStyleModel = calendarModel.getModel('itemStyle').getItemStyle();\n var sw = coordSys.getCellWidth();\n var sh = coordSys.getCellHeight();\n\n for (var i = rangeData.start.time; i <= rangeData.end.time; i = coordSys.getNextNDay(i, 1).time) {\n var point = coordSys.dataToRect([i], false).tl; // every rect\n\n var rect = new graphic.Rect({\n shape: {\n x: point[0],\n y: point[1],\n width: sw,\n height: sh\n },\n cursor: 'default',\n style: itemRectStyleModel\n });\n group.add(rect);\n }\n },\n // render separate line\n _renderLines: function (calendarModel, rangeData, orient, group) {\n var self = this;\n var coordSys = calendarModel.coordinateSystem;\n var lineStyleModel = calendarModel.getModel('splitLine.lineStyle').getLineStyle();\n var show = calendarModel.get('splitLine.show');\n var lineWidth = lineStyleModel.lineWidth;\n this._tlpoints = [];\n this._blpoints = [];\n this._firstDayOfMonth = [];\n this._firstDayPoints = [];\n var firstDay = rangeData.start;\n\n for (var i = 0; firstDay.time <= rangeData.end.time; i++) {\n addPoints(firstDay.formatedDate);\n\n if (i === 0) {\n firstDay = coordSys.getDateInfo(rangeData.start.y + '-' + rangeData.start.m);\n }\n\n var date = firstDay.date;\n date.setMonth(date.getMonth() + 1);\n firstDay = coordSys.getDateInfo(date);\n }\n\n addPoints(coordSys.getNextNDay(rangeData.end.time, 1).formatedDate);\n\n function addPoints(date) {\n self._firstDayOfMonth.push(coordSys.getDateInfo(date));\n\n self._firstDayPoints.push(coordSys.dataToRect([date], false).tl);\n\n var points = self._getLinePointsOfOneWeek(calendarModel, date, orient);\n\n self._tlpoints.push(points[0]);\n\n self._blpoints.push(points[points.length - 1]);\n\n show && self._drawSplitline(points, lineStyleModel, group);\n } // render top/left line\n\n\n show && this._drawSplitline(self._getEdgesPoints(self._tlpoints, lineWidth, orient), lineStyleModel, group); // render bottom/right line\n\n show && this._drawSplitline(self._getEdgesPoints(self._blpoints, lineWidth, orient), lineStyleModel, group);\n },\n // get points at both ends\n _getEdgesPoints: function (points, lineWidth, orient) {\n var rs = [points[0].slice(), points[points.length - 1].slice()];\n var idx = orient === 'horizontal' ? 0 : 1; // both ends of the line are extend half lineWidth\n\n rs[0][idx] = rs[0][idx] - lineWidth / 2;\n rs[1][idx] = rs[1][idx] + lineWidth / 2;\n return rs;\n },\n // render split line\n _drawSplitline: function (points, lineStyleModel, group) {\n var poyline = new graphic.Polyline({\n z2: 20,\n shape: {\n points: points\n },\n style: lineStyleModel\n });\n group.add(poyline);\n },\n // render month line of one week points\n _getLinePointsOfOneWeek: function (calendarModel, date, orient) {\n var coordSys = calendarModel.coordinateSystem;\n date = coordSys.getDateInfo(date);\n var points = [];\n\n for (var i = 0; i < 7; i++) {\n var tmpD = coordSys.getNextNDay(date.time, i);\n var point = coordSys.dataToRect([tmpD.time], false);\n points[2 * tmpD.day] = point.tl;\n points[2 * tmpD.day + 1] = point[orient === 'horizontal' ? 'bl' : 'tr'];\n }\n\n return points;\n },\n _formatterLabel: function (formatter, params) {\n if (typeof formatter === 'string' && formatter) {\n return formatUtil.formatTplSimple(formatter, params);\n }\n\n if (typeof formatter === 'function') {\n return formatter(params);\n }\n\n return params.nameMap;\n },\n _yearTextPositionControl: function (textEl, point, orient, position, margin) {\n point = point.slice();\n var aligns = ['center', 'bottom'];\n\n if (position === 'bottom') {\n point[1] += margin;\n aligns = ['center', 'top'];\n } else if (position === 'left') {\n point[0] -= margin;\n } else if (position === 'right') {\n point[0] += margin;\n aligns = ['center', 'top'];\n } else {\n // top\n point[1] -= margin;\n }\n\n var rotate = 0;\n\n if (position === 'left' || position === 'right') {\n rotate = Math.PI / 2;\n }\n\n return {\n rotation: rotate,\n position: point,\n style: {\n textAlign: aligns[0],\n textVerticalAlign: aligns[1]\n }\n };\n },\n // render year\n _renderYearText: function (calendarModel, rangeData, orient, group) {\n var yearLabel = calendarModel.getModel('yearLabel');\n\n if (!yearLabel.get('show')) {\n return;\n }\n\n var margin = yearLabel.get('margin');\n var pos = yearLabel.get('position');\n\n if (!pos) {\n pos = orient !== 'horizontal' ? 'top' : 'left';\n }\n\n var points = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]];\n var xc = (points[0][0] + points[1][0]) / 2;\n var yc = (points[0][1] + points[1][1]) / 2;\n var idx = orient === 'horizontal' ? 0 : 1;\n var posPoints = {\n top: [xc, points[idx][1]],\n bottom: [xc, points[1 - idx][1]],\n left: [points[1 - idx][0], yc],\n right: [points[idx][0], yc]\n };\n var name = rangeData.start.y;\n\n if (+rangeData.end.y > +rangeData.start.y) {\n name = name + '-' + rangeData.end.y;\n }\n\n var formatter = yearLabel.get('formatter');\n var params = {\n start: rangeData.start.y,\n end: rangeData.end.y,\n nameMap: name\n };\n\n var content = this._formatterLabel(formatter, params);\n\n var yearText = new graphic.Text({\n z2: 30\n });\n graphic.setTextStyle(yearText.style, yearLabel, {\n text: content\n }), yearText.attr(this._yearTextPositionControl(yearText, posPoints[pos], orient, pos, margin));\n group.add(yearText);\n },\n _monthTextPositionControl: function (point, isCenter, orient, position, margin) {\n var align = 'left';\n var vAlign = 'top';\n var x = point[0];\n var y = point[1];\n\n if (orient === 'horizontal') {\n y = y + margin;\n\n if (isCenter) {\n align = 'center';\n }\n\n if (position === 'start') {\n vAlign = 'bottom';\n }\n } else {\n x = x + margin;\n\n if (isCenter) {\n vAlign = 'middle';\n }\n\n if (position === 'start') {\n align = 'right';\n }\n }\n\n return {\n x: x,\n y: y,\n textAlign: align,\n textVerticalAlign: vAlign\n };\n },\n // render month and year text\n _renderMonthText: function (calendarModel, orient, group) {\n var monthLabel = calendarModel.getModel('monthLabel');\n\n if (!monthLabel.get('show')) {\n return;\n }\n\n var nameMap = monthLabel.get('nameMap');\n var margin = monthLabel.get('margin');\n var pos = monthLabel.get('position');\n var align = monthLabel.get('align');\n var termPoints = [this._tlpoints, this._blpoints];\n\n if (zrUtil.isString(nameMap)) {\n nameMap = MONTH_TEXT[nameMap.toUpperCase()] || [];\n }\n\n var idx = pos === 'start' ? 0 : 1;\n var axis = orient === 'horizontal' ? 0 : 1;\n margin = pos === 'start' ? -margin : margin;\n var isCenter = align === 'center';\n\n for (var i = 0; i < termPoints[idx].length - 1; i++) {\n var tmp = termPoints[idx][i].slice();\n var firstDay = this._firstDayOfMonth[i];\n\n if (isCenter) {\n var firstDayPoints = this._firstDayPoints[i];\n tmp[axis] = (firstDayPoints[axis] + termPoints[0][i + 1][axis]) / 2;\n }\n\n var formatter = monthLabel.get('formatter');\n var name = nameMap[+firstDay.m - 1];\n var params = {\n yyyy: firstDay.y,\n yy: (firstDay.y + '').slice(2),\n MM: firstDay.m,\n M: +firstDay.m,\n nameMap: name\n };\n\n var content = this._formatterLabel(formatter, params);\n\n var monthText = new graphic.Text({\n z2: 30\n });\n zrUtil.extend(graphic.setTextStyle(monthText.style, monthLabel, {\n text: content\n }), this._monthTextPositionControl(tmp, isCenter, orient, pos, margin));\n group.add(monthText);\n }\n },\n _weekTextPositionControl: function (point, orient, position, margin, cellSize) {\n var align = 'center';\n var vAlign = 'middle';\n var x = point[0];\n var y = point[1];\n var isStart = position === 'start';\n\n if (orient === 'horizontal') {\n x = x + margin + (isStart ? 1 : -1) * cellSize[0] / 2;\n align = isStart ? 'right' : 'left';\n } else {\n y = y + margin + (isStart ? 1 : -1) * cellSize[1] / 2;\n vAlign = isStart ? 'bottom' : 'top';\n }\n\n return {\n x: x,\n y: y,\n textAlign: align,\n textVerticalAlign: vAlign\n };\n },\n // render weeks\n _renderWeekText: function (calendarModel, rangeData, orient, group) {\n var dayLabel = calendarModel.getModel('dayLabel');\n\n if (!dayLabel.get('show')) {\n return;\n }\n\n var coordSys = calendarModel.coordinateSystem;\n var pos = dayLabel.get('position');\n var nameMap = dayLabel.get('nameMap');\n var margin = dayLabel.get('margin');\n var firstDayOfWeek = coordSys.getFirstDayOfWeek();\n\n if (zrUtil.isString(nameMap)) {\n nameMap = WEEK_TEXT[nameMap.toUpperCase()] || [];\n }\n\n var start = coordSys.getNextNDay(rangeData.end.time, 7 - rangeData.lweek).time;\n var cellSize = [coordSys.getCellWidth(), coordSys.getCellHeight()];\n margin = numberUtil.parsePercent(margin, cellSize[orient === 'horizontal' ? 0 : 1]);\n\n if (pos === 'start') {\n start = coordSys.getNextNDay(rangeData.start.time, -(7 + rangeData.fweek)).time;\n margin = -margin;\n }\n\n for (var i = 0; i < 7; i++) {\n var tmpD = coordSys.getNextNDay(start, i);\n var point = coordSys.dataToRect([tmpD.time], false).center;\n var day = i;\n day = Math.abs((i + firstDayOfWeek) % 7);\n var weekText = new graphic.Text({\n z2: 30\n });\n zrUtil.extend(graphic.setTextStyle(weekText.style, dayLabel, {\n text: nameMap[day]\n }), this._weekTextPositionControl(point, orient, pos, margin, cellSize));\n group.add(weekText);\n }\n }\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/calendar/CalendarView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/dataZoom.js": +/*!********************************************************!*\ + !*** ./node_modules/echarts/lib/component/dataZoom.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(/*! ./dataZoomSlider */ \"./node_modules/echarts/lib/component/dataZoomSlider.js\");\n\n__webpack_require__(/*! ./dataZoomInside */ \"./node_modules/echarts/lib/component/dataZoomInside.js\");\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/dataZoom.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/dataZoom/AxisProxy.js": +/*!******************************************************************!*\ + !*** ./node_modules/echarts/lib/component/dataZoom/AxisProxy.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar numberUtil = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar helper = __webpack_require__(/*! ./helper */ \"./node_modules/echarts/lib/component/dataZoom/helper.js\");\n\nvar sliderMove = __webpack_require__(/*! ../helper/sliderMove */ \"./node_modules/echarts/lib/component/helper/sliderMove.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar asc = numberUtil.asc;\n/**\n * Operate single axis.\n * One axis can only operated by one axis operator.\n * Different dataZoomModels may be defined to operate the same axis.\n * (i.e. 'inside' data zoom and 'slider' data zoom components)\n * So dataZoomModels share one axisProxy in that case.\n *\n * @class\n */\n\nvar AxisProxy = function (dimName, axisIndex, dataZoomModel, ecModel) {\n /**\n * @private\n * @type {string}\n */\n this._dimName = dimName;\n /**\n * @private\n */\n\n this._axisIndex = axisIndex;\n /**\n * @private\n * @type {Array.}\n */\n\n this._valueWindow;\n /**\n * @private\n * @type {Array.}\n */\n\n this._percentWindow;\n /**\n * @private\n * @type {Array.}\n */\n\n this._dataExtent;\n /**\n * {minSpan, maxSpan, minValueSpan, maxValueSpan}\n * @private\n * @type {Object}\n */\n\n this._minMaxSpan;\n /**\n * @readOnly\n * @type {module: echarts/model/Global}\n */\n\n this.ecModel = ecModel;\n /**\n * @private\n * @type {module: echarts/component/dataZoom/DataZoomModel}\n */\n\n this._dataZoomModel = dataZoomModel; // /**\n // * @readOnly\n // * @private\n // */\n // this.hasSeriesStacked;\n};\n\nAxisProxy.prototype = {\n constructor: AxisProxy,\n\n /**\n * Whether the axisProxy is hosted by dataZoomModel.\n *\n * @public\n * @param {module: echarts/component/dataZoom/DataZoomModel} dataZoomModel\n * @return {boolean}\n */\n hostedBy: function (dataZoomModel) {\n return this._dataZoomModel === dataZoomModel;\n },\n\n /**\n * @return {Array.} Value can only be NaN or finite value.\n */\n getDataValueWindow: function () {\n return this._valueWindow.slice();\n },\n\n /**\n * @return {Array.}\n */\n getDataPercentWindow: function () {\n return this._percentWindow.slice();\n },\n\n /**\n * @public\n * @param {number} axisIndex\n * @return {Array} seriesModels\n */\n getTargetSeriesModels: function () {\n var seriesModels = [];\n var ecModel = this.ecModel;\n ecModel.eachSeries(function (seriesModel) {\n if (helper.isCoordSupported(seriesModel.get('coordinateSystem'))) {\n var dimName = this._dimName;\n var axisModel = ecModel.queryComponents({\n mainType: dimName + 'Axis',\n index: seriesModel.get(dimName + 'AxisIndex'),\n id: seriesModel.get(dimName + 'AxisId')\n })[0];\n\n if (this._axisIndex === (axisModel && axisModel.componentIndex)) {\n seriesModels.push(seriesModel);\n }\n }\n }, this);\n return seriesModels;\n },\n getAxisModel: function () {\n return this.ecModel.getComponent(this._dimName + 'Axis', this._axisIndex);\n },\n getOtherAxisModel: function () {\n var axisDim = this._dimName;\n var ecModel = this.ecModel;\n var axisModel = this.getAxisModel();\n var isCartesian = axisDim === 'x' || axisDim === 'y';\n var otherAxisDim;\n var coordSysIndexName;\n\n if (isCartesian) {\n coordSysIndexName = 'gridIndex';\n otherAxisDim = axisDim === 'x' ? 'y' : 'x';\n } else {\n coordSysIndexName = 'polarIndex';\n otherAxisDim = axisDim === 'angle' ? 'radius' : 'angle';\n }\n\n var foundOtherAxisModel;\n ecModel.eachComponent(otherAxisDim + 'Axis', function (otherAxisModel) {\n if ((otherAxisModel.get(coordSysIndexName) || 0) === (axisModel.get(coordSysIndexName) || 0)) {\n foundOtherAxisModel = otherAxisModel;\n }\n });\n return foundOtherAxisModel;\n },\n getMinMaxSpan: function () {\n return zrUtil.clone(this._minMaxSpan);\n },\n\n /**\n * Only calculate by given range and this._dataExtent, do not change anything.\n *\n * @param {Object} opt\n * @param {number} [opt.start]\n * @param {number} [opt.end]\n * @param {number} [opt.startValue]\n * @param {number} [opt.endValue]\n */\n calculateDataWindow: function (opt) {\n var dataExtent = this._dataExtent;\n var axisModel = this.getAxisModel();\n var scale = axisModel.axis.scale;\n\n var rangePropMode = this._dataZoomModel.getRangePropMode();\n\n var percentExtent = [0, 100];\n var percentWindow = [];\n var valueWindow = [];\n var hasPropModeValue;\n each(['start', 'end'], function (prop, idx) {\n var boundPercent = opt[prop];\n var boundValue = opt[prop + 'Value']; // Notice: dataZoom is based either on `percentProp` ('start', 'end') or\n // on `valueProp` ('startValue', 'endValue'). (They are based on the data extent\n // but not min/max of axis, which will be calculated by data window then).\n // The former one is suitable for cases that a dataZoom component controls multiple\n // axes with different unit or extent, and the latter one is suitable for accurate\n // zoom by pixel (e.g., in dataZoomSelect).\n // we use `getRangePropMode()` to mark which prop is used. `rangePropMode` is updated\n // only when setOption or dispatchAction, otherwise it remains its original value.\n // (Why not only record `percentProp` and always map to `valueProp`? Because\n // the map `valueProp` -> `percentProp` -> `valueProp` probably not the original\n // `valueProp`. consider two axes constrolled by one dataZoom. They have different\n // data extent. All of values that are overflow the `dataExtent` will be calculated\n // to percent '100%').\n\n if (rangePropMode[idx] === 'percent') {\n boundPercent == null && (boundPercent = percentExtent[idx]); // Use scale.parse to math round for category or time axis.\n\n boundValue = scale.parse(numberUtil.linearMap(boundPercent, percentExtent, dataExtent));\n } else {\n hasPropModeValue = true;\n boundValue = boundValue == null ? dataExtent[idx] : scale.parse(boundValue); // Calculating `percent` from `value` may be not accurate, because\n // This calculation can not be inversed, because all of values that\n // are overflow the `dataExtent` will be calculated to percent '100%'\n\n boundPercent = numberUtil.linearMap(boundValue, dataExtent, percentExtent);\n } // valueWindow[idx] = round(boundValue);\n // percentWindow[idx] = round(boundPercent);\n\n\n valueWindow[idx] = boundValue;\n percentWindow[idx] = boundPercent;\n });\n asc(valueWindow);\n asc(percentWindow); // The windows from user calling of `dispatchAction` might be out of the extent,\n // or do not obey the `min/maxSpan`, `min/maxValueSpan`. But we dont restrict window\n // by `zoomLock` here, because we see `zoomLock` just as a interaction constraint,\n // where API is able to initialize/modify the window size even though `zoomLock`\n // specified.\n\n var spans = this._minMaxSpan;\n hasPropModeValue ? restrictSet(valueWindow, percentWindow, dataExtent, percentExtent, false) : restrictSet(percentWindow, valueWindow, percentExtent, dataExtent, true);\n\n function restrictSet(fromWindow, toWindow, fromExtent, toExtent, toValue) {\n var suffix = toValue ? 'Span' : 'ValueSpan';\n sliderMove(0, fromWindow, fromExtent, 'all', spans['min' + suffix], spans['max' + suffix]);\n\n for (var i = 0; i < 2; i++) {\n toWindow[i] = numberUtil.linearMap(fromWindow[i], fromExtent, toExtent, true);\n toValue && (toWindow[i] = scale.parse(toWindow[i]));\n }\n }\n\n return {\n valueWindow: valueWindow,\n percentWindow: percentWindow\n };\n },\n\n /**\n * Notice: reset should not be called before series.restoreData() called,\n * so it is recommanded to be called in \"process stage\" but not \"model init\n * stage\".\n *\n * @param {module: echarts/component/dataZoom/DataZoomModel} dataZoomModel\n */\n reset: function (dataZoomModel) {\n if (dataZoomModel !== this._dataZoomModel) {\n return;\n }\n\n var targetSeries = this.getTargetSeriesModels(); // Culculate data window and data extent, and record them.\n\n this._dataExtent = calculateDataExtent(this, this._dimName, targetSeries); // this.hasSeriesStacked = false;\n // each(targetSeries, function (series) {\n // var data = series.getData();\n // var dataDim = data.mapDimension(this._dimName);\n // var stackedDimension = data.getCalculationInfo('stackedDimension');\n // if (stackedDimension && stackedDimension === dataDim) {\n // this.hasSeriesStacked = true;\n // }\n // }, this);\n // `calculateDataWindow` uses min/maxSpan.\n\n setMinMaxSpan(this);\n var dataWindow = this.calculateDataWindow(dataZoomModel.settledOption);\n this._valueWindow = dataWindow.valueWindow;\n this._percentWindow = dataWindow.percentWindow; // Update axis setting then.\n\n setAxisModel(this);\n },\n\n /**\n * @param {module: echarts/component/dataZoom/DataZoomModel} dataZoomModel\n */\n restore: function (dataZoomModel) {\n if (dataZoomModel !== this._dataZoomModel) {\n return;\n }\n\n this._valueWindow = this._percentWindow = null;\n setAxisModel(this, true);\n },\n\n /**\n * @param {module: echarts/component/dataZoom/DataZoomModel} dataZoomModel\n */\n filterData: function (dataZoomModel, api) {\n if (dataZoomModel !== this._dataZoomModel) {\n return;\n }\n\n var axisDim = this._dimName;\n var seriesModels = this.getTargetSeriesModels();\n var filterMode = dataZoomModel.get('filterMode');\n var valueWindow = this._valueWindow;\n\n if (filterMode === 'none') {\n return;\n } // FIXME\n // Toolbox may has dataZoom injected. And if there are stacked bar chart\n // with NaN data, NaN will be filtered and stack will be wrong.\n // So we need to force the mode to be set empty.\n // In fect, it is not a big deal that do not support filterMode-'filter'\n // when using toolbox#dataZoom, utill tooltip#dataZoom support \"single axis\n // selection\" some day, which might need \"adapt to data extent on the\n // otherAxis\", which is disabled by filterMode-'empty'.\n // But currently, stack has been fixed to based on value but not index,\n // so this is not an issue any more.\n // var otherAxisModel = this.getOtherAxisModel();\n // if (dataZoomModel.get('$fromToolbox')\n // && otherAxisModel\n // && otherAxisModel.hasSeriesStacked\n // ) {\n // filterMode = 'empty';\n // }\n // TODO\n // filterMode 'weakFilter' and 'empty' is not optimized for huge data yet.\n\n\n each(seriesModels, function (seriesModel) {\n var seriesData = seriesModel.getData();\n var dataDims = seriesData.mapDimension(axisDim, true);\n\n if (!dataDims.length) {\n return;\n }\n\n if (filterMode === 'weakFilter') {\n seriesData.filterSelf(function (dataIndex) {\n var leftOut;\n var rightOut;\n var hasValue;\n\n for (var i = 0; i < dataDims.length; i++) {\n var value = seriesData.get(dataDims[i], dataIndex);\n var thisHasValue = !isNaN(value);\n var thisLeftOut = value < valueWindow[0];\n var thisRightOut = value > valueWindow[1];\n\n if (thisHasValue && !thisLeftOut && !thisRightOut) {\n return true;\n }\n\n thisHasValue && (hasValue = true);\n thisLeftOut && (leftOut = true);\n thisRightOut && (rightOut = true);\n } // If both left out and right out, do not filter.\n\n\n return hasValue && leftOut && rightOut;\n });\n } else {\n each(dataDims, function (dim) {\n if (filterMode === 'empty') {\n seriesModel.setData(seriesData = seriesData.map(dim, function (value) {\n return !isInWindow(value) ? NaN : value;\n }));\n } else {\n var range = {};\n range[dim] = valueWindow; // console.time('select');\n\n seriesData.selectRange(range); // console.timeEnd('select');\n }\n });\n }\n\n each(dataDims, function (dim) {\n seriesData.setApproximateExtent(valueWindow, dim);\n });\n });\n\n function isInWindow(value) {\n return value >= valueWindow[0] && value <= valueWindow[1];\n }\n }\n};\n\nfunction calculateDataExtent(axisProxy, axisDim, seriesModels) {\n var dataExtent = [Infinity, -Infinity];\n each(seriesModels, function (seriesModel) {\n var seriesData = seriesModel.getData();\n\n if (seriesData) {\n each(seriesData.mapDimension(axisDim, true), function (dim) {\n var seriesExtent = seriesData.getApproximateExtent(dim);\n seriesExtent[0] < dataExtent[0] && (dataExtent[0] = seriesExtent[0]);\n seriesExtent[1] > dataExtent[1] && (dataExtent[1] = seriesExtent[1]);\n });\n }\n });\n\n if (dataExtent[1] < dataExtent[0]) {\n dataExtent = [NaN, NaN];\n } // It is important to get \"consistent\" extent when more then one axes is\n // controlled by a `dataZoom`, otherwise those axes will not be synchronized\n // when zooming. But it is difficult to know what is \"consistent\", considering\n // axes have different type or even different meanings (For example, two\n // time axes are used to compare data of the same date in different years).\n // So basically dataZoom just obtains extent by series.data (in category axis\n // extent can be obtained from axis.data).\n // Nevertheless, user can set min/max/scale on axes to make extent of axes\n // consistent.\n\n\n fixExtentByAxis(axisProxy, dataExtent);\n return dataExtent;\n}\n\nfunction fixExtentByAxis(axisProxy, dataExtent) {\n var axisModel = axisProxy.getAxisModel();\n var min = axisModel.getMin(true); // For category axis, if min/max/scale are not set, extent is determined\n // by axis.data by default.\n\n var isCategoryAxis = axisModel.get('type') === 'category';\n var axisDataLen = isCategoryAxis && axisModel.getCategories().length;\n\n if (min != null && min !== 'dataMin' && typeof min !== 'function') {\n dataExtent[0] = min;\n } else if (isCategoryAxis) {\n dataExtent[0] = axisDataLen > 0 ? 0 : NaN;\n }\n\n var max = axisModel.getMax(true);\n\n if (max != null && max !== 'dataMax' && typeof max !== 'function') {\n dataExtent[1] = max;\n } else if (isCategoryAxis) {\n dataExtent[1] = axisDataLen > 0 ? axisDataLen - 1 : NaN;\n }\n\n if (!axisModel.get('scale', true)) {\n dataExtent[0] > 0 && (dataExtent[0] = 0);\n dataExtent[1] < 0 && (dataExtent[1] = 0);\n } // For value axis, if min/max/scale are not set, we just use the extent obtained\n // by series data, which may be a little different from the extent calculated by\n // `axisHelper.getScaleExtent`. But the different just affects the experience a\n // little when zooming. So it will not be fixed until some users require it strongly.\n\n\n return dataExtent;\n}\n\nfunction setAxisModel(axisProxy, isRestore) {\n var axisModel = axisProxy.getAxisModel();\n var percentWindow = axisProxy._percentWindow;\n var valueWindow = axisProxy._valueWindow;\n\n if (!percentWindow) {\n return;\n } // [0, 500]: arbitrary value, guess axis extent.\n\n\n var precision = numberUtil.getPixelPrecision(valueWindow, [0, 500]);\n precision = Math.min(precision, 20); // isRestore or isFull\n\n var useOrigin = isRestore || percentWindow[0] === 0 && percentWindow[1] === 100;\n axisModel.setRange(useOrigin ? null : +valueWindow[0].toFixed(precision), useOrigin ? null : +valueWindow[1].toFixed(precision));\n}\n\nfunction setMinMaxSpan(axisProxy) {\n var minMaxSpan = axisProxy._minMaxSpan = {};\n var dataZoomModel = axisProxy._dataZoomModel;\n var dataExtent = axisProxy._dataExtent;\n each(['min', 'max'], function (minMax) {\n var percentSpan = dataZoomModel.get(minMax + 'Span');\n var valueSpan = dataZoomModel.get(minMax + 'ValueSpan');\n valueSpan != null && (valueSpan = axisProxy.getAxisModel().axis.scale.parse(valueSpan)); // minValueSpan and maxValueSpan has higher priority than minSpan and maxSpan\n\n if (valueSpan != null) {\n percentSpan = numberUtil.linearMap(dataExtent[0] + valueSpan, dataExtent, [0, 100], true);\n } else if (percentSpan != null) {\n valueSpan = numberUtil.linearMap(percentSpan, [0, 100], dataExtent, true) - dataExtent[0];\n }\n\n minMaxSpan[minMax + 'Span'] = percentSpan;\n minMaxSpan[minMax + 'ValueSpan'] = valueSpan;\n });\n}\n\nvar _default = AxisProxy;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/dataZoom/AxisProxy.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/dataZoom/DataZoomModel.js": +/*!**********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/dataZoom/DataZoomModel.js ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar env = __webpack_require__(/*! zrender/lib/core/env */ \"./node_modules/zrender/lib/core/env.js\");\n\nvar modelUtil = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar helper = __webpack_require__(/*! ./helper */ \"./node_modules/echarts/lib/component/dataZoom/helper.js\");\n\nvar AxisProxy = __webpack_require__(/*! ./AxisProxy */ \"./node_modules/echarts/lib/component/dataZoom/AxisProxy.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar eachAxisDim = helper.eachAxisDim;\nvar DataZoomModel = echarts.extendComponentModel({\n type: 'dataZoom',\n dependencies: ['xAxis', 'yAxis', 'zAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'series'],\n\n /**\n * @protected\n */\n defaultOption: {\n zlevel: 0,\n z: 4,\n // Higher than normal component (z: 2).\n orient: null,\n // Default auto by axisIndex. Possible value: 'horizontal', 'vertical'.\n xAxisIndex: null,\n // Default the first horizontal category axis.\n yAxisIndex: null,\n // Default the first vertical category axis.\n filterMode: 'filter',\n // Possible values: 'filter' or 'empty' or 'weakFilter'.\n // 'filter': data items which are out of window will be removed. This option is\n // applicable when filtering outliers. For each data item, it will be\n // filtered if one of the relevant dimensions is out of the window.\n // 'weakFilter': data items which are out of window will be removed. This option\n // is applicable when filtering outliers. For each data item, it will be\n // filtered only if all of the relevant dimensions are out of the same\n // side of the window.\n // 'empty': data items which are out of window will be set to empty.\n // This option is applicable when user should not neglect\n // that there are some data items out of window.\n // 'none': Do not filter.\n // Taking line chart as an example, line will be broken in\n // the filtered points when filterModel is set to 'empty', but\n // be connected when set to 'filter'.\n throttle: null,\n // Dispatch action by the fixed rate, avoid frequency.\n // default 100. Do not throttle when use null/undefined.\n // If animation === true and animationDurationUpdate > 0,\n // default value is 100, otherwise 20.\n start: 0,\n // Start percent. 0 ~ 100\n end: 100,\n // End percent. 0 ~ 100\n startValue: null,\n // Start value. If startValue specified, start is ignored.\n endValue: null,\n // End value. If endValue specified, end is ignored.\n minSpan: null,\n // 0 ~ 100\n maxSpan: null,\n // 0 ~ 100\n minValueSpan: null,\n // The range of dataZoom can not be smaller than that.\n maxValueSpan: null,\n // The range of dataZoom can not be larger than that.\n rangeMode: null // Array, can be 'value' or 'percent'.\n\n },\n\n /**\n * @override\n */\n init: function (option, parentModel, ecModel) {\n /**\n * key like x_0, y_1\n * @private\n * @type {Object}\n */\n this._dataIntervalByAxis = {};\n /**\n * @private\n */\n\n this._dataInfo = {};\n /**\n * key like x_0, y_1\n * @private\n */\n\n this._axisProxies = {};\n /**\n * @readOnly\n */\n\n this.textStyleModel;\n /**\n * @private\n */\n\n this._autoThrottle = true;\n /**\n * It is `[rangeModeForMin, rangeModeForMax]`.\n * The optional values for `rangeMode`:\n * + `'value'` mode: the axis extent will always be determined by\n * `dataZoom.startValue` and `dataZoom.endValue`, despite\n * how data like and how `axis.min` and `axis.max` are.\n * + `'percent'` mode: `100` represents 100% of the `[dMin, dMax]`,\n * where `dMin` is `axis.min` if `axis.min` specified, otherwise `data.extent[0]`,\n * and `dMax` is `axis.max` if `axis.max` specified, otherwise `data.extent[1]`.\n * Axis extent will be determined by the result of the percent of `[dMin, dMax]`.\n *\n * For example, when users are using dynamic data (update data periodically via `setOption`),\n * if in `'value`' mode, the window will be kept in a fixed value range despite how\n * data are appended, while if in `'percent'` mode, whe window range will be changed alone with\n * the appended data (suppose `axis.min` and `axis.max` are not specified).\n *\n * @private\n */\n\n this._rangePropMode = ['percent', 'percent'];\n var inputRawOption = retrieveRawOption(option);\n /**\n * Suppose a \"main process\" start at the point that model prepared (that is,\n * model initialized or merged or method called in `action`).\n * We should keep the `main process` idempotent, that is, given a set of values\n * on `option`, we get the same result.\n *\n * But sometimes, values on `option` will be updated for providing users\n * a \"final calculated value\" (`dataZoomProcessor` will do that). Those value\n * should not be the base/input of the `main process`.\n *\n * So in that case we should save and keep the input of the `main process`\n * separately, called `settledOption`.\n *\n * For example, consider the case:\n * (Step_1) brush zoom the grid by `toolbox.dataZoom`,\n * where the original input `option.startValue`, `option.endValue` are earsed by\n * calculated value.\n * (Step)2) click the legend to hide and show a series,\n * where the new range is calculated by the earsed `startValue` and `endValue`,\n * which brings incorrect result.\n *\n * @readOnly\n */\n\n this.settledOption = inputRawOption;\n this.mergeDefaultAndTheme(option, ecModel);\n this.doInit(inputRawOption);\n },\n\n /**\n * @override\n */\n mergeOption: function (newOption) {\n var inputRawOption = retrieveRawOption(newOption); //FIX #2591\n\n zrUtil.merge(this.option, newOption, true);\n zrUtil.merge(this.settledOption, inputRawOption, true);\n this.doInit(inputRawOption);\n },\n\n /**\n * @protected\n */\n doInit: function (inputRawOption) {\n var thisOption = this.option; // Disable realtime view update if canvas is not supported.\n\n if (!env.canvasSupported) {\n thisOption.realtime = false;\n }\n\n this._setDefaultThrottle(inputRawOption);\n\n updateRangeUse(this, inputRawOption);\n var settledOption = this.settledOption;\n each([['start', 'startValue'], ['end', 'endValue']], function (names, index) {\n // start/end has higher priority over startValue/endValue if they\n // both set, but we should make chart.setOption({endValue: 1000})\n // effective, rather than chart.setOption({endValue: 1000, end: null}).\n if (this._rangePropMode[index] === 'value') {\n thisOption[names[0]] = settledOption[names[0]] = null;\n } // Otherwise do nothing and use the merge result.\n\n }, this);\n this.textStyleModel = this.getModel('textStyle');\n\n this._resetTarget();\n\n this._giveAxisProxies();\n },\n\n /**\n * @private\n */\n _giveAxisProxies: function () {\n var axisProxies = this._axisProxies;\n this.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel, ecModel) {\n var axisModel = this.dependentModels[dimNames.axis][axisIndex]; // If exists, share axisProxy with other dataZoomModels.\n\n var axisProxy = axisModel.__dzAxisProxy || ( // Use the first dataZoomModel as the main model of axisProxy.\n axisModel.__dzAxisProxy = new AxisProxy(dimNames.name, axisIndex, this, ecModel)); // FIXME\n // dispose __dzAxisProxy\n\n axisProxies[dimNames.name + '_' + axisIndex] = axisProxy;\n }, this);\n },\n\n /**\n * @private\n */\n _resetTarget: function () {\n var thisOption = this.option;\n\n var autoMode = this._judgeAutoMode();\n\n eachAxisDim(function (dimNames) {\n var axisIndexName = dimNames.axisIndex;\n thisOption[axisIndexName] = modelUtil.normalizeToArray(thisOption[axisIndexName]);\n }, this);\n\n if (autoMode === 'axisIndex') {\n this._autoSetAxisIndex();\n } else if (autoMode === 'orient') {\n this._autoSetOrient();\n }\n },\n\n /**\n * @private\n */\n _judgeAutoMode: function () {\n // Auto set only works for setOption at the first time.\n // The following is user's reponsibility. So using merged\n // option is OK.\n var thisOption = this.option;\n var hasIndexSpecified = false;\n eachAxisDim(function (dimNames) {\n // When user set axisIndex as a empty array, we think that user specify axisIndex\n // but do not want use auto mode. Because empty array may be encountered when\n // some error occured.\n if (thisOption[dimNames.axisIndex] != null) {\n hasIndexSpecified = true;\n }\n }, this);\n var orient = thisOption.orient;\n\n if (orient == null && hasIndexSpecified) {\n return 'orient';\n } else if (!hasIndexSpecified) {\n if (orient == null) {\n thisOption.orient = 'horizontal';\n }\n\n return 'axisIndex';\n }\n },\n\n /**\n * @private\n */\n _autoSetAxisIndex: function () {\n var autoAxisIndex = true;\n var orient = this.get('orient', true);\n var thisOption = this.option;\n var dependentModels = this.dependentModels;\n\n if (autoAxisIndex) {\n // Find axis that parallel to dataZoom as default.\n var dimName = orient === 'vertical' ? 'y' : 'x';\n\n if (dependentModels[dimName + 'Axis'].length) {\n thisOption[dimName + 'AxisIndex'] = [0];\n autoAxisIndex = false;\n } else {\n each(dependentModels.singleAxis, function (singleAxisModel) {\n if (autoAxisIndex && singleAxisModel.get('orient', true) === orient) {\n thisOption.singleAxisIndex = [singleAxisModel.componentIndex];\n autoAxisIndex = false;\n }\n });\n }\n }\n\n if (autoAxisIndex) {\n // Find the first category axis as default. (consider polar)\n eachAxisDim(function (dimNames) {\n if (!autoAxisIndex) {\n return;\n }\n\n var axisIndices = [];\n var axisModels = this.dependentModels[dimNames.axis];\n\n if (axisModels.length && !axisIndices.length) {\n for (var i = 0, len = axisModels.length; i < len; i++) {\n if (axisModels[i].get('type') === 'category') {\n axisIndices.push(i);\n }\n }\n }\n\n thisOption[dimNames.axisIndex] = axisIndices;\n\n if (axisIndices.length) {\n autoAxisIndex = false;\n }\n }, this);\n }\n\n if (autoAxisIndex) {\n // FIXME\n // 这里是兼容ec2的写法(没指定xAxisIndex和yAxisIndex时把scatter和双数值轴折柱纳入dataZoom控制),\n // 但是实际是否需要Grid.js#getScaleByOption来判断(考虑time,log等axis type)?\n // If both dataZoom.xAxisIndex and dataZoom.yAxisIndex is not specified,\n // dataZoom component auto adopts series that reference to\n // both xAxis and yAxis which type is 'value'.\n this.ecModel.eachSeries(function (seriesModel) {\n if (this._isSeriesHasAllAxesTypeOf(seriesModel, 'value')) {\n eachAxisDim(function (dimNames) {\n var axisIndices = thisOption[dimNames.axisIndex];\n var axisIndex = seriesModel.get(dimNames.axisIndex);\n var axisId = seriesModel.get(dimNames.axisId);\n var axisModel = seriesModel.ecModel.queryComponents({\n mainType: dimNames.axis,\n index: axisIndex,\n id: axisId\n })[0];\n axisIndex = axisModel.componentIndex;\n\n if (zrUtil.indexOf(axisIndices, axisIndex) < 0) {\n axisIndices.push(axisIndex);\n }\n });\n }\n }, this);\n }\n },\n\n /**\n * @private\n */\n _autoSetOrient: function () {\n var dim; // Find the first axis\n\n this.eachTargetAxis(function (dimNames) {\n !dim && (dim = dimNames.name);\n }, this);\n this.option.orient = dim === 'y' ? 'vertical' : 'horizontal';\n },\n\n /**\n * @private\n */\n _isSeriesHasAllAxesTypeOf: function (seriesModel, axisType) {\n // FIXME\n // 需要series的xAxisIndex和yAxisIndex都首先自动设置上。\n // 例如series.type === scatter时。\n var is = true;\n eachAxisDim(function (dimNames) {\n var seriesAxisIndex = seriesModel.get(dimNames.axisIndex);\n var axisModel = this.dependentModels[dimNames.axis][seriesAxisIndex];\n\n if (!axisModel || axisModel.get('type') !== axisType) {\n is = false;\n }\n }, this);\n return is;\n },\n\n /**\n * @private\n */\n _setDefaultThrottle: function (inputRawOption) {\n // When first time user set throttle, auto throttle ends.\n if (inputRawOption.hasOwnProperty('throttle')) {\n this._autoThrottle = false;\n }\n\n if (this._autoThrottle) {\n var globalOption = this.ecModel.option;\n this.option.throttle = globalOption.animation && globalOption.animationDurationUpdate > 0 ? 100 : 20;\n }\n },\n\n /**\n * @public\n */\n getFirstTargetAxisModel: function () {\n var firstAxisModel;\n eachAxisDim(function (dimNames) {\n if (firstAxisModel == null) {\n var indices = this.get(dimNames.axisIndex);\n\n if (indices.length) {\n firstAxisModel = this.dependentModels[dimNames.axis][indices[0]];\n }\n }\n }, this);\n return firstAxisModel;\n },\n\n /**\n * @public\n * @param {Function} callback param: axisModel, dimNames, axisIndex, dataZoomModel, ecModel\n */\n eachTargetAxis: function (callback, context) {\n var ecModel = this.ecModel;\n eachAxisDim(function (dimNames) {\n each(this.get(dimNames.axisIndex), function (axisIndex) {\n callback.call(context, dimNames, axisIndex, this, ecModel);\n }, this);\n }, this);\n },\n\n /**\n * @param {string} dimName\n * @param {number} axisIndex\n * @return {module:echarts/component/dataZoom/AxisProxy} If not found, return null/undefined.\n */\n getAxisProxy: function (dimName, axisIndex) {\n return this._axisProxies[dimName + '_' + axisIndex];\n },\n\n /**\n * @param {string} dimName\n * @param {number} axisIndex\n * @return {module:echarts/model/Model} If not found, return null/undefined.\n */\n getAxisModel: function (dimName, axisIndex) {\n var axisProxy = this.getAxisProxy(dimName, axisIndex);\n return axisProxy && axisProxy.getAxisModel();\n },\n\n /**\n * If not specified, set to undefined.\n *\n * @public\n * @param {Object} opt\n * @param {number} [opt.start]\n * @param {number} [opt.end]\n * @param {number} [opt.startValue]\n * @param {number} [opt.endValue]\n */\n setRawRange: function (opt) {\n var thisOption = this.option;\n var settledOption = this.settledOption;\n each([['start', 'startValue'], ['end', 'endValue']], function (names) {\n // Consider the pair :\n // If one has value and the other one is `null/undefined`, we both set them\n // to `settledOption`. This strategy enables the feature to clear the original\n // value in `settledOption` to `null/undefined`.\n // But if both of them are `null/undefined`, we do not set them to `settledOption`\n // and keep `settledOption` with the original value. This strategy enables users to\n // only set but not set when calling\n // `dispatchAction`.\n // The pair is treated in the same way.\n if (opt[names[0]] != null || opt[names[1]] != null) {\n thisOption[names[0]] = settledOption[names[0]] = opt[names[0]];\n thisOption[names[1]] = settledOption[names[1]] = opt[names[1]];\n }\n }, this);\n updateRangeUse(this, opt);\n },\n\n /**\n * @public\n * @param {Object} opt\n * @param {number} [opt.start]\n * @param {number} [opt.end]\n * @param {number} [opt.startValue]\n * @param {number} [opt.endValue]\n */\n setCalculatedRange: function (opt) {\n var option = this.option;\n each(['start', 'startValue', 'end', 'endValue'], function (name) {\n option[name] = opt[name];\n });\n },\n\n /**\n * @public\n * @return {Array.} [startPercent, endPercent]\n */\n getPercentRange: function () {\n var axisProxy = this.findRepresentativeAxisProxy();\n\n if (axisProxy) {\n return axisProxy.getDataPercentWindow();\n }\n },\n\n /**\n * @public\n * For example, chart.getModel().getComponent('dataZoom').getValueRange('y', 0);\n *\n * @param {string} [axisDimName]\n * @param {number} [axisIndex]\n * @return {Array.} [startValue, endValue] value can only be '-' or finite number.\n */\n getValueRange: function (axisDimName, axisIndex) {\n if (axisDimName == null && axisIndex == null) {\n var axisProxy = this.findRepresentativeAxisProxy();\n\n if (axisProxy) {\n return axisProxy.getDataValueWindow();\n }\n } else {\n return this.getAxisProxy(axisDimName, axisIndex).getDataValueWindow();\n }\n },\n\n /**\n * @public\n * @param {module:echarts/model/Model} [axisModel] If axisModel given, find axisProxy\n * corresponding to the axisModel\n * @return {module:echarts/component/dataZoom/AxisProxy}\n */\n findRepresentativeAxisProxy: function (axisModel) {\n if (axisModel) {\n return axisModel.__dzAxisProxy;\n } // Find the first hosted axisProxy\n\n\n var axisProxies = this._axisProxies;\n\n for (var key in axisProxies) {\n if (axisProxies.hasOwnProperty(key) && axisProxies[key].hostedBy(this)) {\n return axisProxies[key];\n }\n } // If no hosted axis find not hosted axisProxy.\n // Consider this case: dataZoomModel1 and dataZoomModel2 control the same axis,\n // and the option.start or option.end settings are different. The percentRange\n // should follow axisProxy.\n // (We encounter this problem in toolbox data zoom.)\n\n\n for (var key in axisProxies) {\n if (axisProxies.hasOwnProperty(key) && !axisProxies[key].hostedBy(this)) {\n return axisProxies[key];\n }\n }\n },\n\n /**\n * @return {Array.}\n */\n getRangePropMode: function () {\n return this._rangePropMode.slice();\n }\n});\n/**\n * Retrieve the those raw params from option, which will be cached separately.\n * becasue they will be overwritten by normalized/calculated values in the main\n * process.\n */\n\nfunction retrieveRawOption(option) {\n var ret = {};\n each(['start', 'end', 'startValue', 'endValue', 'throttle'], function (name) {\n option.hasOwnProperty(name) && (ret[name] = option[name]);\n });\n return ret;\n}\n\nfunction updateRangeUse(dataZoomModel, inputRawOption) {\n var rangePropMode = dataZoomModel._rangePropMode;\n var rangeModeInOption = dataZoomModel.get('rangeMode');\n each([['start', 'startValue'], ['end', 'endValue']], function (names, index) {\n var percentSpecified = inputRawOption[names[0]] != null;\n var valueSpecified = inputRawOption[names[1]] != null;\n\n if (percentSpecified && !valueSpecified) {\n rangePropMode[index] = 'percent';\n } else if (!percentSpecified && valueSpecified) {\n rangePropMode[index] = 'value';\n } else if (rangeModeInOption) {\n rangePropMode[index] = rangeModeInOption[index];\n } else if (percentSpecified) {\n // percentSpecified && valueSpecified\n rangePropMode[index] = 'percent';\n } // else remain its original setting.\n\n });\n}\n\nvar _default = DataZoomModel;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/dataZoom/DataZoomModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/dataZoom/DataZoomView.js": +/*!*********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/dataZoom/DataZoomView.js ***! + \*********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar ComponentView = __webpack_require__(/*! ../../view/Component */ \"./node_modules/echarts/lib/view/Component.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = ComponentView.extend({\n type: 'dataZoom',\n render: function (dataZoomModel, ecModel, api, payload) {\n this.dataZoomModel = dataZoomModel;\n this.ecModel = ecModel;\n this.api = api;\n },\n\n /**\n * Find the first target coordinate system.\n *\n * @protected\n * @return {Object} {\n * grid: [\n * {model: coord0, axisModels: [axis1, axis3], coordIndex: 1},\n * {model: coord1, axisModels: [axis0, axis2], coordIndex: 0},\n * ...\n * ], // cartesians must not be null/undefined.\n * polar: [\n * {model: coord0, axisModels: [axis4], coordIndex: 0},\n * ...\n * ], // polars must not be null/undefined.\n * singleAxis: [\n * {model: coord0, axisModels: [], coordIndex: 0}\n * ]\n */\n getTargetCoordInfo: function () {\n var dataZoomModel = this.dataZoomModel;\n var ecModel = this.ecModel;\n var coordSysLists = {};\n dataZoomModel.eachTargetAxis(function (dimNames, axisIndex) {\n var axisModel = ecModel.getComponent(dimNames.axis, axisIndex);\n\n if (axisModel) {\n var coordModel = axisModel.getCoordSysModel();\n coordModel && save(coordModel, axisModel, coordSysLists[coordModel.mainType] || (coordSysLists[coordModel.mainType] = []), coordModel.componentIndex);\n }\n }, this);\n\n function save(coordModel, axisModel, store, coordIndex) {\n var item;\n\n for (var i = 0; i < store.length; i++) {\n if (store[i].model === coordModel) {\n item = store[i];\n break;\n }\n }\n\n if (!item) {\n store.push(item = {\n model: coordModel,\n axisModels: [],\n coordIndex: coordIndex\n });\n }\n\n item.axisModels.push(axisModel);\n }\n\n return coordSysLists;\n }\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/dataZoom/DataZoomView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/dataZoom/InsideZoomModel.js": +/*!************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/dataZoom/InsideZoomModel.js ***! + \************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar DataZoomModel = __webpack_require__(/*! ./DataZoomModel */ \"./node_modules/echarts/lib/component/dataZoom/DataZoomModel.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = DataZoomModel.extend({\n type: 'dataZoom.inside',\n\n /**\n * @protected\n */\n defaultOption: {\n disabled: false,\n // Whether disable this inside zoom.\n zoomLock: false,\n // Whether disable zoom but only pan.\n zoomOnMouseWheel: true,\n // Can be: true / false / 'shift' / 'ctrl' / 'alt'.\n moveOnMouseMove: true,\n // Can be: true / false / 'shift' / 'ctrl' / 'alt'.\n moveOnMouseWheel: false,\n // Can be: true / false / 'shift' / 'ctrl' / 'alt'.\n preventDefaultMouseMove: true\n }\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/dataZoom/InsideZoomModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/dataZoom/InsideZoomView.js": +/*!***********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/dataZoom/InsideZoomView.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar DataZoomView = __webpack_require__(/*! ./DataZoomView */ \"./node_modules/echarts/lib/component/dataZoom/DataZoomView.js\");\n\nvar sliderMove = __webpack_require__(/*! ../helper/sliderMove */ \"./node_modules/echarts/lib/component/helper/sliderMove.js\");\n\nvar roams = __webpack_require__(/*! ./roams */ \"./node_modules/echarts/lib/component/dataZoom/roams.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar bind = zrUtil.bind;\nvar InsideZoomView = DataZoomView.extend({\n type: 'dataZoom.inside',\n\n /**\n * @override\n */\n init: function (ecModel, api) {\n /**\n * 'throttle' is used in this.dispatchAction, so we save range\n * to avoid missing some 'pan' info.\n * @private\n * @type {Array.}\n */\n this._range;\n },\n\n /**\n * @override\n */\n render: function (dataZoomModel, ecModel, api, payload) {\n InsideZoomView.superApply(this, 'render', arguments); // Hence the `throttle` util ensures to preserve command order,\n // here simply updating range all the time will not cause missing\n // any of the the roam change.\n\n this._range = dataZoomModel.getPercentRange(); // Reset controllers.\n\n zrUtil.each(this.getTargetCoordInfo(), function (coordInfoList, coordSysName) {\n var allCoordIds = zrUtil.map(coordInfoList, function (coordInfo) {\n return roams.generateCoordId(coordInfo.model);\n });\n zrUtil.each(coordInfoList, function (coordInfo) {\n var coordModel = coordInfo.model;\n var getRange = {};\n zrUtil.each(['pan', 'zoom', 'scrollMove'], function (eventName) {\n getRange[eventName] = bind(roamHandlers[eventName], this, coordInfo, coordSysName);\n }, this);\n roams.register(api, {\n coordId: roams.generateCoordId(coordModel),\n allCoordIds: allCoordIds,\n containsPoint: function (e, x, y) {\n return coordModel.coordinateSystem.containPoint([x, y]);\n },\n dataZoomId: dataZoomModel.id,\n dataZoomModel: dataZoomModel,\n getRange: getRange\n });\n }, this);\n }, this);\n },\n\n /**\n * @override\n */\n dispose: function () {\n roams.unregister(this.api, this.dataZoomModel.id);\n InsideZoomView.superApply(this, 'dispose', arguments);\n this._range = null;\n }\n});\nvar roamHandlers = {\n /**\n * @this {module:echarts/component/dataZoom/InsideZoomView}\n */\n zoom: function (coordInfo, coordSysName, controller, e) {\n var lastRange = this._range;\n var range = lastRange.slice(); // Calculate transform by the first axis.\n\n var axisModel = coordInfo.axisModels[0];\n\n if (!axisModel) {\n return;\n }\n\n var directionInfo = getDirectionInfo[coordSysName](null, [e.originX, e.originY], axisModel, controller, coordInfo);\n var percentPoint = (directionInfo.signal > 0 ? directionInfo.pixelStart + directionInfo.pixelLength - directionInfo.pixel : directionInfo.pixel - directionInfo.pixelStart) / directionInfo.pixelLength * (range[1] - range[0]) + range[0];\n var scale = Math.max(1 / e.scale, 0);\n range[0] = (range[0] - percentPoint) * scale + percentPoint;\n range[1] = (range[1] - percentPoint) * scale + percentPoint; // Restrict range.\n\n var minMaxSpan = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();\n sliderMove(0, range, [0, 100], 0, minMaxSpan.minSpan, minMaxSpan.maxSpan);\n this._range = range;\n\n if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) {\n return range;\n }\n },\n\n /**\n * @this {module:echarts/component/dataZoom/InsideZoomView}\n */\n pan: makeMover(function (range, axisModel, coordInfo, coordSysName, controller, e) {\n var directionInfo = getDirectionInfo[coordSysName]([e.oldX, e.oldY], [e.newX, e.newY], axisModel, controller, coordInfo);\n return directionInfo.signal * (range[1] - range[0]) * directionInfo.pixel / directionInfo.pixelLength;\n }),\n\n /**\n * @this {module:echarts/component/dataZoom/InsideZoomView}\n */\n scrollMove: makeMover(function (range, axisModel, coordInfo, coordSysName, controller, e) {\n var directionInfo = getDirectionInfo[coordSysName]([0, 0], [e.scrollDelta, e.scrollDelta], axisModel, controller, coordInfo);\n return directionInfo.signal * (range[1] - range[0]) * e.scrollDelta;\n })\n};\n\nfunction makeMover(getPercentDelta) {\n return function (coordInfo, coordSysName, controller, e) {\n var lastRange = this._range;\n var range = lastRange.slice(); // Calculate transform by the first axis.\n\n var axisModel = coordInfo.axisModels[0];\n\n if (!axisModel) {\n return;\n }\n\n var percentDelta = getPercentDelta(range, axisModel, coordInfo, coordSysName, controller, e);\n sliderMove(percentDelta, range, [0, 100], 'all');\n this._range = range;\n\n if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) {\n return range;\n }\n };\n}\n\nvar getDirectionInfo = {\n grid: function (oldPoint, newPoint, axisModel, controller, coordInfo) {\n var axis = axisModel.axis;\n var ret = {};\n var rect = coordInfo.model.coordinateSystem.getRect();\n oldPoint = oldPoint || [0, 0];\n\n if (axis.dim === 'x') {\n ret.pixel = newPoint[0] - oldPoint[0];\n ret.pixelLength = rect.width;\n ret.pixelStart = rect.x;\n ret.signal = axis.inverse ? 1 : -1;\n } else {\n // axis.dim === 'y'\n ret.pixel = newPoint[1] - oldPoint[1];\n ret.pixelLength = rect.height;\n ret.pixelStart = rect.y;\n ret.signal = axis.inverse ? -1 : 1;\n }\n\n return ret;\n },\n polar: function (oldPoint, newPoint, axisModel, controller, coordInfo) {\n var axis = axisModel.axis;\n var ret = {};\n var polar = coordInfo.model.coordinateSystem;\n var radiusExtent = polar.getRadiusAxis().getExtent();\n var angleExtent = polar.getAngleAxis().getExtent();\n oldPoint = oldPoint ? polar.pointToCoord(oldPoint) : [0, 0];\n newPoint = polar.pointToCoord(newPoint);\n\n if (axisModel.mainType === 'radiusAxis') {\n ret.pixel = newPoint[0] - oldPoint[0]; // ret.pixelLength = Math.abs(radiusExtent[1] - radiusExtent[0]);\n // ret.pixelStart = Math.min(radiusExtent[0], radiusExtent[1]);\n\n ret.pixelLength = radiusExtent[1] - radiusExtent[0];\n ret.pixelStart = radiusExtent[0];\n ret.signal = axis.inverse ? 1 : -1;\n } else {\n // 'angleAxis'\n ret.pixel = newPoint[1] - oldPoint[1]; // ret.pixelLength = Math.abs(angleExtent[1] - angleExtent[0]);\n // ret.pixelStart = Math.min(angleExtent[0], angleExtent[1]);\n\n ret.pixelLength = angleExtent[1] - angleExtent[0];\n ret.pixelStart = angleExtent[0];\n ret.signal = axis.inverse ? -1 : 1;\n }\n\n return ret;\n },\n singleAxis: function (oldPoint, newPoint, axisModel, controller, coordInfo) {\n var axis = axisModel.axis;\n var rect = coordInfo.model.coordinateSystem.getRect();\n var ret = {};\n oldPoint = oldPoint || [0, 0];\n\n if (axis.orient === 'horizontal') {\n ret.pixel = newPoint[0] - oldPoint[0];\n ret.pixelLength = rect.width;\n ret.pixelStart = rect.x;\n ret.signal = axis.inverse ? 1 : -1;\n } else {\n // 'vertical'\n ret.pixel = newPoint[1] - oldPoint[1];\n ret.pixelLength = rect.height;\n ret.pixelStart = rect.y;\n ret.signal = axis.inverse ? -1 : 1;\n }\n\n return ret;\n }\n};\nvar _default = InsideZoomView;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/dataZoom/InsideZoomView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/dataZoom/SelectZoomModel.js": +/*!************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/dataZoom/SelectZoomModel.js ***! + \************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar DataZoomModel = __webpack_require__(/*! ./DataZoomModel */ \"./node_modules/echarts/lib/component/dataZoom/DataZoomModel.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = DataZoomModel.extend({\n type: 'dataZoom.select'\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/dataZoom/SelectZoomModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/dataZoom/SelectZoomView.js": +/*!***********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/dataZoom/SelectZoomView.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar DataZoomView = __webpack_require__(/*! ./DataZoomView */ \"./node_modules/echarts/lib/component/dataZoom/DataZoomView.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = DataZoomView.extend({\n type: 'dataZoom.select'\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/dataZoom/SelectZoomView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/dataZoom/SliderZoomModel.js": +/*!************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/dataZoom/SliderZoomModel.js ***! + \************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar DataZoomModel = __webpack_require__(/*! ./DataZoomModel */ \"./node_modules/echarts/lib/component/dataZoom/DataZoomModel.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar SliderZoomModel = DataZoomModel.extend({\n type: 'dataZoom.slider',\n layoutMode: 'box',\n\n /**\n * @protected\n */\n defaultOption: {\n show: true,\n // ph => placeholder. Using placehoder here because\n // deault value can only be drived in view stage.\n right: 'ph',\n // Default align to grid rect.\n top: 'ph',\n // Default align to grid rect.\n width: 'ph',\n // Default align to grid rect.\n height: 'ph',\n // Default align to grid rect.\n left: null,\n // Default align to grid rect.\n bottom: null,\n // Default align to grid rect.\n backgroundColor: 'rgba(47,69,84,0)',\n // Background of slider zoom component.\n // dataBackgroundColor: '#ddd', // Background coor of data shadow and border of box,\n // highest priority, remain for compatibility of\n // previous version, but not recommended any more.\n dataBackground: {\n lineStyle: {\n color: '#2f4554',\n width: 0.5,\n opacity: 0.3\n },\n areaStyle: {\n color: 'rgba(47,69,84,0.3)',\n opacity: 0.3\n }\n },\n borderColor: '#ddd',\n // border color of the box. For compatibility,\n // if dataBackgroundColor is set, borderColor\n // is ignored.\n fillerColor: 'rgba(167,183,204,0.4)',\n // Color of selected area.\n // handleColor: 'rgba(89,170,216,0.95)', // Color of handle.\n // handleIcon: 'path://M4.9,17.8c0-1.4,4.5-10.5,5.5-12.4c0-0.1,0.6-1.1,0.9-1.1c0.4,0,0.9,1,0.9,1.1c1.1,2.2,5.4,11,5.4,12.4v17.8c0,1.5-0.6,2.1-1.3,2.1H6.1c-0.7,0-1.3-0.6-1.3-2.1V17.8z',\n\n /* eslint-disable */\n handleIcon: 'M8.2,13.6V3.9H6.3v9.7H3.1v14.9h3.3v9.7h1.8v-9.7h3.3V13.6H8.2z M9.7,24.4H4.8v-1.4h4.9V24.4z M9.7,19.1H4.8v-1.4h4.9V19.1z',\n\n /* eslint-enable */\n // Percent of the slider height\n handleSize: '100%',\n handleStyle: {\n color: '#a7b7cc'\n },\n labelPrecision: null,\n labelFormatter: null,\n showDetail: true,\n showDataShadow: 'auto',\n // Default auto decision.\n realtime: true,\n zoomLock: false,\n // Whether disable zoom.\n textStyle: {\n color: '#333'\n }\n }\n});\nvar _default = SliderZoomModel;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/dataZoom/SliderZoomModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/dataZoom/SliderZoomView.js": +/*!***********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/dataZoom/SliderZoomView.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar eventTool = __webpack_require__(/*! zrender/lib/core/event */ \"./node_modules/zrender/lib/core/event.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar throttle = __webpack_require__(/*! ../../util/throttle */ \"./node_modules/echarts/lib/util/throttle.js\");\n\nvar DataZoomView = __webpack_require__(/*! ./DataZoomView */ \"./node_modules/echarts/lib/component/dataZoom/DataZoomView.js\");\n\nvar numberUtil = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar layout = __webpack_require__(/*! ../../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar sliderMove = __webpack_require__(/*! ../helper/sliderMove */ \"./node_modules/echarts/lib/component/helper/sliderMove.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar Rect = graphic.Rect;\nvar linearMap = numberUtil.linearMap;\nvar asc = numberUtil.asc;\nvar bind = zrUtil.bind;\nvar each = zrUtil.each; // Constants\n\nvar DEFAULT_LOCATION_EDGE_GAP = 7;\nvar DEFAULT_FRAME_BORDER_WIDTH = 1;\nvar DEFAULT_FILLER_SIZE = 30;\nvar HORIZONTAL = 'horizontal';\nvar VERTICAL = 'vertical';\nvar LABEL_GAP = 5;\nvar SHOW_DATA_SHADOW_SERIES_TYPE = ['line', 'bar', 'candlestick', 'scatter'];\nvar SliderZoomView = DataZoomView.extend({\n type: 'dataZoom.slider',\n init: function (ecModel, api) {\n /**\n * @private\n * @type {Object}\n */\n this._displayables = {};\n /**\n * @private\n * @type {string}\n */\n\n this._orient;\n /**\n * [0, 100]\n * @private\n */\n\n this._range;\n /**\n * [coord of the first handle, coord of the second handle]\n * @private\n */\n\n this._handleEnds;\n /**\n * [length, thick]\n * @private\n * @type {Array.}\n */\n\n this._size;\n /**\n * @private\n * @type {number}\n */\n\n this._handleWidth;\n /**\n * @private\n * @type {number}\n */\n\n this._handleHeight;\n /**\n * @private\n */\n\n this._location;\n /**\n * @private\n */\n\n this._dragging;\n /**\n * @private\n */\n\n this._dataShadowInfo;\n this.api = api;\n },\n\n /**\n * @override\n */\n render: function (dataZoomModel, ecModel, api, payload) {\n SliderZoomView.superApply(this, 'render', arguments);\n throttle.createOrUpdate(this, '_dispatchZoomAction', this.dataZoomModel.get('throttle'), 'fixRate');\n this._orient = dataZoomModel.get('orient');\n\n if (this.dataZoomModel.get('show') === false) {\n this.group.removeAll();\n return;\n } // Notice: this._resetInterval() should not be executed when payload.type\n // is 'dataZoom', origin this._range should be maintained, otherwise 'pan'\n // or 'zoom' info will be missed because of 'throttle' of this.dispatchAction,\n\n\n if (!payload || payload.type !== 'dataZoom' || payload.from !== this.uid) {\n this._buildView();\n }\n\n this._updateView();\n },\n\n /**\n * @override\n */\n remove: function () {\n SliderZoomView.superApply(this, 'remove', arguments);\n throttle.clear(this, '_dispatchZoomAction');\n },\n\n /**\n * @override\n */\n dispose: function () {\n SliderZoomView.superApply(this, 'dispose', arguments);\n throttle.clear(this, '_dispatchZoomAction');\n },\n _buildView: function () {\n var thisGroup = this.group;\n thisGroup.removeAll();\n\n this._resetLocation();\n\n this._resetInterval();\n\n var barGroup = this._displayables.barGroup = new graphic.Group();\n\n this._renderBackground();\n\n this._renderHandle();\n\n this._renderDataShadow();\n\n thisGroup.add(barGroup);\n\n this._positionGroup();\n },\n\n /**\n * @private\n */\n _resetLocation: function () {\n var dataZoomModel = this.dataZoomModel;\n var api = this.api; // If some of x/y/width/height are not specified,\n // auto-adapt according to target grid.\n\n var coordRect = this._findCoordRect();\n\n var ecSize = {\n width: api.getWidth(),\n height: api.getHeight()\n }; // Default align by coordinate system rect.\n\n var positionInfo = this._orient === HORIZONTAL ? {\n // Why using 'right', because right should be used in vertical,\n // and it is better to be consistent for dealing with position param merge.\n right: ecSize.width - coordRect.x - coordRect.width,\n top: ecSize.height - DEFAULT_FILLER_SIZE - DEFAULT_LOCATION_EDGE_GAP,\n width: coordRect.width,\n height: DEFAULT_FILLER_SIZE\n } : {\n // vertical\n right: DEFAULT_LOCATION_EDGE_GAP,\n top: coordRect.y,\n width: DEFAULT_FILLER_SIZE,\n height: coordRect.height\n }; // Do not write back to option and replace value 'ph', because\n // the 'ph' value should be recalculated when resize.\n\n var layoutParams = layout.getLayoutParams(dataZoomModel.option); // Replace the placeholder value.\n\n zrUtil.each(['right', 'top', 'width', 'height'], function (name) {\n if (layoutParams[name] === 'ph') {\n layoutParams[name] = positionInfo[name];\n }\n });\n var layoutRect = layout.getLayoutRect(layoutParams, ecSize, dataZoomModel.padding);\n this._location = {\n x: layoutRect.x,\n y: layoutRect.y\n };\n this._size = [layoutRect.width, layoutRect.height];\n this._orient === VERTICAL && this._size.reverse();\n },\n\n /**\n * @private\n */\n _positionGroup: function () {\n var thisGroup = this.group;\n var location = this._location;\n var orient = this._orient; // Just use the first axis to determine mapping.\n\n var targetAxisModel = this.dataZoomModel.getFirstTargetAxisModel();\n var inverse = targetAxisModel && targetAxisModel.get('inverse');\n var barGroup = this._displayables.barGroup;\n var otherAxisInverse = (this._dataShadowInfo || {}).otherAxisInverse; // Transform barGroup.\n\n barGroup.attr(orient === HORIZONTAL && !inverse ? {\n scale: otherAxisInverse ? [1, 1] : [1, -1]\n } : orient === HORIZONTAL && inverse ? {\n scale: otherAxisInverse ? [-1, 1] : [-1, -1]\n } : orient === VERTICAL && !inverse ? {\n scale: otherAxisInverse ? [1, -1] : [1, 1],\n rotation: Math.PI / 2 // Dont use Math.PI, considering shadow direction.\n\n } : {\n scale: otherAxisInverse ? [-1, -1] : [-1, 1],\n rotation: Math.PI / 2\n }); // Position barGroup\n\n var rect = thisGroup.getBoundingRect([barGroup]);\n thisGroup.attr('position', [location.x - rect.x, location.y - rect.y]);\n },\n\n /**\n * @private\n */\n _getViewExtent: function () {\n return [0, this._size[0]];\n },\n _renderBackground: function () {\n var dataZoomModel = this.dataZoomModel;\n var size = this._size;\n var barGroup = this._displayables.barGroup;\n barGroup.add(new Rect({\n silent: true,\n shape: {\n x: 0,\n y: 0,\n width: size[0],\n height: size[1]\n },\n style: {\n fill: dataZoomModel.get('backgroundColor')\n },\n z2: -40\n })); // Click panel, over shadow, below handles.\n\n barGroup.add(new Rect({\n shape: {\n x: 0,\n y: 0,\n width: size[0],\n height: size[1]\n },\n style: {\n fill: 'transparent'\n },\n z2: 0,\n onclick: zrUtil.bind(this._onClickPanelClick, this)\n }));\n },\n _renderDataShadow: function () {\n var info = this._dataShadowInfo = this._prepareDataShadowInfo();\n\n if (!info) {\n return;\n }\n\n var size = this._size;\n var seriesModel = info.series;\n var data = seriesModel.getRawData();\n var otherDim = seriesModel.getShadowDim ? seriesModel.getShadowDim() // @see candlestick\n : info.otherDim;\n\n if (otherDim == null) {\n return;\n }\n\n var otherDataExtent = data.getDataExtent(otherDim); // Nice extent.\n\n var otherOffset = (otherDataExtent[1] - otherDataExtent[0]) * 0.3;\n otherDataExtent = [otherDataExtent[0] - otherOffset, otherDataExtent[1] + otherOffset];\n var otherShadowExtent = [0, size[1]];\n var thisShadowExtent = [0, size[0]];\n var areaPoints = [[size[0], 0], [0, 0]];\n var linePoints = [];\n var step = thisShadowExtent[1] / (data.count() - 1);\n var thisCoord = 0; // Optimize for large data shadow\n\n var stride = Math.round(data.count() / size[0]);\n var lastIsEmpty;\n data.each([otherDim], function (value, index) {\n if (stride > 0 && index % stride) {\n thisCoord += step;\n return;\n } // FIXME\n // Should consider axis.min/axis.max when drawing dataShadow.\n // FIXME\n // 应该使用统一的空判断?还是在list里进行空判断?\n\n\n var isEmpty = value == null || isNaN(value) || value === ''; // See #4235.\n\n var otherCoord = isEmpty ? 0 : linearMap(value, otherDataExtent, otherShadowExtent, true); // Attempt to draw data shadow precisely when there are empty value.\n\n if (isEmpty && !lastIsEmpty && index) {\n areaPoints.push([areaPoints[areaPoints.length - 1][0], 0]);\n linePoints.push([linePoints[linePoints.length - 1][0], 0]);\n } else if (!isEmpty && lastIsEmpty) {\n areaPoints.push([thisCoord, 0]);\n linePoints.push([thisCoord, 0]);\n }\n\n areaPoints.push([thisCoord, otherCoord]);\n linePoints.push([thisCoord, otherCoord]);\n thisCoord += step;\n lastIsEmpty = isEmpty;\n });\n var dataZoomModel = this.dataZoomModel; // var dataBackgroundModel = dataZoomModel.getModel('dataBackground');\n\n this._displayables.barGroup.add(new graphic.Polygon({\n shape: {\n points: areaPoints\n },\n style: zrUtil.defaults({\n fill: dataZoomModel.get('dataBackgroundColor')\n }, dataZoomModel.getModel('dataBackground.areaStyle').getAreaStyle()),\n silent: true,\n z2: -20\n }));\n\n this._displayables.barGroup.add(new graphic.Polyline({\n shape: {\n points: linePoints\n },\n style: dataZoomModel.getModel('dataBackground.lineStyle').getLineStyle(),\n silent: true,\n z2: -19\n }));\n },\n _prepareDataShadowInfo: function () {\n var dataZoomModel = this.dataZoomModel;\n var showDataShadow = dataZoomModel.get('showDataShadow');\n\n if (showDataShadow === false) {\n return;\n } // Find a representative series.\n\n\n var result;\n var ecModel = this.ecModel;\n dataZoomModel.eachTargetAxis(function (dimNames, axisIndex) {\n var seriesModels = dataZoomModel.getAxisProxy(dimNames.name, axisIndex).getTargetSeriesModels();\n zrUtil.each(seriesModels, function (seriesModel) {\n if (result) {\n return;\n }\n\n if (showDataShadow !== true && zrUtil.indexOf(SHOW_DATA_SHADOW_SERIES_TYPE, seriesModel.get('type')) < 0) {\n return;\n }\n\n var thisAxis = ecModel.getComponent(dimNames.axis, axisIndex).axis;\n var otherDim = getOtherDim(dimNames.name);\n var otherAxisInverse;\n var coordSys = seriesModel.coordinateSystem;\n\n if (otherDim != null && coordSys.getOtherAxis) {\n otherAxisInverse = coordSys.getOtherAxis(thisAxis).inverse;\n }\n\n otherDim = seriesModel.getData().mapDimension(otherDim);\n result = {\n thisAxis: thisAxis,\n series: seriesModel,\n thisDim: dimNames.name,\n otherDim: otherDim,\n otherAxisInverse: otherAxisInverse\n };\n }, this);\n }, this);\n return result;\n },\n _renderHandle: function () {\n var displaybles = this._displayables;\n var handles = displaybles.handles = [];\n var handleLabels = displaybles.handleLabels = [];\n var barGroup = this._displayables.barGroup;\n var size = this._size;\n var dataZoomModel = this.dataZoomModel;\n barGroup.add(displaybles.filler = new Rect({\n draggable: true,\n cursor: getCursor(this._orient),\n drift: bind(this._onDragMove, this, 'all'),\n ondragstart: bind(this._showDataInfo, this, true),\n ondragend: bind(this._onDragEnd, this),\n onmouseover: bind(this._showDataInfo, this, true),\n onmouseout: bind(this._showDataInfo, this, false),\n style: {\n fill: dataZoomModel.get('fillerColor'),\n textPosition: 'inside'\n }\n })); // Frame border.\n\n barGroup.add(new Rect({\n silent: true,\n subPixelOptimize: true,\n shape: {\n x: 0,\n y: 0,\n width: size[0],\n height: size[1]\n },\n style: {\n stroke: dataZoomModel.get('dataBackgroundColor') || dataZoomModel.get('borderColor'),\n lineWidth: DEFAULT_FRAME_BORDER_WIDTH,\n fill: 'rgba(0,0,0,0)'\n }\n }));\n each([0, 1], function (handleIndex) {\n var path = graphic.createIcon(dataZoomModel.get('handleIcon'), {\n cursor: getCursor(this._orient),\n draggable: true,\n drift: bind(this._onDragMove, this, handleIndex),\n ondragend: bind(this._onDragEnd, this),\n onmouseover: bind(this._showDataInfo, this, true),\n onmouseout: bind(this._showDataInfo, this, false)\n }, {\n x: -1,\n y: 0,\n width: 2,\n height: 2\n });\n var bRect = path.getBoundingRect();\n this._handleHeight = numberUtil.parsePercent(dataZoomModel.get('handleSize'), this._size[1]);\n this._handleWidth = bRect.width / bRect.height * this._handleHeight;\n path.setStyle(dataZoomModel.getModel('handleStyle').getItemStyle());\n var handleColor = dataZoomModel.get('handleColor'); // Compatitable with previous version\n\n if (handleColor != null) {\n path.style.fill = handleColor;\n }\n\n barGroup.add(handles[handleIndex] = path);\n var textStyleModel = dataZoomModel.textStyleModel;\n this.group.add(handleLabels[handleIndex] = new graphic.Text({\n silent: true,\n invisible: true,\n style: {\n x: 0,\n y: 0,\n text: '',\n textVerticalAlign: 'middle',\n textAlign: 'center',\n textFill: textStyleModel.getTextColor(),\n textFont: textStyleModel.getFont()\n },\n z2: 10\n }));\n }, this);\n },\n\n /**\n * @private\n */\n _resetInterval: function () {\n var range = this._range = this.dataZoomModel.getPercentRange();\n\n var viewExtent = this._getViewExtent();\n\n this._handleEnds = [linearMap(range[0], [0, 100], viewExtent, true), linearMap(range[1], [0, 100], viewExtent, true)];\n },\n\n /**\n * @private\n * @param {(number|string)} handleIndex 0 or 1 or 'all'\n * @param {number} delta\n * @return {boolean} changed\n */\n _updateInterval: function (handleIndex, delta) {\n var dataZoomModel = this.dataZoomModel;\n var handleEnds = this._handleEnds;\n\n var viewExtend = this._getViewExtent();\n\n var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();\n var percentExtent = [0, 100];\n sliderMove(delta, handleEnds, viewExtend, dataZoomModel.get('zoomLock') ? 'all' : handleIndex, minMaxSpan.minSpan != null ? linearMap(minMaxSpan.minSpan, percentExtent, viewExtend, true) : null, minMaxSpan.maxSpan != null ? linearMap(minMaxSpan.maxSpan, percentExtent, viewExtend, true) : null);\n var lastRange = this._range;\n var range = this._range = asc([linearMap(handleEnds[0], viewExtend, percentExtent, true), linearMap(handleEnds[1], viewExtend, percentExtent, true)]);\n return !lastRange || lastRange[0] !== range[0] || lastRange[1] !== range[1];\n },\n\n /**\n * @private\n */\n _updateView: function (nonRealtime) {\n var displaybles = this._displayables;\n var handleEnds = this._handleEnds;\n var handleInterval = asc(handleEnds.slice());\n var size = this._size;\n each([0, 1], function (handleIndex) {\n // Handles\n var handle = displaybles.handles[handleIndex];\n var handleHeight = this._handleHeight;\n handle.attr({\n scale: [handleHeight / 2, handleHeight / 2],\n position: [handleEnds[handleIndex], size[1] / 2 - handleHeight / 2]\n });\n }, this); // Filler\n\n displaybles.filler.setShape({\n x: handleInterval[0],\n y: 0,\n width: handleInterval[1] - handleInterval[0],\n height: size[1]\n });\n\n this._updateDataInfo(nonRealtime);\n },\n\n /**\n * @private\n */\n _updateDataInfo: function (nonRealtime) {\n var dataZoomModel = this.dataZoomModel;\n var displaybles = this._displayables;\n var handleLabels = displaybles.handleLabels;\n var orient = this._orient;\n var labelTexts = ['', '']; // FIXME\n // date型,支持formatter,autoformatter(ec2 date.getAutoFormatter)\n\n if (dataZoomModel.get('showDetail')) {\n var axisProxy = dataZoomModel.findRepresentativeAxisProxy();\n\n if (axisProxy) {\n var axis = axisProxy.getAxisModel().axis;\n var range = this._range;\n var dataInterval = nonRealtime // See #4434, data and axis are not processed and reset yet in non-realtime mode.\n ? axisProxy.calculateDataWindow({\n start: range[0],\n end: range[1]\n }).valueWindow : axisProxy.getDataValueWindow();\n labelTexts = [this._formatLabel(dataInterval[0], axis), this._formatLabel(dataInterval[1], axis)];\n }\n }\n\n var orderedHandleEnds = asc(this._handleEnds.slice());\n setLabel.call(this, 0);\n setLabel.call(this, 1);\n\n function setLabel(handleIndex) {\n // Label\n // Text should not transform by barGroup.\n // Ignore handlers transform\n var barTransform = graphic.getTransform(displaybles.handles[handleIndex].parent, this.group);\n var direction = graphic.transformDirection(handleIndex === 0 ? 'right' : 'left', barTransform);\n var offset = this._handleWidth / 2 + LABEL_GAP;\n var textPoint = graphic.applyTransform([orderedHandleEnds[handleIndex] + (handleIndex === 0 ? -offset : offset), this._size[1] / 2], barTransform);\n handleLabels[handleIndex].setStyle({\n x: textPoint[0],\n y: textPoint[1],\n textVerticalAlign: orient === HORIZONTAL ? 'middle' : direction,\n textAlign: orient === HORIZONTAL ? direction : 'center',\n text: labelTexts[handleIndex]\n });\n }\n },\n\n /**\n * @private\n */\n _formatLabel: function (value, axis) {\n var dataZoomModel = this.dataZoomModel;\n var labelFormatter = dataZoomModel.get('labelFormatter');\n var labelPrecision = dataZoomModel.get('labelPrecision');\n\n if (labelPrecision == null || labelPrecision === 'auto') {\n labelPrecision = axis.getPixelPrecision();\n }\n\n var valueStr = value == null || isNaN(value) ? '' // FIXME Glue code\n : axis.type === 'category' || axis.type === 'time' ? axis.scale.getLabel(Math.round(value)) // param of toFixed should less then 20.\n : value.toFixed(Math.min(labelPrecision, 20));\n return zrUtil.isFunction(labelFormatter) ? labelFormatter(value, valueStr) : zrUtil.isString(labelFormatter) ? labelFormatter.replace('{value}', valueStr) : valueStr;\n },\n\n /**\n * @private\n * @param {boolean} showOrHide true: show, false: hide\n */\n _showDataInfo: function (showOrHide) {\n // Always show when drgging.\n showOrHide = this._dragging || showOrHide;\n var handleLabels = this._displayables.handleLabels;\n handleLabels[0].attr('invisible', !showOrHide);\n handleLabels[1].attr('invisible', !showOrHide);\n },\n _onDragMove: function (handleIndex, dx, dy, event) {\n this._dragging = true; // For mobile device, prevent screen slider on the button.\n\n eventTool.stop(event.event); // Transform dx, dy to bar coordination.\n\n var barTransform = this._displayables.barGroup.getLocalTransform();\n\n var vertex = graphic.applyTransform([dx, dy], barTransform, true);\n\n var changed = this._updateInterval(handleIndex, vertex[0]);\n\n var realtime = this.dataZoomModel.get('realtime');\n\n this._updateView(!realtime); // Avoid dispatch dataZoom repeatly but range not changed,\n // which cause bad visual effect when progressive enabled.\n\n\n changed && realtime && this._dispatchZoomAction();\n },\n _onDragEnd: function () {\n this._dragging = false;\n\n this._showDataInfo(false); // While in realtime mode and stream mode, dispatch action when\n // drag end will cause the whole view rerender, which is unnecessary.\n\n\n var realtime = this.dataZoomModel.get('realtime');\n !realtime && this._dispatchZoomAction();\n },\n _onClickPanelClick: function (e) {\n var size = this._size;\n\n var localPoint = this._displayables.barGroup.transformCoordToLocal(e.offsetX, e.offsetY);\n\n if (localPoint[0] < 0 || localPoint[0] > size[0] || localPoint[1] < 0 || localPoint[1] > size[1]) {\n return;\n }\n\n var handleEnds = this._handleEnds;\n var center = (handleEnds[0] + handleEnds[1]) / 2;\n\n var changed = this._updateInterval('all', localPoint[0] - center);\n\n this._updateView();\n\n changed && this._dispatchZoomAction();\n },\n\n /**\n * This action will be throttled.\n * @private\n */\n _dispatchZoomAction: function () {\n var range = this._range;\n this.api.dispatchAction({\n type: 'dataZoom',\n from: this.uid,\n dataZoomId: this.dataZoomModel.id,\n start: range[0],\n end: range[1]\n });\n },\n\n /**\n * @private\n */\n _findCoordRect: function () {\n // Find the grid coresponding to the first axis referred by dataZoom.\n var rect;\n each(this.getTargetCoordInfo(), function (coordInfoList) {\n if (!rect && coordInfoList.length) {\n var coordSys = coordInfoList[0].model.coordinateSystem;\n rect = coordSys.getRect && coordSys.getRect();\n }\n });\n\n if (!rect) {\n var width = this.api.getWidth();\n var height = this.api.getHeight();\n rect = {\n x: width * 0.2,\n y: height * 0.2,\n width: width * 0.6,\n height: height * 0.6\n };\n }\n\n return rect;\n }\n});\n\nfunction getOtherDim(thisDim) {\n // FIXME\n // 这个逻辑和getOtherAxis里一致,但是写在这里是否不好\n var map = {\n x: 'y',\n y: 'x',\n radius: 'angle',\n angle: 'radius'\n };\n return map[thisDim];\n}\n\nfunction getCursor(orient) {\n return orient === 'vertical' ? 'ns-resize' : 'ew-resize';\n}\n\nvar _default = SliderZoomView;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/dataZoom/SliderZoomView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/dataZoom/dataZoomAction.js": +/*!***********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/dataZoom/dataZoomAction.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar helper = __webpack_require__(/*! ./helper */ \"./node_modules/echarts/lib/component/dataZoom/helper.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerAction('dataZoom', function (payload, ecModel) {\n var linkedNodesFinder = helper.createLinkedNodesFinder(zrUtil.bind(ecModel.eachComponent, ecModel, 'dataZoom'), helper.eachAxisDim, function (model, dimNames) {\n return model.get(dimNames.axisIndex);\n });\n var effectedModels = [];\n ecModel.eachComponent({\n mainType: 'dataZoom',\n query: payload\n }, function (model, index) {\n effectedModels.push.apply(effectedModels, linkedNodesFinder(model).nodes);\n });\n zrUtil.each(effectedModels, function (dataZoomModel, index) {\n dataZoomModel.setRawRange({\n start: payload.start,\n end: payload.end,\n startValue: payload.startValue,\n endValue: payload.endValue\n });\n });\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/dataZoom/dataZoomAction.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/dataZoom/dataZoomProcessor.js": +/*!**************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/dataZoom/dataZoomProcessor.js ***! + \**************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerProcessor({\n // `dataZoomProcessor` will only be performed in needed series. Consider if\n // there is a line series and a pie series, it is better not to update the\n // line series if only pie series is needed to be updated.\n getTargetSeries: function (ecModel) {\n var seriesModelMap = createHashMap();\n ecModel.eachComponent('dataZoom', function (dataZoomModel) {\n dataZoomModel.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel) {\n var axisProxy = dataZoomModel.getAxisProxy(dimNames.name, axisIndex);\n each(axisProxy.getTargetSeriesModels(), function (seriesModel) {\n seriesModelMap.set(seriesModel.uid, seriesModel);\n });\n });\n });\n return seriesModelMap;\n },\n modifyOutputEnd: true,\n // Consider appendData, where filter should be performed. Because data process is\n // in block mode currently, it is not need to worry about that the overallProgress\n // execute every frame.\n overallReset: function (ecModel, api) {\n ecModel.eachComponent('dataZoom', function (dataZoomModel) {\n // We calculate window and reset axis here but not in model\n // init stage and not after action dispatch handler, because\n // reset should be called after seriesData.restoreData.\n dataZoomModel.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel) {\n dataZoomModel.getAxisProxy(dimNames.name, axisIndex).reset(dataZoomModel, api);\n }); // Caution: data zoom filtering is order sensitive when using\n // percent range and no min/max/scale set on axis.\n // For example, we have dataZoom definition:\n // [\n // {xAxisIndex: 0, start: 30, end: 70},\n // {yAxisIndex: 0, start: 20, end: 80}\n // ]\n // In this case, [20, 80] of y-dataZoom should be based on data\n // that have filtered by x-dataZoom using range of [30, 70],\n // but should not be based on full raw data. Thus sliding\n // x-dataZoom will change both ranges of xAxis and yAxis,\n // while sliding y-dataZoom will only change the range of yAxis.\n // So we should filter x-axis after reset x-axis immediately,\n // and then reset y-axis and filter y-axis.\n\n dataZoomModel.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel) {\n dataZoomModel.getAxisProxy(dimNames.name, axisIndex).filterData(dataZoomModel, api);\n });\n });\n ecModel.eachComponent('dataZoom', function (dataZoomModel) {\n // Fullfill all of the range props so that user\n // is able to get them from chart.getOption().\n var axisProxy = dataZoomModel.findRepresentativeAxisProxy();\n var percentRange = axisProxy.getDataPercentWindow();\n var valueRange = axisProxy.getDataValueWindow();\n dataZoomModel.setCalculatedRange({\n start: percentRange[0],\n end: percentRange[1],\n startValue: valueRange[0],\n endValue: valueRange[1]\n });\n });\n }\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/dataZoom/dataZoomProcessor.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/dataZoom/helper.js": +/*!***************************************************************!*\ + !*** ./node_modules/echarts/lib/component/dataZoom/helper.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar formatUtil = __webpack_require__(/*! ../../util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar AXIS_DIMS = ['x', 'y', 'z', 'radius', 'angle', 'single']; // Supported coords.\n\nvar COORDS = ['cartesian2d', 'polar', 'singleAxis'];\n/**\n * @param {string} coordType\n * @return {boolean}\n */\n\nfunction isCoordSupported(coordType) {\n return zrUtil.indexOf(COORDS, coordType) >= 0;\n}\n/**\n * Create \"each\" method to iterate names.\n *\n * @pubilc\n * @param {Array.} names\n * @param {Array.=} attrs\n * @return {Function}\n */\n\n\nfunction createNameEach(names, attrs) {\n names = names.slice();\n var capitalNames = zrUtil.map(names, formatUtil.capitalFirst);\n attrs = (attrs || []).slice();\n var capitalAttrs = zrUtil.map(attrs, formatUtil.capitalFirst);\n return function (callback, context) {\n zrUtil.each(names, function (name, index) {\n var nameObj = {\n name: name,\n capital: capitalNames[index]\n };\n\n for (var j = 0; j < attrs.length; j++) {\n nameObj[attrs[j]] = name + capitalAttrs[j];\n }\n\n callback.call(context, nameObj);\n });\n };\n}\n/**\n * Iterate each dimension name.\n *\n * @public\n * @param {Function} callback The parameter is like:\n * {\n * name: 'angle',\n * capital: 'Angle',\n * axis: 'angleAxis',\n * axisIndex: 'angleAixs',\n * index: 'angleIndex'\n * }\n * @param {Object} context\n */\n\n\nvar eachAxisDim = createNameEach(AXIS_DIMS, ['axisIndex', 'axis', 'index', 'id']);\n/**\n * If tow dataZoomModels has the same axis controlled, we say that they are 'linked'.\n * dataZoomModels and 'links' make up one or more graphics.\n * This function finds the graphic where the source dataZoomModel is in.\n *\n * @public\n * @param {Function} forEachNode Node iterator.\n * @param {Function} forEachEdgeType edgeType iterator\n * @param {Function} edgeIdGetter Giving node and edgeType, return an array of edge id.\n * @return {Function} Input: sourceNode, Output: Like {nodes: [], dims: {}}\n */\n\nfunction createLinkedNodesFinder(forEachNode, forEachEdgeType, edgeIdGetter) {\n return function (sourceNode) {\n var result = {\n nodes: [],\n records: {} // key: edgeType.name, value: Object (key: edge id, value: boolean).\n\n };\n forEachEdgeType(function (edgeType) {\n result.records[edgeType.name] = {};\n });\n\n if (!sourceNode) {\n return result;\n }\n\n absorb(sourceNode, result);\n var existsLink;\n\n do {\n existsLink = false;\n forEachNode(processSingleNode);\n } while (existsLink);\n\n function processSingleNode(node) {\n if (!isNodeAbsorded(node, result) && isLinked(node, result)) {\n absorb(node, result);\n existsLink = true;\n }\n }\n\n return result;\n };\n\n function isNodeAbsorded(node, result) {\n return zrUtil.indexOf(result.nodes, node) >= 0;\n }\n\n function isLinked(node, result) {\n var hasLink = false;\n forEachEdgeType(function (edgeType) {\n zrUtil.each(edgeIdGetter(node, edgeType) || [], function (edgeId) {\n result.records[edgeType.name][edgeId] && (hasLink = true);\n });\n });\n return hasLink;\n }\n\n function absorb(node, result) {\n result.nodes.push(node);\n forEachEdgeType(function (edgeType) {\n zrUtil.each(edgeIdGetter(node, edgeType) || [], function (edgeId) {\n result.records[edgeType.name][edgeId] = true;\n });\n });\n }\n}\n\nexports.isCoordSupported = isCoordSupported;\nexports.createNameEach = createNameEach;\nexports.eachAxisDim = eachAxisDim;\nexports.createLinkedNodesFinder = createLinkedNodesFinder;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/dataZoom/helper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/dataZoom/history.js": +/*!****************************************************************!*\ + !*** ./node_modules/echarts/lib/component/dataZoom/history.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar ATTR = '\\0_ec_hist_store';\n/**\n * @param {module:echarts/model/Global} ecModel\n * @param {Object} newSnapshot {dataZoomId, batch: [payloadInfo, ...]}\n */\n\nfunction push(ecModel, newSnapshot) {\n var store = giveStore(ecModel); // If previous dataZoom can not be found,\n // complete an range with current range.\n\n each(newSnapshot, function (batchItem, dataZoomId) {\n var i = store.length - 1;\n\n for (; i >= 0; i--) {\n var snapshot = store[i];\n\n if (snapshot[dataZoomId]) {\n break;\n }\n }\n\n if (i < 0) {\n // No origin range set, create one by current range.\n var dataZoomModel = ecModel.queryComponents({\n mainType: 'dataZoom',\n subType: 'select',\n id: dataZoomId\n })[0];\n\n if (dataZoomModel) {\n var percentRange = dataZoomModel.getPercentRange();\n store[0][dataZoomId] = {\n dataZoomId: dataZoomId,\n start: percentRange[0],\n end: percentRange[1]\n };\n }\n }\n });\n store.push(newSnapshot);\n}\n/**\n * @param {module:echarts/model/Global} ecModel\n * @return {Object} snapshot\n */\n\n\nfunction pop(ecModel) {\n var store = giveStore(ecModel);\n var head = store[store.length - 1];\n store.length > 1 && store.pop(); // Find top for all dataZoom.\n\n var snapshot = {};\n each(head, function (batchItem, dataZoomId) {\n for (var i = store.length - 1; i >= 0; i--) {\n var batchItem = store[i][dataZoomId];\n\n if (batchItem) {\n snapshot[dataZoomId] = batchItem;\n break;\n }\n }\n });\n return snapshot;\n}\n/**\n * @param {module:echarts/model/Global} ecModel\n */\n\n\nfunction clear(ecModel) {\n ecModel[ATTR] = null;\n}\n/**\n * @param {module:echarts/model/Global} ecModel\n * @return {number} records. always >= 1.\n */\n\n\nfunction count(ecModel) {\n return giveStore(ecModel).length;\n}\n/**\n * [{key: dataZoomId, value: {dataZoomId, range}}, ...]\n * History length of each dataZoom may be different.\n * this._history[0] is used to store origin range.\n * @type {Array.}\n */\n\n\nfunction giveStore(ecModel) {\n var store = ecModel[ATTR];\n\n if (!store) {\n store = ecModel[ATTR] = [{}];\n }\n\n return store;\n}\n\nexports.push = push;\nexports.pop = pop;\nexports.clear = clear;\nexports.count = count;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/dataZoom/history.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/dataZoom/roams.js": +/*!**************************************************************!*\ + !*** ./node_modules/echarts/lib/component/dataZoom/roams.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar RoamController = __webpack_require__(/*! ../../component/helper/RoamController */ \"./node_modules/echarts/lib/component/helper/RoamController.js\");\n\nvar throttleUtil = __webpack_require__(/*! ../../util/throttle */ \"./node_modules/echarts/lib/util/throttle.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Only create one roam controller for each coordinate system.\n// one roam controller might be refered by two inside data zoom\n// components (for example, one for x and one for y). When user\n// pan or zoom, only dispatch one action for those data zoom\n// components.\nvar ATTR = '\\0_ec_dataZoom_roams';\n/**\n * @public\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} dataZoomInfo\n * @param {string} dataZoomInfo.coordId\n * @param {Function} dataZoomInfo.containsPoint\n * @param {Array.} dataZoomInfo.allCoordIds\n * @param {string} dataZoomInfo.dataZoomId\n * @param {Object} dataZoomInfo.getRange\n * @param {Function} dataZoomInfo.getRange.pan\n * @param {Function} dataZoomInfo.getRange.zoom\n * @param {Function} dataZoomInfo.getRange.scrollMove\n * @param {boolean} dataZoomInfo.dataZoomModel\n */\n\nfunction register(api, dataZoomInfo) {\n var store = giveStore(api);\n var theDataZoomId = dataZoomInfo.dataZoomId;\n var theCoordId = dataZoomInfo.coordId; // Do clean when a dataZoom changes its target coordnate system.\n // Avoid memory leak, dispose all not-used-registered.\n\n zrUtil.each(store, function (record, coordId) {\n var dataZoomInfos = record.dataZoomInfos;\n\n if (dataZoomInfos[theDataZoomId] && zrUtil.indexOf(dataZoomInfo.allCoordIds, theCoordId) < 0) {\n delete dataZoomInfos[theDataZoomId];\n record.count--;\n }\n });\n cleanStore(store);\n var record = store[theCoordId]; // Create if needed.\n\n if (!record) {\n record = store[theCoordId] = {\n coordId: theCoordId,\n dataZoomInfos: {},\n count: 0\n };\n record.controller = createController(api, record);\n record.dispatchAction = zrUtil.curry(dispatchAction, api);\n } // Update reference of dataZoom.\n\n\n !record.dataZoomInfos[theDataZoomId] && record.count++;\n record.dataZoomInfos[theDataZoomId] = dataZoomInfo;\n var controllerParams = mergeControllerParams(record.dataZoomInfos);\n record.controller.enable(controllerParams.controlType, controllerParams.opt); // Consider resize, area should be always updated.\n\n record.controller.setPointerChecker(dataZoomInfo.containsPoint); // Update throttle.\n\n throttleUtil.createOrUpdate(record, 'dispatchAction', dataZoomInfo.dataZoomModel.get('throttle', true), 'fixRate');\n}\n/**\n * @public\n * @param {module:echarts/ExtensionAPI} api\n * @param {string} dataZoomId\n */\n\n\nfunction unregister(api, dataZoomId) {\n var store = giveStore(api);\n zrUtil.each(store, function (record) {\n record.controller.dispose();\n var dataZoomInfos = record.dataZoomInfos;\n\n if (dataZoomInfos[dataZoomId]) {\n delete dataZoomInfos[dataZoomId];\n record.count--;\n }\n });\n cleanStore(store);\n}\n/**\n * @public\n */\n\n\nfunction generateCoordId(coordModel) {\n return coordModel.type + '\\0_' + coordModel.id;\n}\n/**\n * Key: coordId, value: {dataZoomInfos: [], count, controller}\n * @type {Array.}\n */\n\n\nfunction giveStore(api) {\n // Mount store on zrender instance, so that we do not\n // need to worry about dispose.\n var zr = api.getZr();\n return zr[ATTR] || (zr[ATTR] = {});\n}\n\nfunction createController(api, newRecord) {\n var controller = new RoamController(api.getZr());\n zrUtil.each(['pan', 'zoom', 'scrollMove'], function (eventName) {\n controller.on(eventName, function (event) {\n var batch = [];\n zrUtil.each(newRecord.dataZoomInfos, function (info) {\n // Check whether the behaviors (zoomOnMouseWheel, moveOnMouseMove,\n // moveOnMouseWheel, ...) enabled.\n if (!event.isAvailableBehavior(info.dataZoomModel.option)) {\n return;\n }\n\n var method = (info.getRange || {})[eventName];\n var range = method && method(newRecord.controller, event);\n !info.dataZoomModel.get('disabled', true) && range && batch.push({\n dataZoomId: info.dataZoomId,\n start: range[0],\n end: range[1]\n });\n });\n batch.length && newRecord.dispatchAction(batch);\n });\n });\n return controller;\n}\n\nfunction cleanStore(store) {\n zrUtil.each(store, function (record, coordId) {\n if (!record.count) {\n record.controller.dispose();\n delete store[coordId];\n }\n });\n}\n/**\n * This action will be throttled.\n */\n\n\nfunction dispatchAction(api, batch) {\n api.dispatchAction({\n type: 'dataZoom',\n batch: batch\n });\n}\n/**\n * Merge roamController settings when multiple dataZooms share one roamController.\n */\n\n\nfunction mergeControllerParams(dataZoomInfos) {\n var controlType; // DO NOT use reserved word (true, false, undefined) as key literally. Even if encapsulated\n // as string, it is probably revert to reserved word by compress tool. See #7411.\n\n var prefix = 'type_';\n var typePriority = {\n 'type_true': 2,\n 'type_move': 1,\n 'type_false': 0,\n 'type_undefined': -1\n };\n var preventDefaultMouseMove = true;\n zrUtil.each(dataZoomInfos, function (dataZoomInfo) {\n var dataZoomModel = dataZoomInfo.dataZoomModel;\n var oneType = dataZoomModel.get('disabled', true) ? false : dataZoomModel.get('zoomLock', true) ? 'move' : true;\n\n if (typePriority[prefix + oneType] > typePriority[prefix + controlType]) {\n controlType = oneType;\n } // Prevent default move event by default. If one false, do not prevent. Otherwise\n // users may be confused why it does not work when multiple insideZooms exist.\n\n\n preventDefaultMouseMove &= dataZoomModel.get('preventDefaultMouseMove', true);\n });\n return {\n controlType: controlType,\n opt: {\n // RoamController will enable all of these functionalities,\n // and the final behavior is determined by its event listener\n // provided by each inside zoom.\n zoomOnMouseWheel: true,\n moveOnMouseMove: true,\n moveOnMouseWheel: true,\n preventDefaultMouseMove: !!preventDefaultMouseMove\n }\n };\n}\n\nexports.register = register;\nexports.unregister = unregister;\nexports.generateCoordId = generateCoordId;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/dataZoom/roams.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/dataZoom/typeDefaulter.js": +/*!**********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/dataZoom/typeDefaulter.js ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Component = __webpack_require__(/*! ../../model/Component */ \"./node_modules/echarts/lib/model/Component.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nComponent.registerSubTypeDefaulter('dataZoom', function () {\n // Default 'slider' when no type specified.\n return 'slider';\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/dataZoom/typeDefaulter.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/dataZoomInside.js": +/*!**************************************************************!*\ + !*** ./node_modules/echarts/lib/component/dataZoomInside.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(/*! ./dataZoom/typeDefaulter */ \"./node_modules/echarts/lib/component/dataZoom/typeDefaulter.js\");\n\n__webpack_require__(/*! ./dataZoom/DataZoomModel */ \"./node_modules/echarts/lib/component/dataZoom/DataZoomModel.js\");\n\n__webpack_require__(/*! ./dataZoom/DataZoomView */ \"./node_modules/echarts/lib/component/dataZoom/DataZoomView.js\");\n\n__webpack_require__(/*! ./dataZoom/InsideZoomModel */ \"./node_modules/echarts/lib/component/dataZoom/InsideZoomModel.js\");\n\n__webpack_require__(/*! ./dataZoom/InsideZoomView */ \"./node_modules/echarts/lib/component/dataZoom/InsideZoomView.js\");\n\n__webpack_require__(/*! ./dataZoom/dataZoomProcessor */ \"./node_modules/echarts/lib/component/dataZoom/dataZoomProcessor.js\");\n\n__webpack_require__(/*! ./dataZoom/dataZoomAction */ \"./node_modules/echarts/lib/component/dataZoom/dataZoomAction.js\");\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/dataZoomInside.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/dataZoomSelect.js": +/*!**************************************************************!*\ + !*** ./node_modules/echarts/lib/component/dataZoomSelect.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(/*! ./dataZoom/typeDefaulter */ \"./node_modules/echarts/lib/component/dataZoom/typeDefaulter.js\");\n\n__webpack_require__(/*! ./dataZoom/DataZoomModel */ \"./node_modules/echarts/lib/component/dataZoom/DataZoomModel.js\");\n\n__webpack_require__(/*! ./dataZoom/DataZoomView */ \"./node_modules/echarts/lib/component/dataZoom/DataZoomView.js\");\n\n__webpack_require__(/*! ./dataZoom/SelectZoomModel */ \"./node_modules/echarts/lib/component/dataZoom/SelectZoomModel.js\");\n\n__webpack_require__(/*! ./dataZoom/SelectZoomView */ \"./node_modules/echarts/lib/component/dataZoom/SelectZoomView.js\");\n\n__webpack_require__(/*! ./dataZoom/dataZoomProcessor */ \"./node_modules/echarts/lib/component/dataZoom/dataZoomProcessor.js\");\n\n__webpack_require__(/*! ./dataZoom/dataZoomAction */ \"./node_modules/echarts/lib/component/dataZoom/dataZoomAction.js\");\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/dataZoomSelect.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/dataZoomSlider.js": +/*!**************************************************************!*\ + !*** ./node_modules/echarts/lib/component/dataZoomSlider.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(/*! ./dataZoom/typeDefaulter */ \"./node_modules/echarts/lib/component/dataZoom/typeDefaulter.js\");\n\n__webpack_require__(/*! ./dataZoom/DataZoomModel */ \"./node_modules/echarts/lib/component/dataZoom/DataZoomModel.js\");\n\n__webpack_require__(/*! ./dataZoom/DataZoomView */ \"./node_modules/echarts/lib/component/dataZoom/DataZoomView.js\");\n\n__webpack_require__(/*! ./dataZoom/SliderZoomModel */ \"./node_modules/echarts/lib/component/dataZoom/SliderZoomModel.js\");\n\n__webpack_require__(/*! ./dataZoom/SliderZoomView */ \"./node_modules/echarts/lib/component/dataZoom/SliderZoomView.js\");\n\n__webpack_require__(/*! ./dataZoom/dataZoomProcessor */ \"./node_modules/echarts/lib/component/dataZoom/dataZoomProcessor.js\");\n\n__webpack_require__(/*! ./dataZoom/dataZoomAction */ \"./node_modules/echarts/lib/component/dataZoom/dataZoomAction.js\");\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/dataZoomSlider.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/dataset.js": +/*!*******************************************************!*\ + !*** ./node_modules/echarts/lib/component/dataset.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar ComponentModel = __webpack_require__(/*! ../model/Component */ \"./node_modules/echarts/lib/model/Component.js\");\n\nvar ComponentView = __webpack_require__(/*! ../view/Component */ \"./node_modules/echarts/lib/view/Component.js\");\n\nvar _sourceHelper = __webpack_require__(/*! ../data/helper/sourceHelper */ \"./node_modules/echarts/lib/data/helper/sourceHelper.js\");\n\nvar detectSourceFormat = _sourceHelper.detectSourceFormat;\n\nvar _sourceType = __webpack_require__(/*! ../data/helper/sourceType */ \"./node_modules/echarts/lib/data/helper/sourceType.js\");\n\nvar SERIES_LAYOUT_BY_COLUMN = _sourceType.SERIES_LAYOUT_BY_COLUMN;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * This module is imported by echarts directly.\n *\n * Notice:\n * Always keep this file exists for backward compatibility.\n * Because before 4.1.0, dataset is an optional component,\n * some users may import this module manually.\n */\nComponentModel.extend({\n type: 'dataset',\n\n /**\n * @protected\n */\n defaultOption: {\n // 'row', 'column'\n seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN,\n // null/'auto': auto detect header, see \"module:echarts/data/helper/sourceHelper\"\n sourceHeader: null,\n dimensions: null,\n source: null\n },\n optionUpdated: function () {\n detectSourceFormat(this);\n }\n});\nComponentView.extend({\n type: 'dataset'\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/dataset.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/geo.js": +/*!***************************************************!*\ + !*** ./node_modules/echarts/lib/component/geo.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n__webpack_require__(/*! ../coord/geo/GeoModel */ \"./node_modules/echarts/lib/coord/geo/GeoModel.js\");\n\n__webpack_require__(/*! ../coord/geo/geoCreator */ \"./node_modules/echarts/lib/coord/geo/geoCreator.js\");\n\n__webpack_require__(/*! ./geo/GeoView */ \"./node_modules/echarts/lib/component/geo/GeoView.js\");\n\n__webpack_require__(/*! ../action/geoRoam */ \"./node_modules/echarts/lib/action/geoRoam.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction makeAction(method, actionInfo) {\n actionInfo.update = 'updateView';\n echarts.registerAction(actionInfo, function (payload, ecModel) {\n var selected = {};\n ecModel.eachComponent({\n mainType: 'geo',\n query: payload\n }, function (geoModel) {\n geoModel[method](payload.name);\n var geo = geoModel.coordinateSystem;\n zrUtil.each(geo.regions, function (region) {\n selected[region.name] = geoModel.isSelected(region.name) || false;\n });\n });\n return {\n selected: selected,\n name: payload.name\n };\n });\n}\n\nmakeAction('toggleSelected', {\n type: 'geoToggleSelect',\n event: 'geoselectchanged'\n});\nmakeAction('select', {\n type: 'geoSelect',\n event: 'geoselected'\n});\nmakeAction('unSelect', {\n type: 'geoUnSelect',\n event: 'geounselected'\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/geo.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/geo/GeoView.js": +/*!***********************************************************!*\ + !*** ./node_modules/echarts/lib/component/geo/GeoView.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar MapDraw = __webpack_require__(/*! ../helper/MapDraw */ \"./node_modules/echarts/lib/component/helper/MapDraw.js\");\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendComponentView({\n type: 'geo',\n init: function (ecModel, api) {\n var mapDraw = new MapDraw(api, true);\n this._mapDraw = mapDraw;\n this.group.add(mapDraw.group);\n },\n render: function (geoModel, ecModel, api, payload) {\n // Not render if it is an toggleSelect action from self\n if (payload && payload.type === 'geoToggleSelect' && payload.from === this.uid) {\n return;\n }\n\n var mapDraw = this._mapDraw;\n\n if (geoModel.get('show')) {\n mapDraw.draw(geoModel, ecModel, api, this, payload);\n } else {\n this._mapDraw.group.removeAll();\n }\n\n this.group.silent = geoModel.get('silent');\n },\n dispose: function () {\n this._mapDraw && this._mapDraw.remove();\n }\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/geo/GeoView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/graphic.js": +/*!*******************************************************!*\ + !*** ./node_modules/echarts/lib/component/graphic.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar modelUtil = __webpack_require__(/*! ../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar graphicUtil = __webpack_require__(/*! ../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar layoutUtil = __webpack_require__(/*! ../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar _number = __webpack_require__(/*! ../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar parsePercent = _number.parsePercent;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _nonShapeGraphicElements = {\n // Reserved but not supported in graphic component.\n path: null,\n compoundPath: null,\n // Supported in graphic component.\n group: graphicUtil.Group,\n image: graphicUtil.Image,\n text: graphicUtil.Text\n}; // -------------\n// Preprocessor\n// -------------\n\necharts.registerPreprocessor(function (option) {\n var graphicOption = option.graphic; // Convert\n // {graphic: [{left: 10, type: 'circle'}, ...]}\n // or\n // {graphic: {left: 10, type: 'circle'}}\n // to\n // {graphic: [{elements: [{left: 10, type: 'circle'}, ...]}]}\n\n if (zrUtil.isArray(graphicOption)) {\n if (!graphicOption[0] || !graphicOption[0].elements) {\n option.graphic = [{\n elements: graphicOption\n }];\n } else {\n // Only one graphic instance can be instantiated. (We dont\n // want that too many views are created in echarts._viewMap)\n option.graphic = [option.graphic[0]];\n }\n } else if (graphicOption && !graphicOption.elements) {\n option.graphic = [{\n elements: [graphicOption]\n }];\n }\n}); // ------\n// Model\n// ------\n\nvar GraphicModel = echarts.extendComponentModel({\n type: 'graphic',\n defaultOption: {\n // Extra properties for each elements:\n //\n // left/right/top/bottom: (like 12, '22%', 'center', default undefined)\n // If left/rigth is set, shape.x/shape.cx/position will not be used.\n // If top/bottom is set, shape.y/shape.cy/position will not be used.\n // This mechanism is useful when you want to position a group/element\n // against the right side or the center of this container.\n //\n // width/height: (can only be pixel value, default 0)\n // Only be used to specify contianer(group) size, if needed. And\n // can not be percentage value (like '33%'). See the reason in the\n // layout algorithm below.\n //\n // bounding: (enum: 'all' (default) | 'raw')\n // Specify how to calculate boundingRect when locating.\n // 'all': Get uioned and transformed boundingRect\n // from both itself and its descendants.\n // This mode simplies confining a group of elements in the bounding\n // of their ancester container (e.g., using 'right: 0').\n // 'raw': Only use the boundingRect of itself and before transformed.\n // This mode is similar to css behavior, which is useful when you\n // want an element to be able to overflow its container. (Consider\n // a rotated circle needs to be located in a corner.)\n // info: custom info. enables user to mount some info on elements and use them\n // in event handlers. Update them only when user specified, otherwise, remain.\n // Note: elements is always behind its ancestors in this elements array.\n elements: [],\n parentId: null\n },\n\n /**\n * Save el options for the sake of the performance (only update modified graphics).\n * The order is the same as those in option. (ancesters -> descendants)\n *\n * @private\n * @type {Array.}\n */\n _elOptionsToUpdate: null,\n\n /**\n * @override\n */\n mergeOption: function (option) {\n // Prevent default merge to elements\n var elements = this.option.elements;\n this.option.elements = null;\n GraphicModel.superApply(this, 'mergeOption', arguments);\n this.option.elements = elements;\n },\n\n /**\n * @override\n */\n optionUpdated: function (newOption, isInit) {\n var thisOption = this.option;\n var newList = (isInit ? thisOption : newOption).elements;\n var existList = thisOption.elements = isInit ? [] : thisOption.elements;\n var flattenedList = [];\n\n this._flatten(newList, flattenedList);\n\n var mappingResult = modelUtil.mappingToExists(existList, flattenedList);\n modelUtil.makeIdAndName(mappingResult); // Clear elOptionsToUpdate\n\n var elOptionsToUpdate = this._elOptionsToUpdate = [];\n zrUtil.each(mappingResult, function (resultItem, index) {\n var newElOption = resultItem.option;\n\n if (!newElOption) {\n return;\n }\n\n elOptionsToUpdate.push(newElOption);\n setKeyInfoToNewElOption(resultItem, newElOption);\n mergeNewElOptionToExist(existList, index, newElOption);\n setLayoutInfoToExist(existList[index], newElOption);\n }, this); // Clean\n\n for (var i = existList.length - 1; i >= 0; i--) {\n if (existList[i] == null) {\n existList.splice(i, 1);\n } else {\n // $action should be volatile, otherwise option gotten from\n // `getOption` will contain unexpected $action.\n delete existList[i].$action;\n }\n }\n },\n\n /**\n * Convert\n * [{\n * type: 'group',\n * id: 'xx',\n * children: [{type: 'circle'}, {type: 'polygon'}]\n * }]\n * to\n * [\n * {type: 'group', id: 'xx'},\n * {type: 'circle', parentId: 'xx'},\n * {type: 'polygon', parentId: 'xx'}\n * ]\n *\n * @private\n * @param {Array.} optionList option list\n * @param {Array.} result result of flatten\n * @param {Object} parentOption parent option\n */\n _flatten: function (optionList, result, parentOption) {\n zrUtil.each(optionList, function (option) {\n if (!option) {\n return;\n }\n\n if (parentOption) {\n option.parentOption = parentOption;\n }\n\n result.push(option);\n var children = option.children;\n\n if (option.type === 'group' && children) {\n this._flatten(children, result, option);\n } // Deleting for JSON output, and for not affecting group creation.\n\n\n delete option.children;\n }, this);\n },\n // FIXME\n // Pass to view using payload? setOption has a payload?\n useElOptionsToUpdate: function () {\n var els = this._elOptionsToUpdate; // Clear to avoid render duplicately when zooming.\n\n this._elOptionsToUpdate = null;\n return els;\n }\n}); // -----\n// View\n// -----\n\necharts.extendComponentView({\n type: 'graphic',\n\n /**\n * @override\n */\n init: function (ecModel, api) {\n /**\n * @private\n * @type {module:zrender/core/util.HashMap}\n */\n this._elMap = zrUtil.createHashMap();\n /**\n * @private\n * @type {module:echarts/graphic/GraphicModel}\n */\n\n this._lastGraphicModel;\n },\n\n /**\n * @override\n */\n render: function (graphicModel, ecModel, api) {\n // Having leveraged between use cases and algorithm complexity, a very\n // simple layout mechanism is used:\n // The size(width/height) can be determined by itself or its parent (not\n // implemented yet), but can not by its children. (Top-down travel)\n // The location(x/y) can be determined by the bounding rect of itself\n // (can including its descendants or not) and the size of its parent.\n // (Bottom-up travel)\n // When `chart.clear()` or `chart.setOption({...}, true)` with the same id,\n // view will be reused.\n if (graphicModel !== this._lastGraphicModel) {\n this._clear();\n }\n\n this._lastGraphicModel = graphicModel;\n\n this._updateElements(graphicModel);\n\n this._relocate(graphicModel, api);\n },\n\n /**\n * Update graphic elements.\n *\n * @private\n * @param {Object} graphicModel graphic model\n */\n _updateElements: function (graphicModel) {\n var elOptionsToUpdate = graphicModel.useElOptionsToUpdate();\n\n if (!elOptionsToUpdate) {\n return;\n }\n\n var elMap = this._elMap;\n var rootGroup = this.group; // Top-down tranverse to assign graphic settings to each elements.\n\n zrUtil.each(elOptionsToUpdate, function (elOption) {\n var $action = elOption.$action;\n var id = elOption.id;\n var existEl = elMap.get(id);\n var parentId = elOption.parentId;\n var targetElParent = parentId != null ? elMap.get(parentId) : rootGroup;\n var elOptionStyle = elOption.style;\n\n if (elOption.type === 'text' && elOptionStyle) {\n // In top/bottom mode, textVerticalAlign should not be used, which cause\n // inaccurately locating.\n if (elOption.hv && elOption.hv[1]) {\n elOptionStyle.textVerticalAlign = elOptionStyle.textBaseline = null;\n } // Compatible with previous setting: both support fill and textFill,\n // stroke and textStroke.\n\n\n !elOptionStyle.hasOwnProperty('textFill') && elOptionStyle.fill && (elOptionStyle.textFill = elOptionStyle.fill);\n !elOptionStyle.hasOwnProperty('textStroke') && elOptionStyle.stroke && (elOptionStyle.textStroke = elOptionStyle.stroke);\n } // Remove unnecessary props to avoid potential problems.\n\n\n var elOptionCleaned = getCleanedElOption(elOption); // For simple, do not support parent change, otherwise reorder is needed.\n\n if (!$action || $action === 'merge') {\n existEl ? existEl.attr(elOptionCleaned) : createEl(id, targetElParent, elOptionCleaned, elMap);\n } else if ($action === 'replace') {\n removeEl(existEl, elMap);\n createEl(id, targetElParent, elOptionCleaned, elMap);\n } else if ($action === 'remove') {\n removeEl(existEl, elMap);\n }\n\n var el = elMap.get(id);\n\n if (el) {\n el.__ecGraphicWidthOption = elOption.width;\n el.__ecGraphicHeightOption = elOption.height;\n setEventData(el, graphicModel, elOption);\n }\n });\n },\n\n /**\n * Locate graphic elements.\n *\n * @private\n * @param {Object} graphicModel graphic model\n * @param {module:echarts/ExtensionAPI} api extension API\n */\n _relocate: function (graphicModel, api) {\n var elOptions = graphicModel.option.elements;\n var rootGroup = this.group;\n var elMap = this._elMap;\n var apiWidth = api.getWidth();\n var apiHeight = api.getHeight(); // Top-down to calculate percentage width/height of group\n\n for (var i = 0; i < elOptions.length; i++) {\n var elOption = elOptions[i];\n var el = elMap.get(elOption.id);\n\n if (!el || !el.isGroup) {\n continue;\n }\n\n var parentEl = el.parent;\n var isParentRoot = parentEl === rootGroup; // Like 'position:absolut' in css, default 0.\n\n el.__ecGraphicWidth = parsePercent(el.__ecGraphicWidthOption, isParentRoot ? apiWidth : parentEl.__ecGraphicWidth) || 0;\n el.__ecGraphicHeight = parsePercent(el.__ecGraphicHeightOption, isParentRoot ? apiHeight : parentEl.__ecGraphicHeight) || 0;\n } // Bottom-up tranvese all elements (consider ec resize) to locate elements.\n\n\n for (var i = elOptions.length - 1; i >= 0; i--) {\n var elOption = elOptions[i];\n var el = elMap.get(elOption.id);\n\n if (!el) {\n continue;\n }\n\n var parentEl = el.parent;\n var containerInfo = parentEl === rootGroup ? {\n width: apiWidth,\n height: apiHeight\n } : {\n width: parentEl.__ecGraphicWidth,\n height: parentEl.__ecGraphicHeight\n }; // PENDING\n // Currently, when `bounding: 'all'`, the union bounding rect of the group\n // does not include the rect of [0, 0, group.width, group.height], which\n // is probably weird for users. Should we make a break change for it?\n\n layoutUtil.positionElement(el, elOption, containerInfo, null, {\n hv: elOption.hv,\n boundingMode: elOption.bounding\n });\n }\n },\n\n /**\n * Clear all elements.\n *\n * @private\n */\n _clear: function () {\n var elMap = this._elMap;\n elMap.each(function (el) {\n removeEl(el, elMap);\n });\n this._elMap = zrUtil.createHashMap();\n },\n\n /**\n * @override\n */\n dispose: function () {\n this._clear();\n }\n});\n\nfunction createEl(id, targetElParent, elOption, elMap) {\n var graphicType = elOption.type;\n var Clz = _nonShapeGraphicElements.hasOwnProperty(graphicType) // Those graphic elements are not shapes. They should not be\n // overwritten by users, so do them first.\n ? _nonShapeGraphicElements[graphicType] : graphicUtil.getShapeClass(graphicType);\n var el = new Clz(elOption);\n targetElParent.add(el);\n elMap.set(id, el);\n el.__ecGraphicId = id;\n}\n\nfunction removeEl(existEl, elMap) {\n var existElParent = existEl && existEl.parent;\n\n if (existElParent) {\n existEl.type === 'group' && existEl.traverse(function (el) {\n removeEl(el, elMap);\n });\n elMap.removeKey(existEl.__ecGraphicId);\n existElParent.remove(existEl);\n }\n} // Remove unnecessary props to avoid potential problems.\n\n\nfunction getCleanedElOption(elOption) {\n elOption = zrUtil.extend({}, elOption);\n zrUtil.each(['id', 'parentId', '$action', 'hv', 'bounding'].concat(layoutUtil.LOCATION_PARAMS), function (name) {\n delete elOption[name];\n });\n return elOption;\n}\n\nfunction isSetLoc(obj, props) {\n var isSet;\n zrUtil.each(props, function (prop) {\n obj[prop] != null && obj[prop] !== 'auto' && (isSet = true);\n });\n return isSet;\n}\n\nfunction setKeyInfoToNewElOption(resultItem, newElOption) {\n var existElOption = resultItem.exist; // Set id and type after id assigned.\n\n newElOption.id = resultItem.keyInfo.id;\n !newElOption.type && existElOption && (newElOption.type = existElOption.type); // Set parent id if not specified\n\n if (newElOption.parentId == null) {\n var newElParentOption = newElOption.parentOption;\n\n if (newElParentOption) {\n newElOption.parentId = newElParentOption.id;\n } else if (existElOption) {\n newElOption.parentId = existElOption.parentId;\n }\n } // Clear\n\n\n newElOption.parentOption = null;\n}\n\nfunction mergeNewElOptionToExist(existList, index, newElOption) {\n // Update existing options, for `getOption` feature.\n var newElOptCopy = zrUtil.extend({}, newElOption);\n var existElOption = existList[index];\n var $action = newElOption.$action || 'merge';\n\n if ($action === 'merge') {\n if (existElOption) {\n // We can ensure that newElOptCopy and existElOption are not\n // the same object, so `merge` will not change newElOptCopy.\n zrUtil.merge(existElOption, newElOptCopy, true); // Rigid body, use ignoreSize.\n\n layoutUtil.mergeLayoutParam(existElOption, newElOptCopy, {\n ignoreSize: true\n }); // Will be used in render.\n\n layoutUtil.copyLayoutParams(newElOption, existElOption);\n } else {\n existList[index] = newElOptCopy;\n }\n } else if ($action === 'replace') {\n existList[index] = newElOptCopy;\n } else if ($action === 'remove') {\n // null will be cleaned later.\n existElOption && (existList[index] = null);\n }\n}\n\nfunction setLayoutInfoToExist(existItem, newElOption) {\n if (!existItem) {\n return;\n }\n\n existItem.hv = newElOption.hv = [// Rigid body, dont care `width`.\n isSetLoc(newElOption, ['left', 'right']), // Rigid body, dont care `height`.\n isSetLoc(newElOption, ['top', 'bottom'])]; // Give default group size. Otherwise layout error may occur.\n\n if (existItem.type === 'group') {\n existItem.width == null && (existItem.width = newElOption.width = 0);\n existItem.height == null && (existItem.height = newElOption.height = 0);\n }\n}\n\nfunction setEventData(el, graphicModel, elOption) {\n var eventData = el.eventData; // Simple optimize for large amount of elements that no need event.\n\n if (!el.silent && !el.ignore && !eventData) {\n eventData = el.eventData = {\n componentType: 'graphic',\n componentIndex: graphicModel.componentIndex,\n name: el.name\n };\n } // `elOption.info` enables user to mount some info on\n // elements and use them in event handlers.\n\n\n if (eventData) {\n eventData.info = el.info;\n }\n}\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/graphic.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/grid.js": +/*!****************************************************!*\ + !*** ./node_modules/echarts/lib/component/grid.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(/*! ./gridSimple */ \"./node_modules/echarts/lib/component/gridSimple.js\");\n\n__webpack_require__(/*! ./axisPointer/CartesianAxisPointer */ \"./node_modules/echarts/lib/component/axisPointer/CartesianAxisPointer.js\");\n\n__webpack_require__(/*! ./axisPointer */ \"./node_modules/echarts/lib/component/axisPointer.js\");\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/grid.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/gridSimple.js": +/*!**********************************************************!*\ + !*** ./node_modules/echarts/lib/component/gridSimple.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar graphic = __webpack_require__(/*! ../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\n__webpack_require__(/*! ../coord/cartesian/Grid */ \"./node_modules/echarts/lib/coord/cartesian/Grid.js\");\n\n__webpack_require__(/*! ./axis */ \"./node_modules/echarts/lib/component/axis.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Grid view\necharts.extendComponentView({\n type: 'grid',\n render: function (gridModel, ecModel) {\n this.group.removeAll();\n\n if (gridModel.get('show')) {\n this.group.add(new graphic.Rect({\n shape: gridModel.coordinateSystem.getRect(),\n style: zrUtil.defaults({\n fill: gridModel.get('backgroundColor')\n }, gridModel.getItemStyle()),\n silent: true,\n z2: -1\n }));\n }\n }\n});\necharts.registerPreprocessor(function (option) {\n // Only create grid when need\n if (option.xAxis && option.yAxis && !option.grid) {\n option.grid = {};\n }\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/gridSimple.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/helper/BrushController.js": +/*!**********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/helper/BrushController.js ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar Eventful = __webpack_require__(/*! zrender/lib/mixin/Eventful */ \"./node_modules/zrender/lib/mixin/Eventful.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar interactionMutex = __webpack_require__(/*! ./interactionMutex */ \"./node_modules/echarts/lib/component/helper/interactionMutex.js\");\n\nvar DataDiffer = __webpack_require__(/*! ../../data/DataDiffer */ \"./node_modules/echarts/lib/data/DataDiffer.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar curry = zrUtil.curry;\nvar each = zrUtil.each;\nvar map = zrUtil.map;\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathPow = Math.pow;\nvar COVER_Z = 10000;\nvar UNSELECT_THRESHOLD = 6;\nvar MIN_RESIZE_LINE_WIDTH = 6;\nvar MUTEX_RESOURCE_KEY = 'globalPan';\nvar DIRECTION_MAP = {\n w: [0, 0],\n e: [0, 1],\n n: [1, 0],\n s: [1, 1]\n};\nvar CURSOR_MAP = {\n w: 'ew',\n e: 'ew',\n n: 'ns',\n s: 'ns',\n ne: 'nesw',\n sw: 'nesw',\n nw: 'nwse',\n se: 'nwse'\n};\nvar DEFAULT_BRUSH_OPT = {\n brushStyle: {\n lineWidth: 2,\n stroke: 'rgba(0,0,0,0.3)',\n fill: 'rgba(0,0,0,0.1)'\n },\n transformable: true,\n brushMode: 'single',\n removeOnClick: false\n};\nvar baseUID = 0;\n/**\n * @alias module:echarts/component/helper/BrushController\n * @constructor\n * @mixin {module:zrender/mixin/Eventful}\n * @event module:echarts/component/helper/BrushController#brush\n * params:\n * areas: Array., coord relates to container group,\n * If no container specified, to global.\n * opt {\n * isEnd: boolean,\n * removeOnClick: boolean\n * }\n *\n * @param {module:zrender/zrender~ZRender} zr\n */\n\nfunction BrushController(zr) {\n Eventful.call(this);\n /**\n * @type {module:zrender/zrender~ZRender}\n * @private\n */\n\n this._zr = zr;\n /**\n * @type {module:zrender/container/Group}\n * @readOnly\n */\n\n this.group = new graphic.Group();\n /**\n * Only for drawing (after enabledBrush).\n * 'line', 'rect', 'polygon' or false\n * If passing false/null/undefined, disable brush.\n * If passing 'auto', determined by panel.defaultBrushType\n * @private\n * @type {string}\n */\n\n this._brushType;\n /**\n * Only for drawing (after enabledBrush).\n *\n * @private\n * @type {Object}\n */\n\n this._brushOption;\n /**\n * @private\n * @type {Object}\n */\n\n this._panels;\n /**\n * @private\n * @type {Array.}\n */\n\n this._track = [];\n /**\n * @private\n * @type {boolean}\n */\n\n this._dragging;\n /**\n * @private\n * @type {Array}\n */\n\n this._covers = [];\n /**\n * @private\n * @type {moudule:zrender/container/Group}\n */\n\n this._creatingCover;\n /**\n * `true` means global panel\n * @private\n * @type {module:zrender/container/Group|boolean}\n */\n\n this._creatingPanel;\n /**\n * @private\n * @type {boolean}\n */\n\n this._enableGlobalPan;\n /**\n * @private\n * @type {boolean}\n */\n\n /**\n * @private\n * @type {string}\n */\n this._uid = 'brushController_' + baseUID++;\n /**\n * @private\n * @type {Object}\n */\n\n this._handlers = {};\n each(pointerHandlers, function (handler, eventName) {\n this._handlers[eventName] = zrUtil.bind(handler, this);\n }, this);\n}\n\nBrushController.prototype = {\n constructor: BrushController,\n\n /**\n * If set to null/undefined/false, select disabled.\n * @param {Object} brushOption\n * @param {string|boolean} brushOption.brushType 'line', 'rect', 'polygon' or false\n * If passing false/null/undefined, disable brush.\n * If passing 'auto', determined by panel.defaultBrushType.\n * ('auto' can not be used in global panel)\n * @param {number} [brushOption.brushMode='single'] 'single' or 'multiple'\n * @param {boolean} [brushOption.transformable=true]\n * @param {boolean} [brushOption.removeOnClick=false]\n * @param {Object} [brushOption.brushStyle]\n * @param {number} [brushOption.brushStyle.width]\n * @param {number} [brushOption.brushStyle.lineWidth]\n * @param {string} [brushOption.brushStyle.stroke]\n * @param {string} [brushOption.brushStyle.fill]\n * @param {number} [brushOption.z]\n */\n enableBrush: function (brushOption) {\n this._brushType && doDisableBrush(this);\n brushOption.brushType && doEnableBrush(this, brushOption);\n return this;\n },\n\n /**\n * @param {Array.} panelOpts If not pass, it is global brush.\n * Each items: {\n * panelId, // mandatory.\n * clipPath, // mandatory. function.\n * isTargetByCursor, // mandatory. function.\n * defaultBrushType, // optional, only used when brushType is 'auto'.\n * getLinearBrushOtherExtent, // optional. function.\n * }\n */\n setPanels: function (panelOpts) {\n if (panelOpts && panelOpts.length) {\n var panels = this._panels = {};\n zrUtil.each(panelOpts, function (panelOpts) {\n panels[panelOpts.panelId] = zrUtil.clone(panelOpts);\n });\n } else {\n this._panels = null;\n }\n\n return this;\n },\n\n /**\n * @param {Object} [opt]\n * @return {boolean} [opt.enableGlobalPan=false]\n */\n mount: function (opt) {\n opt = opt || {};\n this._enableGlobalPan = opt.enableGlobalPan;\n var thisGroup = this.group;\n\n this._zr.add(thisGroup);\n\n thisGroup.attr({\n position: opt.position || [0, 0],\n rotation: opt.rotation || 0,\n scale: opt.scale || [1, 1]\n });\n this._transform = thisGroup.getLocalTransform();\n return this;\n },\n eachCover: function (cb, context) {\n each(this._covers, cb, context);\n },\n\n /**\n * Update covers.\n * @param {Array.} brushOptionList Like:\n * [\n * {id: 'xx', brushType: 'line', range: [23, 44], brushStyle, transformable},\n * {id: 'yy', brushType: 'rect', range: [[23, 44], [23, 54]]},\n * ...\n * ]\n * `brushType` is required in each cover info. (can not be 'auto')\n * `id` is not mandatory.\n * `brushStyle`, `transformable` is not mandatory, use DEFAULT_BRUSH_OPT by default.\n * If brushOptionList is null/undefined, all covers removed.\n */\n updateCovers: function (brushOptionList) {\n brushOptionList = zrUtil.map(brushOptionList, function (brushOption) {\n return zrUtil.merge(zrUtil.clone(DEFAULT_BRUSH_OPT), brushOption, true);\n });\n var tmpIdPrefix = '\\0-brush-index-';\n var oldCovers = this._covers;\n var newCovers = this._covers = [];\n var controller = this;\n var creatingCover = this._creatingCover;\n new DataDiffer(oldCovers, brushOptionList, oldGetKey, getKey).add(addOrUpdate).update(addOrUpdate).remove(remove).execute();\n return this;\n\n function getKey(brushOption, index) {\n return (brushOption.id != null ? brushOption.id : tmpIdPrefix + index) + '-' + brushOption.brushType;\n }\n\n function oldGetKey(cover, index) {\n return getKey(cover.__brushOption, index);\n }\n\n function addOrUpdate(newIndex, oldIndex) {\n var newBrushOption = brushOptionList[newIndex]; // Consider setOption in event listener of brushSelect,\n // where updating cover when creating should be forbiden.\n\n if (oldIndex != null && oldCovers[oldIndex] === creatingCover) {\n newCovers[newIndex] = oldCovers[oldIndex];\n } else {\n var cover = newCovers[newIndex] = oldIndex != null ? (oldCovers[oldIndex].__brushOption = newBrushOption, oldCovers[oldIndex]) : endCreating(controller, createCover(controller, newBrushOption));\n updateCoverAfterCreation(controller, cover);\n }\n }\n\n function remove(oldIndex) {\n if (oldCovers[oldIndex] !== creatingCover) {\n controller.group.remove(oldCovers[oldIndex]);\n }\n }\n },\n unmount: function () {\n this.enableBrush(false); // container may 'removeAll' outside.\n\n clearCovers(this);\n\n this._zr.remove(this.group);\n\n return this;\n },\n dispose: function () {\n this.unmount();\n this.off();\n }\n};\nzrUtil.mixin(BrushController, Eventful);\n\nfunction doEnableBrush(controller, brushOption) {\n var zr = controller._zr; // Consider roam, which takes globalPan too.\n\n if (!controller._enableGlobalPan) {\n interactionMutex.take(zr, MUTEX_RESOURCE_KEY, controller._uid);\n }\n\n mountHandlers(zr, controller._handlers);\n controller._brushType = brushOption.brushType;\n controller._brushOption = zrUtil.merge(zrUtil.clone(DEFAULT_BRUSH_OPT), brushOption, true);\n}\n\nfunction doDisableBrush(controller) {\n var zr = controller._zr;\n interactionMutex.release(zr, MUTEX_RESOURCE_KEY, controller._uid);\n unmountHandlers(zr, controller._handlers);\n controller._brushType = controller._brushOption = null;\n}\n\nfunction mountHandlers(zr, handlers) {\n each(handlers, function (handler, eventName) {\n zr.on(eventName, handler);\n });\n}\n\nfunction unmountHandlers(zr, handlers) {\n each(handlers, function (handler, eventName) {\n zr.off(eventName, handler);\n });\n}\n\nfunction createCover(controller, brushOption) {\n var cover = coverRenderers[brushOption.brushType].createCover(controller, brushOption);\n cover.__brushOption = brushOption;\n updateZ(cover, brushOption);\n controller.group.add(cover);\n return cover;\n}\n\nfunction endCreating(controller, creatingCover) {\n var coverRenderer = getCoverRenderer(creatingCover);\n\n if (coverRenderer.endCreating) {\n coverRenderer.endCreating(controller, creatingCover);\n updateZ(creatingCover, creatingCover.__brushOption);\n }\n\n return creatingCover;\n}\n\nfunction updateCoverShape(controller, cover) {\n var brushOption = cover.__brushOption;\n getCoverRenderer(cover).updateCoverShape(controller, cover, brushOption.range, brushOption);\n}\n\nfunction updateZ(cover, brushOption) {\n var z = brushOption.z;\n z == null && (z = COVER_Z);\n cover.traverse(function (el) {\n el.z = z;\n el.z2 = z; // Consider in given container.\n });\n}\n\nfunction updateCoverAfterCreation(controller, cover) {\n getCoverRenderer(cover).updateCommon(controller, cover);\n updateCoverShape(controller, cover);\n}\n\nfunction getCoverRenderer(cover) {\n return coverRenderers[cover.__brushOption.brushType];\n} // return target panel or `true` (means global panel)\n\n\nfunction getPanelByPoint(controller, e, localCursorPoint) {\n var panels = controller._panels;\n\n if (!panels) {\n return true; // Global panel\n }\n\n var panel;\n var transform = controller._transform;\n each(panels, function (pn) {\n pn.isTargetByCursor(e, localCursorPoint, transform) && (panel = pn);\n });\n return panel;\n} // Return a panel or true\n\n\nfunction getPanelByCover(controller, cover) {\n var panels = controller._panels;\n\n if (!panels) {\n return true; // Global panel\n }\n\n var panelId = cover.__brushOption.panelId; // User may give cover without coord sys info,\n // which is then treated as global panel.\n\n return panelId != null ? panels[panelId] : true;\n}\n\nfunction clearCovers(controller) {\n var covers = controller._covers;\n var originalLength = covers.length;\n each(covers, function (cover) {\n controller.group.remove(cover);\n }, controller);\n covers.length = 0;\n return !!originalLength;\n}\n\nfunction trigger(controller, opt) {\n var areas = map(controller._covers, function (cover) {\n var brushOption = cover.__brushOption;\n var range = zrUtil.clone(brushOption.range);\n return {\n brushType: brushOption.brushType,\n panelId: brushOption.panelId,\n range: range\n };\n });\n controller.trigger('brush', areas, {\n isEnd: !!opt.isEnd,\n removeOnClick: !!opt.removeOnClick\n });\n}\n\nfunction shouldShowCover(controller) {\n var track = controller._track;\n\n if (!track.length) {\n return false;\n }\n\n var p2 = track[track.length - 1];\n var p1 = track[0];\n var dx = p2[0] - p1[0];\n var dy = p2[1] - p1[1];\n var dist = mathPow(dx * dx + dy * dy, 0.5);\n return dist > UNSELECT_THRESHOLD;\n}\n\nfunction getTrackEnds(track) {\n var tail = track.length - 1;\n tail < 0 && (tail = 0);\n return [track[0], track[tail]];\n}\n\nfunction createBaseRectCover(doDrift, controller, brushOption, edgeNames) {\n var cover = new graphic.Group();\n cover.add(new graphic.Rect({\n name: 'main',\n style: makeStyle(brushOption),\n silent: true,\n draggable: true,\n cursor: 'move',\n drift: curry(doDrift, controller, cover, 'nswe'),\n ondragend: curry(trigger, controller, {\n isEnd: true\n })\n }));\n each(edgeNames, function (name) {\n cover.add(new graphic.Rect({\n name: name,\n style: {\n opacity: 0\n },\n draggable: true,\n silent: true,\n invisible: true,\n drift: curry(doDrift, controller, cover, name),\n ondragend: curry(trigger, controller, {\n isEnd: true\n })\n }));\n });\n return cover;\n}\n\nfunction updateBaseRect(controller, cover, localRange, brushOption) {\n var lineWidth = brushOption.brushStyle.lineWidth || 0;\n var handleSize = mathMax(lineWidth, MIN_RESIZE_LINE_WIDTH);\n var x = localRange[0][0];\n var y = localRange[1][0];\n var xa = x - lineWidth / 2;\n var ya = y - lineWidth / 2;\n var x2 = localRange[0][1];\n var y2 = localRange[1][1];\n var x2a = x2 - handleSize + lineWidth / 2;\n var y2a = y2 - handleSize + lineWidth / 2;\n var width = x2 - x;\n var height = y2 - y;\n var widtha = width + lineWidth;\n var heighta = height + lineWidth;\n updateRectShape(controller, cover, 'main', x, y, width, height);\n\n if (brushOption.transformable) {\n updateRectShape(controller, cover, 'w', xa, ya, handleSize, heighta);\n updateRectShape(controller, cover, 'e', x2a, ya, handleSize, heighta);\n updateRectShape(controller, cover, 'n', xa, ya, widtha, handleSize);\n updateRectShape(controller, cover, 's', xa, y2a, widtha, handleSize);\n updateRectShape(controller, cover, 'nw', xa, ya, handleSize, handleSize);\n updateRectShape(controller, cover, 'ne', x2a, ya, handleSize, handleSize);\n updateRectShape(controller, cover, 'sw', xa, y2a, handleSize, handleSize);\n updateRectShape(controller, cover, 'se', x2a, y2a, handleSize, handleSize);\n }\n}\n\nfunction updateCommon(controller, cover) {\n var brushOption = cover.__brushOption;\n var transformable = brushOption.transformable;\n var mainEl = cover.childAt(0);\n mainEl.useStyle(makeStyle(brushOption));\n mainEl.attr({\n silent: !transformable,\n cursor: transformable ? 'move' : 'default'\n });\n each(['w', 'e', 'n', 's', 'se', 'sw', 'ne', 'nw'], function (name) {\n var el = cover.childOfName(name);\n var globalDir = getGlobalDirection(controller, name);\n el && el.attr({\n silent: !transformable,\n invisible: !transformable,\n cursor: transformable ? CURSOR_MAP[globalDir] + '-resize' : null\n });\n });\n}\n\nfunction updateRectShape(controller, cover, name, x, y, w, h) {\n var el = cover.childOfName(name);\n el && el.setShape(pointsToRect(clipByPanel(controller, cover, [[x, y], [x + w, y + h]])));\n}\n\nfunction makeStyle(brushOption) {\n return zrUtil.defaults({\n strokeNoScale: true\n }, brushOption.brushStyle);\n}\n\nfunction formatRectRange(x, y, x2, y2) {\n var min = [mathMin(x, x2), mathMin(y, y2)];\n var max = [mathMax(x, x2), mathMax(y, y2)];\n return [[min[0], max[0]], // x range\n [min[1], max[1]] // y range\n ];\n}\n\nfunction getTransform(controller) {\n return graphic.getTransform(controller.group);\n}\n\nfunction getGlobalDirection(controller, localDirection) {\n if (localDirection.length > 1) {\n localDirection = localDirection.split('');\n var globalDir = [getGlobalDirection(controller, localDirection[0]), getGlobalDirection(controller, localDirection[1])];\n (globalDir[0] === 'e' || globalDir[0] === 'w') && globalDir.reverse();\n return globalDir.join('');\n } else {\n var map = {\n w: 'left',\n e: 'right',\n n: 'top',\n s: 'bottom'\n };\n var inverseMap = {\n left: 'w',\n right: 'e',\n top: 'n',\n bottom: 's'\n };\n var globalDir = graphic.transformDirection(map[localDirection], getTransform(controller));\n return inverseMap[globalDir];\n }\n}\n\nfunction driftRect(toRectRange, fromRectRange, controller, cover, name, dx, dy, e) {\n var brushOption = cover.__brushOption;\n var rectRange = toRectRange(brushOption.range);\n var localDelta = toLocalDelta(controller, dx, dy);\n each(name.split(''), function (namePart) {\n var ind = DIRECTION_MAP[namePart];\n rectRange[ind[0]][ind[1]] += localDelta[ind[0]];\n });\n brushOption.range = fromRectRange(formatRectRange(rectRange[0][0], rectRange[1][0], rectRange[0][1], rectRange[1][1]));\n updateCoverAfterCreation(controller, cover);\n trigger(controller, {\n isEnd: false\n });\n}\n\nfunction driftPolygon(controller, cover, dx, dy, e) {\n var range = cover.__brushOption.range;\n var localDelta = toLocalDelta(controller, dx, dy);\n each(range, function (point) {\n point[0] += localDelta[0];\n point[1] += localDelta[1];\n });\n updateCoverAfterCreation(controller, cover);\n trigger(controller, {\n isEnd: false\n });\n}\n\nfunction toLocalDelta(controller, dx, dy) {\n var thisGroup = controller.group;\n var localD = thisGroup.transformCoordToLocal(dx, dy);\n var localZero = thisGroup.transformCoordToLocal(0, 0);\n return [localD[0] - localZero[0], localD[1] - localZero[1]];\n}\n\nfunction clipByPanel(controller, cover, data) {\n var panel = getPanelByCover(controller, cover);\n return panel && panel !== true ? panel.clipPath(data, controller._transform) : zrUtil.clone(data);\n}\n\nfunction pointsToRect(points) {\n var xmin = mathMin(points[0][0], points[1][0]);\n var ymin = mathMin(points[0][1], points[1][1]);\n var xmax = mathMax(points[0][0], points[1][0]);\n var ymax = mathMax(points[0][1], points[1][1]);\n return {\n x: xmin,\n y: ymin,\n width: xmax - xmin,\n height: ymax - ymin\n };\n}\n\nfunction resetCursor(controller, e, localCursorPoint) {\n if ( // Check active\n !controller._brushType // resetCursor should be always called when mouse is in zr area,\n // but not called when mouse is out of zr area to avoid bad influence\n // if `mousemove`, `mouseup` are triggered from `document` event.\n || isOutsideZrArea(controller, e)) {\n return;\n }\n\n var zr = controller._zr;\n var covers = controller._covers;\n var currPanel = getPanelByPoint(controller, e, localCursorPoint); // Check whether in covers.\n\n if (!controller._dragging) {\n for (var i = 0; i < covers.length; i++) {\n var brushOption = covers[i].__brushOption;\n\n if (currPanel && (currPanel === true || brushOption.panelId === currPanel.panelId) && coverRenderers[brushOption.brushType].contain(covers[i], localCursorPoint[0], localCursorPoint[1])) {\n // Use cursor style set on cover.\n return;\n }\n }\n }\n\n currPanel && zr.setCursorStyle('crosshair');\n}\n\nfunction preventDefault(e) {\n var rawE = e.event;\n rawE.preventDefault && rawE.preventDefault();\n}\n\nfunction mainShapeContain(cover, x, y) {\n return cover.childOfName('main').contain(x, y);\n}\n\nfunction updateCoverByMouse(controller, e, localCursorPoint, isEnd) {\n var creatingCover = controller._creatingCover;\n var panel = controller._creatingPanel;\n var thisBrushOption = controller._brushOption;\n var eventParams;\n\n controller._track.push(localCursorPoint.slice());\n\n if (shouldShowCover(controller) || creatingCover) {\n if (panel && !creatingCover) {\n thisBrushOption.brushMode === 'single' && clearCovers(controller);\n var brushOption = zrUtil.clone(thisBrushOption);\n brushOption.brushType = determineBrushType(brushOption.brushType, panel);\n brushOption.panelId = panel === true ? null : panel.panelId;\n creatingCover = controller._creatingCover = createCover(controller, brushOption);\n\n controller._covers.push(creatingCover);\n }\n\n if (creatingCover) {\n var coverRenderer = coverRenderers[determineBrushType(controller._brushType, panel)];\n var coverBrushOption = creatingCover.__brushOption;\n coverBrushOption.range = coverRenderer.getCreatingRange(clipByPanel(controller, creatingCover, controller._track));\n\n if (isEnd) {\n endCreating(controller, creatingCover);\n coverRenderer.updateCommon(controller, creatingCover);\n }\n\n updateCoverShape(controller, creatingCover);\n eventParams = {\n isEnd: isEnd\n };\n }\n } else if (isEnd && thisBrushOption.brushMode === 'single' && thisBrushOption.removeOnClick) {\n // Help user to remove covers easily, only by a tiny drag, in 'single' mode.\n // But a single click do not clear covers, because user may have casual\n // clicks (for example, click on other component and do not expect covers\n // disappear).\n // Only some cover removed, trigger action, but not every click trigger action.\n if (getPanelByPoint(controller, e, localCursorPoint) && clearCovers(controller)) {\n eventParams = {\n isEnd: isEnd,\n removeOnClick: true\n };\n }\n }\n\n return eventParams;\n}\n\nfunction determineBrushType(brushType, panel) {\n if (brushType === 'auto') {\n return panel.defaultBrushType;\n }\n\n return brushType;\n}\n\nvar pointerHandlers = {\n mousedown: function (e) {\n if (this._dragging) {\n // In case some browser do not support globalOut,\n // and release mose out side the browser.\n handleDragEnd(this, e);\n } else if (!e.target || !e.target.draggable) {\n preventDefault(e);\n var localCursorPoint = this.group.transformCoordToLocal(e.offsetX, e.offsetY);\n this._creatingCover = null;\n var panel = this._creatingPanel = getPanelByPoint(this, e, localCursorPoint);\n\n if (panel) {\n this._dragging = true;\n this._track = [localCursorPoint.slice()];\n }\n }\n },\n mousemove: function (e) {\n var x = e.offsetX;\n var y = e.offsetY;\n var localCursorPoint = this.group.transformCoordToLocal(x, y);\n resetCursor(this, e, localCursorPoint);\n\n if (this._dragging) {\n preventDefault(e);\n var eventParams = updateCoverByMouse(this, e, localCursorPoint, false);\n eventParams && trigger(this, eventParams);\n }\n },\n mouseup: function (e) {\n handleDragEnd(this, e);\n }\n};\n\nfunction handleDragEnd(controller, e) {\n if (controller._dragging) {\n preventDefault(e);\n var x = e.offsetX;\n var y = e.offsetY;\n var localCursorPoint = controller.group.transformCoordToLocal(x, y);\n var eventParams = updateCoverByMouse(controller, e, localCursorPoint, true);\n controller._dragging = false;\n controller._track = [];\n controller._creatingCover = null; // trigger event shoule be at final, after procedure will be nested.\n\n eventParams && trigger(controller, eventParams);\n }\n}\n\nfunction isOutsideZrArea(controller, x, y) {\n var zr = controller._zr;\n return x < 0 || x > zr.getWidth() || y < 0 || y > zr.getHeight();\n}\n/**\n * key: brushType\n * @type {Object}\n */\n\n\nvar coverRenderers = {\n lineX: getLineRenderer(0),\n lineY: getLineRenderer(1),\n rect: {\n createCover: function (controller, brushOption) {\n return createBaseRectCover(curry(driftRect, function (range) {\n return range;\n }, function (range) {\n return range;\n }), controller, brushOption, ['w', 'e', 'n', 's', 'se', 'sw', 'ne', 'nw']);\n },\n getCreatingRange: function (localTrack) {\n var ends = getTrackEnds(localTrack);\n return formatRectRange(ends[1][0], ends[1][1], ends[0][0], ends[0][1]);\n },\n updateCoverShape: function (controller, cover, localRange, brushOption) {\n updateBaseRect(controller, cover, localRange, brushOption);\n },\n updateCommon: updateCommon,\n contain: mainShapeContain\n },\n polygon: {\n createCover: function (controller, brushOption) {\n var cover = new graphic.Group(); // Do not use graphic.Polygon because graphic.Polyline do not close the\n // border of the shape when drawing, which is a better experience for user.\n\n cover.add(new graphic.Polyline({\n name: 'main',\n style: makeStyle(brushOption),\n silent: true\n }));\n return cover;\n },\n getCreatingRange: function (localTrack) {\n return localTrack;\n },\n endCreating: function (controller, cover) {\n cover.remove(cover.childAt(0)); // Use graphic.Polygon close the shape.\n\n cover.add(new graphic.Polygon({\n name: 'main',\n draggable: true,\n drift: curry(driftPolygon, controller, cover),\n ondragend: curry(trigger, controller, {\n isEnd: true\n })\n }));\n },\n updateCoverShape: function (controller, cover, localRange, brushOption) {\n cover.childAt(0).setShape({\n points: clipByPanel(controller, cover, localRange)\n });\n },\n updateCommon: updateCommon,\n contain: mainShapeContain\n }\n};\n\nfunction getLineRenderer(xyIndex) {\n return {\n createCover: function (controller, brushOption) {\n return createBaseRectCover(curry(driftRect, function (range) {\n var rectRange = [range, [0, 100]];\n xyIndex && rectRange.reverse();\n return rectRange;\n }, function (rectRange) {\n return rectRange[xyIndex];\n }), controller, brushOption, [['w', 'e'], ['n', 's']][xyIndex]);\n },\n getCreatingRange: function (localTrack) {\n var ends = getTrackEnds(localTrack);\n var min = mathMin(ends[0][xyIndex], ends[1][xyIndex]);\n var max = mathMax(ends[0][xyIndex], ends[1][xyIndex]);\n return [min, max];\n },\n updateCoverShape: function (controller, cover, localRange, brushOption) {\n var otherExtent; // If brushWidth not specified, fit the panel.\n\n var panel = getPanelByCover(controller, cover);\n\n if (panel !== true && panel.getLinearBrushOtherExtent) {\n otherExtent = panel.getLinearBrushOtherExtent(xyIndex, controller._transform);\n } else {\n var zr = controller._zr;\n otherExtent = [0, [zr.getWidth(), zr.getHeight()][1 - xyIndex]];\n }\n\n var rectRange = [localRange, otherExtent];\n xyIndex && rectRange.reverse();\n updateBaseRect(controller, cover, rectRange, brushOption);\n },\n updateCommon: updateCommon,\n contain: mainShapeContain\n };\n}\n\nvar _default = BrushController;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/helper/BrushController.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/helper/BrushTargetManager.js": +/*!*************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/helper/BrushTargetManager.js ***! + \*************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar modelUtil = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar brushHelper = __webpack_require__(/*! ./brushHelper */ \"./node_modules/echarts/lib/component/helper/brushHelper.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar indexOf = zrUtil.indexOf;\nvar curry = zrUtil.curry;\nvar COORD_CONVERTS = ['dataToPoint', 'pointToData']; // FIXME\n// how to genarialize to more coordinate systems.\n\nvar INCLUDE_FINDER_MAIN_TYPES = ['grid', 'xAxis', 'yAxis', 'geo', 'graph', 'polar', 'radiusAxis', 'angleAxis', 'bmap'];\n/**\n * [option in constructor]:\n * {\n * Index/Id/Name of geo, xAxis, yAxis, grid: See util/model#parseFinder.\n * }\n *\n *\n * [targetInfo]:\n *\n * There can be multiple axes in a single targetInfo. Consider the case\n * of `grid` component, a targetInfo represents a grid which contains one or more\n * cartesian and one or more axes. And consider the case of parallel system,\n * which has multiple axes in a coordinate system.\n * Can be {\n * panelId: ...,\n * coordSys: ,\n * coordSyses: all cartesians.\n * gridModel: \n * xAxes: correspond to coordSyses on index\n * yAxes: correspond to coordSyses on index\n * }\n * or {\n * panelId: ...,\n * coordSys: \n * coordSyses: []\n * geoModel: \n * }\n *\n *\n * [panelOpt]:\n *\n * Make from targetInfo. Input to BrushController.\n * {\n * panelId: ...,\n * rect: ...\n * }\n *\n *\n * [area]:\n *\n * Generated by BrushController or user input.\n * {\n * panelId: Used to locate coordInfo directly. If user inpput, no panelId.\n * brushType: determine how to convert to/from coord('rect' or 'polygon' or 'lineX/Y').\n * Index/Id/Name of geo, xAxis, yAxis, grid: See util/model#parseFinder.\n * range: pixel range.\n * coordRange: representitive coord range (the first one of coordRanges).\n * coordRanges: coord ranges, used in multiple cartesian in one grid.\n * }\n */\n\n/**\n * @param {Object} option contains Index/Id/Name of xAxis/yAxis/geo/grid\n * Each can be {number|Array.}. like: {xAxisIndex: [3, 4]}\n * @param {module:echarts/model/Global} ecModel\n * @param {Object} [opt]\n * @param {Array.} [opt.include] include coordinate system types.\n */\n\nfunction BrushTargetManager(option, ecModel, opt) {\n /**\n * @private\n * @type {Array.}\n */\n var targetInfoList = this._targetInfoList = [];\n var info = {};\n var foundCpts = parseFinder(ecModel, option);\n each(targetInfoBuilders, function (builder, type) {\n if (!opt || !opt.include || indexOf(opt.include, type) >= 0) {\n builder(foundCpts, targetInfoList, info);\n }\n });\n}\n\nvar proto = BrushTargetManager.prototype;\n\nproto.setOutputRanges = function (areas, ecModel) {\n this.matchOutputRanges(areas, ecModel, function (area, coordRange, coordSys) {\n (area.coordRanges || (area.coordRanges = [])).push(coordRange); // area.coordRange is the first of area.coordRanges\n\n if (!area.coordRange) {\n area.coordRange = coordRange; // In 'category' axis, coord to pixel is not reversible, so we can not\n // rebuild range by coordRange accrately, which may bring trouble when\n // brushing only one item. So we use __rangeOffset to rebuilding range\n // by coordRange. And this it only used in brush component so it is no\n // need to be adapted to coordRanges.\n\n var result = coordConvert[area.brushType](0, coordSys, coordRange);\n area.__rangeOffset = {\n offset: diffProcessor[area.brushType](result.values, area.range, [1, 1]),\n xyMinMax: result.xyMinMax\n };\n }\n });\n};\n\nproto.matchOutputRanges = function (areas, ecModel, cb) {\n each(areas, function (area) {\n var targetInfo = this.findTargetInfo(area, ecModel);\n\n if (targetInfo && targetInfo !== true) {\n zrUtil.each(targetInfo.coordSyses, function (coordSys) {\n var result = coordConvert[area.brushType](1, coordSys, area.range);\n cb(area, result.values, coordSys, ecModel);\n });\n }\n }, this);\n};\n\nproto.setInputRanges = function (areas, ecModel) {\n each(areas, function (area) {\n var targetInfo = this.findTargetInfo(area, ecModel);\n area.range = area.range || []; // convert coordRange to global range and set panelId.\n\n if (targetInfo && targetInfo !== true) {\n area.panelId = targetInfo.panelId; // (1) area.range shoule always be calculate from coordRange but does\n // not keep its original value, for the sake of the dataZoom scenario,\n // where area.coordRange remains unchanged but area.range may be changed.\n // (2) Only support converting one coordRange to pixel range in brush\n // component. So do not consider `coordRanges`.\n // (3) About __rangeOffset, see comment above.\n\n var result = coordConvert[area.brushType](0, targetInfo.coordSys, area.coordRange);\n var rangeOffset = area.__rangeOffset;\n area.range = rangeOffset ? diffProcessor[area.brushType](result.values, rangeOffset.offset, getScales(result.xyMinMax, rangeOffset.xyMinMax)) : result.values;\n }\n }, this);\n};\n\nproto.makePanelOpts = function (api, getDefaultBrushType) {\n return zrUtil.map(this._targetInfoList, function (targetInfo) {\n var rect = targetInfo.getPanelRect();\n return {\n panelId: targetInfo.panelId,\n defaultBrushType: getDefaultBrushType && getDefaultBrushType(targetInfo),\n clipPath: brushHelper.makeRectPanelClipPath(rect),\n isTargetByCursor: brushHelper.makeRectIsTargetByCursor(rect, api, targetInfo.coordSysModel),\n getLinearBrushOtherExtent: brushHelper.makeLinearBrushOtherExtent(rect)\n };\n });\n};\n\nproto.controlSeries = function (area, seriesModel, ecModel) {\n // Check whether area is bound in coord, and series do not belong to that coord.\n // If do not do this check, some brush (like lineX) will controll all axes.\n var targetInfo = this.findTargetInfo(area, ecModel);\n return targetInfo === true || targetInfo && indexOf(targetInfo.coordSyses, seriesModel.coordinateSystem) >= 0;\n};\n/**\n * If return Object, a coord found.\n * If reutrn true, global found.\n * Otherwise nothing found.\n *\n * @param {Object} area\n * @param {Array} targetInfoList\n * @return {Object|boolean}\n */\n\n\nproto.findTargetInfo = function (area, ecModel) {\n var targetInfoList = this._targetInfoList;\n var foundCpts = parseFinder(ecModel, area);\n\n for (var i = 0; i < targetInfoList.length; i++) {\n var targetInfo = targetInfoList[i];\n var areaPanelId = area.panelId;\n\n if (areaPanelId) {\n if (targetInfo.panelId === areaPanelId) {\n return targetInfo;\n }\n } else {\n for (var i = 0; i < targetInfoMatchers.length; i++) {\n if (targetInfoMatchers[i](foundCpts, targetInfo)) {\n return targetInfo;\n }\n }\n }\n }\n\n return true;\n};\n\nfunction formatMinMax(minMax) {\n minMax[0] > minMax[1] && minMax.reverse();\n return minMax;\n}\n\nfunction parseFinder(ecModel, option) {\n return modelUtil.parseFinder(ecModel, option, {\n includeMainTypes: INCLUDE_FINDER_MAIN_TYPES\n });\n}\n\nvar targetInfoBuilders = {\n grid: function (foundCpts, targetInfoList) {\n var xAxisModels = foundCpts.xAxisModels;\n var yAxisModels = foundCpts.yAxisModels;\n var gridModels = foundCpts.gridModels; // Remove duplicated.\n\n var gridModelMap = zrUtil.createHashMap();\n var xAxesHas = {};\n var yAxesHas = {};\n\n if (!xAxisModels && !yAxisModels && !gridModels) {\n return;\n }\n\n each(xAxisModels, function (axisModel) {\n var gridModel = axisModel.axis.grid.model;\n gridModelMap.set(gridModel.id, gridModel);\n xAxesHas[gridModel.id] = true;\n });\n each(yAxisModels, function (axisModel) {\n var gridModel = axisModel.axis.grid.model;\n gridModelMap.set(gridModel.id, gridModel);\n yAxesHas[gridModel.id] = true;\n });\n each(gridModels, function (gridModel) {\n gridModelMap.set(gridModel.id, gridModel);\n xAxesHas[gridModel.id] = true;\n yAxesHas[gridModel.id] = true;\n });\n gridModelMap.each(function (gridModel) {\n var grid = gridModel.coordinateSystem;\n var cartesians = [];\n each(grid.getCartesians(), function (cartesian, index) {\n if (indexOf(xAxisModels, cartesian.getAxis('x').model) >= 0 || indexOf(yAxisModels, cartesian.getAxis('y').model) >= 0) {\n cartesians.push(cartesian);\n }\n });\n targetInfoList.push({\n panelId: 'grid--' + gridModel.id,\n gridModel: gridModel,\n coordSysModel: gridModel,\n // Use the first one as the representitive coordSys.\n coordSys: cartesians[0],\n coordSyses: cartesians,\n getPanelRect: panelRectBuilder.grid,\n xAxisDeclared: xAxesHas[gridModel.id],\n yAxisDeclared: yAxesHas[gridModel.id]\n });\n });\n },\n geo: function (foundCpts, targetInfoList) {\n each(foundCpts.geoModels, function (geoModel) {\n var coordSys = geoModel.coordinateSystem;\n targetInfoList.push({\n panelId: 'geo--' + geoModel.id,\n geoModel: geoModel,\n coordSysModel: geoModel,\n coordSys: coordSys,\n coordSyses: [coordSys],\n getPanelRect: panelRectBuilder.geo\n });\n });\n }\n};\nvar targetInfoMatchers = [// grid\nfunction (foundCpts, targetInfo) {\n var xAxisModel = foundCpts.xAxisModel;\n var yAxisModel = foundCpts.yAxisModel;\n var gridModel = foundCpts.gridModel;\n !gridModel && xAxisModel && (gridModel = xAxisModel.axis.grid.model);\n !gridModel && yAxisModel && (gridModel = yAxisModel.axis.grid.model);\n return gridModel && gridModel === targetInfo.gridModel;\n}, // geo\nfunction (foundCpts, targetInfo) {\n var geoModel = foundCpts.geoModel;\n return geoModel && geoModel === targetInfo.geoModel;\n}];\nvar panelRectBuilder = {\n grid: function () {\n // grid is not Transformable.\n return this.coordSys.grid.getRect().clone();\n },\n geo: function () {\n var coordSys = this.coordSys;\n var rect = coordSys.getBoundingRect().clone(); // geo roam and zoom transform\n\n rect.applyTransform(graphic.getTransform(coordSys));\n return rect;\n }\n};\nvar coordConvert = {\n lineX: curry(axisConvert, 0),\n lineY: curry(axisConvert, 1),\n rect: function (to, coordSys, rangeOrCoordRange) {\n var xminymin = coordSys[COORD_CONVERTS[to]]([rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]]);\n var xmaxymax = coordSys[COORD_CONVERTS[to]]([rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]]);\n var values = [formatMinMax([xminymin[0], xmaxymax[0]]), formatMinMax([xminymin[1], xmaxymax[1]])];\n return {\n values: values,\n xyMinMax: values\n };\n },\n polygon: function (to, coordSys, rangeOrCoordRange) {\n var xyMinMax = [[Infinity, -Infinity], [Infinity, -Infinity]];\n var values = zrUtil.map(rangeOrCoordRange, function (item) {\n var p = coordSys[COORD_CONVERTS[to]](item);\n xyMinMax[0][0] = Math.min(xyMinMax[0][0], p[0]);\n xyMinMax[1][0] = Math.min(xyMinMax[1][0], p[1]);\n xyMinMax[0][1] = Math.max(xyMinMax[0][1], p[0]);\n xyMinMax[1][1] = Math.max(xyMinMax[1][1], p[1]);\n return p;\n });\n return {\n values: values,\n xyMinMax: xyMinMax\n };\n }\n};\n\nfunction axisConvert(axisNameIndex, to, coordSys, rangeOrCoordRange) {\n var axis = coordSys.getAxis(['x', 'y'][axisNameIndex]);\n var values = formatMinMax(zrUtil.map([0, 1], function (i) {\n return to ? axis.coordToData(axis.toLocalCoord(rangeOrCoordRange[i])) : axis.toGlobalCoord(axis.dataToCoord(rangeOrCoordRange[i]));\n }));\n var xyMinMax = [];\n xyMinMax[axisNameIndex] = values;\n xyMinMax[1 - axisNameIndex] = [NaN, NaN];\n return {\n values: values,\n xyMinMax: xyMinMax\n };\n}\n\nvar diffProcessor = {\n lineX: curry(axisDiffProcessor, 0),\n lineY: curry(axisDiffProcessor, 1),\n rect: function (values, refer, scales) {\n return [[values[0][0] - scales[0] * refer[0][0], values[0][1] - scales[0] * refer[0][1]], [values[1][0] - scales[1] * refer[1][0], values[1][1] - scales[1] * refer[1][1]]];\n },\n polygon: function (values, refer, scales) {\n return zrUtil.map(values, function (item, idx) {\n return [item[0] - scales[0] * refer[idx][0], item[1] - scales[1] * refer[idx][1]];\n });\n }\n};\n\nfunction axisDiffProcessor(axisNameIndex, values, refer, scales) {\n return [values[0] - scales[axisNameIndex] * refer[0], values[1] - scales[axisNameIndex] * refer[1]];\n} // We have to process scale caused by dataZoom manually,\n// although it might be not accurate.\n\n\nfunction getScales(xyMinMaxCurr, xyMinMaxOrigin) {\n var sizeCurr = getSize(xyMinMaxCurr);\n var sizeOrigin = getSize(xyMinMaxOrigin);\n var scales = [sizeCurr[0] / sizeOrigin[0], sizeCurr[1] / sizeOrigin[1]];\n isNaN(scales[0]) && (scales[0] = 1);\n isNaN(scales[1]) && (scales[1] = 1);\n return scales;\n}\n\nfunction getSize(xyMinMax) {\n return xyMinMax ? [xyMinMax[0][1] - xyMinMax[0][0], xyMinMax[1][1] - xyMinMax[1][0]] : [NaN, NaN];\n}\n\nvar _default = BrushTargetManager;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/helper/BrushTargetManager.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/helper/MapDraw.js": +/*!**************************************************************!*\ + !*** ./node_modules/echarts/lib/component/helper/MapDraw.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar RoamController = __webpack_require__(/*! ./RoamController */ \"./node_modules/echarts/lib/component/helper/RoamController.js\");\n\nvar roamHelper = __webpack_require__(/*! ../../component/helper/roamHelper */ \"./node_modules/echarts/lib/component/helper/roamHelper.js\");\n\nvar _cursorHelper = __webpack_require__(/*! ../../component/helper/cursorHelper */ \"./node_modules/echarts/lib/component/helper/cursorHelper.js\");\n\nvar onIrrelevantElement = _cursorHelper.onIrrelevantElement;\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar geoSourceManager = __webpack_require__(/*! ../../coord/geo/geoSourceManager */ \"./node_modules/echarts/lib/coord/geo/geoSourceManager.js\");\n\nvar _component = __webpack_require__(/*! ../../util/component */ \"./node_modules/echarts/lib/util/component.js\");\n\nvar getUID = _component.getUID;\n\nvar Transformable = __webpack_require__(/*! zrender/lib/mixin/Transformable */ \"./node_modules/zrender/lib/mixin/Transformable.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction getFixedItemStyle(model) {\n var itemStyle = model.getItemStyle();\n var areaColor = model.get('areaColor'); // If user want the color not to be changed when hover,\n // they should both set areaColor and color to be null.\n\n if (areaColor != null) {\n itemStyle.fill = areaColor;\n }\n\n return itemStyle;\n}\n\nfunction updateMapSelectHandler(mapDraw, mapOrGeoModel, regionsGroup, api, fromView) {\n regionsGroup.off('click');\n regionsGroup.off('mousedown');\n\n if (mapOrGeoModel.get('selectedMode')) {\n regionsGroup.on('mousedown', function () {\n mapDraw._mouseDownFlag = true;\n });\n regionsGroup.on('click', function (e) {\n if (!mapDraw._mouseDownFlag) {\n return;\n }\n\n mapDraw._mouseDownFlag = false;\n var el = e.target;\n\n while (!el.__regions) {\n el = el.parent;\n }\n\n if (!el) {\n return;\n }\n\n var action = {\n type: (mapOrGeoModel.mainType === 'geo' ? 'geo' : 'map') + 'ToggleSelect',\n batch: zrUtil.map(el.__regions, function (region) {\n return {\n name: region.name,\n from: fromView.uid\n };\n })\n };\n action[mapOrGeoModel.mainType + 'Id'] = mapOrGeoModel.id;\n api.dispatchAction(action);\n updateMapSelected(mapOrGeoModel, regionsGroup);\n });\n }\n}\n\nfunction updateMapSelected(mapOrGeoModel, regionsGroup) {\n // FIXME\n regionsGroup.eachChild(function (otherRegionEl) {\n zrUtil.each(otherRegionEl.__regions, function (region) {\n otherRegionEl.trigger(mapOrGeoModel.isSelected(region.name) ? 'emphasis' : 'normal');\n });\n });\n}\n/**\n * @alias module:echarts/component/helper/MapDraw\n * @param {module:echarts/ExtensionAPI} api\n * @param {boolean} updateGroup\n */\n\n\nfunction MapDraw(api, updateGroup) {\n var group = new graphic.Group();\n /**\n * @type {string}\n * @private\n */\n\n this.uid = getUID('ec_map_draw');\n /**\n * @type {module:echarts/component/helper/RoamController}\n * @private\n */\n\n this._controller = new RoamController(api.getZr());\n /**\n * @type {Object} {target, zoom, zoomLimit}\n * @private\n */\n\n this._controllerHost = {\n target: updateGroup ? group : null\n };\n /**\n * @type {module:zrender/container/Group}\n * @readOnly\n */\n\n this.group = group;\n /**\n * @type {boolean}\n * @private\n */\n\n this._updateGroup = updateGroup;\n /**\n * This flag is used to make sure that only one among\n * `pan`, `zoom`, `click` can occurs, otherwise 'selected'\n * action may be triggered when `pan`, which is unexpected.\n * @type {booelan}\n */\n\n this._mouseDownFlag;\n /**\n * @type {string}\n */\n\n this._mapName;\n /**\n * @type {boolean}\n */\n\n this._initialized;\n /**\n * @type {module:zrender/container/Group}\n */\n\n group.add(this._regionsGroup = new graphic.Group());\n /**\n * @type {module:zrender/container/Group}\n */\n\n group.add(this._backgroundGroup = new graphic.Group());\n}\n\nMapDraw.prototype = {\n constructor: MapDraw,\n draw: function (mapOrGeoModel, ecModel, api, fromView, payload) {\n var isGeo = mapOrGeoModel.mainType === 'geo'; // Map series has data. GEO model that controlled by map series\n // will be assigned with map data. Other GEO model has no data.\n\n var data = mapOrGeoModel.getData && mapOrGeoModel.getData();\n isGeo && ecModel.eachComponent({\n mainType: 'series',\n subType: 'map'\n }, function (mapSeries) {\n if (!data && mapSeries.getHostGeoModel() === mapOrGeoModel) {\n data = mapSeries.getData();\n }\n });\n var geo = mapOrGeoModel.coordinateSystem;\n\n this._updateBackground(geo);\n\n var regionsGroup = this._regionsGroup;\n var group = this.group;\n var transformInfo = geo.getTransformInfo(); // No animation when first draw or in action\n\n var isFirstDraw = !regionsGroup.childAt(0) || payload;\n var targetScale;\n\n if (isFirstDraw) {\n group.transform = transformInfo.roamTransform;\n group.decomposeTransform();\n group.dirty();\n } else {\n var target = new Transformable();\n target.transform = transformInfo.roamTransform;\n target.decomposeTransform();\n var props = {\n scale: target.scale,\n position: target.position\n };\n targetScale = target.scale;\n graphic.updateProps(group, props, mapOrGeoModel);\n }\n\n var scale = transformInfo.rawScale;\n var position = transformInfo.rawPosition;\n regionsGroup.removeAll();\n var itemStyleAccessPath = ['itemStyle'];\n var hoverItemStyleAccessPath = ['emphasis', 'itemStyle'];\n var labelAccessPath = ['label'];\n var hoverLabelAccessPath = ['emphasis', 'label'];\n var nameMap = zrUtil.createHashMap();\n zrUtil.each(geo.regions, function (region) {\n // Consider in GeoJson properties.name may be duplicated, for example,\n // there is multiple region named \"United Kindom\" or \"France\" (so many\n // colonies). And it is not appropriate to merge them in geo, which\n // will make them share the same label and bring trouble in label\n // location calculation.\n var regionGroup = nameMap.get(region.name) || nameMap.set(region.name, new graphic.Group());\n var compoundPath = new graphic.CompoundPath({\n segmentIgnoreThreshold: 1,\n shape: {\n paths: []\n }\n });\n regionGroup.add(compoundPath);\n var regionModel = mapOrGeoModel.getRegionModel(region.name) || mapOrGeoModel;\n var itemStyleModel = regionModel.getModel(itemStyleAccessPath);\n var hoverItemStyleModel = regionModel.getModel(hoverItemStyleAccessPath);\n var itemStyle = getFixedItemStyle(itemStyleModel);\n var hoverItemStyle = getFixedItemStyle(hoverItemStyleModel);\n var labelModel = regionModel.getModel(labelAccessPath);\n var hoverLabelModel = regionModel.getModel(hoverLabelAccessPath);\n var dataIdx; // Use the itemStyle in data if has data\n\n if (data) {\n dataIdx = data.indexOfName(region.name); // Only visual color of each item will be used. It can be encoded by dataRange\n // But visual color of series is used in symbol drawing\n //\n // Visual color for each series is for the symbol draw\n\n var visualColor = data.getItemVisual(dataIdx, 'color', true);\n\n if (visualColor) {\n itemStyle.fill = visualColor;\n }\n }\n\n var transformPoint = function (point) {\n return [point[0] * scale[0] + position[0], point[1] * scale[1] + position[1]];\n };\n\n zrUtil.each(region.geometries, function (geometry) {\n if (geometry.type !== 'polygon') {\n return;\n }\n\n var points = [];\n\n for (var i = 0; i < geometry.exterior.length; ++i) {\n points.push(transformPoint(geometry.exterior[i]));\n }\n\n compoundPath.shape.paths.push(new graphic.Polygon({\n segmentIgnoreThreshold: 1,\n shape: {\n points: points\n }\n }));\n\n for (var i = 0; i < (geometry.interiors ? geometry.interiors.length : 0); ++i) {\n var interior = geometry.interiors[i];\n var points = [];\n\n for (var j = 0; j < interior.length; ++j) {\n points.push(transformPoint(interior[j]));\n }\n\n compoundPath.shape.paths.push(new graphic.Polygon({\n segmentIgnoreThreshold: 1,\n shape: {\n points: points\n }\n }));\n }\n });\n compoundPath.setStyle(itemStyle);\n compoundPath.style.strokeNoScale = true;\n compoundPath.culling = true; // Label\n\n var showLabel = labelModel.get('show');\n var hoverShowLabel = hoverLabelModel.get('show');\n var isDataNaN = data && isNaN(data.get(data.mapDimension('value'), dataIdx));\n var itemLayout = data && data.getItemLayout(dataIdx); // In the following cases label will be drawn\n // 1. In map series and data value is NaN\n // 2. In geo component\n // 4. Region has no series legendSymbol, which will be add a showLabel flag in mapSymbolLayout\n\n if (isGeo || isDataNaN && (showLabel || hoverShowLabel) || itemLayout && itemLayout.showLabel) {\n var query = !isGeo ? dataIdx : region.name;\n var labelFetcher; // Consider dataIdx not found.\n\n if (!data || dataIdx >= 0) {\n labelFetcher = mapOrGeoModel;\n }\n\n var textEl = new graphic.Text({\n position: transformPoint(region.center.slice()),\n // FIXME\n // label rotation is not support yet in geo or regions of series-map\n // that has no data. The rotation will be effected by this `scale`.\n // So needed to change to RectText?\n scale: [1 / group.scale[0], 1 / group.scale[1]],\n z2: 10,\n silent: true\n });\n graphic.setLabelStyle(textEl.style, textEl.hoverStyle = {}, labelModel, hoverLabelModel, {\n labelFetcher: labelFetcher,\n labelDataIndex: query,\n defaultText: region.name,\n useInsideStyle: false\n }, {\n textAlign: 'center',\n textVerticalAlign: 'middle'\n });\n\n if (!isFirstDraw) {\n // Text animation\n var textScale = [1 / targetScale[0], 1 / targetScale[1]];\n graphic.updateProps(textEl, {\n scale: textScale\n }, mapOrGeoModel);\n }\n\n regionGroup.add(textEl);\n } // setItemGraphicEl, setHoverStyle after all polygons and labels\n // are added to the rigionGroup\n\n\n if (data) {\n data.setItemGraphicEl(dataIdx, regionGroup);\n } else {\n var regionModel = mapOrGeoModel.getRegionModel(region.name); // Package custom mouse event for geo component\n\n compoundPath.eventData = {\n componentType: 'geo',\n componentIndex: mapOrGeoModel.componentIndex,\n geoIndex: mapOrGeoModel.componentIndex,\n name: region.name,\n region: regionModel && regionModel.option || {}\n };\n }\n\n var groupRegions = regionGroup.__regions || (regionGroup.__regions = []);\n groupRegions.push(region);\n regionGroup.highDownSilentOnTouch = !!mapOrGeoModel.get('selectedMode');\n graphic.setHoverStyle(regionGroup, hoverItemStyle);\n regionsGroup.add(regionGroup);\n });\n\n this._updateController(mapOrGeoModel, ecModel, api);\n\n updateMapSelectHandler(this, mapOrGeoModel, regionsGroup, api, fromView);\n updateMapSelected(mapOrGeoModel, regionsGroup);\n },\n remove: function () {\n this._regionsGroup.removeAll();\n\n this._backgroundGroup.removeAll();\n\n this._controller.dispose();\n\n this._mapName && geoSourceManager.removeGraphic(this._mapName, this.uid);\n this._mapName = null;\n this._controllerHost = {};\n },\n _updateBackground: function (geo) {\n var mapName = geo.map;\n\n if (this._mapName !== mapName) {\n zrUtil.each(geoSourceManager.makeGraphic(mapName, this.uid), function (root) {\n this._backgroundGroup.add(root);\n }, this);\n }\n\n this._mapName = mapName;\n },\n _updateController: function (mapOrGeoModel, ecModel, api) {\n var geo = mapOrGeoModel.coordinateSystem;\n var controller = this._controller;\n var controllerHost = this._controllerHost;\n controllerHost.zoomLimit = mapOrGeoModel.get('scaleLimit');\n controllerHost.zoom = geo.getZoom(); // roamType is will be set default true if it is null\n\n controller.enable(mapOrGeoModel.get('roam') || false);\n var mainType = mapOrGeoModel.mainType;\n\n function makeActionBase() {\n var action = {\n type: 'geoRoam',\n componentType: mainType\n };\n action[mainType + 'Id'] = mapOrGeoModel.id;\n return action;\n }\n\n controller.off('pan').on('pan', function (e) {\n this._mouseDownFlag = false;\n roamHelper.updateViewOnPan(controllerHost, e.dx, e.dy);\n api.dispatchAction(zrUtil.extend(makeActionBase(), {\n dx: e.dx,\n dy: e.dy\n }));\n }, this);\n controller.off('zoom').on('zoom', function (e) {\n this._mouseDownFlag = false;\n roamHelper.updateViewOnZoom(controllerHost, e.scale, e.originX, e.originY);\n api.dispatchAction(zrUtil.extend(makeActionBase(), {\n zoom: e.scale,\n originX: e.originX,\n originY: e.originY\n }));\n\n if (this._updateGroup) {\n var scale = this.group.scale;\n\n this._regionsGroup.traverse(function (el) {\n if (el.type === 'text') {\n el.attr('scale', [1 / scale[0], 1 / scale[1]]);\n }\n });\n }\n }, this);\n controller.setPointerChecker(function (e, x, y) {\n return geo.getViewRectAfterRoam().contain(x, y) && !onIrrelevantElement(e, api, mapOrGeoModel);\n });\n }\n};\nvar _default = MapDraw;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/helper/MapDraw.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/helper/RoamController.js": +/*!*********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/helper/RoamController.js ***! + \*********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar Eventful = __webpack_require__(/*! zrender/lib/mixin/Eventful */ \"./node_modules/zrender/lib/mixin/Eventful.js\");\n\nvar eventTool = __webpack_require__(/*! zrender/lib/core/event */ \"./node_modules/zrender/lib/core/event.js\");\n\nvar interactionMutex = __webpack_require__(/*! ./interactionMutex */ \"./node_modules/echarts/lib/component/helper/interactionMutex.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @alias module:echarts/component/helper/RoamController\n * @constructor\n * @mixin {module:zrender/mixin/Eventful}\n *\n * @param {module:zrender/zrender~ZRender} zr\n */\nfunction RoamController(zr) {\n /**\n * @type {Function}\n */\n this.pointerChecker;\n /**\n * @type {module:zrender}\n */\n\n this._zr = zr;\n /**\n * @type {Object}\n */\n\n this._opt = {}; // Avoid two roamController bind the same handler\n\n var bind = zrUtil.bind;\n var mousedownHandler = bind(mousedown, this);\n var mousemoveHandler = bind(mousemove, this);\n var mouseupHandler = bind(mouseup, this);\n var mousewheelHandler = bind(mousewheel, this);\n var pinchHandler = bind(pinch, this);\n Eventful.call(this);\n /**\n * @param {Function} pointerChecker\n * input: x, y\n * output: boolean\n */\n\n this.setPointerChecker = function (pointerChecker) {\n this.pointerChecker = pointerChecker;\n };\n /**\n * Notice: only enable needed types. For example, if 'zoom'\n * is not needed, 'zoom' should not be enabled, otherwise\n * default mousewheel behaviour (scroll page) will be disabled.\n *\n * @param {boolean|string} [controlType=true] Specify the control type,\n * which can be null/undefined or true/false\n * or 'pan/move' or 'zoom'/'scale'\n * @param {Object} [opt]\n * @param {Object} [opt.zoomOnMouseWheel=true] The value can be: true / false / 'shift' / 'ctrl' / 'alt'.\n * @param {Object} [opt.moveOnMouseMove=true] The value can be: true / false / 'shift' / 'ctrl' / 'alt'.\n * @param {Object} [opt.moveOnMouseWheel=false] The value can be: true / false / 'shift' / 'ctrl' / 'alt'.\n * @param {Object} [opt.preventDefaultMouseMove=true] When pan.\n */\n\n\n this.enable = function (controlType, opt) {\n // Disable previous first\n this.disable();\n this._opt = zrUtil.defaults(zrUtil.clone(opt) || {}, {\n zoomOnMouseWheel: true,\n moveOnMouseMove: true,\n // By default, wheel do not trigger move.\n moveOnMouseWheel: false,\n preventDefaultMouseMove: true\n });\n\n if (controlType == null) {\n controlType = true;\n }\n\n if (controlType === true || controlType === 'move' || controlType === 'pan') {\n zr.on('mousedown', mousedownHandler);\n zr.on('mousemove', mousemoveHandler);\n zr.on('mouseup', mouseupHandler);\n }\n\n if (controlType === true || controlType === 'scale' || controlType === 'zoom') {\n zr.on('mousewheel', mousewheelHandler);\n zr.on('pinch', pinchHandler);\n }\n };\n\n this.disable = function () {\n zr.off('mousedown', mousedownHandler);\n zr.off('mousemove', mousemoveHandler);\n zr.off('mouseup', mouseupHandler);\n zr.off('mousewheel', mousewheelHandler);\n zr.off('pinch', pinchHandler);\n };\n\n this.dispose = this.disable;\n\n this.isDragging = function () {\n return this._dragging;\n };\n\n this.isPinching = function () {\n return this._pinching;\n };\n}\n\nzrUtil.mixin(RoamController, Eventful);\n\nfunction mousedown(e) {\n if (eventTool.isMiddleOrRightButtonOnMouseUpDown(e) || e.target && e.target.draggable) {\n return;\n }\n\n var x = e.offsetX;\n var y = e.offsetY; // Only check on mosedown, but not mousemove.\n // Mouse can be out of target when mouse moving.\n\n if (this.pointerChecker && this.pointerChecker(e, x, y)) {\n this._x = x;\n this._y = y;\n this._dragging = true;\n }\n}\n\nfunction mousemove(e) {\n if (!this._dragging || !isAvailableBehavior('moveOnMouseMove', e, this._opt) || e.gestureEvent === 'pinch' || interactionMutex.isTaken(this._zr, 'globalPan')) {\n return;\n }\n\n var x = e.offsetX;\n var y = e.offsetY;\n var oldX = this._x;\n var oldY = this._y;\n var dx = x - oldX;\n var dy = y - oldY;\n this._x = x;\n this._y = y;\n this._opt.preventDefaultMouseMove && eventTool.stop(e.event);\n trigger(this, 'pan', 'moveOnMouseMove', e, {\n dx: dx,\n dy: dy,\n oldX: oldX,\n oldY: oldY,\n newX: x,\n newY: y\n });\n}\n\nfunction mouseup(e) {\n if (!eventTool.isMiddleOrRightButtonOnMouseUpDown(e)) {\n this._dragging = false;\n }\n}\n\nfunction mousewheel(e) {\n var shouldZoom = isAvailableBehavior('zoomOnMouseWheel', e, this._opt);\n var shouldMove = isAvailableBehavior('moveOnMouseWheel', e, this._opt);\n var wheelDelta = e.wheelDelta;\n var absWheelDeltaDelta = Math.abs(wheelDelta);\n var originX = e.offsetX;\n var originY = e.offsetY; // wheelDelta maybe -0 in chrome mac.\n\n if (wheelDelta === 0 || !shouldZoom && !shouldMove) {\n return;\n } // If both `shouldZoom` and `shouldMove` is true, trigger\n // their event both, and the final behavior is determined\n // by event listener themselves.\n\n\n if (shouldZoom) {\n // Convenience:\n // Mac and VM Windows on Mac: scroll up: zoom out.\n // Windows: scroll up: zoom in.\n // FIXME: Should do more test in different environment.\n // wheelDelta is too complicated in difference nvironment\n // (https://developer.mozilla.org/en-US/docs/Web/Events/mousewheel),\n // although it has been normallized by zrender.\n // wheelDelta of mouse wheel is bigger than touch pad.\n var factor = absWheelDeltaDelta > 3 ? 1.4 : absWheelDeltaDelta > 1 ? 1.2 : 1.1;\n var scale = wheelDelta > 0 ? factor : 1 / factor;\n checkPointerAndTrigger(this, 'zoom', 'zoomOnMouseWheel', e, {\n scale: scale,\n originX: originX,\n originY: originY\n });\n }\n\n if (shouldMove) {\n // FIXME: Should do more test in different environment.\n var absDelta = Math.abs(wheelDelta); // wheelDelta of mouse wheel is bigger than touch pad.\n\n var scrollDelta = (wheelDelta > 0 ? 1 : -1) * (absDelta > 3 ? 0.4 : absDelta > 1 ? 0.15 : 0.05);\n checkPointerAndTrigger(this, 'scrollMove', 'moveOnMouseWheel', e, {\n scrollDelta: scrollDelta,\n originX: originX,\n originY: originY\n });\n }\n}\n\nfunction pinch(e) {\n if (interactionMutex.isTaken(this._zr, 'globalPan')) {\n return;\n }\n\n var scale = e.pinchScale > 1 ? 1.1 : 1 / 1.1;\n checkPointerAndTrigger(this, 'zoom', null, e, {\n scale: scale,\n originX: e.pinchX,\n originY: e.pinchY\n });\n}\n\nfunction checkPointerAndTrigger(controller, eventName, behaviorToCheck, e, contollerEvent) {\n if (controller.pointerChecker && controller.pointerChecker(e, contollerEvent.originX, contollerEvent.originY)) {\n // When mouse is out of roamController rect,\n // default befavoius should not be be disabled, otherwise\n // page sliding is disabled, contrary to expectation.\n eventTool.stop(e.event);\n trigger(controller, eventName, behaviorToCheck, e, contollerEvent);\n }\n}\n\nfunction trigger(controller, eventName, behaviorToCheck, e, contollerEvent) {\n // Also provide behavior checker for event listener, for some case that\n // multiple components share one listener.\n contollerEvent.isAvailableBehavior = zrUtil.bind(isAvailableBehavior, null, behaviorToCheck, e);\n controller.trigger(eventName, contollerEvent);\n} // settings: {\n// zoomOnMouseWheel\n// moveOnMouseMove\n// moveOnMouseWheel\n// }\n// The value can be: true / false / 'shift' / 'ctrl' / 'alt'.\n\n\nfunction isAvailableBehavior(behaviorToCheck, e, settings) {\n var setting = settings[behaviorToCheck];\n return !behaviorToCheck || setting && (!zrUtil.isString(setting) || e.event[setting + 'Key']);\n}\n\nvar _default = RoamController;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/helper/RoamController.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/helper/brushHelper.js": +/*!******************************************************************!*\ + !*** ./node_modules/echarts/lib/component/helper/brushHelper.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar BoundingRect = __webpack_require__(/*! zrender/lib/core/BoundingRect */ \"./node_modules/zrender/lib/core/BoundingRect.js\");\n\nvar _cursorHelper = __webpack_require__(/*! ./cursorHelper */ \"./node_modules/echarts/lib/component/helper/cursorHelper.js\");\n\nvar onIrrelevantElement = _cursorHelper.onIrrelevantElement;\n\nvar graphicUtil = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction makeRectPanelClipPath(rect) {\n rect = normalizeRect(rect);\n return function (localPoints, transform) {\n return graphicUtil.clipPointsByRect(localPoints, rect);\n };\n}\n\nfunction makeLinearBrushOtherExtent(rect, specifiedXYIndex) {\n rect = normalizeRect(rect);\n return function (xyIndex) {\n var idx = specifiedXYIndex != null ? specifiedXYIndex : xyIndex;\n var brushWidth = idx ? rect.width : rect.height;\n var base = idx ? rect.x : rect.y;\n return [base, base + (brushWidth || 0)];\n };\n}\n\nfunction makeRectIsTargetByCursor(rect, api, targetModel) {\n rect = normalizeRect(rect);\n return function (e, localCursorPoint, transform) {\n return rect.contain(localCursorPoint[0], localCursorPoint[1]) && !onIrrelevantElement(e, api, targetModel);\n };\n} // Consider width/height is negative.\n\n\nfunction normalizeRect(rect) {\n return BoundingRect.create(rect);\n}\n\nexports.makeRectPanelClipPath = makeRectPanelClipPath;\nexports.makeLinearBrushOtherExtent = makeLinearBrushOtherExtent;\nexports.makeRectIsTargetByCursor = makeRectIsTargetByCursor;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/helper/brushHelper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/helper/cursorHelper.js": +/*!*******************************************************************!*\ + !*** ./node_modules/echarts/lib/component/helper/cursorHelper.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar IRRELEVANT_EXCLUDES = {\n 'axisPointer': 1,\n 'tooltip': 1,\n 'brush': 1\n};\n/**\n * Avoid that: mouse click on a elements that is over geo or graph,\n * but roam is triggered.\n */\n\nfunction onIrrelevantElement(e, api, targetCoordSysModel) {\n var model = api.getComponentByElement(e.topTarget); // If model is axisModel, it works only if it is injected with coordinateSystem.\n\n var coordSys = model && model.coordinateSystem;\n return model && model !== targetCoordSysModel && !IRRELEVANT_EXCLUDES[model.mainType] && coordSys && coordSys.model !== targetCoordSysModel;\n}\n\nexports.onIrrelevantElement = onIrrelevantElement;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/helper/cursorHelper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/helper/interactionMutex.js": +/*!***********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/helper/interactionMutex.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar ATTR = '\\0_ec_interaction_mutex';\n\nfunction take(zr, resourceKey, userKey) {\n var store = getStore(zr);\n store[resourceKey] = userKey;\n}\n\nfunction release(zr, resourceKey, userKey) {\n var store = getStore(zr);\n var uKey = store[resourceKey];\n\n if (uKey === userKey) {\n store[resourceKey] = null;\n }\n}\n\nfunction isTaken(zr, resourceKey) {\n return !!getStore(zr)[resourceKey];\n}\n\nfunction getStore(zr) {\n return zr[ATTR] || (zr[ATTR] = {});\n}\n/**\n * payload: {\n * type: 'takeGlobalCursor',\n * key: 'dataZoomSelect', or 'brush', or ...,\n * If no userKey, release global cursor.\n * }\n */\n\n\necharts.registerAction({\n type: 'takeGlobalCursor',\n event: 'globalCursorTaken',\n update: 'update'\n}, function () {});\nexports.take = take;\nexports.release = release;\nexports.isTaken = isTaken;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/helper/interactionMutex.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/helper/listComponent.js": +/*!********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/helper/listComponent.js ***! + \********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _layout = __webpack_require__(/*! ../../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar getLayoutRect = _layout.getLayoutRect;\nvar layoutBox = _layout.box;\nvar positionElement = _layout.positionElement;\n\nvar formatUtil = __webpack_require__(/*! ../../util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Layout list like component.\n * It will box layout each items in group of component and then position the whole group in the viewport\n * @param {module:zrender/group/Group} group\n * @param {module:echarts/model/Component} componentModel\n * @param {module:echarts/ExtensionAPI}\n */\nfunction layout(group, componentModel, api) {\n var boxLayoutParams = componentModel.getBoxLayoutParams();\n var padding = componentModel.get('padding');\n var viewportSize = {\n width: api.getWidth(),\n height: api.getHeight()\n };\n var rect = getLayoutRect(boxLayoutParams, viewportSize, padding);\n layoutBox(componentModel.get('orient'), group, componentModel.get('itemGap'), rect.width, rect.height);\n positionElement(group, boxLayoutParams, viewportSize, padding);\n}\n\nfunction makeBackground(rect, componentModel) {\n var padding = formatUtil.normalizeCssArray(componentModel.get('padding'));\n var style = componentModel.getItemStyle(['color', 'opacity']);\n style.fill = componentModel.get('backgroundColor');\n var rect = new graphic.Rect({\n shape: {\n x: rect.x - padding[3],\n y: rect.y - padding[0],\n width: rect.width + padding[1] + padding[3],\n height: rect.height + padding[0] + padding[2],\n r: componentModel.get('borderRadius')\n },\n style: style,\n silent: true,\n z2: -1\n }); // FIXME\n // `subPixelOptimizeRect` may bring some gap between edge of viewpart\n // and background rect when setting like `left: 0`, `top: 0`.\n // graphic.subPixelOptimizeRect(rect);\n\n return rect;\n}\n\nexports.layout = layout;\nexports.makeBackground = makeBackground;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/helper/listComponent.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/helper/roamHelper.js": +/*!*****************************************************************!*\ + !*** ./node_modules/echarts/lib/component/helper/roamHelper.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * For geo and graph.\n *\n * @param {Object} controllerHost\n * @param {module:zrender/Element} controllerHost.target\n */\nfunction updateViewOnPan(controllerHost, dx, dy) {\n var target = controllerHost.target;\n var pos = target.position;\n pos[0] += dx;\n pos[1] += dy;\n target.dirty();\n}\n/**\n * For geo and graph.\n *\n * @param {Object} controllerHost\n * @param {module:zrender/Element} controllerHost.target\n * @param {number} controllerHost.zoom\n * @param {number} controllerHost.zoomLimit like: {min: 1, max: 2}\n */\n\n\nfunction updateViewOnZoom(controllerHost, zoomDelta, zoomX, zoomY) {\n var target = controllerHost.target;\n var zoomLimit = controllerHost.zoomLimit;\n var pos = target.position;\n var scale = target.scale;\n var newZoom = controllerHost.zoom = controllerHost.zoom || 1;\n newZoom *= zoomDelta;\n\n if (zoomLimit) {\n var zoomMin = zoomLimit.min || 0;\n var zoomMax = zoomLimit.max || Infinity;\n newZoom = Math.max(Math.min(zoomMax, newZoom), zoomMin);\n }\n\n var zoomScale = newZoom / controllerHost.zoom;\n controllerHost.zoom = newZoom; // Keep the mouse center when scaling\n\n pos[0] -= (zoomX - pos[0]) * (zoomScale - 1);\n pos[1] -= (zoomY - pos[1]) * (zoomScale - 1);\n scale[0] *= zoomScale;\n scale[1] *= zoomScale;\n target.dirty();\n}\n\nexports.updateViewOnPan = updateViewOnPan;\nexports.updateViewOnZoom = updateViewOnZoom;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/helper/roamHelper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/helper/selectableMixin.js": +/*!**********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/helper/selectableMixin.js ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Data selectable mixin for chart series.\n * To eanble data select, option of series must have `selectedMode`.\n * And each data item will use `selected` to toggle itself selected status\n */\nvar _default = {\n /**\n * @param {Array.} targetList [{name, value, selected}, ...]\n * If targetList is an array, it should like [{name: ..., value: ...}, ...].\n * If targetList is a \"List\", it must have coordDim: 'value' dimension and name.\n */\n updateSelectedMap: function (targetList) {\n this._targetList = zrUtil.isArray(targetList) ? targetList.slice() : [];\n this._selectTargetMap = zrUtil.reduce(targetList || [], function (targetMap, target) {\n targetMap.set(target.name, target);\n return targetMap;\n }, zrUtil.createHashMap());\n },\n\n /**\n * Either name or id should be passed as input here.\n * If both of them are defined, id is used.\n *\n * @param {string|undefined} name name of data\n * @param {number|undefined} id dataIndex of data\n */\n // PENGING If selectedMode is null ?\n select: function (name, id) {\n var target = id != null ? this._targetList[id] : this._selectTargetMap.get(name);\n var selectedMode = this.get('selectedMode');\n\n if (selectedMode === 'single') {\n this._selectTargetMap.each(function (target) {\n target.selected = false;\n });\n }\n\n target && (target.selected = true);\n },\n\n /**\n * Either name or id should be passed as input here.\n * If both of them are defined, id is used.\n *\n * @param {string|undefined} name name of data\n * @param {number|undefined} id dataIndex of data\n */\n unSelect: function (name, id) {\n var target = id != null ? this._targetList[id] : this._selectTargetMap.get(name); // var selectedMode = this.get('selectedMode');\n // selectedMode !== 'single' && target && (target.selected = false);\n\n target && (target.selected = false);\n },\n\n /**\n * Either name or id should be passed as input here.\n * If both of them are defined, id is used.\n *\n * @param {string|undefined} name name of data\n * @param {number|undefined} id dataIndex of data\n */\n toggleSelected: function (name, id) {\n var target = id != null ? this._targetList[id] : this._selectTargetMap.get(name);\n\n if (target != null) {\n this[target.selected ? 'unSelect' : 'select'](name, id);\n return target.selected;\n }\n },\n\n /**\n * Either name or id should be passed as input here.\n * If both of them are defined, id is used.\n *\n * @param {string|undefined} name name of data\n * @param {number|undefined} id dataIndex of data\n */\n isSelected: function (name, id) {\n var target = id != null ? this._targetList[id] : this._selectTargetMap.get(name);\n return target && target.selected;\n }\n};\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/helper/selectableMixin.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/helper/sliderMove.js": +/*!*****************************************************************!*\ + !*** ./node_modules/echarts/lib/component/helper/sliderMove.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Calculate slider move result.\n * Usage:\n * (1) If both handle0 and handle1 are needed to be moved, set minSpan the same as\n * maxSpan and the same as `Math.abs(handleEnd[1] - handleEnds[0])`.\n * (2) If handle0 is forbidden to cross handle1, set minSpan as `0`.\n *\n * @param {number} delta Move length.\n * @param {Array.} handleEnds handleEnds[0] can be bigger then handleEnds[1].\n * handleEnds will be modified in this method.\n * @param {Array.} extent handleEnds is restricted by extent.\n * extent[0] should less or equals than extent[1].\n * @param {number|string} handleIndex Can be 'all', means that both move the two handleEnds.\n * @param {number} [minSpan] The range of dataZoom can not be smaller than that.\n * If not set, handle0 and cross handle1. If set as a non-negative\n * number (including `0`), handles will push each other when reaching\n * the minSpan.\n * @param {number} [maxSpan] The range of dataZoom can not be larger than that.\n * @return {Array.} The input handleEnds.\n */\nfunction _default(delta, handleEnds, extent, handleIndex, minSpan, maxSpan) {\n delta = delta || 0;\n var extentSpan = extent[1] - extent[0]; // Notice maxSpan and minSpan can be null/undefined.\n\n if (minSpan != null) {\n minSpan = restrict(minSpan, [0, extentSpan]);\n }\n\n if (maxSpan != null) {\n maxSpan = Math.max(maxSpan, minSpan != null ? minSpan : 0);\n }\n\n if (handleIndex === 'all') {\n var handleSpan = Math.abs(handleEnds[1] - handleEnds[0]);\n handleSpan = restrict(handleSpan, [0, extentSpan]);\n minSpan = maxSpan = restrict(handleSpan, [minSpan, maxSpan]);\n handleIndex = 0;\n }\n\n handleEnds[0] = restrict(handleEnds[0], extent);\n handleEnds[1] = restrict(handleEnds[1], extent);\n var originalDistSign = getSpanSign(handleEnds, handleIndex);\n handleEnds[handleIndex] += delta; // Restrict in extent.\n\n var extentMinSpan = minSpan || 0;\n var realExtent = extent.slice();\n originalDistSign.sign < 0 ? realExtent[0] += extentMinSpan : realExtent[1] -= extentMinSpan;\n handleEnds[handleIndex] = restrict(handleEnds[handleIndex], realExtent); // Expand span.\n\n var currDistSign = getSpanSign(handleEnds, handleIndex);\n\n if (minSpan != null && (currDistSign.sign !== originalDistSign.sign || currDistSign.span < minSpan)) {\n // If minSpan exists, 'cross' is forbidden.\n handleEnds[1 - handleIndex] = handleEnds[handleIndex] + originalDistSign.sign * minSpan;\n } // Shrink span.\n\n\n var currDistSign = getSpanSign(handleEnds, handleIndex);\n\n if (maxSpan != null && currDistSign.span > maxSpan) {\n handleEnds[1 - handleIndex] = handleEnds[handleIndex] + currDistSign.sign * maxSpan;\n }\n\n return handleEnds;\n}\n\nfunction getSpanSign(handleEnds, handleIndex) {\n var dist = handleEnds[handleIndex] - handleEnds[1 - handleIndex]; // If `handleEnds[0] === handleEnds[1]`, always believe that handleEnd[0]\n // is at left of handleEnds[1] for non-cross case.\n\n return {\n span: Math.abs(dist),\n sign: dist > 0 ? -1 : dist < 0 ? 1 : handleIndex ? -1 : 1\n };\n}\n\nfunction restrict(value, extend) {\n return Math.min(extend[1] != null ? extend[1] : Infinity, Math.max(extend[0] != null ? extend[0] : -Infinity, value));\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/helper/sliderMove.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/legend.js": +/*!******************************************************!*\ + !*** ./node_modules/echarts/lib/component/legend.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n__webpack_require__(/*! ./legend/LegendModel */ \"./node_modules/echarts/lib/component/legend/LegendModel.js\");\n\n__webpack_require__(/*! ./legend/legendAction */ \"./node_modules/echarts/lib/component/legend/legendAction.js\");\n\n__webpack_require__(/*! ./legend/LegendView */ \"./node_modules/echarts/lib/component/legend/LegendView.js\");\n\nvar legendFilter = __webpack_require__(/*! ./legend/legendFilter */ \"./node_modules/echarts/lib/component/legend/legendFilter.js\");\n\nvar Component = __webpack_require__(/*! ../model/Component */ \"./node_modules/echarts/lib/model/Component.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Do not contain scrollable legend, for sake of file size.\n// Series Filter\necharts.registerProcessor(echarts.PRIORITY.PROCESSOR.SERIES_FILTER, legendFilter);\nComponent.registerSubTypeDefaulter('legend', function () {\n // Default 'plain' when no type specified.\n return 'plain';\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/legend.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/legend/LegendModel.js": +/*!******************************************************************!*\ + !*** ./node_modules/echarts/lib/component/legend/LegendModel.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar Model = __webpack_require__(/*! ../../model/Model */ \"./node_modules/echarts/lib/model/Model.js\");\n\nvar _model = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar isNameSpecified = _model.isNameSpecified;\n\nvar lang = __webpack_require__(/*! ../../lang */ \"./node_modules/echarts/lib/lang.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar langSelector = lang.legend.selector;\nvar defaultSelectorOption = {\n all: {\n type: 'all',\n title: zrUtil.clone(langSelector.all)\n },\n inverse: {\n type: 'inverse',\n title: zrUtil.clone(langSelector.inverse)\n }\n};\nvar LegendModel = echarts.extendComponentModel({\n type: 'legend.plain',\n dependencies: ['series'],\n layoutMode: {\n type: 'box',\n // legend.width/height are maxWidth/maxHeight actually,\n // whereas realy width/height is calculated by its content.\n // (Setting {left: 10, right: 10} does not make sense).\n // So consider the case:\n // `setOption({legend: {left: 10});`\n // then `setOption({legend: {right: 10});`\n // The previous `left` should be cleared by setting `ignoreSize`.\n ignoreSize: true\n },\n init: function (option, parentModel, ecModel) {\n this.mergeDefaultAndTheme(option, ecModel);\n option.selected = option.selected || {};\n\n this._updateSelector(option);\n },\n mergeOption: function (option) {\n LegendModel.superCall(this, 'mergeOption', option);\n\n this._updateSelector(option);\n },\n _updateSelector: function (option) {\n var selector = option.selector;\n\n if (selector === true) {\n selector = option.selector = ['all', 'inverse'];\n }\n\n if (zrUtil.isArray(selector)) {\n zrUtil.each(selector, function (item, index) {\n zrUtil.isString(item) && (item = {\n type: item\n });\n selector[index] = zrUtil.merge(item, defaultSelectorOption[item.type]);\n });\n }\n },\n optionUpdated: function () {\n this._updateData(this.ecModel);\n\n var legendData = this._data; // If selectedMode is single, try to select one\n\n if (legendData[0] && this.get('selectedMode') === 'single') {\n var hasSelected = false; // If has any selected in option.selected\n\n for (var i = 0; i < legendData.length; i++) {\n var name = legendData[i].get('name');\n\n if (this.isSelected(name)) {\n // Force to unselect others\n this.select(name);\n hasSelected = true;\n break;\n }\n } // Try select the first if selectedMode is single\n\n\n !hasSelected && this.select(legendData[0].get('name'));\n }\n },\n _updateData: function (ecModel) {\n var potentialData = [];\n var availableNames = [];\n ecModel.eachRawSeries(function (seriesModel) {\n var seriesName = seriesModel.name;\n availableNames.push(seriesName);\n var isPotential;\n\n if (seriesModel.legendVisualProvider) {\n var provider = seriesModel.legendVisualProvider;\n var names = provider.getAllNames();\n\n if (!ecModel.isSeriesFiltered(seriesModel)) {\n availableNames = availableNames.concat(names);\n }\n\n if (names.length) {\n potentialData = potentialData.concat(names);\n } else {\n isPotential = true;\n }\n } else {\n isPotential = true;\n }\n\n if (isPotential && isNameSpecified(seriesModel)) {\n potentialData.push(seriesModel.name);\n }\n });\n /**\n * @type {Array.}\n * @private\n */\n\n this._availableNames = availableNames; // If legend.data not specified in option, use availableNames as data,\n // which is convinient for user preparing option.\n\n var rawData = this.get('data') || potentialData;\n var legendData = zrUtil.map(rawData, function (dataItem) {\n // Can be string or number\n if (typeof dataItem === 'string' || typeof dataItem === 'number') {\n dataItem = {\n name: dataItem\n };\n }\n\n return new Model(dataItem, this, this.ecModel);\n }, this);\n /**\n * @type {Array.}\n * @private\n */\n\n this._data = legendData;\n },\n\n /**\n * @return {Array.}\n */\n getData: function () {\n return this._data;\n },\n\n /**\n * @param {string} name\n */\n select: function (name) {\n var selected = this.option.selected;\n var selectedMode = this.get('selectedMode');\n\n if (selectedMode === 'single') {\n var data = this._data;\n zrUtil.each(data, function (dataItem) {\n selected[dataItem.get('name')] = false;\n });\n }\n\n selected[name] = true;\n },\n\n /**\n * @param {string} name\n */\n unSelect: function (name) {\n if (this.get('selectedMode') !== 'single') {\n this.option.selected[name] = false;\n }\n },\n\n /**\n * @param {string} name\n */\n toggleSelected: function (name) {\n var selected = this.option.selected; // Default is true\n\n if (!selected.hasOwnProperty(name)) {\n selected[name] = true;\n }\n\n this[selected[name] ? 'unSelect' : 'select'](name);\n },\n allSelect: function () {\n var data = this._data;\n var selected = this.option.selected;\n zrUtil.each(data, function (dataItem) {\n selected[dataItem.get('name', true)] = true;\n });\n },\n inverseSelect: function () {\n var data = this._data;\n var selected = this.option.selected;\n zrUtil.each(data, function (dataItem) {\n var name = dataItem.get('name', true); // Initially, default value is true\n\n if (!selected.hasOwnProperty(name)) {\n selected[name] = true;\n }\n\n selected[name] = !selected[name];\n });\n },\n\n /**\n * @param {string} name\n */\n isSelected: function (name) {\n var selected = this.option.selected;\n return !(selected.hasOwnProperty(name) && !selected[name]) && zrUtil.indexOf(this._availableNames, name) >= 0;\n },\n getOrient: function () {\n return this.get('orient') === 'vertical' ? {\n index: 1,\n name: 'vertical'\n } : {\n index: 0,\n name: 'horizontal'\n };\n },\n defaultOption: {\n // 一级层叠\n zlevel: 0,\n // 二级层叠\n z: 4,\n show: true,\n // 布局方式,默认为水平布局,可选为:\n // 'horizontal' | 'vertical'\n orient: 'horizontal',\n left: 'center',\n // right: 'center',\n top: 0,\n // bottom: null,\n // 水平对齐\n // 'auto' | 'left' | 'right'\n // 默认为 'auto', 根据 x 的位置判断是左对齐还是右对齐\n align: 'auto',\n backgroundColor: 'rgba(0,0,0,0)',\n // 图例边框颜色\n borderColor: '#ccc',\n borderRadius: 0,\n // 图例边框线宽,单位px,默认为0(无边框)\n borderWidth: 0,\n // 图例内边距,单位px,默认各方向内边距为5,\n // 接受数组分别设定上右下左边距,同css\n padding: 5,\n // 各个item之间的间隔,单位px,默认为10,\n // 横向布局时为水平间隔,纵向布局时为纵向间隔\n itemGap: 10,\n // the width of legend symbol\n itemWidth: 25,\n // the height of legend symbol\n itemHeight: 14,\n // the color of unselected legend symbol\n inactiveColor: '#ccc',\n // the borderColor of unselected legend symbol\n inactiveBorderColor: '#ccc',\n itemStyle: {\n // the default borderWidth of legend symbol\n borderWidth: 0\n },\n textStyle: {\n // 图例文字颜色\n color: '#333'\n },\n // formatter: '',\n // 选择模式,默认开启图例开关\n selectedMode: true,\n // 配置默认选中状态,可配合LEGEND.SELECTED事件做动态数据载入\n // selected: null,\n // 图例内容(详见legend.data,数组中每一项代表一个item\n // data: [],\n // Usage:\n // selector: [{type: 'all or inverse', title: xxx}]\n // or\n // selector: true\n // or\n // selector: ['all', 'inverse']\n selector: false,\n selectorLabel: {\n show: true,\n borderRadius: 10,\n padding: [3, 5, 3, 5],\n fontSize: 12,\n fontFamily: ' sans-serif',\n color: '#666',\n borderWidth: 1,\n borderColor: '#666'\n },\n emphasis: {\n selectorLabel: {\n show: true,\n color: '#eee',\n backgroundColor: '#666'\n }\n },\n // Value can be 'start' or 'end'\n selectorPosition: 'auto',\n selectorItemGap: 7,\n selectorButtonGap: 10,\n // Tooltip 相关配置\n tooltip: {\n show: false\n }\n }\n});\nvar _default = LegendModel;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/legend/LegendModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/legend/LegendView.js": +/*!*****************************************************************!*\ + !*** ./node_modules/echarts/lib/component/legend/LegendView.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar _symbol = __webpack_require__(/*! ../../util/symbol */ \"./node_modules/echarts/lib/util/symbol.js\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar _listComponent = __webpack_require__(/*! ../helper/listComponent */ \"./node_modules/echarts/lib/component/helper/listComponent.js\");\n\nvar makeBackground = _listComponent.makeBackground;\n\nvar layoutUtil = __webpack_require__(/*! ../../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar curry = zrUtil.curry;\nvar each = zrUtil.each;\nvar Group = graphic.Group;\n\nvar _default = echarts.extendComponentView({\n type: 'legend.plain',\n newlineDisabled: false,\n\n /**\n * @override\n */\n init: function () {\n /**\n * @private\n * @type {module:zrender/container/Group}\n */\n this.group.add(this._contentGroup = new Group());\n /**\n * @private\n * @type {module:zrender/Element}\n */\n\n this._backgroundEl;\n /**\n * @private\n * @type {module:zrender/container/Group}\n */\n\n this.group.add(this._selectorGroup = new Group());\n /**\n * If first rendering, `contentGroup.position` is [0, 0], which\n * does not make sense and may cause unexepcted animation if adopted.\n * @private\n * @type {boolean}\n */\n\n this._isFirstRender = true;\n },\n\n /**\n * @protected\n */\n getContentGroup: function () {\n return this._contentGroup;\n },\n\n /**\n * @protected\n */\n getSelectorGroup: function () {\n return this._selectorGroup;\n },\n\n /**\n * @override\n */\n render: function (legendModel, ecModel, api) {\n var isFirstRender = this._isFirstRender;\n this._isFirstRender = false;\n this.resetInner();\n\n if (!legendModel.get('show', true)) {\n return;\n }\n\n var itemAlign = legendModel.get('align');\n var orient = legendModel.get('orient');\n\n if (!itemAlign || itemAlign === 'auto') {\n itemAlign = legendModel.get('left') === 'right' && orient === 'vertical' ? 'right' : 'left';\n }\n\n var selector = legendModel.get('selector', true);\n var selectorPosition = legendModel.get('selectorPosition', true);\n\n if (selector && (!selectorPosition || selectorPosition === 'auto')) {\n selectorPosition = orient === 'horizontal' ? 'end' : 'start';\n }\n\n this.renderInner(itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition); // Perform layout.\n\n var positionInfo = legendModel.getBoxLayoutParams();\n var viewportSize = {\n width: api.getWidth(),\n height: api.getHeight()\n };\n var padding = legendModel.get('padding');\n var maxSize = layoutUtil.getLayoutRect(positionInfo, viewportSize, padding);\n var mainRect = this.layoutInner(legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition); // Place mainGroup, based on the calculated `mainRect`.\n\n var layoutRect = layoutUtil.getLayoutRect(zrUtil.defaults({\n width: mainRect.width,\n height: mainRect.height\n }, positionInfo), viewportSize, padding);\n this.group.attr('position', [layoutRect.x - mainRect.x, layoutRect.y - mainRect.y]); // Render background after group is layout.\n\n this.group.add(this._backgroundEl = makeBackground(mainRect, legendModel));\n },\n\n /**\n * @protected\n */\n resetInner: function () {\n this.getContentGroup().removeAll();\n this._backgroundEl && this.group.remove(this._backgroundEl);\n this.getSelectorGroup().removeAll();\n },\n\n /**\n * @protected\n */\n renderInner: function (itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition) {\n var contentGroup = this.getContentGroup();\n var legendDrawnMap = zrUtil.createHashMap();\n var selectMode = legendModel.get('selectedMode');\n var excludeSeriesId = [];\n ecModel.eachRawSeries(function (seriesModel) {\n !seriesModel.get('legendHoverLink') && excludeSeriesId.push(seriesModel.id);\n });\n each(legendModel.getData(), function (itemModel, dataIndex) {\n var name = itemModel.get('name'); // Use empty string or \\n as a newline string\n\n if (!this.newlineDisabled && (name === '' || name === '\\n')) {\n contentGroup.add(new Group({\n newline: true\n }));\n return;\n } // Representitive series.\n\n\n var seriesModel = ecModel.getSeriesByName(name)[0];\n\n if (legendDrawnMap.get(name)) {\n // Have been drawed\n return;\n } // Legend to control series.\n\n\n if (seriesModel) {\n var data = seriesModel.getData();\n var color = data.getVisual('color');\n var borderColor = data.getVisual('borderColor'); // If color is a callback function\n\n if (typeof color === 'function') {\n // Use the first data\n color = color(seriesModel.getDataParams(0));\n } // If borderColor is a callback function\n\n\n if (typeof borderColor === 'function') {\n // Use the first data\n borderColor = borderColor(seriesModel.getDataParams(0));\n } // Using rect symbol defaultly\n\n\n var legendSymbolType = data.getVisual('legendSymbol') || 'roundRect';\n var symbolType = data.getVisual('symbol');\n\n var itemGroup = this._createItem(name, dataIndex, itemModel, legendModel, legendSymbolType, symbolType, itemAlign, color, borderColor, selectMode);\n\n itemGroup.on('click', curry(dispatchSelectAction, name, null, api, excludeSeriesId)).on('mouseover', curry(dispatchHighlightAction, seriesModel.name, null, api, excludeSeriesId)).on('mouseout', curry(dispatchDownplayAction, seriesModel.name, null, api, excludeSeriesId));\n legendDrawnMap.set(name, true);\n } else {\n // Legend to control data. In pie and funnel.\n ecModel.eachRawSeries(function (seriesModel) {\n // In case multiple series has same data name\n if (legendDrawnMap.get(name)) {\n return;\n }\n\n if (seriesModel.legendVisualProvider) {\n var provider = seriesModel.legendVisualProvider;\n\n if (!provider.containName(name)) {\n return;\n }\n\n var idx = provider.indexOfName(name);\n var color = provider.getItemVisual(idx, 'color');\n var borderColor = provider.getItemVisual(idx, 'borderColor');\n var legendSymbolType = 'roundRect';\n\n var itemGroup = this._createItem(name, dataIndex, itemModel, legendModel, legendSymbolType, null, itemAlign, color, borderColor, selectMode); // FIXME: consider different series has items with the same name.\n\n\n itemGroup.on('click', curry(dispatchSelectAction, null, name, api, excludeSeriesId)) // Should not specify the series name, consider legend controls\n // more than one pie series.\n .on('mouseover', curry(dispatchHighlightAction, null, name, api, excludeSeriesId)).on('mouseout', curry(dispatchDownplayAction, null, name, api, excludeSeriesId));\n legendDrawnMap.set(name, true);\n }\n }, this);\n }\n }, this);\n\n if (selector) {\n this._createSelector(selector, legendModel, api, orient, selectorPosition);\n }\n },\n _createSelector: function (selector, legendModel, api, orient, selectorPosition) {\n var selectorGroup = this.getSelectorGroup();\n each(selector, function (selectorItem) {\n createSelectorButton(selectorItem);\n });\n\n function createSelectorButton(selectorItem) {\n var type = selectorItem.type;\n var labelText = new graphic.Text({\n style: {\n x: 0,\n y: 0,\n align: 'center',\n verticalAlign: 'middle'\n },\n onclick: function () {\n api.dispatchAction({\n type: type === 'all' ? 'legendAllSelect' : 'legendInverseSelect'\n });\n }\n });\n selectorGroup.add(labelText);\n var labelModel = legendModel.getModel('selectorLabel');\n var emphasisLabelModel = legendModel.getModel('emphasis.selectorLabel');\n graphic.setLabelStyle(labelText.style, labelText.hoverStyle = {}, labelModel, emphasisLabelModel, {\n defaultText: selectorItem.title,\n isRectText: false\n });\n graphic.setHoverStyle(labelText);\n }\n },\n _createItem: function (name, dataIndex, itemModel, legendModel, legendSymbolType, symbolType, itemAlign, color, borderColor, selectMode) {\n var itemWidth = legendModel.get('itemWidth');\n var itemHeight = legendModel.get('itemHeight');\n var inactiveColor = legendModel.get('inactiveColor');\n var inactiveBorderColor = legendModel.get('inactiveBorderColor');\n var symbolKeepAspect = legendModel.get('symbolKeepAspect');\n var legendModelItemStyle = legendModel.getModel('itemStyle');\n var isSelected = legendModel.isSelected(name);\n var itemGroup = new Group();\n var textStyleModel = itemModel.getModel('textStyle');\n var itemIcon = itemModel.get('icon');\n var tooltipModel = itemModel.getModel('tooltip');\n var legendGlobalTooltipModel = tooltipModel.parentModel; // Use user given icon first\n\n legendSymbolType = itemIcon || legendSymbolType;\n var legendSymbol = createSymbol(legendSymbolType, 0, 0, itemWidth, itemHeight, isSelected ? color : inactiveColor, // symbolKeepAspect default true for legend\n symbolKeepAspect == null ? true : symbolKeepAspect);\n itemGroup.add(setSymbolStyle(legendSymbol, legendSymbolType, legendModelItemStyle, borderColor, inactiveBorderColor, isSelected)); // Compose symbols\n // PENDING\n\n if (!itemIcon && symbolType // At least show one symbol, can't be all none\n && (symbolType !== legendSymbolType || symbolType === 'none')) {\n var size = itemHeight * 0.8;\n\n if (symbolType === 'none') {\n symbolType = 'circle';\n }\n\n var legendSymbolCenter = createSymbol(symbolType, (itemWidth - size) / 2, (itemHeight - size) / 2, size, size, isSelected ? color : inactiveColor, // symbolKeepAspect default true for legend\n symbolKeepAspect == null ? true : symbolKeepAspect); // Put symbol in the center\n\n itemGroup.add(setSymbolStyle(legendSymbolCenter, symbolType, legendModelItemStyle, borderColor, inactiveBorderColor, isSelected));\n }\n\n var textX = itemAlign === 'left' ? itemWidth + 5 : -5;\n var textAlign = itemAlign;\n var formatter = legendModel.get('formatter');\n var content = name;\n\n if (typeof formatter === 'string' && formatter) {\n content = formatter.replace('{name}', name != null ? name : '');\n } else if (typeof formatter === 'function') {\n content = formatter(name);\n }\n\n itemGroup.add(new graphic.Text({\n style: graphic.setTextStyle({}, textStyleModel, {\n text: content,\n x: textX,\n y: itemHeight / 2,\n textFill: isSelected ? textStyleModel.getTextColor() : inactiveColor,\n textAlign: textAlign,\n textVerticalAlign: 'middle'\n })\n })); // Add a invisible rect to increase the area of mouse hover\n\n var hitRect = new graphic.Rect({\n shape: itemGroup.getBoundingRect(),\n invisible: true,\n tooltip: tooltipModel.get('show') ? zrUtil.extend({\n content: name,\n // Defaul formatter\n formatter: legendGlobalTooltipModel.get('formatter', true) || function () {\n return name;\n },\n formatterParams: {\n componentType: 'legend',\n legendIndex: legendModel.componentIndex,\n name: name,\n $vars: ['name']\n }\n }, tooltipModel.option) : null\n });\n itemGroup.add(hitRect);\n itemGroup.eachChild(function (child) {\n child.silent = true;\n });\n hitRect.silent = !selectMode;\n this.getContentGroup().add(itemGroup);\n graphic.setHoverStyle(itemGroup);\n itemGroup.__legendDataIndex = dataIndex;\n return itemGroup;\n },\n\n /**\n * @protected\n */\n layoutInner: function (legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition) {\n var contentGroup = this.getContentGroup();\n var selectorGroup = this.getSelectorGroup(); // Place items in contentGroup.\n\n layoutUtil.box(legendModel.get('orient'), contentGroup, legendModel.get('itemGap'), maxSize.width, maxSize.height);\n var contentRect = contentGroup.getBoundingRect();\n var contentPos = [-contentRect.x, -contentRect.y];\n\n if (selector) {\n // Place buttons in selectorGroup\n layoutUtil.box( // Buttons in selectorGroup always layout horizontally\n 'horizontal', selectorGroup, legendModel.get('selectorItemGap', true));\n var selectorRect = selectorGroup.getBoundingRect();\n var selectorPos = [-selectorRect.x, -selectorRect.y];\n var selectorButtonGap = legendModel.get('selectorButtonGap', true);\n var orientIdx = legendModel.getOrient().index;\n var wh = orientIdx === 0 ? 'width' : 'height';\n var hw = orientIdx === 0 ? 'height' : 'width';\n var yx = orientIdx === 0 ? 'y' : 'x';\n\n if (selectorPosition === 'end') {\n selectorPos[orientIdx] += contentRect[wh] + selectorButtonGap;\n } else {\n contentPos[orientIdx] += selectorRect[wh] + selectorButtonGap;\n } //Always align selector to content as 'middle'\n\n\n selectorPos[1 - orientIdx] += contentRect[hw] / 2 - selectorRect[hw] / 2;\n selectorGroup.attr('position', selectorPos);\n contentGroup.attr('position', contentPos);\n var mainRect = {\n x: 0,\n y: 0\n };\n mainRect[wh] = contentRect[wh] + selectorButtonGap + selectorRect[wh];\n mainRect[hw] = Math.max(contentRect[hw], selectorRect[hw]);\n mainRect[yx] = Math.min(0, selectorRect[yx] + selectorPos[1 - orientIdx]);\n return mainRect;\n } else {\n contentGroup.attr('position', contentPos);\n return this.group.getBoundingRect();\n }\n },\n\n /**\n * @protected\n */\n remove: function () {\n this.getContentGroup().removeAll();\n this._isFirstRender = true;\n }\n});\n\nfunction setSymbolStyle(symbol, symbolType, legendModelItemStyle, borderColor, inactiveBorderColor, isSelected) {\n var itemStyle;\n\n if (symbolType !== 'line' && symbolType.indexOf('empty') < 0) {\n itemStyle = legendModelItemStyle.getItemStyle();\n symbol.style.stroke = borderColor;\n\n if (!isSelected) {\n itemStyle.stroke = inactiveBorderColor;\n }\n } else {\n itemStyle = legendModelItemStyle.getItemStyle(['borderWidth', 'borderColor']);\n }\n\n return symbol.setStyle(itemStyle);\n}\n\nfunction dispatchSelectAction(seriesName, dataName, api, excludeSeriesId) {\n // downplay before unselect\n dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId);\n api.dispatchAction({\n type: 'legendToggleSelect',\n name: seriesName != null ? seriesName : dataName\n }); // highlight after select\n\n dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId);\n}\n\nfunction dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId) {\n // If element hover will move to a hoverLayer.\n var el = api.getZr().storage.getDisplayList()[0];\n\n if (!(el && el.useHoverLayer)) {\n api.dispatchAction({\n type: 'highlight',\n seriesName: seriesName,\n name: dataName,\n excludeSeriesId: excludeSeriesId\n });\n }\n}\n\nfunction dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId) {\n // If element hover will move to a hoverLayer.\n var el = api.getZr().storage.getDisplayList()[0];\n\n if (!(el && el.useHoverLayer)) {\n api.dispatchAction({\n type: 'downplay',\n seriesName: seriesName,\n name: dataName,\n excludeSeriesId: excludeSeriesId\n });\n }\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/legend/LegendView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/legend/ScrollableLegendModel.js": +/*!****************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/legend/ScrollableLegendModel.js ***! + \****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar LegendModel = __webpack_require__(/*! ./LegendModel */ \"./node_modules/echarts/lib/component/legend/LegendModel.js\");\n\nvar _layout = __webpack_require__(/*! ../../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar mergeLayoutParam = _layout.mergeLayoutParam;\nvar getLayoutParams = _layout.getLayoutParams;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar ScrollableLegendModel = LegendModel.extend({\n type: 'legend.scroll',\n\n /**\n * @param {number} scrollDataIndex\n */\n setScrollDataIndex: function (scrollDataIndex) {\n this.option.scrollDataIndex = scrollDataIndex;\n },\n defaultOption: {\n scrollDataIndex: 0,\n pageButtonItemGap: 5,\n pageButtonGap: null,\n pageButtonPosition: 'end',\n // 'start' or 'end'\n pageFormatter: '{current}/{total}',\n // If null/undefined, do not show page.\n pageIcons: {\n horizontal: ['M0,0L12,-10L12,10z', 'M0,0L-12,-10L-12,10z'],\n vertical: ['M0,0L20,0L10,-20z', 'M0,0L20,0L10,20z']\n },\n pageIconColor: '#2f4554',\n pageIconInactiveColor: '#aaa',\n pageIconSize: 15,\n // Can be [10, 3], which represents [width, height]\n pageTextStyle: {\n color: '#333'\n },\n animationDurationUpdate: 800\n },\n\n /**\n * @override\n */\n init: function (option, parentModel, ecModel, extraOpt) {\n var inputPositionParams = getLayoutParams(option);\n ScrollableLegendModel.superCall(this, 'init', option, parentModel, ecModel, extraOpt);\n mergeAndNormalizeLayoutParams(this, option, inputPositionParams);\n },\n\n /**\n * @override\n */\n mergeOption: function (option, extraOpt) {\n ScrollableLegendModel.superCall(this, 'mergeOption', option, extraOpt);\n mergeAndNormalizeLayoutParams(this, this.option, option);\n }\n}); // Do not `ignoreSize` to enable setting {left: 10, right: 10}.\n\nfunction mergeAndNormalizeLayoutParams(legendModel, target, raw) {\n var orient = legendModel.getOrient();\n var ignoreSize = [1, 1];\n ignoreSize[orient.index] = 0;\n mergeLayoutParam(target, raw, {\n type: 'box',\n ignoreSize: ignoreSize\n });\n}\n\nvar _default = ScrollableLegendModel;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/legend/ScrollableLegendModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/legend/ScrollableLegendView.js": +/*!***************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/legend/ScrollableLegendView.js ***! + \***************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar layoutUtil = __webpack_require__(/*! ../../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar LegendView = __webpack_require__(/*! ./LegendView */ \"./node_modules/echarts/lib/component/legend/LegendView.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Separate legend and scrollable legend to reduce package size.\n */\nvar Group = graphic.Group;\nvar WH = ['width', 'height'];\nvar XY = ['x', 'y'];\nvar ScrollableLegendView = LegendView.extend({\n type: 'legend.scroll',\n newlineDisabled: true,\n init: function () {\n ScrollableLegendView.superCall(this, 'init');\n /**\n * @private\n * @type {number} For `scroll`.\n */\n\n this._currentIndex = 0;\n /**\n * @private\n * @type {module:zrender/container/Group}\n */\n\n this.group.add(this._containerGroup = new Group());\n\n this._containerGroup.add(this.getContentGroup());\n /**\n * @private\n * @type {module:zrender/container/Group}\n */\n\n\n this.group.add(this._controllerGroup = new Group());\n /**\n *\n * @private\n */\n\n this._showController;\n },\n\n /**\n * @override\n */\n resetInner: function () {\n ScrollableLegendView.superCall(this, 'resetInner');\n\n this._controllerGroup.removeAll();\n\n this._containerGroup.removeClipPath();\n\n this._containerGroup.__rectSize = null;\n },\n\n /**\n * @override\n */\n renderInner: function (itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition) {\n var me = this; // Render content items.\n\n ScrollableLegendView.superCall(this, 'renderInner', itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition);\n var controllerGroup = this._controllerGroup; // FIXME: support be 'auto' adapt to size number text length,\n // e.g., '3/12345' should not overlap with the control arrow button.\n\n var pageIconSize = legendModel.get('pageIconSize', true);\n\n if (!zrUtil.isArray(pageIconSize)) {\n pageIconSize = [pageIconSize, pageIconSize];\n }\n\n createPageButton('pagePrev', 0);\n var pageTextStyleModel = legendModel.getModel('pageTextStyle');\n controllerGroup.add(new graphic.Text({\n name: 'pageText',\n style: {\n textFill: pageTextStyleModel.getTextColor(),\n font: pageTextStyleModel.getFont(),\n textVerticalAlign: 'middle',\n textAlign: 'center'\n },\n silent: true\n }));\n createPageButton('pageNext', 1);\n\n function createPageButton(name, iconIdx) {\n var pageDataIndexName = name + 'DataIndex';\n var icon = graphic.createIcon(legendModel.get('pageIcons', true)[legendModel.getOrient().name][iconIdx], {\n // Buttons will be created in each render, so we do not need\n // to worry about avoiding using legendModel kept in scope.\n onclick: zrUtil.bind(me._pageGo, me, pageDataIndexName, legendModel, api)\n }, {\n x: -pageIconSize[0] / 2,\n y: -pageIconSize[1] / 2,\n width: pageIconSize[0],\n height: pageIconSize[1]\n });\n icon.name = name;\n controllerGroup.add(icon);\n }\n },\n\n /**\n * @override\n */\n layoutInner: function (legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition) {\n var selectorGroup = this.getSelectorGroup();\n var orientIdx = legendModel.getOrient().index;\n var wh = WH[orientIdx];\n var xy = XY[orientIdx];\n var hw = WH[1 - orientIdx];\n var yx = XY[1 - orientIdx];\n selector && layoutUtil.box( // Buttons in selectorGroup always layout horizontally\n 'horizontal', selectorGroup, legendModel.get('selectorItemGap', true));\n var selectorButtonGap = legendModel.get('selectorButtonGap', true);\n var selectorRect = selectorGroup.getBoundingRect();\n var selectorPos = [-selectorRect.x, -selectorRect.y];\n var processMaxSize = zrUtil.clone(maxSize);\n selector && (processMaxSize[wh] = maxSize[wh] - selectorRect[wh] - selectorButtonGap);\n\n var mainRect = this._layoutContentAndController(legendModel, isFirstRender, processMaxSize, orientIdx, wh, hw, yx);\n\n if (selector) {\n if (selectorPosition === 'end') {\n selectorPos[orientIdx] += mainRect[wh] + selectorButtonGap;\n } else {\n var offset = selectorRect[wh] + selectorButtonGap;\n selectorPos[orientIdx] -= offset;\n mainRect[xy] -= offset;\n }\n\n mainRect[wh] += selectorRect[wh] + selectorButtonGap;\n selectorPos[1 - orientIdx] += mainRect[yx] + mainRect[hw] / 2 - selectorRect[hw] / 2;\n mainRect[hw] = Math.max(mainRect[hw], selectorRect[hw]);\n mainRect[yx] = Math.min(mainRect[yx], selectorRect[yx] + selectorPos[1 - orientIdx]);\n selectorGroup.attr('position', selectorPos);\n }\n\n return mainRect;\n },\n _layoutContentAndController: function (legendModel, isFirstRender, maxSize, orientIdx, wh, hw, yx) {\n var contentGroup = this.getContentGroup();\n var containerGroup = this._containerGroup;\n var controllerGroup = this._controllerGroup; // Place items in contentGroup.\n\n layoutUtil.box(legendModel.get('orient'), contentGroup, legendModel.get('itemGap'), !orientIdx ? null : maxSize.width, orientIdx ? null : maxSize.height);\n layoutUtil.box( // Buttons in controller are layout always horizontally.\n 'horizontal', controllerGroup, legendModel.get('pageButtonItemGap', true));\n var contentRect = contentGroup.getBoundingRect();\n var controllerRect = controllerGroup.getBoundingRect();\n var showController = this._showController = contentRect[wh] > maxSize[wh];\n var contentPos = [-contentRect.x, -contentRect.y]; // Remain contentPos when scroll animation perfroming.\n // If first rendering, `contentGroup.position` is [0, 0], which\n // does not make sense and may cause unexepcted animation if adopted.\n\n if (!isFirstRender) {\n contentPos[orientIdx] = contentGroup.position[orientIdx];\n } // Layout container group based on 0.\n\n\n var containerPos = [0, 0];\n var controllerPos = [-controllerRect.x, -controllerRect.y];\n var pageButtonGap = zrUtil.retrieve2(legendModel.get('pageButtonGap', true), legendModel.get('itemGap', true)); // Place containerGroup and controllerGroup and contentGroup.\n\n if (showController) {\n var pageButtonPosition = legendModel.get('pageButtonPosition', true); // controller is on the right / bottom.\n\n if (pageButtonPosition === 'end') {\n controllerPos[orientIdx] += maxSize[wh] - controllerRect[wh];\n } // controller is on the left / top.\n else {\n containerPos[orientIdx] += controllerRect[wh] + pageButtonGap;\n }\n } // Always align controller to content as 'middle'.\n\n\n controllerPos[1 - orientIdx] += contentRect[hw] / 2 - controllerRect[hw] / 2;\n contentGroup.attr('position', contentPos);\n containerGroup.attr('position', containerPos);\n controllerGroup.attr('position', controllerPos); // Calculate `mainRect` and set `clipPath`.\n // mainRect should not be calculated by `this.group.getBoundingRect()`\n // for sake of the overflow.\n\n var mainRect = {\n x: 0,\n y: 0\n }; // Consider content may be overflow (should be clipped).\n\n mainRect[wh] = showController ? maxSize[wh] : contentRect[wh];\n mainRect[hw] = Math.max(contentRect[hw], controllerRect[hw]); // `containerRect[yx] + containerPos[1 - orientIdx]` is 0.\n\n mainRect[yx] = Math.min(0, controllerRect[yx] + controllerPos[1 - orientIdx]);\n containerGroup.__rectSize = maxSize[wh];\n\n if (showController) {\n var clipShape = {\n x: 0,\n y: 0\n };\n clipShape[wh] = Math.max(maxSize[wh] - controllerRect[wh] - pageButtonGap, 0);\n clipShape[hw] = mainRect[hw];\n containerGroup.setClipPath(new graphic.Rect({\n shape: clipShape\n })); // Consider content may be larger than container, container rect\n // can not be obtained from `containerGroup.getBoundingRect()`.\n\n containerGroup.__rectSize = clipShape[wh];\n } else {\n // Do not remove or ignore controller. Keep them set as placeholders.\n controllerGroup.eachChild(function (child) {\n child.attr({\n invisible: true,\n silent: true\n });\n });\n } // Content translate animation.\n\n\n var pageInfo = this._getPageInfo(legendModel);\n\n pageInfo.pageIndex != null && graphic.updateProps(contentGroup, {\n position: pageInfo.contentPosition\n }, // When switch from \"show controller\" to \"not show controller\", view should be\n // updated immediately without animation, otherwise causes weird effect.\n showController ? legendModel : false);\n\n this._updatePageInfoView(legendModel, pageInfo);\n\n return mainRect;\n },\n _pageGo: function (to, legendModel, api) {\n var scrollDataIndex = this._getPageInfo(legendModel)[to];\n\n scrollDataIndex != null && api.dispatchAction({\n type: 'legendScroll',\n scrollDataIndex: scrollDataIndex,\n legendId: legendModel.id\n });\n },\n _updatePageInfoView: function (legendModel, pageInfo) {\n var controllerGroup = this._controllerGroup;\n zrUtil.each(['pagePrev', 'pageNext'], function (name) {\n var canJump = pageInfo[name + 'DataIndex'] != null;\n var icon = controllerGroup.childOfName(name);\n\n if (icon) {\n icon.setStyle('fill', canJump ? legendModel.get('pageIconColor', true) : legendModel.get('pageIconInactiveColor', true));\n icon.cursor = canJump ? 'pointer' : 'default';\n }\n });\n var pageText = controllerGroup.childOfName('pageText');\n var pageFormatter = legendModel.get('pageFormatter');\n var pageIndex = pageInfo.pageIndex;\n var current = pageIndex != null ? pageIndex + 1 : 0;\n var total = pageInfo.pageCount;\n pageText && pageFormatter && pageText.setStyle('text', zrUtil.isString(pageFormatter) ? pageFormatter.replace('{current}', current).replace('{total}', total) : pageFormatter({\n current: current,\n total: total\n }));\n },\n\n /**\n * @param {module:echarts/model/Model} legendModel\n * @return {Object} {\n * contentPosition: Array., null when data item not found.\n * pageIndex: number, null when data item not found.\n * pageCount: number, always be a number, can be 0.\n * pagePrevDataIndex: number, null when no previous page.\n * pageNextDataIndex: number, null when no next page.\n * }\n */\n _getPageInfo: function (legendModel) {\n var scrollDataIndex = legendModel.get('scrollDataIndex', true);\n var contentGroup = this.getContentGroup();\n var containerRectSize = this._containerGroup.__rectSize;\n var orientIdx = legendModel.getOrient().index;\n var wh = WH[orientIdx];\n var xy = XY[orientIdx];\n\n var targetItemIndex = this._findTargetItemIndex(scrollDataIndex);\n\n var children = contentGroup.children();\n var targetItem = children[targetItemIndex];\n var itemCount = children.length;\n var pCount = !itemCount ? 0 : 1;\n var result = {\n contentPosition: contentGroup.position.slice(),\n pageCount: pCount,\n pageIndex: pCount - 1,\n pagePrevDataIndex: null,\n pageNextDataIndex: null\n };\n\n if (!targetItem) {\n return result;\n }\n\n var targetItemInfo = getItemInfo(targetItem);\n result.contentPosition[orientIdx] = -targetItemInfo.s; // Strategy:\n // (1) Always align based on the left/top most item.\n // (2) It is user-friendly that the last item shown in the\n // current window is shown at the begining of next window.\n // Otherwise if half of the last item is cut by the window,\n // it will have no chance to display entirely.\n // (3) Consider that item size probably be different, we\n // have calculate pageIndex by size rather than item index,\n // and we can not get page index directly by division.\n // (4) The window is to narrow to contain more than\n // one item, we should make sure that the page can be fliped.\n\n for (var i = targetItemIndex + 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i <= itemCount; ++i) {\n currItemInfo = getItemInfo(children[i]);\n\n if ( // Half of the last item is out of the window.\n !currItemInfo && winEndItemInfo.e > winStartItemInfo.s + containerRectSize || // If the current item does not intersect with the window, the new page\n // can be started at the current item or the last item.\n currItemInfo && !intersect(currItemInfo, winStartItemInfo.s)) {\n if (winEndItemInfo.i > winStartItemInfo.i) {\n winStartItemInfo = winEndItemInfo;\n } else {\n // e.g., when page size is smaller than item size.\n winStartItemInfo = currItemInfo;\n }\n\n if (winStartItemInfo) {\n if (result.pageNextDataIndex == null) {\n result.pageNextDataIndex = winStartItemInfo.i;\n }\n\n ++result.pageCount;\n }\n }\n\n winEndItemInfo = currItemInfo;\n }\n\n for (var i = targetItemIndex - 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i >= -1; --i) {\n currItemInfo = getItemInfo(children[i]);\n\n if ( // If the the end item does not intersect with the window started\n // from the current item, a page can be settled.\n (!currItemInfo || !intersect(winEndItemInfo, currItemInfo.s)) && // e.g., when page size is smaller than item size.\n winStartItemInfo.i < winEndItemInfo.i) {\n winEndItemInfo = winStartItemInfo;\n\n if (result.pagePrevDataIndex == null) {\n result.pagePrevDataIndex = winStartItemInfo.i;\n }\n\n ++result.pageCount;\n ++result.pageIndex;\n }\n\n winStartItemInfo = currItemInfo;\n }\n\n return result;\n\n function getItemInfo(el) {\n if (el) {\n var itemRect = el.getBoundingRect();\n var start = itemRect[xy] + el.position[orientIdx];\n return {\n s: start,\n e: start + itemRect[wh],\n i: el.__legendDataIndex\n };\n }\n }\n\n function intersect(itemInfo, winStart) {\n return itemInfo.e >= winStart && itemInfo.s <= winStart + containerRectSize;\n }\n },\n _findTargetItemIndex: function (targetDataIndex) {\n if (!this._showController) {\n return 0;\n }\n\n var index;\n var contentGroup = this.getContentGroup();\n var defaultIndex;\n contentGroup.eachChild(function (child, idx) {\n var legendDataIdx = child.__legendDataIndex; // FIXME\n // If the given targetDataIndex (from model) is illegal,\n // we use defaultIndex. But the index on the legend model and\n // action payload is still illegal. That case will not be\n // changed until some scenario requires.\n\n if (defaultIndex == null && legendDataIdx != null) {\n defaultIndex = idx;\n }\n\n if (legendDataIdx === targetDataIndex) {\n index = idx;\n }\n });\n return index != null ? index : defaultIndex;\n }\n});\nvar _default = ScrollableLegendView;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/legend/ScrollableLegendView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/legend/legendAction.js": +/*!*******************************************************************!*\ + !*** ./node_modules/echarts/lib/component/legend/legendAction.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction legendSelectActionHandler(methodName, payload, ecModel) {\n var selectedMap = {};\n var isToggleSelect = methodName === 'toggleSelected';\n var isSelected; // Update all legend components\n\n ecModel.eachComponent('legend', function (legendModel) {\n if (isToggleSelect && isSelected != null) {\n // Force other legend has same selected status\n // Or the first is toggled to true and other are toggled to false\n // In the case one legend has some item unSelected in option. And if other legend\n // doesn't has the item, they will assume it is selected.\n legendModel[isSelected ? 'select' : 'unSelect'](payload.name);\n } else if (methodName === 'allSelect' || methodName === 'inverseSelect') {\n legendModel[methodName]();\n } else {\n legendModel[methodName](payload.name);\n isSelected = legendModel.isSelected(payload.name);\n }\n\n var legendData = legendModel.getData();\n zrUtil.each(legendData, function (model) {\n var name = model.get('name'); // Wrap element\n\n if (name === '\\n' || name === '') {\n return;\n }\n\n var isItemSelected = legendModel.isSelected(name);\n\n if (selectedMap.hasOwnProperty(name)) {\n // Unselected if any legend is unselected\n selectedMap[name] = selectedMap[name] && isItemSelected;\n } else {\n selectedMap[name] = isItemSelected;\n }\n });\n }); // Return the event explicitly\n\n return methodName === 'allSelect' || methodName === 'inverseSelect' ? {\n selected: selectedMap\n } : {\n name: payload.name,\n selected: selectedMap\n };\n}\n/**\n * @event legendToggleSelect\n * @type {Object}\n * @property {string} type 'legendToggleSelect'\n * @property {string} [from]\n * @property {string} name Series name or data item name\n */\n\n\necharts.registerAction('legendToggleSelect', 'legendselectchanged', zrUtil.curry(legendSelectActionHandler, 'toggleSelected'));\necharts.registerAction('legendAllSelect', 'legendselectall', zrUtil.curry(legendSelectActionHandler, 'allSelect'));\necharts.registerAction('legendInverseSelect', 'legendinverseselect', zrUtil.curry(legendSelectActionHandler, 'inverseSelect'));\n/**\n * @event legendSelect\n * @type {Object}\n * @property {string} type 'legendSelect'\n * @property {string} name Series name or data item name\n */\n\necharts.registerAction('legendSelect', 'legendselected', zrUtil.curry(legendSelectActionHandler, 'select'));\n/**\n * @event legendUnSelect\n * @type {Object}\n * @property {string} type 'legendUnSelect'\n * @property {string} name Series name or data item name\n */\n\necharts.registerAction('legendUnSelect', 'legendunselected', zrUtil.curry(legendSelectActionHandler, 'unSelect'));\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/legend/legendAction.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/legend/legendFilter.js": +/*!*******************************************************************!*\ + !*** ./node_modules/echarts/lib/component/legend/legendFilter.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel) {\n var legendModels = ecModel.findComponents({\n mainType: 'legend'\n });\n\n if (legendModels && legendModels.length) {\n ecModel.filterSeries(function (series) {\n // If in any legend component the status is not selected.\n // Because in legend series is assumed selected when it is not in the legend data.\n for (var i = 0; i < legendModels.length; i++) {\n if (!legendModels[i].isSelected(series.name)) {\n return false;\n }\n }\n\n return true;\n });\n }\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/legend/legendFilter.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/legend/scrollableLegendAction.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/legend/scrollableLegendAction.js ***! + \*****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @event legendScroll\n * @type {Object}\n * @property {string} type 'legendScroll'\n * @property {string} scrollDataIndex\n */\necharts.registerAction('legendScroll', 'legendscroll', function (payload, ecModel) {\n var scrollDataIndex = payload.scrollDataIndex;\n scrollDataIndex != null && ecModel.eachComponent({\n mainType: 'legend',\n subType: 'scroll',\n query: payload\n }, function (legendModel) {\n legendModel.setScrollDataIndex(scrollDataIndex);\n });\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/legend/scrollableLegendAction.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/legendScroll.js": +/*!************************************************************!*\ + !*** ./node_modules/echarts/lib/component/legendScroll.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(/*! ./legend */ \"./node_modules/echarts/lib/component/legend.js\");\n\n__webpack_require__(/*! ./legend/ScrollableLegendModel */ \"./node_modules/echarts/lib/component/legend/ScrollableLegendModel.js\");\n\n__webpack_require__(/*! ./legend/ScrollableLegendView */ \"./node_modules/echarts/lib/component/legend/ScrollableLegendView.js\");\n\n__webpack_require__(/*! ./legend/scrollableLegendAction */ \"./node_modules/echarts/lib/component/legend/scrollableLegendAction.js\");\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/legendScroll.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/markArea.js": +/*!********************************************************!*\ + !*** ./node_modules/echarts/lib/component/markArea.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n__webpack_require__(/*! ./marker/MarkAreaModel */ \"./node_modules/echarts/lib/component/marker/MarkAreaModel.js\");\n\n__webpack_require__(/*! ./marker/MarkAreaView */ \"./node_modules/echarts/lib/component/marker/MarkAreaView.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerPreprocessor(function (opt) {\n // Make sure markArea component is enabled\n opt.markArea = opt.markArea || {};\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/markArea.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/markLine.js": +/*!********************************************************!*\ + !*** ./node_modules/echarts/lib/component/markLine.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n__webpack_require__(/*! ./marker/MarkLineModel */ \"./node_modules/echarts/lib/component/marker/MarkLineModel.js\");\n\n__webpack_require__(/*! ./marker/MarkLineView */ \"./node_modules/echarts/lib/component/marker/MarkLineView.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerPreprocessor(function (opt) {\n // Make sure markLine component is enabled\n opt.markLine = opt.markLine || {};\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/markLine.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/markPoint.js": +/*!*********************************************************!*\ + !*** ./node_modules/echarts/lib/component/markPoint.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n__webpack_require__(/*! ./marker/MarkPointModel */ \"./node_modules/echarts/lib/component/marker/MarkPointModel.js\");\n\n__webpack_require__(/*! ./marker/MarkPointView */ \"./node_modules/echarts/lib/component/marker/MarkPointView.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// HINT Markpoint can't be used too much\necharts.registerPreprocessor(function (opt) {\n // Make sure markPoint component is enabled\n opt.markPoint = opt.markPoint || {};\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/markPoint.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/marker/MarkAreaModel.js": +/*!********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/marker/MarkAreaModel.js ***! + \********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar MarkerModel = __webpack_require__(/*! ./MarkerModel */ \"./node_modules/echarts/lib/component/marker/MarkerModel.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = MarkerModel.extend({\n type: 'markArea',\n defaultOption: {\n zlevel: 0,\n // PENDING\n z: 1,\n tooltip: {\n trigger: 'item'\n },\n // markArea should fixed on the coordinate system\n animation: false,\n label: {\n show: true,\n position: 'top'\n },\n itemStyle: {\n // color and borderColor default to use color from series\n // color: 'auto'\n // borderColor: 'auto'\n borderWidth: 0\n },\n emphasis: {\n label: {\n show: true,\n position: 'top'\n }\n }\n }\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/marker/MarkAreaModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/marker/MarkAreaView.js": +/*!*******************************************************************!*\ + !*** ./node_modules/echarts/lib/component/marker/MarkAreaView.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar colorUtil = __webpack_require__(/*! zrender/lib/tool/color */ \"./node_modules/zrender/lib/tool/color.js\");\n\nvar List = __webpack_require__(/*! ../../data/List */ \"./node_modules/echarts/lib/data/List.js\");\n\nvar numberUtil = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar markerHelper = __webpack_require__(/*! ./markerHelper */ \"./node_modules/echarts/lib/component/marker/markerHelper.js\");\n\nvar MarkerView = __webpack_require__(/*! ./MarkerView */ \"./node_modules/echarts/lib/component/marker/MarkerView.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// TODO Better on polar\nvar markAreaTransform = function (seriesModel, coordSys, maModel, item) {\n var lt = markerHelper.dataTransform(seriesModel, item[0]);\n var rb = markerHelper.dataTransform(seriesModel, item[1]);\n var retrieve = zrUtil.retrieve; // FIXME make sure lt is less than rb\n\n var ltCoord = lt.coord;\n var rbCoord = rb.coord;\n ltCoord[0] = retrieve(ltCoord[0], -Infinity);\n ltCoord[1] = retrieve(ltCoord[1], -Infinity);\n rbCoord[0] = retrieve(rbCoord[0], Infinity);\n rbCoord[1] = retrieve(rbCoord[1], Infinity); // Merge option into one\n\n var result = zrUtil.mergeAll([{}, lt, rb]);\n result.coord = [lt.coord, rb.coord];\n result.x0 = lt.x;\n result.y0 = lt.y;\n result.x1 = rb.x;\n result.y1 = rb.y;\n return result;\n};\n\nfunction isInifinity(val) {\n return !isNaN(val) && !isFinite(val);\n} // If a markArea has one dim\n\n\nfunction ifMarkLineHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) {\n var otherDimIndex = 1 - dimIndex;\n return isInifinity(fromCoord[otherDimIndex]) && isInifinity(toCoord[otherDimIndex]);\n}\n\nfunction markAreaFilter(coordSys, item) {\n var fromCoord = item.coord[0];\n var toCoord = item.coord[1];\n\n if (coordSys.type === 'cartesian2d') {\n // In case\n // {\n // markArea: {\n // data: [{ yAxis: 2 }]\n // }\n // }\n if (fromCoord && toCoord && (ifMarkLineHasOnlyDim(1, fromCoord, toCoord, coordSys) || ifMarkLineHasOnlyDim(0, fromCoord, toCoord, coordSys))) {\n return true;\n }\n }\n\n return markerHelper.dataFilter(coordSys, {\n coord: fromCoord,\n x: item.x0,\n y: item.y0\n }) || markerHelper.dataFilter(coordSys, {\n coord: toCoord,\n x: item.x1,\n y: item.y1\n });\n} // dims can be ['x0', 'y0'], ['x1', 'y1'], ['x0', 'y1'], ['x1', 'y0']\n\n\nfunction getSingleMarkerEndPoint(data, idx, dims, seriesModel, api) {\n var coordSys = seriesModel.coordinateSystem;\n var itemModel = data.getItemModel(idx);\n var point;\n var xPx = numberUtil.parsePercent(itemModel.get(dims[0]), api.getWidth());\n var yPx = numberUtil.parsePercent(itemModel.get(dims[1]), api.getHeight());\n\n if (!isNaN(xPx) && !isNaN(yPx)) {\n point = [xPx, yPx];\n } else {\n // Chart like bar may have there own marker positioning logic\n if (seriesModel.getMarkerPosition) {\n // Use the getMarkerPoisition\n point = seriesModel.getMarkerPosition(data.getValues(dims, idx));\n } else {\n var x = data.get(dims[0], idx);\n var y = data.get(dims[1], idx);\n var pt = [x, y];\n coordSys.clampData && coordSys.clampData(pt, pt);\n point = coordSys.dataToPoint(pt, true);\n }\n\n if (coordSys.type === 'cartesian2d') {\n var xAxis = coordSys.getAxis('x');\n var yAxis = coordSys.getAxis('y');\n var x = data.get(dims[0], idx);\n var y = data.get(dims[1], idx);\n\n if (isInifinity(x)) {\n point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[dims[0] === 'x0' ? 0 : 1]);\n } else if (isInifinity(y)) {\n point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[dims[1] === 'y0' ? 0 : 1]);\n }\n } // Use x, y if has any\n\n\n if (!isNaN(xPx)) {\n point[0] = xPx;\n }\n\n if (!isNaN(yPx)) {\n point[1] = yPx;\n }\n }\n\n return point;\n}\n\nvar dimPermutations = [['x0', 'y0'], ['x1', 'y0'], ['x1', 'y1'], ['x0', 'y1']];\nMarkerView.extend({\n type: 'markArea',\n // updateLayout: function (markAreaModel, ecModel, api) {\n // ecModel.eachSeries(function (seriesModel) {\n // var maModel = seriesModel.markAreaModel;\n // if (maModel) {\n // var areaData = maModel.getData();\n // areaData.each(function (idx) {\n // var points = zrUtil.map(dimPermutations, function (dim) {\n // return getSingleMarkerEndPoint(areaData, idx, dim, seriesModel, api);\n // });\n // // Layout\n // areaData.setItemLayout(idx, points);\n // var el = areaData.getItemGraphicEl(idx);\n // el.setShape('points', points);\n // });\n // }\n // }, this);\n // },\n updateTransform: function (markAreaModel, ecModel, api) {\n ecModel.eachSeries(function (seriesModel) {\n var maModel = seriesModel.markAreaModel;\n\n if (maModel) {\n var areaData = maModel.getData();\n areaData.each(function (idx) {\n var points = zrUtil.map(dimPermutations, function (dim) {\n return getSingleMarkerEndPoint(areaData, idx, dim, seriesModel, api);\n }); // Layout\n\n areaData.setItemLayout(idx, points);\n var el = areaData.getItemGraphicEl(idx);\n el.setShape('points', points);\n });\n }\n }, this);\n },\n renderSeries: function (seriesModel, maModel, ecModel, api) {\n var coordSys = seriesModel.coordinateSystem;\n var seriesId = seriesModel.id;\n var seriesData = seriesModel.getData();\n var areaGroupMap = this.markerGroupMap;\n var polygonGroup = areaGroupMap.get(seriesId) || areaGroupMap.set(seriesId, {\n group: new graphic.Group()\n });\n this.group.add(polygonGroup.group);\n polygonGroup.__keep = true;\n var areaData = createList(coordSys, seriesModel, maModel); // Line data for tooltip and formatter\n\n maModel.setData(areaData); // Update visual and layout of line\n\n areaData.each(function (idx) {\n // Layout\n var points = zrUtil.map(dimPermutations, function (dim) {\n return getSingleMarkerEndPoint(areaData, idx, dim, seriesModel, api);\n }); // If none of the area is inside coordSys, allClipped is set to be true\n // in layout so that label will not be displayed. See #12591\n\n var allClipped = true;\n zrUtil.each(dimPermutations, function (dim) {\n if (!allClipped) {\n return;\n }\n\n var xValue = areaData.get(dim[0], idx);\n var yValue = areaData.get(dim[1], idx); // If is infinity, the axis should be considered not clipped\n\n if ((isInifinity(xValue) || coordSys.getAxis('x').containData(xValue)) && (isInifinity(yValue) || coordSys.getAxis('y').containData(yValue))) {\n allClipped = false;\n }\n });\n areaData.setItemLayout(idx, {\n points: points,\n allClipped: allClipped\n }); // Visual\n\n areaData.setItemVisual(idx, {\n color: seriesData.getVisual('color')\n });\n });\n areaData.diff(polygonGroup.__data).add(function (idx) {\n var layout = areaData.getItemLayout(idx);\n\n if (!layout.allClipped) {\n var polygon = new graphic.Polygon({\n shape: {\n points: layout.points\n }\n });\n areaData.setItemGraphicEl(idx, polygon);\n polygonGroup.group.add(polygon);\n }\n }).update(function (newIdx, oldIdx) {\n var polygon = polygonGroup.__data.getItemGraphicEl(oldIdx);\n\n var layout = areaData.getItemLayout(newIdx);\n\n if (!layout.allClipped) {\n if (polygon) {\n graphic.updateProps(polygon, {\n shape: {\n points: layout.points\n }\n }, maModel, newIdx);\n } else {\n polygon = new graphic.Polygon({\n shape: {\n points: layout.points\n }\n });\n }\n\n areaData.setItemGraphicEl(newIdx, polygon);\n polygonGroup.group.add(polygon);\n } else if (polygon) {\n polygonGroup.group.remove(polygon);\n }\n }).remove(function (idx) {\n var polygon = polygonGroup.__data.getItemGraphicEl(idx);\n\n polygonGroup.group.remove(polygon);\n }).execute();\n areaData.eachItemGraphicEl(function (polygon, idx) {\n var itemModel = areaData.getItemModel(idx);\n var labelModel = itemModel.getModel('label');\n var labelHoverModel = itemModel.getModel('emphasis.label');\n var color = areaData.getItemVisual(idx, 'color');\n polygon.useStyle(zrUtil.defaults(itemModel.getModel('itemStyle').getItemStyle(), {\n fill: colorUtil.modifyAlpha(color, 0.4),\n stroke: color\n }));\n polygon.hoverStyle = itemModel.getModel('emphasis.itemStyle').getItemStyle();\n graphic.setLabelStyle(polygon.style, polygon.hoverStyle, labelModel, labelHoverModel, {\n labelFetcher: maModel,\n labelDataIndex: idx,\n defaultText: areaData.getName(idx) || '',\n isRectText: true,\n autoColor: color\n });\n graphic.setHoverStyle(polygon, {});\n polygon.dataModel = maModel;\n });\n polygonGroup.__data = areaData;\n polygonGroup.group.silent = maModel.get('silent') || seriesModel.get('silent');\n }\n});\n/**\n * @inner\n * @param {module:echarts/coord/*} coordSys\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Model} mpModel\n */\n\nfunction createList(coordSys, seriesModel, maModel) {\n var coordDimsInfos;\n var areaData;\n var dims = ['x0', 'y0', 'x1', 'y1'];\n\n if (coordSys) {\n coordDimsInfos = zrUtil.map(coordSys && coordSys.dimensions, function (coordDim) {\n var data = seriesModel.getData();\n var info = data.getDimensionInfo(data.mapDimension(coordDim)) || {}; // In map series data don't have lng and lat dimension. Fallback to same with coordSys\n\n return zrUtil.defaults({\n name: coordDim\n }, info);\n });\n areaData = new List(zrUtil.map(dims, function (dim, idx) {\n return {\n name: dim,\n type: coordDimsInfos[idx % 2].type\n };\n }), maModel);\n } else {\n coordDimsInfos = [{\n name: 'value',\n type: 'float'\n }];\n areaData = new List(coordDimsInfos, maModel);\n }\n\n var optData = zrUtil.map(maModel.get('data'), zrUtil.curry(markAreaTransform, seriesModel, coordSys, maModel));\n\n if (coordSys) {\n optData = zrUtil.filter(optData, zrUtil.curry(markAreaFilter, coordSys));\n }\n\n var dimValueGetter = coordSys ? function (item, dimName, dataIndex, dimIndex) {\n return item.coord[Math.floor(dimIndex / 2)][dimIndex % 2];\n } : function (item) {\n return item.value;\n };\n areaData.initData(optData, null, dimValueGetter);\n areaData.hasItemOption = true;\n return areaData;\n}\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/marker/MarkAreaView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/marker/MarkLineModel.js": +/*!********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/marker/MarkLineModel.js ***! + \********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar MarkerModel = __webpack_require__(/*! ./MarkerModel */ \"./node_modules/echarts/lib/component/marker/MarkerModel.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = MarkerModel.extend({\n type: 'markLine',\n defaultOption: {\n zlevel: 0,\n z: 5,\n symbol: ['circle', 'arrow'],\n symbolSize: [8, 16],\n //symbolRotate: 0,\n precision: 2,\n tooltip: {\n trigger: 'item'\n },\n label: {\n show: true,\n position: 'end',\n distance: 5\n },\n lineStyle: {\n type: 'dashed'\n },\n emphasis: {\n label: {\n show: true\n },\n lineStyle: {\n width: 3\n }\n },\n animationEasing: 'linear'\n }\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/marker/MarkLineModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/marker/MarkLineView.js": +/*!*******************************************************************!*\ + !*** ./node_modules/echarts/lib/component/marker/MarkLineView.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar List = __webpack_require__(/*! ../../data/List */ \"./node_modules/echarts/lib/data/List.js\");\n\nvar numberUtil = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar markerHelper = __webpack_require__(/*! ./markerHelper */ \"./node_modules/echarts/lib/component/marker/markerHelper.js\");\n\nvar LineDraw = __webpack_require__(/*! ../../chart/helper/LineDraw */ \"./node_modules/echarts/lib/chart/helper/LineDraw.js\");\n\nvar MarkerView = __webpack_require__(/*! ./MarkerView */ \"./node_modules/echarts/lib/component/marker/MarkerView.js\");\n\nvar _dataStackHelper = __webpack_require__(/*! ../../data/helper/dataStackHelper */ \"./node_modules/echarts/lib/data/helper/dataStackHelper.js\");\n\nvar getStackedDimension = _dataStackHelper.getStackedDimension;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar markLineTransform = function (seriesModel, coordSys, mlModel, item) {\n var data = seriesModel.getData(); // Special type markLine like 'min', 'max', 'average', 'median'\n\n var mlType = item.type;\n\n if (!zrUtil.isArray(item) && (mlType === 'min' || mlType === 'max' || mlType === 'average' || mlType === 'median' // In case\n // data: [{\n // yAxis: 10\n // }]\n || item.xAxis != null || item.yAxis != null)) {\n var valueAxis;\n var value;\n\n if (item.yAxis != null || item.xAxis != null) {\n valueAxis = coordSys.getAxis(item.yAxis != null ? 'y' : 'x');\n value = zrUtil.retrieve(item.yAxis, item.xAxis);\n } else {\n var axisInfo = markerHelper.getAxisInfo(item, data, coordSys, seriesModel);\n valueAxis = axisInfo.valueAxis;\n var valueDataDim = getStackedDimension(data, axisInfo.valueDataDim);\n value = markerHelper.numCalculate(data, valueDataDim, mlType);\n }\n\n var valueIndex = valueAxis.dim === 'x' ? 0 : 1;\n var baseIndex = 1 - valueIndex;\n var mlFrom = zrUtil.clone(item);\n var mlTo = {};\n mlFrom.type = null;\n mlFrom.coord = [];\n mlTo.coord = [];\n mlFrom.coord[baseIndex] = -Infinity;\n mlTo.coord[baseIndex] = Infinity;\n var precision = mlModel.get('precision');\n\n if (precision >= 0 && typeof value === 'number') {\n value = +value.toFixed(Math.min(precision, 20));\n }\n\n mlFrom.coord[valueIndex] = mlTo.coord[valueIndex] = value;\n item = [mlFrom, mlTo, {\n // Extra option for tooltip and label\n type: mlType,\n valueIndex: item.valueIndex,\n // Force to use the value of calculated value.\n value: value\n }];\n }\n\n item = [markerHelper.dataTransform(seriesModel, item[0]), markerHelper.dataTransform(seriesModel, item[1]), zrUtil.extend({}, item[2])]; // Avoid line data type is extended by from(to) data type\n\n item[2].type = item[2].type || ''; // Merge from option and to option into line option\n\n zrUtil.merge(item[2], item[0]);\n zrUtil.merge(item[2], item[1]);\n return item;\n};\n\nfunction isInifinity(val) {\n return !isNaN(val) && !isFinite(val);\n} // If a markLine has one dim\n\n\nfunction ifMarkLineHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) {\n var otherDimIndex = 1 - dimIndex;\n var dimName = coordSys.dimensions[dimIndex];\n return isInifinity(fromCoord[otherDimIndex]) && isInifinity(toCoord[otherDimIndex]) && fromCoord[dimIndex] === toCoord[dimIndex] && coordSys.getAxis(dimName).containData(fromCoord[dimIndex]);\n}\n\nfunction markLineFilter(coordSys, item) {\n if (coordSys.type === 'cartesian2d') {\n var fromCoord = item[0].coord;\n var toCoord = item[1].coord; // In case\n // {\n // markLine: {\n // data: [{ yAxis: 2 }]\n // }\n // }\n\n if (fromCoord && toCoord && (ifMarkLineHasOnlyDim(1, fromCoord, toCoord, coordSys) || ifMarkLineHasOnlyDim(0, fromCoord, toCoord, coordSys))) {\n return true;\n }\n }\n\n return markerHelper.dataFilter(coordSys, item[0]) && markerHelper.dataFilter(coordSys, item[1]);\n}\n\nfunction updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api) {\n var coordSys = seriesModel.coordinateSystem;\n var itemModel = data.getItemModel(idx);\n var point;\n var xPx = numberUtil.parsePercent(itemModel.get('x'), api.getWidth());\n var yPx = numberUtil.parsePercent(itemModel.get('y'), api.getHeight());\n\n if (!isNaN(xPx) && !isNaN(yPx)) {\n point = [xPx, yPx];\n } else {\n // Chart like bar may have there own marker positioning logic\n if (seriesModel.getMarkerPosition) {\n // Use the getMarkerPoisition\n point = seriesModel.getMarkerPosition(data.getValues(data.dimensions, idx));\n } else {\n var dims = coordSys.dimensions;\n var x = data.get(dims[0], idx);\n var y = data.get(dims[1], idx);\n point = coordSys.dataToPoint([x, y]);\n } // Expand line to the edge of grid if value on one axis is Inifnity\n // In case\n // markLine: {\n // data: [{\n // yAxis: 2\n // // or\n // type: 'average'\n // }]\n // }\n\n\n if (coordSys.type === 'cartesian2d') {\n var xAxis = coordSys.getAxis('x');\n var yAxis = coordSys.getAxis('y');\n var dims = coordSys.dimensions;\n\n if (isInifinity(data.get(dims[0], idx))) {\n point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[isFrom ? 0 : 1]);\n } else if (isInifinity(data.get(dims[1], idx))) {\n point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[isFrom ? 0 : 1]);\n }\n } // Use x, y if has any\n\n\n if (!isNaN(xPx)) {\n point[0] = xPx;\n }\n\n if (!isNaN(yPx)) {\n point[1] = yPx;\n }\n }\n\n data.setItemLayout(idx, point);\n}\n\nvar _default = MarkerView.extend({\n type: 'markLine',\n // updateLayout: function (markLineModel, ecModel, api) {\n // ecModel.eachSeries(function (seriesModel) {\n // var mlModel = seriesModel.markLineModel;\n // if (mlModel) {\n // var mlData = mlModel.getData();\n // var fromData = mlModel.__from;\n // var toData = mlModel.__to;\n // // Update visual and layout of from symbol and to symbol\n // fromData.each(function (idx) {\n // updateSingleMarkerEndLayout(fromData, idx, true, seriesModel, api);\n // updateSingleMarkerEndLayout(toData, idx, false, seriesModel, api);\n // });\n // // Update layout of line\n // mlData.each(function (idx) {\n // mlData.setItemLayout(idx, [\n // fromData.getItemLayout(idx),\n // toData.getItemLayout(idx)\n // ]);\n // });\n // this.markerGroupMap.get(seriesModel.id).updateLayout();\n // }\n // }, this);\n // },\n updateTransform: function (markLineModel, ecModel, api) {\n ecModel.eachSeries(function (seriesModel) {\n var mlModel = seriesModel.markLineModel;\n\n if (mlModel) {\n var mlData = mlModel.getData();\n var fromData = mlModel.__from;\n var toData = mlModel.__to; // Update visual and layout of from symbol and to symbol\n\n fromData.each(function (idx) {\n updateSingleMarkerEndLayout(fromData, idx, true, seriesModel, api);\n updateSingleMarkerEndLayout(toData, idx, false, seriesModel, api);\n }); // Update layout of line\n\n mlData.each(function (idx) {\n mlData.setItemLayout(idx, [fromData.getItemLayout(idx), toData.getItemLayout(idx)]);\n });\n this.markerGroupMap.get(seriesModel.id).updateLayout();\n }\n }, this);\n },\n renderSeries: function (seriesModel, mlModel, ecModel, api) {\n var coordSys = seriesModel.coordinateSystem;\n var seriesId = seriesModel.id;\n var seriesData = seriesModel.getData();\n var lineDrawMap = this.markerGroupMap;\n var lineDraw = lineDrawMap.get(seriesId) || lineDrawMap.set(seriesId, new LineDraw());\n this.group.add(lineDraw.group);\n var mlData = createList(coordSys, seriesModel, mlModel);\n var fromData = mlData.from;\n var toData = mlData.to;\n var lineData = mlData.line;\n mlModel.__from = fromData;\n mlModel.__to = toData; // Line data for tooltip and formatter\n\n mlModel.setData(lineData);\n var symbolType = mlModel.get('symbol');\n var symbolSize = mlModel.get('symbolSize');\n\n if (!zrUtil.isArray(symbolType)) {\n symbolType = [symbolType, symbolType];\n }\n\n if (typeof symbolSize === 'number') {\n symbolSize = [symbolSize, symbolSize];\n } // Update visual and layout of from symbol and to symbol\n\n\n mlData.from.each(function (idx) {\n updateDataVisualAndLayout(fromData, idx, true);\n updateDataVisualAndLayout(toData, idx, false);\n }); // Update visual and layout of line\n\n lineData.each(function (idx) {\n var lineColor = lineData.getItemModel(idx).get('lineStyle.color');\n lineData.setItemVisual(idx, {\n color: lineColor || fromData.getItemVisual(idx, 'color')\n });\n lineData.setItemLayout(idx, [fromData.getItemLayout(idx), toData.getItemLayout(idx)]);\n lineData.setItemVisual(idx, {\n 'fromSymbolRotate': fromData.getItemVisual(idx, 'symbolRotate'),\n 'fromSymbolSize': fromData.getItemVisual(idx, 'symbolSize'),\n 'fromSymbol': fromData.getItemVisual(idx, 'symbol'),\n 'toSymbolRotate': toData.getItemVisual(idx, 'symbolRotate'),\n 'toSymbolSize': toData.getItemVisual(idx, 'symbolSize'),\n 'toSymbol': toData.getItemVisual(idx, 'symbol')\n });\n });\n lineDraw.updateData(lineData); // Set host model for tooltip\n // FIXME\n\n mlData.line.eachItemGraphicEl(function (el, idx) {\n el.traverse(function (child) {\n child.dataModel = mlModel;\n });\n });\n\n function updateDataVisualAndLayout(data, idx, isFrom) {\n var itemModel = data.getItemModel(idx);\n updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api);\n data.setItemVisual(idx, {\n symbolRotate: itemModel.get('symbolRotate'),\n symbolSize: itemModel.get('symbolSize') || symbolSize[isFrom ? 0 : 1],\n symbol: itemModel.get('symbol', true) || symbolType[isFrom ? 0 : 1],\n color: itemModel.get('itemStyle.color') || seriesData.getVisual('color')\n });\n }\n\n lineDraw.__keep = true;\n lineDraw.group.silent = mlModel.get('silent') || seriesModel.get('silent');\n }\n});\n/**\n * @inner\n * @param {module:echarts/coord/*} coordSys\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Model} mpModel\n */\n\n\nfunction createList(coordSys, seriesModel, mlModel) {\n var coordDimsInfos;\n\n if (coordSys) {\n coordDimsInfos = zrUtil.map(coordSys && coordSys.dimensions, function (coordDim) {\n var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {}; // In map series data don't have lng and lat dimension. Fallback to same with coordSys\n\n return zrUtil.defaults({\n name: coordDim\n }, info);\n });\n } else {\n coordDimsInfos = [{\n name: 'value',\n type: 'float'\n }];\n }\n\n var fromData = new List(coordDimsInfos, mlModel);\n var toData = new List(coordDimsInfos, mlModel); // No dimensions\n\n var lineData = new List([], mlModel);\n var optData = zrUtil.map(mlModel.get('data'), zrUtil.curry(markLineTransform, seriesModel, coordSys, mlModel));\n\n if (coordSys) {\n optData = zrUtil.filter(optData, zrUtil.curry(markLineFilter, coordSys));\n }\n\n var dimValueGetter = coordSys ? markerHelper.dimValueGetter : function (item) {\n return item.value;\n };\n fromData.initData(zrUtil.map(optData, function (item) {\n return item[0];\n }), null, dimValueGetter);\n toData.initData(zrUtil.map(optData, function (item) {\n return item[1];\n }), null, dimValueGetter);\n lineData.initData(zrUtil.map(optData, function (item) {\n return item[2];\n }));\n lineData.hasItemOption = true;\n return {\n from: fromData,\n to: toData,\n line: lineData\n };\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/marker/MarkLineView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/marker/MarkPointModel.js": +/*!*********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/marker/MarkPointModel.js ***! + \*********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar MarkerModel = __webpack_require__(/*! ./MarkerModel */ \"./node_modules/echarts/lib/component/marker/MarkerModel.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = MarkerModel.extend({\n type: 'markPoint',\n defaultOption: {\n zlevel: 0,\n z: 5,\n symbol: 'pin',\n symbolSize: 50,\n //symbolRotate: 0,\n //symbolOffset: [0, 0]\n tooltip: {\n trigger: 'item'\n },\n label: {\n show: true,\n position: 'inside'\n },\n itemStyle: {\n borderWidth: 2\n },\n emphasis: {\n label: {\n show: true\n }\n }\n }\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/marker/MarkPointModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/marker/MarkPointView.js": +/*!********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/marker/MarkPointView.js ***! + \********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar SymbolDraw = __webpack_require__(/*! ../../chart/helper/SymbolDraw */ \"./node_modules/echarts/lib/chart/helper/SymbolDraw.js\");\n\nvar numberUtil = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar List = __webpack_require__(/*! ../../data/List */ \"./node_modules/echarts/lib/data/List.js\");\n\nvar markerHelper = __webpack_require__(/*! ./markerHelper */ \"./node_modules/echarts/lib/component/marker/markerHelper.js\");\n\nvar MarkerView = __webpack_require__(/*! ./MarkerView */ \"./node_modules/echarts/lib/component/marker/MarkerView.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction updateMarkerLayout(mpData, seriesModel, api) {\n var coordSys = seriesModel.coordinateSystem;\n mpData.each(function (idx) {\n var itemModel = mpData.getItemModel(idx);\n var point;\n var xPx = numberUtil.parsePercent(itemModel.get('x'), api.getWidth());\n var yPx = numberUtil.parsePercent(itemModel.get('y'), api.getHeight());\n\n if (!isNaN(xPx) && !isNaN(yPx)) {\n point = [xPx, yPx];\n } // Chart like bar may have there own marker positioning logic\n else if (seriesModel.getMarkerPosition) {\n // Use the getMarkerPoisition\n point = seriesModel.getMarkerPosition(mpData.getValues(mpData.dimensions, idx));\n } else if (coordSys) {\n var x = mpData.get(coordSys.dimensions[0], idx);\n var y = mpData.get(coordSys.dimensions[1], idx);\n point = coordSys.dataToPoint([x, y]);\n } // Use x, y if has any\n\n\n if (!isNaN(xPx)) {\n point[0] = xPx;\n }\n\n if (!isNaN(yPx)) {\n point[1] = yPx;\n }\n\n mpData.setItemLayout(idx, point);\n });\n}\n\nvar _default = MarkerView.extend({\n type: 'markPoint',\n // updateLayout: function (markPointModel, ecModel, api) {\n // ecModel.eachSeries(function (seriesModel) {\n // var mpModel = seriesModel.markPointModel;\n // if (mpModel) {\n // updateMarkerLayout(mpModel.getData(), seriesModel, api);\n // this.markerGroupMap.get(seriesModel.id).updateLayout(mpModel);\n // }\n // }, this);\n // },\n updateTransform: function (markPointModel, ecModel, api) {\n ecModel.eachSeries(function (seriesModel) {\n var mpModel = seriesModel.markPointModel;\n\n if (mpModel) {\n updateMarkerLayout(mpModel.getData(), seriesModel, api);\n this.markerGroupMap.get(seriesModel.id).updateLayout(mpModel);\n }\n }, this);\n },\n renderSeries: function (seriesModel, mpModel, ecModel, api) {\n var coordSys = seriesModel.coordinateSystem;\n var seriesId = seriesModel.id;\n var seriesData = seriesModel.getData();\n var symbolDrawMap = this.markerGroupMap;\n var symbolDraw = symbolDrawMap.get(seriesId) || symbolDrawMap.set(seriesId, new SymbolDraw());\n var mpData = createList(coordSys, seriesModel, mpModel); // FIXME\n\n mpModel.setData(mpData);\n updateMarkerLayout(mpModel.getData(), seriesModel, api);\n mpData.each(function (idx) {\n var itemModel = mpData.getItemModel(idx);\n var symbol = itemModel.getShallow('symbol');\n var symbolSize = itemModel.getShallow('symbolSize');\n var symbolRotate = itemModel.getShallow('symbolRotate');\n var isFnSymbol = zrUtil.isFunction(symbol);\n var isFnSymbolSize = zrUtil.isFunction(symbolSize);\n var isFnSymbolRotate = zrUtil.isFunction(symbolRotate);\n\n if (isFnSymbol || isFnSymbolSize || isFnSymbolRotate) {\n var rawIdx = mpModel.getRawValue(idx);\n var dataParams = mpModel.getDataParams(idx);\n\n if (isFnSymbol) {\n symbol = symbol(rawIdx, dataParams);\n }\n\n if (isFnSymbolSize) {\n // FIXME 这里不兼容 ECharts 2.x,2.x 貌似参数是整个数据?\n symbolSize = symbolSize(rawIdx, dataParams);\n }\n\n if (isFnSymbolRotate) {\n symbolRotate = symbolRotate(rawIdx, dataParams);\n }\n }\n\n mpData.setItemVisual(idx, {\n symbol: symbol,\n symbolSize: symbolSize,\n symbolRotate: symbolRotate,\n color: itemModel.get('itemStyle.color') || seriesData.getVisual('color')\n });\n }); // TODO Text are wrong\n\n symbolDraw.updateData(mpData);\n this.group.add(symbolDraw.group); // Set host model for tooltip\n // FIXME\n\n mpData.eachItemGraphicEl(function (el) {\n el.traverse(function (child) {\n child.dataModel = mpModel;\n });\n });\n symbolDraw.__keep = true;\n symbolDraw.group.silent = mpModel.get('silent') || seriesModel.get('silent');\n }\n});\n/**\n * @inner\n * @param {module:echarts/coord/*} [coordSys]\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Model} mpModel\n */\n\n\nfunction createList(coordSys, seriesModel, mpModel) {\n var coordDimsInfos;\n\n if (coordSys) {\n coordDimsInfos = zrUtil.map(coordSys && coordSys.dimensions, function (coordDim) {\n var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {}; // In map series data don't have lng and lat dimension. Fallback to same with coordSys\n\n return zrUtil.defaults({\n name: coordDim\n }, info);\n });\n } else {\n coordDimsInfos = [{\n name: 'value',\n type: 'float'\n }];\n }\n\n var mpData = new List(coordDimsInfos, mpModel);\n var dataOpt = zrUtil.map(mpModel.get('data'), zrUtil.curry(markerHelper.dataTransform, seriesModel));\n\n if (coordSys) {\n dataOpt = zrUtil.filter(dataOpt, zrUtil.curry(markerHelper.dataFilter, coordSys));\n }\n\n mpData.initData(dataOpt, null, coordSys ? markerHelper.dimValueGetter : function (item) {\n return item.value;\n });\n return mpData;\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/marker/MarkPointView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/marker/MarkerModel.js": +/*!******************************************************************!*\ + !*** ./node_modules/echarts/lib/component/marker/MarkerModel.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar env = __webpack_require__(/*! zrender/lib/core/env */ \"./node_modules/zrender/lib/core/env.js\");\n\nvar modelUtil = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar formatUtil = __webpack_require__(/*! ../../util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\nvar dataFormatMixin = __webpack_require__(/*! ../../model/mixin/dataFormat */ \"./node_modules/echarts/lib/model/mixin/dataFormat.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar addCommas = formatUtil.addCommas;\nvar encodeHTML = formatUtil.encodeHTML;\n\nfunction fillLabel(opt) {\n modelUtil.defaultEmphasis(opt, 'label', ['show']);\n}\n\nvar MarkerModel = echarts.extendComponentModel({\n type: 'marker',\n dependencies: ['series', 'grid', 'polar', 'geo'],\n\n /**\n * @overrite\n */\n init: function (option, parentModel, ecModel) {\n this.mergeDefaultAndTheme(option, ecModel);\n\n this._mergeOption(option, ecModel, false, true);\n },\n\n /**\n * @return {boolean}\n */\n isAnimationEnabled: function () {\n if (env.node) {\n return false;\n }\n\n var hostSeries = this.__hostSeries;\n return this.getShallow('animation') && hostSeries && hostSeries.isAnimationEnabled();\n },\n\n /**\n * @overrite\n */\n mergeOption: function (newOpt, ecModel) {\n this._mergeOption(newOpt, ecModel, false, false);\n },\n _mergeOption: function (newOpt, ecModel, createdBySelf, isInit) {\n var MarkerModel = this.constructor;\n var modelPropName = this.mainType + 'Model';\n\n if (!createdBySelf) {\n ecModel.eachSeries(function (seriesModel) {\n var markerOpt = seriesModel.get(this.mainType, true);\n var markerModel = seriesModel[modelPropName];\n\n if (!markerOpt || !markerOpt.data) {\n seriesModel[modelPropName] = null;\n return;\n }\n\n if (!markerModel) {\n if (isInit) {\n // Default label emphasis `position` and `show`\n fillLabel(markerOpt);\n }\n\n zrUtil.each(markerOpt.data, function (item) {\n // FIXME Overwrite fillLabel method ?\n if (item instanceof Array) {\n fillLabel(item[0]);\n fillLabel(item[1]);\n } else {\n fillLabel(item);\n }\n });\n markerModel = new MarkerModel(markerOpt, this, ecModel);\n zrUtil.extend(markerModel, {\n mainType: this.mainType,\n // Use the same series index and name\n seriesIndex: seriesModel.seriesIndex,\n name: seriesModel.name,\n createdBySelf: true\n });\n markerModel.__hostSeries = seriesModel;\n } else {\n markerModel._mergeOption(markerOpt, ecModel, true);\n }\n\n seriesModel[modelPropName] = markerModel;\n }, this);\n }\n },\n formatTooltip: function (dataIndex, multipleSeries, dataType, renderMode) {\n var data = this.getData();\n var value = this.getRawValue(dataIndex);\n var formattedValue = zrUtil.isArray(value) ? zrUtil.map(value, addCommas).join(', ') : addCommas(value);\n var name = data.getName(dataIndex);\n var html = encodeHTML(this.name);\n var newLine = renderMode === 'html' ? '
' : '\\n';\n\n if (value != null || name) {\n html += newLine;\n }\n\n if (name) {\n html += encodeHTML(name);\n\n if (value != null) {\n html += ' : ';\n }\n }\n\n if (value != null) {\n html += encodeHTML(formattedValue);\n }\n\n return html;\n },\n getData: function () {\n return this._data;\n },\n setData: function (data) {\n this._data = data;\n }\n});\nzrUtil.mixin(MarkerModel, dataFormatMixin);\nvar _default = MarkerModel;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/marker/MarkerModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/marker/MarkerView.js": +/*!*****************************************************************!*\ + !*** ./node_modules/echarts/lib/component/marker/MarkerView.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendComponentView({\n type: 'marker',\n init: function () {\n /**\n * Markline grouped by series\n * @private\n * @type {module:zrender/core/util.HashMap}\n */\n this.markerGroupMap = zrUtil.createHashMap();\n },\n render: function (markerModel, ecModel, api) {\n var markerGroupMap = this.markerGroupMap;\n markerGroupMap.each(function (item) {\n item.__keep = false;\n });\n var markerModelKey = this.type + 'Model';\n ecModel.eachSeries(function (seriesModel) {\n var markerModel = seriesModel[markerModelKey];\n markerModel && this.renderSeries(seriesModel, markerModel, ecModel, api);\n }, this);\n markerGroupMap.each(function (item) {\n !item.__keep && this.group.remove(item.group);\n }, this);\n },\n renderSeries: function () {}\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/marker/MarkerView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/marker/markerHelper.js": +/*!*******************************************************************!*\ + !*** ./node_modules/echarts/lib/component/marker/markerHelper.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar numberUtil = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar _dataStackHelper = __webpack_require__(/*! ../../data/helper/dataStackHelper */ \"./node_modules/echarts/lib/data/helper/dataStackHelper.js\");\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar indexOf = zrUtil.indexOf;\n\nfunction hasXOrY(item) {\n return !(isNaN(parseFloat(item.x)) && isNaN(parseFloat(item.y)));\n}\n\nfunction hasXAndY(item) {\n return !isNaN(parseFloat(item.x)) && !isNaN(parseFloat(item.y));\n} // Make it simple, do not visit all stacked value to count precision.\n// function getPrecision(data, valueAxisDim, dataIndex) {\n// var precision = -1;\n// var stackedDim = data.mapDimension(valueAxisDim);\n// do {\n// precision = Math.max(\n// numberUtil.getPrecision(data.get(stackedDim, dataIndex)),\n// precision\n// );\n// var stackedOnSeries = data.getCalculationInfo('stackedOnSeries');\n// if (stackedOnSeries) {\n// var byValue = data.get(data.getCalculationInfo('stackedByDimension'), dataIndex);\n// data = stackedOnSeries.getData();\n// dataIndex = data.indexOf(data.getCalculationInfo('stackedByDimension'), byValue);\n// stackedDim = data.getCalculationInfo('stackedDimension');\n// }\n// else {\n// data = null;\n// }\n// } while (data);\n// return precision;\n// }\n\n\nfunction markerTypeCalculatorWithExtent(mlType, data, otherDataDim, targetDataDim, otherCoordIndex, targetCoordIndex) {\n var coordArr = [];\n var stacked = isDimensionStacked(data, targetDataDim\n /*, otherDataDim*/\n );\n var calcDataDim = stacked ? data.getCalculationInfo('stackResultDimension') : targetDataDim;\n var value = numCalculate(data, calcDataDim, mlType);\n var dataIndex = data.indicesOfNearest(calcDataDim, value)[0];\n coordArr[otherCoordIndex] = data.get(otherDataDim, dataIndex);\n coordArr[targetCoordIndex] = data.get(calcDataDim, dataIndex);\n var coordArrValue = data.get(targetDataDim, dataIndex); // Make it simple, do not visit all stacked value to count precision.\n\n var precision = numberUtil.getPrecision(data.get(targetDataDim, dataIndex));\n precision = Math.min(precision, 20);\n\n if (precision >= 0) {\n coordArr[targetCoordIndex] = +coordArr[targetCoordIndex].toFixed(precision);\n }\n\n return [coordArr, coordArrValue];\n}\n\nvar curry = zrUtil.curry; // TODO Specified percent\n\nvar markerTypeCalculator = {\n /**\n * @method\n * @param {module:echarts/data/List} data\n * @param {string} baseAxisDim\n * @param {string} valueAxisDim\n */\n min: curry(markerTypeCalculatorWithExtent, 'min'),\n\n /**\n * @method\n * @param {module:echarts/data/List} data\n * @param {string} baseAxisDim\n * @param {string} valueAxisDim\n */\n max: curry(markerTypeCalculatorWithExtent, 'max'),\n\n /**\n * @method\n * @param {module:echarts/data/List} data\n * @param {string} baseAxisDim\n * @param {string} valueAxisDim\n */\n average: curry(markerTypeCalculatorWithExtent, 'average')\n};\n/**\n * Transform markPoint data item to format used in List by do the following\n * 1. Calculate statistic like `max`, `min`, `average`\n * 2. Convert `item.xAxis`, `item.yAxis` to `item.coord` array\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/coord/*} [coordSys]\n * @param {Object} item\n * @return {Object}\n */\n\nfunction dataTransform(seriesModel, item) {\n var data = seriesModel.getData();\n var coordSys = seriesModel.coordinateSystem; // 1. If not specify the position with pixel directly\n // 2. If `coord` is not a data array. Which uses `xAxis`,\n // `yAxis` to specify the coord on each dimension\n // parseFloat first because item.x and item.y can be percent string like '20%'\n\n if (item && !hasXAndY(item) && !zrUtil.isArray(item.coord) && coordSys) {\n var dims = coordSys.dimensions;\n var axisInfo = getAxisInfo(item, data, coordSys, seriesModel); // Clone the option\n // Transform the properties xAxis, yAxis, radiusAxis, angleAxis, geoCoord to value\n\n item = zrUtil.clone(item);\n\n if (item.type && markerTypeCalculator[item.type] && axisInfo.baseAxis && axisInfo.valueAxis) {\n var otherCoordIndex = indexOf(dims, axisInfo.baseAxis.dim);\n var targetCoordIndex = indexOf(dims, axisInfo.valueAxis.dim);\n var coordInfo = markerTypeCalculator[item.type](data, axisInfo.baseDataDim, axisInfo.valueDataDim, otherCoordIndex, targetCoordIndex);\n item.coord = coordInfo[0]; // Force to use the value of calculated value.\n // let item use the value without stack.\n\n item.value = coordInfo[1];\n } else {\n // FIXME Only has one of xAxis and yAxis.\n var coord = [item.xAxis != null ? item.xAxis : item.radiusAxis, item.yAxis != null ? item.yAxis : item.angleAxis]; // Each coord support max, min, average\n\n for (var i = 0; i < 2; i++) {\n if (markerTypeCalculator[coord[i]]) {\n coord[i] = numCalculate(data, data.mapDimension(dims[i]), coord[i]);\n }\n }\n\n item.coord = coord;\n }\n }\n\n return item;\n}\n\nfunction getAxisInfo(item, data, coordSys, seriesModel) {\n var ret = {};\n\n if (item.valueIndex != null || item.valueDim != null) {\n ret.valueDataDim = item.valueIndex != null ? data.getDimension(item.valueIndex) : item.valueDim;\n ret.valueAxis = coordSys.getAxis(dataDimToCoordDim(seriesModel, ret.valueDataDim));\n ret.baseAxis = coordSys.getOtherAxis(ret.valueAxis);\n ret.baseDataDim = data.mapDimension(ret.baseAxis.dim);\n } else {\n ret.baseAxis = seriesModel.getBaseAxis();\n ret.valueAxis = coordSys.getOtherAxis(ret.baseAxis);\n ret.baseDataDim = data.mapDimension(ret.baseAxis.dim);\n ret.valueDataDim = data.mapDimension(ret.valueAxis.dim);\n }\n\n return ret;\n}\n\nfunction dataDimToCoordDim(seriesModel, dataDim) {\n var data = seriesModel.getData();\n var dimensions = data.dimensions;\n dataDim = data.getDimension(dataDim);\n\n for (var i = 0; i < dimensions.length; i++) {\n var dimItem = data.getDimensionInfo(dimensions[i]);\n\n if (dimItem.name === dataDim) {\n return dimItem.coordDim;\n }\n }\n}\n/**\n * Filter data which is out of coordinateSystem range\n * [dataFilter description]\n * @param {module:echarts/coord/*} [coordSys]\n * @param {Object} item\n * @return {boolean}\n */\n\n\nfunction dataFilter(coordSys, item) {\n // Alwalys return true if there is no coordSys\n return coordSys && coordSys.containData && item.coord && !hasXOrY(item) ? coordSys.containData(item.coord) : true;\n}\n\nfunction dimValueGetter(item, dimName, dataIndex, dimIndex) {\n // x, y, radius, angle\n if (dimIndex < 2) {\n return item.coord && item.coord[dimIndex];\n }\n\n return item.value;\n}\n\nfunction numCalculate(data, valueDataDim, type) {\n if (type === 'average') {\n var sum = 0;\n var count = 0;\n data.each(valueDataDim, function (val, idx) {\n if (!isNaN(val)) {\n sum += val;\n count++;\n }\n });\n return sum / count;\n } else if (type === 'median') {\n return data.getMedian(valueDataDim);\n } else {\n // max & min\n return data.getDataExtent(valueDataDim, true)[type === 'max' ? 1 : 0];\n }\n}\n\nexports.dataTransform = dataTransform;\nexports.getAxisInfo = getAxisInfo;\nexports.dataFilter = dataFilter;\nexports.dimValueGetter = dimValueGetter;\nexports.numCalculate = numCalculate;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/marker/markerHelper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/parallel.js": +/*!********************************************************!*\ + !*** ./node_modules/echarts/lib/component/parallel.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar throttleUtil = __webpack_require__(/*! ../util/throttle */ \"./node_modules/echarts/lib/util/throttle.js\");\n\nvar parallelPreprocessor = __webpack_require__(/*! ../coord/parallel/parallelPreprocessor */ \"./node_modules/echarts/lib/coord/parallel/parallelPreprocessor.js\");\n\n__webpack_require__(/*! ../coord/parallel/parallelCreator */ \"./node_modules/echarts/lib/coord/parallel/parallelCreator.js\");\n\n__webpack_require__(/*! ../coord/parallel/ParallelModel */ \"./node_modules/echarts/lib/coord/parallel/ParallelModel.js\");\n\n__webpack_require__(/*! ./parallelAxis */ \"./node_modules/echarts/lib/component/parallelAxis.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar CLICK_THRESHOLD = 5; // > 4\n// Parallel view\n\necharts.extendComponentView({\n type: 'parallel',\n render: function (parallelModel, ecModel, api) {\n this._model = parallelModel;\n this._api = api;\n\n if (!this._handlers) {\n this._handlers = {};\n zrUtil.each(handlers, function (handler, eventName) {\n api.getZr().on(eventName, this._handlers[eventName] = zrUtil.bind(handler, this));\n }, this);\n }\n\n throttleUtil.createOrUpdate(this, '_throttledDispatchExpand', parallelModel.get('axisExpandRate'), 'fixRate');\n },\n dispose: function (ecModel, api) {\n zrUtil.each(this._handlers, function (handler, eventName) {\n api.getZr().off(eventName, handler);\n });\n this._handlers = null;\n },\n\n /**\n * @param {Object} [opt] If null, cancle the last action triggering for debounce.\n */\n _throttledDispatchExpand: function (opt) {\n this._dispatchExpand(opt);\n },\n _dispatchExpand: function (opt) {\n opt && this._api.dispatchAction(zrUtil.extend({\n type: 'parallelAxisExpand'\n }, opt));\n }\n});\nvar handlers = {\n mousedown: function (e) {\n if (checkTrigger(this, 'click')) {\n this._mouseDownPoint = [e.offsetX, e.offsetY];\n }\n },\n mouseup: function (e) {\n var mouseDownPoint = this._mouseDownPoint;\n\n if (checkTrigger(this, 'click') && mouseDownPoint) {\n var point = [e.offsetX, e.offsetY];\n var dist = Math.pow(mouseDownPoint[0] - point[0], 2) + Math.pow(mouseDownPoint[1] - point[1], 2);\n\n if (dist > CLICK_THRESHOLD) {\n return;\n }\n\n var result = this._model.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX, e.offsetY]);\n\n result.behavior !== 'none' && this._dispatchExpand({\n axisExpandWindow: result.axisExpandWindow\n });\n }\n\n this._mouseDownPoint = null;\n },\n mousemove: function (e) {\n // Should do nothing when brushing.\n if (this._mouseDownPoint || !checkTrigger(this, 'mousemove')) {\n return;\n }\n\n var model = this._model;\n var result = model.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX, e.offsetY]);\n var behavior = result.behavior;\n behavior === 'jump' && this._throttledDispatchExpand.debounceNextCall(model.get('axisExpandDebounce'));\n\n this._throttledDispatchExpand(behavior === 'none' ? null // Cancle the last trigger, in case that mouse slide out of the area quickly.\n : {\n axisExpandWindow: result.axisExpandWindow,\n // Jumping uses animation, and sliding suppresses animation.\n animation: behavior === 'jump' ? null : false\n });\n }\n};\n\nfunction checkTrigger(view, triggerOn) {\n var model = view._model;\n return model.get('axisExpandable') && model.get('axisExpandTriggerOn') === triggerOn;\n}\n\necharts.registerPreprocessor(parallelPreprocessor);\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/parallel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/parallelAxis.js": +/*!************************************************************!*\ + !*** ./node_modules/echarts/lib/component/parallelAxis.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(/*! ../coord/parallel/parallelCreator */ \"./node_modules/echarts/lib/coord/parallel/parallelCreator.js\");\n\n__webpack_require__(/*! ./axis/parallelAxisAction */ \"./node_modules/echarts/lib/component/axis/parallelAxisAction.js\");\n\n__webpack_require__(/*! ./axis/ParallelAxisView */ \"./node_modules/echarts/lib/component/axis/ParallelAxisView.js\");\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/parallelAxis.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/polar.js": +/*!*****************************************************!*\ + !*** ./node_modules/echarts/lib/component/polar.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar barPolar = __webpack_require__(/*! ../layout/barPolar */ \"./node_modules/echarts/lib/layout/barPolar.js\");\n\n__webpack_require__(/*! ../coord/polar/polarCreator */ \"./node_modules/echarts/lib/coord/polar/polarCreator.js\");\n\n__webpack_require__(/*! ./angleAxis */ \"./node_modules/echarts/lib/component/angleAxis.js\");\n\n__webpack_require__(/*! ./radiusAxis */ \"./node_modules/echarts/lib/component/radiusAxis.js\");\n\n__webpack_require__(/*! ./axisPointer */ \"./node_modules/echarts/lib/component/axisPointer.js\");\n\n__webpack_require__(/*! ./axisPointer/PolarAxisPointer */ \"./node_modules/echarts/lib/component/axisPointer/PolarAxisPointer.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// For reducing size of echarts.min, barLayoutPolar is required by polar.\necharts.registerLayout(zrUtil.curry(barPolar, 'bar')); // Polar view\n\necharts.extendComponentView({\n type: 'polar'\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/polar.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/radar.js": +/*!*****************************************************!*\ + !*** ./node_modules/echarts/lib/component/radar.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(/*! ../coord/radar/Radar */ \"./node_modules/echarts/lib/coord/radar/Radar.js\");\n\n__webpack_require__(/*! ../coord/radar/RadarModel */ \"./node_modules/echarts/lib/coord/radar/RadarModel.js\");\n\n__webpack_require__(/*! ./radar/RadarView */ \"./node_modules/echarts/lib/component/radar/RadarView.js\");\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/radar.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/radar/RadarView.js": +/*!***************************************************************!*\ + !*** ./node_modules/echarts/lib/component/radar/RadarView.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar AxisBuilder = __webpack_require__(/*! ../axis/AxisBuilder */ \"./node_modules/echarts/lib/component/axis/AxisBuilder.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];\n\nvar _default = echarts.extendComponentView({\n type: 'radar',\n render: function (radarModel, ecModel, api) {\n var group = this.group;\n group.removeAll();\n\n this._buildAxes(radarModel);\n\n this._buildSplitLineAndArea(radarModel);\n },\n _buildAxes: function (radarModel) {\n var radar = radarModel.coordinateSystem;\n var indicatorAxes = radar.getIndicatorAxes();\n var axisBuilders = zrUtil.map(indicatorAxes, function (indicatorAxis) {\n var axisBuilder = new AxisBuilder(indicatorAxis.model, {\n position: [radar.cx, radar.cy],\n rotation: indicatorAxis.angle,\n labelDirection: -1,\n tickDirection: -1,\n nameDirection: 1\n });\n return axisBuilder;\n });\n zrUtil.each(axisBuilders, function (axisBuilder) {\n zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n this.group.add(axisBuilder.getGroup());\n }, this);\n },\n _buildSplitLineAndArea: function (radarModel) {\n var radar = radarModel.coordinateSystem;\n var indicatorAxes = radar.getIndicatorAxes();\n\n if (!indicatorAxes.length) {\n return;\n }\n\n var shape = radarModel.get('shape');\n var splitLineModel = radarModel.getModel('splitLine');\n var splitAreaModel = radarModel.getModel('splitArea');\n var lineStyleModel = splitLineModel.getModel('lineStyle');\n var areaStyleModel = splitAreaModel.getModel('areaStyle');\n var showSplitLine = splitLineModel.get('show');\n var showSplitArea = splitAreaModel.get('show');\n var splitLineColors = lineStyleModel.get('color');\n var splitAreaColors = areaStyleModel.get('color');\n splitLineColors = zrUtil.isArray(splitLineColors) ? splitLineColors : [splitLineColors];\n splitAreaColors = zrUtil.isArray(splitAreaColors) ? splitAreaColors : [splitAreaColors];\n var splitLines = [];\n var splitAreas = [];\n\n function getColorIndex(areaOrLine, areaOrLineColorList, idx) {\n var colorIndex = idx % areaOrLineColorList.length;\n areaOrLine[colorIndex] = areaOrLine[colorIndex] || [];\n return colorIndex;\n }\n\n if (shape === 'circle') {\n var ticksRadius = indicatorAxes[0].getTicksCoords();\n var cx = radar.cx;\n var cy = radar.cy;\n\n for (var i = 0; i < ticksRadius.length; i++) {\n if (showSplitLine) {\n var colorIndex = getColorIndex(splitLines, splitLineColors, i);\n splitLines[colorIndex].push(new graphic.Circle({\n shape: {\n cx: cx,\n cy: cy,\n r: ticksRadius[i].coord\n }\n }));\n }\n\n if (showSplitArea && i < ticksRadius.length - 1) {\n var colorIndex = getColorIndex(splitAreas, splitAreaColors, i);\n splitAreas[colorIndex].push(new graphic.Ring({\n shape: {\n cx: cx,\n cy: cy,\n r0: ticksRadius[i].coord,\n r: ticksRadius[i + 1].coord\n }\n }));\n }\n }\n } // Polyyon\n else {\n var realSplitNumber;\n var axesTicksPoints = zrUtil.map(indicatorAxes, function (indicatorAxis, idx) {\n var ticksCoords = indicatorAxis.getTicksCoords();\n realSplitNumber = realSplitNumber == null ? ticksCoords.length - 1 : Math.min(ticksCoords.length - 1, realSplitNumber);\n return zrUtil.map(ticksCoords, function (tickCoord) {\n return radar.coordToPoint(tickCoord.coord, idx);\n });\n });\n var prevPoints = [];\n\n for (var i = 0; i <= realSplitNumber; i++) {\n var points = [];\n\n for (var j = 0; j < indicatorAxes.length; j++) {\n points.push(axesTicksPoints[j][i]);\n } // Close\n\n\n if (points[0]) {\n points.push(points[0].slice());\n } else {}\n\n if (showSplitLine) {\n var colorIndex = getColorIndex(splitLines, splitLineColors, i);\n splitLines[colorIndex].push(new graphic.Polyline({\n shape: {\n points: points\n }\n }));\n }\n\n if (showSplitArea && prevPoints) {\n var colorIndex = getColorIndex(splitAreas, splitAreaColors, i - 1);\n splitAreas[colorIndex].push(new graphic.Polygon({\n shape: {\n points: points.concat(prevPoints)\n }\n }));\n }\n\n prevPoints = points.slice().reverse();\n }\n }\n\n var lineStyle = lineStyleModel.getLineStyle();\n var areaStyle = areaStyleModel.getAreaStyle(); // Add splitArea before splitLine\n\n zrUtil.each(splitAreas, function (splitAreas, idx) {\n this.group.add(graphic.mergePath(splitAreas, {\n style: zrUtil.defaults({\n stroke: 'none',\n fill: splitAreaColors[idx % splitAreaColors.length]\n }, areaStyle),\n silent: true\n }));\n }, this);\n zrUtil.each(splitLines, function (splitLines, idx) {\n this.group.add(graphic.mergePath(splitLines, {\n style: zrUtil.defaults({\n fill: 'none',\n stroke: splitLineColors[idx % splitLineColors.length]\n }, lineStyle),\n silent: true\n }));\n }, this);\n }\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/radar/RadarView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/radiusAxis.js": +/*!**********************************************************!*\ + !*** ./node_modules/echarts/lib/component/radiusAxis.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(/*! ../coord/polar/polarCreator */ \"./node_modules/echarts/lib/coord/polar/polarCreator.js\");\n\n__webpack_require__(/*! ./axis/RadiusAxisView */ \"./node_modules/echarts/lib/component/axis/RadiusAxisView.js\");\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/radiusAxis.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/singleAxis.js": +/*!**********************************************************!*\ + !*** ./node_modules/echarts/lib/component/singleAxis.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n__webpack_require__(/*! ../coord/single/singleCreator */ \"./node_modules/echarts/lib/coord/single/singleCreator.js\");\n\n__webpack_require__(/*! ./axis/SingleAxisView */ \"./node_modules/echarts/lib/component/axis/SingleAxisView.js\");\n\n__webpack_require__(/*! ../coord/single/AxisModel */ \"./node_modules/echarts/lib/coord/single/AxisModel.js\");\n\n__webpack_require__(/*! ./axisPointer */ \"./node_modules/echarts/lib/component/axisPointer.js\");\n\n__webpack_require__(/*! ./axisPointer/SingleAxisPointer */ \"./node_modules/echarts/lib/component/axisPointer/SingleAxisPointer.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.extendComponentView({\n type: 'single'\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/singleAxis.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/timeline.js": +/*!********************************************************!*\ + !*** ./node_modules/echarts/lib/component/timeline.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar preprocessor = __webpack_require__(/*! ./timeline/preprocessor */ \"./node_modules/echarts/lib/component/timeline/preprocessor.js\");\n\n__webpack_require__(/*! ./timeline/typeDefaulter */ \"./node_modules/echarts/lib/component/timeline/typeDefaulter.js\");\n\n__webpack_require__(/*! ./timeline/timelineAction */ \"./node_modules/echarts/lib/component/timeline/timelineAction.js\");\n\n__webpack_require__(/*! ./timeline/SliderTimelineModel */ \"./node_modules/echarts/lib/component/timeline/SliderTimelineModel.js\");\n\n__webpack_require__(/*! ./timeline/SliderTimelineView */ \"./node_modules/echarts/lib/component/timeline/SliderTimelineView.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * DataZoom component entry\n */\necharts.registerPreprocessor(preprocessor);\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/timeline.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/timeline/SliderTimelineModel.js": +/*!****************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/timeline/SliderTimelineModel.js ***! + \****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar TimelineModel = __webpack_require__(/*! ./TimelineModel */ \"./node_modules/echarts/lib/component/timeline/TimelineModel.js\");\n\nvar dataFormatMixin = __webpack_require__(/*! ../../model/mixin/dataFormat */ \"./node_modules/echarts/lib/model/mixin/dataFormat.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar SliderTimelineModel = TimelineModel.extend({\n type: 'timeline.slider',\n\n /**\n * @protected\n */\n defaultOption: {\n backgroundColor: 'rgba(0,0,0,0)',\n // 时间轴背景颜色\n borderColor: '#ccc',\n // 时间轴边框颜色\n borderWidth: 0,\n // 时间轴边框线宽,单位px,默认为0(无边框)\n orient: 'horizontal',\n // 'vertical'\n inverse: false,\n tooltip: {\n // boolean or Object\n trigger: 'item' // data item may also have tootip attr.\n\n },\n symbol: 'emptyCircle',\n symbolSize: 10,\n lineStyle: {\n show: true,\n width: 2,\n color: '#304654'\n },\n label: {\n // 文本标签\n position: 'auto',\n // auto left right top bottom\n // When using number, label position is not\n // restricted by viewRect.\n // positive: right/bottom, negative: left/top\n show: true,\n interval: 'auto',\n rotate: 0,\n // formatter: null,\n // 其余属性默认使用全局文本样式,详见TEXTSTYLE\n color: '#304654'\n },\n itemStyle: {\n color: '#304654',\n borderWidth: 1\n },\n checkpointStyle: {\n symbol: 'circle',\n symbolSize: 13,\n color: '#c23531',\n borderWidth: 5,\n borderColor: 'rgba(194,53,49, 0.5)',\n animation: true,\n animationDuration: 300,\n animationEasing: 'quinticInOut'\n },\n controlStyle: {\n show: true,\n showPlayBtn: true,\n showPrevBtn: true,\n showNextBtn: true,\n itemSize: 22,\n itemGap: 12,\n position: 'left',\n // 'left' 'right' 'top' 'bottom'\n playIcon: 'path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z',\n // jshint ignore:line\n stopIcon: 'path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z',\n // jshint ignore:line\n nextIcon: 'path://M18.6,50.8l22.5-22.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7L18.7,4.4c-0.1-0.1-0.2-0.3-0.2-0.5 c0-0.4,0.3-0.8,0.8-0.8c0.2,0,0.5,0.1,0.6,0.3l23.5,23.5l0,0c0.2,0.2,0.3,0.4,0.3,0.7c0,0.3-0.1,0.5-0.3,0.7l-0.1,0.1L19.7,52 c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0-0.8-0.3-0.8-0.8C18.4,51.2,18.5,51,18.6,50.8z',\n // jshint ignore:line\n prevIcon: 'path://M43,52.8L20.4,30.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.5,0.3-0.7L42.9,6.4c0.1-0.1,0.2-0.3,0.2-0.5 c0-0.4-0.3-0.8-0.8-0.8c-0.2,0-0.5,0.1-0.6,0.3L18.3,28.8l0,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7l0.1,0.1L41.9,54 c0.1,0.1,0.3,0.2,0.5,0.2c0.4,0,0.8-0.3,0.8-0.8C43.2,53.2,43.1,53,43,52.8z',\n // jshint ignore:line\n color: '#304654',\n borderColor: '#304654',\n borderWidth: 1\n },\n emphasis: {\n label: {\n show: true,\n // 其余属性默认使用全局文本样式,详见TEXTSTYLE\n color: '#c23531'\n },\n itemStyle: {\n color: '#c23531'\n },\n controlStyle: {\n color: '#c23531',\n borderColor: '#c23531',\n borderWidth: 2\n }\n },\n data: []\n }\n});\nzrUtil.mixin(SliderTimelineModel, dataFormatMixin);\nvar _default = SliderTimelineModel;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/timeline/SliderTimelineModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/timeline/SliderTimelineView.js": +/*!***************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/timeline/SliderTimelineView.js ***! + \***************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar BoundingRect = __webpack_require__(/*! zrender/lib/core/BoundingRect */ \"./node_modules/zrender/lib/core/BoundingRect.js\");\n\nvar matrix = __webpack_require__(/*! zrender/lib/core/matrix */ \"./node_modules/zrender/lib/core/matrix.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar layout = __webpack_require__(/*! ../../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar TimelineView = __webpack_require__(/*! ./TimelineView */ \"./node_modules/echarts/lib/component/timeline/TimelineView.js\");\n\nvar TimelineAxis = __webpack_require__(/*! ./TimelineAxis */ \"./node_modules/echarts/lib/component/timeline/TimelineAxis.js\");\n\nvar _symbol = __webpack_require__(/*! ../../util/symbol */ \"./node_modules/echarts/lib/util/symbol.js\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar axisHelper = __webpack_require__(/*! ../../coord/axisHelper */ \"./node_modules/echarts/lib/coord/axisHelper.js\");\n\nvar numberUtil = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar _format = __webpack_require__(/*! ../../util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\nvar encodeHTML = _format.encodeHTML;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar bind = zrUtil.bind;\nvar each = zrUtil.each;\nvar PI = Math.PI;\n\nvar _default = TimelineView.extend({\n type: 'timeline.slider',\n init: function (ecModel, api) {\n this.api = api;\n /**\n * @private\n * @type {module:echarts/component/timeline/TimelineAxis}\n */\n\n this._axis;\n /**\n * @private\n * @type {module:zrender/core/BoundingRect}\n */\n\n this._viewRect;\n /**\n * @type {number}\n */\n\n this._timer;\n /**\n * @type {module:zrender/Element}\n */\n\n this._currentPointer;\n /**\n * @type {module:zrender/container/Group}\n */\n\n this._mainGroup;\n /**\n * @type {module:zrender/container/Group}\n */\n\n this._labelGroup;\n },\n\n /**\n * @override\n */\n render: function (timelineModel, ecModel, api, payload) {\n this.model = timelineModel;\n this.api = api;\n this.ecModel = ecModel;\n this.group.removeAll();\n\n if (timelineModel.get('show', true)) {\n var layoutInfo = this._layout(timelineModel, api);\n\n var mainGroup = this._createGroup('mainGroup');\n\n var labelGroup = this._createGroup('labelGroup');\n /**\n * @private\n * @type {module:echarts/component/timeline/TimelineAxis}\n */\n\n\n var axis = this._axis = this._createAxis(layoutInfo, timelineModel);\n\n timelineModel.formatTooltip = function (dataIndex) {\n return encodeHTML(axis.scale.getLabel(dataIndex));\n };\n\n each(['AxisLine', 'AxisTick', 'Control', 'CurrentPointer'], function (name) {\n this['_render' + name](layoutInfo, mainGroup, axis, timelineModel);\n }, this);\n\n this._renderAxisLabel(layoutInfo, labelGroup, axis, timelineModel);\n\n this._position(layoutInfo, timelineModel);\n }\n\n this._doPlayStop();\n },\n\n /**\n * @override\n */\n remove: function () {\n this._clearTimer();\n\n this.group.removeAll();\n },\n\n /**\n * @override\n */\n dispose: function () {\n this._clearTimer();\n },\n _layout: function (timelineModel, api) {\n var labelPosOpt = timelineModel.get('label.position');\n var orient = timelineModel.get('orient');\n var viewRect = getViewRect(timelineModel, api); // Auto label offset.\n\n if (labelPosOpt == null || labelPosOpt === 'auto') {\n labelPosOpt = orient === 'horizontal' ? viewRect.y + viewRect.height / 2 < api.getHeight() / 2 ? '-' : '+' : viewRect.x + viewRect.width / 2 < api.getWidth() / 2 ? '+' : '-';\n } else if (isNaN(labelPosOpt)) {\n labelPosOpt = {\n horizontal: {\n top: '-',\n bottom: '+'\n },\n vertical: {\n left: '-',\n right: '+'\n }\n }[orient][labelPosOpt];\n }\n\n var labelAlignMap = {\n horizontal: 'center',\n vertical: labelPosOpt >= 0 || labelPosOpt === '+' ? 'left' : 'right'\n };\n var labelBaselineMap = {\n horizontal: labelPosOpt >= 0 || labelPosOpt === '+' ? 'top' : 'bottom',\n vertical: 'middle'\n };\n var rotationMap = {\n horizontal: 0,\n vertical: PI / 2\n }; // Position\n\n var mainLength = orient === 'vertical' ? viewRect.height : viewRect.width;\n var controlModel = timelineModel.getModel('controlStyle');\n var showControl = controlModel.get('show', true);\n var controlSize = showControl ? controlModel.get('itemSize') : 0;\n var controlGap = showControl ? controlModel.get('itemGap') : 0;\n var sizePlusGap = controlSize + controlGap; // Special label rotate.\n\n var labelRotation = timelineModel.get('label.rotate') || 0;\n labelRotation = labelRotation * PI / 180; // To radian.\n\n var playPosition;\n var prevBtnPosition;\n var nextBtnPosition;\n var axisExtent;\n var controlPosition = controlModel.get('position', true);\n var showPlayBtn = showControl && controlModel.get('showPlayBtn', true);\n var showPrevBtn = showControl && controlModel.get('showPrevBtn', true);\n var showNextBtn = showControl && controlModel.get('showNextBtn', true);\n var xLeft = 0;\n var xRight = mainLength; // position[0] means left, position[1] means middle.\n\n if (controlPosition === 'left' || controlPosition === 'bottom') {\n showPlayBtn && (playPosition = [0, 0], xLeft += sizePlusGap);\n showPrevBtn && (prevBtnPosition = [xLeft, 0], xLeft += sizePlusGap);\n showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);\n } else {\n // 'top' 'right'\n showPlayBtn && (playPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);\n showPrevBtn && (prevBtnPosition = [0, 0], xLeft += sizePlusGap);\n showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);\n }\n\n axisExtent = [xLeft, xRight];\n\n if (timelineModel.get('inverse')) {\n axisExtent.reverse();\n }\n\n return {\n viewRect: viewRect,\n mainLength: mainLength,\n orient: orient,\n rotation: rotationMap[orient],\n labelRotation: labelRotation,\n labelPosOpt: labelPosOpt,\n labelAlign: timelineModel.get('label.align') || labelAlignMap[orient],\n labelBaseline: timelineModel.get('label.verticalAlign') || timelineModel.get('label.baseline') || labelBaselineMap[orient],\n // Based on mainGroup.\n playPosition: playPosition,\n prevBtnPosition: prevBtnPosition,\n nextBtnPosition: nextBtnPosition,\n axisExtent: axisExtent,\n controlSize: controlSize,\n controlGap: controlGap\n };\n },\n _position: function (layoutInfo, timelineModel) {\n // Position is be called finally, because bounding rect is needed for\n // adapt content to fill viewRect (auto adapt offset).\n // Timeline may be not all in the viewRect when 'offset' is specified\n // as a number, because it is more appropriate that label aligns at\n // 'offset' but not the other edge defined by viewRect.\n var mainGroup = this._mainGroup;\n var labelGroup = this._labelGroup;\n var viewRect = layoutInfo.viewRect;\n\n if (layoutInfo.orient === 'vertical') {\n // transform to horizontal, inverse rotate by left-top point.\n var m = matrix.create();\n var rotateOriginX = viewRect.x;\n var rotateOriginY = viewRect.y + viewRect.height;\n matrix.translate(m, m, [-rotateOriginX, -rotateOriginY]);\n matrix.rotate(m, m, -PI / 2);\n matrix.translate(m, m, [rotateOriginX, rotateOriginY]);\n viewRect = viewRect.clone();\n viewRect.applyTransform(m);\n }\n\n var viewBound = getBound(viewRect);\n var mainBound = getBound(mainGroup.getBoundingRect());\n var labelBound = getBound(labelGroup.getBoundingRect());\n var mainPosition = mainGroup.position;\n var labelsPosition = labelGroup.position;\n labelsPosition[0] = mainPosition[0] = viewBound[0][0];\n var labelPosOpt = layoutInfo.labelPosOpt;\n\n if (isNaN(labelPosOpt)) {\n // '+' or '-'\n var mainBoundIdx = labelPosOpt === '+' ? 0 : 1;\n toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx);\n toBound(labelsPosition, labelBound, viewBound, 1, 1 - mainBoundIdx);\n } else {\n var mainBoundIdx = labelPosOpt >= 0 ? 0 : 1;\n toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx);\n labelsPosition[1] = mainPosition[1] + labelPosOpt;\n }\n\n mainGroup.attr('position', mainPosition);\n labelGroup.attr('position', labelsPosition);\n mainGroup.rotation = labelGroup.rotation = layoutInfo.rotation;\n setOrigin(mainGroup);\n setOrigin(labelGroup);\n\n function setOrigin(targetGroup) {\n var pos = targetGroup.position;\n targetGroup.origin = [viewBound[0][0] - pos[0], viewBound[1][0] - pos[1]];\n }\n\n function getBound(rect) {\n // [[xmin, xmax], [ymin, ymax]]\n return [[rect.x, rect.x + rect.width], [rect.y, rect.y + rect.height]];\n }\n\n function toBound(fromPos, from, to, dimIdx, boundIdx) {\n fromPos[dimIdx] += to[dimIdx][boundIdx] - from[dimIdx][boundIdx];\n }\n },\n _createAxis: function (layoutInfo, timelineModel) {\n var data = timelineModel.getData();\n var axisType = timelineModel.get('axisType');\n var scale = axisHelper.createScaleByModel(timelineModel, axisType); // Customize scale. The `tickValue` is `dataIndex`.\n\n scale.getTicks = function () {\n return data.mapArray(['value'], function (value) {\n return value;\n });\n };\n\n var dataExtent = data.getDataExtent('value');\n scale.setExtent(dataExtent[0], dataExtent[1]);\n scale.niceTicks();\n var axis = new TimelineAxis('value', scale, layoutInfo.axisExtent, axisType);\n axis.model = timelineModel;\n return axis;\n },\n _createGroup: function (name) {\n var newGroup = this['_' + name] = new graphic.Group();\n this.group.add(newGroup);\n return newGroup;\n },\n _renderAxisLine: function (layoutInfo, group, axis, timelineModel) {\n var axisExtent = axis.getExtent();\n\n if (!timelineModel.get('lineStyle.show')) {\n return;\n }\n\n group.add(new graphic.Line({\n shape: {\n x1: axisExtent[0],\n y1: 0,\n x2: axisExtent[1],\n y2: 0\n },\n style: zrUtil.extend({\n lineCap: 'round'\n }, timelineModel.getModel('lineStyle').getLineStyle()),\n silent: true,\n z2: 1\n }));\n },\n\n /**\n * @private\n */\n _renderAxisTick: function (layoutInfo, group, axis, timelineModel) {\n var data = timelineModel.getData(); // Show all ticks, despite ignoring strategy.\n\n var ticks = axis.scale.getTicks(); // The value is dataIndex, see the costomized scale.\n\n each(ticks, function (value) {\n var tickCoord = axis.dataToCoord(value);\n var itemModel = data.getItemModel(value);\n var itemStyleModel = itemModel.getModel('itemStyle');\n var hoverStyleModel = itemModel.getModel('emphasis.itemStyle');\n var symbolOpt = {\n position: [tickCoord, 0],\n onclick: bind(this._changeTimeline, this, value)\n };\n var el = giveSymbol(itemModel, itemStyleModel, group, symbolOpt);\n graphic.setHoverStyle(el, hoverStyleModel.getItemStyle());\n\n if (itemModel.get('tooltip')) {\n el.dataIndex = value;\n el.dataModel = timelineModel;\n } else {\n el.dataIndex = el.dataModel = null;\n }\n }, this);\n },\n\n /**\n * @private\n */\n _renderAxisLabel: function (layoutInfo, group, axis, timelineModel) {\n var labelModel = axis.getLabelModel();\n\n if (!labelModel.get('show')) {\n return;\n }\n\n var data = timelineModel.getData();\n var labels = axis.getViewLabels();\n each(labels, function (labelItem) {\n // The tickValue is dataIndex, see the costomized scale.\n var dataIndex = labelItem.tickValue;\n var itemModel = data.getItemModel(dataIndex);\n var normalLabelModel = itemModel.getModel('label');\n var hoverLabelModel = itemModel.getModel('emphasis.label');\n var tickCoord = axis.dataToCoord(labelItem.tickValue);\n var textEl = new graphic.Text({\n position: [tickCoord, 0],\n rotation: layoutInfo.labelRotation - layoutInfo.rotation,\n onclick: bind(this._changeTimeline, this, dataIndex),\n silent: false\n });\n graphic.setTextStyle(textEl.style, normalLabelModel, {\n text: labelItem.formattedLabel,\n textAlign: layoutInfo.labelAlign,\n textVerticalAlign: layoutInfo.labelBaseline\n });\n group.add(textEl);\n graphic.setHoverStyle(textEl, graphic.setTextStyle({}, hoverLabelModel));\n }, this);\n },\n\n /**\n * @private\n */\n _renderControl: function (layoutInfo, group, axis, timelineModel) {\n var controlSize = layoutInfo.controlSize;\n var rotation = layoutInfo.rotation;\n var itemStyle = timelineModel.getModel('controlStyle').getItemStyle();\n var hoverStyle = timelineModel.getModel('emphasis.controlStyle').getItemStyle();\n var rect = [0, -controlSize / 2, controlSize, controlSize];\n var playState = timelineModel.getPlayState();\n var inverse = timelineModel.get('inverse', true);\n makeBtn(layoutInfo.nextBtnPosition, 'controlStyle.nextIcon', bind(this._changeTimeline, this, inverse ? '-' : '+'));\n makeBtn(layoutInfo.prevBtnPosition, 'controlStyle.prevIcon', bind(this._changeTimeline, this, inverse ? '+' : '-'));\n makeBtn(layoutInfo.playPosition, 'controlStyle.' + (playState ? 'stopIcon' : 'playIcon'), bind(this._handlePlayClick, this, !playState), true);\n\n function makeBtn(position, iconPath, onclick, willRotate) {\n if (!position) {\n return;\n }\n\n var opt = {\n position: position,\n origin: [controlSize / 2, 0],\n rotation: willRotate ? -rotation : 0,\n rectHover: true,\n style: itemStyle,\n onclick: onclick\n };\n var btn = makeIcon(timelineModel, iconPath, rect, opt);\n group.add(btn);\n graphic.setHoverStyle(btn, hoverStyle);\n }\n },\n _renderCurrentPointer: function (layoutInfo, group, axis, timelineModel) {\n var data = timelineModel.getData();\n var currentIndex = timelineModel.getCurrentIndex();\n var pointerModel = data.getItemModel(currentIndex).getModel('checkpointStyle');\n var me = this;\n var callback = {\n onCreate: function (pointer) {\n pointer.draggable = true;\n pointer.drift = bind(me._handlePointerDrag, me);\n pointer.ondragend = bind(me._handlePointerDragend, me);\n pointerMoveTo(pointer, currentIndex, axis, timelineModel, true);\n },\n onUpdate: function (pointer) {\n pointerMoveTo(pointer, currentIndex, axis, timelineModel);\n }\n }; // Reuse when exists, for animation and drag.\n\n this._currentPointer = giveSymbol(pointerModel, pointerModel, this._mainGroup, {}, this._currentPointer, callback);\n },\n _handlePlayClick: function (nextState) {\n this._clearTimer();\n\n this.api.dispatchAction({\n type: 'timelinePlayChange',\n playState: nextState,\n from: this.uid\n });\n },\n _handlePointerDrag: function (dx, dy, e) {\n this._clearTimer();\n\n this._pointerChangeTimeline([e.offsetX, e.offsetY]);\n },\n _handlePointerDragend: function (e) {\n this._pointerChangeTimeline([e.offsetX, e.offsetY], true);\n },\n _pointerChangeTimeline: function (mousePos, trigger) {\n var toCoord = this._toAxisCoord(mousePos)[0];\n\n var axis = this._axis;\n var axisExtent = numberUtil.asc(axis.getExtent().slice());\n toCoord > axisExtent[1] && (toCoord = axisExtent[1]);\n toCoord < axisExtent[0] && (toCoord = axisExtent[0]);\n this._currentPointer.position[0] = toCoord;\n\n this._currentPointer.dirty();\n\n var targetDataIndex = this._findNearestTick(toCoord);\n\n var timelineModel = this.model;\n\n if (trigger || targetDataIndex !== timelineModel.getCurrentIndex() && timelineModel.get('realtime')) {\n this._changeTimeline(targetDataIndex);\n }\n },\n _doPlayStop: function () {\n this._clearTimer();\n\n if (this.model.getPlayState()) {\n this._timer = setTimeout(bind(handleFrame, this), this.model.get('playInterval'));\n }\n\n function handleFrame() {\n // Do not cache\n var timelineModel = this.model;\n\n this._changeTimeline(timelineModel.getCurrentIndex() + (timelineModel.get('rewind', true) ? -1 : 1));\n }\n },\n _toAxisCoord: function (vertex) {\n var trans = this._mainGroup.getLocalTransform();\n\n return graphic.applyTransform(vertex, trans, true);\n },\n _findNearestTick: function (axisCoord) {\n var data = this.model.getData();\n var dist = Infinity;\n var targetDataIndex;\n var axis = this._axis;\n data.each(['value'], function (value, dataIndex) {\n var coord = axis.dataToCoord(value);\n var d = Math.abs(coord - axisCoord);\n\n if (d < dist) {\n dist = d;\n targetDataIndex = dataIndex;\n }\n });\n return targetDataIndex;\n },\n _clearTimer: function () {\n if (this._timer) {\n clearTimeout(this._timer);\n this._timer = null;\n }\n },\n _changeTimeline: function (nextIndex) {\n var currentIndex = this.model.getCurrentIndex();\n\n if (nextIndex === '+') {\n nextIndex = currentIndex + 1;\n } else if (nextIndex === '-') {\n nextIndex = currentIndex - 1;\n }\n\n this.api.dispatchAction({\n type: 'timelineChange',\n currentIndex: nextIndex,\n from: this.uid\n });\n }\n});\n\nfunction getViewRect(model, api) {\n return layout.getLayoutRect(model.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n }, model.get('padding'));\n}\n\nfunction makeIcon(timelineModel, objPath, rect, opts) {\n var style = opts.style;\n var icon = graphic.createIcon(timelineModel.get(objPath), opts || {}, new BoundingRect(rect[0], rect[1], rect[2], rect[3])); // TODO createIcon won't use style in opt.\n\n if (style) {\n icon.setStyle(style);\n }\n\n return icon;\n}\n/**\n * Create symbol or update symbol\n * opt: basic position and event handlers\n */\n\n\nfunction giveSymbol(hostModel, itemStyleModel, group, opt, symbol, callback) {\n var color = itemStyleModel.get('color');\n\n if (!symbol) {\n var symbolType = hostModel.get('symbol');\n symbol = createSymbol(symbolType, -1, -1, 2, 2, color);\n symbol.setStyle('strokeNoScale', true);\n group.add(symbol);\n callback && callback.onCreate(symbol);\n } else {\n symbol.setColor(color);\n group.add(symbol); // Group may be new, also need to add.\n\n callback && callback.onUpdate(symbol);\n } // Style\n\n\n var itemStyle = itemStyleModel.getItemStyle(['color', 'symbol', 'symbolSize']);\n symbol.setStyle(itemStyle); // Transform and events.\n\n opt = zrUtil.merge({\n rectHover: true,\n z2: 100\n }, opt, true);\n var symbolSize = hostModel.get('symbolSize');\n symbolSize = symbolSize instanceof Array ? symbolSize.slice() : [+symbolSize, +symbolSize];\n symbolSize[0] /= 2;\n symbolSize[1] /= 2;\n opt.scale = symbolSize;\n var symbolOffset = hostModel.get('symbolOffset');\n\n if (symbolOffset) {\n var pos = opt.position = opt.position || [0, 0];\n pos[0] += numberUtil.parsePercent(symbolOffset[0], symbolSize[0]);\n pos[1] += numberUtil.parsePercent(symbolOffset[1], symbolSize[1]);\n }\n\n var symbolRotate = hostModel.get('symbolRotate');\n opt.rotation = (symbolRotate || 0) * Math.PI / 180 || 0;\n symbol.attr(opt); // FIXME\n // (1) When symbol.style.strokeNoScale is true and updateTransform is not performed,\n // getBoundingRect will return wrong result.\n // (This is supposed to be resolved in zrender, but it is a little difficult to\n // leverage performance and auto updateTransform)\n // (2) All of ancesters of symbol do not scale, so we can just updateTransform symbol.\n\n symbol.updateTransform();\n return symbol;\n}\n\nfunction pointerMoveTo(pointer, dataIndex, axis, timelineModel, noAnimation) {\n if (pointer.dragging) {\n return;\n }\n\n var pointerModel = timelineModel.getModel('checkpointStyle');\n var toCoord = axis.dataToCoord(timelineModel.getData().get(['value'], dataIndex));\n\n if (noAnimation || !pointerModel.get('animation', true)) {\n pointer.attr({\n position: [toCoord, 0]\n });\n } else {\n pointer.stopAnimation(true);\n pointer.animateTo({\n position: [toCoord, 0]\n }, pointerModel.get('animationDuration', true), pointerModel.get('animationEasing', true));\n }\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/timeline/SliderTimelineView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/timeline/TimelineAxis.js": +/*!*********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/timeline/TimelineAxis.js ***! + \*********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar Axis = __webpack_require__(/*! ../../coord/Axis */ \"./node_modules/echarts/lib/coord/Axis.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Extend axis 2d\n * @constructor module:echarts/coord/cartesian/Axis2D\n * @extends {module:echarts/coord/cartesian/Axis}\n * @param {string} dim\n * @param {*} scale\n * @param {Array.} coordExtent\n * @param {string} axisType\n * @param {string} position\n */\nvar TimelineAxis = function (dim, scale, coordExtent, axisType) {\n Axis.call(this, dim, scale, coordExtent);\n /**\n * Axis type\n * - 'category'\n * - 'value'\n * - 'time'\n * - 'log'\n * @type {string}\n */\n\n this.type = axisType || 'value';\n /**\n * Axis model\n * @param {module:echarts/component/TimelineModel}\n */\n\n this.model = null;\n};\n\nTimelineAxis.prototype = {\n constructor: TimelineAxis,\n\n /**\n * @override\n */\n getLabelModel: function () {\n return this.model.getModel('label');\n },\n\n /**\n * @override\n */\n isHorizontal: function () {\n return this.model.get('orient') === 'horizontal';\n }\n};\nzrUtil.inherits(TimelineAxis, Axis);\nvar _default = TimelineAxis;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/timeline/TimelineAxis.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/timeline/TimelineModel.js": +/*!**********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/timeline/TimelineModel.js ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar ComponentModel = __webpack_require__(/*! ../../model/Component */ \"./node_modules/echarts/lib/model/Component.js\");\n\nvar List = __webpack_require__(/*! ../../data/List */ \"./node_modules/echarts/lib/data/List.js\");\n\nvar modelUtil = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar TimelineModel = ComponentModel.extend({\n type: 'timeline',\n layoutMode: 'box',\n\n /**\n * @protected\n */\n defaultOption: {\n zlevel: 0,\n // 一级层叠\n z: 4,\n // 二级层叠\n show: true,\n axisType: 'time',\n // 模式是时间类型,支持 value, category\n realtime: true,\n left: '20%',\n top: null,\n right: '20%',\n bottom: 0,\n width: null,\n height: 40,\n padding: 5,\n controlPosition: 'left',\n // 'left' 'right' 'top' 'bottom' 'none'\n autoPlay: false,\n rewind: false,\n // 反向播放\n loop: true,\n playInterval: 2000,\n // 播放时间间隔,单位ms\n currentIndex: 0,\n itemStyle: {},\n label: {\n color: '#000'\n },\n data: []\n },\n\n /**\n * @override\n */\n init: function (option, parentModel, ecModel) {\n /**\n * @private\n * @type {module:echarts/data/List}\n */\n this._data;\n /**\n * @private\n * @type {Array.}\n */\n\n this._names;\n this.mergeDefaultAndTheme(option, ecModel);\n\n this._initData();\n },\n\n /**\n * @override\n */\n mergeOption: function (option) {\n TimelineModel.superApply(this, 'mergeOption', arguments);\n\n this._initData();\n },\n\n /**\n * @param {number} [currentIndex]\n */\n setCurrentIndex: function (currentIndex) {\n if (currentIndex == null) {\n currentIndex = this.option.currentIndex;\n }\n\n var count = this._data.count();\n\n if (this.option.loop) {\n currentIndex = (currentIndex % count + count) % count;\n } else {\n currentIndex >= count && (currentIndex = count - 1);\n currentIndex < 0 && (currentIndex = 0);\n }\n\n this.option.currentIndex = currentIndex;\n },\n\n /**\n * @return {number} currentIndex\n */\n getCurrentIndex: function () {\n return this.option.currentIndex;\n },\n\n /**\n * @return {boolean}\n */\n isIndexMax: function () {\n return this.getCurrentIndex() >= this._data.count() - 1;\n },\n\n /**\n * @param {boolean} state true: play, false: stop\n */\n setPlayState: function (state) {\n this.option.autoPlay = !!state;\n },\n\n /**\n * @return {boolean} true: play, false: stop\n */\n getPlayState: function () {\n return !!this.option.autoPlay;\n },\n\n /**\n * @private\n */\n _initData: function () {\n var thisOption = this.option;\n var dataArr = thisOption.data || [];\n var axisType = thisOption.axisType;\n var names = this._names = [];\n\n if (axisType === 'category') {\n var idxArr = [];\n zrUtil.each(dataArr, function (item, index) {\n var value = modelUtil.getDataItemValue(item);\n var newItem;\n\n if (zrUtil.isObject(item)) {\n newItem = zrUtil.clone(item);\n newItem.value = index;\n } else {\n newItem = index;\n }\n\n idxArr.push(newItem);\n\n if (!zrUtil.isString(value) && (value == null || isNaN(value))) {\n value = '';\n }\n\n names.push(value + '');\n });\n dataArr = idxArr;\n }\n\n var dimType = {\n category: 'ordinal',\n time: 'time'\n }[axisType] || 'number';\n var data = this._data = new List([{\n name: 'value',\n type: dimType\n }], this);\n data.initData(dataArr, names);\n },\n getData: function () {\n return this._data;\n },\n\n /**\n * @public\n * @return {Array.} categoreis\n */\n getCategories: function () {\n if (this.get('axisType') === 'category') {\n return this._names.slice();\n }\n }\n});\nvar _default = TimelineModel;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/timeline/TimelineModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/timeline/TimelineView.js": +/*!*********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/timeline/TimelineView.js ***! + \*********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar ComponentView = __webpack_require__(/*! ../../view/Component */ \"./node_modules/echarts/lib/view/Component.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = ComponentView.extend({\n type: 'timeline'\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/timeline/TimelineView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/timeline/preprocessor.js": +/*!*********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/timeline/preprocessor.js ***! + \*********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(option) {\n var timelineOpt = option && option.timeline;\n\n if (!zrUtil.isArray(timelineOpt)) {\n timelineOpt = timelineOpt ? [timelineOpt] : [];\n }\n\n zrUtil.each(timelineOpt, function (opt) {\n if (!opt) {\n return;\n }\n\n compatibleEC2(opt);\n });\n}\n\nfunction compatibleEC2(opt) {\n var type = opt.type;\n var ec2Types = {\n 'number': 'value',\n 'time': 'time'\n }; // Compatible with ec2\n\n if (ec2Types[type]) {\n opt.axisType = ec2Types[type];\n delete opt.type;\n }\n\n transferItem(opt);\n\n if (has(opt, 'controlPosition')) {\n var controlStyle = opt.controlStyle || (opt.controlStyle = {});\n\n if (!has(controlStyle, 'position')) {\n controlStyle.position = opt.controlPosition;\n }\n\n if (controlStyle.position === 'none' && !has(controlStyle, 'show')) {\n controlStyle.show = false;\n delete controlStyle.position;\n }\n\n delete opt.controlPosition;\n }\n\n zrUtil.each(opt.data || [], function (dataItem) {\n if (zrUtil.isObject(dataItem) && !zrUtil.isArray(dataItem)) {\n if (!has(dataItem, 'value') && has(dataItem, 'name')) {\n // In ec2, using name as value.\n dataItem.value = dataItem.name;\n }\n\n transferItem(dataItem);\n }\n });\n}\n\nfunction transferItem(opt) {\n var itemStyle = opt.itemStyle || (opt.itemStyle = {});\n var itemStyleEmphasis = itemStyle.emphasis || (itemStyle.emphasis = {}); // Transfer label out\n\n var label = opt.label || opt.label || {};\n var labelNormal = label.normal || (label.normal = {});\n var excludeLabelAttr = {\n normal: 1,\n emphasis: 1\n };\n zrUtil.each(label, function (value, name) {\n if (!excludeLabelAttr[name] && !has(labelNormal, name)) {\n labelNormal[name] = value;\n }\n });\n\n if (itemStyleEmphasis.label && !has(label, 'emphasis')) {\n label.emphasis = itemStyleEmphasis.label;\n delete itemStyleEmphasis.label;\n }\n}\n\nfunction has(obj, attr) {\n return obj.hasOwnProperty(attr);\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/timeline/preprocessor.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/timeline/timelineAction.js": +/*!***********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/timeline/timelineAction.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerAction({\n type: 'timelineChange',\n event: 'timelineChanged',\n update: 'prepareAndUpdate'\n}, function (payload, ecModel) {\n var timelineModel = ecModel.getComponent('timeline');\n\n if (timelineModel && payload.currentIndex != null) {\n timelineModel.setCurrentIndex(payload.currentIndex);\n\n if (!timelineModel.get('loop', true) && timelineModel.isIndexMax()) {\n timelineModel.setPlayState(false);\n }\n } // Set normalized currentIndex to payload.\n\n\n ecModel.resetOption('timeline');\n return zrUtil.defaults({\n currentIndex: timelineModel.option.currentIndex\n }, payload);\n});\necharts.registerAction({\n type: 'timelinePlayChange',\n event: 'timelinePlayChanged',\n update: 'update'\n}, function (payload, ecModel) {\n var timelineModel = ecModel.getComponent('timeline');\n\n if (timelineModel && payload.playState != null) {\n timelineModel.setPlayState(payload.playState);\n }\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/timeline/timelineAction.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/timeline/typeDefaulter.js": +/*!**********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/timeline/typeDefaulter.js ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Component = __webpack_require__(/*! ../../model/Component */ \"./node_modules/echarts/lib/model/Component.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nComponent.registerSubTypeDefaulter('timeline', function () {\n // Only slider now.\n return 'slider';\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/timeline/typeDefaulter.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/title.js": +/*!*****************************************************!*\ + !*** ./node_modules/echarts/lib/component/title.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar graphic = __webpack_require__(/*! ../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar _layout = __webpack_require__(/*! ../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar getLayoutRect = _layout.getLayoutRect;\n\nvar _format = __webpack_require__(/*! ../util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\nvar windowOpen = _format.windowOpen;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Model\necharts.extendComponentModel({\n type: 'title',\n layoutMode: {\n type: 'box',\n ignoreSize: true\n },\n defaultOption: {\n // 一级层叠\n zlevel: 0,\n // 二级层叠\n z: 6,\n show: true,\n text: '',\n // 超链接跳转\n // link: null,\n // 仅支持self | blank\n target: 'blank',\n subtext: '',\n // 超链接跳转\n // sublink: null,\n // 仅支持self | blank\n subtarget: 'blank',\n // 'center' ¦ 'left' ¦ 'right'\n // ¦ {number}(x坐标,单位px)\n left: 0,\n // 'top' ¦ 'bottom' ¦ 'center'\n // ¦ {number}(y坐标,单位px)\n top: 0,\n // 水平对齐\n // 'auto' | 'left' | 'right' | 'center'\n // 默认根据 left 的位置判断是左对齐还是右对齐\n // textAlign: null\n //\n // 垂直对齐\n // 'auto' | 'top' | 'bottom' | 'middle'\n // 默认根据 top 位置判断是上对齐还是下对齐\n // textVerticalAlign: null\n // textBaseline: null // The same as textVerticalAlign.\n backgroundColor: 'rgba(0,0,0,0)',\n // 标题边框颜色\n borderColor: '#ccc',\n // 标题边框线宽,单位px,默认为0(无边框)\n borderWidth: 0,\n // 标题内边距,单位px,默认各方向内边距为5,\n // 接受数组分别设定上右下左边距,同css\n padding: 5,\n // 主副标题纵向间隔,单位px,默认为10,\n itemGap: 10,\n textStyle: {\n fontSize: 18,\n fontWeight: 'bolder',\n color: '#333'\n },\n subtextStyle: {\n color: '#aaa'\n }\n }\n}); // View\n\necharts.extendComponentView({\n type: 'title',\n render: function (titleModel, ecModel, api) {\n this.group.removeAll();\n\n if (!titleModel.get('show')) {\n return;\n }\n\n var group = this.group;\n var textStyleModel = titleModel.getModel('textStyle');\n var subtextStyleModel = titleModel.getModel('subtextStyle');\n var textAlign = titleModel.get('textAlign');\n var textVerticalAlign = zrUtil.retrieve2(titleModel.get('textBaseline'), titleModel.get('textVerticalAlign'));\n var textEl = new graphic.Text({\n style: graphic.setTextStyle({}, textStyleModel, {\n text: titleModel.get('text'),\n textFill: textStyleModel.getTextColor()\n }, {\n disableBox: true\n }),\n z2: 10\n });\n var textRect = textEl.getBoundingRect();\n var subText = titleModel.get('subtext');\n var subTextEl = new graphic.Text({\n style: graphic.setTextStyle({}, subtextStyleModel, {\n text: subText,\n textFill: subtextStyleModel.getTextColor(),\n y: textRect.height + titleModel.get('itemGap'),\n textVerticalAlign: 'top'\n }, {\n disableBox: true\n }),\n z2: 10\n });\n var link = titleModel.get('link');\n var sublink = titleModel.get('sublink');\n var triggerEvent = titleModel.get('triggerEvent', true);\n textEl.silent = !link && !triggerEvent;\n subTextEl.silent = !sublink && !triggerEvent;\n\n if (link) {\n textEl.on('click', function () {\n windowOpen(link, '_' + titleModel.get('target'));\n });\n }\n\n if (sublink) {\n subTextEl.on('click', function () {\n windowOpen(sublink, '_' + titleModel.get('subtarget'));\n });\n }\n\n textEl.eventData = subTextEl.eventData = triggerEvent ? {\n componentType: 'title',\n componentIndex: titleModel.componentIndex\n } : null;\n group.add(textEl);\n subText && group.add(subTextEl); // If no subText, but add subTextEl, there will be an empty line.\n\n var groupRect = group.getBoundingRect();\n var layoutOption = titleModel.getBoxLayoutParams();\n layoutOption.width = groupRect.width;\n layoutOption.height = groupRect.height;\n var layoutRect = getLayoutRect(layoutOption, {\n width: api.getWidth(),\n height: api.getHeight()\n }, titleModel.get('padding')); // Adjust text align based on position\n\n if (!textAlign) {\n // Align left if title is on the left. center and right is same\n textAlign = titleModel.get('left') || titleModel.get('right');\n\n if (textAlign === 'middle') {\n textAlign = 'center';\n } // Adjust layout by text align\n\n\n if (textAlign === 'right') {\n layoutRect.x += layoutRect.width;\n } else if (textAlign === 'center') {\n layoutRect.x += layoutRect.width / 2;\n }\n }\n\n if (!textVerticalAlign) {\n textVerticalAlign = titleModel.get('top') || titleModel.get('bottom');\n\n if (textVerticalAlign === 'center') {\n textVerticalAlign = 'middle';\n }\n\n if (textVerticalAlign === 'bottom') {\n layoutRect.y += layoutRect.height;\n } else if (textVerticalAlign === 'middle') {\n layoutRect.y += layoutRect.height / 2;\n }\n\n textVerticalAlign = textVerticalAlign || 'top';\n }\n\n group.attr('position', [layoutRect.x, layoutRect.y]);\n var alignStyle = {\n textAlign: textAlign,\n textVerticalAlign: textVerticalAlign\n };\n textEl.setStyle(alignStyle);\n subTextEl.setStyle(alignStyle); // Render background\n // Get groupRect again because textAlign has been changed\n\n groupRect = group.getBoundingRect();\n var padding = layoutRect.margin;\n var style = titleModel.getItemStyle(['color', 'opacity']);\n style.fill = titleModel.get('backgroundColor');\n var rect = new graphic.Rect({\n shape: {\n x: groupRect.x - padding[3],\n y: groupRect.y - padding[0],\n width: groupRect.width + padding[1] + padding[3],\n height: groupRect.height + padding[0] + padding[2],\n r: titleModel.get('borderRadius')\n },\n style: style,\n subPixelOptimize: true,\n silent: true\n });\n group.add(rect);\n }\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/title.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/toolbox.js": +/*!*******************************************************!*\ + !*** ./node_modules/echarts/lib/component/toolbox.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(/*! ./toolbox/ToolboxModel */ \"./node_modules/echarts/lib/component/toolbox/ToolboxModel.js\");\n\n__webpack_require__(/*! ./toolbox/ToolboxView */ \"./node_modules/echarts/lib/component/toolbox/ToolboxView.js\");\n\n__webpack_require__(/*! ./toolbox/feature/SaveAsImage */ \"./node_modules/echarts/lib/component/toolbox/feature/SaveAsImage.js\");\n\n__webpack_require__(/*! ./toolbox/feature/MagicType */ \"./node_modules/echarts/lib/component/toolbox/feature/MagicType.js\");\n\n__webpack_require__(/*! ./toolbox/feature/DataView */ \"./node_modules/echarts/lib/component/toolbox/feature/DataView.js\");\n\n__webpack_require__(/*! ./toolbox/feature/DataZoom */ \"./node_modules/echarts/lib/component/toolbox/feature/DataZoom.js\");\n\n__webpack_require__(/*! ./toolbox/feature/Restore */ \"./node_modules/echarts/lib/component/toolbox/feature/Restore.js\");\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/toolbox.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/toolbox/ToolboxModel.js": +/*!********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/toolbox/ToolboxModel.js ***! + \********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar featureManager = __webpack_require__(/*! ./featureManager */ \"./node_modules/echarts/lib/component/toolbox/featureManager.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar ToolboxModel = echarts.extendComponentModel({\n type: 'toolbox',\n layoutMode: {\n type: 'box',\n ignoreSize: true\n },\n optionUpdated: function () {\n ToolboxModel.superApply(this, 'optionUpdated', arguments);\n zrUtil.each(this.option.feature, function (featureOpt, featureName) {\n var Feature = featureManager.get(featureName);\n Feature && zrUtil.merge(featureOpt, Feature.defaultOption);\n });\n },\n defaultOption: {\n show: true,\n z: 6,\n zlevel: 0,\n orient: 'horizontal',\n left: 'right',\n top: 'top',\n // right\n // bottom\n backgroundColor: 'transparent',\n borderColor: '#ccc',\n borderRadius: 0,\n borderWidth: 0,\n padding: 5,\n itemSize: 15,\n itemGap: 8,\n showTitle: true,\n iconStyle: {\n borderColor: '#666',\n color: 'none'\n },\n emphasis: {\n iconStyle: {\n borderColor: '#3E98C5'\n }\n },\n // textStyle: {},\n // feature\n tooltip: {\n show: false\n }\n }\n});\nvar _default = ToolboxModel;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/toolbox/ToolboxModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/toolbox/ToolboxView.js": +/*!*******************************************************************!*\ + !*** ./node_modules/echarts/lib/component/toolbox/ToolboxView.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar textContain = __webpack_require__(/*! zrender/lib/contain/text */ \"./node_modules/zrender/lib/contain/text.js\");\n\nvar featureManager = __webpack_require__(/*! ./featureManager */ \"./node_modules/echarts/lib/component/toolbox/featureManager.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar Model = __webpack_require__(/*! ../../model/Model */ \"./node_modules/echarts/lib/model/Model.js\");\n\nvar DataDiffer = __webpack_require__(/*! ../../data/DataDiffer */ \"./node_modules/echarts/lib/data/DataDiffer.js\");\n\nvar listComponentHelper = __webpack_require__(/*! ../helper/listComponent */ \"./node_modules/echarts/lib/component/helper/listComponent.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendComponentView({\n type: 'toolbox',\n render: function (toolboxModel, ecModel, api, payload) {\n var group = this.group;\n group.removeAll();\n\n if (!toolboxModel.get('show')) {\n return;\n }\n\n var itemSize = +toolboxModel.get('itemSize');\n var featureOpts = toolboxModel.get('feature') || {};\n var features = this._features || (this._features = {});\n var featureNames = [];\n zrUtil.each(featureOpts, function (opt, name) {\n featureNames.push(name);\n });\n new DataDiffer(this._featureNames || [], featureNames).add(processFeature).update(processFeature).remove(zrUtil.curry(processFeature, null)).execute(); // Keep for diff.\n\n this._featureNames = featureNames;\n\n function processFeature(newIndex, oldIndex) {\n var featureName = featureNames[newIndex];\n var oldName = featureNames[oldIndex];\n var featureOpt = featureOpts[featureName];\n var featureModel = new Model(featureOpt, toolboxModel, toolboxModel.ecModel);\n var feature; // FIX#11236, merge feature title from MagicType newOption. TODO: consider seriesIndex ?\n\n if (payload && payload.newTitle != null && payload.featureName === featureName) {\n featureOpt.title = payload.newTitle;\n }\n\n if (featureName && !oldName) {\n // Create\n if (isUserFeatureName(featureName)) {\n feature = {\n model: featureModel,\n onclick: featureModel.option.onclick,\n featureName: featureName\n };\n } else {\n var Feature = featureManager.get(featureName);\n\n if (!Feature) {\n return;\n }\n\n feature = new Feature(featureModel, ecModel, api);\n }\n\n features[featureName] = feature;\n } else {\n feature = features[oldName]; // If feature does not exsit.\n\n if (!feature) {\n return;\n }\n\n feature.model = featureModel;\n feature.ecModel = ecModel;\n feature.api = api;\n }\n\n if (!featureName && oldName) {\n feature.dispose && feature.dispose(ecModel, api);\n return;\n }\n\n if (!featureModel.get('show') || feature.unusable) {\n feature.remove && feature.remove(ecModel, api);\n return;\n }\n\n createIconPaths(featureModel, feature, featureName);\n\n featureModel.setIconStatus = function (iconName, status) {\n var option = this.option;\n var iconPaths = this.iconPaths;\n option.iconStatus = option.iconStatus || {};\n option.iconStatus[iconName] = status; // FIXME\n\n iconPaths[iconName] && iconPaths[iconName].trigger(status);\n };\n\n if (feature.render) {\n feature.render(featureModel, ecModel, api, payload);\n }\n }\n\n function createIconPaths(featureModel, feature, featureName) {\n var iconStyleModel = featureModel.getModel('iconStyle');\n var iconStyleEmphasisModel = featureModel.getModel('emphasis.iconStyle'); // If one feature has mutiple icon. they are orginaized as\n // {\n // icon: {\n // foo: '',\n // bar: ''\n // },\n // title: {\n // foo: '',\n // bar: ''\n // }\n // }\n\n var icons = feature.getIcons ? feature.getIcons() : featureModel.get('icon');\n var titles = featureModel.get('title') || {};\n\n if (typeof icons === 'string') {\n var icon = icons;\n var title = titles;\n icons = {};\n titles = {};\n icons[featureName] = icon;\n titles[featureName] = title;\n }\n\n var iconPaths = featureModel.iconPaths = {};\n zrUtil.each(icons, function (iconStr, iconName) {\n var path = graphic.createIcon(iconStr, {}, {\n x: -itemSize / 2,\n y: -itemSize / 2,\n width: itemSize,\n height: itemSize\n });\n path.setStyle(iconStyleModel.getItemStyle());\n path.hoverStyle = iconStyleEmphasisModel.getItemStyle(); // Text position calculation\n\n path.setStyle({\n text: titles[iconName],\n textAlign: iconStyleEmphasisModel.get('textAlign'),\n textBorderRadius: iconStyleEmphasisModel.get('textBorderRadius'),\n textPadding: iconStyleEmphasisModel.get('textPadding'),\n textFill: null\n });\n var tooltipModel = toolboxModel.getModel('tooltip');\n\n if (tooltipModel && tooltipModel.get('show')) {\n path.attr('tooltip', zrUtil.extend({\n content: titles[iconName],\n formatter: tooltipModel.get('formatter', true) || function () {\n return titles[iconName];\n },\n formatterParams: {\n componentType: 'toolbox',\n name: iconName,\n title: titles[iconName],\n $vars: ['name', 'title']\n },\n position: tooltipModel.get('position', true) || 'bottom'\n }, tooltipModel.option));\n }\n\n graphic.setHoverStyle(path);\n\n if (toolboxModel.get('showTitle')) {\n path.__title = titles[iconName];\n path.on('mouseover', function () {\n // Should not reuse above hoverStyle, which might be modified.\n var hoverStyle = iconStyleEmphasisModel.getItemStyle();\n var defaultTextPosition = toolboxModel.get('orient') === 'vertical' ? toolboxModel.get('right') == null ? 'right' : 'left' : toolboxModel.get('bottom') == null ? 'bottom' : 'top';\n path.setStyle({\n textFill: iconStyleEmphasisModel.get('textFill') || hoverStyle.fill || hoverStyle.stroke || '#000',\n textBackgroundColor: iconStyleEmphasisModel.get('textBackgroundColor'),\n textPosition: iconStyleEmphasisModel.get('textPosition') || defaultTextPosition\n });\n }).on('mouseout', function () {\n path.setStyle({\n textFill: null,\n textBackgroundColor: null\n });\n });\n }\n\n path.trigger(featureModel.get('iconStatus.' + iconName) || 'normal');\n group.add(path);\n path.on('click', zrUtil.bind(feature.onclick, feature, ecModel, api, iconName));\n iconPaths[iconName] = path;\n });\n }\n\n listComponentHelper.layout(group, toolboxModel, api); // Render background after group is layout\n // FIXME\n\n group.add(listComponentHelper.makeBackground(group.getBoundingRect(), toolboxModel)); // Adjust icon title positions to avoid them out of screen\n\n group.eachChild(function (icon) {\n var titleText = icon.__title;\n var hoverStyle = icon.hoverStyle; // May be background element\n\n if (hoverStyle && titleText) {\n var rect = textContain.getBoundingRect(titleText, textContain.makeFont(hoverStyle));\n var offsetX = icon.position[0] + group.position[0];\n var offsetY = icon.position[1] + group.position[1] + itemSize;\n var needPutOnTop = false;\n\n if (offsetY + rect.height > api.getHeight()) {\n hoverStyle.textPosition = 'top';\n needPutOnTop = true;\n }\n\n var topOffset = needPutOnTop ? -5 - rect.height : itemSize + 8;\n\n if (offsetX + rect.width / 2 > api.getWidth()) {\n hoverStyle.textPosition = ['100%', topOffset];\n hoverStyle.textAlign = 'right';\n } else if (offsetX - rect.width / 2 < 0) {\n hoverStyle.textPosition = [0, topOffset];\n hoverStyle.textAlign = 'left';\n }\n }\n });\n },\n updateView: function (toolboxModel, ecModel, api, payload) {\n zrUtil.each(this._features, function (feature) {\n feature.updateView && feature.updateView(feature.model, ecModel, api, payload);\n });\n },\n // updateLayout: function (toolboxModel, ecModel, api, payload) {\n // zrUtil.each(this._features, function (feature) {\n // feature.updateLayout && feature.updateLayout(feature.model, ecModel, api, payload);\n // });\n // },\n remove: function (ecModel, api) {\n zrUtil.each(this._features, function (feature) {\n feature.remove && feature.remove(ecModel, api);\n });\n this.group.removeAll();\n },\n dispose: function (ecModel, api) {\n zrUtil.each(this._features, function (feature) {\n feature.dispose && feature.dispose(ecModel, api);\n });\n }\n});\n\nfunction isUserFeatureName(featureName) {\n return featureName.indexOf('my') === 0;\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/toolbox/ToolboxView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/toolbox/feature/Brush.js": +/*!*********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/toolbox/feature/Brush.js ***! + \*********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar featureManager = __webpack_require__(/*! ../featureManager */ \"./node_modules/echarts/lib/component/toolbox/featureManager.js\");\n\nvar lang = __webpack_require__(/*! ../../../lang */ \"./node_modules/echarts/lib/lang.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar brushLang = lang.toolbox.brush;\n\nfunction Brush(model, ecModel, api) {\n this.model = model;\n this.ecModel = ecModel;\n this.api = api;\n /**\n * @private\n * @type {string}\n */\n\n this._brushType;\n /**\n * @private\n * @type {string}\n */\n\n this._brushMode;\n}\n\nBrush.defaultOption = {\n show: true,\n type: ['rect', 'polygon', 'lineX', 'lineY', 'keep', 'clear'],\n icon: {\n /* eslint-disable */\n rect: 'M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13',\n // jshint ignore:line\n polygon: 'M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2',\n // jshint ignore:line\n lineX: 'M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4',\n // jshint ignore:line\n lineY: 'M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4',\n // jshint ignore:line\n keep: 'M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z',\n // jshint ignore:line\n clear: 'M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2' // jshint ignore:line\n\n /* eslint-enable */\n\n },\n // `rect`, `polygon`, `lineX`, `lineY`, `keep`, `clear`\n title: zrUtil.clone(brushLang.title)\n};\nvar proto = Brush.prototype; // proto.updateLayout = function (featureModel, ecModel, api) {\n\n/* eslint-disable */\n\nproto.render =\n/* eslint-enable */\nproto.updateView = function (featureModel, ecModel, api) {\n var brushType;\n var brushMode;\n var isBrushed;\n ecModel.eachComponent({\n mainType: 'brush'\n }, function (brushModel) {\n brushType = brushModel.brushType;\n brushMode = brushModel.brushOption.brushMode || 'single';\n isBrushed |= brushModel.areas.length;\n });\n this._brushType = brushType;\n this._brushMode = brushMode;\n zrUtil.each(featureModel.get('type', true), function (type) {\n featureModel.setIconStatus(type, (type === 'keep' ? brushMode === 'multiple' : type === 'clear' ? isBrushed : type === brushType) ? 'emphasis' : 'normal');\n });\n};\n\nproto.getIcons = function () {\n var model = this.model;\n var availableIcons = model.get('icon', true);\n var icons = {};\n zrUtil.each(model.get('type', true), function (type) {\n if (availableIcons[type]) {\n icons[type] = availableIcons[type];\n }\n });\n return icons;\n};\n\nproto.onclick = function (ecModel, api, type) {\n var brushType = this._brushType;\n var brushMode = this._brushMode;\n\n if (type === 'clear') {\n // Trigger parallel action firstly\n api.dispatchAction({\n type: 'axisAreaSelect',\n intervals: []\n });\n api.dispatchAction({\n type: 'brush',\n command: 'clear',\n // Clear all areas of all brush components.\n areas: []\n });\n } else {\n api.dispatchAction({\n type: 'takeGlobalCursor',\n key: 'brush',\n brushOption: {\n brushType: type === 'keep' ? brushType : brushType === type ? false : type,\n brushMode: type === 'keep' ? brushMode === 'multiple' ? 'single' : 'multiple' : brushMode\n }\n });\n }\n};\n\nfeatureManager.register('brush', Brush);\nvar _default = Brush;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/toolbox/feature/Brush.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/toolbox/feature/DataView.js": +/*!************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/toolbox/feature/DataView.js ***! + \************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar eventTool = __webpack_require__(/*! zrender/lib/core/event */ \"./node_modules/zrender/lib/core/event.js\");\n\nvar lang = __webpack_require__(/*! ../../../lang */ \"./node_modules/echarts/lib/lang.js\");\n\nvar featureManager = __webpack_require__(/*! ../featureManager */ \"./node_modules/echarts/lib/component/toolbox/featureManager.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar dataViewLang = lang.toolbox.dataView;\nvar BLOCK_SPLITER = new Array(60).join('-');\nvar ITEM_SPLITER = '\\t';\n/**\n * Group series into two types\n * 1. on category axis, like line, bar\n * 2. others, like scatter, pie\n * @param {module:echarts/model/Global} ecModel\n * @return {Object}\n * @inner\n */\n\nfunction groupSeries(ecModel) {\n var seriesGroupByCategoryAxis = {};\n var otherSeries = [];\n var meta = [];\n ecModel.eachRawSeries(function (seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys && (coordSys.type === 'cartesian2d' || coordSys.type === 'polar')) {\n var baseAxis = coordSys.getBaseAxis();\n\n if (baseAxis.type === 'category') {\n var key = baseAxis.dim + '_' + baseAxis.index;\n\n if (!seriesGroupByCategoryAxis[key]) {\n seriesGroupByCategoryAxis[key] = {\n categoryAxis: baseAxis,\n valueAxis: coordSys.getOtherAxis(baseAxis),\n series: []\n };\n meta.push({\n axisDim: baseAxis.dim,\n axisIndex: baseAxis.index\n });\n }\n\n seriesGroupByCategoryAxis[key].series.push(seriesModel);\n } else {\n otherSeries.push(seriesModel);\n }\n } else {\n otherSeries.push(seriesModel);\n }\n });\n return {\n seriesGroupByCategoryAxis: seriesGroupByCategoryAxis,\n other: otherSeries,\n meta: meta\n };\n}\n/**\n * Assemble content of series on cateogory axis\n * @param {Array.} series\n * @return {string}\n * @inner\n */\n\n\nfunction assembleSeriesWithCategoryAxis(series) {\n var tables = [];\n zrUtil.each(series, function (group, key) {\n var categoryAxis = group.categoryAxis;\n var valueAxis = group.valueAxis;\n var valueAxisDim = valueAxis.dim;\n var headers = [' '].concat(zrUtil.map(group.series, function (series) {\n return series.name;\n }));\n var columns = [categoryAxis.model.getCategories()];\n zrUtil.each(group.series, function (series) {\n var rawData = series.getRawData();\n columns.push(series.getRawData().mapArray(rawData.mapDimension(valueAxisDim), function (val) {\n return val;\n }));\n }); // Assemble table content\n\n var lines = [headers.join(ITEM_SPLITER)];\n\n for (var i = 0; i < columns[0].length; i++) {\n var items = [];\n\n for (var j = 0; j < columns.length; j++) {\n items.push(columns[j][i]);\n }\n\n lines.push(items.join(ITEM_SPLITER));\n }\n\n tables.push(lines.join('\\n'));\n });\n return tables.join('\\n\\n' + BLOCK_SPLITER + '\\n\\n');\n}\n/**\n * Assemble content of other series\n * @param {Array.} series\n * @return {string}\n * @inner\n */\n\n\nfunction assembleOtherSeries(series) {\n return zrUtil.map(series, function (series) {\n var data = series.getRawData();\n var lines = [series.name];\n var vals = [];\n data.each(data.dimensions, function () {\n var argLen = arguments.length;\n var dataIndex = arguments[argLen - 1];\n var name = data.getName(dataIndex);\n\n for (var i = 0; i < argLen - 1; i++) {\n vals[i] = arguments[i];\n }\n\n lines.push((name ? name + ITEM_SPLITER : '') + vals.join(ITEM_SPLITER));\n });\n return lines.join('\\n');\n }).join('\\n\\n' + BLOCK_SPLITER + '\\n\\n');\n}\n/**\n * @param {module:echarts/model/Global}\n * @return {Object}\n * @inner\n */\n\n\nfunction getContentFromModel(ecModel) {\n var result = groupSeries(ecModel);\n return {\n value: zrUtil.filter([assembleSeriesWithCategoryAxis(result.seriesGroupByCategoryAxis), assembleOtherSeries(result.other)], function (str) {\n return str.replace(/[\\n\\t\\s]/g, '');\n }).join('\\n\\n' + BLOCK_SPLITER + '\\n\\n'),\n meta: result.meta\n };\n}\n\nfunction trim(str) {\n return str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n}\n/**\n * If a block is tsv format\n */\n\n\nfunction isTSVFormat(block) {\n // Simple method to find out if a block is tsv format\n var firstLine = block.slice(0, block.indexOf('\\n'));\n\n if (firstLine.indexOf(ITEM_SPLITER) >= 0) {\n return true;\n }\n}\n\nvar itemSplitRegex = new RegExp('[' + ITEM_SPLITER + ']+', 'g');\n/**\n * @param {string} tsv\n * @return {Object}\n */\n\nfunction parseTSVContents(tsv) {\n var tsvLines = tsv.split(/\\n+/g);\n var headers = trim(tsvLines.shift()).split(itemSplitRegex);\n var categories = [];\n var series = zrUtil.map(headers, function (header) {\n return {\n name: header,\n data: []\n };\n });\n\n for (var i = 0; i < tsvLines.length; i++) {\n var items = trim(tsvLines[i]).split(itemSplitRegex);\n categories.push(items.shift());\n\n for (var j = 0; j < items.length; j++) {\n series[j] && (series[j].data[i] = items[j]);\n }\n }\n\n return {\n series: series,\n categories: categories\n };\n}\n/**\n * @param {string} str\n * @return {Array.}\n * @inner\n */\n\n\nfunction parseListContents(str) {\n var lines = str.split(/\\n+/g);\n var seriesName = trim(lines.shift());\n var data = [];\n\n for (var i = 0; i < lines.length; i++) {\n // if line is empty, ignore it.\n // there is a case that a user forgot to delete `\\n`.\n var line = trim(lines[i]);\n\n if (!line) {\n continue;\n }\n\n var items = line.split(itemSplitRegex);\n var name = '';\n var value;\n var hasName = false;\n\n if (isNaN(items[0])) {\n // First item is name\n hasName = true;\n name = items[0];\n items = items.slice(1);\n data[i] = {\n name: name,\n value: []\n };\n value = data[i].value;\n } else {\n value = data[i] = [];\n }\n\n for (var j = 0; j < items.length; j++) {\n value.push(+items[j]);\n }\n\n if (value.length === 1) {\n hasName ? data[i].value = value[0] : data[i] = value[0];\n }\n }\n\n return {\n name: seriesName,\n data: data\n };\n}\n/**\n * @param {string} str\n * @param {Array.} blockMetaList\n * @return {Object}\n * @inner\n */\n\n\nfunction parseContents(str, blockMetaList) {\n var blocks = str.split(new RegExp('\\n*' + BLOCK_SPLITER + '\\n*', 'g'));\n var newOption = {\n series: []\n };\n zrUtil.each(blocks, function (block, idx) {\n if (isTSVFormat(block)) {\n var result = parseTSVContents(block);\n var blockMeta = blockMetaList[idx];\n var axisKey = blockMeta.axisDim + 'Axis';\n\n if (blockMeta) {\n newOption[axisKey] = newOption[axisKey] || [];\n newOption[axisKey][blockMeta.axisIndex] = {\n data: result.categories\n };\n newOption.series = newOption.series.concat(result.series);\n }\n } else {\n var result = parseListContents(block);\n newOption.series.push(result);\n }\n });\n return newOption;\n}\n/**\n * @alias {module:echarts/component/toolbox/feature/DataView}\n * @constructor\n * @param {module:echarts/model/Model} model\n */\n\n\nfunction DataView(model) {\n this._dom = null;\n this.model = model;\n}\n\nDataView.defaultOption = {\n show: true,\n readOnly: false,\n optionToContent: null,\n contentToOption: null,\n icon: 'M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28',\n title: zrUtil.clone(dataViewLang.title),\n lang: zrUtil.clone(dataViewLang.lang),\n backgroundColor: '#fff',\n textColor: '#000',\n textareaColor: '#fff',\n textareaBorderColor: '#333',\n buttonColor: '#c23531',\n buttonTextColor: '#fff'\n};\n\nDataView.prototype.onclick = function (ecModel, api) {\n var container = api.getDom();\n var model = this.model;\n\n if (this._dom) {\n container.removeChild(this._dom);\n }\n\n var root = document.createElement('div');\n root.style.cssText = 'position:absolute;left:5px;top:5px;bottom:5px;right:5px;';\n root.style.backgroundColor = model.get('backgroundColor') || '#fff'; // Create elements\n\n var header = document.createElement('h4');\n var lang = model.get('lang') || [];\n header.innerHTML = lang[0] || model.get('title');\n header.style.cssText = 'margin: 10px 20px;';\n header.style.color = model.get('textColor');\n var viewMain = document.createElement('div');\n var textarea = document.createElement('textarea');\n viewMain.style.cssText = 'display:block;width:100%;overflow:auto;';\n var optionToContent = model.get('optionToContent');\n var contentToOption = model.get('contentToOption');\n var result = getContentFromModel(ecModel);\n\n if (typeof optionToContent === 'function') {\n var htmlOrDom = optionToContent(api.getOption());\n\n if (typeof htmlOrDom === 'string') {\n viewMain.innerHTML = htmlOrDom;\n } else if (zrUtil.isDom(htmlOrDom)) {\n viewMain.appendChild(htmlOrDom);\n }\n } else {\n // Use default textarea\n viewMain.appendChild(textarea);\n textarea.readOnly = model.get('readOnly');\n textarea.style.cssText = 'width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;';\n textarea.style.color = model.get('textColor');\n textarea.style.borderColor = model.get('textareaBorderColor');\n textarea.style.backgroundColor = model.get('textareaColor');\n textarea.value = result.value;\n }\n\n var blockMetaList = result.meta;\n var buttonContainer = document.createElement('div');\n buttonContainer.style.cssText = 'position:absolute;bottom:0;left:0;right:0;';\n var buttonStyle = 'float:right;margin-right:20px;border:none;' + 'cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px';\n var closeButton = document.createElement('div');\n var refreshButton = document.createElement('div');\n buttonStyle += ';background-color:' + model.get('buttonColor');\n buttonStyle += ';color:' + model.get('buttonTextColor');\n var self = this;\n\n function close() {\n container.removeChild(root);\n self._dom = null;\n }\n\n eventTool.addEventListener(closeButton, 'click', close);\n eventTool.addEventListener(refreshButton, 'click', function () {\n var newOption;\n\n try {\n if (typeof contentToOption === 'function') {\n newOption = contentToOption(viewMain, api.getOption());\n } else {\n newOption = parseContents(textarea.value, blockMetaList);\n }\n } catch (e) {\n close();\n throw new Error('Data view format error ' + e);\n }\n\n if (newOption) {\n api.dispatchAction({\n type: 'changeDataView',\n newOption: newOption\n });\n }\n\n close();\n });\n closeButton.innerHTML = lang[1];\n refreshButton.innerHTML = lang[2];\n refreshButton.style.cssText = buttonStyle;\n closeButton.style.cssText = buttonStyle;\n !model.get('readOnly') && buttonContainer.appendChild(refreshButton);\n buttonContainer.appendChild(closeButton);\n root.appendChild(header);\n root.appendChild(viewMain);\n root.appendChild(buttonContainer);\n viewMain.style.height = container.clientHeight - 80 + 'px';\n container.appendChild(root);\n this._dom = root;\n};\n\nDataView.prototype.remove = function (ecModel, api) {\n this._dom && api.getDom().removeChild(this._dom);\n};\n\nDataView.prototype.dispose = function (ecModel, api) {\n this.remove(ecModel, api);\n};\n/**\n * @inner\n */\n\n\nfunction tryMergeDataOption(newData, originalData) {\n return zrUtil.map(newData, function (newVal, idx) {\n var original = originalData && originalData[idx];\n\n if (zrUtil.isObject(original) && !zrUtil.isArray(original)) {\n var newValIsObject = zrUtil.isObject(newVal) && !zrUtil.isArray(newVal);\n\n if (!newValIsObject) {\n newVal = {\n value: newVal\n };\n } // original data has name but new data has no name\n\n\n var shouldDeleteName = original.name != null && newVal.name == null; // Original data has option\n\n newVal = zrUtil.defaults(newVal, original);\n shouldDeleteName && delete newVal.name;\n return newVal;\n } else {\n return newVal;\n }\n });\n}\n\nfeatureManager.register('dataView', DataView);\necharts.registerAction({\n type: 'changeDataView',\n event: 'dataViewChanged',\n update: 'prepareAndUpdate'\n}, function (payload, ecModel) {\n var newSeriesOptList = [];\n zrUtil.each(payload.newOption.series, function (seriesOpt) {\n var seriesModel = ecModel.getSeriesByName(seriesOpt.name)[0];\n\n if (!seriesModel) {\n // New created series\n // Geuss the series type\n newSeriesOptList.push(zrUtil.extend({\n // Default is scatter\n type: 'scatter'\n }, seriesOpt));\n } else {\n var originalData = seriesModel.get('data');\n newSeriesOptList.push({\n name: seriesOpt.name,\n data: tryMergeDataOption(seriesOpt.data, originalData)\n });\n }\n });\n ecModel.mergeOption(zrUtil.defaults({\n series: newSeriesOptList\n }, payload.newOption));\n});\nvar _default = DataView;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/toolbox/feature/DataView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/toolbox/feature/DataZoom.js": +/*!************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/toolbox/feature/DataZoom.js ***! + \************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar BrushController = __webpack_require__(/*! ../../helper/BrushController */ \"./node_modules/echarts/lib/component/helper/BrushController.js\");\n\nvar BrushTargetManager = __webpack_require__(/*! ../../helper/BrushTargetManager */ \"./node_modules/echarts/lib/component/helper/BrushTargetManager.js\");\n\nvar history = __webpack_require__(/*! ../../dataZoom/history */ \"./node_modules/echarts/lib/component/dataZoom/history.js\");\n\nvar sliderMove = __webpack_require__(/*! ../../helper/sliderMove */ \"./node_modules/echarts/lib/component/helper/sliderMove.js\");\n\nvar lang = __webpack_require__(/*! ../../../lang */ \"./node_modules/echarts/lib/lang.js\");\n\nvar featureManager = __webpack_require__(/*! ../featureManager */ \"./node_modules/echarts/lib/component/toolbox/featureManager.js\");\n\n__webpack_require__(/*! ../../dataZoomSelect */ \"./node_modules/echarts/lib/component/dataZoomSelect.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Use dataZoomSelect\nvar dataZoomLang = lang.toolbox.dataZoom;\nvar each = zrUtil.each; // Spectial component id start with \\0ec\\0, see echarts/model/Global.js~hasInnerId\n\nvar DATA_ZOOM_ID_BASE = '\\0_ec_\\0toolbox-dataZoom_';\n\nfunction DataZoom(model, ecModel, api) {\n /**\n * @private\n * @type {module:echarts/component/helper/BrushController}\n */\n (this._brushController = new BrushController(api.getZr())).on('brush', zrUtil.bind(this._onBrush, this)).mount();\n /**\n * @private\n * @type {boolean}\n */\n\n this._isZoomActive;\n}\n\nDataZoom.defaultOption = {\n show: true,\n filterMode: 'filter',\n // Icon group\n icon: {\n zoom: 'M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1',\n back: 'M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26'\n },\n // `zoom`, `back`\n title: zrUtil.clone(dataZoomLang.title),\n brushStyle: {\n borderWidth: 0,\n color: 'rgba(0,0,0,0.2)'\n }\n};\nvar proto = DataZoom.prototype;\n\nproto.render = function (featureModel, ecModel, api, payload) {\n this.model = featureModel;\n this.ecModel = ecModel;\n this.api = api;\n updateZoomBtnStatus(featureModel, ecModel, this, payload, api);\n updateBackBtnStatus(featureModel, ecModel);\n};\n\nproto.onclick = function (ecModel, api, type) {\n handlers[type].call(this);\n};\n\nproto.remove = function (ecModel, api) {\n this._brushController.unmount();\n};\n\nproto.dispose = function (ecModel, api) {\n this._brushController.dispose();\n};\n/**\n * @private\n */\n\n\nvar handlers = {\n zoom: function () {\n var nextActive = !this._isZoomActive;\n this.api.dispatchAction({\n type: 'takeGlobalCursor',\n key: 'dataZoomSelect',\n dataZoomSelectActive: nextActive\n });\n },\n back: function () {\n this._dispatchZoomAction(history.pop(this.ecModel));\n }\n};\n/**\n * @private\n */\n\nproto._onBrush = function (areas, opt) {\n if (!opt.isEnd || !areas.length) {\n return;\n }\n\n var snapshot = {};\n var ecModel = this.ecModel;\n\n this._brushController.updateCovers([]); // remove cover\n\n\n var brushTargetManager = new BrushTargetManager(retrieveAxisSetting(this.model.option), ecModel, {\n include: ['grid']\n });\n brushTargetManager.matchOutputRanges(areas, ecModel, function (area, coordRange, coordSys) {\n if (coordSys.type !== 'cartesian2d') {\n return;\n }\n\n var brushType = area.brushType;\n\n if (brushType === 'rect') {\n setBatch('x', coordSys, coordRange[0]);\n setBatch('y', coordSys, coordRange[1]);\n } else {\n setBatch({\n lineX: 'x',\n lineY: 'y'\n }[brushType], coordSys, coordRange);\n }\n });\n history.push(ecModel, snapshot);\n\n this._dispatchZoomAction(snapshot);\n\n function setBatch(dimName, coordSys, minMax) {\n var axis = coordSys.getAxis(dimName);\n var axisModel = axis.model;\n var dataZoomModel = findDataZoom(dimName, axisModel, ecModel); // Restrict range.\n\n var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy(axisModel).getMinMaxSpan();\n\n if (minMaxSpan.minValueSpan != null || minMaxSpan.maxValueSpan != null) {\n minMax = sliderMove(0, minMax.slice(), axis.scale.getExtent(), 0, minMaxSpan.minValueSpan, minMaxSpan.maxValueSpan);\n }\n\n dataZoomModel && (snapshot[dataZoomModel.id] = {\n dataZoomId: dataZoomModel.id,\n startValue: minMax[0],\n endValue: minMax[1]\n });\n }\n\n function findDataZoom(dimName, axisModel, ecModel) {\n var found;\n ecModel.eachComponent({\n mainType: 'dataZoom',\n subType: 'select'\n }, function (dzModel) {\n var has = dzModel.getAxisModel(dimName, axisModel.componentIndex);\n has && (found = dzModel);\n });\n return found;\n }\n};\n/**\n * @private\n */\n\n\nproto._dispatchZoomAction = function (snapshot) {\n var batch = []; // Convert from hash map to array.\n\n each(snapshot, function (batchItem, dataZoomId) {\n batch.push(zrUtil.clone(batchItem));\n });\n batch.length && this.api.dispatchAction({\n type: 'dataZoom',\n from: this.uid,\n batch: batch\n });\n};\n\nfunction retrieveAxisSetting(option) {\n var setting = {}; // Compatible with previous setting: null => all axis, false => no axis.\n\n zrUtil.each(['xAxisIndex', 'yAxisIndex'], function (name) {\n setting[name] = option[name];\n setting[name] == null && (setting[name] = 'all');\n (setting[name] === false || setting[name] === 'none') && (setting[name] = []);\n });\n return setting;\n}\n\nfunction updateBackBtnStatus(featureModel, ecModel) {\n featureModel.setIconStatus('back', history.count(ecModel) > 1 ? 'emphasis' : 'normal');\n}\n\nfunction updateZoomBtnStatus(featureModel, ecModel, view, payload, api) {\n var zoomActive = view._isZoomActive;\n\n if (payload && payload.type === 'takeGlobalCursor') {\n zoomActive = payload.key === 'dataZoomSelect' ? payload.dataZoomSelectActive : false;\n }\n\n view._isZoomActive = zoomActive;\n featureModel.setIconStatus('zoom', zoomActive ? 'emphasis' : 'normal');\n var brushTargetManager = new BrushTargetManager(retrieveAxisSetting(featureModel.option), ecModel, {\n include: ['grid']\n });\n\n view._brushController.setPanels(brushTargetManager.makePanelOpts(api, function (targetInfo) {\n return targetInfo.xAxisDeclared && !targetInfo.yAxisDeclared ? 'lineX' : !targetInfo.xAxisDeclared && targetInfo.yAxisDeclared ? 'lineY' : 'rect';\n })).enableBrush(zoomActive ? {\n brushType: 'auto',\n brushStyle: featureModel.getModel('brushStyle').getItemStyle()\n } : false);\n}\n\nfeatureManager.register('dataZoom', DataZoom); // Create special dataZoom option for select\n// FIXME consider the case of merge option, where axes options are not exists.\n\necharts.registerPreprocessor(function (option) {\n if (!option) {\n return;\n }\n\n var dataZoomOpts = option.dataZoom || (option.dataZoom = []);\n\n if (!zrUtil.isArray(dataZoomOpts)) {\n option.dataZoom = dataZoomOpts = [dataZoomOpts];\n }\n\n var toolboxOpt = option.toolbox;\n\n if (toolboxOpt) {\n // Assume there is only one toolbox\n if (zrUtil.isArray(toolboxOpt)) {\n toolboxOpt = toolboxOpt[0];\n }\n\n if (toolboxOpt && toolboxOpt.feature) {\n var dataZoomOpt = toolboxOpt.feature.dataZoom; // FIXME: If add dataZoom when setOption in merge mode,\n // no axis info to be added. See `test/dataZoom-extreme.html`\n\n addForAxis('xAxis', dataZoomOpt);\n addForAxis('yAxis', dataZoomOpt);\n }\n }\n\n function addForAxis(axisName, dataZoomOpt) {\n if (!dataZoomOpt) {\n return;\n } // Try not to modify model, because it is not merged yet.\n\n\n var axisIndicesName = axisName + 'Index';\n var givenAxisIndices = dataZoomOpt[axisIndicesName];\n\n if (givenAxisIndices != null && givenAxisIndices !== 'all' && !zrUtil.isArray(givenAxisIndices)) {\n givenAxisIndices = givenAxisIndices === false || givenAxisIndices === 'none' ? [] : [givenAxisIndices];\n }\n\n forEachComponent(axisName, function (axisOpt, axisIndex) {\n if (givenAxisIndices != null && givenAxisIndices !== 'all' && zrUtil.indexOf(givenAxisIndices, axisIndex) === -1) {\n return;\n }\n\n var newOpt = {\n type: 'select',\n $fromToolbox: true,\n // Default to be filter\n filterMode: dataZoomOpt.filterMode || 'filter',\n // Id for merge mapping.\n id: DATA_ZOOM_ID_BASE + axisName + axisIndex\n }; // FIXME\n // Only support one axis now.\n\n newOpt[axisIndicesName] = axisIndex;\n dataZoomOpts.push(newOpt);\n });\n }\n\n function forEachComponent(mainType, cb) {\n var opts = option[mainType];\n\n if (!zrUtil.isArray(opts)) {\n opts = opts ? [opts] : [];\n }\n\n each(opts, cb);\n }\n});\nvar _default = DataZoom;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/toolbox/feature/DataZoom.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/toolbox/feature/MagicType.js": +/*!*************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/toolbox/feature/MagicType.js ***! + \*************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar lang = __webpack_require__(/*! ../../../lang */ \"./node_modules/echarts/lib/lang.js\");\n\nvar featureManager = __webpack_require__(/*! ../featureManager */ \"./node_modules/echarts/lib/component/toolbox/featureManager.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar magicTypeLang = lang.toolbox.magicType;\nvar INNER_STACK_KEYWORD = '__ec_magicType_stack__';\n\nfunction MagicType(model) {\n this.model = model;\n}\n\nMagicType.defaultOption = {\n show: true,\n type: [],\n // Icon group\n icon: {\n /* eslint-disable */\n line: 'M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4',\n bar: 'M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7',\n stack: 'M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z' // jshint ignore:line\n\n /* eslint-enable */\n\n },\n // `line`, `bar`, `stack`, `tiled`\n title: zrUtil.clone(magicTypeLang.title),\n option: {},\n seriesIndex: {}\n};\nvar proto = MagicType.prototype;\n\nproto.getIcons = function () {\n var model = this.model;\n var availableIcons = model.get('icon');\n var icons = {};\n zrUtil.each(model.get('type'), function (type) {\n if (availableIcons[type]) {\n icons[type] = availableIcons[type];\n }\n });\n return icons;\n};\n\nvar seriesOptGenreator = {\n 'line': function (seriesType, seriesId, seriesModel, model) {\n if (seriesType === 'bar') {\n return zrUtil.merge({\n id: seriesId,\n type: 'line',\n // Preserve data related option\n data: seriesModel.get('data'),\n stack: seriesModel.get('stack'),\n markPoint: seriesModel.get('markPoint'),\n markLine: seriesModel.get('markLine')\n }, model.get('option.line') || {}, true);\n }\n },\n 'bar': function (seriesType, seriesId, seriesModel, model) {\n if (seriesType === 'line') {\n return zrUtil.merge({\n id: seriesId,\n type: 'bar',\n // Preserve data related option\n data: seriesModel.get('data'),\n stack: seriesModel.get('stack'),\n markPoint: seriesModel.get('markPoint'),\n markLine: seriesModel.get('markLine')\n }, model.get('option.bar') || {}, true);\n }\n },\n 'stack': function (seriesType, seriesId, seriesModel, model) {\n var isStack = seriesModel.get('stack') === INNER_STACK_KEYWORD;\n\n if (seriesType === 'line' || seriesType === 'bar') {\n model.setIconStatus('stack', isStack ? 'normal' : 'emphasis');\n return zrUtil.merge({\n id: seriesId,\n stack: isStack ? '' : INNER_STACK_KEYWORD\n }, model.get('option.stack') || {}, true);\n }\n }\n};\nvar radioTypes = [['line', 'bar'], ['stack']];\n\nproto.onclick = function (ecModel, api, type) {\n var model = this.model;\n var seriesIndex = model.get('seriesIndex.' + type); // Not supported magicType\n\n if (!seriesOptGenreator[type]) {\n return;\n }\n\n var newOption = {\n series: []\n };\n\n var generateNewSeriesTypes = function (seriesModel) {\n var seriesType = seriesModel.subType;\n var seriesId = seriesModel.id;\n var newSeriesOpt = seriesOptGenreator[type](seriesType, seriesId, seriesModel, model);\n\n if (newSeriesOpt) {\n // PENDING If merge original option?\n zrUtil.defaults(newSeriesOpt, seriesModel.option);\n newOption.series.push(newSeriesOpt);\n } // Modify boundaryGap\n\n\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys && coordSys.type === 'cartesian2d' && (type === 'line' || type === 'bar')) {\n var categoryAxis = coordSys.getAxesByScale('ordinal')[0];\n\n if (categoryAxis) {\n var axisDim = categoryAxis.dim;\n var axisType = axisDim + 'Axis';\n var axisModel = ecModel.queryComponents({\n mainType: axisType,\n index: seriesModel.get(name + 'Index'),\n id: seriesModel.get(name + 'Id')\n })[0];\n var axisIndex = axisModel.componentIndex;\n newOption[axisType] = newOption[axisType] || [];\n\n for (var i = 0; i <= axisIndex; i++) {\n newOption[axisType][axisIndex] = newOption[axisType][axisIndex] || {};\n }\n\n newOption[axisType][axisIndex].boundaryGap = type === 'bar';\n }\n }\n };\n\n zrUtil.each(radioTypes, function (radio) {\n if (zrUtil.indexOf(radio, type) >= 0) {\n zrUtil.each(radio, function (item) {\n model.setIconStatus(item, 'normal');\n });\n }\n });\n model.setIconStatus(type, 'emphasis');\n ecModel.eachComponent({\n mainType: 'series',\n query: seriesIndex == null ? null : {\n seriesIndex: seriesIndex\n }\n }, generateNewSeriesTypes);\n var newTitle; // Change title of stack\n\n if (type === 'stack') {\n var isStack = newOption.series && newOption.series[0] && newOption.series[0].stack === INNER_STACK_KEYWORD;\n newTitle = isStack ? zrUtil.merge({\n stack: magicTypeLang.title.tiled\n }, magicTypeLang.title) : zrUtil.clone(magicTypeLang.title);\n }\n\n api.dispatchAction({\n type: 'changeMagicType',\n currentType: type,\n newOption: newOption,\n newTitle: newTitle,\n featureName: 'magicType'\n });\n};\n\necharts.registerAction({\n type: 'changeMagicType',\n event: 'magicTypeChanged',\n update: 'prepareAndUpdate'\n}, function (payload, ecModel) {\n ecModel.mergeOption(payload.newOption);\n});\nfeatureManager.register('magicType', MagicType);\nvar _default = MagicType;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/toolbox/feature/MagicType.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/toolbox/feature/Restore.js": +/*!***********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/toolbox/feature/Restore.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar history = __webpack_require__(/*! ../../dataZoom/history */ \"./node_modules/echarts/lib/component/dataZoom/history.js\");\n\nvar lang = __webpack_require__(/*! ../../../lang */ \"./node_modules/echarts/lib/lang.js\");\n\nvar featureManager = __webpack_require__(/*! ../featureManager */ \"./node_modules/echarts/lib/component/toolbox/featureManager.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar restoreLang = lang.toolbox.restore;\n\nfunction Restore(model) {\n this.model = model;\n}\n\nRestore.defaultOption = {\n show: true,\n\n /* eslint-disable */\n icon: 'M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5',\n\n /* eslint-enable */\n title: restoreLang.title\n};\nvar proto = Restore.prototype;\n\nproto.onclick = function (ecModel, api, type) {\n history.clear(ecModel);\n api.dispatchAction({\n type: 'restore',\n from: this.uid\n });\n};\n\nfeatureManager.register('restore', Restore);\necharts.registerAction({\n type: 'restore',\n event: 'restore',\n update: 'prepareAndUpdate'\n}, function (payload, ecModel) {\n ecModel.resetOption('recreate');\n});\nvar _default = Restore;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/toolbox/feature/Restore.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/toolbox/feature/SaveAsImage.js": +/*!***************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/toolbox/feature/SaveAsImage.js ***! + \***************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar env = __webpack_require__(/*! zrender/lib/core/env */ \"./node_modules/zrender/lib/core/env.js\");\n\nvar lang = __webpack_require__(/*! ../../../lang */ \"./node_modules/echarts/lib/lang.js\");\n\nvar featureManager = __webpack_require__(/*! ../featureManager */ \"./node_modules/echarts/lib/component/toolbox/featureManager.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Uint8Array */\nvar saveAsImageLang = lang.toolbox.saveAsImage;\n\nfunction SaveAsImage(model) {\n this.model = model;\n}\n\nSaveAsImage.defaultOption = {\n show: true,\n icon: 'M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0',\n title: saveAsImageLang.title,\n type: 'png',\n // Default use option.backgroundColor\n // backgroundColor: '#fff',\n connectedBackgroundColor: '#fff',\n name: '',\n excludeComponents: ['toolbox'],\n pixelRatio: 1,\n lang: saveAsImageLang.lang.slice()\n};\nSaveAsImage.prototype.unusable = !env.canvasSupported;\nvar proto = SaveAsImage.prototype;\n\nproto.onclick = function (ecModel, api) {\n var model = this.model;\n var title = model.get('name') || ecModel.get('title.0.text') || 'echarts';\n var isSvg = api.getZr().painter.getType() === 'svg';\n var type = isSvg ? 'svg' : model.get('type', true) || 'png';\n var url = api.getConnectedDataURL({\n type: type,\n backgroundColor: model.get('backgroundColor', true) || ecModel.get('backgroundColor') || '#fff',\n connectedBackgroundColor: model.get('connectedBackgroundColor'),\n excludeComponents: model.get('excludeComponents'),\n pixelRatio: model.get('pixelRatio')\n }); // Chrome and Firefox\n\n if (typeof MouseEvent === 'function' && !env.browser.ie && !env.browser.edge) {\n var $a = document.createElement('a');\n $a.download = title + '.' + type;\n $a.target = '_blank';\n $a.href = url;\n var evt = new MouseEvent('click', {\n // some micro front-end framework, window maybe is a Proxy\n view: document.defaultView,\n bubbles: true,\n cancelable: false\n });\n $a.dispatchEvent(evt);\n } // IE\n else {\n if (window.navigator.msSaveOrOpenBlob) {\n var bstr = atob(url.split(',')[1]);\n var n = bstr.length;\n var u8arr = new Uint8Array(n);\n\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n\n var blob = new Blob([u8arr]);\n window.navigator.msSaveOrOpenBlob(blob, title + '.' + type);\n } else {\n var lang = model.get('lang');\n var html = '' + '' + '' + '';\n var tab = window.open();\n tab.document.write(html);\n }\n }\n};\n\nfeatureManager.register('saveAsImage', SaveAsImage);\nvar _default = SaveAsImage;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/toolbox/feature/SaveAsImage.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/toolbox/featureManager.js": +/*!**********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/toolbox/featureManager.js ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar features = {};\n\nfunction register(name, ctor) {\n features[name] = ctor;\n}\n\nfunction get(name) {\n return features[name];\n}\n\nexports.register = register;\nexports.get = get;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/toolbox/featureManager.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/tooltip.js": +/*!*******************************************************!*\ + !*** ./node_modules/echarts/lib/component/tooltip.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n__webpack_require__(/*! ./axisPointer */ \"./node_modules/echarts/lib/component/axisPointer.js\");\n\n__webpack_require__(/*! ./tooltip/TooltipModel */ \"./node_modules/echarts/lib/component/tooltip/TooltipModel.js\");\n\n__webpack_require__(/*! ./tooltip/TooltipView */ \"./node_modules/echarts/lib/component/tooltip/TooltipView.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// FIXME Better way to pack data in graphic element\n\n/**\n * @action\n * @property {string} type\n * @property {number} seriesIndex\n * @property {number} dataIndex\n * @property {number} [x]\n * @property {number} [y]\n */\necharts.registerAction({\n type: 'showTip',\n event: 'showTip',\n update: 'tooltip:manuallyShowTip'\n}, // noop\nfunction () {});\necharts.registerAction({\n type: 'hideTip',\n event: 'hideTip',\n update: 'tooltip:manuallyHideTip'\n}, // noop\nfunction () {});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/tooltip.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/tooltip/TooltipContent.js": +/*!**********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/tooltip/TooltipContent.js ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar zrColor = __webpack_require__(/*! zrender/lib/tool/color */ \"./node_modules/zrender/lib/tool/color.js\");\n\nvar eventUtil = __webpack_require__(/*! zrender/lib/core/event */ \"./node_modules/zrender/lib/core/event.js\");\n\nvar domUtil = __webpack_require__(/*! zrender/lib/core/dom */ \"./node_modules/zrender/lib/core/dom.js\");\n\nvar env = __webpack_require__(/*! zrender/lib/core/env */ \"./node_modules/zrender/lib/core/env.js\");\n\nvar formatUtil = __webpack_require__(/*! ../../util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar toCamelCase = formatUtil.toCamelCase;\nvar vendors = ['', '-webkit-', '-moz-', '-o-'];\nvar gCssText = 'position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;';\n/**\n * @param {number} duration\n * @return {string}\n * @inner\n */\n\nfunction assembleTransition(duration) {\n var transitionCurve = 'cubic-bezier(0.23, 1, 0.32, 1)';\n var transitionText = 'left ' + duration + 's ' + transitionCurve + ',' + 'top ' + duration + 's ' + transitionCurve;\n return zrUtil.map(vendors, function (vendorPrefix) {\n return vendorPrefix + 'transition:' + transitionText;\n }).join(';');\n}\n/**\n * @param {Object} textStyle\n * @return {string}\n * @inner\n */\n\n\nfunction assembleFont(textStyleModel) {\n var cssText = [];\n var fontSize = textStyleModel.get('fontSize');\n var color = textStyleModel.getTextColor();\n color && cssText.push('color:' + color);\n cssText.push('font:' + textStyleModel.getFont());\n var lineHeight = textStyleModel.get('lineHeight');\n\n if (lineHeight == null) {\n lineHeight = Math.round(fontSize * 3 / 2);\n }\n\n fontSize && cssText.push('line-height:' + lineHeight + 'px');\n var shadowColor = textStyleModel.get('textShadowColor');\n var shadowBlur = textStyleModel.get('textShadowBlur') || 0;\n var shadowOffsetX = textStyleModel.get('textShadowOffsetX') || 0;\n var shadowOffsetY = textStyleModel.get('textShadowOffsetY') || 0;\n shadowBlur && cssText.push('text-shadow:' + shadowOffsetX + 'px ' + shadowOffsetY + 'px ' + shadowBlur + 'px ' + shadowColor);\n each(['decoration', 'align'], function (name) {\n var val = textStyleModel.get(name);\n val && cssText.push('text-' + name + ':' + val);\n });\n return cssText.join(';');\n}\n/**\n * @param {Object} tooltipModel\n * @return {string}\n * @inner\n */\n\n\nfunction assembleCssText(tooltipModel) {\n var cssText = [];\n var transitionDuration = tooltipModel.get('transitionDuration');\n var backgroundColor = tooltipModel.get('backgroundColor');\n var textStyleModel = tooltipModel.getModel('textStyle');\n var padding = tooltipModel.get('padding'); // Animation transition. Do not animate when transitionDuration is 0.\n\n transitionDuration && cssText.push(assembleTransition(transitionDuration));\n\n if (backgroundColor) {\n if (env.canvasSupported) {\n cssText.push('background-Color:' + backgroundColor);\n } else {\n // for ie\n cssText.push('background-Color:#' + zrColor.toHex(backgroundColor));\n cssText.push('filter:alpha(opacity=70)');\n }\n } // Border style\n\n\n each(['width', 'color', 'radius'], function (name) {\n var borderName = 'border-' + name;\n var camelCase = toCamelCase(borderName);\n var val = tooltipModel.get(camelCase);\n val != null && cssText.push(borderName + ':' + val + (name === 'color' ? '' : 'px'));\n }); // Text style\n\n cssText.push(assembleFont(textStyleModel)); // Padding\n\n if (padding != null) {\n cssText.push('padding:' + formatUtil.normalizeCssArray(padding).join('px ') + 'px');\n }\n\n return cssText.join(';') + ';';\n} // If not able to make, do not modify the input `out`.\n\n\nfunction makeStyleCoord(out, zr, appendToBody, zrX, zrY) {\n var zrPainter = zr && zr.painter;\n\n if (appendToBody) {\n var zrViewportRoot = zrPainter && zrPainter.getViewportRoot();\n\n if (zrViewportRoot) {\n // Some APPs might use scale on body, so we support CSS transform here.\n domUtil.transformLocalCoord(out, zrViewportRoot, document.body, zrX, zrY);\n }\n } else {\n out[0] = zrX;\n out[1] = zrY; // xy should be based on canvas root. But tooltipContent is\n // the sibling of canvas root. So padding of ec container\n // should be considered here.\n\n var viewportRootOffset = zrPainter && zrPainter.getViewportRootOffset();\n\n if (viewportRootOffset) {\n out[0] += viewportRootOffset.offsetLeft;\n out[1] += viewportRootOffset.offsetTop;\n }\n }\n\n out[2] = out[0] / zr.getWidth(); // The ratio of left to width\n\n out[3] = out[1] / zr.getHeight(); // The ratio of top to height\n}\n/**\n * @alias module:echarts/component/tooltip/TooltipContent\n * @param {HTMLElement} container\n * @param {ExtensionAPI} api\n * @param {Object} [opt]\n * @param {boolean} [opt.appendToBody]\n * `false`: the DOM element will be inside the container. Default value.\n * `true`: the DOM element will be appended to HTML body, which avoid\n * some overflow clip but intrude outside of the container.\n * @constructor\n */\n\n\nfunction TooltipContent(container, api, opt) {\n if (env.wxa) {\n return null;\n }\n\n var el = document.createElement('div');\n el.domBelongToZr = true;\n this.el = el;\n var zr = this._zr = api.getZr();\n var appendToBody = this._appendToBody = opt && opt.appendToBody;\n this._styleCoord = [0, 0, 0, 0]; // [left, top, left/width, top/height]\n\n makeStyleCoord(this._styleCoord, zr, appendToBody, api.getWidth() / 2, api.getHeight() / 2);\n\n if (appendToBody) {\n document.body.appendChild(el);\n } else {\n container.appendChild(el);\n }\n\n this._container = container;\n this._show = false;\n /**\n * @private\n */\n\n this._hideTimeout; // FIXME\n // Is it needed to trigger zr event manually if\n // the browser do not support `pointer-events: none`.\n\n var self = this;\n\n el.onmouseenter = function () {\n // clear the timeout in hideLater and keep showing tooltip\n if (self._enterable) {\n clearTimeout(self._hideTimeout);\n self._show = true;\n }\n\n self._inContent = true;\n };\n\n el.onmousemove = function (e) {\n e = e || window.event;\n\n if (!self._enterable) {\n // `pointer-events: none` is set to tooltip content div\n // if `enterable` is set as `false`, and `el.onmousemove`\n // can not be triggered. But in browser that do not\n // support `pointer-events`, we need to do this:\n // Try trigger zrender event to avoid mouse\n // in and out shape too frequently\n var handler = zr.handler;\n var zrViewportRoot = zr.painter.getViewportRoot();\n eventUtil.normalizeEvent(zrViewportRoot, e, true);\n handler.dispatch('mousemove', e);\n }\n };\n\n el.onmouseleave = function () {\n if (self._enterable) {\n if (self._show) {\n self.hideLater(self._hideDelay);\n }\n }\n\n self._inContent = false;\n };\n}\n\nTooltipContent.prototype = {\n constructor: TooltipContent,\n\n /**\n * @private\n * @type {boolean}\n */\n _enterable: true,\n\n /**\n * Update when tooltip is rendered\n */\n update: function (tooltipModel) {\n // FIXME\n // Move this logic to ec main?\n var container = this._container;\n var stl = container.currentStyle || document.defaultView.getComputedStyle(container);\n var domStyle = container.style;\n\n if (domStyle.position !== 'absolute' && stl.position !== 'absolute') {\n domStyle.position = 'relative';\n }\n\n var alwaysShowContent = tooltipModel.get('alwaysShowContent');\n alwaysShowContent && this._moveTooltipIfResized(); // Hide the tooltip\n // PENDING\n // this.hide();\n },\n\n /**\n * when `alwaysShowContent` is true,\n * we should move the tooltip after chart resized\n */\n _moveTooltipIfResized: function () {\n var ratioX = this._styleCoord[2]; // The ratio of left to width\n\n var ratioY = this._styleCoord[3]; // The ratio of top to height\n\n var realX = ratioX * this._zr.getWidth();\n\n var realY = ratioY * this._zr.getHeight();\n\n this.moveTo(realX, realY);\n },\n show: function (tooltipModel) {\n clearTimeout(this._hideTimeout);\n var el = this.el;\n var styleCoord = this._styleCoord;\n el.style.cssText = gCssText + assembleCssText(tooltipModel) // Because of the reason described in:\n // http://stackoverflow.com/questions/21125587/css3-transition-not-working-in-chrome-anymore\n // we should set initial value to `left` and `top`.\n + ';left:' + styleCoord[0] + 'px;top:' + styleCoord[1] + 'px;' + (tooltipModel.get('extraCssText') || '');\n el.style.display = el.innerHTML ? 'block' : 'none'; // If mouse occasionally move over the tooltip, a mouseout event will be\n // triggered by canvas, and cause some unexpectable result like dragging\n // stop, \"unfocusAdjacency\". Here `pointer-events: none` is used to solve\n // it. Although it is not supported by IE8~IE10, fortunately it is a rare\n // scenario.\n\n el.style.pointerEvents = this._enterable ? 'auto' : 'none';\n this._show = true;\n },\n setContent: function (content) {\n this.el.innerHTML = content == null ? '' : content;\n },\n setEnterable: function (enterable) {\n this._enterable = enterable;\n },\n getSize: function () {\n var el = this.el;\n return [el.clientWidth, el.clientHeight];\n },\n moveTo: function (zrX, zrY) {\n var styleCoord = this._styleCoord;\n makeStyleCoord(styleCoord, this._zr, this._appendToBody, zrX, zrY);\n var style = this.el.style;\n style.left = styleCoord[0] + 'px';\n style.top = styleCoord[1] + 'px';\n },\n hide: function () {\n this.el.style.display = 'none';\n this._show = false;\n },\n hideLater: function (time) {\n if (this._show && !(this._inContent && this._enterable)) {\n if (time) {\n this._hideDelay = time; // Set show false to avoid invoke hideLater multiple times\n\n this._show = false;\n this._hideTimeout = setTimeout(zrUtil.bind(this.hide, this), time);\n } else {\n this.hide();\n }\n }\n },\n isShow: function () {\n return this._show;\n },\n dispose: function () {\n this.el.parentNode.removeChild(this.el);\n },\n getOuterSize: function () {\n var width = this.el.clientWidth;\n var height = this.el.clientHeight; // Consider browser compatibility.\n // IE8 does not support getComputedStyle.\n\n if (document.defaultView && document.defaultView.getComputedStyle) {\n var stl = document.defaultView.getComputedStyle(this.el);\n\n if (stl) {\n width += parseInt(stl.borderLeftWidth, 10) + parseInt(stl.borderRightWidth, 10);\n height += parseInt(stl.borderTopWidth, 10) + parseInt(stl.borderBottomWidth, 10);\n }\n }\n\n return {\n width: width,\n height: height\n };\n }\n};\nvar _default = TooltipContent;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/tooltip/TooltipContent.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/tooltip/TooltipModel.js": +/*!********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/tooltip/TooltipModel.js ***! + \********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendComponentModel({\n type: 'tooltip',\n dependencies: ['axisPointer'],\n defaultOption: {\n zlevel: 0,\n z: 60,\n show: true,\n // tooltip主体内容\n showContent: true,\n // 'trigger' only works on coordinate system.\n // 'item' | 'axis' | 'none'\n trigger: 'item',\n // 'click' | 'mousemove' | 'none'\n triggerOn: 'mousemove|click',\n alwaysShowContent: false,\n displayMode: 'single',\n // 'single' | 'multipleByCoordSys'\n renderMode: 'auto',\n // 'auto' | 'html' | 'richText'\n // 'auto': use html by default, and use non-html if `document` is not defined\n // 'html': use html for tooltip\n // 'richText': use canvas, svg, and etc. for tooltip\n // 位置 {Array} | {Function}\n // position: null\n // Consider triggered from axisPointer handle, verticalAlign should be 'middle'\n // align: null,\n // verticalAlign: null,\n // 是否约束 content 在 viewRect 中。默认 false 是为了兼容以前版本。\n confine: false,\n // 内容格式器:{string}(Template) ¦ {Function}\n // formatter: null\n showDelay: 0,\n // 隐藏延迟,单位ms\n hideDelay: 100,\n // 动画变换时间,单位s\n transitionDuration: 0.4,\n enterable: false,\n // 提示背景颜色,默认为透明度为0.7的黑色\n backgroundColor: 'rgba(50,50,50,0.7)',\n // 提示边框颜色\n borderColor: '#333',\n // 提示边框圆角,单位px,默认为4\n borderRadius: 4,\n // 提示边框线宽,单位px,默认为0(无边框)\n borderWidth: 0,\n // 提示内边距,单位px,默认各方向内边距为5,\n // 接受数组分别设定上右下左边距,同css\n padding: 5,\n // Extra css text\n extraCssText: '',\n // 坐标轴指示器,坐标轴触发有效\n axisPointer: {\n // 默认为直线\n // 可选为:'line' | 'shadow' | 'cross'\n type: 'line',\n // type 为 line 的时候有效,指定 tooltip line 所在的轴,可选\n // 可选 'x' | 'y' | 'angle' | 'radius' | 'auto'\n // 默认 'auto',会选择类型为 category 的轴,对于双数值轴,笛卡尔坐标系会默认选择 x 轴\n // 极坐标系会默认选择 angle 轴\n axis: 'auto',\n animation: 'auto',\n animationDurationUpdate: 200,\n animationEasingUpdate: 'exponentialOut',\n crossStyle: {\n color: '#999',\n width: 1,\n type: 'dashed',\n // TODO formatter\n textStyle: {} // lineStyle and shadowStyle should not be specified here,\n // otherwise it will always override those styles on option.axisPointer.\n\n }\n },\n textStyle: {\n color: '#fff',\n fontSize: 14\n }\n }\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/tooltip/TooltipModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/tooltip/TooltipRichContent.js": +/*!**************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/tooltip/TooltipRichContent.js ***! + \**************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar Text = __webpack_require__(/*! zrender/lib/graphic/Text */ \"./node_modules/zrender/lib/graphic/Text.js\");\n\nvar graphicUtil = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// import Group from 'zrender/src/container/Group';\nfunction makeStyleCoord(out, zr, zrX, zrY) {\n out[0] = zrX;\n out[1] = zrY;\n out[2] = out[0] / zr.getWidth(); // The ratio of left to width\n\n out[3] = out[1] / zr.getHeight(); // The ratio of top to height\n}\n/**\n * @alias module:echarts/component/tooltip/TooltipRichContent\n * @constructor\n */\n\n\nfunction TooltipRichContent(api) {\n var zr = this._zr = api.getZr();\n this._styleCoord = [0, 0, 0, 0]; // [left, top, left/width, top/height]\n\n makeStyleCoord(this._styleCoord, zr, api.getWidth() / 2, api.getHeight() / 2);\n this._show = false;\n /**\n * @private\n */\n\n this._hideTimeout;\n}\n\nTooltipRichContent.prototype = {\n constructor: TooltipRichContent,\n\n /**\n * @private\n * @type {boolean}\n */\n _enterable: true,\n\n /**\n * Update when tooltip is rendered\n */\n update: function (tooltipModel) {\n var alwaysShowContent = tooltipModel.get('alwaysShowContent');\n alwaysShowContent && this._moveTooltipIfResized();\n },\n\n /**\n * when `alwaysShowContent` is true,\n * we should move the tooltip after chart resized\n */\n _moveTooltipIfResized: function () {\n var ratioX = this._styleCoord[2]; // The ratio of left to width\n\n var ratioY = this._styleCoord[3]; // The ratio of top to height\n\n var realX = ratioX * this._zr.getWidth();\n\n var realY = ratioY * this._zr.getHeight();\n\n this.moveTo(realX, realY);\n },\n show: function (tooltipModel) {\n if (this._hideTimeout) {\n clearTimeout(this._hideTimeout);\n }\n\n this.el.attr('show', true);\n this._show = true;\n },\n\n /**\n * Set tooltip content\n *\n * @param {string} content rich text string of content\n * @param {Object} markerRich rich text style\n * @param {Object} tooltipModel tooltip model\n */\n setContent: function (content, markerRich, tooltipModel) {\n if (this.el) {\n this._zr.remove(this.el);\n }\n\n var markers = {};\n var text = content;\n var prefix = '{marker';\n var suffix = '|}';\n var startId = text.indexOf(prefix);\n\n while (startId >= 0) {\n var endId = text.indexOf(suffix);\n var name = text.substr(startId + prefix.length, endId - startId - prefix.length);\n\n if (name.indexOf('sub') > -1) {\n markers['marker' + name] = {\n textWidth: 4,\n textHeight: 4,\n textBorderRadius: 2,\n textBackgroundColor: markerRich[name],\n // TODO: textOffset is not implemented for rich text\n textOffset: [3, 0]\n };\n } else {\n markers['marker' + name] = {\n textWidth: 10,\n textHeight: 10,\n textBorderRadius: 5,\n textBackgroundColor: markerRich[name]\n };\n }\n\n text = text.substr(endId + 1);\n startId = text.indexOf('{marker');\n }\n\n var textStyleModel = tooltipModel.getModel('textStyle');\n var fontSize = textStyleModel.get('fontSize');\n var lineHeight = tooltipModel.get('textLineHeight');\n\n if (lineHeight == null) {\n lineHeight = Math.round(fontSize * 3 / 2);\n }\n\n this.el = new Text({\n style: graphicUtil.setTextStyle({}, textStyleModel, {\n rich: markers,\n text: content,\n textBackgroundColor: tooltipModel.get('backgroundColor'),\n textBorderRadius: tooltipModel.get('borderRadius'),\n textFill: tooltipModel.get('textStyle.color'),\n textPadding: tooltipModel.get('padding'),\n textLineHeight: lineHeight\n }),\n z: tooltipModel.get('z')\n });\n\n this._zr.add(this.el);\n\n var self = this;\n this.el.on('mouseover', function () {\n // clear the timeout in hideLater and keep showing tooltip\n if (self._enterable) {\n clearTimeout(self._hideTimeout);\n self._show = true;\n }\n\n self._inContent = true;\n });\n this.el.on('mouseout', function () {\n if (self._enterable) {\n if (self._show) {\n self.hideLater(self._hideDelay);\n }\n }\n\n self._inContent = false;\n });\n },\n setEnterable: function (enterable) {\n this._enterable = enterable;\n },\n getSize: function () {\n var bounding = this.el.getBoundingRect();\n return [bounding.width, bounding.height];\n },\n moveTo: function (x, y) {\n if (this.el) {\n var styleCoord = this._styleCoord;\n makeStyleCoord(styleCoord, this._zr, x, y);\n this.el.attr('position', [styleCoord[0], styleCoord[1]]);\n }\n },\n hide: function () {\n if (this.el) {\n this.el.hide();\n }\n\n this._show = false;\n },\n hideLater: function (time) {\n if (this._show && !(this._inContent && this._enterable)) {\n if (time) {\n this._hideDelay = time; // Set show false to avoid invoke hideLater multiple times\n\n this._show = false;\n this._hideTimeout = setTimeout(zrUtil.bind(this.hide, this), time);\n } else {\n this.hide();\n }\n }\n },\n isShow: function () {\n return this._show;\n },\n dispose: function () {\n clearTimeout(this._hideTimeout);\n\n if (this.el) {\n this._zr.remove(this.el);\n }\n },\n getOuterSize: function () {\n var size = this.getSize();\n return {\n width: size[0],\n height: size[1]\n };\n }\n};\nvar _default = TooltipRichContent;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/tooltip/TooltipRichContent.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/tooltip/TooltipView.js": +/*!*******************************************************************!*\ + !*** ./node_modules/echarts/lib/component/tooltip/TooltipView.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar env = __webpack_require__(/*! zrender/lib/core/env */ \"./node_modules/zrender/lib/core/env.js\");\n\nvar TooltipContent = __webpack_require__(/*! ./TooltipContent */ \"./node_modules/echarts/lib/component/tooltip/TooltipContent.js\");\n\nvar TooltipRichContent = __webpack_require__(/*! ./TooltipRichContent */ \"./node_modules/echarts/lib/component/tooltip/TooltipRichContent.js\");\n\nvar formatUtil = __webpack_require__(/*! ../../util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\nvar numberUtil = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar findPointFromSeries = __webpack_require__(/*! ../axisPointer/findPointFromSeries */ \"./node_modules/echarts/lib/component/axisPointer/findPointFromSeries.js\");\n\nvar layoutUtil = __webpack_require__(/*! ../../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar Model = __webpack_require__(/*! ../../model/Model */ \"./node_modules/echarts/lib/model/Model.js\");\n\nvar globalListener = __webpack_require__(/*! ../axisPointer/globalListener */ \"./node_modules/echarts/lib/component/axisPointer/globalListener.js\");\n\nvar axisHelper = __webpack_require__(/*! ../../coord/axisHelper */ \"./node_modules/echarts/lib/coord/axisHelper.js\");\n\nvar axisPointerViewHelper = __webpack_require__(/*! ../axisPointer/viewHelper */ \"./node_modules/echarts/lib/component/axisPointer/viewHelper.js\");\n\nvar _model = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar getTooltipRenderMode = _model.getTooltipRenderMode;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar bind = zrUtil.bind;\nvar each = zrUtil.each;\nvar parsePercent = numberUtil.parsePercent;\nvar proxyRect = new graphic.Rect({\n shape: {\n x: -1,\n y: -1,\n width: 2,\n height: 2\n }\n});\n\nvar _default = echarts.extendComponentView({\n type: 'tooltip',\n init: function (ecModel, api) {\n if (env.node) {\n return;\n }\n\n var tooltipModel = ecModel.getComponent('tooltip');\n var renderMode = tooltipModel.get('renderMode');\n this._renderMode = getTooltipRenderMode(renderMode);\n var tooltipContent;\n\n if (this._renderMode === 'html') {\n tooltipContent = new TooltipContent(api.getDom(), api, {\n appendToBody: tooltipModel.get('appendToBody', true)\n });\n this._newLine = '
';\n } else {\n tooltipContent = new TooltipRichContent(api);\n this._newLine = '\\n';\n }\n\n this._tooltipContent = tooltipContent;\n },\n render: function (tooltipModel, ecModel, api) {\n if (env.node) {\n return;\n } // Reset\n\n\n this.group.removeAll();\n /**\n * @private\n * @type {module:echarts/component/tooltip/TooltipModel}\n */\n\n this._tooltipModel = tooltipModel;\n /**\n * @private\n * @type {module:echarts/model/Global}\n */\n\n this._ecModel = ecModel;\n /**\n * @private\n * @type {module:echarts/ExtensionAPI}\n */\n\n this._api = api;\n /**\n * Should be cleaned when render.\n * @private\n * @type {Array.>}\n */\n\n this._lastDataByCoordSys = null;\n /**\n * @private\n * @type {boolean}\n */\n\n this._alwaysShowContent = tooltipModel.get('alwaysShowContent');\n var tooltipContent = this._tooltipContent;\n tooltipContent.update(tooltipModel);\n tooltipContent.setEnterable(tooltipModel.get('enterable'));\n\n this._initGlobalListener();\n\n this._keepShow();\n },\n _initGlobalListener: function () {\n var tooltipModel = this._tooltipModel;\n var triggerOn = tooltipModel.get('triggerOn');\n globalListener.register('itemTooltip', this._api, bind(function (currTrigger, e, dispatchAction) {\n // If 'none', it is not controlled by mouse totally.\n if (triggerOn !== 'none') {\n if (triggerOn.indexOf(currTrigger) >= 0) {\n this._tryShow(e, dispatchAction);\n } else if (currTrigger === 'leave') {\n this._hide(dispatchAction);\n }\n }\n }, this));\n },\n _keepShow: function () {\n var tooltipModel = this._tooltipModel;\n var ecModel = this._ecModel;\n var api = this._api; // Try to keep the tooltip show when refreshing\n\n if (this._lastX != null && this._lastY != null // When user is willing to control tooltip totally using API,\n // self.manuallyShowTip({x, y}) might cause tooltip hide,\n // which is not expected.\n && tooltipModel.get('triggerOn') !== 'none') {\n var self = this;\n clearTimeout(this._refreshUpdateTimeout);\n this._refreshUpdateTimeout = setTimeout(function () {\n // Show tip next tick after other charts are rendered\n // In case highlight action has wrong result\n // FIXME\n !api.isDisposed() && self.manuallyShowTip(tooltipModel, ecModel, api, {\n x: self._lastX,\n y: self._lastY\n });\n });\n }\n },\n\n /**\n * Show tip manually by\n * dispatchAction({\n * type: 'showTip',\n * x: 10,\n * y: 10\n * });\n * Or\n * dispatchAction({\n * type: 'showTip',\n * seriesIndex: 0,\n * dataIndex or dataIndexInside or name\n * });\n *\n * TODO Batch\n */\n manuallyShowTip: function (tooltipModel, ecModel, api, payload) {\n if (payload.from === this.uid || env.node) {\n return;\n }\n\n var dispatchAction = makeDispatchAction(payload, api); // Reset ticket\n\n this._ticket = ''; // When triggered from axisPointer.\n\n var dataByCoordSys = payload.dataByCoordSys;\n\n if (payload.tooltip && payload.x != null && payload.y != null) {\n var el = proxyRect;\n el.position = [payload.x, payload.y];\n el.update();\n el.tooltip = payload.tooltip; // Manually show tooltip while view is not using zrender elements.\n\n this._tryShow({\n offsetX: payload.x,\n offsetY: payload.y,\n target: el\n }, dispatchAction);\n } else if (dataByCoordSys) {\n this._tryShow({\n offsetX: payload.x,\n offsetY: payload.y,\n position: payload.position,\n dataByCoordSys: payload.dataByCoordSys,\n tooltipOption: payload.tooltipOption\n }, dispatchAction);\n } else if (payload.seriesIndex != null) {\n if (this._manuallyAxisShowTip(tooltipModel, ecModel, api, payload)) {\n return;\n }\n\n var pointInfo = findPointFromSeries(payload, ecModel);\n var cx = pointInfo.point[0];\n var cy = pointInfo.point[1];\n\n if (cx != null && cy != null) {\n this._tryShow({\n offsetX: cx,\n offsetY: cy,\n position: payload.position,\n target: pointInfo.el\n }, dispatchAction);\n }\n } else if (payload.x != null && payload.y != null) {\n // FIXME\n // should wrap dispatchAction like `axisPointer/globalListener` ?\n api.dispatchAction({\n type: 'updateAxisPointer',\n x: payload.x,\n y: payload.y\n });\n\n this._tryShow({\n offsetX: payload.x,\n offsetY: payload.y,\n position: payload.position,\n target: api.getZr().findHover(payload.x, payload.y).target\n }, dispatchAction);\n }\n },\n manuallyHideTip: function (tooltipModel, ecModel, api, payload) {\n var tooltipContent = this._tooltipContent;\n\n if (!this._alwaysShowContent && this._tooltipModel) {\n tooltipContent.hideLater(this._tooltipModel.get('hideDelay'));\n }\n\n this._lastX = this._lastY = null;\n\n if (payload.from !== this.uid) {\n this._hide(makeDispatchAction(payload, api));\n }\n },\n // Be compatible with previous design, that is, when tooltip.type is 'axis' and\n // dispatchAction 'showTip' with seriesIndex and dataIndex will trigger axis pointer\n // and tooltip.\n _manuallyAxisShowTip: function (tooltipModel, ecModel, api, payload) {\n var seriesIndex = payload.seriesIndex;\n var dataIndex = payload.dataIndex;\n var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo;\n\n if (seriesIndex == null || dataIndex == null || coordSysAxesInfo == null) {\n return;\n }\n\n var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\n\n if (!seriesModel) {\n return;\n }\n\n var data = seriesModel.getData();\n var tooltipModel = buildTooltipModel([data.getItemModel(dataIndex), seriesModel, (seriesModel.coordinateSystem || {}).model, tooltipModel]);\n\n if (tooltipModel.get('trigger') !== 'axis') {\n return;\n }\n\n api.dispatchAction({\n type: 'updateAxisPointer',\n seriesIndex: seriesIndex,\n dataIndex: dataIndex,\n position: payload.position\n });\n return true;\n },\n _tryShow: function (e, dispatchAction) {\n var el = e.target;\n var tooltipModel = this._tooltipModel;\n\n if (!tooltipModel) {\n return;\n } // Save mouse x, mouse y. So we can try to keep showing the tip if chart is refreshed\n\n\n this._lastX = e.offsetX;\n this._lastY = e.offsetY;\n var dataByCoordSys = e.dataByCoordSys;\n\n if (dataByCoordSys && dataByCoordSys.length) {\n this._showAxisTooltip(dataByCoordSys, e);\n } // Always show item tooltip if mouse is on the element with dataIndex\n else if (el && el.dataIndex != null) {\n this._lastDataByCoordSys = null;\n\n this._showSeriesItemTooltip(e, el, dispatchAction);\n } // Tooltip provided directly. Like legend.\n else if (el && el.tooltip) {\n this._lastDataByCoordSys = null;\n\n this._showComponentItemTooltip(e, el, dispatchAction);\n } else {\n this._lastDataByCoordSys = null;\n\n this._hide(dispatchAction);\n }\n },\n _showOrMove: function (tooltipModel, cb) {\n // showDelay is used in this case: tooltip.enterable is set\n // as true. User intent to move mouse into tooltip and click\n // something. `showDelay` makes it easier to enter the content\n // but tooltip do not move immediately.\n var delay = tooltipModel.get('showDelay');\n cb = zrUtil.bind(cb, this);\n clearTimeout(this._showTimout);\n delay > 0 ? this._showTimout = setTimeout(cb, delay) : cb();\n },\n _showAxisTooltip: function (dataByCoordSys, e) {\n var ecModel = this._ecModel;\n var globalTooltipModel = this._tooltipModel;\n var point = [e.offsetX, e.offsetY];\n var singleDefaultHTML = [];\n var singleParamsList = [];\n var singleTooltipModel = buildTooltipModel([e.tooltipOption, globalTooltipModel]);\n var renderMode = this._renderMode;\n var newLine = this._newLine;\n var markers = {};\n each(dataByCoordSys, function (itemCoordSys) {\n // var coordParamList = [];\n // var coordDefaultHTML = [];\n // var coordTooltipModel = buildTooltipModel([\n // e.tooltipOption,\n // itemCoordSys.tooltipOption,\n // ecModel.getComponent(itemCoordSys.coordSysMainType, itemCoordSys.coordSysIndex),\n // globalTooltipModel\n // ]);\n // var displayMode = coordTooltipModel.get('displayMode');\n // var paramsList = displayMode === 'single' ? singleParamsList : [];\n each(itemCoordSys.dataByAxis, function (item) {\n var axisModel = ecModel.getComponent(item.axisDim + 'Axis', item.axisIndex);\n var axisValue = item.value;\n var seriesDefaultHTML = [];\n\n if (!axisModel || axisValue == null) {\n return;\n }\n\n var valueLabel = axisPointerViewHelper.getValueLabel(axisValue, axisModel.axis, ecModel, item.seriesDataIndices, item.valueLabelOpt);\n zrUtil.each(item.seriesDataIndices, function (idxItem) {\n var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);\n var dataIndex = idxItem.dataIndexInside;\n var dataParams = series && series.getDataParams(dataIndex);\n dataParams.axisDim = item.axisDim;\n dataParams.axisIndex = item.axisIndex;\n dataParams.axisType = item.axisType;\n dataParams.axisId = item.axisId;\n dataParams.axisValue = axisHelper.getAxisRawValue(axisModel.axis, axisValue);\n dataParams.axisValueLabel = valueLabel;\n\n if (dataParams) {\n singleParamsList.push(dataParams);\n var seriesTooltip = series.formatTooltip(dataIndex, true, null, renderMode);\n var html;\n\n if (zrUtil.isObject(seriesTooltip)) {\n html = seriesTooltip.html;\n var newMarkers = seriesTooltip.markers;\n zrUtil.merge(markers, newMarkers);\n } else {\n html = seriesTooltip;\n }\n\n seriesDefaultHTML.push(html);\n }\n }); // Default tooltip content\n // FIXME\n // (1) should be the first data which has name?\n // (2) themeRiver, firstDataIndex is array, and first line is unnecessary.\n\n var firstLine = valueLabel;\n\n if (renderMode !== 'html') {\n singleDefaultHTML.push(seriesDefaultHTML.join(newLine));\n } else {\n singleDefaultHTML.push((firstLine ? formatUtil.encodeHTML(firstLine) + newLine : '') + seriesDefaultHTML.join(newLine));\n }\n });\n }, this); // In most case, the second axis is shown upper than the first one.\n\n singleDefaultHTML.reverse();\n singleDefaultHTML = singleDefaultHTML.join(this._newLine + this._newLine);\n var positionExpr = e.position;\n\n this._showOrMove(singleTooltipModel, function () {\n if (this._updateContentNotChangedOnAxis(dataByCoordSys)) {\n this._updatePosition(singleTooltipModel, positionExpr, point[0], point[1], this._tooltipContent, singleParamsList);\n } else {\n this._showTooltipContent(singleTooltipModel, singleDefaultHTML, singleParamsList, Math.random(), point[0], point[1], positionExpr, undefined, markers);\n }\n }); // Do not trigger events here, because this branch only be entered\n // from dispatchAction.\n\n },\n _showSeriesItemTooltip: function (e, el, dispatchAction) {\n var ecModel = this._ecModel; // Use dataModel in element if possible\n // Used when mouseover on a element like markPoint or edge\n // In which case, the data is not main data in series.\n\n var seriesIndex = el.seriesIndex;\n var seriesModel = ecModel.getSeriesByIndex(seriesIndex); // For example, graph link.\n\n var dataModel = el.dataModel || seriesModel;\n var dataIndex = el.dataIndex;\n var dataType = el.dataType;\n var data = dataModel.getData(dataType);\n var tooltipModel = buildTooltipModel([data.getItemModel(dataIndex), dataModel, seriesModel && (seriesModel.coordinateSystem || {}).model, this._tooltipModel]);\n var tooltipTrigger = tooltipModel.get('trigger');\n\n if (tooltipTrigger != null && tooltipTrigger !== 'item') {\n return;\n }\n\n var params = dataModel.getDataParams(dataIndex, dataType);\n var seriesTooltip = dataModel.formatTooltip(dataIndex, false, dataType, this._renderMode);\n var defaultHtml;\n var markers;\n\n if (zrUtil.isObject(seriesTooltip)) {\n defaultHtml = seriesTooltip.html;\n markers = seriesTooltip.markers;\n } else {\n defaultHtml = seriesTooltip;\n markers = null;\n }\n\n var asyncTicket = 'item_' + dataModel.name + '_' + dataIndex;\n\n this._showOrMove(tooltipModel, function () {\n this._showTooltipContent(tooltipModel, defaultHtml, params, asyncTicket, e.offsetX, e.offsetY, e.position, e.target, markers);\n }); // FIXME\n // duplicated showtip if manuallyShowTip is called from dispatchAction.\n\n\n dispatchAction({\n type: 'showTip',\n dataIndexInside: dataIndex,\n dataIndex: data.getRawIndex(dataIndex),\n seriesIndex: seriesIndex,\n from: this.uid\n });\n },\n _showComponentItemTooltip: function (e, el, dispatchAction) {\n var tooltipOpt = el.tooltip;\n\n if (typeof tooltipOpt === 'string') {\n var content = tooltipOpt;\n tooltipOpt = {\n content: content,\n // Fixed formatter\n formatter: content\n };\n }\n\n var subTooltipModel = new Model(tooltipOpt, this._tooltipModel, this._ecModel);\n var defaultHtml = subTooltipModel.get('content');\n var asyncTicket = Math.random(); // Do not check whether `trigger` is 'none' here, because `trigger`\n // only works on coordinate system. In fact, we have not found case\n // that requires setting `trigger` nothing on component yet.\n\n this._showOrMove(subTooltipModel, function () {\n this._showTooltipContent(subTooltipModel, defaultHtml, subTooltipModel.get('formatterParams') || {}, asyncTicket, e.offsetX, e.offsetY, e.position, el);\n }); // If not dispatch showTip, tip may be hide triggered by axis.\n\n\n dispatchAction({\n type: 'showTip',\n from: this.uid\n });\n },\n _showTooltipContent: function (tooltipModel, defaultHtml, params, asyncTicket, x, y, positionExpr, el, markers) {\n // Reset ticket\n this._ticket = '';\n\n if (!tooltipModel.get('showContent') || !tooltipModel.get('show')) {\n return;\n }\n\n var tooltipContent = this._tooltipContent;\n var formatter = tooltipModel.get('formatter');\n positionExpr = positionExpr || tooltipModel.get('position');\n var html = defaultHtml;\n\n if (formatter && typeof formatter === 'string') {\n html = formatUtil.formatTpl(formatter, params, true);\n } else if (typeof formatter === 'function') {\n var callback = bind(function (cbTicket, html) {\n if (cbTicket === this._ticket) {\n tooltipContent.setContent(html, markers, tooltipModel);\n\n this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);\n }\n }, this);\n this._ticket = asyncTicket;\n html = formatter(params, asyncTicket, callback);\n }\n\n tooltipContent.setContent(html, markers, tooltipModel);\n tooltipContent.show(tooltipModel);\n\n this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);\n },\n\n /**\n * @param {string|Function|Array.|Object} positionExpr\n * @param {number} x Mouse x\n * @param {number} y Mouse y\n * @param {boolean} confine Whether confine tooltip content in view rect.\n * @param {Object|} params\n * @param {module:zrender/Element} el target element\n * @param {module:echarts/ExtensionAPI} api\n * @return {Array.}\n */\n _updatePosition: function (tooltipModel, positionExpr, x, y, content, params, el) {\n var viewWidth = this._api.getWidth();\n\n var viewHeight = this._api.getHeight();\n\n positionExpr = positionExpr || tooltipModel.get('position');\n var contentSize = content.getSize();\n var align = tooltipModel.get('align');\n var vAlign = tooltipModel.get('verticalAlign');\n var rect = el && el.getBoundingRect().clone();\n el && rect.applyTransform(el.transform);\n\n if (typeof positionExpr === 'function') {\n // Callback of position can be an array or a string specify the position\n positionExpr = positionExpr([x, y], params, content.el, rect, {\n viewSize: [viewWidth, viewHeight],\n contentSize: contentSize.slice()\n });\n }\n\n if (zrUtil.isArray(positionExpr)) {\n x = parsePercent(positionExpr[0], viewWidth);\n y = parsePercent(positionExpr[1], viewHeight);\n } else if (zrUtil.isObject(positionExpr)) {\n positionExpr.width = contentSize[0];\n positionExpr.height = contentSize[1];\n var layoutRect = layoutUtil.getLayoutRect(positionExpr, {\n width: viewWidth,\n height: viewHeight\n });\n x = layoutRect.x;\n y = layoutRect.y;\n align = null; // When positionExpr is left/top/right/bottom,\n // align and verticalAlign will not work.\n\n vAlign = null;\n } // Specify tooltip position by string 'top' 'bottom' 'left' 'right' around graphic element\n else if (typeof positionExpr === 'string' && el) {\n var pos = calcTooltipPosition(positionExpr, rect, contentSize);\n x = pos[0];\n y = pos[1];\n } else {\n var pos = refixTooltipPosition(x, y, content, viewWidth, viewHeight, align ? null : 20, vAlign ? null : 20);\n x = pos[0];\n y = pos[1];\n }\n\n align && (x -= isCenterAlign(align) ? contentSize[0] / 2 : align === 'right' ? contentSize[0] : 0);\n vAlign && (y -= isCenterAlign(vAlign) ? contentSize[1] / 2 : vAlign === 'bottom' ? contentSize[1] : 0);\n\n if (tooltipModel.get('confine')) {\n var pos = confineTooltipPosition(x, y, content, viewWidth, viewHeight);\n x = pos[0];\n y = pos[1];\n }\n\n content.moveTo(x, y);\n },\n // FIXME\n // Should we remove this but leave this to user?\n _updateContentNotChangedOnAxis: function (dataByCoordSys) {\n var lastCoordSys = this._lastDataByCoordSys;\n var contentNotChanged = !!lastCoordSys && lastCoordSys.length === dataByCoordSys.length;\n contentNotChanged && each(lastCoordSys, function (lastItemCoordSys, indexCoordSys) {\n var lastDataByAxis = lastItemCoordSys.dataByAxis || {};\n var thisItemCoordSys = dataByCoordSys[indexCoordSys] || {};\n var thisDataByAxis = thisItemCoordSys.dataByAxis || [];\n contentNotChanged &= lastDataByAxis.length === thisDataByAxis.length;\n contentNotChanged && each(lastDataByAxis, function (lastItem, indexAxis) {\n var thisItem = thisDataByAxis[indexAxis] || {};\n var lastIndices = lastItem.seriesDataIndices || [];\n var newIndices = thisItem.seriesDataIndices || [];\n contentNotChanged &= lastItem.value === thisItem.value && lastItem.axisType === thisItem.axisType && lastItem.axisId === thisItem.axisId && lastIndices.length === newIndices.length;\n contentNotChanged && each(lastIndices, function (lastIdxItem, j) {\n var newIdxItem = newIndices[j];\n contentNotChanged &= lastIdxItem.seriesIndex === newIdxItem.seriesIndex && lastIdxItem.dataIndex === newIdxItem.dataIndex;\n });\n });\n });\n this._lastDataByCoordSys = dataByCoordSys;\n return !!contentNotChanged;\n },\n _hide: function (dispatchAction) {\n // Do not directly hideLater here, because this behavior may be prevented\n // in dispatchAction when showTip is dispatched.\n // FIXME\n // duplicated hideTip if manuallyHideTip is called from dispatchAction.\n this._lastDataByCoordSys = null;\n dispatchAction({\n type: 'hideTip',\n from: this.uid\n });\n },\n dispose: function (ecModel, api) {\n if (env.node) {\n return;\n }\n\n this._tooltipContent.dispose();\n\n globalListener.unregister('itemTooltip', api);\n }\n});\n/**\n * @param {Array.} modelCascade\n * From top to bottom. (the last one should be globalTooltipModel);\n */\n\n\nfunction buildTooltipModel(modelCascade) {\n var resultModel = modelCascade.pop();\n\n while (modelCascade.length) {\n var tooltipOpt = modelCascade.pop();\n\n if (tooltipOpt) {\n if (Model.isInstance(tooltipOpt)) {\n tooltipOpt = tooltipOpt.get('tooltip', true);\n } // In each data item tooltip can be simply write:\n // {\n // value: 10,\n // tooltip: 'Something you need to know'\n // }\n\n\n if (typeof tooltipOpt === 'string') {\n tooltipOpt = {\n formatter: tooltipOpt\n };\n }\n\n resultModel = new Model(tooltipOpt, resultModel, resultModel.ecModel);\n }\n }\n\n return resultModel;\n}\n\nfunction makeDispatchAction(payload, api) {\n return payload.dispatchAction || zrUtil.bind(api.dispatchAction, api);\n}\n\nfunction refixTooltipPosition(x, y, content, viewWidth, viewHeight, gapH, gapV) {\n var size = content.getOuterSize();\n var width = size.width;\n var height = size.height;\n\n if (gapH != null) {\n if (x + width + gapH > viewWidth) {\n x -= width + gapH;\n } else {\n x += gapH;\n }\n }\n\n if (gapV != null) {\n if (y + height + gapV > viewHeight) {\n y -= height + gapV;\n } else {\n y += gapV;\n }\n }\n\n return [x, y];\n}\n\nfunction confineTooltipPosition(x, y, content, viewWidth, viewHeight) {\n var size = content.getOuterSize();\n var width = size.width;\n var height = size.height;\n x = Math.min(x + width, viewWidth) - width;\n y = Math.min(y + height, viewHeight) - height;\n x = Math.max(x, 0);\n y = Math.max(y, 0);\n return [x, y];\n}\n\nfunction calcTooltipPosition(position, rect, contentSize) {\n var domWidth = contentSize[0];\n var domHeight = contentSize[1];\n var gap = 5;\n var x = 0;\n var y = 0;\n var rectWidth = rect.width;\n var rectHeight = rect.height;\n\n switch (position) {\n case 'inside':\n x = rect.x + rectWidth / 2 - domWidth / 2;\n y = rect.y + rectHeight / 2 - domHeight / 2;\n break;\n\n case 'top':\n x = rect.x + rectWidth / 2 - domWidth / 2;\n y = rect.y - domHeight - gap;\n break;\n\n case 'bottom':\n x = rect.x + rectWidth / 2 - domWidth / 2;\n y = rect.y + rectHeight + gap;\n break;\n\n case 'left':\n x = rect.x - domWidth - gap;\n y = rect.y + rectHeight / 2 - domHeight / 2;\n break;\n\n case 'right':\n x = rect.x + rectWidth + gap;\n y = rect.y + rectHeight / 2 - domHeight / 2;\n }\n\n return [x, y];\n}\n\nfunction isCenterAlign(align) {\n return align === 'center' || align === 'middle';\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/tooltip/TooltipView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/visualMap.js": +/*!*********************************************************!*\ + !*** ./node_modules/echarts/lib/component/visualMap.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(/*! ./visualMapContinuous */ \"./node_modules/echarts/lib/component/visualMapContinuous.js\");\n\n__webpack_require__(/*! ./visualMapPiecewise */ \"./node_modules/echarts/lib/component/visualMapPiecewise.js\");\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/visualMap.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/visualMap/ContinuousModel.js": +/*!*************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/visualMap/ContinuousModel.js ***! + \*************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar VisualMapModel = __webpack_require__(/*! ./VisualMapModel */ \"./node_modules/echarts/lib/component/visualMap/VisualMapModel.js\");\n\nvar numberUtil = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Constant\nvar DEFAULT_BAR_BOUND = [20, 140];\nvar ContinuousModel = VisualMapModel.extend({\n type: 'visualMap.continuous',\n\n /**\n * @protected\n */\n defaultOption: {\n align: 'auto',\n // 'auto', 'left', 'right', 'top', 'bottom'\n calculable: false,\n // This prop effect default component type determine,\n // See echarts/component/visualMap/typeDefaulter.\n range: null,\n // selected range. In default case `range` is [min, max]\n // and can auto change along with modification of min max,\n // util use specifid a range.\n realtime: true,\n // Whether realtime update.\n itemHeight: null,\n // The length of the range control edge.\n itemWidth: null,\n // The length of the other side.\n hoverLink: true,\n // Enable hover highlight.\n hoverLinkDataSize: null,\n // The size of hovered data.\n hoverLinkOnHandle: null // Whether trigger hoverLink when hover handle.\n // If not specified, follow the value of `realtime`.\n\n },\n\n /**\n * @override\n */\n optionUpdated: function (newOption, isInit) {\n ContinuousModel.superApply(this, 'optionUpdated', arguments);\n this.resetExtent();\n this.resetVisual(function (mappingOption) {\n mappingOption.mappingMethod = 'linear';\n mappingOption.dataExtent = this.getExtent();\n });\n\n this._resetRange();\n },\n\n /**\n * @protected\n * @override\n */\n resetItemSize: function () {\n ContinuousModel.superApply(this, 'resetItemSize', arguments);\n var itemSize = this.itemSize;\n this._orient === 'horizontal' && itemSize.reverse();\n (itemSize[0] == null || isNaN(itemSize[0])) && (itemSize[0] = DEFAULT_BAR_BOUND[0]);\n (itemSize[1] == null || isNaN(itemSize[1])) && (itemSize[1] = DEFAULT_BAR_BOUND[1]);\n },\n\n /**\n * @private\n */\n _resetRange: function () {\n var dataExtent = this.getExtent();\n var range = this.option.range;\n\n if (!range || range.auto) {\n // `range` should always be array (so we dont use other\n // value like 'auto') for user-friend. (consider getOption).\n dataExtent.auto = 1;\n this.option.range = dataExtent;\n } else if (zrUtil.isArray(range)) {\n if (range[0] > range[1]) {\n range.reverse();\n }\n\n range[0] = Math.max(range[0], dataExtent[0]);\n range[1] = Math.min(range[1], dataExtent[1]);\n }\n },\n\n /**\n * @protected\n * @override\n */\n completeVisualOption: function () {\n VisualMapModel.prototype.completeVisualOption.apply(this, arguments);\n zrUtil.each(this.stateList, function (state) {\n var symbolSize = this.option.controller[state].symbolSize;\n\n if (symbolSize && symbolSize[0] !== symbolSize[1]) {\n symbolSize[0] = 0; // For good looking.\n }\n }, this);\n },\n\n /**\n * @override\n */\n setSelected: function (selected) {\n this.option.range = selected.slice();\n\n this._resetRange();\n },\n\n /**\n * @public\n */\n getSelected: function () {\n var dataExtent = this.getExtent();\n var dataInterval = numberUtil.asc((this.get('range') || []).slice()); // Clamp\n\n dataInterval[0] > dataExtent[1] && (dataInterval[0] = dataExtent[1]);\n dataInterval[1] > dataExtent[1] && (dataInterval[1] = dataExtent[1]);\n dataInterval[0] < dataExtent[0] && (dataInterval[0] = dataExtent[0]);\n dataInterval[1] < dataExtent[0] && (dataInterval[1] = dataExtent[0]);\n return dataInterval;\n },\n\n /**\n * @override\n */\n getValueState: function (value) {\n var range = this.option.range;\n var dataExtent = this.getExtent(); // When range[0] === dataExtent[0], any value larger than dataExtent[0] maps to 'inRange'.\n // range[1] is processed likewise.\n\n return (range[0] <= dataExtent[0] || range[0] <= value) && (range[1] >= dataExtent[1] || value <= range[1]) ? 'inRange' : 'outOfRange';\n },\n\n /**\n * @params {Array.} range target value: range[0] <= value && value <= range[1]\n * @return {Array.} [{seriesId, dataIndices: >}, ...]\n */\n findTargetDataIndices: function (range) {\n var result = [];\n this.eachTargetSeries(function (seriesModel) {\n var dataIndices = [];\n var data = seriesModel.getData();\n data.each(this.getDataDimension(data), function (value, dataIndex) {\n range[0] <= value && value <= range[1] && dataIndices.push(dataIndex);\n }, this);\n result.push({\n seriesId: seriesModel.id,\n dataIndex: dataIndices\n });\n }, this);\n return result;\n },\n\n /**\n * @implement\n */\n getVisualMeta: function (getColorVisual) {\n var oVals = getColorStopValues(this, 'outOfRange', this.getExtent());\n var iVals = getColorStopValues(this, 'inRange', this.option.range.slice());\n var stops = [];\n\n function setStop(value, valueState) {\n stops.push({\n value: value,\n color: getColorVisual(value, valueState)\n });\n } // Format to: outOfRange -- inRange -- outOfRange.\n\n\n var iIdx = 0;\n var oIdx = 0;\n var iLen = iVals.length;\n var oLen = oVals.length;\n\n for (; oIdx < oLen && (!iVals.length || oVals[oIdx] <= iVals[0]); oIdx++) {\n // If oVal[oIdx] === iVals[iIdx], oVal[oIdx] should be ignored.\n if (oVals[oIdx] < iVals[iIdx]) {\n setStop(oVals[oIdx], 'outOfRange');\n }\n }\n\n for (var first = 1; iIdx < iLen; iIdx++, first = 0) {\n // If range is full, value beyond min, max will be clamped.\n // make a singularity\n first && stops.length && setStop(iVals[iIdx], 'outOfRange');\n setStop(iVals[iIdx], 'inRange');\n }\n\n for (var first = 1; oIdx < oLen; oIdx++) {\n if (!iVals.length || iVals[iVals.length - 1] < oVals[oIdx]) {\n // make a singularity\n if (first) {\n stops.length && setStop(stops[stops.length - 1].value, 'outOfRange');\n first = 0;\n }\n\n setStop(oVals[oIdx], 'outOfRange');\n }\n }\n\n var stopsLen = stops.length;\n return {\n stops: stops,\n outerColors: [stopsLen ? stops[0].color : 'transparent', stopsLen ? stops[stopsLen - 1].color : 'transparent']\n };\n }\n});\n\nfunction getColorStopValues(visualMapModel, valueState, dataExtent) {\n if (dataExtent[0] === dataExtent[1]) {\n return dataExtent.slice();\n } // When using colorHue mapping, it is not linear color any more.\n // Moreover, canvas gradient seems not to be accurate linear.\n // FIXME\n // Should be arbitrary value 100? or based on pixel size?\n\n\n var count = 200;\n var step = (dataExtent[1] - dataExtent[0]) / count;\n var value = dataExtent[0];\n var stopValues = [];\n\n for (var i = 0; i <= count && value < dataExtent[1]; i++) {\n stopValues.push(value);\n value += step;\n }\n\n stopValues.push(dataExtent[1]);\n return stopValues;\n}\n\nvar _default = ContinuousModel;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/visualMap/ContinuousModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/visualMap/ContinuousView.js": +/*!************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/visualMap/ContinuousView.js ***! + \************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar LinearGradient = __webpack_require__(/*! zrender/lib/graphic/LinearGradient */ \"./node_modules/zrender/lib/graphic/LinearGradient.js\");\n\nvar eventTool = __webpack_require__(/*! zrender/lib/core/event */ \"./node_modules/zrender/lib/core/event.js\");\n\nvar VisualMapView = __webpack_require__(/*! ./VisualMapView */ \"./node_modules/echarts/lib/component/visualMap/VisualMapView.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar numberUtil = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar sliderMove = __webpack_require__(/*! ../helper/sliderMove */ \"./node_modules/echarts/lib/component/helper/sliderMove.js\");\n\nvar helper = __webpack_require__(/*! ./helper */ \"./node_modules/echarts/lib/component/visualMap/helper.js\");\n\nvar modelUtil = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar linearMap = numberUtil.linearMap;\nvar each = zrUtil.each;\nvar mathMin = Math.min;\nvar mathMax = Math.max; // Arbitrary value\n\nvar HOVER_LINK_SIZE = 12;\nvar HOVER_LINK_OUT = 6; // Notice:\n// Any \"interval\" should be by the order of [low, high].\n// \"handle0\" (handleIndex === 0) maps to\n// low data value: this._dataInterval[0] and has low coord.\n// \"handle1\" (handleIndex === 1) maps to\n// high data value: this._dataInterval[1] and has high coord.\n// The logic of transform is implemented in this._createBarGroup.\n\nvar ContinuousView = VisualMapView.extend({\n type: 'visualMap.continuous',\n\n /**\n * @override\n */\n init: function () {\n ContinuousView.superApply(this, 'init', arguments);\n /**\n * @private\n */\n\n this._shapes = {};\n /**\n * @private\n */\n\n this._dataInterval = [];\n /**\n * @private\n */\n\n this._handleEnds = [];\n /**\n * @private\n */\n\n this._orient;\n /**\n * @private\n */\n\n this._useHandle;\n /**\n * @private\n */\n\n this._hoverLinkDataIndices = [];\n /**\n * @private\n */\n\n this._dragging;\n /**\n * @private\n */\n\n this._hovering;\n },\n\n /**\n * @protected\n * @override\n */\n doRender: function (visualMapModel, ecModel, api, payload) {\n if (!payload || payload.type !== 'selectDataRange' || payload.from !== this.uid) {\n this._buildView();\n }\n },\n\n /**\n * @private\n */\n _buildView: function () {\n this.group.removeAll();\n var visualMapModel = this.visualMapModel;\n var thisGroup = this.group;\n this._orient = visualMapModel.get('orient');\n this._useHandle = visualMapModel.get('calculable');\n\n this._resetInterval();\n\n this._renderBar(thisGroup);\n\n var dataRangeText = visualMapModel.get('text');\n\n this._renderEndsText(thisGroup, dataRangeText, 0);\n\n this._renderEndsText(thisGroup, dataRangeText, 1); // Do this for background size calculation.\n\n\n this._updateView(true); // After updating view, inner shapes is built completely,\n // and then background can be rendered.\n\n\n this.renderBackground(thisGroup); // Real update view\n\n this._updateView();\n\n this._enableHoverLinkToSeries();\n\n this._enableHoverLinkFromSeries();\n\n this.positionGroup(thisGroup);\n },\n\n /**\n * @private\n */\n _renderEndsText: function (group, dataRangeText, endsIndex) {\n if (!dataRangeText) {\n return;\n } // Compatible with ec2, text[0] map to high value, text[1] map low value.\n\n\n var text = dataRangeText[1 - endsIndex];\n text = text != null ? text + '' : '';\n var visualMapModel = this.visualMapModel;\n var textGap = visualMapModel.get('textGap');\n var itemSize = visualMapModel.itemSize;\n var barGroup = this._shapes.barGroup;\n\n var position = this._applyTransform([itemSize[0] / 2, endsIndex === 0 ? -textGap : itemSize[1] + textGap], barGroup);\n\n var align = this._applyTransform(endsIndex === 0 ? 'bottom' : 'top', barGroup);\n\n var orient = this._orient;\n var textStyleModel = this.visualMapModel.textStyleModel;\n this.group.add(new graphic.Text({\n style: {\n x: position[0],\n y: position[1],\n textVerticalAlign: orient === 'horizontal' ? 'middle' : align,\n textAlign: orient === 'horizontal' ? align : 'center',\n text: text,\n textFont: textStyleModel.getFont(),\n textFill: textStyleModel.getTextColor()\n }\n }));\n },\n\n /**\n * @private\n */\n _renderBar: function (targetGroup) {\n var visualMapModel = this.visualMapModel;\n var shapes = this._shapes;\n var itemSize = visualMapModel.itemSize;\n var orient = this._orient;\n var useHandle = this._useHandle;\n var itemAlign = helper.getItemAlign(visualMapModel, this.api, itemSize);\n\n var barGroup = shapes.barGroup = this._createBarGroup(itemAlign); // Bar\n\n\n barGroup.add(shapes.outOfRange = createPolygon());\n barGroup.add(shapes.inRange = createPolygon(null, useHandle ? getCursor(this._orient) : null, zrUtil.bind(this._dragHandle, this, 'all', false), zrUtil.bind(this._dragHandle, this, 'all', true)));\n var textRect = visualMapModel.textStyleModel.getTextRect('国');\n var textSize = mathMax(textRect.width, textRect.height); // Handle\n\n if (useHandle) {\n shapes.handleThumbs = [];\n shapes.handleLabels = [];\n shapes.handleLabelPoints = [];\n\n this._createHandle(barGroup, 0, itemSize, textSize, orient, itemAlign);\n\n this._createHandle(barGroup, 1, itemSize, textSize, orient, itemAlign);\n }\n\n this._createIndicator(barGroup, itemSize, textSize, orient);\n\n targetGroup.add(barGroup);\n },\n\n /**\n * @private\n */\n _createHandle: function (barGroup, handleIndex, itemSize, textSize, orient) {\n var onDrift = zrUtil.bind(this._dragHandle, this, handleIndex, false);\n var onDragEnd = zrUtil.bind(this._dragHandle, this, handleIndex, true);\n var handleThumb = createPolygon(createHandlePoints(handleIndex, textSize), getCursor(this._orient), onDrift, onDragEnd);\n handleThumb.position[0] = itemSize[0];\n barGroup.add(handleThumb); // Text is always horizontal layout but should not be effected by\n // transform (orient/inverse). So label is built separately but not\n // use zrender/graphic/helper/RectText, and is located based on view\n // group (according to handleLabelPoint) but not barGroup.\n\n var textStyleModel = this.visualMapModel.textStyleModel;\n var handleLabel = new graphic.Text({\n draggable: true,\n drift: onDrift,\n onmousemove: function (e) {\n // Fot mobile devicem, prevent screen slider on the button.\n eventTool.stop(e.event);\n },\n ondragend: onDragEnd,\n style: {\n x: 0,\n y: 0,\n text: '',\n textFont: textStyleModel.getFont(),\n textFill: textStyleModel.getTextColor()\n }\n });\n this.group.add(handleLabel);\n var handleLabelPoint = [orient === 'horizontal' ? textSize / 2 : textSize * 1.5, orient === 'horizontal' ? handleIndex === 0 ? -(textSize * 1.5) : textSize * 1.5 : handleIndex === 0 ? -textSize / 2 : textSize / 2];\n var shapes = this._shapes;\n shapes.handleThumbs[handleIndex] = handleThumb;\n shapes.handleLabelPoints[handleIndex] = handleLabelPoint;\n shapes.handleLabels[handleIndex] = handleLabel;\n },\n\n /**\n * @private\n */\n _createIndicator: function (barGroup, itemSize, textSize, orient) {\n var indicator = createPolygon([[0, 0]], 'move');\n indicator.position[0] = itemSize[0];\n indicator.attr({\n invisible: true,\n silent: true\n });\n barGroup.add(indicator);\n var textStyleModel = this.visualMapModel.textStyleModel;\n var indicatorLabel = new graphic.Text({\n silent: true,\n invisible: true,\n style: {\n x: 0,\n y: 0,\n text: '',\n textFont: textStyleModel.getFont(),\n textFill: textStyleModel.getTextColor()\n }\n });\n this.group.add(indicatorLabel);\n var indicatorLabelPoint = [orient === 'horizontal' ? textSize / 2 : HOVER_LINK_OUT + 3, 0];\n var shapes = this._shapes;\n shapes.indicator = indicator;\n shapes.indicatorLabel = indicatorLabel;\n shapes.indicatorLabelPoint = indicatorLabelPoint;\n },\n\n /**\n * @private\n */\n _dragHandle: function (handleIndex, isEnd, dx, dy) {\n if (!this._useHandle) {\n return;\n }\n\n this._dragging = !isEnd;\n\n if (!isEnd) {\n // Transform dx, dy to bar coordination.\n var vertex = this._applyTransform([dx, dy], this._shapes.barGroup, true);\n\n this._updateInterval(handleIndex, vertex[1]); // Considering realtime, update view should be executed\n // before dispatch action.\n\n\n this._updateView();\n } // dragEnd do not dispatch action when realtime.\n\n\n if (isEnd === !this.visualMapModel.get('realtime')) {\n // jshint ignore:line\n this.api.dispatchAction({\n type: 'selectDataRange',\n from: this.uid,\n visualMapId: this.visualMapModel.id,\n selected: this._dataInterval.slice()\n });\n }\n\n if (isEnd) {\n !this._hovering && this._clearHoverLinkToSeries();\n } else if (useHoverLinkOnHandle(this.visualMapModel)) {\n this._doHoverLinkToSeries(this._handleEnds[handleIndex], false);\n }\n },\n\n /**\n * @private\n */\n _resetInterval: function () {\n var visualMapModel = this.visualMapModel;\n var dataInterval = this._dataInterval = visualMapModel.getSelected();\n var dataExtent = visualMapModel.getExtent();\n var sizeExtent = [0, visualMapModel.itemSize[1]];\n this._handleEnds = [linearMap(dataInterval[0], dataExtent, sizeExtent, true), linearMap(dataInterval[1], dataExtent, sizeExtent, true)];\n },\n\n /**\n * @private\n * @param {(number|string)} handleIndex 0 or 1 or 'all'\n * @param {number} dx\n * @param {number} dy\n */\n _updateInterval: function (handleIndex, delta) {\n delta = delta || 0;\n var visualMapModel = this.visualMapModel;\n var handleEnds = this._handleEnds;\n var sizeExtent = [0, visualMapModel.itemSize[1]];\n sliderMove(delta, handleEnds, sizeExtent, handleIndex, // cross is forbiden\n 0);\n var dataExtent = visualMapModel.getExtent(); // Update data interval.\n\n this._dataInterval = [linearMap(handleEnds[0], sizeExtent, dataExtent, true), linearMap(handleEnds[1], sizeExtent, dataExtent, true)];\n },\n\n /**\n * @private\n */\n _updateView: function (forSketch) {\n var visualMapModel = this.visualMapModel;\n var dataExtent = visualMapModel.getExtent();\n var shapes = this._shapes;\n var outOfRangeHandleEnds = [0, visualMapModel.itemSize[1]];\n var inRangeHandleEnds = forSketch ? outOfRangeHandleEnds : this._handleEnds;\n\n var visualInRange = this._createBarVisual(this._dataInterval, dataExtent, inRangeHandleEnds, 'inRange');\n\n var visualOutOfRange = this._createBarVisual(dataExtent, dataExtent, outOfRangeHandleEnds, 'outOfRange');\n\n shapes.inRange.setStyle({\n fill: visualInRange.barColor,\n opacity: visualInRange.opacity\n }).setShape('points', visualInRange.barPoints);\n shapes.outOfRange.setStyle({\n fill: visualOutOfRange.barColor,\n opacity: visualOutOfRange.opacity\n }).setShape('points', visualOutOfRange.barPoints);\n\n this._updateHandle(inRangeHandleEnds, visualInRange);\n },\n\n /**\n * @private\n */\n _createBarVisual: function (dataInterval, dataExtent, handleEnds, forceState) {\n var opts = {\n forceState: forceState,\n convertOpacityToAlpha: true\n };\n\n var colorStops = this._makeColorGradient(dataInterval, opts);\n\n var symbolSizes = [this.getControllerVisual(dataInterval[0], 'symbolSize', opts), this.getControllerVisual(dataInterval[1], 'symbolSize', opts)];\n\n var barPoints = this._createBarPoints(handleEnds, symbolSizes);\n\n return {\n barColor: new LinearGradient(0, 0, 0, 1, colorStops),\n barPoints: barPoints,\n handlesColor: [colorStops[0].color, colorStops[colorStops.length - 1].color]\n };\n },\n\n /**\n * @private\n */\n _makeColorGradient: function (dataInterval, opts) {\n // Considering colorHue, which is not linear, so we have to sample\n // to calculate gradient color stops, but not only caculate head\n // and tail.\n var sampleNumber = 100; // Arbitrary value.\n\n var colorStops = [];\n var step = (dataInterval[1] - dataInterval[0]) / sampleNumber;\n colorStops.push({\n color: this.getControllerVisual(dataInterval[0], 'color', opts),\n offset: 0\n });\n\n for (var i = 1; i < sampleNumber; i++) {\n var currValue = dataInterval[0] + step * i;\n\n if (currValue > dataInterval[1]) {\n break;\n }\n\n colorStops.push({\n color: this.getControllerVisual(currValue, 'color', opts),\n offset: i / sampleNumber\n });\n }\n\n colorStops.push({\n color: this.getControllerVisual(dataInterval[1], 'color', opts),\n offset: 1\n });\n return colorStops;\n },\n\n /**\n * @private\n */\n _createBarPoints: function (handleEnds, symbolSizes) {\n var itemSize = this.visualMapModel.itemSize;\n return [[itemSize[0] - symbolSizes[0], handleEnds[0]], [itemSize[0], handleEnds[0]], [itemSize[0], handleEnds[1]], [itemSize[0] - symbolSizes[1], handleEnds[1]]];\n },\n\n /**\n * @private\n */\n _createBarGroup: function (itemAlign) {\n var orient = this._orient;\n var inverse = this.visualMapModel.get('inverse');\n return new graphic.Group(orient === 'horizontal' && !inverse ? {\n scale: itemAlign === 'bottom' ? [1, 1] : [-1, 1],\n rotation: Math.PI / 2\n } : orient === 'horizontal' && inverse ? {\n scale: itemAlign === 'bottom' ? [-1, 1] : [1, 1],\n rotation: -Math.PI / 2\n } : orient === 'vertical' && !inverse ? {\n scale: itemAlign === 'left' ? [1, -1] : [-1, -1]\n } : {\n scale: itemAlign === 'left' ? [1, 1] : [-1, 1]\n });\n },\n\n /**\n * @private\n */\n _updateHandle: function (handleEnds, visualInRange) {\n if (!this._useHandle) {\n return;\n }\n\n var shapes = this._shapes;\n var visualMapModel = this.visualMapModel;\n var handleThumbs = shapes.handleThumbs;\n var handleLabels = shapes.handleLabels;\n each([0, 1], function (handleIndex) {\n var handleThumb = handleThumbs[handleIndex];\n handleThumb.setStyle('fill', visualInRange.handlesColor[handleIndex]);\n handleThumb.position[1] = handleEnds[handleIndex]; // Update handle label position.\n\n var textPoint = graphic.applyTransform(shapes.handleLabelPoints[handleIndex], graphic.getTransform(handleThumb, this.group));\n handleLabels[handleIndex].setStyle({\n x: textPoint[0],\n y: textPoint[1],\n text: visualMapModel.formatValueText(this._dataInterval[handleIndex]),\n textVerticalAlign: 'middle',\n textAlign: this._applyTransform(this._orient === 'horizontal' ? handleIndex === 0 ? 'bottom' : 'top' : 'left', shapes.barGroup)\n });\n }, this);\n },\n\n /**\n * @private\n * @param {number} cursorValue\n * @param {number} textValue\n * @param {string} [rangeSymbol]\n * @param {number} [halfHoverLinkSize]\n */\n _showIndicator: function (cursorValue, textValue, rangeSymbol, halfHoverLinkSize) {\n var visualMapModel = this.visualMapModel;\n var dataExtent = visualMapModel.getExtent();\n var itemSize = visualMapModel.itemSize;\n var sizeExtent = [0, itemSize[1]];\n var pos = linearMap(cursorValue, dataExtent, sizeExtent, true);\n var shapes = this._shapes;\n var indicator = shapes.indicator;\n\n if (!indicator) {\n return;\n }\n\n indicator.position[1] = pos;\n indicator.attr('invisible', false);\n indicator.setShape('points', createIndicatorPoints(!!rangeSymbol, halfHoverLinkSize, pos, itemSize[1]));\n var opts = {\n convertOpacityToAlpha: true\n };\n var color = this.getControllerVisual(cursorValue, 'color', opts);\n indicator.setStyle('fill', color); // Update handle label position.\n\n var textPoint = graphic.applyTransform(shapes.indicatorLabelPoint, graphic.getTransform(indicator, this.group));\n var indicatorLabel = shapes.indicatorLabel;\n indicatorLabel.attr('invisible', false);\n\n var align = this._applyTransform('left', shapes.barGroup);\n\n var orient = this._orient;\n indicatorLabel.setStyle({\n text: (rangeSymbol ? rangeSymbol : '') + visualMapModel.formatValueText(textValue),\n textVerticalAlign: orient === 'horizontal' ? align : 'middle',\n textAlign: orient === 'horizontal' ? 'center' : align,\n x: textPoint[0],\n y: textPoint[1]\n });\n },\n\n /**\n * @private\n */\n _enableHoverLinkToSeries: function () {\n var self = this;\n\n this._shapes.barGroup.on('mousemove', function (e) {\n self._hovering = true;\n\n if (!self._dragging) {\n var itemSize = self.visualMapModel.itemSize;\n\n var pos = self._applyTransform([e.offsetX, e.offsetY], self._shapes.barGroup, true, true); // For hover link show when hover handle, which might be\n // below or upper than sizeExtent.\n\n\n pos[1] = mathMin(mathMax(0, pos[1]), itemSize[1]);\n\n self._doHoverLinkToSeries(pos[1], 0 <= pos[0] && pos[0] <= itemSize[0]);\n }\n }).on('mouseout', function () {\n // When mouse is out of handle, hoverLink still need\n // to be displayed when realtime is set as false.\n self._hovering = false;\n !self._dragging && self._clearHoverLinkToSeries();\n });\n },\n\n /**\n * @private\n */\n _enableHoverLinkFromSeries: function () {\n var zr = this.api.getZr();\n\n if (this.visualMapModel.option.hoverLink) {\n zr.on('mouseover', this._hoverLinkFromSeriesMouseOver, this);\n zr.on('mouseout', this._hideIndicator, this);\n } else {\n this._clearHoverLinkFromSeries();\n }\n },\n\n /**\n * @private\n */\n _doHoverLinkToSeries: function (cursorPos, hoverOnBar) {\n var visualMapModel = this.visualMapModel;\n var itemSize = visualMapModel.itemSize;\n\n if (!visualMapModel.option.hoverLink) {\n return;\n }\n\n var sizeExtent = [0, itemSize[1]];\n var dataExtent = visualMapModel.getExtent(); // For hover link show when hover handle, which might be below or upper than sizeExtent.\n\n cursorPos = mathMin(mathMax(sizeExtent[0], cursorPos), sizeExtent[1]);\n var halfHoverLinkSize = getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent);\n var hoverRange = [cursorPos - halfHoverLinkSize, cursorPos + halfHoverLinkSize];\n var cursorValue = linearMap(cursorPos, sizeExtent, dataExtent, true);\n var valueRange = [linearMap(hoverRange[0], sizeExtent, dataExtent, true), linearMap(hoverRange[1], sizeExtent, dataExtent, true)]; // Consider data range is out of visualMap range, see test/visualMap-continuous.html,\n // where china and india has very large population.\n\n hoverRange[0] < sizeExtent[0] && (valueRange[0] = -Infinity);\n hoverRange[1] > sizeExtent[1] && (valueRange[1] = Infinity); // Do not show indicator when mouse is over handle,\n // otherwise labels overlap, especially when dragging.\n\n if (hoverOnBar) {\n if (valueRange[0] === -Infinity) {\n this._showIndicator(cursorValue, valueRange[1], '< ', halfHoverLinkSize);\n } else if (valueRange[1] === Infinity) {\n this._showIndicator(cursorValue, valueRange[0], '> ', halfHoverLinkSize);\n } else {\n this._showIndicator(cursorValue, cursorValue, '≈ ', halfHoverLinkSize);\n }\n } // When realtime is set as false, handles, which are in barGroup,\n // also trigger hoverLink, which help user to realize where they\n // focus on when dragging. (see test/heatmap-large.html)\n // When realtime is set as true, highlight will not show when hover\n // handle, because the label on handle, which displays a exact value\n // but not range, might mislead users.\n\n\n var oldBatch = this._hoverLinkDataIndices;\n var newBatch = [];\n\n if (hoverOnBar || useHoverLinkOnHandle(visualMapModel)) {\n newBatch = this._hoverLinkDataIndices = visualMapModel.findTargetDataIndices(valueRange);\n }\n\n var resultBatches = modelUtil.compressBatches(oldBatch, newBatch);\n\n this._dispatchHighDown('downplay', helper.makeHighDownBatch(resultBatches[0], visualMapModel));\n\n this._dispatchHighDown('highlight', helper.makeHighDownBatch(resultBatches[1], visualMapModel));\n },\n\n /**\n * @private\n */\n _hoverLinkFromSeriesMouseOver: function (e) {\n var el = e.target;\n var visualMapModel = this.visualMapModel;\n\n if (!el || el.dataIndex == null) {\n return;\n }\n\n var dataModel = this.ecModel.getSeriesByIndex(el.seriesIndex);\n\n if (!visualMapModel.isTargetSeries(dataModel)) {\n return;\n }\n\n var data = dataModel.getData(el.dataType);\n var value = data.get(visualMapModel.getDataDimension(data), el.dataIndex, true);\n\n if (!isNaN(value)) {\n this._showIndicator(value, value);\n }\n },\n\n /**\n * @private\n */\n _hideIndicator: function () {\n var shapes = this._shapes;\n shapes.indicator && shapes.indicator.attr('invisible', true);\n shapes.indicatorLabel && shapes.indicatorLabel.attr('invisible', true);\n },\n\n /**\n * @private\n */\n _clearHoverLinkToSeries: function () {\n this._hideIndicator();\n\n var indices = this._hoverLinkDataIndices;\n\n this._dispatchHighDown('downplay', helper.makeHighDownBatch(indices, this.visualMapModel));\n\n indices.length = 0;\n },\n\n /**\n * @private\n */\n _clearHoverLinkFromSeries: function () {\n this._hideIndicator();\n\n var zr = this.api.getZr();\n zr.off('mouseover', this._hoverLinkFromSeriesMouseOver);\n zr.off('mouseout', this._hideIndicator);\n },\n\n /**\n * @private\n */\n _applyTransform: function (vertex, element, inverse, global) {\n var transform = graphic.getTransform(element, global ? null : this.group);\n return graphic[zrUtil.isArray(vertex) ? 'applyTransform' : 'transformDirection'](vertex, transform, inverse);\n },\n\n /**\n * @private\n */\n _dispatchHighDown: function (type, batch) {\n batch && batch.length && this.api.dispatchAction({\n type: type,\n batch: batch\n });\n },\n\n /**\n * @override\n */\n dispose: function () {\n this._clearHoverLinkFromSeries();\n\n this._clearHoverLinkToSeries();\n },\n\n /**\n * @override\n */\n remove: function () {\n this._clearHoverLinkFromSeries();\n\n this._clearHoverLinkToSeries();\n }\n});\n\nfunction createPolygon(points, cursor, onDrift, onDragEnd) {\n return new graphic.Polygon({\n shape: {\n points: points\n },\n draggable: !!onDrift,\n cursor: cursor,\n drift: onDrift,\n onmousemove: function (e) {\n // Fot mobile devicem, prevent screen slider on the button.\n eventTool.stop(e.event);\n },\n ondragend: onDragEnd\n });\n}\n\nfunction createHandlePoints(handleIndex, textSize) {\n return handleIndex === 0 ? [[0, 0], [textSize, 0], [textSize, -textSize]] : [[0, 0], [textSize, 0], [textSize, textSize]];\n}\n\nfunction createIndicatorPoints(isRange, halfHoverLinkSize, pos, extentMax) {\n return isRange ? [// indicate range\n [0, -mathMin(halfHoverLinkSize, mathMax(pos, 0))], [HOVER_LINK_OUT, 0], [0, mathMin(halfHoverLinkSize, mathMax(extentMax - pos, 0))]] : [// indicate single value\n [0, 0], [5, -5], [5, 5]];\n}\n\nfunction getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent) {\n var halfHoverLinkSize = HOVER_LINK_SIZE / 2;\n var hoverLinkDataSize = visualMapModel.get('hoverLinkDataSize');\n\n if (hoverLinkDataSize) {\n halfHoverLinkSize = linearMap(hoverLinkDataSize, dataExtent, sizeExtent, true) / 2;\n }\n\n return halfHoverLinkSize;\n}\n\nfunction useHoverLinkOnHandle(visualMapModel) {\n var hoverLinkOnHandle = visualMapModel.get('hoverLinkOnHandle');\n return !!(hoverLinkOnHandle == null ? visualMapModel.get('realtime') : hoverLinkOnHandle);\n}\n\nfunction getCursor(orient) {\n return orient === 'vertical' ? 'ns-resize' : 'ew-resize';\n}\n\nvar _default = ContinuousView;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/visualMap/ContinuousView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/visualMap/PiecewiseModel.js": +/*!************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/visualMap/PiecewiseModel.js ***! + \************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar VisualMapModel = __webpack_require__(/*! ./VisualMapModel */ \"./node_modules/echarts/lib/component/visualMap/VisualMapModel.js\");\n\nvar VisualMapping = __webpack_require__(/*! ../../visual/VisualMapping */ \"./node_modules/echarts/lib/visual/VisualMapping.js\");\n\nvar visualDefault = __webpack_require__(/*! ../../visual/visualDefault */ \"./node_modules/echarts/lib/visual/visualDefault.js\");\n\nvar _number = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar reformIntervals = _number.reformIntervals;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PiecewiseModel = VisualMapModel.extend({\n type: 'visualMap.piecewise',\n\n /**\n * Order Rule:\n *\n * option.categories / option.pieces / option.text / option.selected:\n * If !option.inverse,\n * Order when vertical: ['top', ..., 'bottom'].\n * Order when horizontal: ['left', ..., 'right'].\n * If option.inverse, the meaning of\n * the order should be reversed.\n *\n * this._pieceList:\n * The order is always [low, ..., high].\n *\n * Mapping from location to low-high:\n * If !option.inverse\n * When vertical, top is high.\n * When horizontal, right is high.\n * If option.inverse, reverse.\n */\n\n /**\n * @protected\n */\n defaultOption: {\n selected: null,\n // Object. If not specified, means selected.\n // When pieces and splitNumber: {'0': true, '5': true}\n // When categories: {'cate1': false, 'cate3': true}\n // When selected === false, means all unselected.\n minOpen: false,\n // Whether include values that smaller than `min`.\n maxOpen: false,\n // Whether include values that bigger than `max`.\n align: 'auto',\n // 'auto', 'left', 'right'\n itemWidth: 20,\n // When put the controller vertically, it is the length of\n // horizontal side of each item. Otherwise, vertical side.\n itemHeight: 14,\n // When put the controller vertically, it is the length of\n // vertical side of each item. Otherwise, horizontal side.\n itemSymbol: 'roundRect',\n pieceList: null,\n // Each item is Object, with some of those attrs:\n // {min, max, lt, gt, lte, gte, value,\n // color, colorSaturation, colorAlpha, opacity,\n // symbol, symbolSize}, which customize the range or visual\n // coding of the certain piece. Besides, see \"Order Rule\".\n categories: null,\n // category names, like: ['some1', 'some2', 'some3'].\n // Attr min/max are ignored when categories set. See \"Order Rule\"\n splitNumber: 5,\n // If set to 5, auto split five pieces equally.\n // If set to 0 and component type not set, component type will be\n // determined as \"continuous\". (It is less reasonable but for ec2\n // compatibility, see echarts/component/visualMap/typeDefaulter)\n selectedMode: 'multiple',\n // Can be 'multiple' or 'single'.\n itemGap: 10,\n // The gap between two items, in px.\n hoverLink: true,\n // Enable hover highlight.\n showLabel: null // By default, when text is used, label will hide (the logic\n // is remained for compatibility reason)\n\n },\n\n /**\n * @override\n */\n optionUpdated: function (newOption, isInit) {\n PiecewiseModel.superApply(this, 'optionUpdated', arguments);\n /**\n * The order is always [low, ..., high].\n * [{text: string, interval: Array.}, ...]\n * @private\n * @type {Array.}\n */\n\n this._pieceList = [];\n this.resetExtent();\n /**\n * 'pieces', 'categories', 'splitNumber'\n * @type {string}\n */\n\n var mode = this._mode = this._determineMode();\n\n resetMethods[this._mode].call(this);\n\n this._resetSelected(newOption, isInit);\n\n var categories = this.option.categories;\n this.resetVisual(function (mappingOption, state) {\n if (mode === 'categories') {\n mappingOption.mappingMethod = 'category';\n mappingOption.categories = zrUtil.clone(categories);\n } else {\n mappingOption.dataExtent = this.getExtent();\n mappingOption.mappingMethod = 'piecewise';\n mappingOption.pieceList = zrUtil.map(this._pieceList, function (piece) {\n var piece = zrUtil.clone(piece);\n\n if (state !== 'inRange') {\n // FIXME\n // outOfRange do not support special visual in pieces.\n piece.visual = null;\n }\n\n return piece;\n });\n }\n });\n },\n\n /**\n * @protected\n * @override\n */\n completeVisualOption: function () {\n // Consider this case:\n // visualMap: {\n // pieces: [{symbol: 'circle', lt: 0}, {symbol: 'rect', gte: 0}]\n // }\n // where no inRange/outOfRange set but only pieces. So we should make\n // default inRange/outOfRange for this case, otherwise visuals that only\n // appear in `pieces` will not be taken into account in visual encoding.\n var option = this.option;\n var visualTypesInPieces = {};\n var visualTypes = VisualMapping.listVisualTypes();\n var isCategory = this.isCategory();\n zrUtil.each(option.pieces, function (piece) {\n zrUtil.each(visualTypes, function (visualType) {\n if (piece.hasOwnProperty(visualType)) {\n visualTypesInPieces[visualType] = 1;\n }\n });\n });\n zrUtil.each(visualTypesInPieces, function (v, visualType) {\n var exists = 0;\n zrUtil.each(this.stateList, function (state) {\n exists |= has(option, state, visualType) || has(option.target, state, visualType);\n }, this);\n !exists && zrUtil.each(this.stateList, function (state) {\n (option[state] || (option[state] = {}))[visualType] = visualDefault.get(visualType, state === 'inRange' ? 'active' : 'inactive', isCategory);\n });\n }, this);\n\n function has(obj, state, visualType) {\n return obj && obj[state] && (zrUtil.isObject(obj[state]) ? obj[state].hasOwnProperty(visualType) : obj[state] === visualType // e.g., inRange: 'symbol'\n );\n }\n\n VisualMapModel.prototype.completeVisualOption.apply(this, arguments);\n },\n _resetSelected: function (newOption, isInit) {\n var thisOption = this.option;\n var pieceList = this._pieceList; // Selected do not merge but all override.\n\n var selected = (isInit ? thisOption : newOption).selected || {};\n thisOption.selected = selected; // Consider 'not specified' means true.\n\n zrUtil.each(pieceList, function (piece, index) {\n var key = this.getSelectedMapKey(piece);\n\n if (!selected.hasOwnProperty(key)) {\n selected[key] = true;\n }\n }, this);\n\n if (thisOption.selectedMode === 'single') {\n // Ensure there is only one selected.\n var hasSel = false;\n zrUtil.each(pieceList, function (piece, index) {\n var key = this.getSelectedMapKey(piece);\n\n if (selected[key]) {\n hasSel ? selected[key] = false : hasSel = true;\n }\n }, this);\n } // thisOption.selectedMode === 'multiple', default: all selected.\n\n },\n\n /**\n * @public\n */\n getSelectedMapKey: function (piece) {\n return this._mode === 'categories' ? piece.value + '' : piece.index + '';\n },\n\n /**\n * @public\n */\n getPieceList: function () {\n return this._pieceList;\n },\n\n /**\n * @private\n * @return {string}\n */\n _determineMode: function () {\n var option = this.option;\n return option.pieces && option.pieces.length > 0 ? 'pieces' : this.option.categories ? 'categories' : 'splitNumber';\n },\n\n /**\n * @public\n * @override\n */\n setSelected: function (selected) {\n this.option.selected = zrUtil.clone(selected);\n },\n\n /**\n * @public\n * @override\n */\n getValueState: function (value) {\n var index = VisualMapping.findPieceIndex(value, this._pieceList);\n return index != null ? this.option.selected[this.getSelectedMapKey(this._pieceList[index])] ? 'inRange' : 'outOfRange' : 'outOfRange';\n },\n\n /**\n * @public\n * @params {number} pieceIndex piece index in visualMapModel.getPieceList()\n * @return {Array.} [{seriesId, dataIndex: >}, ...]\n */\n findTargetDataIndices: function (pieceIndex) {\n var result = [];\n this.eachTargetSeries(function (seriesModel) {\n var dataIndices = [];\n var data = seriesModel.getData();\n data.each(this.getDataDimension(data), function (value, dataIndex) {\n // Should always base on model pieceList, because it is order sensitive.\n var pIdx = VisualMapping.findPieceIndex(value, this._pieceList);\n pIdx === pieceIndex && dataIndices.push(dataIndex);\n }, this);\n result.push({\n seriesId: seriesModel.id,\n dataIndex: dataIndices\n });\n }, this);\n return result;\n },\n\n /**\n * @private\n * @param {Object} piece piece.value or piece.interval is required.\n * @return {number} Can be Infinity or -Infinity\n */\n getRepresentValue: function (piece) {\n var representValue;\n\n if (this.isCategory()) {\n representValue = piece.value;\n } else {\n if (piece.value != null) {\n representValue = piece.value;\n } else {\n var pieceInterval = piece.interval || [];\n representValue = pieceInterval[0] === -Infinity && pieceInterval[1] === Infinity ? 0 : (pieceInterval[0] + pieceInterval[1]) / 2;\n }\n }\n\n return representValue;\n },\n getVisualMeta: function (getColorVisual) {\n // Do not support category. (category axis is ordinal, numerical)\n if (this.isCategory()) {\n return;\n }\n\n var stops = [];\n var outerColors = [];\n var visualMapModel = this;\n\n function setStop(interval, valueState) {\n var representValue = visualMapModel.getRepresentValue({\n interval: interval\n });\n\n if (!valueState) {\n valueState = visualMapModel.getValueState(representValue);\n }\n\n var color = getColorVisual(representValue, valueState);\n\n if (interval[0] === -Infinity) {\n outerColors[0] = color;\n } else if (interval[1] === Infinity) {\n outerColors[1] = color;\n } else {\n stops.push({\n value: interval[0],\n color: color\n }, {\n value: interval[1],\n color: color\n });\n }\n } // Suplement\n\n\n var pieceList = this._pieceList.slice();\n\n if (!pieceList.length) {\n pieceList.push({\n interval: [-Infinity, Infinity]\n });\n } else {\n var edge = pieceList[0].interval[0];\n edge !== -Infinity && pieceList.unshift({\n interval: [-Infinity, edge]\n });\n edge = pieceList[pieceList.length - 1].interval[1];\n edge !== Infinity && pieceList.push({\n interval: [edge, Infinity]\n });\n }\n\n var curr = -Infinity;\n zrUtil.each(pieceList, function (piece) {\n var interval = piece.interval;\n\n if (interval) {\n // Fulfill gap.\n interval[0] > curr && setStop([curr, interval[0]], 'outOfRange');\n setStop(interval.slice());\n curr = interval[1];\n }\n }, this);\n return {\n stops: stops,\n outerColors: outerColors\n };\n }\n});\n/**\n * Key is this._mode\n * @type {Object}\n * @this {module:echarts/component/viusalMap/PiecewiseMode}\n */\n\nvar resetMethods = {\n splitNumber: function () {\n var thisOption = this.option;\n var pieceList = this._pieceList;\n var precision = Math.min(thisOption.precision, 20);\n var dataExtent = this.getExtent();\n var splitNumber = thisOption.splitNumber;\n splitNumber = Math.max(parseInt(splitNumber, 10), 1);\n thisOption.splitNumber = splitNumber;\n var splitStep = (dataExtent[1] - dataExtent[0]) / splitNumber; // Precision auto-adaption\n\n while (+splitStep.toFixed(precision) !== splitStep && precision < 5) {\n precision++;\n }\n\n thisOption.precision = precision;\n splitStep = +splitStep.toFixed(precision);\n\n if (thisOption.minOpen) {\n pieceList.push({\n interval: [-Infinity, dataExtent[0]],\n close: [0, 0]\n });\n }\n\n for (var index = 0, curr = dataExtent[0]; index < splitNumber; curr += splitStep, index++) {\n var max = index === splitNumber - 1 ? dataExtent[1] : curr + splitStep;\n pieceList.push({\n interval: [curr, max],\n close: [1, 1]\n });\n }\n\n if (thisOption.maxOpen) {\n pieceList.push({\n interval: [dataExtent[1], Infinity],\n close: [0, 0]\n });\n }\n\n reformIntervals(pieceList);\n zrUtil.each(pieceList, function (piece, index) {\n piece.index = index;\n piece.text = this.formatValueText(piece.interval);\n }, this);\n },\n categories: function () {\n var thisOption = this.option;\n zrUtil.each(thisOption.categories, function (cate) {\n // FIXME category模式也使用pieceList,但在visualMapping中不是使用pieceList。\n // 是否改一致。\n this._pieceList.push({\n text: this.formatValueText(cate, true),\n value: cate\n });\n }, this); // See \"Order Rule\".\n\n normalizeReverse(thisOption, this._pieceList);\n },\n pieces: function () {\n var thisOption = this.option;\n var pieceList = this._pieceList;\n zrUtil.each(thisOption.pieces, function (pieceListItem, index) {\n if (!zrUtil.isObject(pieceListItem)) {\n pieceListItem = {\n value: pieceListItem\n };\n }\n\n var item = {\n text: '',\n index: index\n };\n\n if (pieceListItem.label != null) {\n item.text = pieceListItem.label;\n }\n\n if (pieceListItem.hasOwnProperty('value')) {\n var value = item.value = pieceListItem.value;\n item.interval = [value, value];\n item.close = [1, 1];\n } else {\n // `min` `max` is legacy option.\n // `lt` `gt` `lte` `gte` is recommanded.\n var interval = item.interval = [];\n var close = item.close = [0, 0];\n var closeList = [1, 0, 1];\n var infinityList = [-Infinity, Infinity];\n var useMinMax = [];\n\n for (var lg = 0; lg < 2; lg++) {\n var names = [['gte', 'gt', 'min'], ['lte', 'lt', 'max']][lg];\n\n for (var i = 0; i < 3 && interval[lg] == null; i++) {\n interval[lg] = pieceListItem[names[i]];\n close[lg] = closeList[i];\n useMinMax[lg] = i === 2;\n }\n\n interval[lg] == null && (interval[lg] = infinityList[lg]);\n }\n\n useMinMax[0] && interval[1] === Infinity && (close[0] = 0);\n useMinMax[1] && interval[0] === -Infinity && (close[1] = 0);\n\n if (interval[0] === interval[1] && close[0] && close[1]) {\n // Consider: [{min: 5, max: 5, visual: {...}}, {min: 0, max: 5}],\n // we use value to lift the priority when min === max\n item.value = interval[0];\n }\n }\n\n item.visual = VisualMapping.retrieveVisuals(pieceListItem);\n pieceList.push(item);\n }, this); // See \"Order Rule\".\n\n normalizeReverse(thisOption, pieceList); // Only pieces\n\n reformIntervals(pieceList);\n zrUtil.each(pieceList, function (piece) {\n var close = piece.close;\n var edgeSymbols = [['<', '≤'][close[1]], ['>', '≥'][close[0]]];\n piece.text = piece.text || this.formatValueText(piece.value != null ? piece.value : piece.interval, false, edgeSymbols);\n }, this);\n }\n};\n\nfunction normalizeReverse(thisOption, pieceList) {\n var inverse = thisOption.inverse;\n\n if (thisOption.orient === 'vertical' ? !inverse : inverse) {\n pieceList.reverse();\n }\n}\n\nvar _default = PiecewiseModel;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/visualMap/PiecewiseModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/visualMap/PiecewiseView.js": +/*!***********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/visualMap/PiecewiseView.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar VisualMapView = __webpack_require__(/*! ./VisualMapView */ \"./node_modules/echarts/lib/component/visualMap/VisualMapView.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar _symbol = __webpack_require__(/*! ../../util/symbol */ \"./node_modules/echarts/lib/util/symbol.js\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar layout = __webpack_require__(/*! ../../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar helper = __webpack_require__(/*! ./helper */ \"./node_modules/echarts/lib/component/visualMap/helper.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PiecewiseVisualMapView = VisualMapView.extend({\n type: 'visualMap.piecewise',\n\n /**\n * @protected\n * @override\n */\n doRender: function () {\n var thisGroup = this.group;\n thisGroup.removeAll();\n var visualMapModel = this.visualMapModel;\n var textGap = visualMapModel.get('textGap');\n var textStyleModel = visualMapModel.textStyleModel;\n var textFont = textStyleModel.getFont();\n var textFill = textStyleModel.getTextColor();\n\n var itemAlign = this._getItemAlign();\n\n var itemSize = visualMapModel.itemSize;\n\n var viewData = this._getViewData();\n\n var endsText = viewData.endsText;\n var showLabel = zrUtil.retrieve(visualMapModel.get('showLabel', true), !endsText);\n endsText && this._renderEndsText(thisGroup, endsText[0], itemSize, showLabel, itemAlign);\n zrUtil.each(viewData.viewPieceList, renderItem, this);\n endsText && this._renderEndsText(thisGroup, endsText[1], itemSize, showLabel, itemAlign);\n layout.box(visualMapModel.get('orient'), thisGroup, visualMapModel.get('itemGap'));\n this.renderBackground(thisGroup);\n this.positionGroup(thisGroup);\n\n function renderItem(item) {\n var piece = item.piece;\n var itemGroup = new graphic.Group();\n itemGroup.onclick = zrUtil.bind(this._onItemClick, this, piece);\n\n this._enableHoverLink(itemGroup, item.indexInModelPieceList);\n\n var representValue = visualMapModel.getRepresentValue(piece);\n\n this._createItemSymbol(itemGroup, representValue, [0, 0, itemSize[0], itemSize[1]]);\n\n if (showLabel) {\n var visualState = this.visualMapModel.getValueState(representValue);\n itemGroup.add(new graphic.Text({\n style: {\n x: itemAlign === 'right' ? -textGap : itemSize[0] + textGap,\n y: itemSize[1] / 2,\n text: piece.text,\n textVerticalAlign: 'middle',\n textAlign: itemAlign,\n textFont: textFont,\n textFill: textFill,\n opacity: visualState === 'outOfRange' ? 0.5 : 1\n }\n }));\n }\n\n thisGroup.add(itemGroup);\n }\n },\n\n /**\n * @private\n */\n _enableHoverLink: function (itemGroup, pieceIndex) {\n itemGroup.on('mouseover', zrUtil.bind(onHoverLink, this, 'highlight')).on('mouseout', zrUtil.bind(onHoverLink, this, 'downplay'));\n\n function onHoverLink(method) {\n var visualMapModel = this.visualMapModel;\n visualMapModel.option.hoverLink && this.api.dispatchAction({\n type: method,\n batch: helper.makeHighDownBatch(visualMapModel.findTargetDataIndices(pieceIndex), visualMapModel)\n });\n }\n },\n\n /**\n * @private\n */\n _getItemAlign: function () {\n var visualMapModel = this.visualMapModel;\n var modelOption = visualMapModel.option;\n\n if (modelOption.orient === 'vertical') {\n return helper.getItemAlign(visualMapModel, this.api, visualMapModel.itemSize);\n } else {\n // horizontal, most case left unless specifying right.\n var align = modelOption.align;\n\n if (!align || align === 'auto') {\n align = 'left';\n }\n\n return align;\n }\n },\n\n /**\n * @private\n */\n _renderEndsText: function (group, text, itemSize, showLabel, itemAlign) {\n if (!text) {\n return;\n }\n\n var itemGroup = new graphic.Group();\n var textStyleModel = this.visualMapModel.textStyleModel;\n itemGroup.add(new graphic.Text({\n style: {\n x: showLabel ? itemAlign === 'right' ? itemSize[0] : 0 : itemSize[0] / 2,\n y: itemSize[1] / 2,\n textVerticalAlign: 'middle',\n textAlign: showLabel ? itemAlign : 'center',\n text: text,\n textFont: textStyleModel.getFont(),\n textFill: textStyleModel.getTextColor()\n }\n }));\n group.add(itemGroup);\n },\n\n /**\n * @private\n * @return {Object} {peiceList, endsText} The order is the same as screen pixel order.\n */\n _getViewData: function () {\n var visualMapModel = this.visualMapModel;\n var viewPieceList = zrUtil.map(visualMapModel.getPieceList(), function (piece, index) {\n return {\n piece: piece,\n indexInModelPieceList: index\n };\n });\n var endsText = visualMapModel.get('text'); // Consider orient and inverse.\n\n var orient = visualMapModel.get('orient');\n var inverse = visualMapModel.get('inverse'); // Order of model pieceList is always [low, ..., high]\n\n if (orient === 'horizontal' ? inverse : !inverse) {\n viewPieceList.reverse();\n } // Origin order of endsText is [high, low]\n else if (endsText) {\n endsText = endsText.slice().reverse();\n }\n\n return {\n viewPieceList: viewPieceList,\n endsText: endsText\n };\n },\n\n /**\n * @private\n */\n _createItemSymbol: function (group, representValue, shapeParam) {\n group.add(createSymbol(this.getControllerVisual(representValue, 'symbol'), shapeParam[0], shapeParam[1], shapeParam[2], shapeParam[3], this.getControllerVisual(representValue, 'color')));\n },\n\n /**\n * @private\n */\n _onItemClick: function (piece) {\n var visualMapModel = this.visualMapModel;\n var option = visualMapModel.option;\n var selected = zrUtil.clone(option.selected);\n var newKey = visualMapModel.getSelectedMapKey(piece);\n\n if (option.selectedMode === 'single') {\n selected[newKey] = true;\n zrUtil.each(selected, function (o, key) {\n selected[key] = key === newKey;\n });\n } else {\n selected[newKey] = !selected[newKey];\n }\n\n this.api.dispatchAction({\n type: 'selectDataRange',\n from: this.uid,\n visualMapId: this.visualMapModel.id,\n selected: selected\n });\n }\n});\nvar _default = PiecewiseVisualMapView;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/visualMap/PiecewiseView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/visualMap/VisualMapModel.js": +/*!************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/visualMap/VisualMapModel.js ***! + \************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar env = __webpack_require__(/*! zrender/lib/core/env */ \"./node_modules/zrender/lib/core/env.js\");\n\nvar visualDefault = __webpack_require__(/*! ../../visual/visualDefault */ \"./node_modules/echarts/lib/visual/visualDefault.js\");\n\nvar VisualMapping = __webpack_require__(/*! ../../visual/VisualMapping */ \"./node_modules/echarts/lib/visual/VisualMapping.js\");\n\nvar visualSolution = __webpack_require__(/*! ../../visual/visualSolution */ \"./node_modules/echarts/lib/visual/visualSolution.js\");\n\nvar modelUtil = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar numberUtil = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar mapVisual = VisualMapping.mapVisual;\nvar eachVisual = VisualMapping.eachVisual;\nvar isArray = zrUtil.isArray;\nvar each = zrUtil.each;\nvar asc = numberUtil.asc;\nvar linearMap = numberUtil.linearMap;\nvar noop = zrUtil.noop;\nvar VisualMapModel = echarts.extendComponentModel({\n type: 'visualMap',\n dependencies: ['series'],\n\n /**\n * @readOnly\n * @type {Array.}\n */\n stateList: ['inRange', 'outOfRange'],\n\n /**\n * @readOnly\n * @type {Array.}\n */\n replacableOptionKeys: ['inRange', 'outOfRange', 'target', 'controller', 'color'],\n\n /**\n * [lowerBound, upperBound]\n *\n * @readOnly\n * @type {Array.}\n */\n dataBound: [-Infinity, Infinity],\n\n /**\n * @readOnly\n * @type {string|Object}\n */\n layoutMode: {\n type: 'box',\n ignoreSize: true\n },\n\n /**\n * @protected\n */\n defaultOption: {\n show: true,\n zlevel: 0,\n z: 4,\n seriesIndex: 'all',\n // 'all' or null/undefined: all series.\n // A number or an array of number: the specified series.\n // set min: 0, max: 200, only for campatible with ec2.\n // In fact min max should not have default value.\n min: 0,\n // min value, must specified if pieces is not specified.\n max: 200,\n // max value, must specified if pieces is not specified.\n dimension: null,\n inRange: null,\n // 'color', 'colorHue', 'colorSaturation', 'colorLightness', 'colorAlpha',\n // 'symbol', 'symbolSize'\n outOfRange: null,\n // 'color', 'colorHue', 'colorSaturation',\n // 'colorLightness', 'colorAlpha',\n // 'symbol', 'symbolSize'\n left: 0,\n // 'center' ¦ 'left' ¦ 'right' ¦ {number} (px)\n right: null,\n // The same as left.\n top: null,\n // 'top' ¦ 'bottom' ¦ 'center' ¦ {number} (px)\n bottom: 0,\n // The same as top.\n itemWidth: null,\n itemHeight: null,\n inverse: false,\n orient: 'vertical',\n // 'horizontal' ¦ 'vertical'\n backgroundColor: 'rgba(0,0,0,0)',\n borderColor: '#ccc',\n // 值域边框颜色\n contentColor: '#5793f3',\n inactiveColor: '#aaa',\n borderWidth: 0,\n // 值域边框线宽,单位px,默认为0(无边框)\n padding: 5,\n // 值域内边距,单位px,默认各方向内边距为5,\n // 接受数组分别设定上右下左边距,同css\n textGap: 10,\n //\n precision: 0,\n // 小数精度,默认为0,无小数点\n color: null,\n //颜色(deprecated,兼容ec2,顺序同pieces,不同于inRange/outOfRange)\n formatter: null,\n text: null,\n // 文本,如['高', '低'],兼容ec2,text[0]对应高值,text[1]对应低值\n textStyle: {\n color: '#333' // 值域文字颜色\n\n }\n },\n\n /**\n * @protected\n */\n init: function (option, parentModel, ecModel) {\n /**\n * @private\n * @type {Array.}\n */\n this._dataExtent;\n /**\n * @readOnly\n */\n\n this.targetVisuals = {};\n /**\n * @readOnly\n */\n\n this.controllerVisuals = {};\n /**\n * @readOnly\n */\n\n this.textStyleModel;\n /**\n * [width, height]\n * @readOnly\n * @type {Array.}\n */\n\n this.itemSize;\n this.mergeDefaultAndTheme(option, ecModel);\n },\n\n /**\n * @protected\n */\n optionUpdated: function (newOption, isInit) {\n var thisOption = this.option; // FIXME\n // necessary?\n // Disable realtime view update if canvas is not supported.\n\n if (!env.canvasSupported) {\n thisOption.realtime = false;\n }\n\n !isInit && visualSolution.replaceVisualOption(thisOption, newOption, this.replacableOptionKeys);\n this.textStyleModel = this.getModel('textStyle');\n this.resetItemSize();\n this.completeVisualOption();\n },\n\n /**\n * @protected\n */\n resetVisual: function (supplementVisualOption) {\n var stateList = this.stateList;\n supplementVisualOption = zrUtil.bind(supplementVisualOption, this);\n this.controllerVisuals = visualSolution.createVisualMappings(this.option.controller, stateList, supplementVisualOption);\n this.targetVisuals = visualSolution.createVisualMappings(this.option.target, stateList, supplementVisualOption);\n },\n\n /**\n * @protected\n * @return {Array.} An array of series indices.\n */\n getTargetSeriesIndices: function () {\n var optionSeriesIndex = this.option.seriesIndex;\n var seriesIndices = [];\n\n if (optionSeriesIndex == null || optionSeriesIndex === 'all') {\n this.ecModel.eachSeries(function (seriesModel, index) {\n seriesIndices.push(index);\n });\n } else {\n seriesIndices = modelUtil.normalizeToArray(optionSeriesIndex);\n }\n\n return seriesIndices;\n },\n\n /**\n * @public\n */\n eachTargetSeries: function (callback, context) {\n zrUtil.each(this.getTargetSeriesIndices(), function (seriesIndex) {\n callback.call(context, this.ecModel.getSeriesByIndex(seriesIndex));\n }, this);\n },\n\n /**\n * @pubilc\n */\n isTargetSeries: function (seriesModel) {\n var is = false;\n this.eachTargetSeries(function (model) {\n model === seriesModel && (is = true);\n });\n return is;\n },\n\n /**\n * @example\n * this.formatValueText(someVal); // format single numeric value to text.\n * this.formatValueText(someVal, true); // format single category value to text.\n * this.formatValueText([min, max]); // format numeric min-max to text.\n * this.formatValueText([this.dataBound[0], max]); // using data lower bound.\n * this.formatValueText([min, this.dataBound[1]]); // using data upper bound.\n *\n * @param {number|Array.} value Real value, or this.dataBound[0 or 1].\n * @param {boolean} [isCategory=false] Only available when value is number.\n * @param {Array.} edgeSymbols Open-close symbol when value is interval.\n * @return {string}\n * @protected\n */\n formatValueText: function (value, isCategory, edgeSymbols) {\n var option = this.option;\n var precision = option.precision;\n var dataBound = this.dataBound;\n var formatter = option.formatter;\n var isMinMax;\n var textValue;\n edgeSymbols = edgeSymbols || ['<', '>'];\n\n if (zrUtil.isArray(value)) {\n value = value.slice();\n isMinMax = true;\n }\n\n textValue = isCategory ? value : isMinMax ? [toFixed(value[0]), toFixed(value[1])] : toFixed(value);\n\n if (zrUtil.isString(formatter)) {\n return formatter.replace('{value}', isMinMax ? textValue[0] : textValue).replace('{value2}', isMinMax ? textValue[1] : textValue);\n } else if (zrUtil.isFunction(formatter)) {\n return isMinMax ? formatter(value[0], value[1]) : formatter(value);\n }\n\n if (isMinMax) {\n if (value[0] === dataBound[0]) {\n return edgeSymbols[0] + ' ' + textValue[1];\n } else if (value[1] === dataBound[1]) {\n return edgeSymbols[1] + ' ' + textValue[0];\n } else {\n return textValue[0] + ' - ' + textValue[1];\n }\n } else {\n // Format single value (includes category case).\n return textValue;\n }\n\n function toFixed(val) {\n return val === dataBound[0] ? 'min' : val === dataBound[1] ? 'max' : (+val).toFixed(Math.min(precision, 20));\n }\n },\n\n /**\n * @protected\n */\n resetExtent: function () {\n var thisOption = this.option; // Can not calculate data extent by data here.\n // Because series and data may be modified in processing stage.\n // So we do not support the feature \"auto min/max\".\n\n var extent = asc([thisOption.min, thisOption.max]);\n this._dataExtent = extent;\n },\n\n /**\n * @public\n * @param {module:echarts/data/List} list\n * @return {string} Concrete dimention. If return null/undefined,\n * no dimension used.\n */\n getDataDimension: function (list) {\n var optDim = this.option.dimension;\n var listDimensions = list.dimensions;\n\n if (optDim == null && !listDimensions.length) {\n return;\n }\n\n if (optDim != null) {\n return list.getDimension(optDim);\n }\n\n var dimNames = list.dimensions;\n\n for (var i = dimNames.length - 1; i >= 0; i--) {\n var dimName = dimNames[i];\n var dimInfo = list.getDimensionInfo(dimName);\n\n if (!dimInfo.isCalculationCoord) {\n return dimName;\n }\n }\n },\n\n /**\n * @public\n * @override\n */\n getExtent: function () {\n return this._dataExtent.slice();\n },\n\n /**\n * @protected\n */\n completeVisualOption: function () {\n var ecModel = this.ecModel;\n var thisOption = this.option;\n var base = {\n inRange: thisOption.inRange,\n outOfRange: thisOption.outOfRange\n };\n var target = thisOption.target || (thisOption.target = {});\n var controller = thisOption.controller || (thisOption.controller = {});\n zrUtil.merge(target, base); // Do not override\n\n zrUtil.merge(controller, base); // Do not override\n\n var isCategory = this.isCategory();\n completeSingle.call(this, target);\n completeSingle.call(this, controller);\n completeInactive.call(this, target, 'inRange', 'outOfRange'); // completeInactive.call(this, target, 'outOfRange', 'inRange');\n\n completeController.call(this, controller);\n\n function completeSingle(base) {\n // Compatible with ec2 dataRange.color.\n // The mapping order of dataRange.color is: [high value, ..., low value]\n // whereas inRange.color and outOfRange.color is [low value, ..., high value]\n // Notice: ec2 has no inverse.\n if (isArray(thisOption.color) // If there has been inRange: {symbol: ...}, adding color is a mistake.\n // So adding color only when no inRange defined.\n && !base.inRange) {\n base.inRange = {\n color: thisOption.color.slice().reverse()\n };\n } // Compatible with previous logic, always give a defautl color, otherwise\n // simple config with no inRange and outOfRange will not work.\n // Originally we use visualMap.color as the default color, but setOption at\n // the second time the default color will be erased. So we change to use\n // constant DEFAULT_COLOR.\n // If user do not want the default color, set inRange: {color: null}.\n\n\n base.inRange = base.inRange || {\n color: ecModel.get('gradientColor')\n }; // If using shortcut like: {inRange: 'symbol'}, complete default value.\n\n each(this.stateList, function (state) {\n var visualType = base[state];\n\n if (zrUtil.isString(visualType)) {\n var defa = visualDefault.get(visualType, 'active', isCategory);\n\n if (defa) {\n base[state] = {};\n base[state][visualType] = defa;\n } else {\n // Mark as not specified.\n delete base[state];\n }\n }\n }, this);\n }\n\n function completeInactive(base, stateExist, stateAbsent) {\n var optExist = base[stateExist];\n var optAbsent = base[stateAbsent];\n\n if (optExist && !optAbsent) {\n optAbsent = base[stateAbsent] = {};\n each(optExist, function (visualData, visualType) {\n if (!VisualMapping.isValidType(visualType)) {\n return;\n }\n\n var defa = visualDefault.get(visualType, 'inactive', isCategory);\n\n if (defa != null) {\n optAbsent[visualType] = defa; // Compatibable with ec2:\n // Only inactive color to rgba(0,0,0,0) can not\n // make label transparent, so use opacity also.\n\n if (visualType === 'color' && !optAbsent.hasOwnProperty('opacity') && !optAbsent.hasOwnProperty('colorAlpha')) {\n optAbsent.opacity = [0, 0];\n }\n }\n });\n }\n }\n\n function completeController(controller) {\n var symbolExists = (controller.inRange || {}).symbol || (controller.outOfRange || {}).symbol;\n var symbolSizeExists = (controller.inRange || {}).symbolSize || (controller.outOfRange || {}).symbolSize;\n var inactiveColor = this.get('inactiveColor');\n each(this.stateList, function (state) {\n var itemSize = this.itemSize;\n var visuals = controller[state]; // Set inactive color for controller if no other color\n // attr (like colorAlpha) specified.\n\n if (!visuals) {\n visuals = controller[state] = {\n color: isCategory ? inactiveColor : [inactiveColor]\n };\n } // Consistent symbol and symbolSize if not specified.\n\n\n if (visuals.symbol == null) {\n visuals.symbol = symbolExists && zrUtil.clone(symbolExists) || (isCategory ? 'roundRect' : ['roundRect']);\n }\n\n if (visuals.symbolSize == null) {\n visuals.symbolSize = symbolSizeExists && zrUtil.clone(symbolSizeExists) || (isCategory ? itemSize[0] : [itemSize[0], itemSize[0]]);\n } // Filter square and none.\n\n\n visuals.symbol = mapVisual(visuals.symbol, function (symbol) {\n return symbol === 'none' || symbol === 'square' ? 'roundRect' : symbol;\n }); // Normalize symbolSize\n\n var symbolSize = visuals.symbolSize;\n\n if (symbolSize != null) {\n var max = -Infinity; // symbolSize can be object when categories defined.\n\n eachVisual(symbolSize, function (value) {\n value > max && (max = value);\n });\n visuals.symbolSize = mapVisual(symbolSize, function (value) {\n return linearMap(value, [0, max], [0, itemSize[0]], true);\n });\n }\n }, this);\n }\n },\n\n /**\n * @protected\n */\n resetItemSize: function () {\n this.itemSize = [parseFloat(this.get('itemWidth')), parseFloat(this.get('itemHeight'))];\n },\n\n /**\n * @public\n */\n isCategory: function () {\n return !!this.option.categories;\n },\n\n /**\n * @public\n * @abstract\n */\n setSelected: noop,\n\n /**\n * @public\n * @abstract\n * @param {*|module:echarts/data/List} valueOrData\n * @param {number} dataIndex\n * @return {string} state See this.stateList\n */\n getValueState: noop,\n\n /**\n * FIXME\n * Do not publish to thirt-part-dev temporarily\n * util the interface is stable. (Should it return\n * a function but not visual meta?)\n *\n * @pubilc\n * @abstract\n * @param {Function} getColorVisual\n * params: value, valueState\n * return: color\n * @return {Object} visualMeta\n * should includes {stops, outerColors}\n * outerColor means [colorBeyondMinValue, colorBeyondMaxValue]\n */\n getVisualMeta: noop\n});\nvar _default = VisualMapModel;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/visualMap/VisualMapModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/visualMap/VisualMapView.js": +/*!***********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/visualMap/VisualMapView.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar formatUtil = __webpack_require__(/*! ../../util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\nvar layout = __webpack_require__(/*! ../../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar VisualMapping = __webpack_require__(/*! ../../visual/VisualMapping */ \"./node_modules/echarts/lib/visual/VisualMapping.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendComponentView({\n type: 'visualMap',\n\n /**\n * @readOnly\n * @type {Object}\n */\n autoPositionValues: {\n left: 1,\n right: 1,\n top: 1,\n bottom: 1\n },\n init: function (ecModel, api) {\n /**\n * @readOnly\n * @type {module:echarts/model/Global}\n */\n this.ecModel = ecModel;\n /**\n * @readOnly\n * @type {module:echarts/ExtensionAPI}\n */\n\n this.api = api;\n /**\n * @readOnly\n * @type {module:echarts/component/visualMap/visualMapModel}\n */\n\n this.visualMapModel;\n },\n\n /**\n * @protected\n */\n render: function (visualMapModel, ecModel, api, payload) {\n this.visualMapModel = visualMapModel;\n\n if (visualMapModel.get('show') === false) {\n this.group.removeAll();\n return;\n }\n\n this.doRender.apply(this, arguments);\n },\n\n /**\n * @protected\n */\n renderBackground: function (group) {\n var visualMapModel = this.visualMapModel;\n var padding = formatUtil.normalizeCssArray(visualMapModel.get('padding') || 0);\n var rect = group.getBoundingRect();\n group.add(new graphic.Rect({\n z2: -1,\n // Lay background rect on the lowest layer.\n silent: true,\n shape: {\n x: rect.x - padding[3],\n y: rect.y - padding[0],\n width: rect.width + padding[3] + padding[1],\n height: rect.height + padding[0] + padding[2]\n },\n style: {\n fill: visualMapModel.get('backgroundColor'),\n stroke: visualMapModel.get('borderColor'),\n lineWidth: visualMapModel.get('borderWidth')\n }\n }));\n },\n\n /**\n * @protected\n * @param {number} targetValue can be Infinity or -Infinity\n * @param {string=} visualCluster Only can be 'color' 'opacity' 'symbol' 'symbolSize'\n * @param {Object} [opts]\n * @param {string=} [opts.forceState] Specify state, instead of using getValueState method.\n * @param {string=} [opts.convertOpacityToAlpha=false] For color gradient in controller widget.\n * @return {*} Visual value.\n */\n getControllerVisual: function (targetValue, visualCluster, opts) {\n opts = opts || {};\n var forceState = opts.forceState;\n var visualMapModel = this.visualMapModel;\n var visualObj = {}; // Default values.\n\n if (visualCluster === 'symbol') {\n visualObj.symbol = visualMapModel.get('itemSymbol');\n }\n\n if (visualCluster === 'color') {\n var defaultColor = visualMapModel.get('contentColor');\n visualObj.color = defaultColor;\n }\n\n function getter(key) {\n return visualObj[key];\n }\n\n function setter(key, value) {\n visualObj[key] = value;\n }\n\n var mappings = visualMapModel.controllerVisuals[forceState || visualMapModel.getValueState(targetValue)];\n var visualTypes = VisualMapping.prepareVisualTypes(mappings);\n zrUtil.each(visualTypes, function (type) {\n var visualMapping = mappings[type];\n\n if (opts.convertOpacityToAlpha && type === 'opacity') {\n type = 'colorAlpha';\n visualMapping = mappings.__alphaForOpacity;\n }\n\n if (VisualMapping.dependsOn(type, visualCluster)) {\n visualMapping && visualMapping.applyVisual(targetValue, getter, setter);\n }\n });\n return visualObj[visualCluster];\n },\n\n /**\n * @protected\n */\n positionGroup: function (group) {\n var model = this.visualMapModel;\n var api = this.api;\n layout.positionElement(group, model.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n },\n\n /**\n * @protected\n * @abstract\n */\n doRender: zrUtil.noop\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/visualMap/VisualMapView.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/visualMap/helper.js": +/*!****************************************************************!*\ + !*** ./node_modules/echarts/lib/component/visualMap/helper.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar _layout = __webpack_require__(/*! ../../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar getLayoutRect = _layout.getLayoutRect;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {module:echarts/component/visualMap/VisualMapModel} visualMapModel\\\n * @param {module:echarts/ExtensionAPI} api\n * @param {Array.} itemSize always [short, long]\n * @return {string} 'left' or 'right' or 'top' or 'bottom'\n */\nfunction getItemAlign(visualMapModel, api, itemSize) {\n var modelOption = visualMapModel.option;\n var itemAlign = modelOption.align;\n\n if (itemAlign != null && itemAlign !== 'auto') {\n return itemAlign;\n } // Auto decision align.\n\n\n var ecSize = {\n width: api.getWidth(),\n height: api.getHeight()\n };\n var realIndex = modelOption.orient === 'horizontal' ? 1 : 0;\n var paramsSet = [['left', 'right', 'width'], ['top', 'bottom', 'height']];\n var reals = paramsSet[realIndex];\n var fakeValue = [0, null, 10];\n var layoutInput = {};\n\n for (var i = 0; i < 3; i++) {\n layoutInput[paramsSet[1 - realIndex][i]] = fakeValue[i];\n layoutInput[reals[i]] = i === 2 ? itemSize[0] : modelOption[reals[i]];\n }\n\n var rParam = [['x', 'width', 3], ['y', 'height', 0]][realIndex];\n var rect = getLayoutRect(layoutInput, ecSize, modelOption.padding);\n return reals[(rect.margin[rParam[2]] || 0) + rect[rParam[0]] + rect[rParam[1]] * 0.5 < ecSize[rParam[1]] * 0.5 ? 0 : 1];\n}\n/**\n * Prepare dataIndex for outside usage, where dataIndex means rawIndex, and\n * dataIndexInside means filtered index.\n */\n\n\nfunction makeHighDownBatch(batch, visualMapModel) {\n zrUtil.each(batch || [], function (batchItem) {\n if (batchItem.dataIndex != null) {\n batchItem.dataIndexInside = batchItem.dataIndex;\n batchItem.dataIndex = null;\n }\n\n batchItem.highlightKey = 'visualMap' + (visualMapModel ? visualMapModel.componentIndex : '');\n });\n return batch;\n}\n\nexports.getItemAlign = getItemAlign;\nexports.makeHighDownBatch = makeHighDownBatch;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/visualMap/helper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/visualMap/preprocessor.js": +/*!**********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/visualMap/preprocessor.js ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\n\nfunction _default(option) {\n var visualMap = option && option.visualMap;\n\n if (!zrUtil.isArray(visualMap)) {\n visualMap = visualMap ? [visualMap] : [];\n }\n\n each(visualMap, function (opt) {\n if (!opt) {\n return;\n } // rename splitList to pieces\n\n\n if (has(opt, 'splitList') && !has(opt, 'pieces')) {\n opt.pieces = opt.splitList;\n delete opt.splitList;\n }\n\n var pieces = opt.pieces;\n\n if (pieces && zrUtil.isArray(pieces)) {\n each(pieces, function (piece) {\n if (zrUtil.isObject(piece)) {\n if (has(piece, 'start') && !has(piece, 'min')) {\n piece.min = piece.start;\n }\n\n if (has(piece, 'end') && !has(piece, 'max')) {\n piece.max = piece.end;\n }\n }\n });\n }\n });\n}\n\nfunction has(obj, name) {\n return obj && obj.hasOwnProperty && obj.hasOwnProperty(name);\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/visualMap/preprocessor.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/visualMap/typeDefaulter.js": +/*!***********************************************************************!*\ + !*** ./node_modules/echarts/lib/component/visualMap/typeDefaulter.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Component = __webpack_require__(/*! ../../model/Component */ \"./node_modules/echarts/lib/model/Component.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nComponent.registerSubTypeDefaulter('visualMap', function (option) {\n // Compatible with ec2, when splitNumber === 0, continuous visualMap will be used.\n return !option.categories && (!(option.pieces ? option.pieces.length > 0 : option.splitNumber > 0) || option.calculable) ? 'continuous' : 'piecewise';\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/visualMap/typeDefaulter.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/visualMap/visualEncoding.js": +/*!************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/visualMap/visualEncoding.js ***! + \************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar visualSolution = __webpack_require__(/*! ../../visual/visualSolution */ \"./node_modules/echarts/lib/visual/visualSolution.js\");\n\nvar VisualMapping = __webpack_require__(/*! ../../visual/VisualMapping */ \"./node_modules/echarts/lib/visual/VisualMapping.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar VISUAL_PRIORITY = echarts.PRIORITY.VISUAL.COMPONENT;\necharts.registerVisual(VISUAL_PRIORITY, {\n createOnAllSeries: true,\n reset: function (seriesModel, ecModel) {\n var resetDefines = [];\n ecModel.eachComponent('visualMap', function (visualMapModel) {\n var pipelineContext = seriesModel.pipelineContext;\n\n if (!visualMapModel.isTargetSeries(seriesModel) || pipelineContext && pipelineContext.large) {\n return;\n }\n\n resetDefines.push(visualSolution.incrementalApplyVisual(visualMapModel.stateList, visualMapModel.targetVisuals, zrUtil.bind(visualMapModel.getValueState, visualMapModel), visualMapModel.getDataDimension(seriesModel.getData())));\n });\n return resetDefines;\n }\n}); // Only support color.\n\necharts.registerVisual(VISUAL_PRIORITY, {\n createOnAllSeries: true,\n reset: function (seriesModel, ecModel) {\n var data = seriesModel.getData();\n var visualMetaList = [];\n ecModel.eachComponent('visualMap', function (visualMapModel) {\n if (visualMapModel.isTargetSeries(seriesModel)) {\n var visualMeta = visualMapModel.getVisualMeta(zrUtil.bind(getColorVisual, null, seriesModel, visualMapModel)) || {\n stops: [],\n outerColors: []\n };\n var concreteDim = visualMapModel.getDataDimension(data);\n var dimInfo = data.getDimensionInfo(concreteDim);\n\n if (dimInfo != null) {\n // visualMeta.dimension should be dimension index, but not concrete dimension.\n visualMeta.dimension = dimInfo.index;\n visualMetaList.push(visualMeta);\n }\n }\n }); // console.log(JSON.stringify(visualMetaList.map(a => a.stops)));\n\n seriesModel.getData().setVisual('visualMeta', visualMetaList);\n }\n}); // FIXME\n// performance and export for heatmap?\n// value can be Infinity or -Infinity\n\nfunction getColorVisual(seriesModel, visualMapModel, value, valueState) {\n var mappings = visualMapModel.targetVisuals[valueState];\n var visualTypes = VisualMapping.prepareVisualTypes(mappings);\n var resultVisual = {\n color: seriesModel.getData().getVisual('color') // default color.\n\n };\n\n for (var i = 0, len = visualTypes.length; i < len; i++) {\n var type = visualTypes[i];\n var mapping = mappings[type === 'opacity' ? '__alphaForOpacity' : type];\n mapping && mapping.applyVisual(value, getVisual, setVisual);\n }\n\n return resultVisual.color;\n\n function getVisual(key) {\n return resultVisual[key];\n }\n\n function setVisual(key, value) {\n resultVisual[key] = value;\n }\n}\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/visualMap/visualEncoding.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/visualMap/visualMapAction.js": +/*!*************************************************************************!*\ + !*** ./node_modules/echarts/lib/component/visualMap/visualMapAction.js ***! + \*************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar actionInfo = {\n type: 'selectDataRange',\n event: 'dataRangeSelected',\n // FIXME use updateView appears wrong\n update: 'update'\n};\necharts.registerAction(actionInfo, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'visualMap',\n query: payload\n }, function (model) {\n model.setSelected(payload.selected);\n });\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/visualMap/visualMapAction.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/visualMapContinuous.js": +/*!*******************************************************************!*\ + !*** ./node_modules/echarts/lib/component/visualMapContinuous.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar preprocessor = __webpack_require__(/*! ./visualMap/preprocessor */ \"./node_modules/echarts/lib/component/visualMap/preprocessor.js\");\n\n__webpack_require__(/*! ./visualMap/typeDefaulter */ \"./node_modules/echarts/lib/component/visualMap/typeDefaulter.js\");\n\n__webpack_require__(/*! ./visualMap/visualEncoding */ \"./node_modules/echarts/lib/component/visualMap/visualEncoding.js\");\n\n__webpack_require__(/*! ./visualMap/ContinuousModel */ \"./node_modules/echarts/lib/component/visualMap/ContinuousModel.js\");\n\n__webpack_require__(/*! ./visualMap/ContinuousView */ \"./node_modules/echarts/lib/component/visualMap/ContinuousView.js\");\n\n__webpack_require__(/*! ./visualMap/visualMapAction */ \"./node_modules/echarts/lib/component/visualMap/visualMapAction.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * DataZoom component entry\n */\necharts.registerPreprocessor(preprocessor);\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/visualMapContinuous.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/component/visualMapPiecewise.js": +/*!******************************************************************!*\ + !*** ./node_modules/echarts/lib/component/visualMapPiecewise.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar preprocessor = __webpack_require__(/*! ./visualMap/preprocessor */ \"./node_modules/echarts/lib/component/visualMap/preprocessor.js\");\n\n__webpack_require__(/*! ./visualMap/typeDefaulter */ \"./node_modules/echarts/lib/component/visualMap/typeDefaulter.js\");\n\n__webpack_require__(/*! ./visualMap/visualEncoding */ \"./node_modules/echarts/lib/component/visualMap/visualEncoding.js\");\n\n__webpack_require__(/*! ./visualMap/PiecewiseModel */ \"./node_modules/echarts/lib/component/visualMap/PiecewiseModel.js\");\n\n__webpack_require__(/*! ./visualMap/PiecewiseView */ \"./node_modules/echarts/lib/component/visualMap/PiecewiseView.js\");\n\n__webpack_require__(/*! ./visualMap/visualMapAction */ \"./node_modules/echarts/lib/component/visualMap/visualMapAction.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * DataZoom component entry\n */\necharts.registerPreprocessor(preprocessor);\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/component/visualMapPiecewise.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/config.js": +/*!********************************************!*\ + !*** ./node_modules/echarts/lib/config.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("/* WEBPACK VAR INJECTION */(function(global) {\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// (1) The code `if (__DEV__) ...` can be removed by build tool.\n// (2) If intend to use `__DEV__`, this module should be imported. Use a global\n// variable `__DEV__` may cause that miss the declaration (see #6535), or the\n// declaration is behind of the using position (for example in `Model.extent`,\n// And tools like rollup can not analysis the dependency if not import).\nvar dev; // In browser\n\nif (typeof window !== 'undefined') {\n dev = window.__DEV__;\n} // In node\nelse if (typeof global !== 'undefined') {\n dev = global.__DEV__;\n }\n\nif (typeof dev === 'undefined') {\n dev = true;\n}\n\nvar __DEV__ = dev;\nexports.__DEV__ = __DEV__;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/config.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/Axis.js": +/*!************************************************!*\ + !*** ./node_modules/echarts/lib/coord/Axis.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar each = _util.each;\nvar map = _util.map;\n\nvar _number = __webpack_require__(/*! ../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar linearMap = _number.linearMap;\nvar getPixelPrecision = _number.getPixelPrecision;\nvar round = _number.round;\n\nvar _axisTickLabelBuilder = __webpack_require__(/*! ./axisTickLabelBuilder */ \"./node_modules/echarts/lib/coord/axisTickLabelBuilder.js\");\n\nvar createAxisTicks = _axisTickLabelBuilder.createAxisTicks;\nvar createAxisLabels = _axisTickLabelBuilder.createAxisLabels;\nvar calculateCategoryInterval = _axisTickLabelBuilder.calculateCategoryInterval;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar NORMALIZED_EXTENT = [0, 1];\n/**\n * Base class of Axis.\n * @constructor\n */\n\nvar Axis = function (dim, scale, extent) {\n /**\n * Axis dimension. Such as 'x', 'y', 'z', 'angle', 'radius'.\n * @type {string}\n */\n this.dim = dim;\n /**\n * Axis scale\n * @type {module:echarts/coord/scale/*}\n */\n\n this.scale = scale;\n /**\n * @type {Array.}\n * @private\n */\n\n this._extent = extent || [0, 0];\n /**\n * @type {boolean}\n */\n\n this.inverse = false;\n /**\n * Usually true when axis has a ordinal scale\n * @type {boolean}\n */\n\n this.onBand = false;\n};\n\nAxis.prototype = {\n constructor: Axis,\n\n /**\n * If axis extent contain given coord\n * @param {number} coord\n * @return {boolean}\n */\n contain: function (coord) {\n var extent = this._extent;\n var min = Math.min(extent[0], extent[1]);\n var max = Math.max(extent[0], extent[1]);\n return coord >= min && coord <= max;\n },\n\n /**\n * If axis extent contain given data\n * @param {number} data\n * @return {boolean}\n */\n containData: function (data) {\n return this.scale.contain(data);\n },\n\n /**\n * Get coord extent.\n * @return {Array.}\n */\n getExtent: function () {\n return this._extent.slice();\n },\n\n /**\n * Get precision used for formatting\n * @param {Array.} [dataExtent]\n * @return {number}\n */\n getPixelPrecision: function (dataExtent) {\n return getPixelPrecision(dataExtent || this.scale.getExtent(), this._extent);\n },\n\n /**\n * Set coord extent\n * @param {number} start\n * @param {number} end\n */\n setExtent: function (start, end) {\n var extent = this._extent;\n extent[0] = start;\n extent[1] = end;\n },\n\n /**\n * Convert data to coord. Data is the rank if it has an ordinal scale\n * @param {number} data\n * @param {boolean} clamp\n * @return {number}\n */\n dataToCoord: function (data, clamp) {\n var extent = this._extent;\n var scale = this.scale;\n data = scale.normalize(data);\n\n if (this.onBand && scale.type === 'ordinal') {\n extent = extent.slice();\n fixExtentWithBands(extent, scale.count());\n }\n\n return linearMap(data, NORMALIZED_EXTENT, extent, clamp);\n },\n\n /**\n * Convert coord to data. Data is the rank if it has an ordinal scale\n * @param {number} coord\n * @param {boolean} clamp\n * @return {number}\n */\n coordToData: function (coord, clamp) {\n var extent = this._extent;\n var scale = this.scale;\n\n if (this.onBand && scale.type === 'ordinal') {\n extent = extent.slice();\n fixExtentWithBands(extent, scale.count());\n }\n\n var t = linearMap(coord, extent, NORMALIZED_EXTENT, clamp);\n return this.scale.scale(t);\n },\n\n /**\n * Convert pixel point to data in axis\n * @param {Array.} point\n * @param {boolean} clamp\n * @return {number} data\n */\n pointToData: function (point, clamp) {// Should be implemented in derived class if necessary.\n },\n\n /**\n * Different from `zrUtil.map(axis.getTicks(), axis.dataToCoord, axis)`,\n * `axis.getTicksCoords` considers `onBand`, which is used by\n * `boundaryGap:true` of category axis and splitLine and splitArea.\n * @param {Object} [opt]\n * @param {Model} [opt.tickModel=axis.model.getModel('axisTick')]\n * @param {boolean} [opt.clamp] If `true`, the first and the last\n * tick must be at the axis end points. Otherwise, clip ticks\n * that outside the axis extent.\n * @return {Array.} [{\n * coord: ...,\n * tickValue: ...\n * }, ...]\n */\n getTicksCoords: function (opt) {\n opt = opt || {};\n var tickModel = opt.tickModel || this.getTickModel();\n var result = createAxisTicks(this, tickModel);\n var ticks = result.ticks;\n var ticksCoords = map(ticks, function (tickValue) {\n return {\n coord: this.dataToCoord(tickValue),\n tickValue: tickValue\n };\n }, this);\n var alignWithLabel = tickModel.get('alignWithLabel');\n fixOnBandTicksCoords(this, ticksCoords, alignWithLabel, opt.clamp);\n return ticksCoords;\n },\n\n /**\n * @return {Array.>} [{ coord: ..., tickValue: ...}]\n */\n getMinorTicksCoords: function () {\n if (this.scale.type === 'ordinal') {\n // Category axis doesn't support minor ticks\n return [];\n }\n\n var minorTickModel = this.model.getModel('minorTick');\n var splitNumber = minorTickModel.get('splitNumber'); // Protection.\n\n if (!(splitNumber > 0 && splitNumber < 100)) {\n splitNumber = 5;\n }\n\n var minorTicks = this.scale.getMinorTicks(splitNumber);\n var minorTicksCoords = map(minorTicks, function (minorTicksGroup) {\n return map(minorTicksGroup, function (minorTick) {\n return {\n coord: this.dataToCoord(minorTick),\n tickValue: minorTick\n };\n }, this);\n }, this);\n return minorTicksCoords;\n },\n\n /**\n * @return {Array.} [{\n * formattedLabel: string,\n * rawLabel: axis.scale.getLabel(tickValue)\n * tickValue: number\n * }, ...]\n */\n getViewLabels: function () {\n return createAxisLabels(this).labels;\n },\n\n /**\n * @return {module:echarts/coord/model/Model}\n */\n getLabelModel: function () {\n return this.model.getModel('axisLabel');\n },\n\n /**\n * Notice here we only get the default tick model. For splitLine\n * or splitArea, we should pass the splitLineModel or splitAreaModel\n * manually when calling `getTicksCoords`.\n * In GL, this method may be overrided to:\n * `axisModel.getModel('axisTick', grid3DModel.getModel('axisTick'));`\n * @return {module:echarts/coord/model/Model}\n */\n getTickModel: function () {\n return this.model.getModel('axisTick');\n },\n\n /**\n * Get width of band\n * @return {number}\n */\n getBandWidth: function () {\n var axisExtent = this._extent;\n var dataExtent = this.scale.getExtent();\n var len = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0); // Fix #2728, avoid NaN when only one data.\n\n len === 0 && (len = 1);\n var size = Math.abs(axisExtent[1] - axisExtent[0]);\n return Math.abs(size) / len;\n },\n\n /**\n * @abstract\n * @return {boolean} Is horizontal\n */\n isHorizontal: null,\n\n /**\n * @abstract\n * @return {number} Get axis rotate, by degree.\n */\n getRotate: null,\n\n /**\n * Only be called in category axis.\n * Can be overrided, consider other axes like in 3D.\n * @return {number} Auto interval for cateogry axis tick and label\n */\n calculateCategoryInterval: function () {\n return calculateCategoryInterval(this);\n }\n};\n\nfunction fixExtentWithBands(extent, nTick) {\n var size = extent[1] - extent[0];\n var len = nTick;\n var margin = size / len / 2;\n extent[0] += margin;\n extent[1] -= margin;\n} // If axis has labels [1, 2, 3, 4]. Bands on the axis are\n// |---1---|---2---|---3---|---4---|.\n// So the displayed ticks and splitLine/splitArea should between\n// each data item, otherwise cause misleading (e.g., split tow bars\n// of a single data item when there are two bar series).\n// Also consider if tickCategoryInterval > 0 and onBand, ticks and\n// splitLine/spliteArea should layout appropriately corresponding\n// to displayed labels. (So we should not use `getBandWidth` in this\n// case).\n\n\nfunction fixOnBandTicksCoords(axis, ticksCoords, alignWithLabel, clamp) {\n var ticksLen = ticksCoords.length;\n\n if (!axis.onBand || alignWithLabel || !ticksLen) {\n return;\n }\n\n var axisExtent = axis.getExtent();\n var last;\n var diffSize;\n\n if (ticksLen === 1) {\n ticksCoords[0].coord = axisExtent[0];\n last = ticksCoords[1] = {\n coord: axisExtent[0]\n };\n } else {\n var crossLen = ticksCoords[ticksLen - 1].tickValue - ticksCoords[0].tickValue;\n var shift = (ticksCoords[ticksLen - 1].coord - ticksCoords[0].coord) / crossLen;\n each(ticksCoords, function (ticksItem) {\n ticksItem.coord -= shift / 2;\n });\n var dataExtent = axis.scale.getExtent();\n diffSize = 1 + dataExtent[1] - ticksCoords[ticksLen - 1].tickValue;\n last = {\n coord: ticksCoords[ticksLen - 1].coord + shift * diffSize\n };\n ticksCoords.push(last);\n }\n\n var inverse = axisExtent[0] > axisExtent[1]; // Handling clamp.\n\n if (littleThan(ticksCoords[0].coord, axisExtent[0])) {\n clamp ? ticksCoords[0].coord = axisExtent[0] : ticksCoords.shift();\n }\n\n if (clamp && littleThan(axisExtent[0], ticksCoords[0].coord)) {\n ticksCoords.unshift({\n coord: axisExtent[0]\n });\n }\n\n if (littleThan(axisExtent[1], last.coord)) {\n clamp ? last.coord = axisExtent[1] : ticksCoords.pop();\n }\n\n if (clamp && littleThan(last.coord, axisExtent[1])) {\n ticksCoords.push({\n coord: axisExtent[1]\n });\n }\n\n function littleThan(a, b) {\n // Avoid rounding error cause calculated tick coord different with extent.\n // It may cause an extra unecessary tick added.\n a = round(a);\n b = round(b);\n return inverse ? a > b : a < b;\n }\n}\n\nvar _default = Axis;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/Axis.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/View.js": +/*!************************************************!*\ + !*** ./node_modules/echarts/lib/coord/View.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar vector = __webpack_require__(/*! zrender/lib/core/vector */ \"./node_modules/zrender/lib/core/vector.js\");\n\nvar matrix = __webpack_require__(/*! zrender/lib/core/matrix */ \"./node_modules/zrender/lib/core/matrix.js\");\n\nvar BoundingRect = __webpack_require__(/*! zrender/lib/core/BoundingRect */ \"./node_modules/zrender/lib/core/BoundingRect.js\");\n\nvar Transformable = __webpack_require__(/*! zrender/lib/mixin/Transformable */ \"./node_modules/zrender/lib/mixin/Transformable.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Simple view coordinate system\n * Mapping given x, y to transformd view x, y\n */\nvar v2ApplyTransform = vector.applyTransform; // Dummy transform node\n\nfunction TransformDummy() {\n Transformable.call(this);\n}\n\nzrUtil.mixin(TransformDummy, Transformable);\n\nfunction View(name) {\n /**\n * @type {string}\n */\n this.name = name;\n /**\n * @type {Object}\n */\n\n this.zoomLimit;\n Transformable.call(this);\n this._roamTransformable = new TransformDummy();\n this._rawTransformable = new TransformDummy();\n this._center;\n this._zoom;\n}\n\nView.prototype = {\n constructor: View,\n type: 'view',\n\n /**\n * @param {Array.}\n * @readOnly\n */\n dimensions: ['x', 'y'],\n\n /**\n * Set bounding rect\n * @param {number} x\n * @param {number} y\n * @param {number} width\n * @param {number} height\n */\n // PENDING to getRect\n setBoundingRect: function (x, y, width, height) {\n this._rect = new BoundingRect(x, y, width, height);\n return this._rect;\n },\n\n /**\n * @return {module:zrender/core/BoundingRect}\n */\n // PENDING to getRect\n getBoundingRect: function () {\n return this._rect;\n },\n\n /**\n * @param {number} x\n * @param {number} y\n * @param {number} width\n * @param {number} height\n */\n setViewRect: function (x, y, width, height) {\n this.transformTo(x, y, width, height);\n this._viewRect = new BoundingRect(x, y, width, height);\n },\n\n /**\n * Transformed to particular position and size\n * @param {number} x\n * @param {number} y\n * @param {number} width\n * @param {number} height\n */\n transformTo: function (x, y, width, height) {\n var rect = this.getBoundingRect();\n var rawTransform = this._rawTransformable;\n rawTransform.transform = rect.calculateTransform(new BoundingRect(x, y, width, height));\n rawTransform.decomposeTransform();\n\n this._updateTransform();\n },\n\n /**\n * Set center of view\n * @param {Array.} [centerCoord]\n */\n setCenter: function (centerCoord) {\n if (!centerCoord) {\n return;\n }\n\n this._center = centerCoord;\n\n this._updateCenterAndZoom();\n },\n\n /**\n * @param {number} zoom\n */\n setZoom: function (zoom) {\n zoom = zoom || 1;\n var zoomLimit = this.zoomLimit;\n\n if (zoomLimit) {\n if (zoomLimit.max != null) {\n zoom = Math.min(zoomLimit.max, zoom);\n }\n\n if (zoomLimit.min != null) {\n zoom = Math.max(zoomLimit.min, zoom);\n }\n }\n\n this._zoom = zoom;\n\n this._updateCenterAndZoom();\n },\n\n /**\n * Get default center without roam\n */\n getDefaultCenter: function () {\n // Rect before any transform\n var rawRect = this.getBoundingRect();\n var cx = rawRect.x + rawRect.width / 2;\n var cy = rawRect.y + rawRect.height / 2;\n return [cx, cy];\n },\n getCenter: function () {\n return this._center || this.getDefaultCenter();\n },\n getZoom: function () {\n return this._zoom || 1;\n },\n\n /**\n * @return {Array.} data\n * @param {boolean} noRoam\n * @param {Array.} [out]\n * @return {Array.}\n */\n dataToPoint: function (data, noRoam, out) {\n var transform = noRoam ? this._rawTransform : this.transform;\n out = out || [];\n return transform ? v2ApplyTransform(out, data, transform) : vector.copy(out, data);\n },\n\n /**\n * Convert a (x, y) point to (lon, lat) data\n * @param {Array.} point\n * @return {Array.}\n */\n pointToData: function (point) {\n var invTransform = this.invTransform;\n return invTransform ? v2ApplyTransform([], point, invTransform) : [point[0], point[1]];\n },\n\n /**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n convertToPixel: zrUtil.curry(doConvert, 'dataToPoint'),\n\n /**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n convertFromPixel: zrUtil.curry(doConvert, 'pointToData'),\n\n /**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n containPoint: function (point) {\n return this.getViewRectAfterRoam().contain(point[0], point[1]);\n }\n /**\n * @return {number}\n */\n // getScalarScale: function () {\n // // Use determinant square root of transform to mutiply scalar\n // var m = this.transform;\n // var det = Math.sqrt(Math.abs(m[0] * m[3] - m[2] * m[1]));\n // return det;\n // }\n\n};\nzrUtil.mixin(View, Transformable);\n\nfunction doConvert(methodName, ecModel, finder, value) {\n var seriesModel = finder.seriesModel;\n var coordSys = seriesModel ? seriesModel.coordinateSystem : null; // e.g., graph.\n\n return coordSys === this ? coordSys[methodName](value) : null;\n}\n\nvar _default = View;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/View.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/axisDefault.js": +/*!*******************************************************!*\ + !*** ./node_modules/echarts/lib/coord/axisDefault.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar defaultOption = {\n show: true,\n zlevel: 0,\n z: 0,\n // Inverse the axis.\n inverse: false,\n // Axis name displayed.\n name: '',\n // 'start' | 'middle' | 'end'\n nameLocation: 'end',\n // By degree. By default auto rotate by nameLocation.\n nameRotate: null,\n nameTruncate: {\n maxWidth: null,\n ellipsis: '...',\n placeholder: '.'\n },\n // Use global text style by default.\n nameTextStyle: {},\n // The gap between axisName and axisLine.\n nameGap: 15,\n // Default `false` to support tooltip.\n silent: false,\n // Default `false` to avoid legacy user event listener fail.\n triggerEvent: false,\n tooltip: {\n show: false\n },\n axisPointer: {},\n axisLine: {\n show: true,\n onZero: true,\n onZeroAxisIndex: null,\n lineStyle: {\n color: '#333',\n width: 1,\n type: 'solid'\n },\n // The arrow at both ends the the axis.\n symbol: ['none', 'none'],\n symbolSize: [10, 15]\n },\n axisTick: {\n show: true,\n // Whether axisTick is inside the grid or outside the grid.\n inside: false,\n // The length of axisTick.\n length: 5,\n lineStyle: {\n width: 1\n }\n },\n axisLabel: {\n show: true,\n // Whether axisLabel is inside the grid or outside the grid.\n inside: false,\n rotate: 0,\n // true | false | null/undefined (auto)\n showMinLabel: null,\n // true | false | null/undefined (auto)\n showMaxLabel: null,\n margin: 8,\n // formatter: null,\n fontSize: 12\n },\n splitLine: {\n show: true,\n lineStyle: {\n color: ['#ccc'],\n width: 1,\n type: 'solid'\n }\n },\n splitArea: {\n show: false,\n areaStyle: {\n color: ['rgba(250,250,250,0.3)', 'rgba(200,200,200,0.3)']\n }\n }\n};\nvar axisDefault = {};\naxisDefault.categoryAxis = zrUtil.merge({\n // The gap at both ends of the axis. For categoryAxis, boolean.\n boundaryGap: true,\n // Set false to faster category collection.\n // Only usefull in the case like: category is\n // ['2012-01-01', '2012-01-02', ...], where the input\n // data has been ensured not duplicate and is large data.\n // null means \"auto\":\n // if axis.data provided, do not deduplication,\n // else do deduplication.\n deduplication: null,\n // splitArea: {\n // show: false\n // },\n splitLine: {\n show: false\n },\n axisTick: {\n // If tick is align with label when boundaryGap is true\n alignWithLabel: false,\n interval: 'auto'\n },\n axisLabel: {\n interval: 'auto'\n }\n}, defaultOption);\naxisDefault.valueAxis = zrUtil.merge({\n // The gap at both ends of the axis. For value axis, [GAP, GAP], where\n // `GAP` can be an absolute pixel number (like `35`), or percent (like `'30%'`)\n boundaryGap: [0, 0],\n // TODO\n // min/max: [30, datamin, 60] or [20, datamin] or [datamin, 60]\n // Min value of the axis. can be:\n // + a number\n // + 'dataMin': use the min value in data.\n // + null/undefined: auto decide min value (consider pretty look and boundaryGap).\n // min: null,\n // Max value of the axis. can be:\n // + a number\n // + 'dataMax': use the max value in data.\n // + null/undefined: auto decide max value (consider pretty look and boundaryGap).\n // max: null,\n // Readonly prop, specifies start value of the range when using data zoom.\n // rangeStart: null\n // Readonly prop, specifies end value of the range when using data zoom.\n // rangeEnd: null\n // Optional value can be:\n // + `false`: always include value 0.\n // + `true`: the extent do not consider value 0.\n // scale: false,\n // AxisTick and axisLabel and splitLine are caculated based on splitNumber.\n splitNumber: 5,\n // Interval specifies the span of the ticks is mandatorily.\n // interval: null\n // Specify min interval when auto calculate tick interval.\n // minInterval: null\n // Specify max interval when auto calculate tick interval.\n // maxInterval: null\n minorTick: {\n // Minor tick, not available for cateogry axis.\n show: false,\n // Split number of minor ticks. The value should be in range of (0, 100)\n splitNumber: 5,\n // Lenght of minor tick\n length: 3,\n // Same inside with axisTick\n // Line style\n lineStyle: {// Default to be same with axisTick\n }\n },\n minorSplitLine: {\n show: false,\n lineStyle: {\n color: '#eee',\n width: 1\n }\n }\n}, defaultOption);\naxisDefault.timeAxis = zrUtil.defaults({\n scale: true,\n min: 'dataMin',\n max: 'dataMax'\n}, axisDefault.valueAxis);\naxisDefault.logAxis = zrUtil.defaults({\n scale: true,\n logBase: 10\n}, axisDefault.valueAxis);\nvar _default = axisDefault;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/axisDefault.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/axisHelper.js": +/*!******************************************************!*\ + !*** ./node_modules/echarts/lib/coord/axisHelper.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar OrdinalScale = __webpack_require__(/*! ../scale/Ordinal */ \"./node_modules/echarts/lib/scale/Ordinal.js\");\n\nvar IntervalScale = __webpack_require__(/*! ../scale/Interval */ \"./node_modules/echarts/lib/scale/Interval.js\");\n\nvar Scale = __webpack_require__(/*! ../scale/Scale */ \"./node_modules/echarts/lib/scale/Scale.js\");\n\nvar numberUtil = __webpack_require__(/*! ../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar _barGrid = __webpack_require__(/*! ../layout/barGrid */ \"./node_modules/echarts/lib/layout/barGrid.js\");\n\nvar prepareLayoutBarSeries = _barGrid.prepareLayoutBarSeries;\nvar makeColumnLayout = _barGrid.makeColumnLayout;\nvar retrieveColumnLayout = _barGrid.retrieveColumnLayout;\n\nvar BoundingRect = __webpack_require__(/*! zrender/lib/core/BoundingRect */ \"./node_modules/zrender/lib/core/BoundingRect.js\");\n\n__webpack_require__(/*! ../scale/Time */ \"./node_modules/echarts/lib/scale/Time.js\");\n\n__webpack_require__(/*! ../scale/Log */ \"./node_modules/echarts/lib/scale/Log.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Get axis scale extent before niced.\n * Item of returned array can only be number (including Infinity and NaN).\n */\nfunction getScaleExtent(scale, model) {\n var scaleType = scale.type;\n var min = model.getMin();\n var max = model.getMax();\n var originalExtent = scale.getExtent();\n var axisDataLen;\n var boundaryGap;\n var span;\n\n if (scaleType === 'ordinal') {\n axisDataLen = model.getCategories().length;\n } else {\n boundaryGap = model.get('boundaryGap');\n\n if (!zrUtil.isArray(boundaryGap)) {\n boundaryGap = [boundaryGap || 0, boundaryGap || 0];\n }\n\n if (typeof boundaryGap[0] === 'boolean') {\n boundaryGap = [0, 0];\n }\n\n boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], 1);\n boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], 1);\n span = originalExtent[1] - originalExtent[0] || Math.abs(originalExtent[0]);\n } // Notice: When min/max is not set (that is, when there are null/undefined,\n // which is the most common case), these cases should be ensured:\n // (1) For 'ordinal', show all axis.data.\n // (2) For others:\n // + `boundaryGap` is applied (if min/max set, boundaryGap is\n // disabled).\n // + If `needCrossZero`, min/max should be zero, otherwise, min/max should\n // be the result that originalExtent enlarged by boundaryGap.\n // (3) If no data, it should be ensured that `scale.setBlank` is set.\n // FIXME\n // (1) When min/max is 'dataMin' or 'dataMax', should boundaryGap be able to used?\n // (2) When `needCrossZero` and all data is positive/negative, should it be ensured\n // that the results processed by boundaryGap are positive/negative?\n\n\n if (min === 'dataMin') {\n min = originalExtent[0];\n } else if (typeof min === 'function') {\n min = min({\n min: originalExtent[0],\n max: originalExtent[1]\n });\n }\n\n if (max === 'dataMax') {\n max = originalExtent[1];\n } else if (typeof max === 'function') {\n max = max({\n min: originalExtent[0],\n max: originalExtent[1]\n });\n }\n\n var fixMin = min != null;\n var fixMax = max != null;\n\n if (min == null) {\n min = scaleType === 'ordinal' ? axisDataLen ? 0 : NaN : originalExtent[0] - boundaryGap[0] * span;\n }\n\n if (max == null) {\n max = scaleType === 'ordinal' ? axisDataLen ? axisDataLen - 1 : NaN : originalExtent[1] + boundaryGap[1] * span;\n }\n\n (min == null || !isFinite(min)) && (min = NaN);\n (max == null || !isFinite(max)) && (max = NaN);\n scale.setBlank(zrUtil.eqNaN(min) || zrUtil.eqNaN(max) || scaleType === 'ordinal' && !scale.getOrdinalMeta().categories.length); // Evaluate if axis needs cross zero\n\n if (model.getNeedCrossZero()) {\n // Axis is over zero and min is not set\n if (min > 0 && max > 0 && !fixMin) {\n min = 0;\n } // Axis is under zero and max is not set\n\n\n if (min < 0 && max < 0 && !fixMax) {\n max = 0;\n }\n } // If bars are placed on a base axis of type time or interval account for axis boundary overflow and current axis\n // is base axis\n // FIXME\n // (1) Consider support value axis, where below zero and axis `onZero` should be handled properly.\n // (2) Refactor the logic with `barGrid`. Is it not need to `makeBarWidthAndOffsetInfo` twice with different extent?\n // Should not depend on series type `bar`?\n // (3) Fix that might overlap when using dataZoom.\n // (4) Consider other chart types using `barGrid`?\n // See #6728, #4862, `test/bar-overflow-time-plot.html`\n\n\n var ecModel = model.ecModel;\n\n if (ecModel && scaleType === 'time'\n /*|| scaleType === 'interval' */\n ) {\n var barSeriesModels = prepareLayoutBarSeries('bar', ecModel);\n var isBaseAxisAndHasBarSeries;\n zrUtil.each(barSeriesModels, function (seriesModel) {\n isBaseAxisAndHasBarSeries |= seriesModel.getBaseAxis() === model.axis;\n });\n\n if (isBaseAxisAndHasBarSeries) {\n // Calculate placement of bars on axis\n var barWidthAndOffset = makeColumnLayout(barSeriesModels); // Adjust axis min and max to account for overflow\n\n var adjustedScale = adjustScaleForOverflow(min, max, model, barWidthAndOffset);\n min = adjustedScale.min;\n max = adjustedScale.max;\n }\n }\n\n return {\n extent: [min, max],\n // \"fix\" means \"fixed\", the value should not be\n // changed in the subsequent steps.\n fixMin: fixMin,\n fixMax: fixMax\n };\n}\n\nfunction adjustScaleForOverflow(min, max, model, barWidthAndOffset) {\n // Get Axis Length\n var axisExtent = model.axis.getExtent();\n var axisLength = axisExtent[1] - axisExtent[0]; // Get bars on current base axis and calculate min and max overflow\n\n var barsOnCurrentAxis = retrieveColumnLayout(barWidthAndOffset, model.axis);\n\n if (barsOnCurrentAxis === undefined) {\n return {\n min: min,\n max: max\n };\n }\n\n var minOverflow = Infinity;\n zrUtil.each(barsOnCurrentAxis, function (item) {\n minOverflow = Math.min(item.offset, minOverflow);\n });\n var maxOverflow = -Infinity;\n zrUtil.each(barsOnCurrentAxis, function (item) {\n maxOverflow = Math.max(item.offset + item.width, maxOverflow);\n });\n minOverflow = Math.abs(minOverflow);\n maxOverflow = Math.abs(maxOverflow);\n var totalOverFlow = minOverflow + maxOverflow; // Calulate required buffer based on old range and overflow\n\n var oldRange = max - min;\n var oldRangePercentOfNew = 1 - (minOverflow + maxOverflow) / axisLength;\n var overflowBuffer = oldRange / oldRangePercentOfNew - oldRange;\n max += overflowBuffer * (maxOverflow / totalOverFlow);\n min -= overflowBuffer * (minOverflow / totalOverFlow);\n return {\n min: min,\n max: max\n };\n}\n\nfunction niceScaleExtent(scale, model) {\n var extentInfo = getScaleExtent(scale, model);\n var extent = extentInfo.extent;\n var splitNumber = model.get('splitNumber');\n\n if (scale.type === 'log') {\n scale.base = model.get('logBase');\n }\n\n var scaleType = scale.type;\n scale.setExtent(extent[0], extent[1]);\n scale.niceExtent({\n splitNumber: splitNumber,\n fixMin: extentInfo.fixMin,\n fixMax: extentInfo.fixMax,\n minInterval: scaleType === 'interval' || scaleType === 'time' ? model.get('minInterval') : null,\n maxInterval: scaleType === 'interval' || scaleType === 'time' ? model.get('maxInterval') : null\n }); // If some one specified the min, max. And the default calculated interval\n // is not good enough. He can specify the interval. It is often appeared\n // in angle axis with angle 0 - 360. Interval calculated in interval scale is hard\n // to be 60.\n // FIXME\n\n var interval = model.get('interval');\n\n if (interval != null) {\n scale.setInterval && scale.setInterval(interval);\n }\n}\n/**\n * @param {module:echarts/model/Model} model\n * @param {string} [axisType] Default retrieve from model.type\n * @return {module:echarts/scale/*}\n */\n\n\nfunction createScaleByModel(model, axisType) {\n axisType = axisType || model.get('type');\n\n if (axisType) {\n switch (axisType) {\n // Buildin scale\n case 'category':\n return new OrdinalScale(model.getOrdinalMeta ? model.getOrdinalMeta() : model.getCategories(), [Infinity, -Infinity]);\n\n case 'value':\n return new IntervalScale();\n // Extended scale, like time and log\n\n default:\n return (Scale.getClass(axisType) || IntervalScale).create(model);\n }\n }\n}\n/**\n * Check if the axis corss 0\n */\n\n\nfunction ifAxisCrossZero(axis) {\n var dataExtent = axis.scale.getExtent();\n var min = dataExtent[0];\n var max = dataExtent[1];\n return !(min > 0 && max > 0 || min < 0 && max < 0);\n}\n/**\n * @param {module:echarts/coord/Axis} axis\n * @return {Function} Label formatter function.\n * param: {number} tickValue,\n * param: {number} idx, the index in all ticks.\n * If category axis, this param is not requied.\n * return: {string} label string.\n */\n\n\nfunction makeLabelFormatter(axis) {\n var labelFormatter = axis.getLabelModel().get('formatter');\n var categoryTickStart = axis.type === 'category' ? axis.scale.getExtent()[0] : null;\n\n if (typeof labelFormatter === 'string') {\n labelFormatter = function (tpl) {\n return function (val) {\n // For category axis, get raw value; for numeric axis,\n // get foramtted label like '1,333,444'.\n val = axis.scale.getLabel(val);\n return tpl.replace('{value}', val != null ? val : '');\n };\n }(labelFormatter); // Consider empty array\n\n\n return labelFormatter;\n } else if (typeof labelFormatter === 'function') {\n return function (tickValue, idx) {\n // The original intention of `idx` is \"the index of the tick in all ticks\".\n // But the previous implementation of category axis do not consider the\n // `axisLabel.interval`, which cause that, for example, the `interval` is\n // `1`, then the ticks \"name5\", \"name7\", \"name9\" are displayed, where the\n // corresponding `idx` are `0`, `2`, `4`, but not `0`, `1`, `2`. So we keep\n // the definition here for back compatibility.\n if (categoryTickStart != null) {\n idx = tickValue - categoryTickStart;\n }\n\n return labelFormatter(getAxisRawValue(axis, tickValue), idx);\n };\n } else {\n return function (tick) {\n return axis.scale.getLabel(tick);\n };\n }\n}\n\nfunction getAxisRawValue(axis, value) {\n // In category axis with data zoom, tick is not the original\n // index of axis.data. So tick should not be exposed to user\n // in category axis.\n return axis.type === 'category' ? axis.scale.getLabel(value) : value;\n}\n/**\n * @param {module:echarts/coord/Axis} axis\n * @return {module:zrender/core/BoundingRect} Be null/undefined if no labels.\n */\n\n\nfunction estimateLabelUnionRect(axis) {\n var axisModel = axis.model;\n var scale = axis.scale;\n\n if (!axisModel.get('axisLabel.show') || scale.isBlank()) {\n return;\n }\n\n var isCategory = axis.type === 'category';\n var realNumberScaleTicks;\n var tickCount;\n var categoryScaleExtent = scale.getExtent(); // Optimize for large category data, avoid call `getTicks()`.\n\n if (isCategory) {\n tickCount = scale.count();\n } else {\n realNumberScaleTicks = scale.getTicks();\n tickCount = realNumberScaleTicks.length;\n }\n\n var axisLabelModel = axis.getLabelModel();\n var labelFormatter = makeLabelFormatter(axis);\n var rect;\n var step = 1; // Simple optimization for large amount of labels\n\n if (tickCount > 40) {\n step = Math.ceil(tickCount / 40);\n }\n\n for (var i = 0; i < tickCount; i += step) {\n var tickValue = realNumberScaleTicks ? realNumberScaleTicks[i] : categoryScaleExtent[0] + i;\n var label = labelFormatter(tickValue);\n var unrotatedSingleRect = axisLabelModel.getTextRect(label);\n var singleRect = rotateTextRect(unrotatedSingleRect, axisLabelModel.get('rotate') || 0);\n rect ? rect.union(singleRect) : rect = singleRect;\n }\n\n return rect;\n}\n\nfunction rotateTextRect(textRect, rotate) {\n var rotateRadians = rotate * Math.PI / 180;\n var boundingBox = textRect.plain();\n var beforeWidth = boundingBox.width;\n var beforeHeight = boundingBox.height;\n var afterWidth = beforeWidth * Math.abs(Math.cos(rotateRadians)) + Math.abs(beforeHeight * Math.sin(rotateRadians));\n var afterHeight = beforeWidth * Math.abs(Math.sin(rotateRadians)) + Math.abs(beforeHeight * Math.cos(rotateRadians));\n var rotatedRect = new BoundingRect(boundingBox.x, boundingBox.y, afterWidth, afterHeight);\n return rotatedRect;\n}\n/**\n * @param {module:echarts/src/model/Model} model axisLabelModel or axisTickModel\n * @return {number|String} Can be null|'auto'|number|function\n */\n\n\nfunction getOptionCategoryInterval(model) {\n var interval = model.get('interval');\n return interval == null ? 'auto' : interval;\n}\n/**\n * Set `categoryInterval` as 0 implicitly indicates that\n * show all labels reguardless of overlap.\n * @param {Object} axis axisModel.axis\n * @return {boolean}\n */\n\n\nfunction shouldShowAllLabels(axis) {\n return axis.type === 'category' && getOptionCategoryInterval(axis.getLabelModel()) === 0;\n}\n\nexports.getScaleExtent = getScaleExtent;\nexports.niceScaleExtent = niceScaleExtent;\nexports.createScaleByModel = createScaleByModel;\nexports.ifAxisCrossZero = ifAxisCrossZero;\nexports.makeLabelFormatter = makeLabelFormatter;\nexports.getAxisRawValue = getAxisRawValue;\nexports.estimateLabelUnionRect = estimateLabelUnionRect;\nexports.getOptionCategoryInterval = getOptionCategoryInterval;\nexports.shouldShowAllLabels = shouldShowAllLabels;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/axisHelper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/axisModelCommonMixin.js": +/*!****************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/axisModelCommonMixin.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// import * as axisHelper from './axisHelper';\nvar _default = {\n /**\n * @param {boolean} origin\n * @return {number|string} min value or 'dataMin' or null/undefined (means auto) or NaN\n */\n getMin: function (origin) {\n var option = this.option;\n var min = !origin && option.rangeStart != null ? option.rangeStart : option.min;\n\n if (this.axis && min != null && min !== 'dataMin' && typeof min !== 'function' && !zrUtil.eqNaN(min)) {\n min = this.axis.scale.parse(min);\n }\n\n return min;\n },\n\n /**\n * @param {boolean} origin\n * @return {number|string} max value or 'dataMax' or null/undefined (means auto) or NaN\n */\n getMax: function (origin) {\n var option = this.option;\n var max = !origin && option.rangeEnd != null ? option.rangeEnd : option.max;\n\n if (this.axis && max != null && max !== 'dataMax' && typeof max !== 'function' && !zrUtil.eqNaN(max)) {\n max = this.axis.scale.parse(max);\n }\n\n return max;\n },\n\n /**\n * @return {boolean}\n */\n getNeedCrossZero: function () {\n var option = this.option;\n return option.rangeStart != null || option.rangeEnd != null ? false : !option.scale;\n },\n\n /**\n * Should be implemented by each axis model if necessary.\n * @return {module:echarts/model/Component} coordinate system model\n */\n getCoordSysModel: zrUtil.noop,\n\n /**\n * @param {number} rangeStart Can only be finite number or null/undefined or NaN.\n * @param {number} rangeEnd Can only be finite number or null/undefined or NaN.\n */\n setRange: function (rangeStart, rangeEnd) {\n this.option.rangeStart = rangeStart;\n this.option.rangeEnd = rangeEnd;\n },\n\n /**\n * Reset range\n */\n resetRange: function () {\n // rangeStart and rangeEnd is readonly.\n this.option.rangeStart = this.option.rangeEnd = null;\n }\n};\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/axisModelCommonMixin.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/axisModelCreator.js": +/*!************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/axisModelCreator.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar axisDefault = __webpack_require__(/*! ./axisDefault */ \"./node_modules/echarts/lib/coord/axisDefault.js\");\n\nvar ComponentModel = __webpack_require__(/*! ../model/Component */ \"./node_modules/echarts/lib/model/Component.js\");\n\nvar _layout = __webpack_require__(/*! ../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar getLayoutParams = _layout.getLayoutParams;\nvar mergeLayoutParam = _layout.mergeLayoutParam;\n\nvar OrdinalMeta = __webpack_require__(/*! ../data/OrdinalMeta */ \"./node_modules/echarts/lib/data/OrdinalMeta.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// FIXME axisType is fixed ?\nvar AXIS_TYPES = ['value', 'category', 'time', 'log'];\n/**\n * Generate sub axis model class\n * @param {string} axisName 'x' 'y' 'radius' 'angle' 'parallel'\n * @param {module:echarts/model/Component} BaseAxisModelClass\n * @param {Function} axisTypeDefaulter\n * @param {Object} [extraDefaultOption]\n */\n\nfunction _default(axisName, BaseAxisModelClass, axisTypeDefaulter, extraDefaultOption) {\n zrUtil.each(AXIS_TYPES, function (axisType) {\n BaseAxisModelClass.extend({\n /**\n * @readOnly\n */\n type: axisName + 'Axis.' + axisType,\n mergeDefaultAndTheme: function (option, ecModel) {\n var layoutMode = this.layoutMode;\n var inputPositionParams = layoutMode ? getLayoutParams(option) : {};\n var themeModel = ecModel.getTheme();\n zrUtil.merge(option, themeModel.get(axisType + 'Axis'));\n zrUtil.merge(option, this.getDefaultOption());\n option.type = axisTypeDefaulter(axisName, option);\n\n if (layoutMode) {\n mergeLayoutParam(option, inputPositionParams, layoutMode);\n }\n },\n\n /**\n * @override\n */\n optionUpdated: function () {\n var thisOption = this.option;\n\n if (thisOption.type === 'category') {\n this.__ordinalMeta = OrdinalMeta.createByAxisModel(this);\n }\n },\n\n /**\n * Should not be called before all of 'getInitailData' finished.\n * Because categories are collected during initializing data.\n */\n getCategories: function (rawData) {\n var option = this.option; // FIXME\n // warning if called before all of 'getInitailData' finished.\n\n if (option.type === 'category') {\n if (rawData) {\n return option.data;\n }\n\n return this.__ordinalMeta.categories;\n }\n },\n getOrdinalMeta: function () {\n return this.__ordinalMeta;\n },\n defaultOption: zrUtil.mergeAll([{}, axisDefault[axisType + 'Axis'], extraDefaultOption], true)\n });\n });\n ComponentModel.registerSubTypeDefaulter(axisName + 'Axis', zrUtil.curry(axisTypeDefaulter, axisName));\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/axisModelCreator.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/axisTickLabelBuilder.js": +/*!****************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/axisTickLabelBuilder.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar textContain = __webpack_require__(/*! zrender/lib/contain/text */ \"./node_modules/zrender/lib/contain/text.js\");\n\nvar _model = __webpack_require__(/*! ../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar makeInner = _model.makeInner;\n\nvar _axisHelper = __webpack_require__(/*! ./axisHelper */ \"./node_modules/echarts/lib/coord/axisHelper.js\");\n\nvar makeLabelFormatter = _axisHelper.makeLabelFormatter;\nvar getOptionCategoryInterval = _axisHelper.getOptionCategoryInterval;\nvar shouldShowAllLabels = _axisHelper.shouldShowAllLabels;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = makeInner();\n/**\n * @param {module:echats/coord/Axis} axis\n * @return {Object} {\n * labels: [{\n * formattedLabel: string,\n * rawLabel: string,\n * tickValue: number\n * }, ...],\n * labelCategoryInterval: number\n * }\n */\n\nfunction createAxisLabels(axis) {\n // Only ordinal scale support tick interval\n return axis.type === 'category' ? makeCategoryLabels(axis) : makeRealNumberLabels(axis);\n}\n/**\n * @param {module:echats/coord/Axis} axis\n * @param {module:echarts/model/Model} tickModel For example, can be axisTick, splitLine, splitArea.\n * @return {Object} {\n * ticks: Array.\n * tickCategoryInterval: number\n * }\n */\n\n\nfunction createAxisTicks(axis, tickModel) {\n // Only ordinal scale support tick interval\n return axis.type === 'category' ? makeCategoryTicks(axis, tickModel) : {\n ticks: axis.scale.getTicks()\n };\n}\n\nfunction makeCategoryLabels(axis) {\n var labelModel = axis.getLabelModel();\n var result = makeCategoryLabelsActually(axis, labelModel);\n return !labelModel.get('show') || axis.scale.isBlank() ? {\n labels: [],\n labelCategoryInterval: result.labelCategoryInterval\n } : result;\n}\n\nfunction makeCategoryLabelsActually(axis, labelModel) {\n var labelsCache = getListCache(axis, 'labels');\n var optionLabelInterval = getOptionCategoryInterval(labelModel);\n var result = listCacheGet(labelsCache, optionLabelInterval);\n\n if (result) {\n return result;\n }\n\n var labels;\n var numericLabelInterval;\n\n if (zrUtil.isFunction(optionLabelInterval)) {\n labels = makeLabelsByCustomizedCategoryInterval(axis, optionLabelInterval);\n } else {\n numericLabelInterval = optionLabelInterval === 'auto' ? makeAutoCategoryInterval(axis) : optionLabelInterval;\n labels = makeLabelsByNumericCategoryInterval(axis, numericLabelInterval);\n } // Cache to avoid calling interval function repeatly.\n\n\n return listCacheSet(labelsCache, optionLabelInterval, {\n labels: labels,\n labelCategoryInterval: numericLabelInterval\n });\n}\n\nfunction makeCategoryTicks(axis, tickModel) {\n var ticksCache = getListCache(axis, 'ticks');\n var optionTickInterval = getOptionCategoryInterval(tickModel);\n var result = listCacheGet(ticksCache, optionTickInterval);\n\n if (result) {\n return result;\n }\n\n var ticks;\n var tickCategoryInterval; // Optimize for the case that large category data and no label displayed,\n // we should not return all ticks.\n\n if (!tickModel.get('show') || axis.scale.isBlank()) {\n ticks = [];\n }\n\n if (zrUtil.isFunction(optionTickInterval)) {\n ticks = makeLabelsByCustomizedCategoryInterval(axis, optionTickInterval, true);\n } // Always use label interval by default despite label show. Consider this\n // scenario, Use multiple grid with the xAxis sync, and only one xAxis shows\n // labels. `splitLine` and `axisTick` should be consistent in this case.\n else if (optionTickInterval === 'auto') {\n var labelsResult = makeCategoryLabelsActually(axis, axis.getLabelModel());\n tickCategoryInterval = labelsResult.labelCategoryInterval;\n ticks = zrUtil.map(labelsResult.labels, function (labelItem) {\n return labelItem.tickValue;\n });\n } else {\n tickCategoryInterval = optionTickInterval;\n ticks = makeLabelsByNumericCategoryInterval(axis, tickCategoryInterval, true);\n } // Cache to avoid calling interval function repeatly.\n\n\n return listCacheSet(ticksCache, optionTickInterval, {\n ticks: ticks,\n tickCategoryInterval: tickCategoryInterval\n });\n}\n\nfunction makeRealNumberLabels(axis) {\n var ticks = axis.scale.getTicks();\n var labelFormatter = makeLabelFormatter(axis);\n return {\n labels: zrUtil.map(ticks, function (tickValue, idx) {\n return {\n formattedLabel: labelFormatter(tickValue, idx),\n rawLabel: axis.scale.getLabel(tickValue),\n tickValue: tickValue\n };\n })\n };\n} // Large category data calculation is performence sensitive, and ticks and label\n// probably be fetched by multiple times. So we cache the result.\n// axis is created each time during a ec process, so we do not need to clear cache.\n\n\nfunction getListCache(axis, prop) {\n // Because key can be funciton, and cache size always be small, we use array cache.\n return inner(axis)[prop] || (inner(axis)[prop] = []);\n}\n\nfunction listCacheGet(cache, key) {\n for (var i = 0; i < cache.length; i++) {\n if (cache[i].key === key) {\n return cache[i].value;\n }\n }\n}\n\nfunction listCacheSet(cache, key, value) {\n cache.push({\n key: key,\n value: value\n });\n return value;\n}\n\nfunction makeAutoCategoryInterval(axis) {\n var result = inner(axis).autoInterval;\n return result != null ? result : inner(axis).autoInterval = axis.calculateCategoryInterval();\n}\n/**\n * Calculate interval for category axis ticks and labels.\n * To get precise result, at least one of `getRotate` and `isHorizontal`\n * should be implemented in axis.\n */\n\n\nfunction calculateCategoryInterval(axis) {\n var params = fetchAutoCategoryIntervalCalculationParams(axis);\n var labelFormatter = makeLabelFormatter(axis);\n var rotation = (params.axisRotate - params.labelRotate) / 180 * Math.PI;\n var ordinalScale = axis.scale;\n var ordinalExtent = ordinalScale.getExtent(); // Providing this method is for optimization:\n // avoid generating a long array by `getTicks`\n // in large category data case.\n\n var tickCount = ordinalScale.count();\n\n if (ordinalExtent[1] - ordinalExtent[0] < 1) {\n return 0;\n }\n\n var step = 1; // Simple optimization. Empirical value: tick count should less than 40.\n\n if (tickCount > 40) {\n step = Math.max(1, Math.floor(tickCount / 40));\n }\n\n var tickValue = ordinalExtent[0];\n var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue);\n var unitW = Math.abs(unitSpan * Math.cos(rotation));\n var unitH = Math.abs(unitSpan * Math.sin(rotation));\n var maxW = 0;\n var maxH = 0; // Caution: Performance sensitive for large category data.\n // Consider dataZoom, we should make appropriate step to avoid O(n) loop.\n\n for (; tickValue <= ordinalExtent[1]; tickValue += step) {\n var width = 0;\n var height = 0; // Not precise, do not consider align and vertical align\n // and each distance from axis line yet.\n\n var rect = textContain.getBoundingRect(labelFormatter(tickValue), params.font, 'center', 'top'); // Magic number\n\n width = rect.width * 1.3;\n height = rect.height * 1.3; // Min size, void long loop.\n\n maxW = Math.max(maxW, width, 7);\n maxH = Math.max(maxH, height, 7);\n }\n\n var dw = maxW / unitW;\n var dh = maxH / unitH; // 0/0 is NaN, 1/0 is Infinity.\n\n isNaN(dw) && (dw = Infinity);\n isNaN(dh) && (dh = Infinity);\n var interval = Math.max(0, Math.floor(Math.min(dw, dh)));\n var cache = inner(axis.model);\n var axisExtent = axis.getExtent();\n var lastAutoInterval = cache.lastAutoInterval;\n var lastTickCount = cache.lastTickCount; // Use cache to keep interval stable while moving zoom window,\n // otherwise the calculated interval might jitter when the zoom\n // window size is close to the interval-changing size.\n // For example, if all of the axis labels are `a, b, c, d, e, f, g`.\n // The jitter will cause that sometimes the displayed labels are\n // `a, d, g` (interval: 2) sometimes `a, c, e`(interval: 1).\n\n if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1 // Always choose the bigger one, otherwise the critical\n // point is not the same when zooming in or zooming out.\n && lastAutoInterval > interval // If the axis change is caused by chart resize, the cache should not\n // be used. Otherwise some hiden labels might not be shown again.\n && cache.axisExtend0 === axisExtent[0] && cache.axisExtend1 === axisExtent[1]) {\n interval = lastAutoInterval;\n } // Only update cache if cache not used, otherwise the\n // changing of interval is too insensitive.\n else {\n cache.lastTickCount = tickCount;\n cache.lastAutoInterval = interval;\n cache.axisExtend0 = axisExtent[0];\n cache.axisExtend1 = axisExtent[1];\n }\n\n return interval;\n}\n\nfunction fetchAutoCategoryIntervalCalculationParams(axis) {\n var labelModel = axis.getLabelModel();\n return {\n axisRotate: axis.getRotate ? axis.getRotate() : axis.isHorizontal && !axis.isHorizontal() ? 90 : 0,\n labelRotate: labelModel.get('rotate') || 0,\n font: labelModel.getFont()\n };\n}\n\nfunction makeLabelsByNumericCategoryInterval(axis, categoryInterval, onlyTick) {\n var labelFormatter = makeLabelFormatter(axis);\n var ordinalScale = axis.scale;\n var ordinalExtent = ordinalScale.getExtent();\n var labelModel = axis.getLabelModel();\n var result = []; // TODO: axisType: ordinalTime, pick the tick from each month/day/year/...\n\n var step = Math.max((categoryInterval || 0) + 1, 1);\n var startTick = ordinalExtent[0];\n var tickCount = ordinalScale.count(); // Calculate start tick based on zero if possible to keep label consistent\n // while zooming and moving while interval > 0. Otherwise the selection\n // of displayable ticks and symbols probably keep changing.\n // 3 is empirical value.\n\n if (startTick !== 0 && step > 1 && tickCount / step > 2) {\n startTick = Math.round(Math.ceil(startTick / step) * step);\n } // (1) Only add min max label here but leave overlap checking\n // to render stage, which also ensure the returned list\n // suitable for splitLine and splitArea rendering.\n // (2) Scales except category always contain min max label so\n // do not need to perform this process.\n\n\n var showAllLabel = shouldShowAllLabels(axis);\n var includeMinLabel = labelModel.get('showMinLabel') || showAllLabel;\n var includeMaxLabel = labelModel.get('showMaxLabel') || showAllLabel;\n\n if (includeMinLabel && startTick !== ordinalExtent[0]) {\n addItem(ordinalExtent[0]);\n } // Optimize: avoid generating large array by `ordinalScale.getTicks()`.\n\n\n var tickValue = startTick;\n\n for (; tickValue <= ordinalExtent[1]; tickValue += step) {\n addItem(tickValue);\n }\n\n if (includeMaxLabel && tickValue - step !== ordinalExtent[1]) {\n addItem(ordinalExtent[1]);\n }\n\n function addItem(tVal) {\n result.push(onlyTick ? tVal : {\n formattedLabel: labelFormatter(tVal),\n rawLabel: ordinalScale.getLabel(tVal),\n tickValue: tVal\n });\n }\n\n return result;\n} // When interval is function, the result `false` means ignore the tick.\n// It is time consuming for large category data.\n\n\nfunction makeLabelsByCustomizedCategoryInterval(axis, categoryInterval, onlyTick) {\n var ordinalScale = axis.scale;\n var labelFormatter = makeLabelFormatter(axis);\n var result = [];\n zrUtil.each(ordinalScale.getTicks(), function (tickValue) {\n var rawLabel = ordinalScale.getLabel(tickValue);\n\n if (categoryInterval(tickValue, rawLabel)) {\n result.push(onlyTick ? tickValue : {\n formattedLabel: labelFormatter(tickValue),\n rawLabel: rawLabel,\n tickValue: tickValue\n });\n }\n });\n return result;\n}\n\nexports.createAxisLabels = createAxisLabels;\nexports.createAxisTicks = createAxisTicks;\nexports.calculateCategoryInterval = calculateCategoryInterval;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/axisTickLabelBuilder.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/calendar/Calendar.js": +/*!*************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/calendar/Calendar.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar layout = __webpack_require__(/*! ../../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar numberUtil = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar CoordinateSystem = __webpack_require__(/*! ../../CoordinateSystem */ \"./node_modules/echarts/lib/CoordinateSystem.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// (24*60*60*1000)\nvar PROXIMATE_ONE_DAY = 86400000;\n/**\n * Calendar\n *\n * @constructor\n *\n * @param {Object} calendarModel calendarModel\n * @param {Object} ecModel ecModel\n * @param {Object} api api\n */\n\nfunction Calendar(calendarModel, ecModel, api) {\n this._model = calendarModel;\n}\n\nCalendar.prototype = {\n constructor: Calendar,\n type: 'calendar',\n dimensions: ['time', 'value'],\n // Required in createListFromData\n getDimensionsInfo: function () {\n return [{\n name: 'time',\n type: 'time'\n }, 'value'];\n },\n getRangeInfo: function () {\n return this._rangeInfo;\n },\n getModel: function () {\n return this._model;\n },\n getRect: function () {\n return this._rect;\n },\n getCellWidth: function () {\n return this._sw;\n },\n getCellHeight: function () {\n return this._sh;\n },\n getOrient: function () {\n return this._orient;\n },\n\n /**\n * getFirstDayOfWeek\n *\n * @example\n * 0 : start at Sunday\n * 1 : start at Monday\n *\n * @return {number}\n */\n getFirstDayOfWeek: function () {\n return this._firstDayOfWeek;\n },\n\n /**\n * get date info\n *\n * @param {string|number} date date\n * @return {Object}\n * {\n * y: string, local full year, eg., '1940',\n * m: string, local month, from '01' ot '12',\n * d: string, local date, from '01' to '31' (if exists),\n * day: It is not date.getDay(). It is the location of the cell in a week, from 0 to 6,\n * time: timestamp,\n * formatedDate: string, yyyy-MM-dd,\n * date: original date object.\n * }\n */\n getDateInfo: function (date) {\n date = numberUtil.parseDate(date);\n var y = date.getFullYear();\n var m = date.getMonth() + 1;\n m = m < 10 ? '0' + m : m;\n var d = date.getDate();\n d = d < 10 ? '0' + d : d;\n var day = date.getDay();\n day = Math.abs((day + 7 - this.getFirstDayOfWeek()) % 7);\n return {\n y: y,\n m: m,\n d: d,\n day: day,\n time: date.getTime(),\n formatedDate: y + '-' + m + '-' + d,\n date: date\n };\n },\n getNextNDay: function (date, n) {\n n = n || 0;\n\n if (n === 0) {\n return this.getDateInfo(date);\n }\n\n date = new Date(this.getDateInfo(date).time);\n date.setDate(date.getDate() + n);\n return this.getDateInfo(date);\n },\n update: function (ecModel, api) {\n this._firstDayOfWeek = +this._model.getModel('dayLabel').get('firstDay');\n this._orient = this._model.get('orient');\n this._lineWidth = this._model.getModel('itemStyle').getItemStyle().lineWidth || 0;\n this._rangeInfo = this._getRangeInfo(this._initRangeOption());\n var weeks = this._rangeInfo.weeks || 1;\n var whNames = ['width', 'height'];\n\n var cellSize = this._model.get('cellSize').slice();\n\n var layoutParams = this._model.getBoxLayoutParams();\n\n var cellNumbers = this._orient === 'horizontal' ? [weeks, 7] : [7, weeks];\n zrUtil.each([0, 1], function (idx) {\n if (cellSizeSpecified(cellSize, idx)) {\n layoutParams[whNames[idx]] = cellSize[idx] * cellNumbers[idx];\n }\n });\n var whGlobal = {\n width: api.getWidth(),\n height: api.getHeight()\n };\n var calendarRect = this._rect = layout.getLayoutRect(layoutParams, whGlobal);\n zrUtil.each([0, 1], function (idx) {\n if (!cellSizeSpecified(cellSize, idx)) {\n cellSize[idx] = calendarRect[whNames[idx]] / cellNumbers[idx];\n }\n });\n\n function cellSizeSpecified(cellSize, idx) {\n return cellSize[idx] != null && cellSize[idx] !== 'auto';\n }\n\n this._sw = cellSize[0];\n this._sh = cellSize[1];\n },\n\n /**\n * Convert a time data(time, value) item to (x, y) point.\n *\n * @override\n * @param {Array|number} data data\n * @param {boolean} [clamp=true] out of range\n * @return {Array} point\n */\n dataToPoint: function (data, clamp) {\n zrUtil.isArray(data) && (data = data[0]);\n clamp == null && (clamp = true);\n var dayInfo = this.getDateInfo(data);\n var range = this._rangeInfo;\n var date = dayInfo.formatedDate; // if not in range return [NaN, NaN]\n\n if (clamp && !(dayInfo.time >= range.start.time && dayInfo.time < range.end.time + PROXIMATE_ONE_DAY)) {\n return [NaN, NaN];\n }\n\n var week = dayInfo.day;\n\n var nthWeek = this._getRangeInfo([range.start.time, date]).nthWeek;\n\n if (this._orient === 'vertical') {\n return [this._rect.x + week * this._sw + this._sw / 2, this._rect.y + nthWeek * this._sh + this._sh / 2];\n }\n\n return [this._rect.x + nthWeek * this._sw + this._sw / 2, this._rect.y + week * this._sh + this._sh / 2];\n },\n\n /**\n * Convert a (x, y) point to time data\n *\n * @override\n * @param {string} point point\n * @return {string} data\n */\n pointToData: function (point) {\n var date = this.pointToDate(point);\n return date && date.time;\n },\n\n /**\n * Convert a time date item to (x, y) four point.\n *\n * @param {Array} data date[0] is date\n * @param {boolean} [clamp=true] out of range\n * @return {Object} point\n */\n dataToRect: function (data, clamp) {\n var point = this.dataToPoint(data, clamp);\n return {\n contentShape: {\n x: point[0] - (this._sw - this._lineWidth) / 2,\n y: point[1] - (this._sh - this._lineWidth) / 2,\n width: this._sw - this._lineWidth,\n height: this._sh - this._lineWidth\n },\n center: point,\n tl: [point[0] - this._sw / 2, point[1] - this._sh / 2],\n tr: [point[0] + this._sw / 2, point[1] - this._sh / 2],\n br: [point[0] + this._sw / 2, point[1] + this._sh / 2],\n bl: [point[0] - this._sw / 2, point[1] + this._sh / 2]\n };\n },\n\n /**\n * Convert a (x, y) point to time date\n *\n * @param {Array} point point\n * @return {Object} date\n */\n pointToDate: function (point) {\n var nthX = Math.floor((point[0] - this._rect.x) / this._sw) + 1;\n var nthY = Math.floor((point[1] - this._rect.y) / this._sh) + 1;\n var range = this._rangeInfo.range;\n\n if (this._orient === 'vertical') {\n return this._getDateByWeeksAndDay(nthY, nthX - 1, range);\n }\n\n return this._getDateByWeeksAndDay(nthX, nthY - 1, range);\n },\n\n /**\n * @inheritDoc\n */\n convertToPixel: zrUtil.curry(doConvert, 'dataToPoint'),\n\n /**\n * @inheritDoc\n */\n convertFromPixel: zrUtil.curry(doConvert, 'pointToData'),\n\n /**\n * initRange\n *\n * @private\n * @return {Array} [start, end]\n */\n _initRangeOption: function () {\n var range = this._model.get('range');\n\n var rg = range;\n\n if (zrUtil.isArray(rg) && rg.length === 1) {\n rg = rg[0];\n }\n\n if (/^\\d{4}$/.test(rg)) {\n range = [rg + '-01-01', rg + '-12-31'];\n }\n\n if (/^\\d{4}[\\/|-]\\d{1,2}$/.test(rg)) {\n var start = this.getDateInfo(rg);\n var firstDay = start.date;\n firstDay.setMonth(firstDay.getMonth() + 1);\n var end = this.getNextNDay(firstDay, -1);\n range = [start.formatedDate, end.formatedDate];\n }\n\n if (/^\\d{4}[\\/|-]\\d{1,2}[\\/|-]\\d{1,2}$/.test(rg)) {\n range = [rg, rg];\n }\n\n var tmp = this._getRangeInfo(range);\n\n if (tmp.start.time > tmp.end.time) {\n range.reverse();\n }\n\n return range;\n },\n\n /**\n * range info\n *\n * @private\n * @param {Array} range range ['2017-01-01', '2017-07-08']\n * If range[0] > range[1], they will not be reversed.\n * @return {Object} obj\n */\n _getRangeInfo: function (range) {\n range = [this.getDateInfo(range[0]), this.getDateInfo(range[1])];\n var reversed;\n\n if (range[0].time > range[1].time) {\n reversed = true;\n range.reverse();\n }\n\n var allDay = Math.floor(range[1].time / PROXIMATE_ONE_DAY) - Math.floor(range[0].time / PROXIMATE_ONE_DAY) + 1; // Consider case1 (#11677 #10430):\n // Set the system timezone as \"UK\", set the range to `['2016-07-01', '2016-12-31']`\n // Consider case2:\n // Firstly set system timezone as \"Time Zone: America/Toronto\",\n // ```\n // var first = new Date(1478412000000 - 3600 * 1000 * 2.5);\n // var second = new Date(1478412000000);\n // var allDays = Math.floor(second / ONE_DAY) - Math.floor(first / ONE_DAY) + 1;\n // ```\n // will get wrong result because of DST. So we should fix it.\n\n var date = new Date(range[0].time);\n var startDateNum = date.getDate();\n var endDateNum = range[1].date.getDate();\n date.setDate(startDateNum + allDay - 1); // The bias can not over a month, so just compare date.\n\n var dateNum = date.getDate();\n\n if (dateNum !== endDateNum) {\n var sign = date.getTime() - range[1].time > 0 ? 1 : -1;\n\n while ((dateNum = date.getDate()) !== endDateNum && (date.getTime() - range[1].time) * sign > 0) {\n allDay -= sign;\n date.setDate(dateNum - sign);\n }\n }\n\n var weeks = Math.floor((allDay + range[0].day + 6) / 7);\n var nthWeek = reversed ? -weeks + 1 : weeks - 1;\n reversed && range.reverse();\n return {\n range: [range[0].formatedDate, range[1].formatedDate],\n start: range[0],\n end: range[1],\n allDay: allDay,\n weeks: weeks,\n // From 0.\n nthWeek: nthWeek,\n fweek: range[0].day,\n lweek: range[1].day\n };\n },\n\n /**\n * get date by nthWeeks and week day in range\n *\n * @private\n * @param {number} nthWeek the week\n * @param {number} day the week day\n * @param {Array} range [d1, d2]\n * @return {Object}\n */\n _getDateByWeeksAndDay: function (nthWeek, day, range) {\n var rangeInfo = this._getRangeInfo(range);\n\n if (nthWeek > rangeInfo.weeks || nthWeek === 0 && day < rangeInfo.fweek || nthWeek === rangeInfo.weeks && day > rangeInfo.lweek) {\n return false;\n }\n\n var nthDay = (nthWeek - 1) * 7 - rangeInfo.fweek + day;\n var date = new Date(rangeInfo.start.time);\n date.setDate(rangeInfo.start.d + nthDay);\n return this.getDateInfo(date);\n }\n};\nCalendar.dimensions = Calendar.prototype.dimensions;\nCalendar.getDimensionsInfo = Calendar.prototype.getDimensionsInfo;\n\nCalendar.create = function (ecModel, api) {\n var calendarList = [];\n ecModel.eachComponent('calendar', function (calendarModel) {\n var calendar = new Calendar(calendarModel, ecModel, api);\n calendarList.push(calendar);\n calendarModel.coordinateSystem = calendar;\n });\n ecModel.eachSeries(function (calendarSeries) {\n if (calendarSeries.get('coordinateSystem') === 'calendar') {\n // Inject coordinate system\n calendarSeries.coordinateSystem = calendarList[calendarSeries.get('calendarIndex') || 0];\n }\n });\n return calendarList;\n};\n\nfunction doConvert(methodName, ecModel, finder, value) {\n var calendarModel = finder.calendarModel;\n var seriesModel = finder.seriesModel;\n var coordSys = calendarModel ? calendarModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem : null;\n return coordSys === this ? coordSys[methodName](value) : null;\n}\n\nCoordinateSystem.register('calendar', Calendar);\nvar _default = Calendar;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/calendar/Calendar.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/calendar/CalendarModel.js": +/*!******************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/calendar/CalendarModel.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar ComponentModel = __webpack_require__(/*! ../../model/Component */ \"./node_modules/echarts/lib/model/Component.js\");\n\nvar _layout = __webpack_require__(/*! ../../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar getLayoutParams = _layout.getLayoutParams;\nvar sizeCalculable = _layout.sizeCalculable;\nvar mergeLayoutParam = _layout.mergeLayoutParam;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar CalendarModel = ComponentModel.extend({\n type: 'calendar',\n\n /**\n * @type {module:echarts/coord/calendar/Calendar}\n */\n coordinateSystem: null,\n defaultOption: {\n zlevel: 0,\n z: 2,\n left: 80,\n top: 60,\n cellSize: 20,\n // horizontal vertical\n orient: 'horizontal',\n // month separate line style\n splitLine: {\n show: true,\n lineStyle: {\n color: '#000',\n width: 1,\n type: 'solid'\n }\n },\n // rect style temporarily unused emphasis\n itemStyle: {\n color: '#fff',\n borderWidth: 1,\n borderColor: '#ccc'\n },\n // week text style\n dayLabel: {\n show: true,\n // a week first day\n firstDay: 0,\n // start end\n position: 'start',\n margin: '50%',\n // 50% of cellSize\n nameMap: 'en',\n color: '#000'\n },\n // month text style\n monthLabel: {\n show: true,\n // start end\n position: 'start',\n margin: 5,\n // center or left\n align: 'center',\n // cn en []\n nameMap: 'en',\n formatter: null,\n color: '#000'\n },\n // year text style\n yearLabel: {\n show: true,\n // top bottom left right\n position: null,\n margin: 30,\n formatter: null,\n color: '#ccc',\n fontFamily: 'sans-serif',\n fontWeight: 'bolder',\n fontSize: 20\n }\n },\n\n /**\n * @override\n */\n init: function (option, parentModel, ecModel, extraOpt) {\n var inputPositionParams = getLayoutParams(option);\n CalendarModel.superApply(this, 'init', arguments);\n mergeAndNormalizeLayoutParams(option, inputPositionParams);\n },\n\n /**\n * @override\n */\n mergeOption: function (option, extraOpt) {\n CalendarModel.superApply(this, 'mergeOption', arguments);\n mergeAndNormalizeLayoutParams(this.option, option);\n }\n});\n\nfunction mergeAndNormalizeLayoutParams(target, raw) {\n // Normalize cellSize\n var cellSize = target.cellSize;\n\n if (!zrUtil.isArray(cellSize)) {\n cellSize = target.cellSize = [cellSize, cellSize];\n } else if (cellSize.length === 1) {\n cellSize[1] = cellSize[0];\n }\n\n var ignoreSize = zrUtil.map([0, 1], function (hvIdx) {\n // If user have set `width` or both `left` and `right`, cellSize\n // will be automatically set to 'auto', otherwise the default\n // setting of cellSize will make `width` setting not work.\n if (sizeCalculable(raw, hvIdx)) {\n cellSize[hvIdx] = 'auto';\n }\n\n return cellSize[hvIdx] != null && cellSize[hvIdx] !== 'auto';\n });\n mergeLayoutParam(target, raw, {\n type: 'box',\n ignoreSize: ignoreSize\n });\n}\n\nvar _default = CalendarModel;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/calendar/CalendarModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/calendar/prepareCustom.js": +/*!******************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/calendar/prepareCustom.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(coordSys) {\n var rect = coordSys.getRect();\n var rangeInfo = coordSys.getRangeInfo();\n return {\n coordSys: {\n type: 'calendar',\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height,\n cellWidth: coordSys.getCellWidth(),\n cellHeight: coordSys.getCellHeight(),\n rangeInfo: {\n start: rangeInfo.start,\n end: rangeInfo.end,\n weeks: rangeInfo.weeks,\n dayCount: rangeInfo.allDay\n }\n },\n api: {\n coord: function (data, clamp) {\n return coordSys.dataToPoint(data, clamp);\n }\n }\n };\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/calendar/prepareCustom.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/cartesian/Axis2D.js": +/*!************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/cartesian/Axis2D.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar Axis = __webpack_require__(/*! ../Axis */ \"./node_modules/echarts/lib/coord/Axis.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Extend axis 2d\n * @constructor module:echarts/coord/cartesian/Axis2D\n * @extends {module:echarts/coord/cartesian/Axis}\n * @param {string} dim\n * @param {*} scale\n * @param {Array.} coordExtent\n * @param {string} axisType\n * @param {string} position\n */\nvar Axis2D = function (dim, scale, coordExtent, axisType, position) {\n Axis.call(this, dim, scale, coordExtent);\n /**\n * Axis type\n * - 'category'\n * - 'value'\n * - 'time'\n * - 'log'\n * @type {string}\n */\n\n this.type = axisType || 'value';\n /**\n * Axis position\n * - 'top'\n * - 'bottom'\n * - 'left'\n * - 'right'\n */\n\n this.position = position || 'bottom';\n};\n\nAxis2D.prototype = {\n constructor: Axis2D,\n\n /**\n * Index of axis, can be used as key\n */\n index: 0,\n\n /**\n * Implemented in .\n * @return {Array.}\n * If not on zero of other axis, return null/undefined.\n * If no axes, return an empty array.\n */\n getAxesOnZeroOf: null,\n\n /**\n * Axis model\n * @param {module:echarts/coord/cartesian/AxisModel}\n */\n model: null,\n isHorizontal: function () {\n var position = this.position;\n return position === 'top' || position === 'bottom';\n },\n\n /**\n * Each item cooresponds to this.getExtent(), which\n * means globalExtent[0] may greater than globalExtent[1],\n * unless `asc` is input.\n *\n * @param {boolean} [asc]\n * @return {Array.}\n */\n getGlobalExtent: function (asc) {\n var ret = this.getExtent();\n ret[0] = this.toGlobalCoord(ret[0]);\n ret[1] = this.toGlobalCoord(ret[1]);\n asc && ret[0] > ret[1] && ret.reverse();\n return ret;\n },\n getOtherAxis: function () {\n this.grid.getOtherAxis();\n },\n\n /**\n * @override\n */\n pointToData: function (point, clamp) {\n return this.coordToData(this.toLocalCoord(point[this.dim === 'x' ? 0 : 1]), clamp);\n },\n\n /**\n * Transform global coord to local coord,\n * i.e. var localCoord = axis.toLocalCoord(80);\n * designate by module:echarts/coord/cartesian/Grid.\n * @type {Function}\n */\n toLocalCoord: null,\n\n /**\n * Transform global coord to local coord,\n * i.e. var globalCoord = axis.toLocalCoord(40);\n * designate by module:echarts/coord/cartesian/Grid.\n * @type {Function}\n */\n toGlobalCoord: null\n};\nzrUtil.inherits(Axis2D, Axis);\nvar _default = Axis2D;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/cartesian/Axis2D.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/cartesian/AxisModel.js": +/*!***************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/cartesian/AxisModel.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar ComponentModel = __webpack_require__(/*! ../../model/Component */ \"./node_modules/echarts/lib/model/Component.js\");\n\nvar axisModelCreator = __webpack_require__(/*! ../axisModelCreator */ \"./node_modules/echarts/lib/coord/axisModelCreator.js\");\n\nvar axisModelCommonMixin = __webpack_require__(/*! ../axisModelCommonMixin */ \"./node_modules/echarts/lib/coord/axisModelCommonMixin.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar AxisModel = ComponentModel.extend({\n type: 'cartesian2dAxis',\n\n /**\n * @type {module:echarts/coord/cartesian/Axis2D}\n */\n axis: null,\n\n /**\n * @override\n */\n init: function () {\n AxisModel.superApply(this, 'init', arguments);\n this.resetRange();\n },\n\n /**\n * @override\n */\n mergeOption: function () {\n AxisModel.superApply(this, 'mergeOption', arguments);\n this.resetRange();\n },\n\n /**\n * @override\n */\n restoreData: function () {\n AxisModel.superApply(this, 'restoreData', arguments);\n this.resetRange();\n },\n\n /**\n * @override\n * @return {module:echarts/model/Component}\n */\n getCoordSysModel: function () {\n return this.ecModel.queryComponents({\n mainType: 'grid',\n index: this.option.gridIndex,\n id: this.option.gridId\n })[0];\n }\n});\n\nfunction getAxisType(axisDim, option) {\n // Default axis with data is category axis\n return option.type || (option.data ? 'category' : 'value');\n}\n\nzrUtil.merge(AxisModel.prototype, axisModelCommonMixin);\nvar extraOption = {\n // gridIndex: 0,\n // gridId: '',\n // Offset is for multiple axis on the same position\n offset: 0\n};\naxisModelCreator('x', AxisModel, getAxisType, extraOption);\naxisModelCreator('y', AxisModel, getAxisType, extraOption);\nvar _default = AxisModel;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/cartesian/AxisModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/cartesian/Cartesian.js": +/*!***************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/cartesian/Cartesian.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Cartesian coordinate system\n * @module echarts/coord/Cartesian\n *\n */\nfunction dimAxisMapper(dim) {\n return this._axes[dim];\n}\n/**\n * @alias module:echarts/coord/Cartesian\n * @constructor\n */\n\n\nvar Cartesian = function (name) {\n this._axes = {};\n this._dimList = [];\n /**\n * @type {string}\n */\n\n this.name = name || '';\n};\n\nCartesian.prototype = {\n constructor: Cartesian,\n type: 'cartesian',\n\n /**\n * Get axis\n * @param {number|string} dim\n * @return {module:echarts/coord/Cartesian~Axis}\n */\n getAxis: function (dim) {\n return this._axes[dim];\n },\n\n /**\n * Get axes list\n * @return {Array.}\n */\n getAxes: function () {\n return zrUtil.map(this._dimList, dimAxisMapper, this);\n },\n\n /**\n * Get axes list by given scale type\n */\n getAxesByScale: function (scaleType) {\n scaleType = scaleType.toLowerCase();\n return zrUtil.filter(this.getAxes(), function (axis) {\n return axis.scale.type === scaleType;\n });\n },\n\n /**\n * Add axis\n * @param {module:echarts/coord/Cartesian.Axis}\n */\n addAxis: function (axis) {\n var dim = axis.dim;\n this._axes[dim] = axis;\n\n this._dimList.push(dim);\n },\n\n /**\n * Convert data to coord in nd space\n * @param {Array.|Object.} val\n * @return {Array.|Object.}\n */\n dataToCoord: function (val) {\n return this._dataCoordConvert(val, 'dataToCoord');\n },\n\n /**\n * Convert coord in nd space to data\n * @param {Array.|Object.} val\n * @return {Array.|Object.}\n */\n coordToData: function (val) {\n return this._dataCoordConvert(val, 'coordToData');\n },\n _dataCoordConvert: function (input, method) {\n var dimList = this._dimList;\n var output = input instanceof Array ? [] : {};\n\n for (var i = 0; i < dimList.length; i++) {\n var dim = dimList[i];\n var axis = this._axes[dim];\n output[dim] = axis[method](input[dim]);\n }\n\n return output;\n }\n};\nvar _default = Cartesian;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/cartesian/Cartesian.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/cartesian/Cartesian2D.js": +/*!*****************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/cartesian/Cartesian2D.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar BoundingRect = __webpack_require__(/*! zrender/lib/core/BoundingRect */ \"./node_modules/zrender/lib/core/BoundingRect.js\");\n\nvar Cartesian = __webpack_require__(/*! ./Cartesian */ \"./node_modules/echarts/lib/coord/cartesian/Cartesian.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction Cartesian2D(name) {\n Cartesian.call(this, name);\n}\n\nCartesian2D.prototype = {\n constructor: Cartesian2D,\n type: 'cartesian2d',\n\n /**\n * @type {Array.}\n * @readOnly\n */\n dimensions: ['x', 'y'],\n\n /**\n * Base axis will be used on stacking.\n *\n * @return {module:echarts/coord/cartesian/Axis2D}\n */\n getBaseAxis: function () {\n return this.getAxesByScale('ordinal')[0] || this.getAxesByScale('time')[0] || this.getAxis('x');\n },\n\n /**\n * If contain point\n * @param {Array.} point\n * @return {boolean}\n */\n containPoint: function (point) {\n var axisX = this.getAxis('x');\n var axisY = this.getAxis('y');\n return axisX.contain(axisX.toLocalCoord(point[0])) && axisY.contain(axisY.toLocalCoord(point[1]));\n },\n\n /**\n * If contain data\n * @param {Array.} data\n * @return {boolean}\n */\n containData: function (data) {\n return this.getAxis('x').containData(data[0]) && this.getAxis('y').containData(data[1]);\n },\n\n /**\n * @param {Array.} data\n * @param {Array.} out\n * @return {Array.}\n */\n dataToPoint: function (data, reserved, out) {\n var xAxis = this.getAxis('x');\n var yAxis = this.getAxis('y');\n out = out || [];\n out[0] = xAxis.toGlobalCoord(xAxis.dataToCoord(data[0]));\n out[1] = yAxis.toGlobalCoord(yAxis.dataToCoord(data[1]));\n return out;\n },\n\n /**\n * @param {Array.} data\n * @param {Array.} out\n * @return {Array.}\n */\n clampData: function (data, out) {\n var xScale = this.getAxis('x').scale;\n var yScale = this.getAxis('y').scale;\n var xAxisExtent = xScale.getExtent();\n var yAxisExtent = yScale.getExtent();\n var x = xScale.parse(data[0]);\n var y = yScale.parse(data[1]);\n out = out || [];\n out[0] = Math.min(Math.max(Math.min(xAxisExtent[0], xAxisExtent[1]), x), Math.max(xAxisExtent[0], xAxisExtent[1]));\n out[1] = Math.min(Math.max(Math.min(yAxisExtent[0], yAxisExtent[1]), y), Math.max(yAxisExtent[0], yAxisExtent[1]));\n return out;\n },\n\n /**\n * @param {Array.} point\n * @param {Array.} out\n * @return {Array.}\n */\n pointToData: function (point, out) {\n var xAxis = this.getAxis('x');\n var yAxis = this.getAxis('y');\n out = out || [];\n out[0] = xAxis.coordToData(xAxis.toLocalCoord(point[0]));\n out[1] = yAxis.coordToData(yAxis.toLocalCoord(point[1]));\n return out;\n },\n\n /**\n * Get other axis\n * @param {module:echarts/coord/cartesian/Axis2D} axis\n */\n getOtherAxis: function (axis) {\n return this.getAxis(axis.dim === 'x' ? 'y' : 'x');\n },\n\n /**\n * Get rect area of cartesian.\n * Area will have a contain function to determine if a point is in the coordinate system.\n * @return {BoundingRect}\n */\n getArea: function () {\n var xExtent = this.getAxis('x').getGlobalExtent();\n var yExtent = this.getAxis('y').getGlobalExtent();\n var x = Math.min(xExtent[0], xExtent[1]);\n var y = Math.min(yExtent[0], yExtent[1]);\n var width = Math.max(xExtent[0], xExtent[1]) - x;\n var height = Math.max(yExtent[0], yExtent[1]) - y;\n var rect = new BoundingRect(x, y, width, height);\n return rect;\n }\n};\nzrUtil.inherits(Cartesian2D, Cartesian);\nvar _default = Cartesian2D;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/cartesian/Cartesian2D.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/cartesian/Grid.js": +/*!**********************************************************!*\ + !*** ./node_modules/echarts/lib/coord/cartesian/Grid.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar isObject = _util.isObject;\nvar each = _util.each;\nvar map = _util.map;\nvar indexOf = _util.indexOf;\nvar retrieve = _util.retrieve;\n\nvar _layout = __webpack_require__(/*! ../../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar getLayoutRect = _layout.getLayoutRect;\n\nvar _axisHelper = __webpack_require__(/*! ../../coord/axisHelper */ \"./node_modules/echarts/lib/coord/axisHelper.js\");\n\nvar createScaleByModel = _axisHelper.createScaleByModel;\nvar ifAxisCrossZero = _axisHelper.ifAxisCrossZero;\nvar niceScaleExtent = _axisHelper.niceScaleExtent;\nvar estimateLabelUnionRect = _axisHelper.estimateLabelUnionRect;\n\nvar Cartesian2D = __webpack_require__(/*! ./Cartesian2D */ \"./node_modules/echarts/lib/coord/cartesian/Cartesian2D.js\");\n\nvar Axis2D = __webpack_require__(/*! ./Axis2D */ \"./node_modules/echarts/lib/coord/cartesian/Axis2D.js\");\n\nvar CoordinateSystem = __webpack_require__(/*! ../../CoordinateSystem */ \"./node_modules/echarts/lib/CoordinateSystem.js\");\n\nvar _dataStackHelper = __webpack_require__(/*! ../../data/helper/dataStackHelper */ \"./node_modules/echarts/lib/data/helper/dataStackHelper.js\");\n\nvar getStackedDimension = _dataStackHelper.getStackedDimension;\n\n__webpack_require__(/*! ./GridModel */ \"./node_modules/echarts/lib/coord/cartesian/GridModel.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Grid is a region which contains at most 4 cartesian systems\n *\n * TODO Default cartesian\n */\n// Depends on GridModel, AxisModel, which performs preprocess.\n\n/**\n * Check if the axis is used in the specified grid\n * @inner\n */\nfunction isAxisUsedInTheGrid(axisModel, gridModel, ecModel) {\n return axisModel.getCoordSysModel() === gridModel;\n}\n\nfunction Grid(gridModel, ecModel, api) {\n /**\n * @type {Object.}\n * @private\n */\n this._coordsMap = {};\n /**\n * @type {Array.}\n * @private\n */\n\n this._coordsList = [];\n /**\n * @type {Object.>}\n * @private\n */\n\n this._axesMap = {};\n /**\n * @type {Array.}\n * @private\n */\n\n this._axesList = [];\n\n this._initCartesian(gridModel, ecModel, api);\n\n this.model = gridModel;\n}\n\nvar gridProto = Grid.prototype;\ngridProto.type = 'grid';\ngridProto.axisPointerEnabled = true;\n\ngridProto.getRect = function () {\n return this._rect;\n};\n\ngridProto.update = function (ecModel, api) {\n var axesMap = this._axesMap;\n\n this._updateScale(ecModel, this.model);\n\n each(axesMap.x, function (xAxis) {\n niceScaleExtent(xAxis.scale, xAxis.model);\n });\n each(axesMap.y, function (yAxis) {\n niceScaleExtent(yAxis.scale, yAxis.model);\n }); // Key: axisDim_axisIndex, value: boolean, whether onZero target.\n\n var onZeroRecords = {};\n each(axesMap.x, function (xAxis) {\n fixAxisOnZero(axesMap, 'y', xAxis, onZeroRecords);\n });\n each(axesMap.y, function (yAxis) {\n fixAxisOnZero(axesMap, 'x', yAxis, onZeroRecords);\n }); // Resize again if containLabel is enabled\n // FIXME It may cause getting wrong grid size in data processing stage\n\n this.resize(this.model, api);\n};\n\nfunction fixAxisOnZero(axesMap, otherAxisDim, axis, onZeroRecords) {\n axis.getAxesOnZeroOf = function () {\n // TODO: onZero of multiple axes.\n return otherAxisOnZeroOf ? [otherAxisOnZeroOf] : [];\n }; // onZero can not be enabled in these two situations:\n // 1. When any other axis is a category axis.\n // 2. When no axis is cross 0 point.\n\n\n var otherAxes = axesMap[otherAxisDim];\n var otherAxisOnZeroOf;\n var axisModel = axis.model;\n var onZero = axisModel.get('axisLine.onZero');\n var onZeroAxisIndex = axisModel.get('axisLine.onZeroAxisIndex');\n\n if (!onZero) {\n return;\n } // If target axis is specified.\n\n\n if (onZeroAxisIndex != null) {\n if (canOnZeroToAxis(otherAxes[onZeroAxisIndex])) {\n otherAxisOnZeroOf = otherAxes[onZeroAxisIndex];\n }\n } else {\n // Find the first available other axis.\n for (var idx in otherAxes) {\n if (otherAxes.hasOwnProperty(idx) && canOnZeroToAxis(otherAxes[idx]) // Consider that two Y axes on one value axis,\n // if both onZero, the two Y axes overlap.\n && !onZeroRecords[getOnZeroRecordKey(otherAxes[idx])]) {\n otherAxisOnZeroOf = otherAxes[idx];\n break;\n }\n }\n }\n\n if (otherAxisOnZeroOf) {\n onZeroRecords[getOnZeroRecordKey(otherAxisOnZeroOf)] = true;\n }\n\n function getOnZeroRecordKey(axis) {\n return axis.dim + '_' + axis.index;\n }\n}\n\nfunction canOnZeroToAxis(axis) {\n return axis && axis.type !== 'category' && axis.type !== 'time' && ifAxisCrossZero(axis);\n}\n/**\n * Resize the grid\n * @param {module:echarts/coord/cartesian/GridModel} gridModel\n * @param {module:echarts/ExtensionAPI} api\n */\n\n\ngridProto.resize = function (gridModel, api, ignoreContainLabel) {\n var gridRect = getLayoutRect(gridModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n this._rect = gridRect;\n var axesList = this._axesList;\n adjustAxes(); // Minus label size\n\n if (!ignoreContainLabel && gridModel.get('containLabel')) {\n each(axesList, function (axis) {\n if (!axis.model.get('axisLabel.inside')) {\n var labelUnionRect = estimateLabelUnionRect(axis);\n\n if (labelUnionRect) {\n var dim = axis.isHorizontal() ? 'height' : 'width';\n var margin = axis.model.get('axisLabel.margin');\n gridRect[dim] -= labelUnionRect[dim] + margin;\n\n if (axis.position === 'top') {\n gridRect.y += labelUnionRect.height + margin;\n } else if (axis.position === 'left') {\n gridRect.x += labelUnionRect.width + margin;\n }\n }\n }\n });\n adjustAxes();\n }\n\n function adjustAxes() {\n each(axesList, function (axis) {\n var isHorizontal = axis.isHorizontal();\n var extent = isHorizontal ? [0, gridRect.width] : [0, gridRect.height];\n var idx = axis.inverse ? 1 : 0;\n axis.setExtent(extent[idx], extent[1 - idx]);\n updateAxisTransform(axis, isHorizontal ? gridRect.x : gridRect.y);\n });\n }\n};\n/**\n * @param {string} axisType\n * @param {number} [axisIndex]\n */\n\n\ngridProto.getAxis = function (axisType, axisIndex) {\n var axesMapOnDim = this._axesMap[axisType];\n\n if (axesMapOnDim != null) {\n if (axisIndex == null) {\n // Find first axis\n for (var name in axesMapOnDim) {\n if (axesMapOnDim.hasOwnProperty(name)) {\n return axesMapOnDim[name];\n }\n }\n }\n\n return axesMapOnDim[axisIndex];\n }\n};\n/**\n * @return {Array.}\n */\n\n\ngridProto.getAxes = function () {\n return this._axesList.slice();\n};\n/**\n * Usage:\n * grid.getCartesian(xAxisIndex, yAxisIndex);\n * grid.getCartesian(xAxisIndex);\n * grid.getCartesian(null, yAxisIndex);\n * grid.getCartesian({xAxisIndex: ..., yAxisIndex: ...});\n *\n * @param {number|Object} [xAxisIndex]\n * @param {number} [yAxisIndex]\n */\n\n\ngridProto.getCartesian = function (xAxisIndex, yAxisIndex) {\n if (xAxisIndex != null && yAxisIndex != null) {\n var key = 'x' + xAxisIndex + 'y' + yAxisIndex;\n return this._coordsMap[key];\n }\n\n if (isObject(xAxisIndex)) {\n yAxisIndex = xAxisIndex.yAxisIndex;\n xAxisIndex = xAxisIndex.xAxisIndex;\n } // When only xAxisIndex or yAxisIndex given, find its first cartesian.\n\n\n for (var i = 0, coordList = this._coordsList; i < coordList.length; i++) {\n if (coordList[i].getAxis('x').index === xAxisIndex || coordList[i].getAxis('y').index === yAxisIndex) {\n return coordList[i];\n }\n }\n};\n\ngridProto.getCartesians = function () {\n return this._coordsList.slice();\n};\n/**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n\n\ngridProto.convertToPixel = function (ecModel, finder, value) {\n var target = this._findConvertTarget(ecModel, finder);\n\n return target.cartesian ? target.cartesian.dataToPoint(value) : target.axis ? target.axis.toGlobalCoord(target.axis.dataToCoord(value)) : null;\n};\n/**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n\n\ngridProto.convertFromPixel = function (ecModel, finder, value) {\n var target = this._findConvertTarget(ecModel, finder);\n\n return target.cartesian ? target.cartesian.pointToData(value) : target.axis ? target.axis.coordToData(target.axis.toLocalCoord(value)) : null;\n};\n/**\n * @inner\n */\n\n\ngridProto._findConvertTarget = function (ecModel, finder) {\n var seriesModel = finder.seriesModel;\n var xAxisModel = finder.xAxisModel || seriesModel && seriesModel.getReferringComponents('xAxis')[0];\n var yAxisModel = finder.yAxisModel || seriesModel && seriesModel.getReferringComponents('yAxis')[0];\n var gridModel = finder.gridModel;\n var coordsList = this._coordsList;\n var cartesian;\n var axis;\n\n if (seriesModel) {\n cartesian = seriesModel.coordinateSystem;\n indexOf(coordsList, cartesian) < 0 && (cartesian = null);\n } else if (xAxisModel && yAxisModel) {\n cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\n } else if (xAxisModel) {\n axis = this.getAxis('x', xAxisModel.componentIndex);\n } else if (yAxisModel) {\n axis = this.getAxis('y', yAxisModel.componentIndex);\n } // Lowest priority.\n else if (gridModel) {\n var grid = gridModel.coordinateSystem;\n\n if (grid === this) {\n cartesian = this._coordsList[0];\n }\n }\n\n return {\n cartesian: cartesian,\n axis: axis\n };\n};\n/**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n\n\ngridProto.containPoint = function (point) {\n var coord = this._coordsList[0];\n\n if (coord) {\n return coord.containPoint(point);\n }\n};\n/**\n * Initialize cartesian coordinate systems\n * @private\n */\n\n\ngridProto._initCartesian = function (gridModel, ecModel, api) {\n var axisPositionUsed = {\n left: false,\n right: false,\n top: false,\n bottom: false\n };\n var axesMap = {\n x: {},\n y: {}\n };\n var axesCount = {\n x: 0,\n y: 0\n }; /// Create axis\n\n ecModel.eachComponent('xAxis', createAxisCreator('x'), this);\n ecModel.eachComponent('yAxis', createAxisCreator('y'), this);\n\n if (!axesCount.x || !axesCount.y) {\n // Roll back when there no either x or y axis\n this._axesMap = {};\n this._axesList = [];\n return;\n }\n\n this._axesMap = axesMap; /// Create cartesian2d\n\n each(axesMap.x, function (xAxis, xAxisIndex) {\n each(axesMap.y, function (yAxis, yAxisIndex) {\n var key = 'x' + xAxisIndex + 'y' + yAxisIndex;\n var cartesian = new Cartesian2D(key);\n cartesian.grid = this;\n cartesian.model = gridModel;\n this._coordsMap[key] = cartesian;\n\n this._coordsList.push(cartesian);\n\n cartesian.addAxis(xAxis);\n cartesian.addAxis(yAxis);\n }, this);\n }, this);\n\n function createAxisCreator(axisType) {\n return function (axisModel, idx) {\n if (!isAxisUsedInTheGrid(axisModel, gridModel, ecModel)) {\n return;\n }\n\n var axisPosition = axisModel.get('position');\n\n if (axisType === 'x') {\n // Fix position\n if (axisPosition !== 'top' && axisPosition !== 'bottom') {\n // Default bottom of X\n axisPosition = axisPositionUsed.bottom ? 'top' : 'bottom';\n }\n } else {\n // Fix position\n if (axisPosition !== 'left' && axisPosition !== 'right') {\n // Default left of Y\n axisPosition = axisPositionUsed.left ? 'right' : 'left';\n }\n }\n\n axisPositionUsed[axisPosition] = true;\n var axis = new Axis2D(axisType, createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisPosition);\n var isCategory = axis.type === 'category';\n axis.onBand = isCategory && axisModel.get('boundaryGap');\n axis.inverse = axisModel.get('inverse'); // Inject axis into axisModel\n\n axisModel.axis = axis; // Inject axisModel into axis\n\n axis.model = axisModel; // Inject grid info axis\n\n axis.grid = this; // Index of axis, can be used as key\n\n axis.index = idx;\n\n this._axesList.push(axis);\n\n axesMap[axisType][idx] = axis;\n axesCount[axisType]++;\n };\n }\n};\n/**\n * Update cartesian properties from series\n * @param {module:echarts/model/Option} option\n * @private\n */\n\n\ngridProto._updateScale = function (ecModel, gridModel) {\n // Reset scale\n each(this._axesList, function (axis) {\n axis.scale.setExtent(Infinity, -Infinity);\n });\n ecModel.eachSeries(function (seriesModel) {\n if (isCartesian2D(seriesModel)) {\n var axesModels = findAxesModels(seriesModel, ecModel);\n var xAxisModel = axesModels[0];\n var yAxisModel = axesModels[1];\n\n if (!isAxisUsedInTheGrid(xAxisModel, gridModel, ecModel) || !isAxisUsedInTheGrid(yAxisModel, gridModel, ecModel)) {\n return;\n }\n\n var cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\n var data = seriesModel.getData();\n var xAxis = cartesian.getAxis('x');\n var yAxis = cartesian.getAxis('y');\n\n if (data.type === 'list') {\n unionExtent(data, xAxis, seriesModel);\n unionExtent(data, yAxis, seriesModel);\n }\n }\n }, this);\n\n function unionExtent(data, axis, seriesModel) {\n each(data.mapDimension(axis.dim, true), function (dim) {\n axis.scale.unionExtentFromData( // For example, the extent of the orginal dimension\n // is [0.1, 0.5], the extent of the `stackResultDimension`\n // is [7, 9], the final extent should not include [0.1, 0.5].\n data, getStackedDimension(data, dim));\n });\n }\n};\n/**\n * @param {string} [dim] 'x' or 'y' or 'auto' or null/undefined\n * @return {Object} {baseAxes: [], otherAxes: []}\n */\n\n\ngridProto.getTooltipAxes = function (dim) {\n var baseAxes = [];\n var otherAxes = [];\n each(this.getCartesians(), function (cartesian) {\n var baseAxis = dim != null && dim !== 'auto' ? cartesian.getAxis(dim) : cartesian.getBaseAxis();\n var otherAxis = cartesian.getOtherAxis(baseAxis);\n indexOf(baseAxes, baseAxis) < 0 && baseAxes.push(baseAxis);\n indexOf(otherAxes, otherAxis) < 0 && otherAxes.push(otherAxis);\n });\n return {\n baseAxes: baseAxes,\n otherAxes: otherAxes\n };\n};\n/**\n * @inner\n */\n\n\nfunction updateAxisTransform(axis, coordBase) {\n var axisExtent = axis.getExtent();\n var axisExtentSum = axisExtent[0] + axisExtent[1]; // Fast transform\n\n axis.toGlobalCoord = axis.dim === 'x' ? function (coord) {\n return coord + coordBase;\n } : function (coord) {\n return axisExtentSum - coord + coordBase;\n };\n axis.toLocalCoord = axis.dim === 'x' ? function (coord) {\n return coord - coordBase;\n } : function (coord) {\n return axisExtentSum - coord + coordBase;\n };\n}\n\nvar axesTypes = ['xAxis', 'yAxis'];\n/**\n * @inner\n */\n\nfunction findAxesModels(seriesModel, ecModel) {\n return map(axesTypes, function (axisType) {\n var axisModel = seriesModel.getReferringComponents(axisType)[0];\n return axisModel;\n });\n}\n/**\n * @inner\n */\n\n\nfunction isCartesian2D(seriesModel) {\n return seriesModel.get('coordinateSystem') === 'cartesian2d';\n}\n\nGrid.create = function (ecModel, api) {\n var grids = [];\n ecModel.eachComponent('grid', function (gridModel, idx) {\n var grid = new Grid(gridModel, ecModel, api);\n grid.name = 'grid_' + idx; // dataSampling requires axis extent, so resize\n // should be performed in create stage.\n\n grid.resize(gridModel, api, true);\n gridModel.coordinateSystem = grid;\n grids.push(grid);\n }); // Inject the coordinateSystems into seriesModel\n\n ecModel.eachSeries(function (seriesModel) {\n if (!isCartesian2D(seriesModel)) {\n return;\n }\n\n var axesModels = findAxesModels(seriesModel, ecModel);\n var xAxisModel = axesModels[0];\n var yAxisModel = axesModels[1];\n var gridModel = xAxisModel.getCoordSysModel();\n var grid = gridModel.coordinateSystem;\n seriesModel.coordinateSystem = grid.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\n });\n return grids;\n}; // For deciding which dimensions to use when creating list data\n\n\nGrid.dimensions = Grid.prototype.dimensions = Cartesian2D.prototype.dimensions;\nCoordinateSystem.register('cartesian2d', Grid);\nvar _default = Grid;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/cartesian/Grid.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/cartesian/GridModel.js": +/*!***************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/cartesian/GridModel.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(/*! ./AxisModel */ \"./node_modules/echarts/lib/coord/cartesian/AxisModel.js\");\n\nvar ComponentModel = __webpack_require__(/*! ../../model/Component */ \"./node_modules/echarts/lib/model/Component.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Grid 是在有直角坐标系的时候必须要存在的\n// 所以这里也要被 Cartesian2D 依赖\nvar _default = ComponentModel.extend({\n type: 'grid',\n dependencies: ['xAxis', 'yAxis'],\n layoutMode: 'box',\n\n /**\n * @type {module:echarts/coord/cartesian/Grid}\n */\n coordinateSystem: null,\n defaultOption: {\n show: false,\n zlevel: 0,\n z: 0,\n left: '10%',\n top: 60,\n right: '10%',\n bottom: 60,\n // If grid size contain label\n containLabel: false,\n // width: {totalWidth} - left - right,\n // height: {totalHeight} - top - bottom,\n backgroundColor: 'rgba(0,0,0,0)',\n borderWidth: 1,\n borderColor: '#ccc'\n }\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/cartesian/GridModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/cartesian/cartesianAxisHelper.js": +/*!*************************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/cartesian/cartesianAxisHelper.js ***! + \*************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Can only be called after coordinate system creation stage.\n * (Can be called before coordinate system update stage).\n *\n * @param {Object} opt {labelInside}\n * @return {Object} {\n * position, rotation, labelDirection, labelOffset,\n * tickDirection, labelRotate, z2\n * }\n */\nfunction layout(gridModel, axisModel, opt) {\n opt = opt || {};\n var grid = gridModel.coordinateSystem;\n var axis = axisModel.axis;\n var layout = {};\n var otherAxisOnZeroOf = axis.getAxesOnZeroOf()[0];\n var rawAxisPosition = axis.position;\n var axisPosition = otherAxisOnZeroOf ? 'onZero' : rawAxisPosition;\n var axisDim = axis.dim;\n var rect = grid.getRect();\n var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];\n var idx = {\n left: 0,\n right: 1,\n top: 0,\n bottom: 1,\n onZero: 2\n };\n var axisOffset = axisModel.get('offset') || 0;\n var posBound = axisDim === 'x' ? [rectBound[2] - axisOffset, rectBound[3] + axisOffset] : [rectBound[0] - axisOffset, rectBound[1] + axisOffset];\n\n if (otherAxisOnZeroOf) {\n var onZeroCoord = otherAxisOnZeroOf.toGlobalCoord(otherAxisOnZeroOf.dataToCoord(0));\n posBound[idx.onZero] = Math.max(Math.min(onZeroCoord, posBound[1]), posBound[0]);\n } // Axis position\n\n\n layout.position = [axisDim === 'y' ? posBound[idx[axisPosition]] : rectBound[0], axisDim === 'x' ? posBound[idx[axisPosition]] : rectBound[3]]; // Axis rotation\n\n layout.rotation = Math.PI / 2 * (axisDim === 'x' ? 0 : 1); // Tick and label direction, x y is axisDim\n\n var dirMap = {\n top: -1,\n bottom: 1,\n left: -1,\n right: 1\n };\n layout.labelDirection = layout.tickDirection = layout.nameDirection = dirMap[rawAxisPosition];\n layout.labelOffset = otherAxisOnZeroOf ? posBound[idx[rawAxisPosition]] - posBound[idx.onZero] : 0;\n\n if (axisModel.get('axisTick.inside')) {\n layout.tickDirection = -layout.tickDirection;\n }\n\n if (zrUtil.retrieve(opt.labelInside, axisModel.get('axisLabel.inside'))) {\n layout.labelDirection = -layout.labelDirection;\n } // Special label rotation\n\n\n var labelRotate = axisModel.get('axisLabel.rotate');\n layout.labelRotate = axisPosition === 'top' ? -labelRotate : labelRotate; // Over splitLine and splitArea\n\n layout.z2 = 1;\n return layout;\n}\n\nexports.layout = layout;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/cartesian/cartesianAxisHelper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/cartesian/prepareCustom.js": +/*!*******************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/cartesian/prepareCustom.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction dataToCoordSize(dataSize, dataItem) {\n // dataItem is necessary in log axis.\n dataItem = dataItem || [0, 0];\n return zrUtil.map(['x', 'y'], function (dim, dimIdx) {\n var axis = this.getAxis(dim);\n var val = dataItem[dimIdx];\n var halfSize = dataSize[dimIdx] / 2;\n return axis.type === 'category' ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));\n }, this);\n}\n\nfunction _default(coordSys) {\n var rect = coordSys.grid.getRect();\n return {\n coordSys: {\n // The name exposed to user is always 'cartesian2d' but not 'grid'.\n type: 'cartesian2d',\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height\n },\n api: {\n coord: function (data) {\n // do not provide \"out\" param\n return coordSys.dataToPoint(data);\n },\n size: zrUtil.bind(dataToCoordSize, coordSys)\n }\n };\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/cartesian/prepareCustom.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/geo/Geo.js": +/*!***************************************************!*\ + !*** ./node_modules/echarts/lib/coord/geo/Geo.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar BoundingRect = __webpack_require__(/*! zrender/lib/core/BoundingRect */ \"./node_modules/zrender/lib/core/BoundingRect.js\");\n\nvar View = __webpack_require__(/*! ../View */ \"./node_modules/echarts/lib/coord/View.js\");\n\nvar geoSourceManager = __webpack_require__(/*! ./geoSourceManager */ \"./node_modules/echarts/lib/coord/geo/geoSourceManager.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * [Geo description]\n * For backward compatibility, the orginal interface:\n * `name, map, geoJson, specialAreas, nameMap` is kept.\n *\n * @param {string|Object} name\n * @param {string} map Map type\n * Specify the positioned areas by left, top, width, height\n * @param {Object.} [nameMap]\n * Specify name alias\n * @param {boolean} [invertLongitute=true]\n */\nfunction Geo(name, map, nameMap, invertLongitute) {\n View.call(this, name);\n /**\n * Map type\n * @type {string}\n */\n\n this.map = map;\n var source = geoSourceManager.load(map, nameMap);\n this._nameCoordMap = source.nameCoordMap;\n this._regionsMap = source.regionsMap;\n this._invertLongitute = invertLongitute == null ? true : invertLongitute;\n /**\n * @readOnly\n */\n\n this.regions = source.regions;\n /**\n * @type {module:zrender/src/core/BoundingRect}\n */\n\n this._rect = source.boundingRect;\n}\n\nGeo.prototype = {\n constructor: Geo,\n type: 'geo',\n\n /**\n * @param {Array.}\n * @readOnly\n */\n dimensions: ['lng', 'lat'],\n\n /**\n * If contain given lng,lat coord\n * @param {Array.}\n * @readOnly\n */\n containCoord: function (coord) {\n var regions = this.regions;\n\n for (var i = 0; i < regions.length; i++) {\n if (regions[i].contain(coord)) {\n return true;\n }\n }\n\n return false;\n },\n\n /**\n * @override\n */\n transformTo: function (x, y, width, height) {\n var rect = this.getBoundingRect();\n var invertLongitute = this._invertLongitute;\n rect = rect.clone();\n\n if (invertLongitute) {\n // Longitute is inverted\n rect.y = -rect.y - rect.height;\n }\n\n var rawTransformable = this._rawTransformable;\n rawTransformable.transform = rect.calculateTransform(new BoundingRect(x, y, width, height));\n rawTransformable.decomposeTransform();\n\n if (invertLongitute) {\n var scale = rawTransformable.scale;\n scale[1] = -scale[1];\n }\n\n rawTransformable.updateTransform();\n\n this._updateTransform();\n },\n\n /**\n * @param {string} name\n * @return {module:echarts/coord/geo/Region}\n */\n getRegion: function (name) {\n return this._regionsMap.get(name);\n },\n getRegionByCoord: function (coord) {\n var regions = this.regions;\n\n for (var i = 0; i < regions.length; i++) {\n if (regions[i].contain(coord)) {\n return regions[i];\n }\n }\n },\n\n /**\n * Add geoCoord for indexing by name\n * @param {string} name\n * @param {Array.} geoCoord\n */\n addGeoCoord: function (name, geoCoord) {\n this._nameCoordMap.set(name, geoCoord);\n },\n\n /**\n * Get geoCoord by name\n * @param {string} name\n * @return {Array.}\n */\n getGeoCoord: function (name) {\n return this._nameCoordMap.get(name);\n },\n\n /**\n * @override\n */\n getBoundingRect: function () {\n return this._rect;\n },\n\n /**\n * @param {string|Array.} data\n * @param {boolean} noRoam\n * @param {Array.} [out]\n * @return {Array.}\n */\n dataToPoint: function (data, noRoam, out) {\n if (typeof data === 'string') {\n // Map area name to geoCoord\n data = this.getGeoCoord(data);\n }\n\n if (data) {\n return View.prototype.dataToPoint.call(this, data, noRoam, out);\n }\n },\n\n /**\n * @override\n */\n convertToPixel: zrUtil.curry(doConvert, 'dataToPoint'),\n\n /**\n * @override\n */\n convertFromPixel: zrUtil.curry(doConvert, 'pointToData')\n};\nzrUtil.mixin(Geo, View);\n\nfunction doConvert(methodName, ecModel, finder, value) {\n var geoModel = finder.geoModel;\n var seriesModel = finder.seriesModel;\n var coordSys = geoModel ? geoModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem // For map.\n || (seriesModel.getReferringComponents('geo')[0] || {}).coordinateSystem : null;\n return coordSys === this ? coordSys[methodName](value) : null;\n}\n\nvar _default = Geo;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/geo/Geo.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/geo/GeoModel.js": +/*!********************************************************!*\ + !*** ./node_modules/echarts/lib/coord/geo/GeoModel.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar modelUtil = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar ComponentModel = __webpack_require__(/*! ../../model/Component */ \"./node_modules/echarts/lib/model/Component.js\");\n\nvar Model = __webpack_require__(/*! ../../model/Model */ \"./node_modules/echarts/lib/model/Model.js\");\n\nvar selectableMixin = __webpack_require__(/*! ../../component/helper/selectableMixin */ \"./node_modules/echarts/lib/component/helper/selectableMixin.js\");\n\nvar geoCreator = __webpack_require__(/*! ./geoCreator */ \"./node_modules/echarts/lib/coord/geo/geoCreator.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar GeoModel = ComponentModel.extend({\n type: 'geo',\n\n /**\n * @type {module:echarts/coord/geo/Geo}\n */\n coordinateSystem: null,\n layoutMode: 'box',\n init: function (option) {\n ComponentModel.prototype.init.apply(this, arguments); // Default label emphasis `show`\n\n modelUtil.defaultEmphasis(option, 'label', ['show']);\n },\n optionUpdated: function () {\n var option = this.option;\n var self = this;\n option.regions = geoCreator.getFilledRegions(option.regions, option.map, option.nameMap);\n this._optionModelMap = zrUtil.reduce(option.regions || [], function (optionModelMap, regionOpt) {\n if (regionOpt.name) {\n optionModelMap.set(regionOpt.name, new Model(regionOpt, self));\n }\n\n return optionModelMap;\n }, zrUtil.createHashMap());\n this.updateSelectedMap(option.regions);\n },\n defaultOption: {\n zlevel: 0,\n z: 0,\n show: true,\n left: 'center',\n top: 'center',\n // width:,\n // height:,\n // right\n // bottom\n // Aspect is width / height. Inited to be geoJson bbox aspect\n // This parameter is used for scale this aspect\n // If svg used, aspectScale is 1 by default.\n // aspectScale: 0.75,\n aspectScale: null,\n ///// Layout with center and size\n // If you wan't to put map in a fixed size box with right aspect ratio\n // This two properties may more conveninet\n // layoutCenter: [50%, 50%]\n // layoutSize: 100\n silent: false,\n // Map type\n map: '',\n // Define left-top, right-bottom coords to control view\n // For example, [ [180, 90], [-180, -90] ]\n boundingCoords: null,\n // Default on center of map\n center: null,\n zoom: 1,\n scaleLimit: null,\n // selectedMode: false\n label: {\n show: false,\n color: '#000'\n },\n itemStyle: {\n // color: 各异,\n borderWidth: 0.5,\n borderColor: '#444',\n color: '#eee'\n },\n emphasis: {\n label: {\n show: true,\n color: 'rgb(100,0,0)'\n },\n itemStyle: {\n color: 'rgba(255,215,0,0.8)'\n }\n },\n regions: []\n },\n\n /**\n * Get model of region\n * @param {string} name\n * @return {module:echarts/model/Model}\n */\n getRegionModel: function (name) {\n return this._optionModelMap.get(name) || new Model(null, this, this.ecModel);\n },\n\n /**\n * Format label\n * @param {string} name Region name\n * @param {string} [status='normal'] 'normal' or 'emphasis'\n * @return {string}\n */\n getFormattedLabel: function (name, status) {\n status = status || 'normal';\n var regionModel = this.getRegionModel(name);\n var formatter = regionModel.get((status === 'normal' ? '' : status + '.') + 'label.formatter');\n var params = {\n name: name\n };\n\n if (typeof formatter === 'function') {\n params.status = status;\n return formatter(params);\n } else if (typeof formatter === 'string') {\n return formatter.replace('{a}', name != null ? name : '');\n }\n },\n setZoom: function (zoom) {\n this.option.zoom = zoom;\n },\n setCenter: function (center) {\n this.option.center = center;\n }\n});\nzrUtil.mixin(GeoModel, selectableMixin);\nvar _default = GeoModel;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/geo/GeoModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/geo/Region.js": +/*!******************************************************!*\ + !*** ./node_modules/echarts/lib/coord/geo/Region.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar BoundingRect = __webpack_require__(/*! zrender/lib/core/BoundingRect */ \"./node_modules/zrender/lib/core/BoundingRect.js\");\n\nvar bbox = __webpack_require__(/*! zrender/lib/core/bbox */ \"./node_modules/zrender/lib/core/bbox.js\");\n\nvar vec2 = __webpack_require__(/*! zrender/lib/core/vector */ \"./node_modules/zrender/lib/core/vector.js\");\n\nvar polygonContain = __webpack_require__(/*! zrender/lib/contain/polygon */ \"./node_modules/zrender/lib/contain/polygon.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/coord/geo/Region\n */\n\n/**\n * @param {string|Region} name\n * @param {Array} geometries\n * @param {Array.} cp\n */\nfunction Region(name, geometries, cp) {\n /**\n * @type {string}\n * @readOnly\n */\n this.name = name;\n /**\n * @type {Array.}\n * @readOnly\n */\n\n this.geometries = geometries;\n\n if (!cp) {\n var rect = this.getBoundingRect();\n cp = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n } else {\n cp = [cp[0], cp[1]];\n }\n /**\n * @type {Array.}\n */\n\n\n this.center = cp;\n}\n\nRegion.prototype = {\n constructor: Region,\n properties: null,\n\n /**\n * @return {module:zrender/core/BoundingRect}\n */\n getBoundingRect: function () {\n var rect = this._rect;\n\n if (rect) {\n return rect;\n }\n\n var MAX_NUMBER = Number.MAX_VALUE;\n var min = [MAX_NUMBER, MAX_NUMBER];\n var max = [-MAX_NUMBER, -MAX_NUMBER];\n var min2 = [];\n var max2 = [];\n var geometries = this.geometries;\n\n for (var i = 0; i < geometries.length; i++) {\n // Only support polygon\n if (geometries[i].type !== 'polygon') {\n continue;\n } // Doesn't consider hole\n\n\n var exterior = geometries[i].exterior;\n bbox.fromPoints(exterior, min2, max2);\n vec2.min(min, min, min2);\n vec2.max(max, max, max2);\n } // No data\n\n\n if (i === 0) {\n min[0] = min[1] = max[0] = max[1] = 0;\n }\n\n return this._rect = new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n },\n\n /**\n * @param {} coord\n * @return {boolean}\n */\n contain: function (coord) {\n var rect = this.getBoundingRect();\n var geometries = this.geometries;\n\n if (!rect.contain(coord[0], coord[1])) {\n return false;\n }\n\n loopGeo: for (var i = 0, len = geometries.length; i < len; i++) {\n // Only support polygon.\n if (geometries[i].type !== 'polygon') {\n continue;\n }\n\n var exterior = geometries[i].exterior;\n var interiors = geometries[i].interiors;\n\n if (polygonContain.contain(exterior, coord[0], coord[1])) {\n // Not in the region if point is in the hole.\n for (var k = 0; k < (interiors ? interiors.length : 0); k++) {\n if (polygonContain.contain(interiors[k])) {\n continue loopGeo;\n }\n }\n\n return true;\n }\n }\n\n return false;\n },\n transformTo: function (x, y, width, height) {\n var rect = this.getBoundingRect();\n var aspect = rect.width / rect.height;\n\n if (!width) {\n width = aspect * height;\n } else if (!height) {\n height = width / aspect;\n }\n\n var target = new BoundingRect(x, y, width, height);\n var transform = rect.calculateTransform(target);\n var geometries = this.geometries;\n\n for (var i = 0; i < geometries.length; i++) {\n // Only support polygon.\n if (geometries[i].type !== 'polygon') {\n continue;\n }\n\n var exterior = geometries[i].exterior;\n var interiors = geometries[i].interiors;\n\n for (var p = 0; p < exterior.length; p++) {\n vec2.applyTransform(exterior[p], exterior[p], transform);\n }\n\n for (var h = 0; h < (interiors ? interiors.length : 0); h++) {\n for (var p = 0; p < interiors[h].length; p++) {\n vec2.applyTransform(interiors[h][p], interiors[h][p], transform);\n }\n }\n }\n\n rect = this._rect;\n rect.copy(target); // Update center\n\n this.center = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n },\n cloneShallow: function (name) {\n name == null && (name = this.name);\n var newRegion = new Region(name, this.geometries, this.center);\n newRegion._rect = this._rect;\n newRegion.transformTo = null; // Simply avoid to be called.\n\n return newRegion;\n }\n};\nvar _default = Region;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/geo/Region.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/geo/fix/diaoyuIsland.js": +/*!****************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/geo/fix/diaoyuIsland.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Fix for 钓鱼岛\n// var Region = require('../Region');\n// var zrUtil = require('zrender/src/core/util');\n// var geoCoord = [126, 25];\nvar points = [[[123.45165252685547, 25.73527164402261], [123.49731445312499, 25.73527164402261], [123.49731445312499, 25.750734064600884], [123.45165252685547, 25.750734064600884], [123.45165252685547, 25.73527164402261]]];\n\nfunction _default(mapType, region) {\n if (mapType === 'china' && region.name === '台湾') {\n region.geometries.push({\n type: 'polygon',\n exterior: points[0]\n });\n }\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/geo/fix/diaoyuIsland.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/geo/fix/geoCoord.js": +/*!************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/geo/fix/geoCoord.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar geoCoordMap = {\n 'Russia': [100, 60],\n 'United States': [-99, 38],\n 'United States of America': [-99, 38]\n};\n\nfunction _default(mapType, region) {\n if (mapType === 'world') {\n var geoCoord = geoCoordMap[region.name];\n\n if (geoCoord) {\n var cp = region.center;\n cp[0] = geoCoord[0];\n cp[1] = geoCoord[1];\n }\n }\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/geo/fix/geoCoord.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/geo/fix/nanhai.js": +/*!**********************************************************!*\ + !*** ./node_modules/echarts/lib/coord/geo/fix/nanhai.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar Region = __webpack_require__(/*! ../Region */ \"./node_modules/echarts/lib/coord/geo/Region.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Fix for 南海诸岛\nvar geoCoord = [126, 25];\nvar points = [[[0, 3.5], [7, 11.2], [15, 11.9], [30, 7], [42, 0.7], [52, 0.7], [56, 7.7], [59, 0.7], [64, 0.7], [64, 0], [5, 0], [0, 3.5]], [[13, 16.1], [19, 14.7], [16, 21.7], [11, 23.1], [13, 16.1]], [[12, 32.2], [14, 38.5], [15, 38.5], [13, 32.2], [12, 32.2]], [[16, 47.6], [12, 53.2], [13, 53.2], [18, 47.6], [16, 47.6]], [[6, 64.4], [8, 70], [9, 70], [8, 64.4], [6, 64.4]], [[23, 82.6], [29, 79.8], [30, 79.8], [25, 82.6], [23, 82.6]], [[37, 70.7], [43, 62.3], [44, 62.3], [39, 70.7], [37, 70.7]], [[48, 51.1], [51, 45.5], [53, 45.5], [50, 51.1], [48, 51.1]], [[51, 35], [51, 28.7], [53, 28.7], [53, 35], [51, 35]], [[52, 22.4], [55, 17.5], [56, 17.5], [53, 22.4], [52, 22.4]], [[58, 12.6], [62, 7], [63, 7], [60, 12.6], [58, 12.6]], [[0, 3.5], [0, 93.1], [64, 93.1], [64, 0], [63, 0], [63, 92.4], [1, 92.4], [1, 3.5], [0, 3.5]]];\n\nfor (var i = 0; i < points.length; i++) {\n for (var k = 0; k < points[i].length; k++) {\n points[i][k][0] /= 10.5;\n points[i][k][1] /= -10.5 / 0.75;\n points[i][k][0] += geoCoord[0];\n points[i][k][1] += geoCoord[1];\n }\n}\n\nfunction _default(mapType, regions) {\n if (mapType === 'china') {\n regions.push(new Region('南海诸岛', zrUtil.map(points, function (exterior) {\n return {\n type: 'polygon',\n exterior: exterior\n };\n }), geoCoord));\n }\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/geo/fix/nanhai.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/geo/fix/textCoord.js": +/*!*************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/geo/fix/textCoord.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar coordsOffsetMap = {\n '南海诸岛': [32, 80],\n // 全国\n '广东': [0, -10],\n '香港': [10, 5],\n '澳门': [-10, 10],\n //'北京': [-10, 0],\n '天津': [5, 5]\n};\n\nfunction _default(mapType, region) {\n if (mapType === 'china') {\n var coordFix = coordsOffsetMap[region.name];\n\n if (coordFix) {\n var cp = region.center;\n cp[0] += coordFix[0] / 10.5;\n cp[1] += -coordFix[1] / (10.5 / 0.75);\n }\n }\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/geo/fix/textCoord.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/geo/geoCreator.js": +/*!**********************************************************!*\ + !*** ./node_modules/echarts/lib/coord/geo/geoCreator.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar Geo = __webpack_require__(/*! ./Geo */ \"./node_modules/echarts/lib/coord/geo/Geo.js\");\n\nvar layout = __webpack_require__(/*! ../../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar numberUtil = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar geoSourceManager = __webpack_require__(/*! ./geoSourceManager */ \"./node_modules/echarts/lib/coord/geo/geoSourceManager.js\");\n\nvar mapDataStorage = __webpack_require__(/*! ./mapDataStorage */ \"./node_modules/echarts/lib/coord/geo/mapDataStorage.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Resize method bound to the geo\n * @param {module:echarts/coord/geo/GeoModel|module:echarts/chart/map/MapModel} geoModel\n * @param {module:echarts/ExtensionAPI} api\n */\nfunction resizeGeo(geoModel, api) {\n var boundingCoords = geoModel.get('boundingCoords');\n\n if (boundingCoords != null) {\n var leftTop = boundingCoords[0];\n var rightBottom = boundingCoords[1];\n\n if (isNaN(leftTop[0]) || isNaN(leftTop[1]) || isNaN(rightBottom[0]) || isNaN(rightBottom[1])) {} else {\n this.setBoundingRect(leftTop[0], leftTop[1], rightBottom[0] - leftTop[0], rightBottom[1] - leftTop[1]);\n }\n }\n\n var rect = this.getBoundingRect();\n var boxLayoutOption;\n var center = geoModel.get('layoutCenter');\n var size = geoModel.get('layoutSize');\n var viewWidth = api.getWidth();\n var viewHeight = api.getHeight();\n var aspect = rect.width / rect.height * this.aspectScale;\n var useCenterAndSize = false;\n\n if (center && size) {\n center = [numberUtil.parsePercent(center[0], viewWidth), numberUtil.parsePercent(center[1], viewHeight)];\n size = numberUtil.parsePercent(size, Math.min(viewWidth, viewHeight));\n\n if (!isNaN(center[0]) && !isNaN(center[1]) && !isNaN(size)) {\n useCenterAndSize = true;\n } else {}\n }\n\n var viewRect;\n\n if (useCenterAndSize) {\n var viewRect = {};\n\n if (aspect > 1) {\n // Width is same with size\n viewRect.width = size;\n viewRect.height = size / aspect;\n } else {\n viewRect.height = size;\n viewRect.width = size * aspect;\n }\n\n viewRect.y = center[1] - viewRect.height / 2;\n viewRect.x = center[0] - viewRect.width / 2;\n } else {\n // Use left/top/width/height\n boxLayoutOption = geoModel.getBoxLayoutParams(); // 0.75 rate\n\n boxLayoutOption.aspect = aspect;\n viewRect = layout.getLayoutRect(boxLayoutOption, {\n width: viewWidth,\n height: viewHeight\n });\n }\n\n this.setViewRect(viewRect.x, viewRect.y, viewRect.width, viewRect.height);\n this.setCenter(geoModel.get('center'));\n this.setZoom(geoModel.get('zoom'));\n}\n/**\n * @param {module:echarts/coord/Geo} geo\n * @param {module:echarts/model/Model} model\n * @inner\n */\n\n\nfunction setGeoCoords(geo, model) {\n zrUtil.each(model.get('geoCoord'), function (geoCoord, name) {\n geo.addGeoCoord(name, geoCoord);\n });\n}\n\nvar geoCreator = {\n // For deciding which dimensions to use when creating list data\n dimensions: Geo.prototype.dimensions,\n create: function (ecModel, api) {\n var geoList = []; // FIXME Create each time may be slow\n\n ecModel.eachComponent('geo', function (geoModel, idx) {\n var name = geoModel.get('map');\n var aspectScale = geoModel.get('aspectScale');\n var invertLongitute = true;\n var mapRecords = mapDataStorage.retrieveMap(name);\n\n if (mapRecords && mapRecords[0] && mapRecords[0].type === 'svg') {\n aspectScale == null && (aspectScale = 1);\n invertLongitute = false;\n } else {\n aspectScale == null && (aspectScale = 0.75);\n }\n\n var geo = new Geo(name + idx, name, geoModel.get('nameMap'), invertLongitute);\n geo.aspectScale = aspectScale;\n geo.zoomLimit = geoModel.get('scaleLimit');\n geoList.push(geo);\n setGeoCoords(geo, geoModel);\n geoModel.coordinateSystem = geo;\n geo.model = geoModel; // Inject resize method\n\n geo.resize = resizeGeo;\n geo.resize(geoModel, api);\n });\n ecModel.eachSeries(function (seriesModel) {\n var coordSys = seriesModel.get('coordinateSystem');\n\n if (coordSys === 'geo') {\n var geoIndex = seriesModel.get('geoIndex') || 0;\n seriesModel.coordinateSystem = geoList[geoIndex];\n }\n }); // If has map series\n\n var mapModelGroupBySeries = {};\n ecModel.eachSeriesByType('map', function (seriesModel) {\n if (!seriesModel.getHostGeoModel()) {\n var mapType = seriesModel.getMapType();\n mapModelGroupBySeries[mapType] = mapModelGroupBySeries[mapType] || [];\n mapModelGroupBySeries[mapType].push(seriesModel);\n }\n });\n zrUtil.each(mapModelGroupBySeries, function (mapSeries, mapType) {\n var nameMapList = zrUtil.map(mapSeries, function (singleMapSeries) {\n return singleMapSeries.get('nameMap');\n });\n var geo = new Geo(mapType, mapType, zrUtil.mergeAll(nameMapList));\n geo.zoomLimit = zrUtil.retrieve.apply(null, zrUtil.map(mapSeries, function (singleMapSeries) {\n return singleMapSeries.get('scaleLimit');\n }));\n geoList.push(geo); // Inject resize method\n\n geo.resize = resizeGeo;\n geo.aspectScale = mapSeries[0].get('aspectScale');\n geo.resize(mapSeries[0], api);\n zrUtil.each(mapSeries, function (singleMapSeries) {\n singleMapSeries.coordinateSystem = geo;\n setGeoCoords(geo, singleMapSeries);\n });\n });\n return geoList;\n },\n\n /**\n * Fill given regions array\n * @param {Array.} originRegionArr\n * @param {string} mapName\n * @param {Object} [nameMap]\n * @return {Array}\n */\n getFilledRegions: function (originRegionArr, mapName, nameMap) {\n // Not use the original\n var regionsArr = (originRegionArr || []).slice();\n var dataNameMap = zrUtil.createHashMap();\n\n for (var i = 0; i < regionsArr.length; i++) {\n dataNameMap.set(regionsArr[i].name, regionsArr[i]);\n }\n\n var source = geoSourceManager.load(mapName, nameMap);\n zrUtil.each(source.regions, function (region) {\n var name = region.name;\n !dataNameMap.get(name) && regionsArr.push({\n name: name\n });\n });\n return regionsArr;\n }\n};\necharts.registerCoordinateSystem('geo', geoCreator);\nvar _default = geoCreator;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/geo/geoCreator.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/geo/geoJSONLoader.js": +/*!*************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/geo/geoJSONLoader.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar each = _util.each;\n\nvar parseGeoJson = __webpack_require__(/*! ./parseGeoJson */ \"./node_modules/echarts/lib/coord/geo/parseGeoJson.js\");\n\nvar _model = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar makeInner = _model.makeInner;\n\nvar fixNanhai = __webpack_require__(/*! ./fix/nanhai */ \"./node_modules/echarts/lib/coord/geo/fix/nanhai.js\");\n\nvar fixTextCoord = __webpack_require__(/*! ./fix/textCoord */ \"./node_modules/echarts/lib/coord/geo/fix/textCoord.js\");\n\nvar fixGeoCoord = __webpack_require__(/*! ./fix/geoCoord */ \"./node_modules/echarts/lib/coord/geo/fix/geoCoord.js\");\n\nvar fixDiaoyuIsland = __webpack_require__(/*! ./fix/diaoyuIsland */ \"./node_modules/echarts/lib/coord/geo/fix/diaoyuIsland.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Built-in GEO fixer.\nvar inner = makeInner();\nvar _default = {\n /**\n * @param {string} mapName\n * @param {Object} mapRecord {specialAreas, geoJSON}\n * @param {string} nameProperty\n * @return {Object} {regions, boundingRect}\n */\n load: function (mapName, mapRecord, nameProperty) {\n var parsed = inner(mapRecord).parsed;\n\n if (parsed) {\n return parsed;\n }\n\n var specialAreas = mapRecord.specialAreas || {};\n var geoJSON = mapRecord.geoJSON;\n var regions; // https://jsperf.com/try-catch-performance-overhead\n\n try {\n regions = geoJSON ? parseGeoJson(geoJSON, nameProperty) : [];\n } catch (e) {\n throw new Error('Invalid geoJson format\\n' + e.message);\n }\n\n fixNanhai(mapName, regions);\n each(regions, function (region) {\n var regionName = region.name;\n fixTextCoord(mapName, region);\n fixGeoCoord(mapName, region);\n fixDiaoyuIsland(mapName, region); // Some area like Alaska in USA map needs to be tansformed\n // to look better\n\n var specialArea = specialAreas[regionName];\n\n if (specialArea) {\n region.transformTo(specialArea.left, specialArea.top, specialArea.width, specialArea.height);\n }\n });\n return inner(mapRecord).parsed = {\n regions: regions,\n boundingRect: getBoundingRect(regions)\n };\n }\n};\n\nfunction getBoundingRect(regions) {\n var rect;\n\n for (var i = 0; i < regions.length; i++) {\n var regionRect = regions[i].getBoundingRect();\n rect = rect || regionRect.clone();\n rect.union(regionRect);\n }\n\n return rect;\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/geo/geoJSONLoader.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/geo/geoSVGLoader.js": +/*!************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/geo/geoSVGLoader.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _parseSVG = __webpack_require__(/*! zrender/lib/tool/parseSVG */ \"./node_modules/zrender/lib/tool/parseSVG.js\");\n\nvar parseSVG = _parseSVG.parseSVG;\nvar makeViewBoxTransform = _parseSVG.makeViewBoxTransform;\n\nvar Group = __webpack_require__(/*! zrender/lib/container/Group */ \"./node_modules/zrender/lib/container/Group.js\");\n\nvar Rect = __webpack_require__(/*! zrender/lib/graphic/shape/Rect */ \"./node_modules/zrender/lib/graphic/shape/Rect.js\");\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar assert = _util.assert;\nvar createHashMap = _util.createHashMap;\n\nvar BoundingRect = __webpack_require__(/*! zrender/lib/core/BoundingRect */ \"./node_modules/zrender/lib/core/BoundingRect.js\");\n\nvar _model = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar makeInner = _model.makeInner;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = makeInner();\nvar _default = {\n /**\n * @param {string} mapName\n * @param {Object} mapRecord {specialAreas, geoJSON}\n * @return {Object} {root, boundingRect}\n */\n load: function (mapName, mapRecord) {\n var originRoot = inner(mapRecord).originRoot;\n\n if (originRoot) {\n return {\n root: originRoot,\n boundingRect: inner(mapRecord).boundingRect\n };\n }\n\n var graphic = buildGraphic(mapRecord);\n inner(mapRecord).originRoot = graphic.root;\n inner(mapRecord).boundingRect = graphic.boundingRect;\n return graphic;\n },\n makeGraphic: function (mapName, mapRecord, hostKey) {\n // For performance consideration (in large SVG), graphic only maked\n // when necessary and reuse them according to hostKey.\n var field = inner(mapRecord);\n var rootMap = field.rootMap || (field.rootMap = createHashMap());\n var root = rootMap.get(hostKey);\n\n if (root) {\n return root;\n }\n\n var originRoot = field.originRoot;\n var boundingRect = field.boundingRect; // For performance, if originRoot is not used by a view,\n // assign it to a view, but not reproduce graphic elements.\n\n if (!field.originRootHostKey) {\n field.originRootHostKey = hostKey;\n root = originRoot;\n } else {\n root = buildGraphic(mapRecord, boundingRect).root;\n }\n\n return rootMap.set(hostKey, root);\n },\n removeGraphic: function (mapName, mapRecord, hostKey) {\n var field = inner(mapRecord);\n var rootMap = field.rootMap;\n rootMap && rootMap.removeKey(hostKey);\n\n if (hostKey === field.originRootHostKey) {\n field.originRootHostKey = null;\n }\n }\n};\n\nfunction buildGraphic(mapRecord, boundingRect) {\n var svgXML = mapRecord.svgXML;\n var result;\n var root;\n\n try {\n result = svgXML && parseSVG(svgXML, {\n ignoreViewBox: true,\n ignoreRootClip: true\n }) || {};\n root = result.root;\n assert(root != null);\n } catch (e) {\n throw new Error('Invalid svg format\\n' + e.message);\n }\n\n var svgWidth = result.width;\n var svgHeight = result.height;\n var viewBoxRect = result.viewBoxRect;\n\n if (!boundingRect) {\n boundingRect = svgWidth == null || svgHeight == null ? // If svg width / height not specified, calculate\n // bounding rect as the width / height\n root.getBoundingRect() : new BoundingRect(0, 0, 0, 0);\n\n if (svgWidth != null) {\n boundingRect.width = svgWidth;\n }\n\n if (svgHeight != null) {\n boundingRect.height = svgHeight;\n }\n }\n\n if (viewBoxRect) {\n var viewBoxTransform = makeViewBoxTransform(viewBoxRect, boundingRect.width, boundingRect.height);\n var elRoot = root;\n root = new Group();\n root.add(elRoot);\n elRoot.scale = viewBoxTransform.scale;\n elRoot.position = viewBoxTransform.position;\n }\n\n root.setClipPath(new Rect({\n shape: boundingRect.plain()\n }));\n return {\n root: root,\n boundingRect: boundingRect\n };\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/geo/geoSVGLoader.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/geo/geoSourceManager.js": +/*!****************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/geo/geoSourceManager.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar each = _util.each;\nvar createHashMap = _util.createHashMap;\n\nvar mapDataStorage = __webpack_require__(/*! ./mapDataStorage */ \"./node_modules/echarts/lib/coord/geo/mapDataStorage.js\");\n\nvar geoJSONLoader = __webpack_require__(/*! ./geoJSONLoader */ \"./node_modules/echarts/lib/coord/geo/geoJSONLoader.js\");\n\nvar geoSVGLoader = __webpack_require__(/*! ./geoSVGLoader */ \"./node_modules/echarts/lib/coord/geo/geoSVGLoader.js\");\n\nvar BoundingRect = __webpack_require__(/*! zrender/lib/core/BoundingRect */ \"./node_modules/zrender/lib/core/BoundingRect.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar loaders = {\n geoJSON: geoJSONLoader,\n svg: geoSVGLoader\n};\nvar _default = {\n /**\n * @param {string} mapName\n * @param {Object} nameMap\n * @param {string} nameProperty\n * @return {Object} source {regions, regionsMap, nameCoordMap, boundingRect}\n */\n load: function (mapName, nameMap, nameProperty) {\n var regions = [];\n var regionsMap = createHashMap();\n var nameCoordMap = createHashMap();\n var boundingRect;\n var mapRecords = retrieveMap(mapName);\n each(mapRecords, function (record) {\n var singleSource = loaders[record.type].load(mapName, record, nameProperty);\n each(singleSource.regions, function (region) {\n var regionName = region.name; // Try use the alias in geoNameMap\n\n if (nameMap && nameMap.hasOwnProperty(regionName)) {\n region = region.cloneShallow(regionName = nameMap[regionName]);\n }\n\n regions.push(region);\n regionsMap.set(regionName, region);\n nameCoordMap.set(regionName, region.center);\n });\n var rect = singleSource.boundingRect;\n\n if (rect) {\n boundingRect ? boundingRect.union(rect) : boundingRect = rect.clone();\n }\n });\n return {\n regions: regions,\n regionsMap: regionsMap,\n nameCoordMap: nameCoordMap,\n // FIXME Always return new ?\n boundingRect: boundingRect || new BoundingRect(0, 0, 0, 0)\n };\n },\n\n /**\n * @param {string} mapName\n * @param {string} hostKey For cache.\n * @return {Array.} Roots.\n */\n makeGraphic: makeInvoker('makeGraphic'),\n\n /**\n * @param {string} mapName\n * @param {string} hostKey For cache.\n */\n removeGraphic: makeInvoker('removeGraphic')\n};\n\nfunction makeInvoker(methodName) {\n return function (mapName, hostKey) {\n var mapRecords = retrieveMap(mapName);\n var results = [];\n each(mapRecords, function (record) {\n var method = loaders[record.type][methodName];\n method && results.push(method(mapName, record, hostKey));\n });\n return results;\n };\n}\n\nfunction mapNotExistsError(mapName) {}\n\nfunction retrieveMap(mapName) {\n var mapRecords = mapDataStorage.retrieveMap(mapName) || [];\n return mapRecords;\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/geo/geoSourceManager.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/geo/mapDataStorage.js": +/*!**************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/geo/mapDataStorage.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar createHashMap = _util.createHashMap;\nvar isString = _util.isString;\nvar isArray = _util.isArray;\nvar each = _util.each;\nvar assert = _util.assert;\n\nvar _parseSVG = __webpack_require__(/*! zrender/lib/tool/parseSVG */ \"./node_modules/zrender/lib/tool/parseSVG.js\");\n\nvar parseXML = _parseSVG.parseXML;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar storage = createHashMap(); // For minimize the code size of common echarts package,\n// do not put too much logic in this module.\n\nvar _default = {\n // The format of record: see `echarts.registerMap`.\n // Compatible with previous `echarts.registerMap`.\n registerMap: function (mapName, rawGeoJson, rawSpecialAreas) {\n var records;\n\n if (isArray(rawGeoJson)) {\n records = rawGeoJson;\n } else if (rawGeoJson.svg) {\n records = [{\n type: 'svg',\n source: rawGeoJson.svg,\n specialAreas: rawGeoJson.specialAreas\n }];\n } else {\n // Backward compatibility.\n if (rawGeoJson.geoJson && !rawGeoJson.features) {\n rawSpecialAreas = rawGeoJson.specialAreas;\n rawGeoJson = rawGeoJson.geoJson;\n }\n\n records = [{\n type: 'geoJSON',\n source: rawGeoJson,\n specialAreas: rawSpecialAreas\n }];\n }\n\n each(records, function (record) {\n var type = record.type;\n type === 'geoJson' && (type = record.type = 'geoJSON');\n var parse = parsers[type];\n parse(record);\n });\n return storage.set(mapName, records);\n },\n retrieveMap: function (mapName) {\n return storage.get(mapName);\n }\n};\nvar parsers = {\n geoJSON: function (record) {\n var source = record.source;\n record.geoJSON = !isString(source) ? source : typeof JSON !== 'undefined' && JSON.parse ? JSON.parse(source) : new Function('return (' + source + ');')();\n },\n // Only perform parse to XML object here, which might be time\n // consiming for large SVG.\n // Although convert XML to zrender element is also time consiming,\n // if we do it here, the clone of zrender elements has to be\n // required. So we do it once for each geo instance, util real\n // performance issues call for optimizing it.\n svg: function (record) {\n record.svgXML = parseXML(record.source);\n }\n};\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/geo/mapDataStorage.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/geo/parseGeoJson.js": +/*!************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/geo/parseGeoJson.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar Region = __webpack_require__(/*! ./Region */ \"./node_modules/echarts/lib/coord/geo/Region.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Parse and decode geo json\n * @module echarts/coord/geo/parseGeoJson\n */\nfunction decode(json) {\n if (!json.UTF8Encoding) {\n return json;\n }\n\n var encodeScale = json.UTF8Scale;\n\n if (encodeScale == null) {\n encodeScale = 1024;\n }\n\n var features = json.features;\n\n for (var f = 0; f < features.length; f++) {\n var feature = features[f];\n var geometry = feature.geometry;\n var coordinates = geometry.coordinates;\n var encodeOffsets = geometry.encodeOffsets;\n\n for (var c = 0; c < coordinates.length; c++) {\n var coordinate = coordinates[c];\n\n if (geometry.type === 'Polygon') {\n coordinates[c] = decodePolygon(coordinate, encodeOffsets[c], encodeScale);\n } else if (geometry.type === 'MultiPolygon') {\n for (var c2 = 0; c2 < coordinate.length; c2++) {\n var polygon = coordinate[c2];\n coordinate[c2] = decodePolygon(polygon, encodeOffsets[c][c2], encodeScale);\n }\n }\n }\n } // Has been decoded\n\n\n json.UTF8Encoding = false;\n return json;\n}\n\nfunction decodePolygon(coordinate, encodeOffsets, encodeScale) {\n var result = [];\n var prevX = encodeOffsets[0];\n var prevY = encodeOffsets[1];\n\n for (var i = 0; i < coordinate.length; i += 2) {\n var x = coordinate.charCodeAt(i) - 64;\n var y = coordinate.charCodeAt(i + 1) - 64; // ZigZag decoding\n\n x = x >> 1 ^ -(x & 1);\n y = y >> 1 ^ -(y & 1); // Delta deocding\n\n x += prevX;\n y += prevY;\n prevX = x;\n prevY = y; // Dequantize\n\n result.push([x / encodeScale, y / encodeScale]);\n }\n\n return result;\n}\n/**\n * @alias module:echarts/coord/geo/parseGeoJson\n * @param {Object} geoJson\n * @param {string} nameProperty\n * @return {module:zrender/container/Group}\n */\n\n\nfunction _default(geoJson, nameProperty) {\n decode(geoJson);\n return zrUtil.map(zrUtil.filter(geoJson.features, function (featureObj) {\n // Output of mapshaper may have geometry null\n return featureObj.geometry && featureObj.properties && featureObj.geometry.coordinates.length > 0;\n }), function (featureObj) {\n var properties = featureObj.properties;\n var geo = featureObj.geometry;\n var coordinates = geo.coordinates;\n var geometries = [];\n\n if (geo.type === 'Polygon') {\n geometries.push({\n type: 'polygon',\n // According to the GeoJSON specification.\n // First must be exterior, and the rest are all interior(holes).\n exterior: coordinates[0],\n interiors: coordinates.slice(1)\n });\n }\n\n if (geo.type === 'MultiPolygon') {\n zrUtil.each(coordinates, function (item) {\n if (item[0]) {\n geometries.push({\n type: 'polygon',\n exterior: item[0],\n interiors: item.slice(1)\n });\n }\n });\n }\n\n var region = new Region(properties[nameProperty || 'name'], geometries, properties.cp);\n region.properties = properties;\n return region;\n });\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/geo/parseGeoJson.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/geo/prepareCustom.js": +/*!*************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/geo/prepareCustom.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction dataToCoordSize(dataSize, dataItem) {\n dataItem = dataItem || [0, 0];\n return zrUtil.map([0, 1], function (dimIdx) {\n var val = dataItem[dimIdx];\n var halfSize = dataSize[dimIdx] / 2;\n var p1 = [];\n var p2 = [];\n p1[dimIdx] = val - halfSize;\n p2[dimIdx] = val + halfSize;\n p1[1 - dimIdx] = p2[1 - dimIdx] = dataItem[1 - dimIdx];\n return Math.abs(this.dataToPoint(p1)[dimIdx] - this.dataToPoint(p2)[dimIdx]);\n }, this);\n}\n\nfunction _default(coordSys) {\n var rect = coordSys.getBoundingRect();\n return {\n coordSys: {\n type: 'geo',\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height,\n zoom: coordSys.getZoom()\n },\n api: {\n coord: function (data) {\n // do not provide \"out\" and noRoam param,\n // Compatible with this usage:\n // echarts.util.map(item.points, api.coord)\n return coordSys.dataToPoint(data);\n },\n size: zrUtil.bind(dataToCoordSize, coordSys)\n }\n };\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/geo/prepareCustom.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/parallel/AxisModel.js": +/*!**************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/parallel/AxisModel.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar ComponentModel = __webpack_require__(/*! ../../model/Component */ \"./node_modules/echarts/lib/model/Component.js\");\n\nvar makeStyleMapper = __webpack_require__(/*! ../../model/mixin/makeStyleMapper */ \"./node_modules/echarts/lib/model/mixin/makeStyleMapper.js\");\n\nvar axisModelCreator = __webpack_require__(/*! ../axisModelCreator */ \"./node_modules/echarts/lib/coord/axisModelCreator.js\");\n\nvar numberUtil = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar axisModelCommonMixin = __webpack_require__(/*! ../axisModelCommonMixin */ \"./node_modules/echarts/lib/coord/axisModelCommonMixin.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar AxisModel = ComponentModel.extend({\n type: 'baseParallelAxis',\n\n /**\n * @type {module:echarts/coord/parallel/Axis}\n */\n axis: null,\n\n /**\n * @type {Array.}\n * @readOnly\n */\n activeIntervals: [],\n\n /**\n * @return {Object}\n */\n getAreaSelectStyle: function () {\n return makeStyleMapper([['fill', 'color'], ['lineWidth', 'borderWidth'], ['stroke', 'borderColor'], ['width', 'width'], ['opacity', 'opacity']])(this.getModel('areaSelectStyle'));\n },\n\n /**\n * The code of this feature is put on AxisModel but not ParallelAxis,\n * because axisModel can be alive after echarts updating but instance of\n * ParallelAxis having been disposed. this._activeInterval should be kept\n * when action dispatched (i.e. legend click).\n *\n * @param {Array.>} intervals interval.length === 0\n * means set all active.\n * @public\n */\n setActiveIntervals: function (intervals) {\n var activeIntervals = this.activeIntervals = zrUtil.clone(intervals); // Normalize\n\n if (activeIntervals) {\n for (var i = activeIntervals.length - 1; i >= 0; i--) {\n numberUtil.asc(activeIntervals[i]);\n }\n }\n },\n\n /**\n * @param {number|string} [value] When attempting to detect 'no activeIntervals set',\n * value can not be input.\n * @return {string} 'normal': no activeIntervals set,\n * 'active',\n * 'inactive'.\n * @public\n */\n getActiveState: function (value) {\n var activeIntervals = this.activeIntervals;\n\n if (!activeIntervals.length) {\n return 'normal';\n }\n\n if (value == null || isNaN(value)) {\n return 'inactive';\n } // Simple optimization\n\n\n if (activeIntervals.length === 1) {\n var interval = activeIntervals[0];\n\n if (interval[0] <= value && value <= interval[1]) {\n return 'active';\n }\n } else {\n for (var i = 0, len = activeIntervals.length; i < len; i++) {\n if (activeIntervals[i][0] <= value && value <= activeIntervals[i][1]) {\n return 'active';\n }\n }\n }\n\n return 'inactive';\n }\n});\nvar defaultOption = {\n type: 'value',\n\n /**\n * @type {Array.}\n */\n dim: null,\n // 0, 1, 2, ...\n // parallelIndex: null,\n areaSelectStyle: {\n width: 20,\n borderWidth: 1,\n borderColor: 'rgba(160,197,232)',\n color: 'rgba(160,197,232)',\n opacity: 0.3\n },\n realtime: true,\n // Whether realtime update view when select.\n z: 10\n};\nzrUtil.merge(AxisModel.prototype, axisModelCommonMixin);\n\nfunction getAxisType(axisName, option) {\n return option.type || (option.data ? 'category' : 'value');\n}\n\naxisModelCreator('parallel', AxisModel, getAxisType, defaultOption);\nvar _default = AxisModel;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/parallel/AxisModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/parallel/Parallel.js": +/*!*************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/parallel/Parallel.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar matrix = __webpack_require__(/*! zrender/lib/core/matrix */ \"./node_modules/zrender/lib/core/matrix.js\");\n\nvar layoutUtil = __webpack_require__(/*! ../../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar axisHelper = __webpack_require__(/*! ../../coord/axisHelper */ \"./node_modules/echarts/lib/coord/axisHelper.js\");\n\nvar ParallelAxis = __webpack_require__(/*! ./ParallelAxis */ \"./node_modules/echarts/lib/coord/parallel/ParallelAxis.js\");\n\nvar graphic = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar numberUtil = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar sliderMove = __webpack_require__(/*! ../../component/helper/sliderMove */ \"./node_modules/echarts/lib/component/helper/sliderMove.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Parallel Coordinates\n * \n */\nvar each = zrUtil.each;\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathFloor = Math.floor;\nvar mathCeil = Math.ceil;\nvar round = numberUtil.round;\nvar PI = Math.PI;\n\nfunction Parallel(parallelModel, ecModel, api) {\n /**\n * key: dimension\n * @type {Object.}\n * @private\n */\n this._axesMap = zrUtil.createHashMap();\n /**\n * key: dimension\n * value: {position: [], rotation, }\n * @type {Object.}\n * @private\n */\n\n this._axesLayout = {};\n /**\n * Always follow axis order.\n * @type {Array.}\n * @readOnly\n */\n\n this.dimensions = parallelModel.dimensions;\n /**\n * @type {module:zrender/core/BoundingRect}\n */\n\n this._rect;\n /**\n * @type {module:echarts/coord/parallel/ParallelModel}\n */\n\n this._model = parallelModel;\n\n this._init(parallelModel, ecModel, api);\n}\n\nParallel.prototype = {\n type: 'parallel',\n constructor: Parallel,\n\n /**\n * Initialize cartesian coordinate systems\n * @private\n */\n _init: function (parallelModel, ecModel, api) {\n var dimensions = parallelModel.dimensions;\n var parallelAxisIndex = parallelModel.parallelAxisIndex;\n each(dimensions, function (dim, idx) {\n var axisIndex = parallelAxisIndex[idx];\n var axisModel = ecModel.getComponent('parallelAxis', axisIndex);\n\n var axis = this._axesMap.set(dim, new ParallelAxis(dim, axisHelper.createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisIndex));\n\n var isCategory = axis.type === 'category';\n axis.onBand = isCategory && axisModel.get('boundaryGap');\n axis.inverse = axisModel.get('inverse'); // Injection\n\n axisModel.axis = axis;\n axis.model = axisModel;\n axis.coordinateSystem = axisModel.coordinateSystem = this;\n }, this);\n },\n\n /**\n * Update axis scale after data processed\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n update: function (ecModel, api) {\n this._updateAxesFromSeries(this._model, ecModel);\n },\n\n /**\n * @override\n */\n containPoint: function (point) {\n var layoutInfo = this._makeLayoutInfo();\n\n var axisBase = layoutInfo.axisBase;\n var layoutBase = layoutInfo.layoutBase;\n var pixelDimIndex = layoutInfo.pixelDimIndex;\n var pAxis = point[1 - pixelDimIndex];\n var pLayout = point[pixelDimIndex];\n return pAxis >= axisBase && pAxis <= axisBase + layoutInfo.axisLength && pLayout >= layoutBase && pLayout <= layoutBase + layoutInfo.layoutLength;\n },\n getModel: function () {\n return this._model;\n },\n\n /**\n * Update properties from series\n * @private\n */\n _updateAxesFromSeries: function (parallelModel, ecModel) {\n ecModel.eachSeries(function (seriesModel) {\n if (!parallelModel.contains(seriesModel, ecModel)) {\n return;\n }\n\n var data = seriesModel.getData();\n each(this.dimensions, function (dim) {\n var axis = this._axesMap.get(dim);\n\n axis.scale.unionExtentFromData(data, data.mapDimension(dim));\n axisHelper.niceScaleExtent(axis.scale, axis.model);\n }, this);\n }, this);\n },\n\n /**\n * Resize the parallel coordinate system.\n * @param {module:echarts/coord/parallel/ParallelModel} parallelModel\n * @param {module:echarts/ExtensionAPI} api\n */\n resize: function (parallelModel, api) {\n this._rect = layoutUtil.getLayoutRect(parallelModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n\n this._layoutAxes();\n },\n\n /**\n * @return {module:zrender/core/BoundingRect}\n */\n getRect: function () {\n return this._rect;\n },\n\n /**\n * @private\n */\n _makeLayoutInfo: function () {\n var parallelModel = this._model;\n var rect = this._rect;\n var xy = ['x', 'y'];\n var wh = ['width', 'height'];\n var layout = parallelModel.get('layout');\n var pixelDimIndex = layout === 'horizontal' ? 0 : 1;\n var layoutLength = rect[wh[pixelDimIndex]];\n var layoutExtent = [0, layoutLength];\n var axisCount = this.dimensions.length;\n var axisExpandWidth = restrict(parallelModel.get('axisExpandWidth'), layoutExtent);\n var axisExpandCount = restrict(parallelModel.get('axisExpandCount') || 0, [0, axisCount]);\n var axisExpandable = parallelModel.get('axisExpandable') && axisCount > 3 && axisCount > axisExpandCount && axisExpandCount > 1 && axisExpandWidth > 0 && layoutLength > 0; // `axisExpandWindow` is According to the coordinates of [0, axisExpandLength],\n // for sake of consider the case that axisCollapseWidth is 0 (when screen is narrow),\n // where collapsed axes should be overlapped.\n\n var axisExpandWindow = parallelModel.get('axisExpandWindow');\n var winSize;\n\n if (!axisExpandWindow) {\n winSize = restrict(axisExpandWidth * (axisExpandCount - 1), layoutExtent);\n var axisExpandCenter = parallelModel.get('axisExpandCenter') || mathFloor(axisCount / 2);\n axisExpandWindow = [axisExpandWidth * axisExpandCenter - winSize / 2];\n axisExpandWindow[1] = axisExpandWindow[0] + winSize;\n } else {\n winSize = restrict(axisExpandWindow[1] - axisExpandWindow[0], layoutExtent);\n axisExpandWindow[1] = axisExpandWindow[0] + winSize;\n }\n\n var axisCollapseWidth = (layoutLength - winSize) / (axisCount - axisExpandCount); // Avoid axisCollapseWidth is too small.\n\n axisCollapseWidth < 3 && (axisCollapseWidth = 0); // Find the first and last indices > ewin[0] and < ewin[1].\n\n var winInnerIndices = [mathFloor(round(axisExpandWindow[0] / axisExpandWidth, 1)) + 1, mathCeil(round(axisExpandWindow[1] / axisExpandWidth, 1)) - 1]; // Pos in ec coordinates.\n\n var axisExpandWindow0Pos = axisCollapseWidth / axisExpandWidth * axisExpandWindow[0];\n return {\n layout: layout,\n pixelDimIndex: pixelDimIndex,\n layoutBase: rect[xy[pixelDimIndex]],\n layoutLength: layoutLength,\n axisBase: rect[xy[1 - pixelDimIndex]],\n axisLength: rect[wh[1 - pixelDimIndex]],\n axisExpandable: axisExpandable,\n axisExpandWidth: axisExpandWidth,\n axisCollapseWidth: axisCollapseWidth,\n axisExpandWindow: axisExpandWindow,\n axisCount: axisCount,\n winInnerIndices: winInnerIndices,\n axisExpandWindow0Pos: axisExpandWindow0Pos\n };\n },\n\n /**\n * @private\n */\n _layoutAxes: function () {\n var rect = this._rect;\n var axes = this._axesMap;\n var dimensions = this.dimensions;\n\n var layoutInfo = this._makeLayoutInfo();\n\n var layout = layoutInfo.layout;\n axes.each(function (axis) {\n var axisExtent = [0, layoutInfo.axisLength];\n var idx = axis.inverse ? 1 : 0;\n axis.setExtent(axisExtent[idx], axisExtent[1 - idx]);\n });\n each(dimensions, function (dim, idx) {\n var posInfo = (layoutInfo.axisExpandable ? layoutAxisWithExpand : layoutAxisWithoutExpand)(idx, layoutInfo);\n var positionTable = {\n horizontal: {\n x: posInfo.position,\n y: layoutInfo.axisLength\n },\n vertical: {\n x: 0,\n y: posInfo.position\n }\n };\n var rotationTable = {\n horizontal: PI / 2,\n vertical: 0\n };\n var position = [positionTable[layout].x + rect.x, positionTable[layout].y + rect.y];\n var rotation = rotationTable[layout];\n var transform = matrix.create();\n matrix.rotate(transform, transform, rotation);\n matrix.translate(transform, transform, position); // TODO\n // tick等排布信息。\n // TODO\n // 根据axis order 更新 dimensions顺序。\n\n this._axesLayout[dim] = {\n position: position,\n rotation: rotation,\n transform: transform,\n axisNameAvailableWidth: posInfo.axisNameAvailableWidth,\n axisLabelShow: posInfo.axisLabelShow,\n nameTruncateMaxWidth: posInfo.nameTruncateMaxWidth,\n tickDirection: 1,\n labelDirection: 1\n };\n }, this);\n },\n\n /**\n * Get axis by dim.\n * @param {string} dim\n * @return {module:echarts/coord/parallel/ParallelAxis} [description]\n */\n getAxis: function (dim) {\n return this._axesMap.get(dim);\n },\n\n /**\n * Convert a dim value of a single item of series data to Point.\n * @param {*} value\n * @param {string} dim\n * @return {Array}\n */\n dataToPoint: function (value, dim) {\n return this.axisCoordToPoint(this._axesMap.get(dim).dataToCoord(value), dim);\n },\n\n /**\n * Travel data for one time, get activeState of each data item.\n * @param {module:echarts/data/List} data\n * @param {Functio} cb param: {string} activeState 'active' or 'inactive' or 'normal'\n * {number} dataIndex\n * @param {number} [start=0] the start dataIndex that travel from.\n * @param {number} [end=data.count()] the next dataIndex of the last dataIndex will be travel.\n */\n eachActiveState: function (data, callback, start, end) {\n start == null && (start = 0);\n end == null && (end = data.count());\n var axesMap = this._axesMap;\n var dimensions = this.dimensions;\n var dataDimensions = [];\n var axisModels = [];\n zrUtil.each(dimensions, function (axisDim) {\n dataDimensions.push(data.mapDimension(axisDim));\n axisModels.push(axesMap.get(axisDim).model);\n });\n var hasActiveSet = this.hasAxisBrushed();\n\n for (var dataIndex = start; dataIndex < end; dataIndex++) {\n var activeState;\n\n if (!hasActiveSet) {\n activeState = 'normal';\n } else {\n activeState = 'active';\n var values = data.getValues(dataDimensions, dataIndex);\n\n for (var j = 0, lenj = dimensions.length; j < lenj; j++) {\n var state = axisModels[j].getActiveState(values[j]);\n\n if (state === 'inactive') {\n activeState = 'inactive';\n break;\n }\n }\n }\n\n callback(activeState, dataIndex);\n }\n },\n\n /**\n * Whether has any activeSet.\n * @return {boolean}\n */\n hasAxisBrushed: function () {\n var dimensions = this.dimensions;\n var axesMap = this._axesMap;\n var hasActiveSet = false;\n\n for (var j = 0, lenj = dimensions.length; j < lenj; j++) {\n if (axesMap.get(dimensions[j]).model.getActiveState() !== 'normal') {\n hasActiveSet = true;\n }\n }\n\n return hasActiveSet;\n },\n\n /**\n * Convert coords of each axis to Point.\n * Return point. For example: [10, 20]\n * @param {Array.} coords\n * @param {string} dim\n * @return {Array.}\n */\n axisCoordToPoint: function (coord, dim) {\n var axisLayout = this._axesLayout[dim];\n return graphic.applyTransform([coord, 0], axisLayout.transform);\n },\n\n /**\n * Get axis layout.\n */\n getAxisLayout: function (dim) {\n return zrUtil.clone(this._axesLayout[dim]);\n },\n\n /**\n * @param {Array.} point\n * @return {Object} {axisExpandWindow, delta, behavior: 'jump' | 'slide' | 'none'}.\n */\n getSlidedAxisExpandWindow: function (point) {\n var layoutInfo = this._makeLayoutInfo();\n\n var pixelDimIndex = layoutInfo.pixelDimIndex;\n var axisExpandWindow = layoutInfo.axisExpandWindow.slice();\n var winSize = axisExpandWindow[1] - axisExpandWindow[0];\n var extent = [0, layoutInfo.axisExpandWidth * (layoutInfo.axisCount - 1)]; // Out of the area of coordinate system.\n\n if (!this.containPoint(point)) {\n return {\n behavior: 'none',\n axisExpandWindow: axisExpandWindow\n };\n } // Conver the point from global to expand coordinates.\n\n\n var pointCoord = point[pixelDimIndex] - layoutInfo.layoutBase - layoutInfo.axisExpandWindow0Pos; // For dragging operation convenience, the window should not be\n // slided when mouse is the center area of the window.\n\n var delta;\n var behavior = 'slide';\n var axisCollapseWidth = layoutInfo.axisCollapseWidth;\n\n var triggerArea = this._model.get('axisExpandSlideTriggerArea'); // But consider touch device, jump is necessary.\n\n\n var useJump = triggerArea[0] != null;\n\n if (axisCollapseWidth) {\n if (useJump && axisCollapseWidth && pointCoord < winSize * triggerArea[0]) {\n behavior = 'jump';\n delta = pointCoord - winSize * triggerArea[2];\n } else if (useJump && axisCollapseWidth && pointCoord > winSize * (1 - triggerArea[0])) {\n behavior = 'jump';\n delta = pointCoord - winSize * (1 - triggerArea[2]);\n } else {\n (delta = pointCoord - winSize * triggerArea[1]) >= 0 && (delta = pointCoord - winSize * (1 - triggerArea[1])) <= 0 && (delta = 0);\n }\n\n delta *= layoutInfo.axisExpandWidth / axisCollapseWidth;\n delta ? sliderMove(delta, axisExpandWindow, extent, 'all') // Avoid nonsense triger on mousemove.\n : behavior = 'none';\n } // When screen is too narrow, make it visible and slidable, although it is hard to interact.\n else {\n var winSize = axisExpandWindow[1] - axisExpandWindow[0];\n var pos = extent[1] * pointCoord / winSize;\n axisExpandWindow = [mathMax(0, pos - winSize / 2)];\n axisExpandWindow[1] = mathMin(extent[1], axisExpandWindow[0] + winSize);\n axisExpandWindow[0] = axisExpandWindow[1] - winSize;\n }\n\n return {\n axisExpandWindow: axisExpandWindow,\n behavior: behavior\n };\n }\n};\n\nfunction restrict(len, extent) {\n return mathMin(mathMax(len, extent[0]), extent[1]);\n}\n\nfunction layoutAxisWithoutExpand(axisIndex, layoutInfo) {\n var step = layoutInfo.layoutLength / (layoutInfo.axisCount - 1);\n return {\n position: step * axisIndex,\n axisNameAvailableWidth: step,\n axisLabelShow: true\n };\n}\n\nfunction layoutAxisWithExpand(axisIndex, layoutInfo) {\n var layoutLength = layoutInfo.layoutLength;\n var axisExpandWidth = layoutInfo.axisExpandWidth;\n var axisCount = layoutInfo.axisCount;\n var axisCollapseWidth = layoutInfo.axisCollapseWidth;\n var winInnerIndices = layoutInfo.winInnerIndices;\n var position;\n var axisNameAvailableWidth = axisCollapseWidth;\n var axisLabelShow = false;\n var nameTruncateMaxWidth;\n\n if (axisIndex < winInnerIndices[0]) {\n position = axisIndex * axisCollapseWidth;\n nameTruncateMaxWidth = axisCollapseWidth;\n } else if (axisIndex <= winInnerIndices[1]) {\n position = layoutInfo.axisExpandWindow0Pos + axisIndex * axisExpandWidth - layoutInfo.axisExpandWindow[0];\n axisNameAvailableWidth = axisExpandWidth;\n axisLabelShow = true;\n } else {\n position = layoutLength - (axisCount - 1 - axisIndex) * axisCollapseWidth;\n nameTruncateMaxWidth = axisCollapseWidth;\n }\n\n return {\n position: position,\n axisNameAvailableWidth: axisNameAvailableWidth,\n axisLabelShow: axisLabelShow,\n nameTruncateMaxWidth: nameTruncateMaxWidth\n };\n}\n\nvar _default = Parallel;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/parallel/Parallel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/parallel/ParallelAxis.js": +/*!*****************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/parallel/ParallelAxis.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar Axis = __webpack_require__(/*! ../Axis */ \"./node_modules/echarts/lib/coord/Axis.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @constructor module:echarts/coord/parallel/ParallelAxis\n * @extends {module:echarts/coord/Axis}\n * @param {string} dim\n * @param {*} scale\n * @param {Array.} coordExtent\n * @param {string} axisType\n */\nvar ParallelAxis = function (dim, scale, coordExtent, axisType, axisIndex) {\n Axis.call(this, dim, scale, coordExtent);\n /**\n * Axis type\n * - 'category'\n * - 'value'\n * - 'time'\n * - 'log'\n * @type {string}\n */\n\n this.type = axisType || 'value';\n /**\n * @type {number}\n * @readOnly\n */\n\n this.axisIndex = axisIndex;\n};\n\nParallelAxis.prototype = {\n constructor: ParallelAxis,\n\n /**\n * Axis model\n * @param {module:echarts/coord/parallel/AxisModel}\n */\n model: null,\n\n /**\n * @override\n */\n isHorizontal: function () {\n return this.coordinateSystem.getModel().get('layout') !== 'horizontal';\n }\n};\nzrUtil.inherits(ParallelAxis, Axis);\nvar _default = ParallelAxis;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/parallel/ParallelAxis.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/parallel/ParallelModel.js": +/*!******************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/parallel/ParallelModel.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar Component = __webpack_require__(/*! ../../model/Component */ \"./node_modules/echarts/lib/model/Component.js\");\n\n__webpack_require__(/*! ./AxisModel */ \"./node_modules/echarts/lib/coord/parallel/AxisModel.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = Component.extend({\n type: 'parallel',\n dependencies: ['parallelAxis'],\n\n /**\n * @type {module:echarts/coord/parallel/Parallel}\n */\n coordinateSystem: null,\n\n /**\n * Each item like: 'dim0', 'dim1', 'dim2', ...\n * @type {Array.}\n * @readOnly\n */\n dimensions: null,\n\n /**\n * Coresponding to dimensions.\n * @type {Array.}\n * @readOnly\n */\n parallelAxisIndex: null,\n layoutMode: 'box',\n defaultOption: {\n zlevel: 0,\n z: 0,\n left: 80,\n top: 60,\n right: 80,\n bottom: 60,\n // width: {totalWidth} - left - right,\n // height: {totalHeight} - top - bottom,\n layout: 'horizontal',\n // 'horizontal' or 'vertical'\n // FIXME\n // naming?\n axisExpandable: false,\n axisExpandCenter: null,\n axisExpandCount: 0,\n axisExpandWidth: 50,\n // FIXME '10%' ?\n axisExpandRate: 17,\n axisExpandDebounce: 50,\n // [out, in, jumpTarget]. In percentage. If use [null, 0.05], null means full.\n // Do not doc to user until necessary.\n axisExpandSlideTriggerArea: [-0.15, 0.05, 0.4],\n axisExpandTriggerOn: 'click',\n // 'mousemove' or 'click'\n parallelAxisDefault: null\n },\n\n /**\n * @override\n */\n init: function () {\n Component.prototype.init.apply(this, arguments);\n this.mergeOption({});\n },\n\n /**\n * @override\n */\n mergeOption: function (newOption) {\n var thisOption = this.option;\n newOption && zrUtil.merge(thisOption, newOption, true);\n\n this._initDimensions();\n },\n\n /**\n * Whether series or axis is in this coordinate system.\n * @param {module:echarts/model/Series|module:echarts/coord/parallel/AxisModel} model\n * @param {module:echarts/model/Global} ecModel\n */\n contains: function (model, ecModel) {\n var parallelIndex = model.get('parallelIndex');\n return parallelIndex != null && ecModel.getComponent('parallel', parallelIndex) === this;\n },\n setAxisExpand: function (opt) {\n zrUtil.each(['axisExpandable', 'axisExpandCenter', 'axisExpandCount', 'axisExpandWidth', 'axisExpandWindow'], function (name) {\n if (opt.hasOwnProperty(name)) {\n this.option[name] = opt[name];\n }\n }, this);\n },\n\n /**\n * @private\n */\n _initDimensions: function () {\n var dimensions = this.dimensions = [];\n var parallelAxisIndex = this.parallelAxisIndex = [];\n var axisModels = zrUtil.filter(this.dependentModels.parallelAxis, function (axisModel) {\n // Can not use this.contains here, because\n // initialization has not been completed yet.\n return (axisModel.get('parallelIndex') || 0) === this.componentIndex;\n }, this);\n zrUtil.each(axisModels, function (axisModel) {\n dimensions.push('dim' + axisModel.get('dim'));\n parallelAxisIndex.push(axisModel.componentIndex);\n });\n }\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/parallel/ParallelModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/parallel/parallelCreator.js": +/*!********************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/parallel/parallelCreator.js ***! + \********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Parallel = __webpack_require__(/*! ./Parallel */ \"./node_modules/echarts/lib/coord/parallel/Parallel.js\");\n\nvar CoordinateSystem = __webpack_require__(/*! ../../CoordinateSystem */ \"./node_modules/echarts/lib/CoordinateSystem.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Parallel coordinate system creater.\n */\nfunction create(ecModel, api) {\n var coordSysList = [];\n ecModel.eachComponent('parallel', function (parallelModel, idx) {\n var coordSys = new Parallel(parallelModel, ecModel, api);\n coordSys.name = 'parallel_' + idx;\n coordSys.resize(parallelModel, api);\n parallelModel.coordinateSystem = coordSys;\n coordSys.model = parallelModel;\n coordSysList.push(coordSys);\n }); // Inject the coordinateSystems into seriesModel\n\n ecModel.eachSeries(function (seriesModel) {\n if (seriesModel.get('coordinateSystem') === 'parallel') {\n var parallelModel = ecModel.queryComponents({\n mainType: 'parallel',\n index: seriesModel.get('parallelIndex'),\n id: seriesModel.get('parallelId')\n })[0];\n seriesModel.coordinateSystem = parallelModel.coordinateSystem;\n }\n });\n return coordSysList;\n}\n\nCoordinateSystem.register('parallel', {\n create: create\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/parallel/parallelCreator.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/parallel/parallelPreprocessor.js": +/*!*************************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/parallel/parallelPreprocessor.js ***! + \*************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar modelUtil = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(option) {\n createParallelIfNeeded(option);\n mergeAxisOptionFromParallel(option);\n}\n/**\n * Create a parallel coordinate if not exists.\n * @inner\n */\n\n\nfunction createParallelIfNeeded(option) {\n if (option.parallel) {\n return;\n }\n\n var hasParallelSeries = false;\n zrUtil.each(option.series, function (seriesOpt) {\n if (seriesOpt && seriesOpt.type === 'parallel') {\n hasParallelSeries = true;\n }\n });\n\n if (hasParallelSeries) {\n option.parallel = [{}];\n }\n}\n/**\n * Merge aixs definition from parallel option (if exists) to axis option.\n * @inner\n */\n\n\nfunction mergeAxisOptionFromParallel(option) {\n var axes = modelUtil.normalizeToArray(option.parallelAxis);\n zrUtil.each(axes, function (axisOption) {\n if (!zrUtil.isObject(axisOption)) {\n return;\n }\n\n var parallelIndex = axisOption.parallelIndex || 0;\n var parallelOption = modelUtil.normalizeToArray(option.parallel)[parallelIndex];\n\n if (parallelOption && parallelOption.parallelAxisDefault) {\n zrUtil.merge(axisOption, parallelOption.parallelAxisDefault, false);\n }\n });\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/parallel/parallelPreprocessor.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/polar/AngleAxis.js": +/*!***********************************************************!*\ + !*** ./node_modules/echarts/lib/coord/polar/AngleAxis.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar textContain = __webpack_require__(/*! zrender/lib/contain/text */ \"./node_modules/zrender/lib/contain/text.js\");\n\nvar Axis = __webpack_require__(/*! ../Axis */ \"./node_modules/echarts/lib/coord/Axis.js\");\n\nvar _model = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar makeInner = _model.makeInner;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = makeInner();\n\nfunction AngleAxis(scale, angleExtent) {\n angleExtent = angleExtent || [0, 360];\n Axis.call(this, 'angle', scale, angleExtent);\n /**\n * Axis type\n * - 'category'\n * - 'value'\n * - 'time'\n * - 'log'\n * @type {string}\n */\n\n this.type = 'category';\n}\n\nAngleAxis.prototype = {\n constructor: AngleAxis,\n\n /**\n * @override\n */\n pointToData: function (point, clamp) {\n return this.polar.pointToData(point, clamp)[this.dim === 'radius' ? 0 : 1];\n },\n dataToAngle: Axis.prototype.dataToCoord,\n angleToData: Axis.prototype.coordToData,\n\n /**\n * Only be called in category axis.\n * Angle axis uses text height to decide interval\n *\n * @override\n * @return {number} Auto interval for cateogry axis tick and label\n */\n calculateCategoryInterval: function () {\n var axis = this;\n var labelModel = axis.getLabelModel();\n var ordinalScale = axis.scale;\n var ordinalExtent = ordinalScale.getExtent(); // Providing this method is for optimization:\n // avoid generating a long array by `getTicks`\n // in large category data case.\n\n var tickCount = ordinalScale.count();\n\n if (ordinalExtent[1] - ordinalExtent[0] < 1) {\n return 0;\n }\n\n var tickValue = ordinalExtent[0];\n var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue);\n var unitH = Math.abs(unitSpan); // Not precise, just use height as text width\n // and each distance from axis line yet.\n\n var rect = textContain.getBoundingRect(tickValue, labelModel.getFont(), 'center', 'top');\n var maxH = Math.max(rect.height, 7);\n var dh = maxH / unitH; // 0/0 is NaN, 1/0 is Infinity.\n\n isNaN(dh) && (dh = Infinity);\n var interval = Math.max(0, Math.floor(dh));\n var cache = inner(axis.model);\n var lastAutoInterval = cache.lastAutoInterval;\n var lastTickCount = cache.lastTickCount; // Use cache to keep interval stable while moving zoom window,\n // otherwise the calculated interval might jitter when the zoom\n // window size is close to the interval-changing size.\n\n if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1 // Always choose the bigger one, otherwise the critical\n // point is not the same when zooming in or zooming out.\n && lastAutoInterval > interval) {\n interval = lastAutoInterval;\n } // Only update cache if cache not used, otherwise the\n // changing of interval is too insensitive.\n else {\n cache.lastTickCount = tickCount;\n cache.lastAutoInterval = interval;\n }\n\n return interval;\n }\n};\nzrUtil.inherits(AngleAxis, Axis);\nvar _default = AngleAxis;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/polar/AngleAxis.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/polar/AxisModel.js": +/*!***********************************************************!*\ + !*** ./node_modules/echarts/lib/coord/polar/AxisModel.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar ComponentModel = __webpack_require__(/*! ../../model/Component */ \"./node_modules/echarts/lib/model/Component.js\");\n\nvar axisModelCreator = __webpack_require__(/*! ../axisModelCreator */ \"./node_modules/echarts/lib/coord/axisModelCreator.js\");\n\nvar axisModelCommonMixin = __webpack_require__(/*! ../axisModelCommonMixin */ \"./node_modules/echarts/lib/coord/axisModelCommonMixin.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PolarAxisModel = ComponentModel.extend({\n type: 'polarAxis',\n\n /**\n * @type {module:echarts/coord/polar/AngleAxis|module:echarts/coord/polar/RadiusAxis}\n */\n axis: null,\n\n /**\n * @override\n */\n getCoordSysModel: function () {\n return this.ecModel.queryComponents({\n mainType: 'polar',\n index: this.option.polarIndex,\n id: this.option.polarId\n })[0];\n }\n});\nzrUtil.merge(PolarAxisModel.prototype, axisModelCommonMixin);\nvar polarAxisDefaultExtendedOption = {\n angle: {\n // polarIndex: 0,\n // polarId: '',\n startAngle: 90,\n clockwise: true,\n splitNumber: 12,\n axisLabel: {\n rotate: false\n }\n },\n radius: {\n // polarIndex: 0,\n // polarId: '',\n splitNumber: 5\n }\n};\n\nfunction getAxisType(axisDim, option) {\n // Default axis with data is category axis\n return option.type || (option.data ? 'category' : 'value');\n}\n\naxisModelCreator('angle', PolarAxisModel, getAxisType, polarAxisDefaultExtendedOption.angle);\naxisModelCreator('radius', PolarAxisModel, getAxisType, polarAxisDefaultExtendedOption.radius);\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/polar/AxisModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/polar/Polar.js": +/*!*******************************************************!*\ + !*** ./node_modules/echarts/lib/coord/polar/Polar.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar RadiusAxis = __webpack_require__(/*! ./RadiusAxis */ \"./node_modules/echarts/lib/coord/polar/RadiusAxis.js\");\n\nvar AngleAxis = __webpack_require__(/*! ./AngleAxis */ \"./node_modules/echarts/lib/coord/polar/AngleAxis.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/coord/polar/Polar\n */\n\n/**\n * @alias {module:echarts/coord/polar/Polar}\n * @constructor\n * @param {string} name\n */\nvar Polar = function (name) {\n /**\n * @type {string}\n */\n this.name = name || '';\n /**\n * x of polar center\n * @type {number}\n */\n\n this.cx = 0;\n /**\n * y of polar center\n * @type {number}\n */\n\n this.cy = 0;\n /**\n * @type {module:echarts/coord/polar/RadiusAxis}\n * @private\n */\n\n this._radiusAxis = new RadiusAxis();\n /**\n * @type {module:echarts/coord/polar/AngleAxis}\n * @private\n */\n\n this._angleAxis = new AngleAxis();\n this._radiusAxis.polar = this._angleAxis.polar = this;\n};\n\nPolar.prototype = {\n type: 'polar',\n axisPointerEnabled: true,\n constructor: Polar,\n\n /**\n * @param {Array.}\n * @readOnly\n */\n dimensions: ['radius', 'angle'],\n\n /**\n * @type {module:echarts/coord/PolarModel}\n */\n model: null,\n\n /**\n * If contain coord\n * @param {Array.} point\n * @return {boolean}\n */\n containPoint: function (point) {\n var coord = this.pointToCoord(point);\n return this._radiusAxis.contain(coord[0]) && this._angleAxis.contain(coord[1]);\n },\n\n /**\n * If contain data\n * @param {Array.} data\n * @return {boolean}\n */\n containData: function (data) {\n return this._radiusAxis.containData(data[0]) && this._angleAxis.containData(data[1]);\n },\n\n /**\n * @param {string} dim\n * @return {module:echarts/coord/polar/AngleAxis|module:echarts/coord/polar/RadiusAxis}\n */\n getAxis: function (dim) {\n return this['_' + dim + 'Axis'];\n },\n\n /**\n * @return {Array.}\n */\n getAxes: function () {\n return [this._radiusAxis, this._angleAxis];\n },\n\n /**\n * Get axes by type of scale\n * @param {string} scaleType\n * @return {module:echarts/coord/polar/AngleAxis|module:echarts/coord/polar/RadiusAxis}\n */\n getAxesByScale: function (scaleType) {\n var axes = [];\n var angleAxis = this._angleAxis;\n var radiusAxis = this._radiusAxis;\n angleAxis.scale.type === scaleType && axes.push(angleAxis);\n radiusAxis.scale.type === scaleType && axes.push(radiusAxis);\n return axes;\n },\n\n /**\n * @return {module:echarts/coord/polar/AngleAxis}\n */\n getAngleAxis: function () {\n return this._angleAxis;\n },\n\n /**\n * @return {module:echarts/coord/polar/RadiusAxis}\n */\n getRadiusAxis: function () {\n return this._radiusAxis;\n },\n\n /**\n * @param {module:echarts/coord/polar/Axis}\n * @return {module:echarts/coord/polar/Axis}\n */\n getOtherAxis: function (axis) {\n var angleAxis = this._angleAxis;\n return axis === angleAxis ? this._radiusAxis : angleAxis;\n },\n\n /**\n * Base axis will be used on stacking.\n *\n * @return {module:echarts/coord/polar/Axis}\n */\n getBaseAxis: function () {\n return this.getAxesByScale('ordinal')[0] || this.getAxesByScale('time')[0] || this.getAngleAxis();\n },\n\n /**\n * @param {string} [dim] 'radius' or 'angle' or 'auto' or null/undefined\n * @return {Object} {baseAxes: [], otherAxes: []}\n */\n getTooltipAxes: function (dim) {\n var baseAxis = dim != null && dim !== 'auto' ? this.getAxis(dim) : this.getBaseAxis();\n return {\n baseAxes: [baseAxis],\n otherAxes: [this.getOtherAxis(baseAxis)]\n };\n },\n\n /**\n * Convert a single data item to (x, y) point.\n * Parameter data is an array which the first element is radius and the second is angle\n * @param {Array.} data\n * @param {boolean} [clamp=false]\n * @return {Array.}\n */\n dataToPoint: function (data, clamp) {\n return this.coordToPoint([this._radiusAxis.dataToRadius(data[0], clamp), this._angleAxis.dataToAngle(data[1], clamp)]);\n },\n\n /**\n * Convert a (x, y) point to data\n * @param {Array.} point\n * @param {boolean} [clamp=false]\n * @return {Array.}\n */\n pointToData: function (point, clamp) {\n var coord = this.pointToCoord(point);\n return [this._radiusAxis.radiusToData(coord[0], clamp), this._angleAxis.angleToData(coord[1], clamp)];\n },\n\n /**\n * Convert a (x, y) point to (radius, angle) coord\n * @param {Array.} point\n * @return {Array.}\n */\n pointToCoord: function (point) {\n var dx = point[0] - this.cx;\n var dy = point[1] - this.cy;\n var angleAxis = this.getAngleAxis();\n var extent = angleAxis.getExtent();\n var minAngle = Math.min(extent[0], extent[1]);\n var maxAngle = Math.max(extent[0], extent[1]); // Fix fixed extent in polarCreator\n // FIXME\n\n angleAxis.inverse ? minAngle = maxAngle - 360 : maxAngle = minAngle + 360;\n var radius = Math.sqrt(dx * dx + dy * dy);\n dx /= radius;\n dy /= radius;\n var radian = Math.atan2(-dy, dx) / Math.PI * 180; // move to angleExtent\n\n var dir = radian < minAngle ? 1 : -1;\n\n while (radian < minAngle || radian > maxAngle) {\n radian += dir * 360;\n }\n\n return [radius, radian];\n },\n\n /**\n * Convert a (radius, angle) coord to (x, y) point\n * @param {Array.} coord\n * @return {Array.}\n */\n coordToPoint: function (coord) {\n var radius = coord[0];\n var radian = coord[1] / 180 * Math.PI;\n var x = Math.cos(radian) * radius + this.cx; // Inverse the y\n\n var y = -Math.sin(radian) * radius + this.cy;\n return [x, y];\n },\n\n /**\n * Get ring area of cartesian.\n * Area will have a contain function to determine if a point is in the coordinate system.\n * @return {Ring}\n */\n getArea: function () {\n var angleAxis = this.getAngleAxis();\n var radiusAxis = this.getRadiusAxis();\n var radiusExtent = radiusAxis.getExtent().slice();\n radiusExtent[0] > radiusExtent[1] && radiusExtent.reverse();\n var angleExtent = angleAxis.getExtent();\n var RADIAN = Math.PI / 180;\n return {\n cx: this.cx,\n cy: this.cy,\n r0: radiusExtent[0],\n r: radiusExtent[1],\n startAngle: -angleExtent[0] * RADIAN,\n endAngle: -angleExtent[1] * RADIAN,\n clockwise: angleAxis.inverse,\n contain: function (x, y) {\n // It's a ring shape.\n // Start angle and end angle don't matter\n var dx = x - this.cx;\n var dy = y - this.cy;\n var d2 = dx * dx + dy * dy;\n var r = this.r;\n var r0 = this.r0;\n return d2 <= r * r && d2 >= r0 * r0;\n }\n };\n }\n};\nvar _default = Polar;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/polar/Polar.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/polar/PolarModel.js": +/*!************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/polar/PolarModel.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\n__webpack_require__(/*! ./AxisModel */ \"./node_modules/echarts/lib/coord/polar/AxisModel.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendComponentModel({\n type: 'polar',\n dependencies: ['polarAxis', 'angleAxis'],\n\n /**\n * @type {module:echarts/coord/polar/Polar}\n */\n coordinateSystem: null,\n\n /**\n * @param {string} axisType\n * @return {module:echarts/coord/polar/AxisModel}\n */\n findAxisModel: function (axisType) {\n var foundAxisModel;\n var ecModel = this.ecModel;\n ecModel.eachComponent(axisType, function (axisModel) {\n if (axisModel.getCoordSysModel() === this) {\n foundAxisModel = axisModel;\n }\n }, this);\n return foundAxisModel;\n },\n defaultOption: {\n zlevel: 0,\n z: 0,\n center: ['50%', '50%'],\n radius: '80%'\n }\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/polar/PolarModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/polar/RadiusAxis.js": +/*!************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/polar/RadiusAxis.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar Axis = __webpack_require__(/*! ../Axis */ \"./node_modules/echarts/lib/coord/Axis.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction RadiusAxis(scale, radiusExtent) {\n Axis.call(this, 'radius', scale, radiusExtent);\n /**\n * Axis type\n * - 'category'\n * - 'value'\n * - 'time'\n * - 'log'\n * @type {string}\n */\n\n this.type = 'category';\n}\n\nRadiusAxis.prototype = {\n constructor: RadiusAxis,\n\n /**\n * @override\n */\n pointToData: function (point, clamp) {\n return this.polar.pointToData(point, clamp)[this.dim === 'radius' ? 0 : 1];\n },\n dataToRadius: Axis.prototype.dataToCoord,\n radiusToData: Axis.prototype.coordToData\n};\nzrUtil.inherits(RadiusAxis, Axis);\nvar _default = RadiusAxis;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/polar/RadiusAxis.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/polar/polarCreator.js": +/*!**************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/polar/polarCreator.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar Polar = __webpack_require__(/*! ./Polar */ \"./node_modules/echarts/lib/coord/polar/Polar.js\");\n\nvar _number = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _axisHelper = __webpack_require__(/*! ../../coord/axisHelper */ \"./node_modules/echarts/lib/coord/axisHelper.js\");\n\nvar createScaleByModel = _axisHelper.createScaleByModel;\nvar niceScaleExtent = _axisHelper.niceScaleExtent;\n\nvar CoordinateSystem = __webpack_require__(/*! ../../CoordinateSystem */ \"./node_modules/echarts/lib/CoordinateSystem.js\");\n\nvar _dataStackHelper = __webpack_require__(/*! ../../data/helper/dataStackHelper */ \"./node_modules/echarts/lib/data/helper/dataStackHelper.js\");\n\nvar getStackedDimension = _dataStackHelper.getStackedDimension;\n\n__webpack_require__(/*! ./PolarModel */ \"./node_modules/echarts/lib/coord/polar/PolarModel.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// TODO Axis scale\n\n/**\n * Resize method bound to the polar\n * @param {module:echarts/coord/polar/PolarModel} polarModel\n * @param {module:echarts/ExtensionAPI} api\n */\nfunction resizePolar(polar, polarModel, api) {\n var center = polarModel.get('center');\n var width = api.getWidth();\n var height = api.getHeight();\n polar.cx = parsePercent(center[0], width);\n polar.cy = parsePercent(center[1], height);\n var radiusAxis = polar.getRadiusAxis();\n var size = Math.min(width, height) / 2;\n var radius = polarModel.get('radius');\n\n if (radius == null) {\n radius = [0, '100%'];\n } else if (!zrUtil.isArray(radius)) {\n // r0 = 0\n radius = [0, radius];\n }\n\n radius = [parsePercent(radius[0], size), parsePercent(radius[1], size)];\n radiusAxis.inverse ? radiusAxis.setExtent(radius[1], radius[0]) : radiusAxis.setExtent(radius[0], radius[1]);\n}\n/**\n * Update polar\n */\n\n\nfunction updatePolarScale(ecModel, api) {\n var polar = this;\n var angleAxis = polar.getAngleAxis();\n var radiusAxis = polar.getRadiusAxis(); // Reset scale\n\n angleAxis.scale.setExtent(Infinity, -Infinity);\n radiusAxis.scale.setExtent(Infinity, -Infinity);\n ecModel.eachSeries(function (seriesModel) {\n if (seriesModel.coordinateSystem === polar) {\n var data = seriesModel.getData();\n zrUtil.each(data.mapDimension('radius', true), function (dim) {\n radiusAxis.scale.unionExtentFromData(data, getStackedDimension(data, dim));\n });\n zrUtil.each(data.mapDimension('angle', true), function (dim) {\n angleAxis.scale.unionExtentFromData(data, getStackedDimension(data, dim));\n });\n }\n });\n niceScaleExtent(angleAxis.scale, angleAxis.model);\n niceScaleExtent(radiusAxis.scale, radiusAxis.model); // Fix extent of category angle axis\n\n if (angleAxis.type === 'category' && !angleAxis.onBand) {\n var extent = angleAxis.getExtent();\n var diff = 360 / angleAxis.scale.count();\n angleAxis.inverse ? extent[1] += diff : extent[1] -= diff;\n angleAxis.setExtent(extent[0], extent[1]);\n }\n}\n/**\n * Set common axis properties\n * @param {module:echarts/coord/polar/AngleAxis|module:echarts/coord/polar/RadiusAxis}\n * @param {module:echarts/coord/polar/AxisModel}\n * @inner\n */\n\n\nfunction setAxis(axis, axisModel) {\n axis.type = axisModel.get('type');\n axis.scale = createScaleByModel(axisModel);\n axis.onBand = axisModel.get('boundaryGap') && axis.type === 'category';\n axis.inverse = axisModel.get('inverse');\n\n if (axisModel.mainType === 'angleAxis') {\n axis.inverse ^= axisModel.get('clockwise');\n var startAngle = axisModel.get('startAngle');\n axis.setExtent(startAngle, startAngle + (axis.inverse ? -360 : 360));\n } // Inject axis instance\n\n\n axisModel.axis = axis;\n axis.model = axisModel;\n}\n\nvar polarCreator = {\n dimensions: Polar.prototype.dimensions,\n create: function (ecModel, api) {\n var polarList = [];\n ecModel.eachComponent('polar', function (polarModel, idx) {\n var polar = new Polar(idx); // Inject resize and update method\n\n polar.update = updatePolarScale;\n var radiusAxis = polar.getRadiusAxis();\n var angleAxis = polar.getAngleAxis();\n var radiusAxisModel = polarModel.findAxisModel('radiusAxis');\n var angleAxisModel = polarModel.findAxisModel('angleAxis');\n setAxis(radiusAxis, radiusAxisModel);\n setAxis(angleAxis, angleAxisModel);\n resizePolar(polar, polarModel, api);\n polarList.push(polar);\n polarModel.coordinateSystem = polar;\n polar.model = polarModel;\n }); // Inject coordinateSystem to series\n\n ecModel.eachSeries(function (seriesModel) {\n if (seriesModel.get('coordinateSystem') === 'polar') {\n var polarModel = ecModel.queryComponents({\n mainType: 'polar',\n index: seriesModel.get('polarIndex'),\n id: seriesModel.get('polarId')\n })[0];\n seriesModel.coordinateSystem = polarModel.coordinateSystem;\n }\n });\n return polarList;\n }\n};\nCoordinateSystem.register('polar', polarCreator);\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/polar/polarCreator.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/polar/prepareCustom.js": +/*!***************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/polar/prepareCustom.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction dataToCoordSize(dataSize, dataItem) {\n // dataItem is necessary in log axis.\n return zrUtil.map(['Radius', 'Angle'], function (dim, dimIdx) {\n var axis = this['get' + dim + 'Axis']();\n var val = dataItem[dimIdx];\n var halfSize = dataSize[dimIdx] / 2;\n var method = 'dataTo' + dim;\n var result = axis.type === 'category' ? axis.getBandWidth() : Math.abs(axis[method](val - halfSize) - axis[method](val + halfSize));\n\n if (dim === 'Angle') {\n result = result * Math.PI / 180;\n }\n\n return result;\n }, this);\n}\n\nfunction _default(coordSys) {\n var radiusAxis = coordSys.getRadiusAxis();\n var angleAxis = coordSys.getAngleAxis();\n var radius = radiusAxis.getExtent();\n radius[0] > radius[1] && radius.reverse();\n return {\n coordSys: {\n type: 'polar',\n cx: coordSys.cx,\n cy: coordSys.cy,\n r: radius[1],\n r0: radius[0]\n },\n api: {\n coord: zrUtil.bind(function (data) {\n var radius = radiusAxis.dataToRadius(data[0]);\n var angle = angleAxis.dataToAngle(data[1]);\n var coord = coordSys.coordToPoint([radius, angle]);\n coord.push(radius, angle * Math.PI / 180);\n return coord;\n }),\n size: zrUtil.bind(dataToCoordSize, coordSys)\n }\n };\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/polar/prepareCustom.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/radar/IndicatorAxis.js": +/*!***************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/radar/IndicatorAxis.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar Axis = __webpack_require__(/*! ../Axis */ \"./node_modules/echarts/lib/coord/Axis.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction IndicatorAxis(dim, scale, radiusExtent) {\n Axis.call(this, dim, scale, radiusExtent);\n /**\n * Axis type\n * - 'category'\n * - 'value'\n * - 'time'\n * - 'log'\n * @type {string}\n */\n\n this.type = 'value';\n this.angle = 0;\n /**\n * Indicator name\n * @type {string}\n */\n\n this.name = '';\n /**\n * @type {module:echarts/model/Model}\n */\n\n this.model;\n}\n\nzrUtil.inherits(IndicatorAxis, Axis);\nvar _default = IndicatorAxis;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/radar/IndicatorAxis.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/radar/Radar.js": +/*!*******************************************************!*\ + !*** ./node_modules/echarts/lib/coord/radar/Radar.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar IndicatorAxis = __webpack_require__(/*! ./IndicatorAxis */ \"./node_modules/echarts/lib/coord/radar/IndicatorAxis.js\");\n\nvar IntervalScale = __webpack_require__(/*! ../../scale/Interval */ \"./node_modules/echarts/lib/scale/Interval.js\");\n\nvar numberUtil = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar _axisHelper = __webpack_require__(/*! ../axisHelper */ \"./node_modules/echarts/lib/coord/axisHelper.js\");\n\nvar getScaleExtent = _axisHelper.getScaleExtent;\nvar niceScaleExtent = _axisHelper.niceScaleExtent;\n\nvar CoordinateSystem = __webpack_require__(/*! ../../CoordinateSystem */ \"./node_modules/echarts/lib/CoordinateSystem.js\");\n\nvar LogScale = __webpack_require__(/*! ../../scale/Log */ \"./node_modules/echarts/lib/scale/Log.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// TODO clockwise\nfunction Radar(radarModel, ecModel, api) {\n this._model = radarModel;\n /**\n * Radar dimensions\n * @type {Array.}\n */\n\n this.dimensions = [];\n this._indicatorAxes = zrUtil.map(radarModel.getIndicatorModels(), function (indicatorModel, idx) {\n var dim = 'indicator_' + idx;\n var indicatorAxis = new IndicatorAxis(dim, indicatorModel.get('axisType') === 'log' ? new LogScale() : new IntervalScale());\n indicatorAxis.name = indicatorModel.get('name'); // Inject model and axis\n\n indicatorAxis.model = indicatorModel;\n indicatorModel.axis = indicatorAxis;\n this.dimensions.push(dim);\n return indicatorAxis;\n }, this);\n this.resize(radarModel, api);\n /**\n * @type {number}\n * @readOnly\n */\n\n this.cx;\n /**\n * @type {number}\n * @readOnly\n */\n\n this.cy;\n /**\n * @type {number}\n * @readOnly\n */\n\n this.r;\n /**\n * @type {number}\n * @readOnly\n */\n\n this.r0;\n /**\n * @type {number}\n * @readOnly\n */\n\n this.startAngle;\n}\n\nRadar.prototype.getIndicatorAxes = function () {\n return this._indicatorAxes;\n};\n\nRadar.prototype.dataToPoint = function (value, indicatorIndex) {\n var indicatorAxis = this._indicatorAxes[indicatorIndex];\n return this.coordToPoint(indicatorAxis.dataToCoord(value), indicatorIndex);\n};\n\nRadar.prototype.coordToPoint = function (coord, indicatorIndex) {\n var indicatorAxis = this._indicatorAxes[indicatorIndex];\n var angle = indicatorAxis.angle;\n var x = this.cx + coord * Math.cos(angle);\n var y = this.cy - coord * Math.sin(angle);\n return [x, y];\n};\n\nRadar.prototype.pointToData = function (pt) {\n var dx = pt[0] - this.cx;\n var dy = pt[1] - this.cy;\n var radius = Math.sqrt(dx * dx + dy * dy);\n dx /= radius;\n dy /= radius;\n var radian = Math.atan2(-dy, dx); // Find the closest angle\n // FIXME index can calculated directly\n\n var minRadianDiff = Infinity;\n var closestAxis;\n var closestAxisIdx = -1;\n\n for (var i = 0; i < this._indicatorAxes.length; i++) {\n var indicatorAxis = this._indicatorAxes[i];\n var diff = Math.abs(radian - indicatorAxis.angle);\n\n if (diff < minRadianDiff) {\n closestAxis = indicatorAxis;\n closestAxisIdx = i;\n minRadianDiff = diff;\n }\n }\n\n return [closestAxisIdx, +(closestAxis && closestAxis.coordToData(radius))];\n};\n\nRadar.prototype.resize = function (radarModel, api) {\n var center = radarModel.get('center');\n var viewWidth = api.getWidth();\n var viewHeight = api.getHeight();\n var viewSize = Math.min(viewWidth, viewHeight) / 2;\n this.cx = numberUtil.parsePercent(center[0], viewWidth);\n this.cy = numberUtil.parsePercent(center[1], viewHeight);\n this.startAngle = radarModel.get('startAngle') * Math.PI / 180; // radius may be single value like `20`, `'80%'`, or array like `[10, '80%']`\n\n var radius = radarModel.get('radius');\n\n if (typeof radius === 'string' || typeof radius === 'number') {\n radius = [0, radius];\n }\n\n this.r0 = numberUtil.parsePercent(radius[0], viewSize);\n this.r = numberUtil.parsePercent(radius[1], viewSize);\n zrUtil.each(this._indicatorAxes, function (indicatorAxis, idx) {\n indicatorAxis.setExtent(this.r0, this.r);\n var angle = this.startAngle + idx * Math.PI * 2 / this._indicatorAxes.length; // Normalize to [-PI, PI]\n\n angle = Math.atan2(Math.sin(angle), Math.cos(angle));\n indicatorAxis.angle = angle;\n }, this);\n};\n\nRadar.prototype.update = function (ecModel, api) {\n var indicatorAxes = this._indicatorAxes;\n var radarModel = this._model;\n zrUtil.each(indicatorAxes, function (indicatorAxis) {\n indicatorAxis.scale.setExtent(Infinity, -Infinity);\n });\n ecModel.eachSeriesByType('radar', function (radarSeries, idx) {\n if (radarSeries.get('coordinateSystem') !== 'radar' || ecModel.getComponent('radar', radarSeries.get('radarIndex')) !== radarModel) {\n return;\n }\n\n var data = radarSeries.getData();\n zrUtil.each(indicatorAxes, function (indicatorAxis) {\n indicatorAxis.scale.unionExtentFromData(data, data.mapDimension(indicatorAxis.dim));\n });\n }, this);\n var splitNumber = radarModel.get('splitNumber');\n\n function increaseInterval(interval) {\n var exp10 = Math.pow(10, Math.floor(Math.log(interval) / Math.LN10)); // Increase interval\n\n var f = interval / exp10;\n\n if (f === 2) {\n f = 5;\n } else {\n // f is 2 or 5\n f *= 2;\n }\n\n return f * exp10;\n } // Force all the axis fixing the maxSplitNumber.\n\n\n zrUtil.each(indicatorAxes, function (indicatorAxis, idx) {\n var rawExtent = getScaleExtent(indicatorAxis.scale, indicatorAxis.model).extent;\n niceScaleExtent(indicatorAxis.scale, indicatorAxis.model);\n var axisModel = indicatorAxis.model;\n var scale = indicatorAxis.scale;\n var fixedMin = axisModel.getMin();\n var fixedMax = axisModel.getMax();\n var interval = scale.getInterval();\n\n if (fixedMin != null && fixedMax != null) {\n // User set min, max, divide to get new interval\n scale.setExtent(+fixedMin, +fixedMax);\n scale.setInterval((fixedMax - fixedMin) / splitNumber);\n } else if (fixedMin != null) {\n var max; // User set min, expand extent on the other side\n\n do {\n max = fixedMin + interval * splitNumber;\n scale.setExtent(+fixedMin, max); // Interval must been set after extent\n // FIXME\n\n scale.setInterval(interval);\n interval = increaseInterval(interval);\n } while (max < rawExtent[1] && isFinite(max) && isFinite(rawExtent[1]));\n } else if (fixedMax != null) {\n var min; // User set min, expand extent on the other side\n\n do {\n min = fixedMax - interval * splitNumber;\n scale.setExtent(min, +fixedMax);\n scale.setInterval(interval);\n interval = increaseInterval(interval);\n } while (min > rawExtent[0] && isFinite(min) && isFinite(rawExtent[0]));\n } else {\n var nicedSplitNumber = scale.getTicks().length - 1;\n\n if (nicedSplitNumber > splitNumber) {\n interval = increaseInterval(interval);\n } // TODO\n\n\n var max = Math.ceil(rawExtent[1] / interval) * interval;\n var min = numberUtil.round(max - interval * splitNumber);\n scale.setExtent(min, max);\n scale.setInterval(interval);\n }\n });\n};\n/**\n * Radar dimensions is based on the data\n * @type {Array}\n */\n\n\nRadar.dimensions = [];\n\nRadar.create = function (ecModel, api) {\n var radarList = [];\n ecModel.eachComponent('radar', function (radarModel) {\n var radar = new Radar(radarModel, ecModel, api);\n radarList.push(radar);\n radarModel.coordinateSystem = radar;\n });\n ecModel.eachSeriesByType('radar', function (radarSeries) {\n if (radarSeries.get('coordinateSystem') === 'radar') {\n // Inject coordinate system\n radarSeries.coordinateSystem = radarList[radarSeries.get('radarIndex') || 0];\n }\n });\n return radarList;\n};\n\nCoordinateSystem.register('radar', Radar);\nvar _default = Radar;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/radar/Radar.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/radar/RadarModel.js": +/*!************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/radar/RadarModel.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(/*! ../../echarts */ \"./node_modules/echarts/lib/echarts.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar axisDefault = __webpack_require__(/*! ../axisDefault */ \"./node_modules/echarts/lib/coord/axisDefault.js\");\n\nvar Model = __webpack_require__(/*! ../../model/Model */ \"./node_modules/echarts/lib/model/Model.js\");\n\nvar axisModelCommonMixin = __webpack_require__(/*! ../axisModelCommonMixin */ \"./node_modules/echarts/lib/coord/axisModelCommonMixin.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar valueAxisDefault = axisDefault.valueAxis;\n\nfunction defaultsShow(opt, show) {\n return zrUtil.defaults({\n show: show\n }, opt);\n}\n\nvar RadarModel = echarts.extendComponentModel({\n type: 'radar',\n optionUpdated: function () {\n var boundaryGap = this.get('boundaryGap');\n var splitNumber = this.get('splitNumber');\n var scale = this.get('scale');\n var axisLine = this.get('axisLine');\n var axisTick = this.get('axisTick');\n var axisType = this.get('axisType');\n var axisLabel = this.get('axisLabel');\n var nameTextStyle = this.get('name');\n var showName = this.get('name.show');\n var nameFormatter = this.get('name.formatter');\n var nameGap = this.get('nameGap');\n var triggerEvent = this.get('triggerEvent');\n var indicatorModels = zrUtil.map(this.get('indicator') || [], function (indicatorOpt) {\n // PENDING\n if (indicatorOpt.max != null && indicatorOpt.max > 0 && !indicatorOpt.min) {\n indicatorOpt.min = 0;\n } else if (indicatorOpt.min != null && indicatorOpt.min < 0 && !indicatorOpt.max) {\n indicatorOpt.max = 0;\n }\n\n var iNameTextStyle = nameTextStyle;\n\n if (indicatorOpt.color != null) {\n iNameTextStyle = zrUtil.defaults({\n color: indicatorOpt.color\n }, nameTextStyle);\n } // Use same configuration\n\n\n indicatorOpt = zrUtil.merge(zrUtil.clone(indicatorOpt), {\n boundaryGap: boundaryGap,\n splitNumber: splitNumber,\n scale: scale,\n axisLine: axisLine,\n axisTick: axisTick,\n axisType: axisType,\n axisLabel: axisLabel,\n // Compatible with 2 and use text\n name: indicatorOpt.text,\n nameLocation: 'end',\n nameGap: nameGap,\n // min: 0,\n nameTextStyle: iNameTextStyle,\n triggerEvent: triggerEvent\n }, false);\n\n if (!showName) {\n indicatorOpt.name = '';\n }\n\n if (typeof nameFormatter === 'string') {\n var indName = indicatorOpt.name;\n indicatorOpt.name = nameFormatter.replace('{value}', indName != null ? indName : '');\n } else if (typeof nameFormatter === 'function') {\n indicatorOpt.name = nameFormatter(indicatorOpt.name, indicatorOpt);\n }\n\n var model = zrUtil.extend(new Model(indicatorOpt, null, this.ecModel), axisModelCommonMixin); // For triggerEvent.\n\n model.mainType = 'radar';\n model.componentIndex = this.componentIndex;\n return model;\n }, this);\n\n this.getIndicatorModels = function () {\n return indicatorModels;\n };\n },\n defaultOption: {\n zlevel: 0,\n z: 0,\n center: ['50%', '50%'],\n radius: '75%',\n startAngle: 90,\n name: {\n show: true // formatter: null\n // textStyle: {}\n\n },\n boundaryGap: [0, 0],\n splitNumber: 5,\n nameGap: 15,\n scale: false,\n // Polygon or circle\n shape: 'polygon',\n axisLine: zrUtil.merge({\n lineStyle: {\n color: '#bbb'\n }\n }, valueAxisDefault.axisLine),\n axisLabel: defaultsShow(valueAxisDefault.axisLabel, false),\n axisTick: defaultsShow(valueAxisDefault.axisTick, false),\n axisType: 'interval',\n splitLine: defaultsShow(valueAxisDefault.splitLine, true),\n splitArea: defaultsShow(valueAxisDefault.splitArea, true),\n // {text, min, max}\n indicator: []\n }\n});\nvar _default = RadarModel;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/radar/RadarModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/single/AxisModel.js": +/*!************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/single/AxisModel.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar ComponentModel = __webpack_require__(/*! ../../model/Component */ \"./node_modules/echarts/lib/model/Component.js\");\n\nvar axisModelCreator = __webpack_require__(/*! ../axisModelCreator */ \"./node_modules/echarts/lib/coord/axisModelCreator.js\");\n\nvar axisModelCommonMixin = __webpack_require__(/*! ../axisModelCommonMixin */ \"./node_modules/echarts/lib/coord/axisModelCommonMixin.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar AxisModel = ComponentModel.extend({\n type: 'singleAxis',\n layoutMode: 'box',\n\n /**\n * @type {module:echarts/coord/single/SingleAxis}\n */\n axis: null,\n\n /**\n * @type {module:echarts/coord/single/Single}\n */\n coordinateSystem: null,\n\n /**\n * @override\n */\n getCoordSysModel: function () {\n return this;\n }\n});\nvar defaultOption = {\n left: '5%',\n top: '5%',\n right: '5%',\n bottom: '5%',\n type: 'value',\n position: 'bottom',\n orient: 'horizontal',\n axisLine: {\n show: true,\n lineStyle: {\n width: 1,\n type: 'solid'\n }\n },\n // Single coordinate system and single axis is the,\n // which is used as the parent tooltip model.\n // same model, so we set default tooltip show as true.\n tooltip: {\n show: true\n },\n axisTick: {\n show: true,\n length: 6,\n lineStyle: {\n width: 1\n }\n },\n axisLabel: {\n show: true,\n interval: 'auto'\n },\n splitLine: {\n show: true,\n lineStyle: {\n type: 'dashed',\n opacity: 0.2\n }\n }\n};\n\nfunction getAxisType(axisName, option) {\n return option.type || (option.data ? 'category' : 'value');\n}\n\nzrUtil.merge(AxisModel.prototype, axisModelCommonMixin);\naxisModelCreator('single', AxisModel, getAxisType, defaultOption);\nvar _default = AxisModel;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/single/AxisModel.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/single/Single.js": +/*!*********************************************************!*\ + !*** ./node_modules/echarts/lib/coord/single/Single.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar SingleAxis = __webpack_require__(/*! ./SingleAxis */ \"./node_modules/echarts/lib/coord/single/SingleAxis.js\");\n\nvar axisHelper = __webpack_require__(/*! ../axisHelper */ \"./node_modules/echarts/lib/coord/axisHelper.js\");\n\nvar _layout = __webpack_require__(/*! ../../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar getLayoutRect = _layout.getLayoutRect;\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar each = _util.each;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Single coordinates system.\n */\n\n/**\n * Create a single coordinates system.\n *\n * @param {module:echarts/coord/single/AxisModel} axisModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\nfunction Single(axisModel, ecModel, api) {\n /**\n * @type {string}\n * @readOnly\n */\n this.dimension = 'single';\n /**\n * Add it just for draw tooltip.\n *\n * @type {Array.}\n * @readOnly\n */\n\n this.dimensions = ['single'];\n /**\n * @private\n * @type {module:echarts/coord/single/SingleAxis}.\n */\n\n this._axis = null;\n /**\n * @private\n * @type {module:zrender/core/BoundingRect}\n */\n\n this._rect;\n\n this._init(axisModel, ecModel, api);\n /**\n * @type {module:echarts/coord/single/AxisModel}\n */\n\n\n this.model = axisModel;\n}\n\nSingle.prototype = {\n type: 'singleAxis',\n axisPointerEnabled: true,\n constructor: Single,\n\n /**\n * Initialize single coordinate system.\n *\n * @param {module:echarts/coord/single/AxisModel} axisModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @private\n */\n _init: function (axisModel, ecModel, api) {\n var dim = this.dimension;\n var axis = new SingleAxis(dim, axisHelper.createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisModel.get('position'));\n var isCategory = axis.type === 'category';\n axis.onBand = isCategory && axisModel.get('boundaryGap');\n axis.inverse = axisModel.get('inverse');\n axis.orient = axisModel.get('orient');\n axisModel.axis = axis;\n axis.model = axisModel;\n axis.coordinateSystem = this;\n this._axis = axis;\n },\n\n /**\n * Update axis scale after data processed\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n update: function (ecModel, api) {\n ecModel.eachSeries(function (seriesModel) {\n if (seriesModel.coordinateSystem === this) {\n var data = seriesModel.getData();\n each(data.mapDimension(this.dimension, true), function (dim) {\n this._axis.scale.unionExtentFromData(data, dim);\n }, this);\n axisHelper.niceScaleExtent(this._axis.scale, this._axis.model);\n }\n }, this);\n },\n\n /**\n * Resize the single coordinate system.\n *\n * @param {module:echarts/coord/single/AxisModel} axisModel\n * @param {module:echarts/ExtensionAPI} api\n */\n resize: function (axisModel, api) {\n this._rect = getLayoutRect({\n left: axisModel.get('left'),\n top: axisModel.get('top'),\n right: axisModel.get('right'),\n bottom: axisModel.get('bottom'),\n width: axisModel.get('width'),\n height: axisModel.get('height')\n }, {\n width: api.getWidth(),\n height: api.getHeight()\n });\n\n this._adjustAxis();\n },\n\n /**\n * @return {module:zrender/core/BoundingRect}\n */\n getRect: function () {\n return this._rect;\n },\n\n /**\n * @private\n */\n _adjustAxis: function () {\n var rect = this._rect;\n var axis = this._axis;\n var isHorizontal = axis.isHorizontal();\n var extent = isHorizontal ? [0, rect.width] : [0, rect.height];\n var idx = axis.reverse ? 1 : 0;\n axis.setExtent(extent[idx], extent[1 - idx]);\n\n this._updateAxisTransform(axis, isHorizontal ? rect.x : rect.y);\n },\n\n /**\n * @param {module:echarts/coord/single/SingleAxis} axis\n * @param {number} coordBase\n */\n _updateAxisTransform: function (axis, coordBase) {\n var axisExtent = axis.getExtent();\n var extentSum = axisExtent[0] + axisExtent[1];\n var isHorizontal = axis.isHorizontal();\n axis.toGlobalCoord = isHorizontal ? function (coord) {\n return coord + coordBase;\n } : function (coord) {\n return extentSum - coord + coordBase;\n };\n axis.toLocalCoord = isHorizontal ? function (coord) {\n return coord - coordBase;\n } : function (coord) {\n return extentSum - coord + coordBase;\n };\n },\n\n /**\n * Get axis.\n *\n * @return {module:echarts/coord/single/SingleAxis}\n */\n getAxis: function () {\n return this._axis;\n },\n\n /**\n * Get axis, add it just for draw tooltip.\n *\n * @return {[type]} [description]\n */\n getBaseAxis: function () {\n return this._axis;\n },\n\n /**\n * @return {Array.}\n */\n getAxes: function () {\n return [this._axis];\n },\n\n /**\n * @return {Object} {baseAxes: [], otherAxes: []}\n */\n getTooltipAxes: function () {\n return {\n baseAxes: [this.getAxis()]\n };\n },\n\n /**\n * If contain point.\n *\n * @param {Array.} point\n * @return {boolean}\n */\n containPoint: function (point) {\n var rect = this.getRect();\n var axis = this.getAxis();\n var orient = axis.orient;\n\n if (orient === 'horizontal') {\n return axis.contain(axis.toLocalCoord(point[0])) && point[1] >= rect.y && point[1] <= rect.y + rect.height;\n } else {\n return axis.contain(axis.toLocalCoord(point[1])) && point[0] >= rect.y && point[0] <= rect.y + rect.height;\n }\n },\n\n /**\n * @param {Array.} point\n * @return {Array.}\n */\n pointToData: function (point) {\n var axis = this.getAxis();\n return [axis.coordToData(axis.toLocalCoord(point[axis.orient === 'horizontal' ? 0 : 1]))];\n },\n\n /**\n * Convert the series data to concrete point.\n *\n * @param {number|Array.} val\n * @return {Array.}\n */\n dataToPoint: function (val) {\n var axis = this.getAxis();\n var rect = this.getRect();\n var pt = [];\n var idx = axis.orient === 'horizontal' ? 0 : 1;\n\n if (val instanceof Array) {\n val = val[0];\n }\n\n pt[idx] = axis.toGlobalCoord(axis.dataToCoord(+val));\n pt[1 - idx] = idx === 0 ? rect.y + rect.height / 2 : rect.x + rect.width / 2;\n return pt;\n }\n};\nvar _default = Single;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/single/Single.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/single/SingleAxis.js": +/*!*************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/single/SingleAxis.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar Axis = __webpack_require__(/*! ../Axis */ \"./node_modules/echarts/lib/coord/Axis.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @constructor module:echarts/coord/single/SingleAxis\n * @extends {module:echarts/coord/Axis}\n * @param {string} dim\n * @param {*} scale\n * @param {Array.} coordExtent\n * @param {string} axisType\n * @param {string} position\n */\nvar SingleAxis = function (dim, scale, coordExtent, axisType, position) {\n Axis.call(this, dim, scale, coordExtent);\n /**\n * Axis type\n * - 'category'\n * - 'value'\n * - 'time'\n * - 'log'\n * @type {string}\n */\n\n this.type = axisType || 'value';\n /**\n * Axis position\n * - 'top'\n * - 'bottom'\n * - 'left'\n * - 'right'\n * @type {string}\n */\n\n this.position = position || 'bottom';\n /**\n * Axis orient\n * - 'horizontal'\n * - 'vertical'\n * @type {[type]}\n */\n\n this.orient = null;\n};\n\nSingleAxis.prototype = {\n constructor: SingleAxis,\n\n /**\n * Axis model\n * @type {module:echarts/coord/single/AxisModel}\n */\n model: null,\n\n /**\n * Judge the orient of the axis.\n * @return {boolean}\n */\n isHorizontal: function () {\n var position = this.position;\n return position === 'top' || position === 'bottom';\n },\n\n /**\n * @override\n */\n pointToData: function (point, clamp) {\n return this.coordinateSystem.pointToData(point, clamp)[0];\n },\n\n /**\n * Convert the local coord(processed by dataToCoord())\n * to global coord(concrete pixel coord).\n * designated by module:echarts/coord/single/Single.\n * @type {Function}\n */\n toGlobalCoord: null,\n\n /**\n * Convert the global coord to local coord.\n * designated by module:echarts/coord/single/Single.\n * @type {Function}\n */\n toLocalCoord: null\n};\nzrUtil.inherits(SingleAxis, Axis);\nvar _default = SingleAxis;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/single/SingleAxis.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/single/prepareCustom.js": +/*!****************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/single/prepareCustom.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction dataToCoordSize(dataSize, dataItem) {\n // dataItem is necessary in log axis.\n var axis = this.getAxis();\n var val = dataItem instanceof Array ? dataItem[0] : dataItem;\n var halfSize = (dataSize instanceof Array ? dataSize[0] : dataSize) / 2;\n return axis.type === 'category' ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));\n}\n\nfunction _default(coordSys) {\n var rect = coordSys.getRect();\n return {\n coordSys: {\n type: 'singleAxis',\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height\n },\n api: {\n coord: function (val) {\n // do not provide \"out\" param\n return coordSys.dataToPoint(val);\n },\n size: zrUtil.bind(dataToCoordSize, coordSys)\n }\n };\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/single/prepareCustom.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/single/singleAxisHelper.js": +/*!*******************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/single/singleAxisHelper.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {Object} opt {labelInside}\n * @return {Object} {\n * position, rotation, labelDirection, labelOffset,\n * tickDirection, labelRotate, z2\n * }\n */\nfunction layout(axisModel, opt) {\n opt = opt || {};\n var single = axisModel.coordinateSystem;\n var axis = axisModel.axis;\n var layout = {};\n var axisPosition = axis.position;\n var orient = axis.orient;\n var rect = single.getRect();\n var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];\n var positionMap = {\n horizontal: {\n top: rectBound[2],\n bottom: rectBound[3]\n },\n vertical: {\n left: rectBound[0],\n right: rectBound[1]\n }\n };\n layout.position = [orient === 'vertical' ? positionMap.vertical[axisPosition] : rectBound[0], orient === 'horizontal' ? positionMap.horizontal[axisPosition] : rectBound[3]];\n var r = {\n horizontal: 0,\n vertical: 1\n };\n layout.rotation = Math.PI / 2 * r[orient];\n var directionMap = {\n top: -1,\n bottom: 1,\n right: 1,\n left: -1\n };\n layout.labelDirection = layout.tickDirection = layout.nameDirection = directionMap[axisPosition];\n\n if (axisModel.get('axisTick.inside')) {\n layout.tickDirection = -layout.tickDirection;\n }\n\n if (zrUtil.retrieve(opt.labelInside, axisModel.get('axisLabel.inside'))) {\n layout.labelDirection = -layout.labelDirection;\n }\n\n var labelRotation = opt.rotate;\n labelRotation == null && (labelRotation = axisModel.get('axisLabel.rotate'));\n layout.labelRotation = axisPosition === 'top' ? -labelRotation : labelRotation;\n layout.z2 = 1;\n return layout;\n}\n\nexports.layout = layout;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/single/singleAxisHelper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/coord/single/singleCreator.js": +/*!****************************************************************!*\ + !*** ./node_modules/echarts/lib/coord/single/singleCreator.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Single = __webpack_require__(/*! ./Single */ \"./node_modules/echarts/lib/coord/single/Single.js\");\n\nvar CoordinateSystem = __webpack_require__(/*! ../../CoordinateSystem */ \"./node_modules/echarts/lib/CoordinateSystem.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Single coordinate system creator.\n */\n\n/**\n * Create single coordinate system and inject it into seriesModel.\n *\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @return {Array.}\n */\nfunction create(ecModel, api) {\n var singles = [];\n ecModel.eachComponent('singleAxis', function (axisModel, idx) {\n var single = new Single(axisModel, ecModel, api);\n single.name = 'single_' + idx;\n single.resize(axisModel, api);\n axisModel.coordinateSystem = single;\n singles.push(single);\n });\n ecModel.eachSeries(function (seriesModel) {\n if (seriesModel.get('coordinateSystem') === 'singleAxis') {\n var singleAxisModel = ecModel.queryComponents({\n mainType: 'singleAxis',\n index: seriesModel.get('singleAxisIndex'),\n id: seriesModel.get('singleAxisId')\n })[0];\n seriesModel.coordinateSystem = singleAxisModel && singleAxisModel.coordinateSystem;\n }\n });\n return singles;\n}\n\nCoordinateSystem.register('single', {\n create: create,\n dimensions: Single.prototype.dimensions\n});\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/coord/single/singleCreator.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/data/DataDiffer.js": +/*!*****************************************************!*\ + !*** ./node_modules/echarts/lib/data/DataDiffer.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction defaultKeyGetter(item) {\n return item;\n}\n/**\n * @param {Array} oldArr\n * @param {Array} newArr\n * @param {Function} oldKeyGetter\n * @param {Function} newKeyGetter\n * @param {Object} [context] Can be visited by this.context in callback.\n */\n\n\nfunction DataDiffer(oldArr, newArr, oldKeyGetter, newKeyGetter, context) {\n this._old = oldArr;\n this._new = newArr;\n this._oldKeyGetter = oldKeyGetter || defaultKeyGetter;\n this._newKeyGetter = newKeyGetter || defaultKeyGetter;\n this.context = context;\n}\n\nDataDiffer.prototype = {\n constructor: DataDiffer,\n\n /**\n * Callback function when add a data\n */\n add: function (func) {\n this._add = func;\n return this;\n },\n\n /**\n * Callback function when update a data\n */\n update: function (func) {\n this._update = func;\n return this;\n },\n\n /**\n * Callback function when remove a data\n */\n remove: function (func) {\n this._remove = func;\n return this;\n },\n execute: function () {\n var oldArr = this._old;\n var newArr = this._new;\n var oldDataIndexMap = {};\n var newDataIndexMap = {};\n var oldDataKeyArr = [];\n var newDataKeyArr = [];\n var i;\n initIndexMap(oldArr, oldDataIndexMap, oldDataKeyArr, '_oldKeyGetter', this);\n initIndexMap(newArr, newDataIndexMap, newDataKeyArr, '_newKeyGetter', this);\n\n for (i = 0; i < oldArr.length; i++) {\n var key = oldDataKeyArr[i];\n var idx = newDataIndexMap[key]; // idx can never be empty array here. see 'set null' logic below.\n\n if (idx != null) {\n // Consider there is duplicate key (for example, use dataItem.name as key).\n // We should make sure every item in newArr and oldArr can be visited.\n var len = idx.length;\n\n if (len) {\n len === 1 && (newDataIndexMap[key] = null);\n idx = idx.shift();\n } else {\n newDataIndexMap[key] = null;\n }\n\n this._update && this._update(idx, i);\n } else {\n this._remove && this._remove(i);\n }\n }\n\n for (var i = 0; i < newDataKeyArr.length; i++) {\n var key = newDataKeyArr[i];\n\n if (newDataIndexMap.hasOwnProperty(key)) {\n var idx = newDataIndexMap[key];\n\n if (idx == null) {\n continue;\n } // idx can never be empty array here. see 'set null' logic above.\n\n\n if (!idx.length) {\n this._add && this._add(idx);\n } else {\n for (var j = 0, len = idx.length; j < len; j++) {\n this._add && this._add(idx[j]);\n }\n }\n }\n }\n }\n};\n\nfunction initIndexMap(arr, map, keyArr, keyGetterName, dataDiffer) {\n for (var i = 0; i < arr.length; i++) {\n // Add prefix to avoid conflict with Object.prototype.\n var key = '_ec_' + dataDiffer[keyGetterName](arr[i], i);\n var existence = map[key];\n\n if (existence == null) {\n keyArr.push(key);\n map[key] = i;\n } else {\n if (!existence.length) {\n map[key] = existence = [existence];\n }\n\n existence.push(i);\n }\n }\n}\n\nvar _default = DataDiffer;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/data/DataDiffer.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/data/DataDimensionInfo.js": +/*!************************************************************!*\ + !*** ./node_modules/echarts/lib/data/DataDimensionInfo.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @class\n * @param {Object|DataDimensionInfo} [opt] All of the fields will be shallow copied.\n */\nfunction DataDimensionInfo(opt) {\n if (opt != null) {\n zrUtil.extend(this, opt);\n }\n /**\n * Dimension name.\n * Mandatory.\n * @type {string}\n */\n // this.name;\n\n /**\n * The origin name in dimsDef, see source helper.\n * If displayName given, the tooltip will displayed vertically.\n * Optional.\n * @type {string}\n */\n // this.displayName;\n\n /**\n * Which coordSys dimension this dimension mapped to.\n * A `coordDim` can be a \"coordSysDim\" that the coordSys required\n * (for example, an item in `coordSysDims` of `model/referHelper#CoordSysInfo`),\n * or an generated \"extra coord name\" if does not mapped to any \"coordSysDim\"\n * (That is determined by whether `isExtraCoord` is `true`).\n * Mandatory.\n * @type {string}\n */\n // this.coordDim;\n\n /**\n * The index of this dimension in `series.encode[coordDim]`.\n * Mandatory.\n * @type {number}\n */\n // this.coordDimIndex;\n\n /**\n * Dimension type. The enumerable values are the key of\n * `dataCtors` of `data/List`.\n * Optional.\n * @type {string}\n */\n // this.type;\n\n /**\n * This index of this dimension info in `data/List#_dimensionInfos`.\n * Mandatory after added to `data/List`.\n * @type {number}\n */\n // this.index;\n\n /**\n * The format of `otherDims` is:\n * ```js\n * {\n * tooltip: number optional,\n * label: number optional,\n * itemName: number optional,\n * seriesName: number optional,\n * }\n * ```\n *\n * A `series.encode` can specified these fields:\n * ```js\n * encode: {\n * // \"3, 1, 5\" is the index of data dimension.\n * tooltip: [3, 1, 5],\n * label: [0, 3],\n * ...\n * }\n * ```\n * `otherDims` is the parse result of the `series.encode` above, like:\n * ```js\n * // Suppose the index of this data dimension is `3`.\n * this.otherDims = {\n * // `3` is at the index `0` of the `encode.tooltip`\n * tooltip: 0,\n * // `3` is at the index `1` of the `encode.tooltip`\n * label: 1\n * };\n * ```\n *\n * This prop should never be `null`/`undefined` after initialized.\n * @type {Object}\n */\n\n\n this.otherDims = {};\n /**\n * Be `true` if this dimension is not mapped to any \"coordSysDim\" that the\n * \"coordSys\" required.\n * Mandatory.\n * @type {boolean}\n */\n // this.isExtraCoord;\n\n /**\n * @type {module:data/OrdinalMeta}\n */\n // this.ordinalMeta;\n\n /**\n * Whether to create inverted indices.\n * @type {boolean}\n */\n // this.createInvertedIndices;\n}\n\n;\nvar _default = DataDimensionInfo;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/data/DataDimensionInfo.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/data/Graph.js": +/*!************************************************!*\ + !*** ./node_modules/echarts/lib/data/Graph.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar _clazz = __webpack_require__(/*! ../util/clazz */ \"./node_modules/echarts/lib/util/clazz.js\");\n\nvar enableClassCheck = _clazz.enableClassCheck;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// id may be function name of Object, add a prefix to avoid this problem.\nfunction generateNodeKey(id) {\n return '_EC_' + id;\n}\n/**\n * @alias module:echarts/data/Graph\n * @constructor\n * @param {boolean} directed\n */\n\n\nvar Graph = function (directed) {\n /**\n * 是否是有向图\n * @type {boolean}\n * @private\n */\n this._directed = directed || false;\n /**\n * @type {Array.}\n * @readOnly\n */\n\n this.nodes = [];\n /**\n * @type {Array.}\n * @readOnly\n */\n\n this.edges = [];\n /**\n * @type {Object.}\n * @private\n */\n\n this._nodesMap = {};\n /**\n * @type {Object.}\n * @private\n */\n\n this._edgesMap = {};\n /**\n * @type {module:echarts/data/List}\n * @readOnly\n */\n\n this.data;\n /**\n * @type {module:echarts/data/List}\n * @readOnly\n */\n\n this.edgeData;\n};\n\nvar graphProto = Graph.prototype;\n/**\n * @type {string}\n */\n\ngraphProto.type = 'graph';\n/**\n * If is directed graph\n * @return {boolean}\n */\n\ngraphProto.isDirected = function () {\n return this._directed;\n};\n/**\n * Add a new node\n * @param {string} id\n * @param {number} [dataIndex]\n */\n\n\ngraphProto.addNode = function (id, dataIndex) {\n id = id == null ? '' + dataIndex : '' + id;\n var nodesMap = this._nodesMap;\n\n if (nodesMap[generateNodeKey(id)]) {\n return;\n }\n\n var node = new Node(id, dataIndex);\n node.hostGraph = this;\n this.nodes.push(node);\n nodesMap[generateNodeKey(id)] = node;\n return node;\n};\n/**\n * Get node by data index\n * @param {number} dataIndex\n * @return {module:echarts/data/Graph~Node}\n */\n\n\ngraphProto.getNodeByIndex = function (dataIndex) {\n var rawIdx = this.data.getRawIndex(dataIndex);\n return this.nodes[rawIdx];\n};\n/**\n * Get node by id\n * @param {string} id\n * @return {module:echarts/data/Graph.Node}\n */\n\n\ngraphProto.getNodeById = function (id) {\n return this._nodesMap[generateNodeKey(id)];\n};\n/**\n * Add a new edge\n * @param {number|string|module:echarts/data/Graph.Node} n1\n * @param {number|string|module:echarts/data/Graph.Node} n2\n * @param {number} [dataIndex=-1]\n * @return {module:echarts/data/Graph.Edge}\n */\n\n\ngraphProto.addEdge = function (n1, n2, dataIndex) {\n var nodesMap = this._nodesMap;\n var edgesMap = this._edgesMap; // PNEDING\n\n if (typeof n1 === 'number') {\n n1 = this.nodes[n1];\n }\n\n if (typeof n2 === 'number') {\n n2 = this.nodes[n2];\n }\n\n if (!Node.isInstance(n1)) {\n n1 = nodesMap[generateNodeKey(n1)];\n }\n\n if (!Node.isInstance(n2)) {\n n2 = nodesMap[generateNodeKey(n2)];\n }\n\n if (!n1 || !n2) {\n return;\n }\n\n var key = n1.id + '-' + n2.id;\n var edge = new Edge(n1, n2, dataIndex);\n edge.hostGraph = this;\n\n if (this._directed) {\n n1.outEdges.push(edge);\n n2.inEdges.push(edge);\n }\n\n n1.edges.push(edge);\n\n if (n1 !== n2) {\n n2.edges.push(edge);\n }\n\n this.edges.push(edge);\n edgesMap[key] = edge;\n return edge;\n};\n/**\n * Get edge by data index\n * @param {number} dataIndex\n * @return {module:echarts/data/Graph~Node}\n */\n\n\ngraphProto.getEdgeByIndex = function (dataIndex) {\n var rawIdx = this.edgeData.getRawIndex(dataIndex);\n return this.edges[rawIdx];\n};\n/**\n * Get edge by two linked nodes\n * @param {module:echarts/data/Graph.Node|string} n1\n * @param {module:echarts/data/Graph.Node|string} n2\n * @return {module:echarts/data/Graph.Edge}\n */\n\n\ngraphProto.getEdge = function (n1, n2) {\n if (Node.isInstance(n1)) {\n n1 = n1.id;\n }\n\n if (Node.isInstance(n2)) {\n n2 = n2.id;\n }\n\n var edgesMap = this._edgesMap;\n\n if (this._directed) {\n return edgesMap[n1 + '-' + n2];\n } else {\n return edgesMap[n1 + '-' + n2] || edgesMap[n2 + '-' + n1];\n }\n};\n/**\n * Iterate all nodes\n * @param {Function} cb\n * @param {*} [context]\n */\n\n\ngraphProto.eachNode = function (cb, context) {\n var nodes = this.nodes;\n var len = nodes.length;\n\n for (var i = 0; i < len; i++) {\n if (nodes[i].dataIndex >= 0) {\n cb.call(context, nodes[i], i);\n }\n }\n};\n/**\n * Iterate all edges\n * @param {Function} cb\n * @param {*} [context]\n */\n\n\ngraphProto.eachEdge = function (cb, context) {\n var edges = this.edges;\n var len = edges.length;\n\n for (var i = 0; i < len; i++) {\n if (edges[i].dataIndex >= 0 && edges[i].node1.dataIndex >= 0 && edges[i].node2.dataIndex >= 0) {\n cb.call(context, edges[i], i);\n }\n }\n};\n/**\n * Breadth first traverse\n * @param {Function} cb\n * @param {module:echarts/data/Graph.Node} startNode\n * @param {string} [direction='none'] 'none'|'in'|'out'\n * @param {*} [context]\n */\n\n\ngraphProto.breadthFirstTraverse = function (cb, startNode, direction, context) {\n if (!Node.isInstance(startNode)) {\n startNode = this._nodesMap[generateNodeKey(startNode)];\n }\n\n if (!startNode) {\n return;\n }\n\n var edgeType = direction === 'out' ? 'outEdges' : direction === 'in' ? 'inEdges' : 'edges';\n\n for (var i = 0; i < this.nodes.length; i++) {\n this.nodes[i].__visited = false;\n }\n\n if (cb.call(context, startNode, null)) {\n return;\n }\n\n var queue = [startNode];\n\n while (queue.length) {\n var currentNode = queue.shift();\n var edges = currentNode[edgeType];\n\n for (var i = 0; i < edges.length; i++) {\n var e = edges[i];\n var otherNode = e.node1 === currentNode ? e.node2 : e.node1;\n\n if (!otherNode.__visited) {\n if (cb.call(context, otherNode, currentNode)) {\n // Stop traversing\n return;\n }\n\n queue.push(otherNode);\n otherNode.__visited = true;\n }\n }\n }\n}; // TODO\n// graphProto.depthFirstTraverse = function (\n// cb, startNode, direction, context\n// ) {\n// };\n// Filter update\n\n\ngraphProto.update = function () {\n var data = this.data;\n var edgeData = this.edgeData;\n var nodes = this.nodes;\n var edges = this.edges;\n\n for (var i = 0, len = nodes.length; i < len; i++) {\n nodes[i].dataIndex = -1;\n }\n\n for (var i = 0, len = data.count(); i < len; i++) {\n nodes[data.getRawIndex(i)].dataIndex = i;\n }\n\n edgeData.filterSelf(function (idx) {\n var edge = edges[edgeData.getRawIndex(idx)];\n return edge.node1.dataIndex >= 0 && edge.node2.dataIndex >= 0;\n }); // Update edge\n\n for (var i = 0, len = edges.length; i < len; i++) {\n edges[i].dataIndex = -1;\n }\n\n for (var i = 0, len = edgeData.count(); i < len; i++) {\n edges[edgeData.getRawIndex(i)].dataIndex = i;\n }\n};\n/**\n * @return {module:echarts/data/Graph}\n */\n\n\ngraphProto.clone = function () {\n var graph = new Graph(this._directed);\n var nodes = this.nodes;\n var edges = this.edges;\n\n for (var i = 0; i < nodes.length; i++) {\n graph.addNode(nodes[i].id, nodes[i].dataIndex);\n }\n\n for (var i = 0; i < edges.length; i++) {\n var e = edges[i];\n graph.addEdge(e.node1.id, e.node2.id, e.dataIndex);\n }\n\n return graph;\n};\n/**\n * @alias module:echarts/data/Graph.Node\n */\n\n\nfunction Node(id, dataIndex) {\n /**\n * @type {string}\n */\n this.id = id == null ? '' : id;\n /**\n * @type {Array.}\n */\n\n this.inEdges = [];\n /**\n * @type {Array.}\n */\n\n this.outEdges = [];\n /**\n * @type {Array.}\n */\n\n this.edges = [];\n /**\n * @type {module:echarts/data/Graph}\n */\n\n this.hostGraph;\n /**\n * @type {number}\n */\n\n this.dataIndex = dataIndex == null ? -1 : dataIndex;\n}\n\nNode.prototype = {\n constructor: Node,\n\n /**\n * @return {number}\n */\n degree: function () {\n return this.edges.length;\n },\n\n /**\n * @return {number}\n */\n inDegree: function () {\n return this.inEdges.length;\n },\n\n /**\n * @return {number}\n */\n outDegree: function () {\n return this.outEdges.length;\n },\n\n /**\n * @param {string} [path]\n * @return {module:echarts/model/Model}\n */\n getModel: function (path) {\n if (this.dataIndex < 0) {\n return;\n }\n\n var graph = this.hostGraph;\n var itemModel = graph.data.getItemModel(this.dataIndex);\n return itemModel.getModel(path);\n }\n};\n/**\n * 图边\n * @alias module:echarts/data/Graph.Edge\n * @param {module:echarts/data/Graph.Node} n1\n * @param {module:echarts/data/Graph.Node} n2\n * @param {number} [dataIndex=-1]\n */\n\nfunction Edge(n1, n2, dataIndex) {\n /**\n * 节点1,如果是有向图则为源节点\n * @type {module:echarts/data/Graph.Node}\n */\n this.node1 = n1;\n /**\n * 节点2,如果是有向图则为目标节点\n * @type {module:echarts/data/Graph.Node}\n */\n\n this.node2 = n2;\n this.dataIndex = dataIndex == null ? -1 : dataIndex;\n}\n/**\n * @param {string} [path]\n * @return {module:echarts/model/Model}\n */\n\n\nEdge.prototype.getModel = function (path) {\n if (this.dataIndex < 0) {\n return;\n }\n\n var graph = this.hostGraph;\n var itemModel = graph.edgeData.getItemModel(this.dataIndex);\n return itemModel.getModel(path);\n};\n\nvar createGraphDataProxyMixin = function (hostName, dataName) {\n return {\n /**\n * @param {string=} [dimension='value'] Default 'value'. can be 'a', 'b', 'c', 'd', 'e'.\n * @return {number}\n */\n getValue: function (dimension) {\n var data = this[hostName][dataName];\n return data.get(data.getDimension(dimension || 'value'), this.dataIndex);\n },\n\n /**\n * @param {Object|string} key\n * @param {*} [value]\n */\n setVisual: function (key, value) {\n this.dataIndex >= 0 && this[hostName][dataName].setItemVisual(this.dataIndex, key, value);\n },\n\n /**\n * @param {string} key\n * @return {boolean}\n */\n getVisual: function (key, ignoreParent) {\n return this[hostName][dataName].getItemVisual(this.dataIndex, key, ignoreParent);\n },\n\n /**\n * @param {Object} layout\n * @return {boolean} [merge=false]\n */\n setLayout: function (layout, merge) {\n this.dataIndex >= 0 && this[hostName][dataName].setItemLayout(this.dataIndex, layout, merge);\n },\n\n /**\n * @return {Object}\n */\n getLayout: function () {\n return this[hostName][dataName].getItemLayout(this.dataIndex);\n },\n\n /**\n * @return {module:zrender/Element}\n */\n getGraphicEl: function () {\n return this[hostName][dataName].getItemGraphicEl(this.dataIndex);\n },\n\n /**\n * @return {number}\n */\n getRawIndex: function () {\n return this[hostName][dataName].getRawIndex(this.dataIndex);\n }\n };\n};\n\nzrUtil.mixin(Node, createGraphDataProxyMixin('hostGraph', 'data'));\nzrUtil.mixin(Edge, createGraphDataProxyMixin('hostGraph', 'edgeData'));\nGraph.Node = Node;\nGraph.Edge = Edge;\nenableClassCheck(Node);\nenableClassCheck(Edge);\nvar _default = Graph;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/data/Graph.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/data/List.js": +/*!***********************************************!*\ + !*** ./node_modules/echarts/lib/data/List.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar Model = __webpack_require__(/*! ../model/Model */ \"./node_modules/echarts/lib/model/Model.js\");\n\nvar DataDiffer = __webpack_require__(/*! ./DataDiffer */ \"./node_modules/echarts/lib/data/DataDiffer.js\");\n\nvar Source = __webpack_require__(/*! ./Source */ \"./node_modules/echarts/lib/data/Source.js\");\n\nvar _dataProvider = __webpack_require__(/*! ./helper/dataProvider */ \"./node_modules/echarts/lib/data/helper/dataProvider.js\");\n\nvar defaultDimValueGetters = _dataProvider.defaultDimValueGetters;\nvar DefaultDataProvider = _dataProvider.DefaultDataProvider;\n\nvar _dimensionHelper = __webpack_require__(/*! ./helper/dimensionHelper */ \"./node_modules/echarts/lib/data/helper/dimensionHelper.js\");\n\nvar summarizeDimensions = _dimensionHelper.summarizeDimensions;\n\nvar DataDimensionInfo = __webpack_require__(/*! ./DataDimensionInfo */ \"./node_modules/echarts/lib/data/DataDimensionInfo.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float64Array, Int32Array, Uint32Array, Uint16Array */\n\n/**\n * List for data storage\n * @module echarts/data/List\n */\nvar isObject = zrUtil.isObject;\nvar UNDEFINED = 'undefined';\nvar INDEX_NOT_FOUND = -1; // Use prefix to avoid index to be the same as otherIdList[idx],\n// which will cause weird udpate animation.\n\nvar ID_PREFIX = 'e\\0\\0';\nvar dataCtors = {\n 'float': typeof Float64Array === UNDEFINED ? Array : Float64Array,\n 'int': typeof Int32Array === UNDEFINED ? Array : Int32Array,\n // Ordinal data type can be string or int\n 'ordinal': Array,\n 'number': Array,\n 'time': Array\n}; // Caution: MUST not use `new CtorUint32Array(arr, 0, len)`, because the Ctor of array is\n// different from the Ctor of typed array.\n\nvar CtorUint32Array = typeof Uint32Array === UNDEFINED ? Array : Uint32Array;\nvar CtorInt32Array = typeof Int32Array === UNDEFINED ? Array : Int32Array;\nvar CtorUint16Array = typeof Uint16Array === UNDEFINED ? Array : Uint16Array;\n\nfunction getIndicesCtor(list) {\n // The possible max value in this._indicies is always this._rawCount despite of filtering.\n return list._rawCount > 65535 ? CtorUint32Array : CtorUint16Array;\n}\n\nfunction cloneChunk(originalChunk) {\n var Ctor = originalChunk.constructor; // Only shallow clone is enough when Array.\n\n return Ctor === Array ? originalChunk.slice() : new Ctor(originalChunk);\n}\n\nvar TRANSFERABLE_PROPERTIES = ['hasItemOption', '_nameList', '_idList', '_invertedIndicesMap', '_rawData', '_chunkSize', '_chunkCount', '_dimValueGetter', '_count', '_rawCount', '_nameDimIdx', '_idDimIdx'];\nvar CLONE_PROPERTIES = ['_extent', '_approximateExtent', '_rawExtent'];\n\nfunction transferProperties(target, source) {\n zrUtil.each(TRANSFERABLE_PROPERTIES.concat(source.__wrappedMethods || []), function (propName) {\n if (source.hasOwnProperty(propName)) {\n target[propName] = source[propName];\n }\n });\n target.__wrappedMethods = source.__wrappedMethods;\n zrUtil.each(CLONE_PROPERTIES, function (propName) {\n target[propName] = zrUtil.clone(source[propName]);\n });\n target._calculationInfo = zrUtil.extend(source._calculationInfo);\n}\n/**\n * @constructor\n * @alias module:echarts/data/List\n *\n * @param {Array.} dimensions\n * For example, ['someDimName', {name: 'someDimName', type: 'someDimType'}, ...].\n * Dimensions should be concrete names like x, y, z, lng, lat, angle, radius\n * @param {module:echarts/model/Model} hostModel\n */\n\n\nvar List = function (dimensions, hostModel) {\n dimensions = dimensions || ['x', 'y'];\n var dimensionInfos = {};\n var dimensionNames = [];\n var invertedIndicesMap = {};\n\n for (var i = 0; i < dimensions.length; i++) {\n // Use the original dimensions[i], where other flag props may exists.\n var dimensionInfo = dimensions[i];\n\n if (zrUtil.isString(dimensionInfo)) {\n dimensionInfo = new DataDimensionInfo({\n name: dimensionInfo\n });\n } else if (!(dimensionInfo instanceof DataDimensionInfo)) {\n dimensionInfo = new DataDimensionInfo(dimensionInfo);\n }\n\n var dimensionName = dimensionInfo.name;\n dimensionInfo.type = dimensionInfo.type || 'float';\n\n if (!dimensionInfo.coordDim) {\n dimensionInfo.coordDim = dimensionName;\n dimensionInfo.coordDimIndex = 0;\n }\n\n dimensionInfo.otherDims = dimensionInfo.otherDims || {};\n dimensionNames.push(dimensionName);\n dimensionInfos[dimensionName] = dimensionInfo;\n dimensionInfo.index = i;\n\n if (dimensionInfo.createInvertedIndices) {\n invertedIndicesMap[dimensionName] = [];\n }\n }\n /**\n * @readOnly\n * @type {Array.}\n */\n\n\n this.dimensions = dimensionNames;\n /**\n * Infomation of each data dimension, like data type.\n * @type {Object}\n */\n\n this._dimensionInfos = dimensionInfos;\n /**\n * @type {module:echarts/model/Model}\n */\n\n this.hostModel = hostModel;\n /**\n * @type {module:echarts/model/Model}\n */\n\n this.dataType;\n /**\n * Indices stores the indices of data subset after filtered.\n * This data subset will be used in chart.\n * @type {Array.}\n * @readOnly\n */\n\n this._indices = null;\n this._count = 0;\n this._rawCount = 0;\n /**\n * Data storage\n * @type {Object.>}\n * @private\n */\n\n this._storage = {};\n /**\n * @type {Array.}\n */\n\n this._nameList = [];\n /**\n * @type {Array.}\n */\n\n this._idList = [];\n /**\n * Models of data option is stored sparse for optimizing memory cost\n * @type {Array.}\n * @private\n */\n\n this._optionModels = [];\n /**\n * Global visual properties after visual coding\n * @type {Object}\n * @private\n */\n\n this._visual = {};\n /**\n * Globel layout properties.\n * @type {Object}\n * @private\n */\n\n this._layout = {};\n /**\n * Item visual properties after visual coding\n * @type {Array.}\n * @private\n */\n\n this._itemVisuals = [];\n /**\n * Key: visual type, Value: boolean\n * @type {Object}\n * @readOnly\n */\n\n this.hasItemVisual = {};\n /**\n * Item layout properties after layout\n * @type {Array.}\n * @private\n */\n\n this._itemLayouts = [];\n /**\n * Graphic elemnents\n * @type {Array.}\n * @private\n */\n\n this._graphicEls = [];\n /**\n * Max size of each chunk.\n * @type {number}\n * @private\n */\n\n this._chunkSize = 1e5;\n /**\n * @type {number}\n * @private\n */\n\n this._chunkCount = 0;\n /**\n * @type {Array.}\n * @private\n */\n\n this._rawData;\n /**\n * Raw extent will not be cloned, but only transfered.\n * It will not be calculated util needed.\n * key: dim,\n * value: {end: number, extent: Array.}\n * @type {Object}\n * @private\n */\n\n this._rawExtent = {};\n /**\n * @type {Object}\n * @private\n */\n\n this._extent = {};\n /**\n * key: dim\n * value: extent\n * @type {Object}\n * @private\n */\n\n this._approximateExtent = {};\n /**\n * Cache summary info for fast visit. See \"dimensionHelper\".\n * @type {Object}\n * @private\n */\n\n this._dimensionsSummary = summarizeDimensions(this);\n /**\n * @type {Object.}\n * @private\n */\n\n this._invertedIndicesMap = invertedIndicesMap;\n /**\n * @type {Object}\n * @private\n */\n\n this._calculationInfo = {};\n /**\n * User output info of this data.\n * DO NOT use it in other places!\n *\n * When preparing user params for user callbacks, we have\n * to clone these inner data structures to prevent users\n * from modifying them to effect built-in logic. And for\n * performance consideration we make this `userOutput` to\n * avoid clone them too many times.\n *\n * @type {Object}\n * @readOnly\n */\n\n this.userOutput = this._dimensionsSummary.userOutput;\n};\n\nvar listProto = List.prototype;\nlistProto.type = 'list';\n/**\n * If each data item has it's own option\n * @type {boolean}\n */\n\nlistProto.hasItemOption = true;\n/**\n * The meanings of the input parameter `dim`:\n *\n * + If dim is a number (e.g., `1`), it means the index of the dimension.\n * For example, `getDimension(0)` will return 'x' or 'lng' or 'radius'.\n * + If dim is a number-like string (e.g., `\"1\"`):\n * + If there is the same concrete dim name defined in `this.dimensions`, it means that concrete name.\n * + If not, it will be converted to a number, which means the index of the dimension.\n * (why? because of the backward compatbility. We have been tolerating number-like string in\n * dimension setting, although now it seems that it is not a good idea.)\n * For example, `visualMap[i].dimension: \"1\"` is the same meaning as `visualMap[i].dimension: 1`,\n * if no dimension name is defined as `\"1\"`.\n * + If dim is a not-number-like string, it means the concrete dim name.\n * For example, it can be be default name `\"x\"`, `\"y\"`, `\"z\"`, `\"lng\"`, `\"lat\"`, `\"angle\"`, `\"radius\"`,\n * or customized in `dimensions` property of option like `\"age\"`.\n *\n * Get dimension name\n * @param {string|number} dim See above.\n * @return {string} Concrete dim name.\n */\n\nlistProto.getDimension = function (dim) {\n if (typeof dim === 'number' // If being a number-like string but not being defined a dimension name.\n || !isNaN(dim) && !this._dimensionInfos.hasOwnProperty(dim)) {\n dim = this.dimensions[dim];\n }\n\n return dim;\n};\n/**\n * Get type and calculation info of particular dimension\n * @param {string|number} dim\n * Dimension can be concrete names like x, y, z, lng, lat, angle, radius\n * Or a ordinal number. For example getDimensionInfo(0) will return 'x' or 'lng' or 'radius'\n */\n\n\nlistProto.getDimensionInfo = function (dim) {\n // Do not clone, because there may be categories in dimInfo.\n return this._dimensionInfos[this.getDimension(dim)];\n};\n/**\n * @return {Array.} concrete dimension name list on coord.\n */\n\n\nlistProto.getDimensionsOnCoord = function () {\n return this._dimensionsSummary.dataDimsOnCoord.slice();\n};\n/**\n * @param {string} coordDim\n * @param {number} [idx] A coordDim may map to more than one data dim.\n * If idx is `true`, return a array of all mapped dims.\n * If idx is not specified, return the first dim not extra.\n * @return {string|Array.} concrete data dim.\n * If idx is number, and not found, return null/undefined.\n * If idx is `true`, and not found, return empty array (always return array).\n */\n\n\nlistProto.mapDimension = function (coordDim, idx) {\n var dimensionsSummary = this._dimensionsSummary;\n\n if (idx == null) {\n return dimensionsSummary.encodeFirstDimNotExtra[coordDim];\n }\n\n var dims = dimensionsSummary.encode[coordDim];\n return idx === true // always return array if idx is `true`\n ? (dims || []).slice() : dims && dims[idx];\n};\n/**\n * Initialize from data\n * @param {Array.} data source or data or data provider.\n * @param {Array.} [nameLIst] The name of a datum is used on data diff and\n * default label/tooltip.\n * A name can be specified in encode.itemName,\n * or dataItem.name (only for series option data),\n * or provided in nameList from outside.\n * @param {Function} [dimValueGetter] (dataItem, dimName, dataIndex, dimIndex) => number\n */\n\n\nlistProto.initData = function (data, nameList, dimValueGetter) {\n var notProvider = Source.isInstance(data) || zrUtil.isArrayLike(data);\n\n if (notProvider) {\n data = new DefaultDataProvider(data, this.dimensions.length);\n }\n\n this._rawData = data; // Clear\n\n this._storage = {};\n this._indices = null;\n this._nameList = nameList || [];\n this._idList = [];\n this._nameRepeatCount = {};\n\n if (!dimValueGetter) {\n this.hasItemOption = false;\n }\n /**\n * @readOnly\n */\n\n\n this.defaultDimValueGetter = defaultDimValueGetters[this._rawData.getSource().sourceFormat]; // Default dim value getter\n\n this._dimValueGetter = dimValueGetter = dimValueGetter || this.defaultDimValueGetter;\n this._dimValueGetterArrayRows = defaultDimValueGetters.arrayRows; // Reset raw extent.\n\n this._rawExtent = {};\n\n this._initDataFromProvider(0, data.count()); // If data has no item option.\n\n\n if (data.pure) {\n this.hasItemOption = false;\n }\n};\n\nlistProto.getProvider = function () {\n return this._rawData;\n};\n/**\n * Caution: Can be only called on raw data (before `this._indices` created).\n */\n\n\nlistProto.appendData = function (data) {\n var rawData = this._rawData;\n var start = this.count();\n rawData.appendData(data);\n var end = rawData.count();\n\n if (!rawData.persistent) {\n end += start;\n }\n\n this._initDataFromProvider(start, end);\n};\n/**\n * Caution: Can be only called on raw data (before `this._indices` created).\n * This method does not modify `rawData` (`dataProvider`), but only\n * add values to storage.\n *\n * The final count will be increased by `Math.max(values.length, names.length)`.\n *\n * @param {Array.>} values That is the SourceType: 'arrayRows', like\n * [\n * [12, 33, 44],\n * [NaN, 43, 1],\n * ['-', 'asdf', 0]\n * ]\n * Each item is exaclty cooresponding to a dimension.\n * @param {Array.} [names]\n */\n\n\nlistProto.appendValues = function (values, names) {\n var chunkSize = this._chunkSize;\n var storage = this._storage;\n var dimensions = this.dimensions;\n var dimLen = dimensions.length;\n var rawExtent = this._rawExtent;\n var start = this.count();\n var end = start + Math.max(values.length, names ? names.length : 0);\n var originalChunkCount = this._chunkCount;\n\n for (var i = 0; i < dimLen; i++) {\n var dim = dimensions[i];\n\n if (!rawExtent[dim]) {\n rawExtent[dim] = getInitialExtent();\n }\n\n if (!storage[dim]) {\n storage[dim] = [];\n }\n\n prepareChunks(storage, this._dimensionInfos[dim], chunkSize, originalChunkCount, end);\n this._chunkCount = storage[dim].length;\n }\n\n var emptyDataItem = new Array(dimLen);\n\n for (var idx = start; idx < end; idx++) {\n var sourceIdx = idx - start;\n var chunkIndex = Math.floor(idx / chunkSize);\n var chunkOffset = idx % chunkSize; // Store the data by dimensions\n\n for (var k = 0; k < dimLen; k++) {\n var dim = dimensions[k];\n\n var val = this._dimValueGetterArrayRows(values[sourceIdx] || emptyDataItem, dim, sourceIdx, k);\n\n storage[dim][chunkIndex][chunkOffset] = val;\n var dimRawExtent = rawExtent[dim];\n val < dimRawExtent[0] && (dimRawExtent[0] = val);\n val > dimRawExtent[1] && (dimRawExtent[1] = val);\n }\n\n if (names) {\n this._nameList[idx] = names[sourceIdx];\n }\n }\n\n this._rawCount = this._count = end; // Reset data extent\n\n this._extent = {};\n prepareInvertedIndex(this);\n};\n\nlistProto._initDataFromProvider = function (start, end) {\n // Optimize.\n if (start >= end) {\n return;\n }\n\n var chunkSize = this._chunkSize;\n var rawData = this._rawData;\n var storage = this._storage;\n var dimensions = this.dimensions;\n var dimLen = dimensions.length;\n var dimensionInfoMap = this._dimensionInfos;\n var nameList = this._nameList;\n var idList = this._idList;\n var rawExtent = this._rawExtent;\n var nameRepeatCount = this._nameRepeatCount = {};\n var nameDimIdx;\n var originalChunkCount = this._chunkCount;\n\n for (var i = 0; i < dimLen; i++) {\n var dim = dimensions[i];\n\n if (!rawExtent[dim]) {\n rawExtent[dim] = getInitialExtent();\n }\n\n var dimInfo = dimensionInfoMap[dim];\n\n if (dimInfo.otherDims.itemName === 0) {\n nameDimIdx = this._nameDimIdx = i;\n }\n\n if (dimInfo.otherDims.itemId === 0) {\n this._idDimIdx = i;\n }\n\n if (!storage[dim]) {\n storage[dim] = [];\n }\n\n prepareChunks(storage, dimInfo, chunkSize, originalChunkCount, end);\n this._chunkCount = storage[dim].length;\n }\n\n var dataItem = new Array(dimLen);\n\n for (var idx = start; idx < end; idx++) {\n // NOTICE: Try not to write things into dataItem\n dataItem = rawData.getItem(idx, dataItem); // Each data item is value\n // [1, 2]\n // 2\n // Bar chart, line chart which uses category axis\n // only gives the 'y' value. 'x' value is the indices of category\n // Use a tempValue to normalize the value to be a (x, y) value\n\n var chunkIndex = Math.floor(idx / chunkSize);\n var chunkOffset = idx % chunkSize; // Store the data by dimensions\n\n for (var k = 0; k < dimLen; k++) {\n var dim = dimensions[k];\n var dimStorage = storage[dim][chunkIndex]; // PENDING NULL is empty or zero\n\n var val = this._dimValueGetter(dataItem, dim, idx, k);\n\n dimStorage[chunkOffset] = val;\n var dimRawExtent = rawExtent[dim];\n val < dimRawExtent[0] && (dimRawExtent[0] = val);\n val > dimRawExtent[1] && (dimRawExtent[1] = val);\n } // ??? FIXME not check by pure but sourceFormat?\n // TODO refactor these logic.\n\n\n if (!rawData.pure) {\n var name = nameList[idx];\n\n if (dataItem && name == null) {\n // If dataItem is {name: ...}, it has highest priority.\n // That is appropriate for many common cases.\n if (dataItem.name != null) {\n // There is no other place to persistent dataItem.name,\n // so save it to nameList.\n nameList[idx] = name = dataItem.name;\n } else if (nameDimIdx != null) {\n var nameDim = dimensions[nameDimIdx];\n var nameDimChunk = storage[nameDim][chunkIndex];\n\n if (nameDimChunk) {\n name = nameDimChunk[chunkOffset];\n var ordinalMeta = dimensionInfoMap[nameDim].ordinalMeta;\n\n if (ordinalMeta && ordinalMeta.categories.length) {\n name = ordinalMeta.categories[name];\n }\n }\n }\n } // Try using the id in option\n // id or name is used on dynamical data, mapping old and new items.\n\n\n var id = dataItem == null ? null : dataItem.id;\n\n if (id == null && name != null) {\n // Use name as id and add counter to avoid same name\n nameRepeatCount[name] = nameRepeatCount[name] || 0;\n id = name;\n\n if (nameRepeatCount[name] > 0) {\n id += '__ec__' + nameRepeatCount[name];\n }\n\n nameRepeatCount[name]++;\n }\n\n id != null && (idList[idx] = id);\n }\n }\n\n if (!rawData.persistent && rawData.clean) {\n // Clean unused data if data source is typed array.\n rawData.clean();\n }\n\n this._rawCount = this._count = end; // Reset data extent\n\n this._extent = {};\n prepareInvertedIndex(this);\n};\n\nfunction prepareChunks(storage, dimInfo, chunkSize, chunkCount, end) {\n var DataCtor = dataCtors[dimInfo.type];\n var lastChunkIndex = chunkCount - 1;\n var dim = dimInfo.name;\n var resizeChunkArray = storage[dim][lastChunkIndex];\n\n if (resizeChunkArray && resizeChunkArray.length < chunkSize) {\n var newStore = new DataCtor(Math.min(end - lastChunkIndex * chunkSize, chunkSize)); // The cost of the copy is probably inconsiderable\n // within the initial chunkSize.\n\n for (var j = 0; j < resizeChunkArray.length; j++) {\n newStore[j] = resizeChunkArray[j];\n }\n\n storage[dim][lastChunkIndex] = newStore;\n } // Create new chunks.\n\n\n for (var k = chunkCount * chunkSize; k < end; k += chunkSize) {\n storage[dim].push(new DataCtor(Math.min(end - k, chunkSize)));\n }\n}\n\nfunction prepareInvertedIndex(list) {\n var invertedIndicesMap = list._invertedIndicesMap;\n zrUtil.each(invertedIndicesMap, function (invertedIndices, dim) {\n var dimInfo = list._dimensionInfos[dim]; // Currently, only dimensions that has ordinalMeta can create inverted indices.\n\n var ordinalMeta = dimInfo.ordinalMeta;\n\n if (ordinalMeta) {\n invertedIndices = invertedIndicesMap[dim] = new CtorInt32Array(ordinalMeta.categories.length); // The default value of TypedArray is 0. To avoid miss\n // mapping to 0, we should set it as INDEX_NOT_FOUND.\n\n for (var i = 0; i < invertedIndices.length; i++) {\n invertedIndices[i] = INDEX_NOT_FOUND;\n }\n\n for (var i = 0; i < list._count; i++) {\n // Only support the case that all values are distinct.\n invertedIndices[list.get(dim, i)] = i;\n }\n }\n });\n}\n\nfunction getRawValueFromStore(list, dimIndex, rawIndex) {\n var val;\n\n if (dimIndex != null) {\n var chunkSize = list._chunkSize;\n var chunkIndex = Math.floor(rawIndex / chunkSize);\n var chunkOffset = rawIndex % chunkSize;\n var dim = list.dimensions[dimIndex];\n var chunk = list._storage[dim][chunkIndex];\n\n if (chunk) {\n val = chunk[chunkOffset];\n var ordinalMeta = list._dimensionInfos[dim].ordinalMeta;\n\n if (ordinalMeta && ordinalMeta.categories.length) {\n val = ordinalMeta.categories[val];\n }\n }\n }\n\n return val;\n}\n/**\n * @return {number}\n */\n\n\nlistProto.count = function () {\n return this._count;\n};\n\nlistProto.getIndices = function () {\n var newIndices;\n var indices = this._indices;\n\n if (indices) {\n var Ctor = indices.constructor;\n var thisCount = this._count; // `new Array(a, b, c)` is different from `new Uint32Array(a, b, c)`.\n\n if (Ctor === Array) {\n newIndices = new Ctor(thisCount);\n\n for (var i = 0; i < thisCount; i++) {\n newIndices[i] = indices[i];\n }\n } else {\n newIndices = new Ctor(indices.buffer, 0, thisCount);\n }\n } else {\n var Ctor = getIndicesCtor(this);\n var newIndices = new Ctor(this.count());\n\n for (var i = 0; i < newIndices.length; i++) {\n newIndices[i] = i;\n }\n }\n\n return newIndices;\n};\n/**\n * Get value. Return NaN if idx is out of range.\n * @param {string} dim Dim must be concrete name.\n * @param {number} idx\n * @param {boolean} stack\n * @return {number}\n */\n\n\nlistProto.get = function (dim, idx\n/*, stack */\n) {\n if (!(idx >= 0 && idx < this._count)) {\n return NaN;\n }\n\n var storage = this._storage;\n\n if (!storage[dim]) {\n // TODO Warn ?\n return NaN;\n }\n\n idx = this.getRawIndex(idx);\n var chunkIndex = Math.floor(idx / this._chunkSize);\n var chunkOffset = idx % this._chunkSize;\n var chunkStore = storage[dim][chunkIndex];\n var value = chunkStore[chunkOffset]; // FIXME ordinal data type is not stackable\n // if (stack) {\n // var dimensionInfo = this._dimensionInfos[dim];\n // if (dimensionInfo && dimensionInfo.stackable) {\n // var stackedOn = this.stackedOn;\n // while (stackedOn) {\n // // Get no stacked data of stacked on\n // var stackedValue = stackedOn.get(dim, idx);\n // // Considering positive stack, negative stack and empty data\n // if ((value >= 0 && stackedValue > 0) // Positive stack\n // || (value <= 0 && stackedValue < 0) // Negative stack\n // ) {\n // value += stackedValue;\n // }\n // stackedOn = stackedOn.stackedOn;\n // }\n // }\n // }\n\n return value;\n};\n/**\n * @param {string} dim concrete dim\n * @param {number} rawIndex\n * @return {number|string}\n */\n\n\nlistProto.getByRawIndex = function (dim, rawIdx) {\n if (!(rawIdx >= 0 && rawIdx < this._rawCount)) {\n return NaN;\n }\n\n var dimStore = this._storage[dim];\n\n if (!dimStore) {\n // TODO Warn ?\n return NaN;\n }\n\n var chunkIndex = Math.floor(rawIdx / this._chunkSize);\n var chunkOffset = rawIdx % this._chunkSize;\n var chunkStore = dimStore[chunkIndex];\n return chunkStore[chunkOffset];\n};\n/**\n * FIXME Use `get` on chrome maybe slow(in filterSelf and selectRange).\n * Hack a much simpler _getFast\n * @private\n */\n\n\nlistProto._getFast = function (dim, rawIdx) {\n var chunkIndex = Math.floor(rawIdx / this._chunkSize);\n var chunkOffset = rawIdx % this._chunkSize;\n var chunkStore = this._storage[dim][chunkIndex];\n return chunkStore[chunkOffset];\n};\n/**\n * Get value for multi dimensions.\n * @param {Array.} [dimensions] If ignored, using all dimensions.\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.getValues = function (dimensions, idx\n/*, stack */\n) {\n var values = [];\n\n if (!zrUtil.isArray(dimensions)) {\n // stack = idx;\n idx = dimensions;\n dimensions = this.dimensions;\n }\n\n for (var i = 0, len = dimensions.length; i < len; i++) {\n values.push(this.get(dimensions[i], idx\n /*, stack */\n ));\n }\n\n return values;\n};\n/**\n * If value is NaN. Inlcuding '-'\n * Only check the coord dimensions.\n * @param {string} dim\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.hasValue = function (idx) {\n var dataDimsOnCoord = this._dimensionsSummary.dataDimsOnCoord;\n\n for (var i = 0, len = dataDimsOnCoord.length; i < len; i++) {\n // Ordinal type originally can be string or number.\n // But when an ordinal type is used on coord, it can\n // not be string but only number. So we can also use isNaN.\n if (isNaN(this.get(dataDimsOnCoord[i], idx))) {\n return false;\n }\n }\n\n return true;\n};\n/**\n * Get extent of data in one dimension\n * @param {string} dim\n * @param {boolean} stack\n */\n\n\nlistProto.getDataExtent = function (dim\n/*, stack */\n) {\n // Make sure use concrete dim as cache name.\n dim = this.getDimension(dim);\n var dimData = this._storage[dim];\n var initialExtent = getInitialExtent(); // stack = !!((stack || false) && this.getCalculationInfo(dim));\n\n if (!dimData) {\n return initialExtent;\n } // Make more strict checkings to ensure hitting cache.\n\n\n var currEnd = this.count(); // var cacheName = [dim, !!stack].join('_');\n // var cacheName = dim;\n // Consider the most cases when using data zoom, `getDataExtent`\n // happened before filtering. We cache raw extent, which is not\n // necessary to be cleared and recalculated when restore data.\n\n var useRaw = !this._indices; // && !stack;\n\n var dimExtent;\n\n if (useRaw) {\n return this._rawExtent[dim].slice();\n }\n\n dimExtent = this._extent[dim];\n\n if (dimExtent) {\n return dimExtent.slice();\n }\n\n dimExtent = initialExtent;\n var min = dimExtent[0];\n var max = dimExtent[1];\n\n for (var i = 0; i < currEnd; i++) {\n // var value = stack ? this.get(dim, i, true) : this._getFast(dim, this.getRawIndex(i));\n var value = this._getFast(dim, this.getRawIndex(i));\n\n value < min && (min = value);\n value > max && (max = value);\n }\n\n dimExtent = [min, max];\n this._extent[dim] = dimExtent;\n return dimExtent;\n};\n/**\n * Optimize for the scenario that data is filtered by a given extent.\n * Consider that if data amount is more than hundreds of thousand,\n * extent calculation will cost more than 10ms and the cache will\n * be erased because of the filtering.\n */\n\n\nlistProto.getApproximateExtent = function (dim\n/*, stack */\n) {\n dim = this.getDimension(dim);\n return this._approximateExtent[dim] || this.getDataExtent(dim\n /*, stack */\n );\n};\n\nlistProto.setApproximateExtent = function (extent, dim\n/*, stack */\n) {\n dim = this.getDimension(dim);\n this._approximateExtent[dim] = extent.slice();\n};\n/**\n * @param {string} key\n * @return {*}\n */\n\n\nlistProto.getCalculationInfo = function (key) {\n return this._calculationInfo[key];\n};\n/**\n * @param {string|Object} key or k-v object\n * @param {*} [value]\n */\n\n\nlistProto.setCalculationInfo = function (key, value) {\n isObject(key) ? zrUtil.extend(this._calculationInfo, key) : this._calculationInfo[key] = value;\n};\n/**\n * Get sum of data in one dimension\n * @param {string} dim\n */\n\n\nlistProto.getSum = function (dim\n/*, stack */\n) {\n var dimData = this._storage[dim];\n var sum = 0;\n\n if (dimData) {\n for (var i = 0, len = this.count(); i < len; i++) {\n var value = this.get(dim, i\n /*, stack */\n );\n\n if (!isNaN(value)) {\n sum += value;\n }\n }\n }\n\n return sum;\n};\n/**\n * Get median of data in one dimension\n * @param {string} dim\n */\n\n\nlistProto.getMedian = function (dim\n/*, stack */\n) {\n var dimDataArray = []; // map all data of one dimension\n\n this.each(dim, function (val, idx) {\n if (!isNaN(val)) {\n dimDataArray.push(val);\n }\n }); // TODO\n // Use quick select?\n // immutability & sort\n\n var sortedDimDataArray = [].concat(dimDataArray).sort(function (a, b) {\n return a - b;\n });\n var len = this.count(); // calculate median\n\n return len === 0 ? 0 : len % 2 === 1 ? sortedDimDataArray[(len - 1) / 2] : (sortedDimDataArray[len / 2] + sortedDimDataArray[len / 2 - 1]) / 2;\n}; // /**\n// * Retreive the index with given value\n// * @param {string} dim Concrete dimension.\n// * @param {number} value\n// * @return {number}\n// */\n// Currently incorrect: should return dataIndex but not rawIndex.\n// Do not fix it until this method is to be used somewhere.\n// FIXME Precision of float value\n// listProto.indexOf = function (dim, value) {\n// var storage = this._storage;\n// var dimData = storage[dim];\n// var chunkSize = this._chunkSize;\n// if (dimData) {\n// for (var i = 0, len = this.count(); i < len; i++) {\n// var chunkIndex = Math.floor(i / chunkSize);\n// var chunkOffset = i % chunkSize;\n// if (dimData[chunkIndex][chunkOffset] === value) {\n// return i;\n// }\n// }\n// }\n// return -1;\n// };\n\n/**\n * Only support the dimension which inverted index created.\n * Do not support other cases until required.\n * @param {string} concrete dim\n * @param {number|string} value\n * @return {number} rawIndex\n */\n\n\nlistProto.rawIndexOf = function (dim, value) {\n var invertedIndices = dim && this._invertedIndicesMap[dim];\n var rawIndex = invertedIndices[value];\n\n if (rawIndex == null || isNaN(rawIndex)) {\n return INDEX_NOT_FOUND;\n }\n\n return rawIndex;\n};\n/**\n * Retreive the index with given name\n * @param {number} idx\n * @param {number} name\n * @return {number}\n */\n\n\nlistProto.indexOfName = function (name) {\n for (var i = 0, len = this.count(); i < len; i++) {\n if (this.getName(i) === name) {\n return i;\n }\n }\n\n return -1;\n};\n/**\n * Retreive the index with given raw data index\n * @param {number} idx\n * @param {number} name\n * @return {number}\n */\n\n\nlistProto.indexOfRawIndex = function (rawIndex) {\n if (rawIndex >= this._rawCount || rawIndex < 0) {\n return -1;\n }\n\n if (!this._indices) {\n return rawIndex;\n } // Indices are ascending\n\n\n var indices = this._indices; // If rawIndex === dataIndex\n\n var rawDataIndex = indices[rawIndex];\n\n if (rawDataIndex != null && rawDataIndex < this._count && rawDataIndex === rawIndex) {\n return rawIndex;\n }\n\n var left = 0;\n var right = this._count - 1;\n\n while (left <= right) {\n var mid = (left + right) / 2 | 0;\n\n if (indices[mid] < rawIndex) {\n left = mid + 1;\n } else if (indices[mid] > rawIndex) {\n right = mid - 1;\n } else {\n return mid;\n }\n }\n\n return -1;\n};\n/**\n * Retreive the index of nearest value\n * @param {string} dim\n * @param {number} value\n * @param {number} [maxDistance=Infinity]\n * @return {Array.} If and only if multiple indices has\n * the same value, they are put to the result.\n */\n\n\nlistProto.indicesOfNearest = function (dim, value, maxDistance) {\n var storage = this._storage;\n var dimData = storage[dim];\n var nearestIndices = [];\n\n if (!dimData) {\n return nearestIndices;\n }\n\n if (maxDistance == null) {\n maxDistance = Infinity;\n }\n\n var minDist = Infinity;\n var minDiff = -1;\n var nearestIndicesLen = 0; // Check the test case of `test/ut/spec/data/List.js`.\n\n for (var i = 0, len = this.count(); i < len; i++) {\n var diff = value - this.get(dim, i);\n var dist = Math.abs(diff);\n\n if (dist <= maxDistance) {\n // When the `value` is at the middle of `this.get(dim, i)` and `this.get(dim, i+1)`,\n // we'd better not push both of them to `nearestIndices`, otherwise it is easy to\n // get more than one item in `nearestIndices` (more specifically, in `tooltip`).\n // So we chose the one that `diff >= 0` in this csae.\n // But if `this.get(dim, i)` and `this.get(dim, j)` get the same value, both of them\n // should be push to `nearestIndices`.\n if (dist < minDist || dist === minDist && diff >= 0 && minDiff < 0) {\n minDist = dist;\n minDiff = diff;\n nearestIndicesLen = 0;\n }\n\n if (diff === minDiff) {\n nearestIndices[nearestIndicesLen++] = i;\n }\n }\n }\n\n nearestIndices.length = nearestIndicesLen;\n return nearestIndices;\n};\n/**\n * Get raw data index\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.getRawIndex = getRawIndexWithoutIndices;\n\nfunction getRawIndexWithoutIndices(idx) {\n return idx;\n}\n\nfunction getRawIndexWithIndices(idx) {\n if (idx < this._count && idx >= 0) {\n return this._indices[idx];\n }\n\n return -1;\n}\n/**\n * Get raw data item\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.getRawDataItem = function (idx) {\n if (!this._rawData.persistent) {\n var val = [];\n\n for (var i = 0; i < this.dimensions.length; i++) {\n var dim = this.dimensions[i];\n val.push(this.get(dim, idx));\n }\n\n return val;\n } else {\n return this._rawData.getItem(this.getRawIndex(idx));\n }\n};\n/**\n * @param {number} idx\n * @param {boolean} [notDefaultIdx=false]\n * @return {string}\n */\n\n\nlistProto.getName = function (idx) {\n var rawIndex = this.getRawIndex(idx);\n return this._nameList[rawIndex] || getRawValueFromStore(this, this._nameDimIdx, rawIndex) || '';\n};\n/**\n * @param {number} idx\n * @param {boolean} [notDefaultIdx=false]\n * @return {string}\n */\n\n\nlistProto.getId = function (idx) {\n return getId(this, this.getRawIndex(idx));\n};\n\nfunction getId(list, rawIndex) {\n var id = list._idList[rawIndex];\n\n if (id == null) {\n id = getRawValueFromStore(list, list._idDimIdx, rawIndex);\n }\n\n if (id == null) {\n // FIXME Check the usage in graph, should not use prefix.\n id = ID_PREFIX + rawIndex;\n }\n\n return id;\n}\n\nfunction normalizeDimensions(dimensions) {\n if (!zrUtil.isArray(dimensions)) {\n dimensions = [dimensions];\n }\n\n return dimensions;\n}\n\nfunction validateDimensions(list, dims) {\n for (var i = 0; i < dims.length; i++) {\n // stroage may be empty when no data, so use\n // dimensionInfos to check.\n if (!list._dimensionInfos[dims[i]]) {\n console.error('Unkown dimension ' + dims[i]);\n }\n }\n}\n/**\n * Data iteration\n * @param {string|Array.}\n * @param {Function} cb\n * @param {*} [context=this]\n *\n * @example\n * list.each('x', function (x, idx) {});\n * list.each(['x', 'y'], function (x, y, idx) {});\n * list.each(function (idx) {})\n */\n\n\nlistProto.each = function (dims, cb, context, contextCompat) {\n 'use strict';\n\n if (!this._count) {\n return;\n }\n\n if (typeof dims === 'function') {\n contextCompat = context;\n context = cb;\n cb = dims;\n dims = [];\n } // contextCompat just for compat echarts3\n\n\n context = context || contextCompat || this;\n dims = zrUtil.map(normalizeDimensions(dims), this.getDimension, this);\n var dimSize = dims.length;\n\n for (var i = 0; i < this.count(); i++) {\n // Simple optimization\n switch (dimSize) {\n case 0:\n cb.call(context, i);\n break;\n\n case 1:\n cb.call(context, this.get(dims[0], i), i);\n break;\n\n case 2:\n cb.call(context, this.get(dims[0], i), this.get(dims[1], i), i);\n break;\n\n default:\n var k = 0;\n var value = [];\n\n for (; k < dimSize; k++) {\n value[k] = this.get(dims[k], i);\n } // Index\n\n\n value[k] = i;\n cb.apply(context, value);\n }\n }\n};\n/**\n * Data filter\n * @param {string|Array.}\n * @param {Function} cb\n * @param {*} [context=this]\n */\n\n\nlistProto.filterSelf = function (dimensions, cb, context, contextCompat) {\n 'use strict';\n\n if (!this._count) {\n return;\n }\n\n if (typeof dimensions === 'function') {\n contextCompat = context;\n context = cb;\n cb = dimensions;\n dimensions = [];\n } // contextCompat just for compat echarts3\n\n\n context = context || contextCompat || this;\n dimensions = zrUtil.map(normalizeDimensions(dimensions), this.getDimension, this);\n var count = this.count();\n var Ctor = getIndicesCtor(this);\n var newIndices = new Ctor(count);\n var value = [];\n var dimSize = dimensions.length;\n var offset = 0;\n var dim0 = dimensions[0];\n\n for (var i = 0; i < count; i++) {\n var keep;\n var rawIdx = this.getRawIndex(i); // Simple optimization\n\n if (dimSize === 0) {\n keep = cb.call(context, i);\n } else if (dimSize === 1) {\n var val = this._getFast(dim0, rawIdx);\n\n keep = cb.call(context, val, i);\n } else {\n for (var k = 0; k < dimSize; k++) {\n value[k] = this._getFast(dim0, rawIdx);\n }\n\n value[k] = i;\n keep = cb.apply(context, value);\n }\n\n if (keep) {\n newIndices[offset++] = rawIdx;\n }\n } // Set indices after filtered.\n\n\n if (offset < count) {\n this._indices = newIndices;\n }\n\n this._count = offset; // Reset data extent\n\n this._extent = {};\n this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n return this;\n};\n/**\n * Select data in range. (For optimization of filter)\n * (Manually inline code, support 5 million data filtering in data zoom.)\n */\n\n\nlistProto.selectRange = function (range) {\n 'use strict';\n\n if (!this._count) {\n return;\n }\n\n var dimensions = [];\n\n for (var dim in range) {\n if (range.hasOwnProperty(dim)) {\n dimensions.push(dim);\n }\n }\n\n var dimSize = dimensions.length;\n\n if (!dimSize) {\n return;\n }\n\n var originalCount = this.count();\n var Ctor = getIndicesCtor(this);\n var newIndices = new Ctor(originalCount);\n var offset = 0;\n var dim0 = dimensions[0];\n var min = range[dim0][0];\n var max = range[dim0][1];\n var quickFinished = false;\n\n if (!this._indices) {\n // Extreme optimization for common case. About 2x faster in chrome.\n var idx = 0;\n\n if (dimSize === 1) {\n var dimStorage = this._storage[dimensions[0]];\n\n for (var k = 0; k < this._chunkCount; k++) {\n var chunkStorage = dimStorage[k];\n var len = Math.min(this._count - k * this._chunkSize, this._chunkSize);\n\n for (var i = 0; i < len; i++) {\n var val = chunkStorage[i]; // NaN will not be filtered. Consider the case, in line chart, empty\n // value indicates the line should be broken. But for the case like\n // scatter plot, a data item with empty value will not be rendered,\n // but the axis extent may be effected if some other dim of the data\n // item has value. Fortunately it is not a significant negative effect.\n\n if (val >= min && val <= max || isNaN(val)) {\n newIndices[offset++] = idx;\n }\n\n idx++;\n }\n }\n\n quickFinished = true;\n } else if (dimSize === 2) {\n var dimStorage = this._storage[dim0];\n var dimStorage2 = this._storage[dimensions[1]];\n var min2 = range[dimensions[1]][0];\n var max2 = range[dimensions[1]][1];\n\n for (var k = 0; k < this._chunkCount; k++) {\n var chunkStorage = dimStorage[k];\n var chunkStorage2 = dimStorage2[k];\n var len = Math.min(this._count - k * this._chunkSize, this._chunkSize);\n\n for (var i = 0; i < len; i++) {\n var val = chunkStorage[i];\n var val2 = chunkStorage2[i]; // Do not filter NaN, see comment above.\n\n if ((val >= min && val <= max || isNaN(val)) && (val2 >= min2 && val2 <= max2 || isNaN(val2))) {\n newIndices[offset++] = idx;\n }\n\n idx++;\n }\n }\n\n quickFinished = true;\n }\n }\n\n if (!quickFinished) {\n if (dimSize === 1) {\n for (var i = 0; i < originalCount; i++) {\n var rawIndex = this.getRawIndex(i);\n\n var val = this._getFast(dim0, rawIndex); // Do not filter NaN, see comment above.\n\n\n if (val >= min && val <= max || isNaN(val)) {\n newIndices[offset++] = rawIndex;\n }\n }\n } else {\n for (var i = 0; i < originalCount; i++) {\n var keep = true;\n var rawIndex = this.getRawIndex(i);\n\n for (var k = 0; k < dimSize; k++) {\n var dimk = dimensions[k];\n\n var val = this._getFast(dim, rawIndex); // Do not filter NaN, see comment above.\n\n\n if (val < range[dimk][0] || val > range[dimk][1]) {\n keep = false;\n }\n }\n\n if (keep) {\n newIndices[offset++] = this.getRawIndex(i);\n }\n }\n }\n } // Set indices after filtered.\n\n\n if (offset < originalCount) {\n this._indices = newIndices;\n }\n\n this._count = offset; // Reset data extent\n\n this._extent = {};\n this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n return this;\n};\n/**\n * Data mapping to a plain array\n * @param {string|Array.} [dimensions]\n * @param {Function} cb\n * @param {*} [context=this]\n * @return {Array}\n */\n\n\nlistProto.mapArray = function (dimensions, cb, context, contextCompat) {\n 'use strict';\n\n if (typeof dimensions === 'function') {\n contextCompat = context;\n context = cb;\n cb = dimensions;\n dimensions = [];\n } // contextCompat just for compat echarts3\n\n\n context = context || contextCompat || this;\n var result = [];\n this.each(dimensions, function () {\n result.push(cb && cb.apply(this, arguments));\n }, context);\n return result;\n}; // Data in excludeDimensions is copied, otherwise transfered.\n\n\nfunction cloneListForMapAndSample(original, excludeDimensions) {\n var allDimensions = original.dimensions;\n var list = new List(zrUtil.map(allDimensions, original.getDimensionInfo, original), original.hostModel); // FIXME If needs stackedOn, value may already been stacked\n\n transferProperties(list, original);\n var storage = list._storage = {};\n var originalStorage = original._storage; // Init storage\n\n for (var i = 0; i < allDimensions.length; i++) {\n var dim = allDimensions[i];\n\n if (originalStorage[dim]) {\n // Notice that we do not reset invertedIndicesMap here, becuase\n // there is no scenario of mapping or sampling ordinal dimension.\n if (zrUtil.indexOf(excludeDimensions, dim) >= 0) {\n storage[dim] = cloneDimStore(originalStorage[dim]);\n list._rawExtent[dim] = getInitialExtent();\n list._extent[dim] = null;\n } else {\n // Direct reference for other dimensions\n storage[dim] = originalStorage[dim];\n }\n }\n }\n\n return list;\n}\n\nfunction cloneDimStore(originalDimStore) {\n var newDimStore = new Array(originalDimStore.length);\n\n for (var j = 0; j < originalDimStore.length; j++) {\n newDimStore[j] = cloneChunk(originalDimStore[j]);\n }\n\n return newDimStore;\n}\n\nfunction getInitialExtent() {\n return [Infinity, -Infinity];\n}\n/**\n * Data mapping to a new List with given dimensions\n * @param {string|Array.} dimensions\n * @param {Function} cb\n * @param {*} [context=this]\n * @return {Array}\n */\n\n\nlistProto.map = function (dimensions, cb, context, contextCompat) {\n 'use strict'; // contextCompat just for compat echarts3\n\n context = context || contextCompat || this;\n dimensions = zrUtil.map(normalizeDimensions(dimensions), this.getDimension, this);\n var list = cloneListForMapAndSample(this, dimensions); // Following properties are all immutable.\n // So we can reference to the same value\n\n list._indices = this._indices;\n list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n var storage = list._storage;\n var tmpRetValue = [];\n var chunkSize = this._chunkSize;\n var dimSize = dimensions.length;\n var dataCount = this.count();\n var values = [];\n var rawExtent = list._rawExtent;\n\n for (var dataIndex = 0; dataIndex < dataCount; dataIndex++) {\n for (var dimIndex = 0; dimIndex < dimSize; dimIndex++) {\n values[dimIndex] = this.get(dimensions[dimIndex], dataIndex\n /*, stack */\n );\n }\n\n values[dimSize] = dataIndex;\n var retValue = cb && cb.apply(context, values);\n\n if (retValue != null) {\n // a number or string (in oridinal dimension)?\n if (typeof retValue !== 'object') {\n tmpRetValue[0] = retValue;\n retValue = tmpRetValue;\n }\n\n var rawIndex = this.getRawIndex(dataIndex);\n var chunkIndex = Math.floor(rawIndex / chunkSize);\n var chunkOffset = rawIndex % chunkSize;\n\n for (var i = 0; i < retValue.length; i++) {\n var dim = dimensions[i];\n var val = retValue[i];\n var rawExtentOnDim = rawExtent[dim];\n var dimStore = storage[dim];\n\n if (dimStore) {\n dimStore[chunkIndex][chunkOffset] = val;\n }\n\n if (val < rawExtentOnDim[0]) {\n rawExtentOnDim[0] = val;\n }\n\n if (val > rawExtentOnDim[1]) {\n rawExtentOnDim[1] = val;\n }\n }\n }\n }\n\n return list;\n};\n/**\n * Large data down sampling on given dimension\n * @param {string} dimension\n * @param {number} rate\n * @param {Function} sampleValue\n * @param {Function} sampleIndex Sample index for name and id\n */\n\n\nlistProto.downSample = function (dimension, rate, sampleValue, sampleIndex) {\n var list = cloneListForMapAndSample(this, [dimension]);\n var targetStorage = list._storage;\n var frameValues = [];\n var frameSize = Math.floor(1 / rate);\n var dimStore = targetStorage[dimension];\n var len = this.count();\n var chunkSize = this._chunkSize;\n var rawExtentOnDim = list._rawExtent[dimension];\n var newIndices = new (getIndicesCtor(this))(len);\n var offset = 0;\n\n for (var i = 0; i < len; i += frameSize) {\n // Last frame\n if (frameSize > len - i) {\n frameSize = len - i;\n frameValues.length = frameSize;\n }\n\n for (var k = 0; k < frameSize; k++) {\n var dataIdx = this.getRawIndex(i + k);\n var originalChunkIndex = Math.floor(dataIdx / chunkSize);\n var originalChunkOffset = dataIdx % chunkSize;\n frameValues[k] = dimStore[originalChunkIndex][originalChunkOffset];\n }\n\n var value = sampleValue(frameValues);\n var sampleFrameIdx = this.getRawIndex(Math.min(i + sampleIndex(frameValues, value) || 0, len - 1));\n var sampleChunkIndex = Math.floor(sampleFrameIdx / chunkSize);\n var sampleChunkOffset = sampleFrameIdx % chunkSize; // Only write value on the filtered data\n\n dimStore[sampleChunkIndex][sampleChunkOffset] = value;\n\n if (value < rawExtentOnDim[0]) {\n rawExtentOnDim[0] = value;\n }\n\n if (value > rawExtentOnDim[1]) {\n rawExtentOnDim[1] = value;\n }\n\n newIndices[offset++] = sampleFrameIdx;\n }\n\n list._count = offset;\n list._indices = newIndices;\n list.getRawIndex = getRawIndexWithIndices;\n return list;\n};\n/**\n * Get model of one data item.\n *\n * @param {number} idx\n */\n// FIXME Model proxy ?\n\n\nlistProto.getItemModel = function (idx) {\n var hostModel = this.hostModel;\n return new Model(this.getRawDataItem(idx), hostModel, hostModel && hostModel.ecModel);\n};\n/**\n * Create a data differ\n * @param {module:echarts/data/List} otherList\n * @return {module:echarts/data/DataDiffer}\n */\n\n\nlistProto.diff = function (otherList) {\n var thisList = this;\n return new DataDiffer(otherList ? otherList.getIndices() : [], this.getIndices(), function (idx) {\n return getId(otherList, idx);\n }, function (idx) {\n return getId(thisList, idx);\n });\n};\n/**\n * Get visual property.\n * @param {string} key\n */\n\n\nlistProto.getVisual = function (key) {\n var visual = this._visual;\n return visual && visual[key];\n};\n/**\n * Set visual property\n * @param {string|Object} key\n * @param {*} [value]\n *\n * @example\n * setVisual('color', color);\n * setVisual({\n * 'color': color\n * });\n */\n\n\nlistProto.setVisual = function (key, val) {\n if (isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n this.setVisual(name, key[name]);\n }\n }\n\n return;\n }\n\n this._visual = this._visual || {};\n this._visual[key] = val;\n};\n/**\n * Set layout property.\n * @param {string|Object} key\n * @param {*} [val]\n */\n\n\nlistProto.setLayout = function (key, val) {\n if (isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n this.setLayout(name, key[name]);\n }\n }\n\n return;\n }\n\n this._layout[key] = val;\n};\n/**\n * Get layout property.\n * @param {string} key.\n * @return {*}\n */\n\n\nlistProto.getLayout = function (key) {\n return this._layout[key];\n};\n/**\n * Get layout of single data item\n * @param {number} idx\n */\n\n\nlistProto.getItemLayout = function (idx) {\n return this._itemLayouts[idx];\n};\n/**\n * Set layout of single data item\n * @param {number} idx\n * @param {Object} layout\n * @param {boolean=} [merge=false]\n */\n\n\nlistProto.setItemLayout = function (idx, layout, merge) {\n this._itemLayouts[idx] = merge ? zrUtil.extend(this._itemLayouts[idx] || {}, layout) : layout;\n};\n/**\n * Clear all layout of single data item\n */\n\n\nlistProto.clearItemLayouts = function () {\n this._itemLayouts.length = 0;\n};\n/**\n * Get visual property of single data item\n * @param {number} idx\n * @param {string} key\n * @param {boolean} [ignoreParent=false]\n */\n\n\nlistProto.getItemVisual = function (idx, key, ignoreParent) {\n var itemVisual = this._itemVisuals[idx];\n var val = itemVisual && itemVisual[key];\n\n if (val == null && !ignoreParent) {\n // Use global visual property\n return this.getVisual(key);\n }\n\n return val;\n};\n/**\n * Set visual property of single data item\n *\n * @param {number} idx\n * @param {string|Object} key\n * @param {*} [value]\n *\n * @example\n * setItemVisual(0, 'color', color);\n * setItemVisual(0, {\n * 'color': color\n * });\n */\n\n\nlistProto.setItemVisual = function (idx, key, value) {\n var itemVisual = this._itemVisuals[idx] || {};\n var hasItemVisual = this.hasItemVisual;\n this._itemVisuals[idx] = itemVisual;\n\n if (isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n itemVisual[name] = key[name];\n hasItemVisual[name] = true;\n }\n }\n\n return;\n }\n\n itemVisual[key] = value;\n hasItemVisual[key] = true;\n};\n/**\n * Clear itemVisuals and list visual.\n */\n\n\nlistProto.clearAllVisual = function () {\n this._visual = {};\n this._itemVisuals = [];\n this.hasItemVisual = {};\n};\n\nvar setItemDataAndSeriesIndex = function (child) {\n child.seriesIndex = this.seriesIndex;\n child.dataIndex = this.dataIndex;\n child.dataType = this.dataType;\n};\n/**\n * Set graphic element relative to data. It can be set as null\n * @param {number} idx\n * @param {module:zrender/Element} [el]\n */\n\n\nlistProto.setItemGraphicEl = function (idx, el) {\n var hostModel = this.hostModel;\n\n if (el) {\n // Add data index and series index for indexing the data by element\n // Useful in tooltip\n el.dataIndex = idx;\n el.dataType = this.dataType;\n el.seriesIndex = hostModel && hostModel.seriesIndex;\n\n if (el.type === 'group') {\n el.traverse(setItemDataAndSeriesIndex, el);\n }\n }\n\n this._graphicEls[idx] = el;\n};\n/**\n * @param {number} idx\n * @return {module:zrender/Element}\n */\n\n\nlistProto.getItemGraphicEl = function (idx) {\n return this._graphicEls[idx];\n};\n/**\n * @param {Function} cb\n * @param {*} context\n */\n\n\nlistProto.eachItemGraphicEl = function (cb, context) {\n zrUtil.each(this._graphicEls, function (el, idx) {\n if (el) {\n cb && cb.call(context, el, idx);\n }\n });\n};\n/**\n * Shallow clone a new list except visual and layout properties, and graph elements.\n * New list only change the indices.\n */\n\n\nlistProto.cloneShallow = function (list) {\n if (!list) {\n var dimensionInfoList = zrUtil.map(this.dimensions, this.getDimensionInfo, this);\n list = new List(dimensionInfoList, this.hostModel);\n } // FIXME\n\n\n list._storage = this._storage;\n transferProperties(list, this); // Clone will not change the data extent and indices\n\n if (this._indices) {\n var Ctor = this._indices.constructor;\n list._indices = new Ctor(this._indices);\n } else {\n list._indices = null;\n }\n\n list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n return list;\n};\n/**\n * Wrap some method to add more feature\n * @param {string} methodName\n * @param {Function} injectFunction\n */\n\n\nlistProto.wrapMethod = function (methodName, injectFunction) {\n var originalMethod = this[methodName];\n\n if (typeof originalMethod !== 'function') {\n return;\n }\n\n this.__wrappedMethods = this.__wrappedMethods || [];\n\n this.__wrappedMethods.push(methodName);\n\n this[methodName] = function () {\n var res = originalMethod.apply(this, arguments);\n return injectFunction.apply(this, [res].concat(zrUtil.slice(arguments)));\n };\n}; // Methods that create a new list based on this list should be listed here.\n// Notice that those method should `RETURN` the new list.\n\n\nlistProto.TRANSFERABLE_METHODS = ['cloneShallow', 'downSample', 'map']; // Methods that change indices of this list should be listed here.\n\nlistProto.CHANGABLE_METHODS = ['filterSelf', 'selectRange'];\nvar _default = List;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/data/List.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/data/OrdinalMeta.js": +/*!******************************************************!*\ + !*** ./node_modules/echarts/lib/data/OrdinalMeta.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar createHashMap = _util.createHashMap;\nvar isObject = _util.isObject;\nvar map = _util.map;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @constructor\n * @param {Object} [opt]\n * @param {Object} [opt.categories=[]]\n * @param {Object} [opt.needCollect=false]\n * @param {Object} [opt.deduplication=false]\n */\nfunction OrdinalMeta(opt) {\n /**\n * @readOnly\n * @type {Array.}\n */\n this.categories = opt.categories || [];\n /**\n * @private\n * @type {boolean}\n */\n\n this._needCollect = opt.needCollect;\n /**\n * @private\n * @type {boolean}\n */\n\n this._deduplication = opt.deduplication;\n /**\n * @private\n * @type {boolean}\n */\n\n this._map;\n}\n/**\n * @param {module:echarts/model/Model} axisModel\n * @return {module:echarts/data/OrdinalMeta}\n */\n\n\nOrdinalMeta.createByAxisModel = function (axisModel) {\n var option = axisModel.option;\n var data = option.data;\n var categories = data && map(data, getName);\n return new OrdinalMeta({\n categories: categories,\n needCollect: !categories,\n // deduplication is default in axis.\n deduplication: option.dedplication !== false\n });\n};\n\nvar proto = OrdinalMeta.prototype;\n/**\n * @param {string} category\n * @return {number} ordinal\n */\n\nproto.getOrdinal = function (category) {\n return getOrCreateMap(this).get(category);\n};\n/**\n * @param {*} category\n * @return {number} The ordinal. If not found, return NaN.\n */\n\n\nproto.parseAndCollect = function (category) {\n var index;\n var needCollect = this._needCollect; // The value of category dim can be the index of the given category set.\n // This feature is only supported when !needCollect, because we should\n // consider a common case: a value is 2017, which is a number but is\n // expected to be tread as a category. This case usually happen in dataset,\n // where it happent to be no need of the index feature.\n\n if (typeof category !== 'string' && !needCollect) {\n return category;\n } // Optimize for the scenario:\n // category is ['2012-01-01', '2012-01-02', ...], where the input\n // data has been ensured not duplicate and is large data.\n // Notice, if a dataset dimension provide categroies, usually echarts\n // should remove duplication except user tell echarts dont do that\n // (set axis.deduplication = false), because echarts do not know whether\n // the values in the category dimension has duplication (consider the\n // parallel-aqi example)\n\n\n if (needCollect && !this._deduplication) {\n index = this.categories.length;\n this.categories[index] = category;\n return index;\n }\n\n var map = getOrCreateMap(this);\n index = map.get(category);\n\n if (index == null) {\n if (needCollect) {\n index = this.categories.length;\n this.categories[index] = category;\n map.set(category, index);\n } else {\n index = NaN;\n }\n }\n\n return index;\n}; // Consider big data, do not create map until needed.\n\n\nfunction getOrCreateMap(ordinalMeta) {\n return ordinalMeta._map || (ordinalMeta._map = createHashMap(ordinalMeta.categories));\n}\n\nfunction getName(obj) {\n if (isObject(obj) && obj.value != null) {\n return obj.value;\n } else {\n return obj + '';\n }\n}\n\nvar _default = OrdinalMeta;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/data/OrdinalMeta.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/data/Source.js": +/*!*************************************************!*\ + !*** ./node_modules/echarts/lib/data/Source.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar createHashMap = _util.createHashMap;\nvar isTypedArray = _util.isTypedArray;\n\nvar _clazz = __webpack_require__(/*! ../util/clazz */ \"./node_modules/echarts/lib/util/clazz.js\");\n\nvar enableClassCheck = _clazz.enableClassCheck;\n\nvar _sourceType = __webpack_require__(/*! ./helper/sourceType */ \"./node_modules/echarts/lib/data/helper/sourceType.js\");\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SERIES_LAYOUT_BY_COLUMN = _sourceType.SERIES_LAYOUT_BY_COLUMN;\nvar SOURCE_FORMAT_UNKNOWN = _sourceType.SOURCE_FORMAT_UNKNOWN;\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SOURCE_FORMAT_KEYED_COLUMNS = _sourceType.SOURCE_FORMAT_KEYED_COLUMNS;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * [sourceFormat]\n *\n * + \"original\":\n * This format is only used in series.data, where\n * itemStyle can be specified in data item.\n *\n * + \"arrayRows\":\n * [\n * ['product', 'score', 'amount'],\n * ['Matcha Latte', 89.3, 95.8],\n * ['Milk Tea', 92.1, 89.4],\n * ['Cheese Cocoa', 94.4, 91.2],\n * ['Walnut Brownie', 85.4, 76.9]\n * ]\n *\n * + \"objectRows\":\n * [\n * {product: 'Matcha Latte', score: 89.3, amount: 95.8},\n * {product: 'Milk Tea', score: 92.1, amount: 89.4},\n * {product: 'Cheese Cocoa', score: 94.4, amount: 91.2},\n * {product: 'Walnut Brownie', score: 85.4, amount: 76.9}\n * ]\n *\n * + \"keyedColumns\":\n * {\n * 'product': ['Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie'],\n * 'count': [823, 235, 1042, 988],\n * 'score': [95.8, 81.4, 91.2, 76.9]\n * }\n *\n * + \"typedArray\"\n *\n * + \"unknown\"\n */\n\n/**\n * @constructor\n * @param {Object} fields\n * @param {string} fields.sourceFormat\n * @param {Array|Object} fields.fromDataset\n * @param {Array|Object} [fields.data]\n * @param {string} [seriesLayoutBy='column']\n * @param {Array.} [dimensionsDefine]\n * @param {Objet|HashMap} [encodeDefine]\n * @param {number} [startIndex=0]\n * @param {number} [dimensionsDetectCount]\n */\nfunction Source(fields) {\n /**\n * @type {boolean}\n */\n this.fromDataset = fields.fromDataset;\n /**\n * Not null/undefined.\n * @type {Array|Object}\n */\n\n this.data = fields.data || (fields.sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS ? {} : []);\n /**\n * See also \"detectSourceFormat\".\n * Not null/undefined.\n * @type {string}\n */\n\n this.sourceFormat = fields.sourceFormat || SOURCE_FORMAT_UNKNOWN;\n /**\n * 'row' or 'column'\n * Not null/undefined.\n * @type {string} seriesLayoutBy\n */\n\n this.seriesLayoutBy = fields.seriesLayoutBy || SERIES_LAYOUT_BY_COLUMN;\n /**\n * dimensions definition in option.\n * can be null/undefined.\n * @type {Array.}\n */\n\n this.dimensionsDefine = fields.dimensionsDefine;\n /**\n * encode definition in option.\n * can be null/undefined.\n * @type {Objet|HashMap}\n */\n\n this.encodeDefine = fields.encodeDefine && createHashMap(fields.encodeDefine);\n /**\n * Not null/undefined, uint.\n * @type {number}\n */\n\n this.startIndex = fields.startIndex || 0;\n /**\n * Can be null/undefined (when unknown), uint.\n * @type {number}\n */\n\n this.dimensionsDetectCount = fields.dimensionsDetectCount;\n}\n/**\n * Wrap original series data for some compatibility cases.\n */\n\n\nSource.seriesDataToSource = function (data) {\n return new Source({\n data: data,\n sourceFormat: isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL,\n fromDataset: false\n });\n};\n\nenableClassCheck(Source);\nvar _default = Source;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/data/Source.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/data/Tree.js": +/*!***********************************************!*\ + !*** ./node_modules/echarts/lib/data/Tree.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar linkList = __webpack_require__(/*! ./helper/linkList */ \"./node_modules/echarts/lib/data/helper/linkList.js\");\n\nvar List = __webpack_require__(/*! ./List */ \"./node_modules/echarts/lib/data/List.js\");\n\nvar createDimensions = __webpack_require__(/*! ./helper/createDimensions */ \"./node_modules/echarts/lib/data/helper/createDimensions.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Tree data structure\n *\n * @module echarts/data/Tree\n */\n\n/**\n * @constructor module:echarts/data/Tree~TreeNode\n * @param {string} name\n * @param {module:echarts/data/Tree} hostTree\n */\nvar TreeNode = function (name, hostTree) {\n /**\n * @type {string}\n */\n this.name = name || '';\n /**\n * Depth of node\n *\n * @type {number}\n * @readOnly\n */\n\n this.depth = 0;\n /**\n * Height of the subtree rooted at this node.\n * @type {number}\n * @readOnly\n */\n\n this.height = 0;\n /**\n * @type {module:echarts/data/Tree~TreeNode}\n * @readOnly\n */\n\n this.parentNode = null;\n /**\n * Reference to list item.\n * Do not persistent dataIndex outside,\n * besause it may be changed by list.\n * If dataIndex -1,\n * this node is logical deleted (filtered) in list.\n *\n * @type {Object}\n * @readOnly\n */\n\n this.dataIndex = -1;\n /**\n * @type {Array.}\n * @readOnly\n */\n\n this.children = [];\n /**\n * @type {Array.}\n * @pubilc\n */\n\n this.viewChildren = [];\n /**\n * @type {moduel:echarts/data/Tree}\n * @readOnly\n */\n\n this.hostTree = hostTree;\n};\n\nTreeNode.prototype = {\n constructor: TreeNode,\n\n /**\n * The node is removed.\n * @return {boolean} is removed.\n */\n isRemoved: function () {\n return this.dataIndex < 0;\n },\n\n /**\n * Travel this subtree (include this node).\n * Usage:\n * node.eachNode(function () { ... }); // preorder\n * node.eachNode('preorder', function () { ... }); // preorder\n * node.eachNode('postorder', function () { ... }); // postorder\n * node.eachNode(\n * {order: 'postorder', attr: 'viewChildren'},\n * function () { ... }\n * ); // postorder\n *\n * @param {(Object|string)} options If string, means order.\n * @param {string=} options.order 'preorder' or 'postorder'\n * @param {string=} options.attr 'children' or 'viewChildren'\n * @param {Function} cb If in preorder and return false,\n * its subtree will not be visited.\n * @param {Object} [context]\n */\n eachNode: function (options, cb, context) {\n if (typeof options === 'function') {\n context = cb;\n cb = options;\n options = null;\n }\n\n options = options || {};\n\n if (zrUtil.isString(options)) {\n options = {\n order: options\n };\n }\n\n var order = options.order || 'preorder';\n var children = this[options.attr || 'children'];\n var suppressVisitSub;\n order === 'preorder' && (suppressVisitSub = cb.call(context, this));\n\n for (var i = 0; !suppressVisitSub && i < children.length; i++) {\n children[i].eachNode(options, cb, context);\n }\n\n order === 'postorder' && cb.call(context, this);\n },\n\n /**\n * Update depth and height of this subtree.\n *\n * @param {number} depth\n */\n updateDepthAndHeight: function (depth) {\n var height = 0;\n this.depth = depth;\n\n for (var i = 0; i < this.children.length; i++) {\n var child = this.children[i];\n child.updateDepthAndHeight(depth + 1);\n\n if (child.height > height) {\n height = child.height;\n }\n }\n\n this.height = height + 1;\n },\n\n /**\n * @param {string} id\n * @return {module:echarts/data/Tree~TreeNode}\n */\n getNodeById: function (id) {\n if (this.getId() === id) {\n return this;\n }\n\n for (var i = 0, children = this.children, len = children.length; i < len; i++) {\n var res = children[i].getNodeById(id);\n\n if (res) {\n return res;\n }\n }\n },\n\n /**\n * @param {module:echarts/data/Tree~TreeNode} node\n * @return {boolean}\n */\n contains: function (node) {\n if (node === this) {\n return true;\n }\n\n for (var i = 0, children = this.children, len = children.length; i < len; i++) {\n var res = children[i].contains(node);\n\n if (res) {\n return res;\n }\n }\n },\n\n /**\n * @param {boolean} includeSelf Default false.\n * @return {Array.} order: [root, child, grandchild, ...]\n */\n getAncestors: function (includeSelf) {\n var ancestors = [];\n var node = includeSelf ? this : this.parentNode;\n\n while (node) {\n ancestors.push(node);\n node = node.parentNode;\n }\n\n ancestors.reverse();\n return ancestors;\n },\n\n /**\n * @param {string|Array=} [dimension='value'] Default 'value'. can be 0, 1, 2, 3\n * @return {number} Value.\n */\n getValue: function (dimension) {\n var data = this.hostTree.data;\n return data.get(data.getDimension(dimension || 'value'), this.dataIndex);\n },\n\n /**\n * @param {Object} layout\n * @param {boolean=} [merge=false]\n */\n setLayout: function (layout, merge) {\n this.dataIndex >= 0 && this.hostTree.data.setItemLayout(this.dataIndex, layout, merge);\n },\n\n /**\n * @return {Object} layout\n */\n getLayout: function () {\n return this.hostTree.data.getItemLayout(this.dataIndex);\n },\n\n /**\n * @param {string} [path]\n * @return {module:echarts/model/Model}\n */\n getModel: function (path) {\n if (this.dataIndex < 0) {\n return;\n }\n\n var hostTree = this.hostTree;\n var itemModel = hostTree.data.getItemModel(this.dataIndex);\n return itemModel.getModel(path);\n },\n\n /**\n * @example\n * setItemVisual('color', color);\n * setItemVisual({\n * 'color': color\n * });\n */\n setVisual: function (key, value) {\n this.dataIndex >= 0 && this.hostTree.data.setItemVisual(this.dataIndex, key, value);\n },\n\n /**\n * Get item visual\n */\n getVisual: function (key, ignoreParent) {\n return this.hostTree.data.getItemVisual(this.dataIndex, key, ignoreParent);\n },\n\n /**\n * @public\n * @return {number}\n */\n getRawIndex: function () {\n return this.hostTree.data.getRawIndex(this.dataIndex);\n },\n\n /**\n * @public\n * @return {string}\n */\n getId: function () {\n return this.hostTree.data.getId(this.dataIndex);\n },\n\n /**\n * if this is an ancestor of another node\n *\n * @public\n * @param {TreeNode} node another node\n * @return {boolean} if is ancestor\n */\n isAncestorOf: function (node) {\n var parent = node.parentNode;\n\n while (parent) {\n if (parent === this) {\n return true;\n }\n\n parent = parent.parentNode;\n }\n\n return false;\n },\n\n /**\n * if this is an descendant of another node\n *\n * @public\n * @param {TreeNode} node another node\n * @return {boolean} if is descendant\n */\n isDescendantOf: function (node) {\n return node !== this && node.isAncestorOf(this);\n }\n};\n/**\n * @constructor\n * @alias module:echarts/data/Tree\n * @param {module:echarts/model/Model} hostModel\n */\n\nfunction Tree(hostModel) {\n /**\n * @type {module:echarts/data/Tree~TreeNode}\n * @readOnly\n */\n this.root;\n /**\n * @type {module:echarts/data/List}\n * @readOnly\n */\n\n this.data;\n /**\n * Index of each item is the same as the raw index of coresponding list item.\n * @private\n * @type {Array.} sysDims Necessary dimensions, like ['x', 'y'], which\n * provides not only dim template, but also default order.\n * properties: 'name', 'type', 'displayName'.\n * `name` of each item provides default coord name.\n * [{dimsDef: [string|Object, ...]}, ...] dimsDef of sysDim item provides default dim name, and\n * provide dims count that the sysDim required.\n * [{ordinalMeta}] can be specified.\n * @param {module:echarts/data/Source|Array|Object} source or data (for compatibal with pervious)\n * @param {Object} [opt]\n * @param {Array.} [opt.dimsDef] option.series.dimensions User defined dimensions\n * For example: ['asdf', {name, type}, ...].\n * @param {Object|HashMap} [opt.encodeDef] option.series.encode {x: 2, y: [3, 1], tooltip: [1, 2], label: 3}\n * @param {Function} [opt.encodeDefaulter] Called if no `opt.encodeDef` exists.\n * If not specified, auto find the next available data dim.\n * param source {module:data/Source}\n * param dimCount {number}\n * return {Object} encode Never be `null/undefined`.\n * @param {string} [opt.generateCoord] Generate coord dim with the given name.\n * If not specified, extra dim names will be:\n * 'value', 'value0', 'value1', ...\n * @param {number} [opt.generateCoordCount] By default, the generated dim name is `generateCoord`.\n * If `generateCoordCount` specified, the generated dim names will be:\n * `generateCoord` + 0, `generateCoord` + 1, ...\n * can be Infinity, indicate that use all of the remain columns.\n * @param {number} [opt.dimCount] If not specified, guess by the first data item.\n * @return {Array.}\n */\nfunction completeDimensions(sysDims, source, opt) {\n if (!Source.isInstance(source)) {\n source = Source.seriesDataToSource(source);\n }\n\n opt = opt || {};\n sysDims = (sysDims || []).slice();\n var dimsDef = (opt.dimsDef || []).slice();\n var dataDimNameMap = createHashMap();\n var coordDimNameMap = createHashMap(); // var valueCandidate;\n\n var result = [];\n var dimCount = getDimCount(source, sysDims, dimsDef, opt.dimCount); // Apply user defined dims (`name` and `type`) and init result.\n\n for (var i = 0; i < dimCount; i++) {\n var dimDefItem = dimsDef[i] = extend({}, isObject(dimsDef[i]) ? dimsDef[i] : {\n name: dimsDef[i]\n });\n var userDimName = dimDefItem.name;\n var resultItem = result[i] = new DataDimensionInfo(); // Name will be applied later for avoiding duplication.\n\n if (userDimName != null && dataDimNameMap.get(userDimName) == null) {\n // Only if `series.dimensions` is defined in option\n // displayName, will be set, and dimension will be diplayed vertically in\n // tooltip by default.\n resultItem.name = resultItem.displayName = userDimName;\n dataDimNameMap.set(userDimName, i);\n }\n\n dimDefItem.type != null && (resultItem.type = dimDefItem.type);\n dimDefItem.displayName != null && (resultItem.displayName = dimDefItem.displayName);\n }\n\n var encodeDef = opt.encodeDef;\n\n if (!encodeDef && opt.encodeDefaulter) {\n encodeDef = opt.encodeDefaulter(source, dimCount);\n }\n\n encodeDef = createHashMap(encodeDef); // Set `coordDim` and `coordDimIndex` by `encodeDef` and normalize `encodeDef`.\n\n encodeDef.each(function (dataDims, coordDim) {\n dataDims = normalizeToArray(dataDims).slice(); // Note: It is allowed that `dataDims.length` is `0`, e.g., options is\n // `{encode: {x: -1, y: 1}}`. Should not filter anything in\n // this case.\n\n if (dataDims.length === 1 && !isString(dataDims[0]) && dataDims[0] < 0) {\n encodeDef.set(coordDim, false);\n return;\n }\n\n var validDataDims = encodeDef.set(coordDim, []);\n each(dataDims, function (resultDimIdx, idx) {\n // The input resultDimIdx can be dim name or index.\n isString(resultDimIdx) && (resultDimIdx = dataDimNameMap.get(resultDimIdx));\n\n if (resultDimIdx != null && resultDimIdx < dimCount) {\n validDataDims[idx] = resultDimIdx;\n applyDim(result[resultDimIdx], coordDim, idx);\n }\n });\n }); // Apply templetes and default order from `sysDims`.\n\n var availDimIdx = 0;\n each(sysDims, function (sysDimItem, sysDimIndex) {\n var coordDim;\n var sysDimItem;\n var sysDimItemDimsDef;\n var sysDimItemOtherDims;\n\n if (isString(sysDimItem)) {\n coordDim = sysDimItem;\n sysDimItem = {};\n } else {\n coordDim = sysDimItem.name;\n var ordinalMeta = sysDimItem.ordinalMeta;\n sysDimItem.ordinalMeta = null;\n sysDimItem = clone(sysDimItem);\n sysDimItem.ordinalMeta = ordinalMeta; // `coordDimIndex` should not be set directly.\n\n sysDimItemDimsDef = sysDimItem.dimsDef;\n sysDimItemOtherDims = sysDimItem.otherDims;\n sysDimItem.name = sysDimItem.coordDim = sysDimItem.coordDimIndex = sysDimItem.dimsDef = sysDimItem.otherDims = null;\n }\n\n var dataDims = encodeDef.get(coordDim); // negative resultDimIdx means no need to mapping.\n\n if (dataDims === false) {\n return;\n }\n\n var dataDims = normalizeToArray(dataDims); // dimensions provides default dim sequences.\n\n if (!dataDims.length) {\n for (var i = 0; i < (sysDimItemDimsDef && sysDimItemDimsDef.length || 1); i++) {\n while (availDimIdx < result.length && result[availDimIdx].coordDim != null) {\n availDimIdx++;\n }\n\n availDimIdx < result.length && dataDims.push(availDimIdx++);\n }\n } // Apply templates.\n\n\n each(dataDims, function (resultDimIdx, coordDimIndex) {\n var resultItem = result[resultDimIdx];\n applyDim(defaults(resultItem, sysDimItem), coordDim, coordDimIndex);\n\n if (resultItem.name == null && sysDimItemDimsDef) {\n var sysDimItemDimsDefItem = sysDimItemDimsDef[coordDimIndex];\n !isObject(sysDimItemDimsDefItem) && (sysDimItemDimsDefItem = {\n name: sysDimItemDimsDefItem\n });\n resultItem.name = resultItem.displayName = sysDimItemDimsDefItem.name;\n resultItem.defaultTooltip = sysDimItemDimsDefItem.defaultTooltip;\n } // FIXME refactor, currently only used in case: {otherDims: {tooltip: false}}\n\n\n sysDimItemOtherDims && defaults(resultItem.otherDims, sysDimItemOtherDims);\n });\n });\n\n function applyDim(resultItem, coordDim, coordDimIndex) {\n if (OTHER_DIMENSIONS.get(coordDim) != null) {\n resultItem.otherDims[coordDim] = coordDimIndex;\n } else {\n resultItem.coordDim = coordDim;\n resultItem.coordDimIndex = coordDimIndex;\n coordDimNameMap.set(coordDim, true);\n }\n } // Make sure the first extra dim is 'value'.\n\n\n var generateCoord = opt.generateCoord;\n var generateCoordCount = opt.generateCoordCount;\n var fromZero = generateCoordCount != null;\n generateCoordCount = generateCoord ? generateCoordCount || 1 : 0;\n var extra = generateCoord || 'value'; // Set dim `name` and other `coordDim` and other props.\n\n for (var resultDimIdx = 0; resultDimIdx < dimCount; resultDimIdx++) {\n var resultItem = result[resultDimIdx] = result[resultDimIdx] || new DataDimensionInfo();\n var coordDim = resultItem.coordDim;\n\n if (coordDim == null) {\n resultItem.coordDim = genName(extra, coordDimNameMap, fromZero);\n resultItem.coordDimIndex = 0;\n\n if (!generateCoord || generateCoordCount <= 0) {\n resultItem.isExtraCoord = true;\n }\n\n generateCoordCount--;\n }\n\n resultItem.name == null && (resultItem.name = genName(resultItem.coordDim, dataDimNameMap));\n\n if (resultItem.type == null && (guessOrdinal(source, resultDimIdx, resultItem.name) === BE_ORDINAL.Must // Consider the case:\n // {\n // dataset: {source: [\n // ['2001', 123],\n // ['2002', 456],\n // ...\n // ['The others', 987],\n // ]},\n // series: {type: 'pie'}\n // }\n // The first colum should better be treated as a \"ordinal\" although it\n // might not able to be detected as an \"ordinal\" by `guessOrdinal`.\n || resultItem.isExtraCoord && (resultItem.otherDims.itemName != null || resultItem.otherDims.seriesName != null))) {\n resultItem.type = 'ordinal';\n }\n }\n\n return result;\n} // ??? TODO\n// Originally detect dimCount by data[0]. Should we\n// optimize it to only by sysDims and dimensions and encode.\n// So only necessary dims will be initialized.\n// But\n// (1) custom series should be considered. where other dims\n// may be visited.\n// (2) sometimes user need to calcualte bubble size or use visualMap\n// on other dimensions besides coordSys needed.\n// So, dims that is not used by system, should be shared in storage?\n\n\nfunction getDimCount(source, sysDims, dimsDef, optDimCount) {\n // Note that the result dimCount should not small than columns count\n // of data, otherwise `dataDimNameMap` checking will be incorrect.\n var dimCount = Math.max(source.dimensionsDetectCount || 1, sysDims.length, dimsDef.length, optDimCount || 0);\n each(sysDims, function (sysDimItem) {\n var sysDimItemDimsDef = sysDimItem.dimsDef;\n sysDimItemDimsDef && (dimCount = Math.max(dimCount, sysDimItemDimsDef.length));\n });\n return dimCount;\n}\n\nfunction genName(name, map, fromZero) {\n if (fromZero || map.get(name) != null) {\n var i = 0;\n\n while (map.get(name + i) != null) {\n i++;\n }\n\n name += i;\n }\n\n map.set(name, true);\n return name;\n}\n\nvar _default = completeDimensions;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/data/helper/completeDimensions.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/data/helper/createDimensions.js": +/*!******************************************************************!*\ + !*** ./node_modules/echarts/lib/data/helper/createDimensions.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar completeDimensions = __webpack_require__(/*! ./completeDimensions */ \"./node_modules/echarts/lib/data/helper/completeDimensions.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Substitute `completeDimensions`.\n * `completeDimensions` is to be deprecated.\n */\n\n/**\n * @param {module:echarts/data/Source|module:echarts/data/List} source or data.\n * @param {Object|Array} [opt]\n * @param {Array.} [opt.coordDimensions=[]]\n * @param {number} [opt.dimensionsCount]\n * @param {string} [opt.generateCoord]\n * @param {string} [opt.generateCoordCount]\n * @param {Array.} [opt.dimensionsDefine=source.dimensionsDefine] Overwrite source define.\n * @param {Object|HashMap} [opt.encodeDefine=source.encodeDefine] Overwrite source define.\n * @param {Function} [opt.encodeDefaulter] Make default encode if user not specified.\n * @return {Array.} dimensionsInfo\n */\nfunction _default(source, opt) {\n opt = opt || {};\n return completeDimensions(opt.coordDimensions || [], source, {\n dimsDef: opt.dimensionsDefine || source.dimensionsDefine,\n encodeDef: opt.encodeDefine || source.encodeDefine,\n dimCount: opt.dimensionsCount,\n encodeDefaulter: opt.encodeDefaulter,\n generateCoord: opt.generateCoord,\n generateCoordCount: opt.generateCoordCount\n });\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/data/helper/createDimensions.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/data/helper/dataProvider.js": +/*!**************************************************************!*\ + !*** ./node_modules/echarts/lib/data/helper/dataProvider.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar isTypedArray = _util.isTypedArray;\nvar extend = _util.extend;\nvar assert = _util.assert;\nvar each = _util.each;\nvar isObject = _util.isObject;\n\nvar _model = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar getDataItemValue = _model.getDataItemValue;\nvar isDataItemOption = _model.isDataItemOption;\n\nvar _number = __webpack_require__(/*! ../../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar parseDate = _number.parseDate;\n\nvar Source = __webpack_require__(/*! ../Source */ \"./node_modules/echarts/lib/data/Source.js\");\n\nvar _sourceType = __webpack_require__(/*! ./sourceType */ \"./node_modules/echarts/lib/data/helper/sourceType.js\");\n\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SOURCE_FORMAT_ARRAY_ROWS = _sourceType.SOURCE_FORMAT_ARRAY_ROWS;\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SOURCE_FORMAT_OBJECT_ROWS = _sourceType.SOURCE_FORMAT_OBJECT_ROWS;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// TODO\n// ??? refactor? check the outer usage of data provider.\n// merge with defaultDimValueGetter?\n\n/**\n * If normal array used, mutable chunk size is supported.\n * If typed array used, chunk size must be fixed.\n */\nfunction DefaultDataProvider(source, dimSize) {\n if (!Source.isInstance(source)) {\n source = Source.seriesDataToSource(source);\n }\n\n this._source = source;\n var data = this._data = source.data;\n var sourceFormat = source.sourceFormat; // Typed array. TODO IE10+?\n\n if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\n this._offset = 0;\n this._dimSize = dimSize;\n this._data = data;\n }\n\n var methods = providerMethods[sourceFormat === SOURCE_FORMAT_ARRAY_ROWS ? sourceFormat + '_' + source.seriesLayoutBy : sourceFormat];\n extend(this, methods);\n}\n\nvar providerProto = DefaultDataProvider.prototype; // If data is pure without style configuration\n\nproviderProto.pure = false; // If data is persistent and will not be released after use.\n\nproviderProto.persistent = true; // ???! FIXME legacy data provider do not has method getSource\n\nproviderProto.getSource = function () {\n return this._source;\n};\n\nvar providerMethods = {\n 'arrayRows_column': {\n pure: true,\n count: function () {\n return Math.max(0, this._data.length - this._source.startIndex);\n },\n getItem: function (idx) {\n return this._data[idx + this._source.startIndex];\n },\n appendData: appendDataSimply\n },\n 'arrayRows_row': {\n pure: true,\n count: function () {\n var row = this._data[0];\n return row ? Math.max(0, row.length - this._source.startIndex) : 0;\n },\n getItem: function (idx) {\n idx += this._source.startIndex;\n var item = [];\n var data = this._data;\n\n for (var i = 0; i < data.length; i++) {\n var row = data[i];\n item.push(row ? row[idx] : null);\n }\n\n return item;\n },\n appendData: function () {\n throw new Error('Do not support appendData when set seriesLayoutBy: \"row\".');\n }\n },\n 'objectRows': {\n pure: true,\n count: countSimply,\n getItem: getItemSimply,\n appendData: appendDataSimply\n },\n 'keyedColumns': {\n pure: true,\n count: function () {\n var dimName = this._source.dimensionsDefine[0].name;\n var col = this._data[dimName];\n return col ? col.length : 0;\n },\n getItem: function (idx) {\n var item = [];\n var dims = this._source.dimensionsDefine;\n\n for (var i = 0; i < dims.length; i++) {\n var col = this._data[dims[i].name];\n item.push(col ? col[idx] : null);\n }\n\n return item;\n },\n appendData: function (newData) {\n var data = this._data;\n each(newData, function (newCol, key) {\n var oldCol = data[key] || (data[key] = []);\n\n for (var i = 0; i < (newCol || []).length; i++) {\n oldCol.push(newCol[i]);\n }\n });\n }\n },\n 'original': {\n count: countSimply,\n getItem: getItemSimply,\n appendData: appendDataSimply\n },\n 'typedArray': {\n persistent: false,\n pure: true,\n count: function () {\n return this._data ? this._data.length / this._dimSize : 0;\n },\n getItem: function (idx, out) {\n idx = idx - this._offset;\n out = out || [];\n var offset = this._dimSize * idx;\n\n for (var i = 0; i < this._dimSize; i++) {\n out[i] = this._data[offset + i];\n }\n\n return out;\n },\n appendData: function (newData) {\n this._data = newData;\n },\n // Clean self if data is already used.\n clean: function () {\n // PENDING\n this._offset += this.count();\n this._data = null;\n }\n }\n};\n\nfunction countSimply() {\n return this._data.length;\n}\n\nfunction getItemSimply(idx) {\n return this._data[idx];\n}\n\nfunction appendDataSimply(newData) {\n for (var i = 0; i < newData.length; i++) {\n this._data.push(newData[i]);\n }\n}\n\nvar rawValueGetters = {\n arrayRows: getRawValueSimply,\n objectRows: function (dataItem, dataIndex, dimIndex, dimName) {\n return dimIndex != null ? dataItem[dimName] : dataItem;\n },\n keyedColumns: getRawValueSimply,\n original: function (dataItem, dataIndex, dimIndex, dimName) {\n // FIXME\n // In some case (markpoint in geo (geo-map.html)), dataItem\n // is {coord: [...]}\n var value = getDataItemValue(dataItem);\n return dimIndex == null || !(value instanceof Array) ? value : value[dimIndex];\n },\n typedArray: getRawValueSimply\n};\n\nfunction getRawValueSimply(dataItem, dataIndex, dimIndex, dimName) {\n return dimIndex != null ? dataItem[dimIndex] : dataItem;\n}\n\nvar defaultDimValueGetters = {\n arrayRows: getDimValueSimply,\n objectRows: function (dataItem, dimName, dataIndex, dimIndex) {\n return converDataValue(dataItem[dimName], this._dimensionInfos[dimName]);\n },\n keyedColumns: getDimValueSimply,\n original: function (dataItem, dimName, dataIndex, dimIndex) {\n // Performance sensitive, do not use modelUtil.getDataItemValue.\n // If dataItem is an plain object with no value field, the var `value`\n // will be assigned with the object, but it will be tread correctly\n // in the `convertDataValue`.\n var value = dataItem && (dataItem.value == null ? dataItem : dataItem.value); // If any dataItem is like { value: 10 }\n\n if (!this._rawData.pure && isDataItemOption(dataItem)) {\n this.hasItemOption = true;\n }\n\n return converDataValue(value instanceof Array ? value[dimIndex] // If value is a single number or something else not array.\n : value, this._dimensionInfos[dimName]);\n },\n typedArray: function (dataItem, dimName, dataIndex, dimIndex) {\n return dataItem[dimIndex];\n }\n};\n\nfunction getDimValueSimply(dataItem, dimName, dataIndex, dimIndex) {\n return converDataValue(dataItem[dimIndex], this._dimensionInfos[dimName]);\n}\n/**\n * This helper method convert value in data.\n * @param {string|number|Date} value\n * @param {Object|string} [dimInfo] If string (like 'x'), dimType defaults 'number'.\n * If \"dimInfo.ordinalParseAndSave\", ordinal value can be parsed.\n */\n\n\nfunction converDataValue(value, dimInfo) {\n // Performance sensitive.\n var dimType = dimInfo && dimInfo.type;\n\n if (dimType === 'ordinal') {\n // If given value is a category string\n var ordinalMeta = dimInfo && dimInfo.ordinalMeta;\n return ordinalMeta ? ordinalMeta.parseAndCollect(value) : value;\n }\n\n if (dimType === 'time' // spead up when using timestamp\n && typeof value !== 'number' && value != null && value !== '-') {\n value = +parseDate(value);\n } // dimType defaults 'number'.\n // If dimType is not ordinal and value is null or undefined or NaN or '-',\n // parse to NaN.\n\n\n return value == null || value === '' ? NaN // If string (like '-'), using '+' parse to NaN\n // If object, also parse to NaN\n : +value;\n} // ??? FIXME can these logic be more neat: getRawValue, getRawDataItem,\n// Consider persistent.\n// Caution: why use raw value to display on label or tooltip?\n// A reason is to avoid format. For example time value we do not know\n// how to format is expected. More over, if stack is used, calculated\n// value may be 0.91000000001, which have brings trouble to display.\n// TODO: consider how to treat null/undefined/NaN when display?\n\n/**\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @param {string|number} [dim] dimName or dimIndex\n * @return {Array.|string|number} can be null/undefined.\n */\n\n\nfunction retrieveRawValue(data, dataIndex, dim) {\n if (!data) {\n return;\n } // Consider data may be not persistent.\n\n\n var dataItem = data.getRawDataItem(dataIndex);\n\n if (dataItem == null) {\n return;\n }\n\n var sourceFormat = data.getProvider().getSource().sourceFormat;\n var dimName;\n var dimIndex;\n var dimInfo = data.getDimensionInfo(dim);\n\n if (dimInfo) {\n dimName = dimInfo.name;\n dimIndex = dimInfo.index;\n }\n\n return rawValueGetters[sourceFormat](dataItem, dataIndex, dimIndex, dimName);\n}\n/**\n * Compatible with some cases (in pie, map) like:\n * data: [{name: 'xx', value: 5, selected: true}, ...]\n * where only sourceFormat is 'original' and 'objectRows' supported.\n *\n * ??? TODO\n * Supported detail options in data item when using 'arrayRows'.\n *\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @param {string} attr like 'selected'\n */\n\n\nfunction retrieveRawAttr(data, dataIndex, attr) {\n if (!data) {\n return;\n }\n\n var sourceFormat = data.getProvider().getSource().sourceFormat;\n\n if (sourceFormat !== SOURCE_FORMAT_ORIGINAL && sourceFormat !== SOURCE_FORMAT_OBJECT_ROWS) {\n return;\n }\n\n var dataItem = data.getRawDataItem(dataIndex);\n\n if (sourceFormat === SOURCE_FORMAT_ORIGINAL && !isObject(dataItem)) {\n dataItem = null;\n }\n\n if (dataItem) {\n return dataItem[attr];\n }\n}\n\nexports.DefaultDataProvider = DefaultDataProvider;\nexports.defaultDimValueGetters = defaultDimValueGetters;\nexports.retrieveRawValue = retrieveRawValue;\nexports.retrieveRawAttr = retrieveRawAttr;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/data/helper/dataProvider.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/data/helper/dataStackHelper.js": +/*!*****************************************************************!*\ + !*** ./node_modules/echarts/lib/data/helper/dataStackHelper.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar each = _util.each;\nvar isString = _util.isString;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Note that it is too complicated to support 3d stack by value\n * (have to create two-dimension inverted index), so in 3d case\n * we just support that stacked by index.\n *\n * @param {module:echarts/model/Series} seriesModel\n * @param {Array.} dimensionInfoList The same as the input of .\n * The input dimensionInfoList will be modified.\n * @param {Object} [opt]\n * @param {boolean} [opt.stackedCoordDimension=''] Specify a coord dimension if needed.\n * @param {boolean} [opt.byIndex=false]\n * @return {Object} calculationInfo\n * {\n * stackedDimension: string\n * stackedByDimension: string\n * isStackedByIndex: boolean\n * stackedOverDimension: string\n * stackResultDimension: string\n * }\n */\nfunction enableDataStack(seriesModel, dimensionInfoList, opt) {\n opt = opt || {};\n var byIndex = opt.byIndex;\n var stackedCoordDimension = opt.stackedCoordDimension; // Compatibal: when `stack` is set as '', do not stack.\n\n var mayStack = !!(seriesModel && seriesModel.get('stack'));\n var stackedByDimInfo;\n var stackedDimInfo;\n var stackResultDimension;\n var stackedOverDimension;\n each(dimensionInfoList, function (dimensionInfo, index) {\n if (isString(dimensionInfo)) {\n dimensionInfoList[index] = dimensionInfo = {\n name: dimensionInfo\n };\n }\n\n if (mayStack && !dimensionInfo.isExtraCoord) {\n // Find the first ordinal dimension as the stackedByDimInfo.\n if (!byIndex && !stackedByDimInfo && dimensionInfo.ordinalMeta) {\n stackedByDimInfo = dimensionInfo;\n } // Find the first stackable dimension as the stackedDimInfo.\n\n\n if (!stackedDimInfo && dimensionInfo.type !== 'ordinal' && dimensionInfo.type !== 'time' && (!stackedCoordDimension || stackedCoordDimension === dimensionInfo.coordDim)) {\n stackedDimInfo = dimensionInfo;\n }\n }\n });\n\n if (stackedDimInfo && !byIndex && !stackedByDimInfo) {\n // Compatible with previous design, value axis (time axis) only stack by index.\n // It may make sense if the user provides elaborately constructed data.\n byIndex = true;\n } // Add stack dimension, they can be both calculated by coordinate system in `unionExtent`.\n // That put stack logic in List is for using conveniently in echarts extensions, but it\n // might not be a good way.\n\n\n if (stackedDimInfo) {\n // Use a weird name that not duplicated with other names.\n stackResultDimension = '__\\0ecstackresult';\n stackedOverDimension = '__\\0ecstackedover'; // Create inverted index to fast query index by value.\n\n if (stackedByDimInfo) {\n stackedByDimInfo.createInvertedIndices = true;\n }\n\n var stackedDimCoordDim = stackedDimInfo.coordDim;\n var stackedDimType = stackedDimInfo.type;\n var stackedDimCoordIndex = 0;\n each(dimensionInfoList, function (dimensionInfo) {\n if (dimensionInfo.coordDim === stackedDimCoordDim) {\n stackedDimCoordIndex++;\n }\n });\n dimensionInfoList.push({\n name: stackResultDimension,\n coordDim: stackedDimCoordDim,\n coordDimIndex: stackedDimCoordIndex,\n type: stackedDimType,\n isExtraCoord: true,\n isCalculationCoord: true\n });\n stackedDimCoordIndex++;\n dimensionInfoList.push({\n name: stackedOverDimension,\n // This dimension contains stack base (generally, 0), so do not set it as\n // `stackedDimCoordDim` to avoid extent calculation, consider log scale.\n coordDim: stackedOverDimension,\n coordDimIndex: stackedDimCoordIndex,\n type: stackedDimType,\n isExtraCoord: true,\n isCalculationCoord: true\n });\n }\n\n return {\n stackedDimension: stackedDimInfo && stackedDimInfo.name,\n stackedByDimension: stackedByDimInfo && stackedByDimInfo.name,\n isStackedByIndex: byIndex,\n stackedOverDimension: stackedOverDimension,\n stackResultDimension: stackResultDimension\n };\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {string} stackedDim\n */\n\n\nfunction isDimensionStacked(data, stackedDim\n/*, stackedByDim*/\n) {\n // Each single series only maps to one pair of axis. So we do not need to\n // check stackByDim, whatever stacked by a dimension or stacked by index.\n return !!stackedDim && stackedDim === data.getCalculationInfo('stackedDimension'); // && (\n // stackedByDim != null\n // ? stackedByDim === data.getCalculationInfo('stackedByDimension')\n // : data.getCalculationInfo('isStackedByIndex')\n // );\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {string} targetDim\n * @param {string} [stackedByDim] If not input this parameter, check whether\n * stacked by index.\n * @return {string} dimension\n */\n\n\nfunction getStackedDimension(data, targetDim) {\n return isDimensionStacked(data, targetDim) ? data.getCalculationInfo('stackResultDimension') : targetDim;\n}\n\nexports.enableDataStack = enableDataStack;\nexports.isDimensionStacked = isDimensionStacked;\nexports.getStackedDimension = getStackedDimension;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/data/helper/dataStackHelper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/data/helper/dimensionHelper.js": +/*!*****************************************************************!*\ + !*** ./node_modules/echarts/lib/data/helper/dimensionHelper.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar each = _util.each;\nvar createHashMap = _util.createHashMap;\nvar assert = _util.assert;\n\nvar _config = __webpack_require__(/*! ../../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar OTHER_DIMENSIONS = createHashMap(['tooltip', 'label', 'itemName', 'itemId', 'seriesName']);\n\nfunction summarizeDimensions(data) {\n var summary = {};\n var encode = summary.encode = {};\n var notExtraCoordDimMap = createHashMap();\n var defaultedLabel = [];\n var defaultedTooltip = []; // See the comment of `List.js#userOutput`.\n\n var userOutput = summary.userOutput = {\n dimensionNames: data.dimensions.slice(),\n encode: {}\n };\n each(data.dimensions, function (dimName) {\n var dimItem = data.getDimensionInfo(dimName);\n var coordDim = dimItem.coordDim;\n\n if (coordDim) {\n var coordDimIndex = dimItem.coordDimIndex;\n getOrCreateEncodeArr(encode, coordDim)[coordDimIndex] = dimName;\n\n if (!dimItem.isExtraCoord) {\n notExtraCoordDimMap.set(coordDim, 1); // Use the last coord dim (and label friendly) as default label,\n // because when dataset is used, it is hard to guess which dimension\n // can be value dimension. If both show x, y on label is not look good,\n // and conventionally y axis is focused more.\n\n if (mayLabelDimType(dimItem.type)) {\n defaultedLabel[0] = dimName;\n } // User output encode do not contain generated coords.\n // And it only has index. User can use index to retrieve value from the raw item array.\n\n\n getOrCreateEncodeArr(userOutput.encode, coordDim)[coordDimIndex] = dimItem.index;\n }\n\n if (dimItem.defaultTooltip) {\n defaultedTooltip.push(dimName);\n }\n }\n\n OTHER_DIMENSIONS.each(function (v, otherDim) {\n var encodeArr = getOrCreateEncodeArr(encode, otherDim);\n var dimIndex = dimItem.otherDims[otherDim];\n\n if (dimIndex != null && dimIndex !== false) {\n encodeArr[dimIndex] = dimItem.name;\n }\n });\n });\n var dataDimsOnCoord = [];\n var encodeFirstDimNotExtra = {};\n notExtraCoordDimMap.each(function (v, coordDim) {\n var dimArr = encode[coordDim]; // ??? FIXME extra coord should not be set in dataDimsOnCoord.\n // But should fix the case that radar axes: simplify the logic\n // of `completeDimension`, remove `extraPrefix`.\n\n encodeFirstDimNotExtra[coordDim] = dimArr[0]; // Not necessary to remove duplicate, because a data\n // dim canot on more than one coordDim.\n\n dataDimsOnCoord = dataDimsOnCoord.concat(dimArr);\n });\n summary.dataDimsOnCoord = dataDimsOnCoord;\n summary.encodeFirstDimNotExtra = encodeFirstDimNotExtra;\n var encodeLabel = encode.label; // FIXME `encode.label` is not recommanded, because formatter can not be set\n // in this way. Use label.formatter instead. May be remove this approach someday.\n\n if (encodeLabel && encodeLabel.length) {\n defaultedLabel = encodeLabel.slice();\n }\n\n var encodeTooltip = encode.tooltip;\n\n if (encodeTooltip && encodeTooltip.length) {\n defaultedTooltip = encodeTooltip.slice();\n } else if (!defaultedTooltip.length) {\n defaultedTooltip = defaultedLabel.slice();\n }\n\n encode.defaultedLabel = defaultedLabel;\n encode.defaultedTooltip = defaultedTooltip;\n return summary;\n}\n\nfunction getOrCreateEncodeArr(encode, dim) {\n if (!encode.hasOwnProperty(dim)) {\n encode[dim] = [];\n }\n\n return encode[dim];\n}\n\nfunction getDimensionTypeByAxis(axisType) {\n return axisType === 'category' ? 'ordinal' : axisType === 'time' ? 'time' : 'float';\n}\n\nfunction mayLabelDimType(dimType) {\n // In most cases, ordinal and time do not suitable for label.\n // Ordinal info can be displayed on axis. Time is too long.\n return !(dimType === 'ordinal' || dimType === 'time');\n} // function findTheLastDimMayLabel(data) {\n// // Get last value dim\n// var dimensions = data.dimensions.slice();\n// var valueType;\n// var valueDim;\n// while (dimensions.length && (\n// valueDim = dimensions.pop(),\n// valueType = data.getDimensionInfo(valueDim).type,\n// valueType === 'ordinal' || valueType === 'time'\n// )) {} // jshint ignore:line\n// return valueDim;\n// }\n\n\nexports.OTHER_DIMENSIONS = OTHER_DIMENSIONS;\nexports.summarizeDimensions = summarizeDimensions;\nexports.getDimensionTypeByAxis = getDimensionTypeByAxis;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/data/helper/dimensionHelper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/data/helper/linkList.js": +/*!**********************************************************!*\ + !*** ./node_modules/echarts/lib/data/helper/linkList.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Link lists and struct (graph or tree)\n */\nvar each = zrUtil.each;\nvar DATAS = '\\0__link_datas';\nvar MAIN_DATA = '\\0__link_mainData'; // Caution:\n// In most case, either list or its shallow clones (see list.cloneShallow)\n// is active in echarts process. So considering heap memory consumption,\n// we do not clone tree or graph, but share them among list and its shallow clones.\n// But in some rare case, we have to keep old list (like do animation in chart). So\n// please take care that both the old list and the new list share the same tree/graph.\n\n/**\n * @param {Object} opt\n * @param {module:echarts/data/List} opt.mainData\n * @param {Object} [opt.struct] For example, instance of Graph or Tree.\n * @param {string} [opt.structAttr] designation: list[structAttr] = struct;\n * @param {Object} [opt.datas] {dataType: data},\n * like: {node: nodeList, edge: edgeList}.\n * Should contain mainData.\n * @param {Object} [opt.datasAttr] {dataType: attr},\n * designation: struct[datasAttr[dataType]] = list;\n */\n\nfunction linkList(opt) {\n var mainData = opt.mainData;\n var datas = opt.datas;\n\n if (!datas) {\n datas = {\n main: mainData\n };\n opt.datasAttr = {\n main: 'data'\n };\n }\n\n opt.datas = opt.mainData = null;\n linkAll(mainData, datas, opt); // Porxy data original methods.\n\n each(datas, function (data) {\n each(mainData.TRANSFERABLE_METHODS, function (methodName) {\n data.wrapMethod(methodName, zrUtil.curry(transferInjection, opt));\n });\n }); // Beyond transfer, additional features should be added to `cloneShallow`.\n\n mainData.wrapMethod('cloneShallow', zrUtil.curry(cloneShallowInjection, opt)); // Only mainData trigger change, because struct.update may trigger\n // another changable methods, which may bring about dead lock.\n\n each(mainData.CHANGABLE_METHODS, function (methodName) {\n mainData.wrapMethod(methodName, zrUtil.curry(changeInjection, opt));\n }); // Make sure datas contains mainData.\n\n zrUtil.assert(datas[mainData.dataType] === mainData);\n}\n\nfunction transferInjection(opt, res) {\n if (isMainData(this)) {\n // Transfer datas to new main data.\n var datas = zrUtil.extend({}, this[DATAS]);\n datas[this.dataType] = res;\n linkAll(res, datas, opt);\n } else {\n // Modify the reference in main data to point newData.\n linkSingle(res, this.dataType, this[MAIN_DATA], opt);\n }\n\n return res;\n}\n\nfunction changeInjection(opt, res) {\n opt.struct && opt.struct.update(this);\n return res;\n}\n\nfunction cloneShallowInjection(opt, res) {\n // cloneShallow, which brings about some fragilities, may be inappropriate\n // to be exposed as an API. So for implementation simplicity we can make\n // the restriction that cloneShallow of not-mainData should not be invoked\n // outside, but only be invoked here.\n each(res[DATAS], function (data, dataType) {\n data !== res && linkSingle(data.cloneShallow(), dataType, res, opt);\n });\n return res;\n}\n/**\n * Supplement method to List.\n *\n * @public\n * @param {string} [dataType] If not specified, return mainData.\n * @return {module:echarts/data/List}\n */\n\n\nfunction getLinkedData(dataType) {\n var mainData = this[MAIN_DATA];\n return dataType == null || mainData == null ? mainData : mainData[DATAS][dataType];\n}\n\nfunction isMainData(data) {\n return data[MAIN_DATA] === data;\n}\n\nfunction linkAll(mainData, datas, opt) {\n mainData[DATAS] = {};\n each(datas, function (data, dataType) {\n linkSingle(data, dataType, mainData, opt);\n });\n}\n\nfunction linkSingle(data, dataType, mainData, opt) {\n mainData[DATAS][dataType] = data;\n data[MAIN_DATA] = mainData;\n data.dataType = dataType;\n\n if (opt.struct) {\n data[opt.structAttr] = opt.struct;\n opt.struct[opt.datasAttr[dataType]] = data;\n } // Supplement method.\n\n\n data.getLinkedData = getLinkedData;\n}\n\nvar _default = linkList;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/data/helper/linkList.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/data/helper/sourceHelper.js": +/*!**************************************************************!*\ + !*** ./node_modules/echarts/lib/data/helper/sourceHelper.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _model = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar makeInner = _model.makeInner;\nvar getDataItemValue = _model.getDataItemValue;\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\nvar map = _util.map;\nvar isArray = _util.isArray;\nvar isString = _util.isString;\nvar isObject = _util.isObject;\nvar isTypedArray = _util.isTypedArray;\nvar isArrayLike = _util.isArrayLike;\nvar extend = _util.extend;\nvar assert = _util.assert;\n\nvar Source = __webpack_require__(/*! ../Source */ \"./node_modules/echarts/lib/data/Source.js\");\n\nvar _sourceType = __webpack_require__(/*! ./sourceType */ \"./node_modules/echarts/lib/data/helper/sourceType.js\");\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SOURCE_FORMAT_ARRAY_ROWS = _sourceType.SOURCE_FORMAT_ARRAY_ROWS;\nvar SOURCE_FORMAT_OBJECT_ROWS = _sourceType.SOURCE_FORMAT_OBJECT_ROWS;\nvar SOURCE_FORMAT_KEYED_COLUMNS = _sourceType.SOURCE_FORMAT_KEYED_COLUMNS;\nvar SOURCE_FORMAT_UNKNOWN = _sourceType.SOURCE_FORMAT_UNKNOWN;\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SERIES_LAYOUT_BY_ROW = _sourceType.SERIES_LAYOUT_BY_ROW;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// The result of `guessOrdinal`.\nvar BE_ORDINAL = {\n Must: 1,\n // Encounter string but not '-' and not number-like.\n Might: 2,\n // Encounter string but number-like.\n Not: 3 // Other cases\n\n};\nvar inner = makeInner();\n/**\n * @see {module:echarts/data/Source}\n * @param {module:echarts/component/dataset/DatasetModel} datasetModel\n * @return {string} sourceFormat\n */\n\nfunction detectSourceFormat(datasetModel) {\n var data = datasetModel.option.source;\n var sourceFormat = SOURCE_FORMAT_UNKNOWN;\n\n if (isTypedArray(data)) {\n sourceFormat = SOURCE_FORMAT_TYPED_ARRAY;\n } else if (isArray(data)) {\n // FIXME Whether tolerate null in top level array?\n if (data.length === 0) {\n sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\n }\n\n for (var i = 0, len = data.length; i < len; i++) {\n var item = data[i];\n\n if (item == null) {\n continue;\n } else if (isArray(item)) {\n sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\n break;\n } else if (isObject(item)) {\n sourceFormat = SOURCE_FORMAT_OBJECT_ROWS;\n break;\n }\n }\n } else if (isObject(data)) {\n for (var key in data) {\n if (data.hasOwnProperty(key) && isArrayLike(data[key])) {\n sourceFormat = SOURCE_FORMAT_KEYED_COLUMNS;\n break;\n }\n }\n } else if (data != null) {\n throw new Error('Invalid data');\n }\n\n inner(datasetModel).sourceFormat = sourceFormat;\n}\n/**\n * [Scenarios]:\n * (1) Provide source data directly:\n * series: {\n * encode: {...},\n * dimensions: [...]\n * seriesLayoutBy: 'row',\n * data: [[...]]\n * }\n * (2) Refer to datasetModel.\n * series: [{\n * encode: {...}\n * // Ignore datasetIndex means `datasetIndex: 0`\n * // and the dimensions defination in dataset is used\n * }, {\n * encode: {...},\n * seriesLayoutBy: 'column',\n * datasetIndex: 1\n * }]\n *\n * Get data from series itself or datset.\n * @return {module:echarts/data/Source} source\n */\n\n\nfunction getSource(seriesModel) {\n return inner(seriesModel).source;\n}\n/**\n * MUST be called before mergeOption of all series.\n * @param {module:echarts/model/Global} ecModel\n */\n\n\nfunction resetSourceDefaulter(ecModel) {\n // `datasetMap` is used to make default encode.\n inner(ecModel).datasetMap = createHashMap();\n}\n/**\n * [Caution]:\n * MUST be called after series option merged and\n * before \"series.getInitailData()\" called.\n *\n * [The rule of making default encode]:\n * Category axis (if exists) alway map to the first dimension.\n * Each other axis occupies a subsequent dimension.\n *\n * [Why make default encode]:\n * Simplify the typing of encode in option, avoiding the case like that:\n * series: [{encode: {x: 0, y: 1}}, {encode: {x: 0, y: 2}}, {encode: {x: 0, y: 3}}],\n * where the \"y\" have to be manually typed as \"1, 2, 3, ...\".\n *\n * @param {module:echarts/model/Series} seriesModel\n */\n\n\nfunction prepareSource(seriesModel) {\n var seriesOption = seriesModel.option;\n var data = seriesOption.data;\n var sourceFormat = isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL;\n var fromDataset = false;\n var seriesLayoutBy = seriesOption.seriesLayoutBy;\n var sourceHeader = seriesOption.sourceHeader;\n var dimensionsDefine = seriesOption.dimensions;\n var datasetModel = getDatasetModel(seriesModel);\n\n if (datasetModel) {\n var datasetOption = datasetModel.option;\n data = datasetOption.source;\n sourceFormat = inner(datasetModel).sourceFormat;\n fromDataset = true; // These settings from series has higher priority.\n\n seriesLayoutBy = seriesLayoutBy || datasetOption.seriesLayoutBy;\n sourceHeader == null && (sourceHeader = datasetOption.sourceHeader);\n dimensionsDefine = dimensionsDefine || datasetOption.dimensions;\n }\n\n var completeResult = completeBySourceData(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine);\n inner(seriesModel).source = new Source({\n data: data,\n fromDataset: fromDataset,\n seriesLayoutBy: seriesLayoutBy,\n sourceFormat: sourceFormat,\n dimensionsDefine: completeResult.dimensionsDefine,\n startIndex: completeResult.startIndex,\n dimensionsDetectCount: completeResult.dimensionsDetectCount,\n // Note: dataset option does not have `encode`.\n encodeDefine: seriesOption.encode\n });\n} // return {startIndex, dimensionsDefine, dimensionsCount}\n\n\nfunction completeBySourceData(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine) {\n if (!data) {\n return {\n dimensionsDefine: normalizeDimensionsDefine(dimensionsDefine)\n };\n }\n\n var dimensionsDetectCount;\n var startIndex;\n\n if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\n // Rule: Most of the first line are string: it is header.\n // Caution: consider a line with 5 string and 1 number,\n // it still can not be sure it is a head, because the\n // 5 string may be 5 values of category columns.\n if (sourceHeader === 'auto' || sourceHeader == null) {\n arrayRowsTravelFirst(function (val) {\n // '-' is regarded as null/undefined.\n if (val != null && val !== '-') {\n if (isString(val)) {\n startIndex == null && (startIndex = 1);\n } else {\n startIndex = 0;\n }\n } // 10 is an experience number, avoid long loop.\n\n }, seriesLayoutBy, data, 10);\n } else {\n startIndex = sourceHeader ? 1 : 0;\n }\n\n if (!dimensionsDefine && startIndex === 1) {\n dimensionsDefine = [];\n arrayRowsTravelFirst(function (val, index) {\n dimensionsDefine[index] = val != null ? val : '';\n }, seriesLayoutBy, data);\n }\n\n dimensionsDetectCount = dimensionsDefine ? dimensionsDefine.length : seriesLayoutBy === SERIES_LAYOUT_BY_ROW ? data.length : data[0] ? data[0].length : null;\n } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\n if (!dimensionsDefine) {\n dimensionsDefine = objectRowsCollectDimensions(data);\n }\n } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n if (!dimensionsDefine) {\n dimensionsDefine = [];\n each(data, function (colArr, key) {\n dimensionsDefine.push(key);\n });\n }\n } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n var value0 = getDataItemValue(data[0]);\n dimensionsDetectCount = isArray(value0) && value0.length || 1;\n } else if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {}\n\n return {\n startIndex: startIndex,\n dimensionsDefine: normalizeDimensionsDefine(dimensionsDefine),\n dimensionsDetectCount: dimensionsDetectCount\n };\n} // Consider dimensions defined like ['A', 'price', 'B', 'price', 'C', 'price'],\n// which is reasonable. But dimension name is duplicated.\n// Returns undefined or an array contains only object without null/undefiend or string.\n\n\nfunction normalizeDimensionsDefine(dimensionsDefine) {\n if (!dimensionsDefine) {\n // The meaning of null/undefined is different from empty array.\n return;\n }\n\n var nameMap = createHashMap();\n return map(dimensionsDefine, function (item, index) {\n item = extend({}, isObject(item) ? item : {\n name: item\n }); // User can set null in dimensions.\n // We dont auto specify name, othewise a given name may\n // cause it be refered unexpectedly.\n\n if (item.name == null) {\n return item;\n } // Also consider number form like 2012.\n\n\n item.name += ''; // User may also specify displayName.\n // displayName will always exists except user not\n // specified or dim name is not specified or detected.\n // (A auto generated dim name will not be used as\n // displayName).\n\n if (item.displayName == null) {\n item.displayName = item.name;\n }\n\n var exist = nameMap.get(item.name);\n\n if (!exist) {\n nameMap.set(item.name, {\n count: 1\n });\n } else {\n item.name += '-' + exist.count++;\n }\n\n return item;\n });\n}\n\nfunction arrayRowsTravelFirst(cb, seriesLayoutBy, data, maxLoop) {\n maxLoop == null && (maxLoop = Infinity);\n\n if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n cb(data[i] ? data[i][0] : null, i);\n }\n } else {\n var value0 = data[0] || [];\n\n for (var i = 0; i < value0.length && i < maxLoop; i++) {\n cb(value0[i], i);\n }\n }\n}\n\nfunction objectRowsCollectDimensions(data) {\n var firstIndex = 0;\n var obj;\n\n while (firstIndex < data.length && !(obj = data[firstIndex++])) {} // jshint ignore: line\n\n\n if (obj) {\n var dimensions = [];\n each(obj, function (value, key) {\n dimensions.push(key);\n });\n return dimensions;\n }\n}\n/**\n * [The strategy of the arrengment of data dimensions for dataset]:\n * \"value way\": all axes are non-category axes. So series one by one take\n * several (the number is coordSysDims.length) dimensions from dataset.\n * The result of data arrengment of data dimensions like:\n * | ser0_x | ser0_y | ser1_x | ser1_y | ser2_x | ser2_y |\n * \"category way\": at least one axis is category axis. So the the first data\n * dimension is always mapped to the first category axis and shared by\n * all of the series. The other data dimensions are taken by series like\n * \"value way\" does.\n * The result of data arrengment of data dimensions like:\n * | ser_shared_x | ser0_y | ser1_y | ser2_y |\n *\n * @param {Array.} coordDimensions [{name: , type: , dimsDef: }, ...]\n * @param {module:model/Series} seriesModel\n * @param {module:data/Source} source\n * @return {Object} encode Never be `null/undefined`.\n */\n\n\nfunction makeSeriesEncodeForAxisCoordSys(coordDimensions, seriesModel, source) {\n var encode = {};\n var datasetModel = getDatasetModel(seriesModel); // Currently only make default when using dataset, util more reqirements occur.\n\n if (!datasetModel || !coordDimensions) {\n return encode;\n }\n\n var encodeItemName = [];\n var encodeSeriesName = [];\n var ecModel = seriesModel.ecModel;\n var datasetMap = inner(ecModel).datasetMap;\n var key = datasetModel.uid + '_' + source.seriesLayoutBy;\n var baseCategoryDimIndex;\n var categoryWayValueDimStart;\n coordDimensions = coordDimensions.slice();\n each(coordDimensions, function (coordDimInfo, coordDimIdx) {\n !isObject(coordDimInfo) && (coordDimensions[coordDimIdx] = {\n name: coordDimInfo\n });\n\n if (coordDimInfo.type === 'ordinal' && baseCategoryDimIndex == null) {\n baseCategoryDimIndex = coordDimIdx;\n categoryWayValueDimStart = getDataDimCountOnCoordDim(coordDimensions[coordDimIdx]);\n }\n\n encode[coordDimInfo.name] = [];\n });\n var datasetRecord = datasetMap.get(key) || datasetMap.set(key, {\n categoryWayDim: categoryWayValueDimStart,\n valueWayDim: 0\n }); // TODO\n // Auto detect first time axis and do arrangement.\n\n each(coordDimensions, function (coordDimInfo, coordDimIdx) {\n var coordDimName = coordDimInfo.name;\n var count = getDataDimCountOnCoordDim(coordDimInfo); // In value way.\n\n if (baseCategoryDimIndex == null) {\n var start = datasetRecord.valueWayDim;\n pushDim(encode[coordDimName], start, count);\n pushDim(encodeSeriesName, start, count);\n datasetRecord.valueWayDim += count; // ??? TODO give a better default series name rule?\n // especially when encode x y specified.\n // consider: when mutiple series share one dimension\n // category axis, series name should better use\n // the other dimsion name. On the other hand, use\n // both dimensions name.\n } // In category way, the first category axis.\n else if (baseCategoryDimIndex === coordDimIdx) {\n pushDim(encode[coordDimName], 0, count);\n pushDim(encodeItemName, 0, count);\n } // In category way, the other axis.\n else {\n var start = datasetRecord.categoryWayDim;\n pushDim(encode[coordDimName], start, count);\n pushDim(encodeSeriesName, start, count);\n datasetRecord.categoryWayDim += count;\n }\n });\n\n function pushDim(dimIdxArr, idxFrom, idxCount) {\n for (var i = 0; i < idxCount; i++) {\n dimIdxArr.push(idxFrom + i);\n }\n }\n\n function getDataDimCountOnCoordDim(coordDimInfo) {\n var dimsDef = coordDimInfo.dimsDef;\n return dimsDef ? dimsDef.length : 1;\n }\n\n encodeItemName.length && (encode.itemName = encodeItemName);\n encodeSeriesName.length && (encode.seriesName = encodeSeriesName);\n return encode;\n}\n/**\n * Work for data like [{name: ..., value: ...}, ...].\n *\n * @param {module:model/Series} seriesModel\n * @param {module:data/Source} source\n * @return {Object} encode Never be `null/undefined`.\n */\n\n\nfunction makeSeriesEncodeForNameBased(seriesModel, source, dimCount) {\n var encode = {};\n var datasetModel = getDatasetModel(seriesModel); // Currently only make default when using dataset, util more reqirements occur.\n\n if (!datasetModel) {\n return encode;\n }\n\n var sourceFormat = source.sourceFormat;\n var dimensionsDefine = source.dimensionsDefine;\n var potentialNameDimIndex;\n\n if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n each(dimensionsDefine, function (dim, idx) {\n if ((isObject(dim) ? dim.name : dim) === 'name') {\n potentialNameDimIndex = idx;\n }\n });\n } // idxResult: {v, n}.\n\n\n var idxResult = function () {\n var idxRes0 = {};\n var idxRes1 = {};\n var guessRecords = []; // 5 is an experience value.\n\n for (var i = 0, len = Math.min(5, dimCount); i < len; i++) {\n var guessResult = doGuessOrdinal(source.data, sourceFormat, source.seriesLayoutBy, dimensionsDefine, source.startIndex, i);\n guessRecords.push(guessResult);\n var isPureNumber = guessResult === BE_ORDINAL.Not; // [Strategy of idxRes0]: find the first BE_ORDINAL.Not as the value dim,\n // and then find a name dim with the priority:\n // \"BE_ORDINAL.Might|BE_ORDINAL.Must\" > \"other dim\" > \"the value dim itself\".\n\n if (isPureNumber && idxRes0.v == null && i !== potentialNameDimIndex) {\n idxRes0.v = i;\n }\n\n if (idxRes0.n == null || idxRes0.n === idxRes0.v || !isPureNumber && guessRecords[idxRes0.n] === BE_ORDINAL.Not) {\n idxRes0.n = i;\n }\n\n if (fulfilled(idxRes0) && guessRecords[idxRes0.n] !== BE_ORDINAL.Not) {\n return idxRes0;\n } // [Strategy of idxRes1]: if idxRes0 not satisfied (that is, no BE_ORDINAL.Not),\n // find the first BE_ORDINAL.Might as the value dim,\n // and then find a name dim with the priority:\n // \"other dim\" > \"the value dim itself\".\n // That is for backward compat: number-like (e.g., `'3'`, `'55'`) can be\n // treated as number.\n\n\n if (!isPureNumber) {\n if (guessResult === BE_ORDINAL.Might && idxRes1.v == null && i !== potentialNameDimIndex) {\n idxRes1.v = i;\n }\n\n if (idxRes1.n == null || idxRes1.n === idxRes1.v) {\n idxRes1.n = i;\n }\n }\n }\n\n function fulfilled(idxResult) {\n return idxResult.v != null && idxResult.n != null;\n }\n\n return fulfilled(idxRes0) ? idxRes0 : fulfilled(idxRes1) ? idxRes1 : null;\n }();\n\n if (idxResult) {\n encode.value = idxResult.v; // `potentialNameDimIndex` has highest priority.\n\n var nameDimIndex = potentialNameDimIndex != null ? potentialNameDimIndex : idxResult.n; // By default, label use itemName in charts.\n // So we dont set encodeLabel here.\n\n encode.itemName = [nameDimIndex];\n encode.seriesName = [nameDimIndex];\n }\n\n return encode;\n}\n/**\n * If return null/undefined, indicate that should not use datasetModel.\n */\n\n\nfunction getDatasetModel(seriesModel) {\n var option = seriesModel.option; // Caution: consider the scenario:\n // A dataset is declared and a series is not expected to use the dataset,\n // and at the beginning `setOption({series: { noData })` (just prepare other\n // option but no data), then `setOption({series: {data: [...]}); In this case,\n // the user should set an empty array to avoid that dataset is used by default.\n\n var thisData = option.data;\n\n if (!thisData) {\n return seriesModel.ecModel.getComponent('dataset', option.datasetIndex || 0);\n }\n}\n/**\n * The rule should not be complex, otherwise user might not\n * be able to known where the data is wrong.\n * The code is ugly, but how to make it neat?\n *\n * @param {module:echars/data/Source} source\n * @param {number} dimIndex\n * @return {BE_ORDINAL} guess result.\n */\n\n\nfunction guessOrdinal(source, dimIndex) {\n return doGuessOrdinal(source.data, source.sourceFormat, source.seriesLayoutBy, source.dimensionsDefine, source.startIndex, dimIndex);\n} // dimIndex may be overflow source data.\n// return {BE_ORDINAL}\n\n\nfunction doGuessOrdinal(data, sourceFormat, seriesLayoutBy, dimensionsDefine, startIndex, dimIndex) {\n var result; // Experience value.\n\n var maxLoop = 5;\n\n if (isTypedArray(data)) {\n return BE_ORDINAL.Not;\n } // When sourceType is 'objectRows' or 'keyedColumns', dimensionsDefine\n // always exists in source.\n\n\n var dimName;\n var dimType;\n\n if (dimensionsDefine) {\n var dimDefItem = dimensionsDefine[dimIndex];\n\n if (isObject(dimDefItem)) {\n dimName = dimDefItem.name;\n dimType = dimDefItem.type;\n } else if (isString(dimDefItem)) {\n dimName = dimDefItem;\n }\n }\n\n if (dimType != null) {\n return dimType === 'ordinal' ? BE_ORDINAL.Must : BE_ORDINAL.Not;\n }\n\n if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\n if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\n var sample = data[dimIndex];\n\n for (var i = 0; i < (sample || []).length && i < maxLoop; i++) {\n if ((result = detectValue(sample[startIndex + i])) != null) {\n return result;\n }\n }\n } else {\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n var row = data[startIndex + i];\n\n if (row && (result = detectValue(row[dimIndex])) != null) {\n return result;\n }\n }\n }\n } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\n if (!dimName) {\n return BE_ORDINAL.Not;\n }\n\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n var item = data[i];\n\n if (item && (result = detectValue(item[dimName])) != null) {\n return result;\n }\n }\n } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n if (!dimName) {\n return BE_ORDINAL.Not;\n }\n\n var sample = data[dimName];\n\n if (!sample || isTypedArray(sample)) {\n return BE_ORDINAL.Not;\n }\n\n for (var i = 0; i < sample.length && i < maxLoop; i++) {\n if ((result = detectValue(sample[i])) != null) {\n return result;\n }\n }\n } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n var item = data[i];\n var val = getDataItemValue(item);\n\n if (!isArray(val)) {\n return BE_ORDINAL.Not;\n }\n\n if ((result = detectValue(val[dimIndex])) != null) {\n return result;\n }\n }\n }\n\n function detectValue(val) {\n var beStr = isString(val); // Consider usage convenience, '1', '2' will be treated as \"number\".\n // `isFinit('')` get `true`.\n\n if (val != null && isFinite(val) && val !== '') {\n return beStr ? BE_ORDINAL.Might : BE_ORDINAL.Not;\n } else if (beStr && val !== '-') {\n return BE_ORDINAL.Must;\n }\n }\n\n return BE_ORDINAL.Not;\n}\n\nexports.BE_ORDINAL = BE_ORDINAL;\nexports.detectSourceFormat = detectSourceFormat;\nexports.getSource = getSource;\nexports.resetSourceDefaulter = resetSourceDefaulter;\nexports.prepareSource = prepareSource;\nexports.makeSeriesEncodeForAxisCoordSys = makeSeriesEncodeForAxisCoordSys;\nexports.makeSeriesEncodeForNameBased = makeSeriesEncodeForNameBased;\nexports.guessOrdinal = guessOrdinal;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/data/helper/sourceHelper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/data/helper/sourceType.js": +/*!************************************************************!*\ + !*** ./node_modules/echarts/lib/data/helper/sourceType.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Avoid typo.\nvar SOURCE_FORMAT_ORIGINAL = 'original';\nvar SOURCE_FORMAT_ARRAY_ROWS = 'arrayRows';\nvar SOURCE_FORMAT_OBJECT_ROWS = 'objectRows';\nvar SOURCE_FORMAT_KEYED_COLUMNS = 'keyedColumns';\nvar SOURCE_FORMAT_UNKNOWN = 'unknown'; // ??? CHANGE A NAME\n\nvar SOURCE_FORMAT_TYPED_ARRAY = 'typedArray';\nvar SERIES_LAYOUT_BY_COLUMN = 'column';\nvar SERIES_LAYOUT_BY_ROW = 'row';\nexports.SOURCE_FORMAT_ORIGINAL = SOURCE_FORMAT_ORIGINAL;\nexports.SOURCE_FORMAT_ARRAY_ROWS = SOURCE_FORMAT_ARRAY_ROWS;\nexports.SOURCE_FORMAT_OBJECT_ROWS = SOURCE_FORMAT_OBJECT_ROWS;\nexports.SOURCE_FORMAT_KEYED_COLUMNS = SOURCE_FORMAT_KEYED_COLUMNS;\nexports.SOURCE_FORMAT_UNKNOWN = SOURCE_FORMAT_UNKNOWN;\nexports.SOURCE_FORMAT_TYPED_ARRAY = SOURCE_FORMAT_TYPED_ARRAY;\nexports.SERIES_LAYOUT_BY_COLUMN = SERIES_LAYOUT_BY_COLUMN;\nexports.SERIES_LAYOUT_BY_ROW = SERIES_LAYOUT_BY_ROW;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/data/helper/sourceType.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/echarts.js": +/*!*********************************************!*\ + !*** ./node_modules/echarts/lib/echarts.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ./config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrender = __webpack_require__(/*! zrender/lib/zrender */ \"./node_modules/zrender/lib/zrender.js\");\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar colorTool = __webpack_require__(/*! zrender/lib/tool/color */ \"./node_modules/zrender/lib/tool/color.js\");\n\nvar env = __webpack_require__(/*! zrender/lib/core/env */ \"./node_modules/zrender/lib/core/env.js\");\n\nvar timsort = __webpack_require__(/*! zrender/lib/core/timsort */ \"./node_modules/zrender/lib/core/timsort.js\");\n\nvar Eventful = __webpack_require__(/*! zrender/lib/mixin/Eventful */ \"./node_modules/zrender/lib/mixin/Eventful.js\");\n\nvar GlobalModel = __webpack_require__(/*! ./model/Global */ \"./node_modules/echarts/lib/model/Global.js\");\n\nvar ExtensionAPI = __webpack_require__(/*! ./ExtensionAPI */ \"./node_modules/echarts/lib/ExtensionAPI.js\");\n\nvar CoordinateSystemManager = __webpack_require__(/*! ./CoordinateSystem */ \"./node_modules/echarts/lib/CoordinateSystem.js\");\n\nvar OptionManager = __webpack_require__(/*! ./model/OptionManager */ \"./node_modules/echarts/lib/model/OptionManager.js\");\n\nvar backwardCompat = __webpack_require__(/*! ./preprocessor/backwardCompat */ \"./node_modules/echarts/lib/preprocessor/backwardCompat.js\");\n\nvar dataStack = __webpack_require__(/*! ./processor/dataStack */ \"./node_modules/echarts/lib/processor/dataStack.js\");\n\nvar ComponentModel = __webpack_require__(/*! ./model/Component */ \"./node_modules/echarts/lib/model/Component.js\");\n\nvar SeriesModel = __webpack_require__(/*! ./model/Series */ \"./node_modules/echarts/lib/model/Series.js\");\n\nvar ComponentView = __webpack_require__(/*! ./view/Component */ \"./node_modules/echarts/lib/view/Component.js\");\n\nvar ChartView = __webpack_require__(/*! ./view/Chart */ \"./node_modules/echarts/lib/view/Chart.js\");\n\nvar graphic = __webpack_require__(/*! ./util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar modelUtil = __webpack_require__(/*! ./util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar _throttle = __webpack_require__(/*! ./util/throttle */ \"./node_modules/echarts/lib/util/throttle.js\");\n\nvar throttle = _throttle.throttle;\n\nvar seriesColor = __webpack_require__(/*! ./visual/seriesColor */ \"./node_modules/echarts/lib/visual/seriesColor.js\");\n\nvar aria = __webpack_require__(/*! ./visual/aria */ \"./node_modules/echarts/lib/visual/aria.js\");\n\nvar loadingDefault = __webpack_require__(/*! ./loading/default */ \"./node_modules/echarts/lib/loading/default.js\");\n\nvar Scheduler = __webpack_require__(/*! ./stream/Scheduler */ \"./node_modules/echarts/lib/stream/Scheduler.js\");\n\nvar lightTheme = __webpack_require__(/*! ./theme/light */ \"./node_modules/echarts/lib/theme/light.js\");\n\nvar darkTheme = __webpack_require__(/*! ./theme/dark */ \"./node_modules/echarts/lib/theme/dark.js\");\n\n__webpack_require__(/*! ./component/dataset */ \"./node_modules/echarts/lib/component/dataset.js\");\n\nvar mapDataStorage = __webpack_require__(/*! ./coord/geo/mapDataStorage */ \"./node_modules/echarts/lib/coord/geo/mapDataStorage.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar assert = zrUtil.assert;\nvar each = zrUtil.each;\nvar isFunction = zrUtil.isFunction;\nvar isObject = zrUtil.isObject;\nvar parseClassType = ComponentModel.parseClassType;\nvar version = '4.9.0';\nvar dependencies = {\n zrender: '4.3.2'\n};\nvar TEST_FRAME_REMAIN_TIME = 1;\nvar PRIORITY_PROCESSOR_FILTER = 1000;\nvar PRIORITY_PROCESSOR_SERIES_FILTER = 800;\nvar PRIORITY_PROCESSOR_DATASTACK = 900;\nvar PRIORITY_PROCESSOR_STATISTIC = 5000;\nvar PRIORITY_VISUAL_LAYOUT = 1000;\nvar PRIORITY_VISUAL_PROGRESSIVE_LAYOUT = 1100;\nvar PRIORITY_VISUAL_GLOBAL = 2000;\nvar PRIORITY_VISUAL_CHART = 3000;\nvar PRIORITY_VISUAL_POST_CHART_LAYOUT = 3500;\nvar PRIORITY_VISUAL_COMPONENT = 4000; // FIXME\n// necessary?\n\nvar PRIORITY_VISUAL_BRUSH = 5000;\nvar PRIORITY = {\n PROCESSOR: {\n FILTER: PRIORITY_PROCESSOR_FILTER,\n SERIES_FILTER: PRIORITY_PROCESSOR_SERIES_FILTER,\n STATISTIC: PRIORITY_PROCESSOR_STATISTIC\n },\n VISUAL: {\n LAYOUT: PRIORITY_VISUAL_LAYOUT,\n PROGRESSIVE_LAYOUT: PRIORITY_VISUAL_PROGRESSIVE_LAYOUT,\n GLOBAL: PRIORITY_VISUAL_GLOBAL,\n CHART: PRIORITY_VISUAL_CHART,\n POST_CHART_LAYOUT: PRIORITY_VISUAL_POST_CHART_LAYOUT,\n COMPONENT: PRIORITY_VISUAL_COMPONENT,\n BRUSH: PRIORITY_VISUAL_BRUSH\n }\n}; // Main process have three entries: `setOption`, `dispatchAction` and `resize`,\n// where they must not be invoked nestedly, except the only case: invoke\n// dispatchAction with updateMethod \"none\" in main process.\n// This flag is used to carry out this rule.\n// All events will be triggered out side main process (i.e. when !this[IN_MAIN_PROCESS]).\n\nvar IN_MAIN_PROCESS = '__flagInMainProcess';\nvar OPTION_UPDATED = '__optionUpdated';\nvar ACTION_REG = /^[a-zA-Z0-9_]+$/;\n\nfunction createRegisterEventWithLowercaseName(method, ignoreDisposed) {\n return function (eventName, handler, context) {\n if (!ignoreDisposed && this._disposed) {\n disposedWarning(this.id);\n return;\n } // Event name is all lowercase\n\n\n eventName = eventName && eventName.toLowerCase();\n Eventful.prototype[method].call(this, eventName, handler, context);\n };\n}\n/**\n * @module echarts~MessageCenter\n */\n\n\nfunction MessageCenter() {\n Eventful.call(this);\n}\n\nMessageCenter.prototype.on = createRegisterEventWithLowercaseName('on', true);\nMessageCenter.prototype.off = createRegisterEventWithLowercaseName('off', true);\nMessageCenter.prototype.one = createRegisterEventWithLowercaseName('one', true);\nzrUtil.mixin(MessageCenter, Eventful);\n/**\n * @module echarts~ECharts\n */\n\nfunction ECharts(dom, theme, opts) {\n opts = opts || {}; // Get theme by name\n\n if (typeof theme === 'string') {\n theme = themeStorage[theme];\n }\n /**\n * @type {string}\n */\n\n\n this.id;\n /**\n * Group id\n * @type {string}\n */\n\n this.group;\n /**\n * @type {HTMLElement}\n * @private\n */\n\n this._dom = dom;\n var defaultRenderer = 'canvas';\n\n /**\n * @type {module:zrender/ZRender}\n * @private\n */\n var zr = this._zr = zrender.init(dom, {\n renderer: opts.renderer || defaultRenderer,\n devicePixelRatio: opts.devicePixelRatio,\n width: opts.width,\n height: opts.height\n });\n /**\n * Expect 60 fps.\n * @type {Function}\n * @private\n */\n\n this._throttledZrFlush = throttle(zrUtil.bind(zr.flush, zr), 17);\n var theme = zrUtil.clone(theme);\n theme && backwardCompat(theme, true);\n /**\n * @type {Object}\n * @private\n */\n\n this._theme = theme;\n /**\n * @type {Array.}\n * @private\n */\n\n this._chartsViews = [];\n /**\n * @type {Object.}\n * @private\n */\n\n this._chartsMap = {};\n /**\n * @type {Array.}\n * @private\n */\n\n this._componentsViews = [];\n /**\n * @type {Object.}\n * @private\n */\n\n this._componentsMap = {};\n /**\n * @type {module:echarts/CoordinateSystem}\n * @private\n */\n\n this._coordSysMgr = new CoordinateSystemManager();\n /**\n * @type {module:echarts/ExtensionAPI}\n * @private\n */\n\n var api = this._api = createExtensionAPI(this); // Sort on demand\n\n function prioritySortFunc(a, b) {\n return a.__prio - b.__prio;\n }\n\n timsort(visualFuncs, prioritySortFunc);\n timsort(dataProcessorFuncs, prioritySortFunc);\n /**\n * @type {module:echarts/stream/Scheduler}\n */\n\n this._scheduler = new Scheduler(this, api, dataProcessorFuncs, visualFuncs);\n Eventful.call(this, this._ecEventProcessor = new EventProcessor());\n /**\n * @type {module:echarts~MessageCenter}\n * @private\n */\n\n this._messageCenter = new MessageCenter(); // Init mouse events\n\n this._initEvents(); // In case some people write `window.onresize = chart.resize`\n\n\n this.resize = zrUtil.bind(this.resize, this); // Can't dispatch action during rendering procedure\n\n this._pendingActions = [];\n zr.animation.on('frame', this._onframe, this);\n bindRenderedEvent(zr, this); // ECharts instance can be used as value.\n\n zrUtil.setAsPrimitive(this);\n}\n\nvar echartsProto = ECharts.prototype;\n\nechartsProto._onframe = function () {\n if (this._disposed) {\n return;\n }\n\n var scheduler = this._scheduler; // Lazy update\n\n if (this[OPTION_UPDATED]) {\n var silent = this[OPTION_UPDATED].silent;\n this[IN_MAIN_PROCESS] = true;\n prepare(this);\n updateMethods.update.call(this);\n this[IN_MAIN_PROCESS] = false;\n this[OPTION_UPDATED] = false;\n flushPendingActions.call(this, silent);\n triggerUpdatedEvent.call(this, silent);\n } // Avoid do both lazy update and progress in one frame.\n else if (scheduler.unfinished) {\n // Stream progress.\n var remainTime = TEST_FRAME_REMAIN_TIME;\n var ecModel = this._model;\n var api = this._api;\n scheduler.unfinished = false;\n\n do {\n var startTime = +new Date();\n scheduler.performSeriesTasks(ecModel); // Currently dataProcessorFuncs do not check threshold.\n\n scheduler.performDataProcessorTasks(ecModel);\n updateStreamModes(this, ecModel); // Do not update coordinate system here. Because that coord system update in\n // each frame is not a good user experience. So we follow the rule that\n // the extent of the coordinate system is determin in the first frame (the\n // frame is executed immedietely after task reset.\n // this._coordSysMgr.update(ecModel, api);\n // console.log('--- ec frame visual ---', remainTime);\n\n scheduler.performVisualTasks(ecModel);\n renderSeries(this, this._model, api, 'remain');\n remainTime -= +new Date() - startTime;\n } while (remainTime > 0 && scheduler.unfinished); // Call flush explicitly for trigger finished event.\n\n\n if (!scheduler.unfinished) {\n this._zr.flush();\n } // Else, zr flushing be ensue within the same frame,\n // because zr flushing is after onframe event.\n\n }\n};\n/**\n * @return {HTMLElement}\n */\n\n\nechartsProto.getDom = function () {\n return this._dom;\n};\n/**\n * @return {module:zrender~ZRender}\n */\n\n\nechartsProto.getZr = function () {\n return this._zr;\n};\n/**\n * Usage:\n * chart.setOption(option, notMerge, lazyUpdate);\n * chart.setOption(option, {\n * notMerge: ...,\n * lazyUpdate: ...,\n * silent: ...\n * });\n *\n * @param {Object} option\n * @param {Object|boolean} [opts] opts or notMerge.\n * @param {boolean} [opts.notMerge=false]\n * @param {boolean} [opts.lazyUpdate=false] Useful when setOption frequently.\n */\n\n\nechartsProto.setOption = function (option, notMerge, lazyUpdate) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var silent;\n\n if (isObject(notMerge)) {\n lazyUpdate = notMerge.lazyUpdate;\n silent = notMerge.silent;\n notMerge = notMerge.notMerge;\n }\n\n this[IN_MAIN_PROCESS] = true;\n\n if (!this._model || notMerge) {\n var optionManager = new OptionManager(this._api);\n var theme = this._theme;\n var ecModel = this._model = new GlobalModel();\n ecModel.scheduler = this._scheduler;\n ecModel.init(null, null, theme, optionManager);\n }\n\n this._model.setOption(option, optionPreprocessorFuncs);\n\n if (lazyUpdate) {\n this[OPTION_UPDATED] = {\n silent: silent\n };\n this[IN_MAIN_PROCESS] = false;\n } else {\n prepare(this);\n updateMethods.update.call(this); // Ensure zr refresh sychronously, and then pixel in canvas can be\n // fetched after `setOption`.\n\n this._zr.flush();\n\n this[OPTION_UPDATED] = false;\n this[IN_MAIN_PROCESS] = false;\n flushPendingActions.call(this, silent);\n triggerUpdatedEvent.call(this, silent);\n }\n};\n/**\n * @DEPRECATED\n */\n\n\nechartsProto.setTheme = function () {\n console.error('ECharts#setTheme() is DEPRECATED in ECharts 3.0');\n};\n/**\n * @return {module:echarts/model/Global}\n */\n\n\nechartsProto.getModel = function () {\n return this._model;\n};\n/**\n * @return {Object}\n */\n\n\nechartsProto.getOption = function () {\n return this._model && this._model.getOption();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getWidth = function () {\n return this._zr.getWidth();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getHeight = function () {\n return this._zr.getHeight();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getDevicePixelRatio = function () {\n return this._zr.painter.dpr || window.devicePixelRatio || 1;\n};\n/**\n * Get canvas which has all thing rendered\n * @param {Object} opts\n * @param {string} [opts.backgroundColor]\n * @return {string}\n */\n\n\nechartsProto.getRenderedCanvas = function (opts) {\n if (!env.canvasSupported) {\n return;\n }\n\n opts = opts || {};\n opts.pixelRatio = opts.pixelRatio || 1;\n opts.backgroundColor = opts.backgroundColor || this._model.get('backgroundColor');\n var zr = this._zr; // var list = zr.storage.getDisplayList();\n // Stop animations\n // Never works before in init animation, so remove it.\n // zrUtil.each(list, function (el) {\n // el.stopAnimation(true);\n // });\n\n return zr.painter.getRenderedCanvas(opts);\n};\n/**\n * Get svg data url\n * @return {string}\n */\n\n\nechartsProto.getSvgDataURL = function () {\n if (!env.svgSupported) {\n return;\n }\n\n var zr = this._zr;\n var list = zr.storage.getDisplayList(); // Stop animations\n\n zrUtil.each(list, function (el) {\n el.stopAnimation(true);\n });\n return zr.painter.toDataURL();\n};\n/**\n * @return {string}\n * @param {Object} opts\n * @param {string} [opts.type='png']\n * @param {string} [opts.pixelRatio=1]\n * @param {string} [opts.backgroundColor]\n * @param {string} [opts.excludeComponents]\n */\n\n\nechartsProto.getDataURL = function (opts) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n opts = opts || {};\n var excludeComponents = opts.excludeComponents;\n var ecModel = this._model;\n var excludesComponentViews = [];\n var self = this;\n each(excludeComponents, function (componentType) {\n ecModel.eachComponent({\n mainType: componentType\n }, function (component) {\n var view = self._componentsMap[component.__viewId];\n\n if (!view.group.ignore) {\n excludesComponentViews.push(view);\n view.group.ignore = true;\n }\n });\n });\n var url = this._zr.painter.getType() === 'svg' ? this.getSvgDataURL() : this.getRenderedCanvas(opts).toDataURL('image/' + (opts && opts.type || 'png'));\n each(excludesComponentViews, function (view) {\n view.group.ignore = false;\n });\n return url;\n};\n/**\n * @return {string}\n * @param {Object} opts\n * @param {string} [opts.type='png']\n * @param {string} [opts.pixelRatio=1]\n * @param {string} [opts.backgroundColor]\n */\n\n\nechartsProto.getConnectedDataURL = function (opts) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n if (!env.canvasSupported) {\n return;\n }\n\n var isSvg = opts.type === 'svg';\n var groupId = this.group;\n var mathMin = Math.min;\n var mathMax = Math.max;\n var MAX_NUMBER = Infinity;\n\n if (connectedGroups[groupId]) {\n var left = MAX_NUMBER;\n var top = MAX_NUMBER;\n var right = -MAX_NUMBER;\n var bottom = -MAX_NUMBER;\n var canvasList = [];\n var dpr = opts && opts.pixelRatio || 1;\n zrUtil.each(instances, function (chart, id) {\n if (chart.group === groupId) {\n var canvas = isSvg ? chart.getZr().painter.getSvgDom().innerHTML : chart.getRenderedCanvas(zrUtil.clone(opts));\n var boundingRect = chart.getDom().getBoundingClientRect();\n left = mathMin(boundingRect.left, left);\n top = mathMin(boundingRect.top, top);\n right = mathMax(boundingRect.right, right);\n bottom = mathMax(boundingRect.bottom, bottom);\n canvasList.push({\n dom: canvas,\n left: boundingRect.left,\n top: boundingRect.top\n });\n }\n });\n left *= dpr;\n top *= dpr;\n right *= dpr;\n bottom *= dpr;\n var width = right - left;\n var height = bottom - top;\n var targetCanvas = zrUtil.createCanvas();\n var zr = zrender.init(targetCanvas, {\n renderer: isSvg ? 'svg' : 'canvas'\n });\n zr.resize({\n width: width,\n height: height\n });\n\n if (isSvg) {\n var content = '';\n each(canvasList, function (item) {\n var x = item.left - left;\n var y = item.top - top;\n content += '' + item.dom + '';\n });\n zr.painter.getSvgRoot().innerHTML = content;\n\n if (opts.connectedBackgroundColor) {\n zr.painter.setBackgroundColor(opts.connectedBackgroundColor);\n }\n\n zr.refreshImmediately();\n return zr.painter.toDataURL();\n } else {\n // Background between the charts\n if (opts.connectedBackgroundColor) {\n zr.add(new graphic.Rect({\n shape: {\n x: 0,\n y: 0,\n width: width,\n height: height\n },\n style: {\n fill: opts.connectedBackgroundColor\n }\n }));\n }\n\n each(canvasList, function (item) {\n var img = new graphic.Image({\n style: {\n x: item.left * dpr - left,\n y: item.top * dpr - top,\n image: item.dom\n }\n });\n zr.add(img);\n });\n zr.refreshImmediately();\n return targetCanvas.toDataURL('image/' + (opts && opts.type || 'png'));\n }\n } else {\n return this.getDataURL(opts);\n }\n};\n/**\n * Convert from logical coordinate system to pixel coordinate system.\n * See CoordinateSystem#convertToPixel.\n * @param {string|Object} finder\n * If string, e.g., 'geo', means {geoIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex / seriesId / seriesName,\n * geoIndex / geoId, geoName,\n * bmapIndex / bmapId / bmapName,\n * xAxisIndex / xAxisId / xAxisName,\n * yAxisIndex / yAxisId / yAxisName,\n * gridIndex / gridId / gridName,\n * ... (can be extended)\n * }\n * @param {Array|number} value\n * @return {Array|number} result\n */\n\n\nechartsProto.convertToPixel = zrUtil.curry(doConvertPixel, 'convertToPixel');\n/**\n * Convert from pixel coordinate system to logical coordinate system.\n * See CoordinateSystem#convertFromPixel.\n * @param {string|Object} finder\n * If string, e.g., 'geo', means {geoIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex / seriesId / seriesName,\n * geoIndex / geoId / geoName,\n * bmapIndex / bmapId / bmapName,\n * xAxisIndex / xAxisId / xAxisName,\n * yAxisIndex / yAxisId / yAxisName\n * gridIndex / gridId / gridName,\n * ... (can be extended)\n * }\n * @param {Array|number} value\n * @return {Array|number} result\n */\n\nechartsProto.convertFromPixel = zrUtil.curry(doConvertPixel, 'convertFromPixel');\n\nfunction doConvertPixel(methodName, finder, value) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var ecModel = this._model;\n\n var coordSysList = this._coordSysMgr.getCoordinateSystems();\n\n var result;\n finder = modelUtil.parseFinder(ecModel, finder);\n\n for (var i = 0; i < coordSysList.length; i++) {\n var coordSys = coordSysList[i];\n\n if (coordSys[methodName] && (result = coordSys[methodName](ecModel, finder, value)) != null) {\n return result;\n }\n }\n}\n/**\n * Is the specified coordinate systems or components contain the given pixel point.\n * @param {string|Object} finder\n * If string, e.g., 'geo', means {geoIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex / seriesId / seriesName,\n * geoIndex / geoId / geoName,\n * bmapIndex / bmapId / bmapName,\n * xAxisIndex / xAxisId / xAxisName,\n * yAxisIndex / yAxisId / yAxisName,\n * gridIndex / gridId / gridName,\n * ... (can be extended)\n * }\n * @param {Array|number} value\n * @return {boolean} result\n */\n\n\nechartsProto.containPixel = function (finder, value) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var ecModel = this._model;\n var result;\n finder = modelUtil.parseFinder(ecModel, finder);\n zrUtil.each(finder, function (models, key) {\n key.indexOf('Models') >= 0 && zrUtil.each(models, function (model) {\n var coordSys = model.coordinateSystem;\n\n if (coordSys && coordSys.containPoint) {\n result |= !!coordSys.containPoint(value);\n } else if (key === 'seriesModels') {\n var view = this._chartsMap[model.__viewId];\n\n if (view && view.containPoint) {\n result |= view.containPoint(value, model);\n } else {}\n } else {}\n }, this);\n }, this);\n return !!result;\n};\n/**\n * Get visual from series or data.\n * @param {string|Object} finder\n * If string, e.g., 'series', means {seriesIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex / seriesId / seriesName,\n * dataIndex / dataIndexInside\n * }\n * If dataIndex is not specified, series visual will be fetched,\n * but not data item visual.\n * If all of seriesIndex, seriesId, seriesName are not specified,\n * visual will be fetched from first series.\n * @param {string} visualType 'color', 'symbol', 'symbolSize'\n */\n\n\nechartsProto.getVisual = function (finder, visualType) {\n var ecModel = this._model;\n finder = modelUtil.parseFinder(ecModel, finder, {\n defaultMainType: 'series'\n });\n var seriesModel = finder.seriesModel;\n var data = seriesModel.getData();\n var dataIndexInside = finder.hasOwnProperty('dataIndexInside') ? finder.dataIndexInside : finder.hasOwnProperty('dataIndex') ? data.indexOfRawIndex(finder.dataIndex) : null;\n return dataIndexInside != null ? data.getItemVisual(dataIndexInside, visualType) : data.getVisual(visualType);\n};\n/**\n * Get view of corresponding component model\n * @param {module:echarts/model/Component} componentModel\n * @return {module:echarts/view/Component}\n */\n\n\nechartsProto.getViewOfComponentModel = function (componentModel) {\n return this._componentsMap[componentModel.__viewId];\n};\n/**\n * Get view of corresponding series model\n * @param {module:echarts/model/Series} seriesModel\n * @return {module:echarts/view/Chart}\n */\n\n\nechartsProto.getViewOfSeriesModel = function (seriesModel) {\n return this._chartsMap[seriesModel.__viewId];\n};\n\nvar updateMethods = {\n prepareAndUpdate: function (payload) {\n prepare(this);\n updateMethods.update.call(this, payload);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n update: function (payload) {\n // console.profile && console.profile('update');\n var ecModel = this._model;\n var api = this._api;\n var zr = this._zr;\n var coordSysMgr = this._coordSysMgr;\n var scheduler = this._scheduler; // update before setOption\n\n if (!ecModel) {\n return;\n }\n\n scheduler.restoreData(ecModel, payload);\n scheduler.performSeriesTasks(ecModel); // TODO\n // Save total ecModel here for undo/redo (after restoring data and before processing data).\n // Undo (restoration of total ecModel) can be carried out in 'action' or outside API call.\n // Create new coordinate system each update\n // In LineView may save the old coordinate system and use it to get the orignal point\n\n coordSysMgr.create(ecModel, api);\n scheduler.performDataProcessorTasks(ecModel, payload); // Current stream render is not supported in data process. So we can update\n // stream modes after data processing, where the filtered data is used to\n // deteming whether use progressive rendering.\n\n updateStreamModes(this, ecModel); // We update stream modes before coordinate system updated, then the modes info\n // can be fetched when coord sys updating (consider the barGrid extent fix). But\n // the drawback is the full coord info can not be fetched. Fortunately this full\n // coord is not requied in stream mode updater currently.\n\n coordSysMgr.update(ecModel, api);\n clearColorPalette(ecModel);\n scheduler.performVisualTasks(ecModel, payload);\n render(this, ecModel, api, payload); // Set background\n\n var backgroundColor = ecModel.get('backgroundColor') || 'transparent'; // In IE8\n\n if (!env.canvasSupported) {\n var colorArr = colorTool.parse(backgroundColor);\n backgroundColor = colorTool.stringify(colorArr, 'rgb');\n\n if (colorArr[3] === 0) {\n backgroundColor = 'transparent';\n }\n } else {\n zr.setBackgroundColor(backgroundColor);\n }\n\n performPostUpdateFuncs(ecModel, api); // console.profile && console.profileEnd('update');\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateTransform: function (payload) {\n var ecModel = this._model;\n var ecIns = this;\n var api = this._api; // update before setOption\n\n if (!ecModel) {\n return;\n } // ChartView.markUpdateMethod(payload, 'updateTransform');\n\n\n var componentDirtyList = [];\n ecModel.eachComponent(function (componentType, componentModel) {\n var componentView = ecIns.getViewOfComponentModel(componentModel);\n\n if (componentView && componentView.__alive) {\n if (componentView.updateTransform) {\n var result = componentView.updateTransform(componentModel, ecModel, api, payload);\n result && result.update && componentDirtyList.push(componentView);\n } else {\n componentDirtyList.push(componentView);\n }\n }\n });\n var seriesDirtyMap = zrUtil.createHashMap();\n ecModel.eachSeries(function (seriesModel) {\n var chartView = ecIns._chartsMap[seriesModel.__viewId];\n\n if (chartView.updateTransform) {\n var result = chartView.updateTransform(seriesModel, ecModel, api, payload);\n result && result.update && seriesDirtyMap.set(seriesModel.uid, 1);\n } else {\n seriesDirtyMap.set(seriesModel.uid, 1);\n }\n });\n clearColorPalette(ecModel); // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n // this._scheduler.performVisualTasks(ecModel, payload, 'layout', true);\n\n this._scheduler.performVisualTasks(ecModel, payload, {\n setDirty: true,\n dirtyMap: seriesDirtyMap\n }); // Currently, not call render of components. Geo render cost a lot.\n // renderComponents(ecIns, ecModel, api, payload, componentDirtyList);\n\n\n renderSeries(ecIns, ecModel, api, payload, seriesDirtyMap);\n performPostUpdateFuncs(ecModel, this._api);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateView: function (payload) {\n var ecModel = this._model; // update before setOption\n\n if (!ecModel) {\n return;\n }\n\n ChartView.markUpdateMethod(payload, 'updateView');\n clearColorPalette(ecModel); // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n\n this._scheduler.performVisualTasks(ecModel, payload, {\n setDirty: true\n });\n\n render(this, this._model, this._api, payload);\n performPostUpdateFuncs(ecModel, this._api);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateVisual: function (payload) {\n updateMethods.update.call(this, payload); // var ecModel = this._model;\n // // update before setOption\n // if (!ecModel) {\n // return;\n // }\n // ChartView.markUpdateMethod(payload, 'updateVisual');\n // clearColorPalette(ecModel);\n // // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n // this._scheduler.performVisualTasks(ecModel, payload, {visualType: 'visual', setDirty: true});\n // render(this, this._model, this._api, payload);\n // performPostUpdateFuncs(ecModel, this._api);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateLayout: function (payload) {\n updateMethods.update.call(this, payload); // var ecModel = this._model;\n // // update before setOption\n // if (!ecModel) {\n // return;\n // }\n // ChartView.markUpdateMethod(payload, 'updateLayout');\n // // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n // // this._scheduler.performVisualTasks(ecModel, payload, 'layout', true);\n // this._scheduler.performVisualTasks(ecModel, payload, {setDirty: true});\n // render(this, this._model, this._api, payload);\n // performPostUpdateFuncs(ecModel, this._api);\n }\n};\n\nfunction prepare(ecIns) {\n var ecModel = ecIns._model;\n var scheduler = ecIns._scheduler;\n scheduler.restorePipelines(ecModel);\n scheduler.prepareStageTasks();\n prepareView(ecIns, 'component', ecModel, scheduler);\n prepareView(ecIns, 'chart', ecModel, scheduler);\n scheduler.plan();\n}\n/**\n * @private\n */\n\n\nfunction updateDirectly(ecIns, method, payload, mainType, subType) {\n var ecModel = ecIns._model; // broadcast\n\n if (!mainType) {\n // FIXME\n // Chart will not be update directly here, except set dirty.\n // But there is no such scenario now.\n each(ecIns._componentsViews.concat(ecIns._chartsViews), callView);\n return;\n }\n\n var query = {};\n query[mainType + 'Id'] = payload[mainType + 'Id'];\n query[mainType + 'Index'] = payload[mainType + 'Index'];\n query[mainType + 'Name'] = payload[mainType + 'Name'];\n var condition = {\n mainType: mainType,\n query: query\n };\n subType && (condition.subType = subType); // subType may be '' by parseClassType;\n\n var excludeSeriesId = payload.excludeSeriesId;\n\n if (excludeSeriesId != null) {\n excludeSeriesId = zrUtil.createHashMap(modelUtil.normalizeToArray(excludeSeriesId));\n } // If dispatchAction before setOption, do nothing.\n\n\n ecModel && ecModel.eachComponent(condition, function (model) {\n if (!excludeSeriesId || excludeSeriesId.get(model.id) == null) {\n callView(ecIns[mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId]);\n }\n }, ecIns);\n\n function callView(view) {\n view && view.__alive && view[method] && view[method](view.__model, ecModel, ecIns._api, payload);\n }\n}\n/**\n * Resize the chart\n * @param {Object} opts\n * @param {number} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Can be 'auto' (the same as null/undefined)\n * @param {boolean} [opts.silent=false]\n */\n\n\nechartsProto.resize = function (opts) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this._zr.resize(opts);\n\n var ecModel = this._model; // Resize loading effect\n\n this._loadingFX && this._loadingFX.resize();\n\n if (!ecModel) {\n return;\n }\n\n var optionChanged = ecModel.resetOption('media');\n var silent = opts && opts.silent;\n this[IN_MAIN_PROCESS] = true;\n optionChanged && prepare(this);\n updateMethods.update.call(this);\n this[IN_MAIN_PROCESS] = false;\n flushPendingActions.call(this, silent);\n triggerUpdatedEvent.call(this, silent);\n};\n\nfunction updateStreamModes(ecIns, ecModel) {\n var chartsMap = ecIns._chartsMap;\n var scheduler = ecIns._scheduler;\n ecModel.eachSeries(function (seriesModel) {\n scheduler.updateStreamModes(seriesModel, chartsMap[seriesModel.__viewId]);\n });\n}\n/**\n * Show loading effect\n * @param {string} [name='default']\n * @param {Object} [cfg]\n */\n\n\nechartsProto.showLoading = function (name, cfg) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n if (isObject(name)) {\n cfg = name;\n name = '';\n }\n\n name = name || 'default';\n this.hideLoading();\n\n if (!loadingEffects[name]) {\n return;\n }\n\n var el = loadingEffects[name](this._api, cfg);\n var zr = this._zr;\n this._loadingFX = el;\n zr.add(el);\n};\n/**\n * Hide loading effect\n */\n\n\nechartsProto.hideLoading = function () {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this._loadingFX && this._zr.remove(this._loadingFX);\n this._loadingFX = null;\n};\n/**\n * @param {Object} eventObj\n * @return {Object}\n */\n\n\nechartsProto.makeActionFromEvent = function (eventObj) {\n var payload = zrUtil.extend({}, eventObj);\n payload.type = eventActionMap[eventObj.type];\n return payload;\n};\n/**\n * @pubilc\n * @param {Object} payload\n * @param {string} [payload.type] Action type\n * @param {Object|boolean} [opt] If pass boolean, means opt.silent\n * @param {boolean} [opt.silent=false] Whether trigger events.\n * @param {boolean} [opt.flush=undefined]\n * true: Flush immediately, and then pixel in canvas can be fetched\n * immediately. Caution: it might affect performance.\n * false: Not flush.\n * undefined: Auto decide whether perform flush.\n */\n\n\nechartsProto.dispatchAction = function (payload, opt) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n if (!isObject(opt)) {\n opt = {\n silent: !!opt\n };\n }\n\n if (!actions[payload.type]) {\n return;\n } // Avoid dispatch action before setOption. Especially in `connect`.\n\n\n if (!this._model) {\n return;\n } // May dispatchAction in rendering procedure\n\n\n if (this[IN_MAIN_PROCESS]) {\n this._pendingActions.push(payload);\n\n return;\n }\n\n doDispatchAction.call(this, payload, opt.silent);\n\n if (opt.flush) {\n this._zr.flush(true);\n } else if (opt.flush !== false && env.browser.weChat) {\n // In WeChat embeded browser, `requestAnimationFrame` and `setInterval`\n // hang when sliding page (on touch event), which cause that zr does not\n // refresh util user interaction finished, which is not expected.\n // But `dispatchAction` may be called too frequently when pan on touch\n // screen, which impacts performance if do not throttle them.\n this._throttledZrFlush();\n }\n\n flushPendingActions.call(this, opt.silent);\n triggerUpdatedEvent.call(this, opt.silent);\n};\n\nfunction doDispatchAction(payload, silent) {\n var payloadType = payload.type;\n var escapeConnect = payload.escapeConnect;\n var actionWrap = actions[payloadType];\n var actionInfo = actionWrap.actionInfo;\n var cptType = (actionInfo.update || 'update').split(':');\n var updateMethod = cptType.pop();\n cptType = cptType[0] != null && parseClassType(cptType[0]);\n this[IN_MAIN_PROCESS] = true;\n var payloads = [payload];\n var batched = false; // Batch action\n\n if (payload.batch) {\n batched = true;\n payloads = zrUtil.map(payload.batch, function (item) {\n item = zrUtil.defaults(zrUtil.extend({}, item), payload);\n item.batch = null;\n return item;\n });\n }\n\n var eventObjBatch = [];\n var eventObj;\n var isHighDown = payloadType === 'highlight' || payloadType === 'downplay';\n each(payloads, function (batchItem) {\n // Action can specify the event by return it.\n eventObj = actionWrap.action(batchItem, this._model, this._api); // Emit event outside\n\n eventObj = eventObj || zrUtil.extend({}, batchItem); // Convert type to eventType\n\n eventObj.type = actionInfo.event || eventObj.type;\n eventObjBatch.push(eventObj); // light update does not perform data process, layout and visual.\n\n if (isHighDown) {\n // method, payload, mainType, subType\n updateDirectly(this, updateMethod, batchItem, 'series');\n } else if (cptType) {\n updateDirectly(this, updateMethod, batchItem, cptType.main, cptType.sub);\n }\n }, this);\n\n if (updateMethod !== 'none' && !isHighDown && !cptType) {\n // Still dirty\n if (this[OPTION_UPDATED]) {\n // FIXME Pass payload ?\n prepare(this);\n updateMethods.update.call(this, payload);\n this[OPTION_UPDATED] = false;\n } else {\n updateMethods[updateMethod].call(this, payload);\n }\n } // Follow the rule of action batch\n\n\n if (batched) {\n eventObj = {\n type: actionInfo.event || payloadType,\n escapeConnect: escapeConnect,\n batch: eventObjBatch\n };\n } else {\n eventObj = eventObjBatch[0];\n }\n\n this[IN_MAIN_PROCESS] = false;\n !silent && this._messageCenter.trigger(eventObj.type, eventObj);\n}\n\nfunction flushPendingActions(silent) {\n var pendingActions = this._pendingActions;\n\n while (pendingActions.length) {\n var payload = pendingActions.shift();\n doDispatchAction.call(this, payload, silent);\n }\n}\n\nfunction triggerUpdatedEvent(silent) {\n !silent && this.trigger('updated');\n}\n/**\n * Event `rendered` is triggered when zr\n * rendered. It is useful for realtime\n * snapshot (reflect animation).\n *\n * Event `finished` is triggered when:\n * (1) zrender rendering finished.\n * (2) initial animation finished.\n * (3) progressive rendering finished.\n * (4) no pending action.\n * (5) no delayed setOption needs to be processed.\n */\n\n\nfunction bindRenderedEvent(zr, ecIns) {\n zr.on('rendered', function () {\n ecIns.trigger('rendered'); // The `finished` event should not be triggered repeatly,\n // so it should only be triggered when rendering indeed happend\n // in zrender. (Consider the case that dipatchAction is keep\n // triggering when mouse move).\n\n if ( // Although zr is dirty if initial animation is not finished\n // and this checking is called on frame, we also check\n // animation finished for robustness.\n zr.animation.isFinished() && !ecIns[OPTION_UPDATED] && !ecIns._scheduler.unfinished && !ecIns._pendingActions.length) {\n ecIns.trigger('finished');\n }\n });\n}\n/**\n * @param {Object} params\n * @param {number} params.seriesIndex\n * @param {Array|TypedArray} params.data\n */\n\n\nechartsProto.appendData = function (params) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var seriesIndex = params.seriesIndex;\n var ecModel = this.getModel();\n var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\n seriesModel.appendData(params); // Note: `appendData` does not support that update extent of coordinate\n // system, util some scenario require that. In the expected usage of\n // `appendData`, the initial extent of coordinate system should better\n // be fixed by axis `min`/`max` setting or initial data, otherwise if\n // the extent changed while `appendData`, the location of the painted\n // graphic elements have to be changed, which make the usage of\n // `appendData` meaningless.\n\n this._scheduler.unfinished = true;\n};\n/**\n * Register event\n * @method\n */\n\n\nechartsProto.on = createRegisterEventWithLowercaseName('on', false);\nechartsProto.off = createRegisterEventWithLowercaseName('off', false);\nechartsProto.one = createRegisterEventWithLowercaseName('one', false);\n/**\n * Prepare view instances of charts and components\n * @param {module:echarts/model/Global} ecModel\n * @private\n */\n\nfunction prepareView(ecIns, type, ecModel, scheduler) {\n var isComponent = type === 'component';\n var viewList = isComponent ? ecIns._componentsViews : ecIns._chartsViews;\n var viewMap = isComponent ? ecIns._componentsMap : ecIns._chartsMap;\n var zr = ecIns._zr;\n var api = ecIns._api;\n\n for (var i = 0; i < viewList.length; i++) {\n viewList[i].__alive = false;\n }\n\n isComponent ? ecModel.eachComponent(function (componentType, model) {\n componentType !== 'series' && doPrepare(model);\n }) : ecModel.eachSeries(doPrepare);\n\n function doPrepare(model) {\n // Consider: id same and type changed.\n var viewId = '_ec_' + model.id + '_' + model.type;\n var view = viewMap[viewId];\n\n if (!view) {\n var classType = parseClassType(model.type);\n var Clazz = isComponent ? ComponentView.getClass(classType.main, classType.sub) : ChartView.getClass(classType.sub);\n view = new Clazz();\n view.init(ecModel, api);\n viewMap[viewId] = view;\n viewList.push(view);\n zr.add(view.group);\n }\n\n model.__viewId = view.__id = viewId;\n view.__alive = true;\n view.__model = model;\n view.group.__ecComponentInfo = {\n mainType: model.mainType,\n index: model.componentIndex\n };\n !isComponent && scheduler.prepareView(view, model, ecModel, api);\n }\n\n for (var i = 0; i < viewList.length;) {\n var view = viewList[i];\n\n if (!view.__alive) {\n !isComponent && view.renderTask.dispose();\n zr.remove(view.group);\n view.dispose(ecModel, api);\n viewList.splice(i, 1);\n delete viewMap[view.__id];\n view.__id = view.group.__ecComponentInfo = null;\n } else {\n i++;\n }\n }\n} // /**\n// * Encode visual infomation from data after data processing\n// *\n// * @param {module:echarts/model/Global} ecModel\n// * @param {object} layout\n// * @param {boolean} [layoutFilter] `true`: only layout,\n// * `false`: only not layout,\n// * `null`/`undefined`: all.\n// * @param {string} taskBaseTag\n// * @private\n// */\n// function startVisualEncoding(ecIns, ecModel, api, payload, layoutFilter) {\n// each(visualFuncs, function (visual, index) {\n// var isLayout = visual.isLayout;\n// if (layoutFilter == null\n// || (layoutFilter === false && !isLayout)\n// || (layoutFilter === true && isLayout)\n// ) {\n// visual.func(ecModel, api, payload);\n// }\n// });\n// }\n\n\nfunction clearColorPalette(ecModel) {\n ecModel.clearColorPalette();\n ecModel.eachSeries(function (seriesModel) {\n seriesModel.clearColorPalette();\n });\n}\n\nfunction render(ecIns, ecModel, api, payload) {\n renderComponents(ecIns, ecModel, api, payload);\n each(ecIns._chartsViews, function (chart) {\n chart.__alive = false;\n });\n renderSeries(ecIns, ecModel, api, payload); // Remove groups of unrendered charts\n\n each(ecIns._chartsViews, function (chart) {\n if (!chart.__alive) {\n chart.remove(ecModel, api);\n }\n });\n}\n\nfunction renderComponents(ecIns, ecModel, api, payload, dirtyList) {\n each(dirtyList || ecIns._componentsViews, function (componentView) {\n var componentModel = componentView.__model;\n componentView.render(componentModel, ecModel, api, payload);\n updateZ(componentModel, componentView);\n });\n}\n/**\n * Render each chart and component\n * @private\n */\n\n\nfunction renderSeries(ecIns, ecModel, api, payload, dirtyMap) {\n // Render all charts\n var scheduler = ecIns._scheduler;\n var unfinished;\n ecModel.eachSeries(function (seriesModel) {\n var chartView = ecIns._chartsMap[seriesModel.__viewId];\n chartView.__alive = true;\n var renderTask = chartView.renderTask;\n scheduler.updatePayload(renderTask, payload);\n\n if (dirtyMap && dirtyMap.get(seriesModel.uid)) {\n renderTask.dirty();\n }\n\n unfinished |= renderTask.perform(scheduler.getPerformArgs(renderTask));\n chartView.group.silent = !!seriesModel.get('silent');\n updateZ(seriesModel, chartView);\n updateBlend(seriesModel, chartView);\n });\n scheduler.unfinished |= unfinished; // If use hover layer\n\n updateHoverLayerStatus(ecIns, ecModel); // Add aria\n\n aria(ecIns._zr.dom, ecModel);\n}\n\nfunction performPostUpdateFuncs(ecModel, api) {\n each(postUpdateFuncs, function (func) {\n func(ecModel, api);\n });\n}\n\nvar MOUSE_EVENT_NAMES = ['click', 'dblclick', 'mouseover', 'mouseout', 'mousemove', 'mousedown', 'mouseup', 'globalout', 'contextmenu'];\n/**\n * @private\n */\n\nechartsProto._initEvents = function () {\n each(MOUSE_EVENT_NAMES, function (eveName) {\n var handler = function (e) {\n var ecModel = this.getModel();\n var el = e.target;\n var params;\n var isGlobalOut = eveName === 'globalout'; // no e.target when 'globalout'.\n\n if (isGlobalOut) {\n params = {};\n } else if (el && el.dataIndex != null) {\n var dataModel = el.dataModel || ecModel.getSeriesByIndex(el.seriesIndex);\n params = dataModel && dataModel.getDataParams(el.dataIndex, el.dataType, el) || {};\n } // If element has custom eventData of components\n else if (el && el.eventData) {\n params = zrUtil.extend({}, el.eventData);\n } // Contract: if params prepared in mouse event,\n // these properties must be specified:\n // {\n // componentType: string (component main type)\n // componentIndex: number\n // }\n // Otherwise event query can not work.\n\n\n if (params) {\n var componentType = params.componentType;\n var componentIndex = params.componentIndex; // Special handling for historic reason: when trigger by\n // markLine/markPoint/markArea, the componentType is\n // 'markLine'/'markPoint'/'markArea', but we should better\n // enable them to be queried by seriesIndex, since their\n // option is set in each series.\n\n if (componentType === 'markLine' || componentType === 'markPoint' || componentType === 'markArea') {\n componentType = 'series';\n componentIndex = params.seriesIndex;\n }\n\n var model = componentType && componentIndex != null && ecModel.getComponent(componentType, componentIndex);\n var view = model && this[model.mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId];\n params.event = e;\n params.type = eveName;\n this._ecEventProcessor.eventInfo = {\n targetEl: el,\n packedEvent: params,\n model: model,\n view: view\n };\n this.trigger(eveName, params);\n }\n }; // Consider that some component (like tooltip, brush, ...)\n // register zr event handler, but user event handler might\n // do anything, such as call `setOption` or `dispatchAction`,\n // which probably update any of the content and probably\n // cause problem if it is called previous other inner handlers.\n\n\n handler.zrEventfulCallAtLast = true;\n\n this._zr.on(eveName, handler, this);\n }, this);\n each(eventActionMap, function (actionType, eventType) {\n this._messageCenter.on(eventType, function (event) {\n this.trigger(eventType, event);\n }, this);\n }, this);\n};\n/**\n * @return {boolean}\n */\n\n\nechartsProto.isDisposed = function () {\n return this._disposed;\n};\n/**\n * Clear\n */\n\n\nechartsProto.clear = function () {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this.setOption({\n series: []\n }, true);\n};\n/**\n * Dispose instance\n */\n\n\nechartsProto.dispose = function () {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this._disposed = true;\n modelUtil.setAttribute(this.getDom(), DOM_ATTRIBUTE_KEY, '');\n var api = this._api;\n var ecModel = this._model;\n each(this._componentsViews, function (component) {\n component.dispose(ecModel, api);\n });\n each(this._chartsViews, function (chart) {\n chart.dispose(ecModel, api);\n }); // Dispose after all views disposed\n\n this._zr.dispose();\n\n delete instances[this.id];\n};\n\nzrUtil.mixin(ECharts, Eventful);\n\nfunction disposedWarning(id) {}\n\nfunction updateHoverLayerStatus(ecIns, ecModel) {\n var zr = ecIns._zr;\n var storage = zr.storage;\n var elCount = 0;\n storage.traverse(function (el) {\n elCount++;\n });\n\n if (elCount > ecModel.get('hoverLayerThreshold') && !env.node) {\n ecModel.eachSeries(function (seriesModel) {\n if (seriesModel.preventUsingHoverLayer) {\n return;\n }\n\n var chartView = ecIns._chartsMap[seriesModel.__viewId];\n\n if (chartView.__alive) {\n chartView.group.traverse(function (el) {\n // Don't switch back.\n el.useHoverLayer = true;\n });\n }\n });\n }\n}\n/**\n * Update chart progressive and blend.\n * @param {module:echarts/model/Series|module:echarts/model/Component} model\n * @param {module:echarts/view/Component|module:echarts/view/Chart} view\n */\n\n\nfunction updateBlend(seriesModel, chartView) {\n var blendMode = seriesModel.get('blendMode') || null;\n chartView.group.traverse(function (el) {\n // FIXME marker and other components\n if (!el.isGroup) {\n // Only set if blendMode is changed. In case element is incremental and don't wan't to rerender.\n if (el.style.blend !== blendMode) {\n el.setStyle('blend', blendMode);\n }\n }\n\n if (el.eachPendingDisplayable) {\n el.eachPendingDisplayable(function (displayable) {\n displayable.setStyle('blend', blendMode);\n });\n }\n });\n}\n/**\n * @param {module:echarts/model/Series|module:echarts/model/Component} model\n * @param {module:echarts/view/Component|module:echarts/view/Chart} view\n */\n\n\nfunction updateZ(model, view) {\n var z = model.get('z');\n var zlevel = model.get('zlevel'); // Set z and zlevel\n\n view.group.traverse(function (el) {\n if (el.type !== 'group') {\n z != null && (el.z = z);\n zlevel != null && (el.zlevel = zlevel);\n }\n });\n}\n\nfunction createExtensionAPI(ecInstance) {\n var coordSysMgr = ecInstance._coordSysMgr;\n return zrUtil.extend(new ExtensionAPI(ecInstance), {\n // Inject methods\n getCoordinateSystems: zrUtil.bind(coordSysMgr.getCoordinateSystems, coordSysMgr),\n getComponentByElement: function (el) {\n while (el) {\n var modelInfo = el.__ecComponentInfo;\n\n if (modelInfo != null) {\n return ecInstance._model.getComponent(modelInfo.mainType, modelInfo.index);\n }\n\n el = el.parent;\n }\n }\n });\n}\n/**\n * @class\n * Usage of query:\n * `chart.on('click', query, handler);`\n * The `query` can be:\n * + The component type query string, only `mainType` or `mainType.subType`,\n * like: 'xAxis', 'series', 'xAxis.category' or 'series.line'.\n * + The component query object, like:\n * `{seriesIndex: 2}`, `{seriesName: 'xx'}`, `{seriesId: 'some'}`,\n * `{xAxisIndex: 2}`, `{xAxisName: 'xx'}`, `{xAxisId: 'some'}`.\n * + The data query object, like:\n * `{dataIndex: 123}`, `{dataType: 'link'}`, `{name: 'some'}`.\n * + The other query object (cmponent customized query), like:\n * `{element: 'some'}` (only available in custom series).\n *\n * Caveat: If a prop in the `query` object is `null/undefined`, it is the\n * same as there is no such prop in the `query` object.\n */\n\n\nfunction EventProcessor() {\n // These info required: targetEl, packedEvent, model, view\n this.eventInfo;\n}\n\nEventProcessor.prototype = {\n constructor: EventProcessor,\n normalizeQuery: function (query) {\n var cptQuery = {};\n var dataQuery = {};\n var otherQuery = {}; // `query` is `mainType` or `mainType.subType` of component.\n\n if (zrUtil.isString(query)) {\n var condCptType = parseClassType(query); // `.main` and `.sub` may be ''.\n\n cptQuery.mainType = condCptType.main || null;\n cptQuery.subType = condCptType.sub || null;\n } // `query` is an object, convert to {mainType, index, name, id}.\n else {\n // `xxxIndex`, `xxxName`, `xxxId`, `name`, `dataIndex`, `dataType` is reserved,\n // can not be used in `compomentModel.filterForExposedEvent`.\n var suffixes = ['Index', 'Name', 'Id'];\n var dataKeys = {\n name: 1,\n dataIndex: 1,\n dataType: 1\n };\n zrUtil.each(query, function (val, key) {\n var reserved = false;\n\n for (var i = 0; i < suffixes.length; i++) {\n var propSuffix = suffixes[i];\n var suffixPos = key.lastIndexOf(propSuffix);\n\n if (suffixPos > 0 && suffixPos === key.length - propSuffix.length) {\n var mainType = key.slice(0, suffixPos); // Consider `dataIndex`.\n\n if (mainType !== 'data') {\n cptQuery.mainType = mainType;\n cptQuery[propSuffix.toLowerCase()] = val;\n reserved = true;\n }\n }\n }\n\n if (dataKeys.hasOwnProperty(key)) {\n dataQuery[key] = val;\n reserved = true;\n }\n\n if (!reserved) {\n otherQuery[key] = val;\n }\n });\n }\n\n return {\n cptQuery: cptQuery,\n dataQuery: dataQuery,\n otherQuery: otherQuery\n };\n },\n filter: function (eventType, query, args) {\n // They should be assigned before each trigger call.\n var eventInfo = this.eventInfo;\n\n if (!eventInfo) {\n return true;\n }\n\n var targetEl = eventInfo.targetEl;\n var packedEvent = eventInfo.packedEvent;\n var model = eventInfo.model;\n var view = eventInfo.view; // For event like 'globalout'.\n\n if (!model || !view) {\n return true;\n }\n\n var cptQuery = query.cptQuery;\n var dataQuery = query.dataQuery;\n return check(cptQuery, model, 'mainType') && check(cptQuery, model, 'subType') && check(cptQuery, model, 'index', 'componentIndex') && check(cptQuery, model, 'name') && check(cptQuery, model, 'id') && check(dataQuery, packedEvent, 'name') && check(dataQuery, packedEvent, 'dataIndex') && check(dataQuery, packedEvent, 'dataType') && (!view.filterForExposedEvent || view.filterForExposedEvent(eventType, query.otherQuery, targetEl, packedEvent));\n\n function check(query, host, prop, propOnHost) {\n return query[prop] == null || host[propOnHost || prop] === query[prop];\n }\n },\n afterTrigger: function () {\n // Make sure the eventInfo wont be used in next trigger.\n this.eventInfo = null;\n }\n};\n/**\n * @type {Object} key: actionType.\n * @inner\n */\n\nvar actions = {};\n/**\n * Map eventType to actionType\n * @type {Object}\n */\n\nvar eventActionMap = {};\n/**\n * Data processor functions of each stage\n * @type {Array.>}\n * @inner\n */\n\nvar dataProcessorFuncs = [];\n/**\n * @type {Array.}\n * @inner\n */\n\nvar optionPreprocessorFuncs = [];\n/**\n * @type {Array.}\n * @inner\n */\n\nvar postUpdateFuncs = [];\n/**\n * Visual encoding functions of each stage\n * @type {Array.>}\n */\n\nvar visualFuncs = [];\n/**\n * Theme storage\n * @type {Object.}\n */\n\nvar themeStorage = {};\n/**\n * Loading effects\n */\n\nvar loadingEffects = {};\nvar instances = {};\nvar connectedGroups = {};\nvar idBase = new Date() - 0;\nvar groupIdBase = new Date() - 0;\nvar DOM_ATTRIBUTE_KEY = '_echarts_instance_';\n\nfunction enableConnect(chart) {\n var STATUS_PENDING = 0;\n var STATUS_UPDATING = 1;\n var STATUS_UPDATED = 2;\n var STATUS_KEY = '__connectUpdateStatus';\n\n function updateConnectedChartsStatus(charts, status) {\n for (var i = 0; i < charts.length; i++) {\n var otherChart = charts[i];\n otherChart[STATUS_KEY] = status;\n }\n }\n\n each(eventActionMap, function (actionType, eventType) {\n chart._messageCenter.on(eventType, function (event) {\n if (connectedGroups[chart.group] && chart[STATUS_KEY] !== STATUS_PENDING) {\n if (event && event.escapeConnect) {\n return;\n }\n\n var action = chart.makeActionFromEvent(event);\n var otherCharts = [];\n each(instances, function (otherChart) {\n if (otherChart !== chart && otherChart.group === chart.group) {\n otherCharts.push(otherChart);\n }\n });\n updateConnectedChartsStatus(otherCharts, STATUS_PENDING);\n each(otherCharts, function (otherChart) {\n if (otherChart[STATUS_KEY] !== STATUS_UPDATING) {\n otherChart.dispatchAction(action);\n }\n });\n updateConnectedChartsStatus(otherCharts, STATUS_UPDATED);\n }\n });\n });\n}\n/**\n * @param {HTMLElement} dom\n * @param {Object} [theme]\n * @param {Object} opts\n * @param {number} [opts.devicePixelRatio] Use window.devicePixelRatio by default\n * @param {string} [opts.renderer] Can choose 'canvas' or 'svg' to render the chart.\n * @param {number} [opts.width] Use clientWidth of the input `dom` by default.\n * Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Use clientHeight of the input `dom` by default.\n * Can be 'auto' (the same as null/undefined)\n */\n\n\nfunction init(dom, theme, opts) {\n var existInstance = getInstanceByDom(dom);\n\n if (existInstance) {\n return existInstance;\n }\n\n var chart = new ECharts(dom, theme, opts);\n chart.id = 'ec_' + idBase++;\n instances[chart.id] = chart;\n modelUtil.setAttribute(dom, DOM_ATTRIBUTE_KEY, chart.id);\n enableConnect(chart);\n return chart;\n}\n/**\n * @return {string|Array.} groupId\n */\n\n\nfunction connect(groupId) {\n // Is array of charts\n if (zrUtil.isArray(groupId)) {\n var charts = groupId;\n groupId = null; // If any chart has group\n\n each(charts, function (chart) {\n if (chart.group != null) {\n groupId = chart.group;\n }\n });\n groupId = groupId || 'g_' + groupIdBase++;\n each(charts, function (chart) {\n chart.group = groupId;\n });\n }\n\n connectedGroups[groupId] = true;\n return groupId;\n}\n/**\n * @DEPRECATED\n * @return {string} groupId\n */\n\n\nfunction disConnect(groupId) {\n connectedGroups[groupId] = false;\n}\n/**\n * @return {string} groupId\n */\n\n\nvar disconnect = disConnect;\n/**\n * Dispose a chart instance\n * @param {module:echarts~ECharts|HTMLDomElement|string} chart\n */\n\nfunction dispose(chart) {\n if (typeof chart === 'string') {\n chart = instances[chart];\n } else if (!(chart instanceof ECharts)) {\n // Try to treat as dom\n chart = getInstanceByDom(chart);\n }\n\n if (chart instanceof ECharts && !chart.isDisposed()) {\n chart.dispose();\n }\n}\n/**\n * @param {HTMLElement} dom\n * @return {echarts~ECharts}\n */\n\n\nfunction getInstanceByDom(dom) {\n return instances[modelUtil.getAttribute(dom, DOM_ATTRIBUTE_KEY)];\n}\n/**\n * @param {string} key\n * @return {echarts~ECharts}\n */\n\n\nfunction getInstanceById(key) {\n return instances[key];\n}\n/**\n * Register theme\n */\n\n\nfunction registerTheme(name, theme) {\n themeStorage[name] = theme;\n}\n/**\n * Register option preprocessor\n * @param {Function} preprocessorFunc\n */\n\n\nfunction registerPreprocessor(preprocessorFunc) {\n optionPreprocessorFuncs.push(preprocessorFunc);\n}\n/**\n * @param {number} [priority=1000]\n * @param {Object|Function} processor\n */\n\n\nfunction registerProcessor(priority, processor) {\n normalizeRegister(dataProcessorFuncs, priority, processor, PRIORITY_PROCESSOR_FILTER);\n}\n/**\n * Register postUpdater\n * @param {Function} postUpdateFunc\n */\n\n\nfunction registerPostUpdate(postUpdateFunc) {\n postUpdateFuncs.push(postUpdateFunc);\n}\n/**\n * Usage:\n * registerAction('someAction', 'someEvent', function () { ... });\n * registerAction('someAction', function () { ... });\n * registerAction(\n * {type: 'someAction', event: 'someEvent', update: 'updateView'},\n * function () { ... }\n * );\n *\n * @param {(string|Object)} actionInfo\n * @param {string} actionInfo.type\n * @param {string} [actionInfo.event]\n * @param {string} [actionInfo.update]\n * @param {string} [eventName]\n * @param {Function} action\n */\n\n\nfunction registerAction(actionInfo, eventName, action) {\n if (typeof eventName === 'function') {\n action = eventName;\n eventName = '';\n }\n\n var actionType = isObject(actionInfo) ? actionInfo.type : [actionInfo, actionInfo = {\n event: eventName\n }][0]; // Event name is all lowercase\n\n actionInfo.event = (actionInfo.event || actionType).toLowerCase();\n eventName = actionInfo.event; // Validate action type and event name.\n\n assert(ACTION_REG.test(actionType) && ACTION_REG.test(eventName));\n\n if (!actions[actionType]) {\n actions[actionType] = {\n action: action,\n actionInfo: actionInfo\n };\n }\n\n eventActionMap[eventName] = actionType;\n}\n/**\n * @param {string} type\n * @param {*} CoordinateSystem\n */\n\n\nfunction registerCoordinateSystem(type, CoordinateSystem) {\n CoordinateSystemManager.register(type, CoordinateSystem);\n}\n/**\n * Get dimensions of specified coordinate system.\n * @param {string} type\n * @return {Array.}\n */\n\n\nfunction getCoordinateSystemDimensions(type) {\n var coordSysCreator = CoordinateSystemManager.get(type);\n\n if (coordSysCreator) {\n return coordSysCreator.getDimensionsInfo ? coordSysCreator.getDimensionsInfo() : coordSysCreator.dimensions.slice();\n }\n}\n/**\n * Layout is a special stage of visual encoding\n * Most visual encoding like color are common for different chart\n * But each chart has it's own layout algorithm\n *\n * @param {number} [priority=1000]\n * @param {Function} layoutTask\n */\n\n\nfunction registerLayout(priority, layoutTask) {\n normalizeRegister(visualFuncs, priority, layoutTask, PRIORITY_VISUAL_LAYOUT, 'layout');\n}\n/**\n * @param {number} [priority=3000]\n * @param {module:echarts/stream/Task} visualTask\n */\n\n\nfunction registerVisual(priority, visualTask) {\n normalizeRegister(visualFuncs, priority, visualTask, PRIORITY_VISUAL_CHART, 'visual');\n}\n/**\n * @param {Object|Function} fn: {seriesType, createOnAllSeries, performRawSeries, reset}\n */\n\n\nfunction normalizeRegister(targetList, priority, fn, defaultPriority, visualType) {\n if (isFunction(priority) || isObject(priority)) {\n fn = priority;\n priority = defaultPriority;\n }\n\n var stageHandler = Scheduler.wrapStageHandler(fn, visualType);\n stageHandler.__prio = priority;\n stageHandler.__raw = fn;\n targetList.push(stageHandler);\n return stageHandler;\n}\n/**\n * @param {string} name\n */\n\n\nfunction registerLoading(name, loadingFx) {\n loadingEffects[name] = loadingFx;\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendComponentModel(opts\n/*, superClass*/\n) {\n // var Clazz = ComponentModel;\n // if (superClass) {\n // var classType = parseClassType(superClass);\n // Clazz = ComponentModel.getClass(classType.main, classType.sub, true);\n // }\n return ComponentModel.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendComponentView(opts\n/*, superClass*/\n) {\n // var Clazz = ComponentView;\n // if (superClass) {\n // var classType = parseClassType(superClass);\n // Clazz = ComponentView.getClass(classType.main, classType.sub, true);\n // }\n return ComponentView.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendSeriesModel(opts\n/*, superClass*/\n) {\n // var Clazz = SeriesModel;\n // if (superClass) {\n // superClass = 'series.' + superClass.replace('series.', '');\n // var classType = parseClassType(superClass);\n // Clazz = ComponentModel.getClass(classType.main, classType.sub, true);\n // }\n return SeriesModel.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendChartView(opts\n/*, superClass*/\n) {\n // var Clazz = ChartView;\n // if (superClass) {\n // superClass = superClass.replace('series.', '');\n // var classType = parseClassType(superClass);\n // Clazz = ChartView.getClass(classType.main, true);\n // }\n return ChartView.extend(opts);\n}\n/**\n * ZRender need a canvas context to do measureText.\n * But in node environment canvas may be created by node-canvas.\n * So we need to specify how to create a canvas instead of using document.createElement('canvas')\n *\n * Be careful of using it in the browser.\n *\n * @param {Function} creator\n * @example\n * var Canvas = require('canvas');\n * var echarts = require('echarts');\n * echarts.setCanvasCreator(function () {\n * // Small size is enough.\n * return new Canvas(32, 32);\n * });\n */\n\n\nfunction setCanvasCreator(creator) {\n zrUtil.$override('createCanvas', creator);\n}\n/**\n * @param {string} mapName\n * @param {Array.|Object|string} geoJson\n * @param {Object} [specialAreas]\n *\n * @example GeoJSON\n * $.get('USA.json', function (geoJson) {\n * echarts.registerMap('USA', geoJson);\n * // Or\n * echarts.registerMap('USA', {\n * geoJson: geoJson,\n * specialAreas: {}\n * })\n * });\n *\n * $.get('airport.svg', function (svg) {\n * echarts.registerMap('airport', {\n * svg: svg\n * }\n * });\n *\n * echarts.registerMap('eu', [\n * {svg: eu-topographic.svg},\n * {geoJSON: eu.json}\n * ])\n */\n\n\nfunction registerMap(mapName, geoJson, specialAreas) {\n mapDataStorage.registerMap(mapName, geoJson, specialAreas);\n}\n/**\n * @param {string} mapName\n * @return {Object}\n */\n\n\nfunction getMap(mapName) {\n // For backward compatibility, only return the first one.\n var records = mapDataStorage.retrieveMap(mapName);\n return records && records[0] && {\n geoJson: records[0].geoJSON,\n specialAreas: records[0].specialAreas\n };\n}\n\nregisterVisual(PRIORITY_VISUAL_GLOBAL, seriesColor);\nregisterPreprocessor(backwardCompat);\nregisterProcessor(PRIORITY_PROCESSOR_DATASTACK, dataStack);\nregisterLoading('default', loadingDefault); // Default actions\n\nregisterAction({\n type: 'highlight',\n event: 'highlight',\n update: 'highlight'\n}, zrUtil.noop);\nregisterAction({\n type: 'downplay',\n event: 'downplay',\n update: 'downplay'\n}, zrUtil.noop); // Default theme\n\nregisterTheme('light', lightTheme);\nregisterTheme('dark', darkTheme); // For backward compatibility, where the namespace `dataTool` will\n// be mounted on `echarts` is the extension `dataTool` is imported.\n\nvar dataTool = {};\nexports.version = version;\nexports.dependencies = dependencies;\nexports.PRIORITY = PRIORITY;\nexports.init = init;\nexports.connect = connect;\nexports.disConnect = disConnect;\nexports.disconnect = disconnect;\nexports.dispose = dispose;\nexports.getInstanceByDom = getInstanceByDom;\nexports.getInstanceById = getInstanceById;\nexports.registerTheme = registerTheme;\nexports.registerPreprocessor = registerPreprocessor;\nexports.registerProcessor = registerProcessor;\nexports.registerPostUpdate = registerPostUpdate;\nexports.registerAction = registerAction;\nexports.registerCoordinateSystem = registerCoordinateSystem;\nexports.getCoordinateSystemDimensions = getCoordinateSystemDimensions;\nexports.registerLayout = registerLayout;\nexports.registerVisual = registerVisual;\nexports.registerLoading = registerLoading;\nexports.extendComponentModel = extendComponentModel;\nexports.extendComponentView = extendComponentView;\nexports.extendSeriesModel = extendSeriesModel;\nexports.extendChartView = extendChartView;\nexports.setCanvasCreator = setCanvasCreator;\nexports.registerMap = registerMap;\nexports.getMap = getMap;\nexports.dataTool = dataTool;\nvar ___ec_export = __webpack_require__(/*! ./export */ \"./node_modules/echarts/lib/export.js\");\n(function () {\n for (var key in ___ec_export) {\n if (___ec_export.hasOwnProperty(key)) {\n exports[key] = ___ec_export[key];\n }\n }\n})();\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/echarts.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/export.js": +/*!********************************************!*\ + !*** ./node_modules/echarts/lib/export.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrender = __webpack_require__(/*! zrender/lib/zrender */ \"./node_modules/zrender/lib/zrender.js\");\n\nexports.zrender = zrender;\n\nvar matrix = __webpack_require__(/*! zrender/lib/core/matrix */ \"./node_modules/zrender/lib/core/matrix.js\");\n\nexports.matrix = matrix;\n\nvar vector = __webpack_require__(/*! zrender/lib/core/vector */ \"./node_modules/zrender/lib/core/vector.js\");\n\nexports.vector = vector;\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar colorTool = __webpack_require__(/*! zrender/lib/tool/color */ \"./node_modules/zrender/lib/tool/color.js\");\n\nexports.color = colorTool;\n\nvar graphicUtil = __webpack_require__(/*! ./util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar numberUtil = __webpack_require__(/*! ./util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nexports.number = numberUtil;\n\nvar formatUtil = __webpack_require__(/*! ./util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\nexports.format = formatUtil;\n\nvar _throttle = __webpack_require__(/*! ./util/throttle */ \"./node_modules/echarts/lib/util/throttle.js\");\n\nvar throttle = _throttle.throttle;\nexports.throttle = _throttle.throttle;\n\nvar ecHelper = __webpack_require__(/*! ./helper */ \"./node_modules/echarts/lib/helper.js\");\n\nexports.helper = ecHelper;\n\nvar parseGeoJSON = __webpack_require__(/*! ./coord/geo/parseGeoJson */ \"./node_modules/echarts/lib/coord/geo/parseGeoJson.js\");\n\nexports.parseGeoJSON = parseGeoJSON;\n\nvar _List = __webpack_require__(/*! ./data/List */ \"./node_modules/echarts/lib/data/List.js\");\n\nexports.List = _List;\n\nvar _Model = __webpack_require__(/*! ./model/Model */ \"./node_modules/echarts/lib/model/Model.js\");\n\nexports.Model = _Model;\n\nvar _Axis = __webpack_require__(/*! ./coord/Axis */ \"./node_modules/echarts/lib/coord/Axis.js\");\n\nexports.Axis = _Axis;\n\nvar _env = __webpack_require__(/*! zrender/lib/core/env */ \"./node_modules/zrender/lib/core/env.js\");\n\nexports.env = _env;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Do not mount those modules on 'src/echarts' for better tree shaking.\n */\nvar parseGeoJson = parseGeoJSON;\nvar ecUtil = {};\nzrUtil.each(['map', 'each', 'filter', 'indexOf', 'inherits', 'reduce', 'filter', 'bind', 'curry', 'isArray', 'isString', 'isObject', 'isFunction', 'extend', 'defaults', 'clone', 'merge'], function (name) {\n ecUtil[name] = zrUtil[name];\n});\nvar graphic = {};\nzrUtil.each(['extendShape', 'extendPath', 'makePath', 'makeImage', 'mergePath', 'resizePath', 'createIcon', 'setHoverStyle', 'setLabelStyle', 'setTextStyle', 'setText', 'getFont', 'updateProps', 'initProps', 'getTransform', 'clipPointsByRect', 'clipRectByRect', 'registerShape', 'getShapeClass', 'Group', 'Image', 'Text', 'Circle', 'Sector', 'Ring', 'Polygon', 'Polyline', 'Rect', 'Line', 'BezierCurve', 'Arc', 'IncrementalDisplayable', 'CompoundPath', 'LinearGradient', 'RadialGradient', 'BoundingRect'], function (name) {\n graphic[name] = graphicUtil[name];\n});\nexports.parseGeoJson = parseGeoJson;\nexports.util = ecUtil;\nexports.graphic = graphic;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/export.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/helper.js": +/*!********************************************!*\ + !*** ./node_modules/echarts/lib/helper.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar createListFromArray = __webpack_require__(/*! ./chart/helper/createListFromArray */ \"./node_modules/echarts/lib/chart/helper/createListFromArray.js\");\n\nvar axisHelper = __webpack_require__(/*! ./coord/axisHelper */ \"./node_modules/echarts/lib/coord/axisHelper.js\");\n\nvar axisModelCommonMixin = __webpack_require__(/*! ./coord/axisModelCommonMixin */ \"./node_modules/echarts/lib/coord/axisModelCommonMixin.js\");\n\nvar Model = __webpack_require__(/*! ./model/Model */ \"./node_modules/echarts/lib/model/Model.js\");\n\nvar _layout = __webpack_require__(/*! ./util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar getLayoutRect = _layout.getLayoutRect;\nexports.getLayoutRect = _layout.getLayoutRect;\n\nvar _dataStackHelper = __webpack_require__(/*! ./data/helper/dataStackHelper */ \"./node_modules/echarts/lib/data/helper/dataStackHelper.js\");\n\nvar enableDataStack = _dataStackHelper.enableDataStack;\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\nvar getStackedDimension = _dataStackHelper.getStackedDimension;\n\nvar _completeDimensions = __webpack_require__(/*! ./data/helper/completeDimensions */ \"./node_modules/echarts/lib/data/helper/completeDimensions.js\");\n\nexports.completeDimensions = _completeDimensions;\n\nvar _createDimensions = __webpack_require__(/*! ./data/helper/createDimensions */ \"./node_modules/echarts/lib/data/helper/createDimensions.js\");\n\nexports.createDimensions = _createDimensions;\n\nvar _symbol = __webpack_require__(/*! ./util/symbol */ \"./node_modules/echarts/lib/util/symbol.js\");\n\nexports.createSymbol = _symbol.createSymbol;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// import createGraphFromNodeEdge from './chart/helper/createGraphFromNodeEdge';\n\n/**\n * Create a muti dimension List structure from seriesModel.\n * @param {module:echarts/model/Model} seriesModel\n * @return {module:echarts/data/List} list\n */\nfunction createList(seriesModel) {\n return createListFromArray(seriesModel.getSource(), seriesModel);\n} // export function createGraph(seriesModel) {\n// var nodes = seriesModel.get('data');\n// var links = seriesModel.get('links');\n// return createGraphFromNodeEdge(nodes, links, seriesModel);\n// }\n\n\nvar dataStack = {\n isDimensionStacked: isDimensionStacked,\n enableDataStack: enableDataStack,\n getStackedDimension: getStackedDimension\n};\n/**\n * Create a symbol element with given symbol configuration: shape, x, y, width, height, color\n * @param {string} symbolDesc\n * @param {number} x\n * @param {number} y\n * @param {number} w\n * @param {number} h\n * @param {string} color\n */\n\n/**\n * Create scale\n * @param {Array.} dataExtent\n * @param {Object|module:echarts/Model} option\n */\nfunction createScale(dataExtent, option) {\n var axisModel = option;\n\n if (!Model.isInstance(option)) {\n axisModel = new Model(option);\n zrUtil.mixin(axisModel, axisModelCommonMixin);\n }\n\n var scale = axisHelper.createScaleByModel(axisModel);\n scale.setExtent(dataExtent[0], dataExtent[1]);\n axisHelper.niceScaleExtent(scale, axisModel);\n return scale;\n}\n/**\n * Mixin common methods to axis model,\n *\n * Inlcude methods\n * `getFormattedLabels() => Array.`\n * `getCategories() => Array.`\n * `getMin(origin: boolean) => number`\n * `getMax(origin: boolean) => number`\n * `getNeedCrossZero() => boolean`\n * `setRange(start: number, end: number)`\n * `resetRange()`\n */\n\n\nfunction mixinAxisModelCommonMethods(Model) {\n zrUtil.mixin(Model, axisModelCommonMixin);\n}\n\nexports.createList = createList;\nexports.dataStack = dataStack;\nexports.createScale = createScale;\nexports.mixinAxisModelCommonMethods = mixinAxisModelCommonMethods;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/helper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/lang.js": +/*!******************************************!*\ + !*** ./node_modules/echarts/lib/lang.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Language: (Simplified) Chinese.\n */\nvar _default = {\n legend: {\n selector: {\n all: '全选',\n inverse: '反选'\n }\n },\n toolbox: {\n brush: {\n title: {\n rect: '矩形选择',\n polygon: '圈选',\n lineX: '横向选择',\n lineY: '纵向选择',\n keep: '保持选择',\n clear: '清除选择'\n }\n },\n dataView: {\n title: '数据视图',\n lang: ['数据视图', '关闭', '刷新']\n },\n dataZoom: {\n title: {\n zoom: '区域缩放',\n back: '区域缩放还原'\n }\n },\n magicType: {\n title: {\n line: '切换为折线图',\n bar: '切换为柱状图',\n stack: '切换为堆叠',\n tiled: '切换为平铺'\n }\n },\n restore: {\n title: '还原'\n },\n saveAsImage: {\n title: '保存为图片',\n lang: ['右键另存为图片']\n }\n },\n series: {\n typeNames: {\n pie: '饼图',\n bar: '柱状图',\n line: '折线图',\n scatter: '散点图',\n effectScatter: '涟漪散点图',\n radar: '雷达图',\n tree: '树图',\n treemap: '矩形树图',\n boxplot: '箱型图',\n candlestick: 'K线图',\n k: 'K线图',\n heatmap: '热力图',\n map: '地图',\n parallel: '平行坐标图',\n lines: '线图',\n graph: '关系图',\n sankey: '桑基图',\n funnel: '漏斗图',\n gauge: '仪表盘图',\n pictorialBar: '象形柱图',\n themeRiver: '主题河流图',\n sunburst: '旭日图'\n }\n },\n aria: {\n general: {\n withTitle: '这是一个关于“{title}”的图表。',\n withoutTitle: '这是一个图表,'\n },\n series: {\n single: {\n prefix: '',\n withName: '图表类型是{seriesType},表示{seriesName}。',\n withoutName: '图表类型是{seriesType}。'\n },\n multiple: {\n prefix: '它由{seriesCount}个图表系列组成。',\n withName: '第{seriesId}个系列是一个表示{seriesName}的{seriesType},',\n withoutName: '第{seriesId}个系列是一个{seriesType},',\n separator: {\n middle: ';',\n end: '。'\n }\n }\n },\n data: {\n allData: '其数据是——',\n partialData: '其中,前{displayCnt}项是——',\n withName: '{name}的数据是{value}',\n withoutName: '{value}',\n separator: {\n middle: ',',\n end: ''\n }\n }\n }\n};\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/lang.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/layout/barGrid.js": +/*!****************************************************!*\ + !*** ./node_modules/echarts/lib/layout/barGrid.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar _number = __webpack_require__(/*! ../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _dataStackHelper = __webpack_require__(/*! ../data/helper/dataStackHelper */ \"./node_modules/echarts/lib/data/helper/dataStackHelper.js\");\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\n\nvar createRenderPlanner = __webpack_require__(/*! ../chart/helper/createRenderPlanner */ \"./node_modules/echarts/lib/chart/helper/createRenderPlanner.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float32Array */\nvar STACK_PREFIX = '__ec_stack_';\nvar LARGE_BAR_MIN_WIDTH = 0.5;\nvar LargeArr = typeof Float32Array !== 'undefined' ? Float32Array : Array;\n\nfunction getSeriesStackId(seriesModel) {\n return seriesModel.get('stack') || STACK_PREFIX + seriesModel.seriesIndex;\n}\n\nfunction getAxisKey(axis) {\n return axis.dim + axis.index;\n}\n/**\n * @param {Object} opt\n * @param {module:echarts/coord/Axis} opt.axis Only support category axis currently.\n * @param {number} opt.count Positive interger.\n * @param {number} [opt.barWidth]\n * @param {number} [opt.barMaxWidth]\n * @param {number} [opt.barMinWidth]\n * @param {number} [opt.barGap]\n * @param {number} [opt.barCategoryGap]\n * @return {Object} {width, offset, offsetCenter} If axis.type is not 'category', return undefined.\n */\n\n\nfunction getLayoutOnAxis(opt) {\n var params = [];\n var baseAxis = opt.axis;\n var axisKey = 'axis0';\n\n if (baseAxis.type !== 'category') {\n return;\n }\n\n var bandWidth = baseAxis.getBandWidth();\n\n for (var i = 0; i < opt.count || 0; i++) {\n params.push(zrUtil.defaults({\n bandWidth: bandWidth,\n axisKey: axisKey,\n stackId: STACK_PREFIX + i\n }, opt));\n }\n\n var widthAndOffsets = doCalBarWidthAndOffset(params);\n var result = [];\n\n for (var i = 0; i < opt.count; i++) {\n var item = widthAndOffsets[axisKey][STACK_PREFIX + i];\n item.offsetCenter = item.offset + item.width / 2;\n result.push(item);\n }\n\n return result;\n}\n\nfunction prepareLayoutBarSeries(seriesType, ecModel) {\n var seriesModels = [];\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n // Check series coordinate, do layout for cartesian2d only\n if (isOnCartesian(seriesModel) && !isInLargeMode(seriesModel)) {\n seriesModels.push(seriesModel);\n }\n });\n return seriesModels;\n}\n/**\n * Map from (baseAxis.dim + '_' + baseAxis.index) to min gap of two adjacent\n * values.\n * This works for time axes, value axes, and log axes.\n * For a single time axis, return value is in the form like\n * {'x_0': [1000000]}.\n * The value of 1000000 is in milliseconds.\n */\n\n\nfunction getValueAxesMinGaps(barSeries) {\n /**\n * Map from axis.index to values.\n * For a single time axis, axisValues is in the form like\n * {'x_0': [1495555200000, 1495641600000, 1495728000000]}.\n * Items in axisValues[x], e.g. 1495555200000, are time values of all\n * series.\n */\n var axisValues = {};\n zrUtil.each(barSeries, function (seriesModel) {\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n\n if (baseAxis.type !== 'time' && baseAxis.type !== 'value') {\n return;\n }\n\n var data = seriesModel.getData();\n var key = baseAxis.dim + '_' + baseAxis.index;\n var dim = data.mapDimension(baseAxis.dim);\n\n for (var i = 0, cnt = data.count(); i < cnt; ++i) {\n var value = data.get(dim, i);\n\n if (!axisValues[key]) {\n // No previous data for the axis\n axisValues[key] = [value];\n } else {\n // No value in previous series\n axisValues[key].push(value);\n } // Ignore duplicated time values in the same axis\n\n }\n });\n var axisMinGaps = [];\n\n for (var key in axisValues) {\n if (axisValues.hasOwnProperty(key)) {\n var valuesInAxis = axisValues[key];\n\n if (valuesInAxis) {\n // Sort axis values into ascending order to calculate gaps\n valuesInAxis.sort(function (a, b) {\n return a - b;\n });\n var min = null;\n\n for (var j = 1; j < valuesInAxis.length; ++j) {\n var delta = valuesInAxis[j] - valuesInAxis[j - 1];\n\n if (delta > 0) {\n // Ignore 0 delta because they are of the same axis value\n min = min === null ? delta : Math.min(min, delta);\n }\n } // Set to null if only have one data\n\n\n axisMinGaps[key] = min;\n }\n }\n }\n\n return axisMinGaps;\n}\n\nfunction makeColumnLayout(barSeries) {\n var axisMinGaps = getValueAxesMinGaps(barSeries);\n var seriesInfoList = [];\n zrUtil.each(barSeries, function (seriesModel) {\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n var axisExtent = baseAxis.getExtent();\n var bandWidth;\n\n if (baseAxis.type === 'category') {\n bandWidth = baseAxis.getBandWidth();\n } else if (baseAxis.type === 'value' || baseAxis.type === 'time') {\n var key = baseAxis.dim + '_' + baseAxis.index;\n var minGap = axisMinGaps[key];\n var extentSpan = Math.abs(axisExtent[1] - axisExtent[0]);\n var scale = baseAxis.scale.getExtent();\n var scaleSpan = Math.abs(scale[1] - scale[0]);\n bandWidth = minGap ? extentSpan / scaleSpan * minGap : extentSpan; // When there is only one data value\n } else {\n var data = seriesModel.getData();\n bandWidth = Math.abs(axisExtent[1] - axisExtent[0]) / data.count();\n }\n\n var barWidth = parsePercent(seriesModel.get('barWidth'), bandWidth);\n var barMaxWidth = parsePercent(seriesModel.get('barMaxWidth'), bandWidth);\n var barMinWidth = parsePercent( // barMinWidth by default is 1 in cartesian. Because in value axis,\n // the auto-calculated bar width might be less than 1.\n seriesModel.get('barMinWidth') || 1, bandWidth);\n var barGap = seriesModel.get('barGap');\n var barCategoryGap = seriesModel.get('barCategoryGap');\n seriesInfoList.push({\n bandWidth: bandWidth,\n barWidth: barWidth,\n barMaxWidth: barMaxWidth,\n barMinWidth: barMinWidth,\n barGap: barGap,\n barCategoryGap: barCategoryGap,\n axisKey: getAxisKey(baseAxis),\n stackId: getSeriesStackId(seriesModel)\n });\n });\n return doCalBarWidthAndOffset(seriesInfoList);\n}\n\nfunction doCalBarWidthAndOffset(seriesInfoList) {\n // Columns info on each category axis. Key is cartesian name\n var columnsMap = {};\n zrUtil.each(seriesInfoList, function (seriesInfo, idx) {\n var axisKey = seriesInfo.axisKey;\n var bandWidth = seriesInfo.bandWidth;\n var columnsOnAxis = columnsMap[axisKey] || {\n bandWidth: bandWidth,\n remainedWidth: bandWidth,\n autoWidthCount: 0,\n categoryGap: '20%',\n gap: '30%',\n stacks: {}\n };\n var stacks = columnsOnAxis.stacks;\n columnsMap[axisKey] = columnsOnAxis;\n var stackId = seriesInfo.stackId;\n\n if (!stacks[stackId]) {\n columnsOnAxis.autoWidthCount++;\n }\n\n stacks[stackId] = stacks[stackId] || {\n width: 0,\n maxWidth: 0\n }; // Caution: In a single coordinate system, these barGrid attributes\n // will be shared by series. Consider that they have default values,\n // only the attributes set on the last series will work.\n // Do not change this fact unless there will be a break change.\n\n var barWidth = seriesInfo.barWidth;\n\n if (barWidth && !stacks[stackId].width) {\n // See #6312, do not restrict width.\n stacks[stackId].width = barWidth;\n barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);\n columnsOnAxis.remainedWidth -= barWidth;\n }\n\n var barMaxWidth = seriesInfo.barMaxWidth;\n barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);\n var barMinWidth = seriesInfo.barMinWidth;\n barMinWidth && (stacks[stackId].minWidth = barMinWidth);\n var barGap = seriesInfo.barGap;\n barGap != null && (columnsOnAxis.gap = barGap);\n var barCategoryGap = seriesInfo.barCategoryGap;\n barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap);\n });\n var result = {};\n zrUtil.each(columnsMap, function (columnsOnAxis, coordSysName) {\n result[coordSysName] = {};\n var stacks = columnsOnAxis.stacks;\n var bandWidth = columnsOnAxis.bandWidth;\n var categoryGap = parsePercent(columnsOnAxis.categoryGap, bandWidth);\n var barGapPercent = parsePercent(columnsOnAxis.gap, 1);\n var remainedWidth = columnsOnAxis.remainedWidth;\n var autoWidthCount = columnsOnAxis.autoWidthCount;\n var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n autoWidth = Math.max(autoWidth, 0); // Find if any auto calculated bar exceeded maxBarWidth\n\n zrUtil.each(stacks, function (column) {\n var maxWidth = column.maxWidth;\n var minWidth = column.minWidth;\n\n if (!column.width) {\n var finalWidth = autoWidth;\n\n if (maxWidth && maxWidth < finalWidth) {\n finalWidth = Math.min(maxWidth, remainedWidth);\n } // `minWidth` has higher priority. `minWidth` decide that wheter the\n // bar is able to be visible. So `minWidth` should not be restricted\n // by `maxWidth` or `remainedWidth` (which is from `bandWidth`). In\n // the extreme cases for `value` axis, bars are allowed to overlap\n // with each other if `minWidth` specified.\n\n\n if (minWidth && minWidth > finalWidth) {\n finalWidth = minWidth;\n }\n\n if (finalWidth !== autoWidth) {\n column.width = finalWidth;\n remainedWidth -= finalWidth + barGapPercent * finalWidth;\n autoWidthCount--;\n }\n } else {\n // `barMinWidth/barMaxWidth` has higher priority than `barWidth`, as\n // CSS does. Becuase barWidth can be a percent value, where\n // `barMaxWidth` can be used to restrict the final width.\n var finalWidth = column.width;\n\n if (maxWidth) {\n finalWidth = Math.min(finalWidth, maxWidth);\n } // `minWidth` has higher priority, as described above\n\n\n if (minWidth) {\n finalWidth = Math.max(finalWidth, minWidth);\n }\n\n column.width = finalWidth;\n remainedWidth -= finalWidth + barGapPercent * finalWidth;\n autoWidthCount--;\n }\n }); // Recalculate width again\n\n autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n autoWidth = Math.max(autoWidth, 0);\n var widthSum = 0;\n var lastColumn;\n zrUtil.each(stacks, function (column, idx) {\n if (!column.width) {\n column.width = autoWidth;\n }\n\n lastColumn = column;\n widthSum += column.width * (1 + barGapPercent);\n });\n\n if (lastColumn) {\n widthSum -= lastColumn.width * barGapPercent;\n }\n\n var offset = -widthSum / 2;\n zrUtil.each(stacks, function (column, stackId) {\n result[coordSysName][stackId] = result[coordSysName][stackId] || {\n bandWidth: bandWidth,\n offset: offset,\n width: column.width\n };\n offset += column.width * (1 + barGapPercent);\n });\n });\n return result;\n}\n/**\n * @param {Object} barWidthAndOffset The result of makeColumnLayout\n * @param {module:echarts/coord/Axis} axis\n * @param {module:echarts/model/Series} [seriesModel] If not provided, return all.\n * @return {Object} {stackId: {offset, width}} or {offset, width} if seriesModel provided.\n */\n\n\nfunction retrieveColumnLayout(barWidthAndOffset, axis, seriesModel) {\n if (barWidthAndOffset && axis) {\n var result = barWidthAndOffset[getAxisKey(axis)];\n\n if (result != null && seriesModel != null) {\n result = result[getSeriesStackId(seriesModel)];\n }\n\n return result;\n }\n}\n/**\n * @param {string} seriesType\n * @param {module:echarts/model/Global} ecModel\n */\n\n\nfunction layout(seriesType, ecModel) {\n var seriesModels = prepareLayoutBarSeries(seriesType, ecModel);\n var barWidthAndOffset = makeColumnLayout(seriesModels);\n var lastStackCoords = {};\n var lastStackCoordsOrigin = {};\n zrUtil.each(seriesModels, function (seriesModel) {\n var data = seriesModel.getData();\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n var stackId = getSeriesStackId(seriesModel);\n var columnLayoutInfo = barWidthAndOffset[getAxisKey(baseAxis)][stackId];\n var columnOffset = columnLayoutInfo.offset;\n var columnWidth = columnLayoutInfo.width;\n var valueAxis = cartesian.getOtherAxis(baseAxis);\n var barMinHeight = seriesModel.get('barMinHeight') || 0;\n lastStackCoords[stackId] = lastStackCoords[stackId] || [];\n lastStackCoordsOrigin[stackId] = lastStackCoordsOrigin[stackId] || []; // Fix #4243\n\n data.setLayout({\n bandWidth: columnLayoutInfo.bandWidth,\n offset: columnOffset,\n size: columnWidth\n });\n var valueDim = data.mapDimension(valueAxis.dim);\n var baseDim = data.mapDimension(baseAxis.dim);\n var stacked = isDimensionStacked(data, valueDim\n /*, baseDim*/\n );\n var isValueAxisH = valueAxis.isHorizontal();\n var valueAxisStart = getValueAxisStart(baseAxis, valueAxis, stacked);\n\n for (var idx = 0, len = data.count(); idx < len; idx++) {\n var value = data.get(valueDim, idx);\n var baseValue = data.get(baseDim, idx);\n var sign = value >= 0 ? 'p' : 'n';\n var baseCoord = valueAxisStart; // Because of the barMinHeight, we can not use the value in\n // stackResultDimension directly.\n\n if (stacked) {\n // Only ordinal axis can be stacked.\n if (!lastStackCoords[stackId][baseValue]) {\n lastStackCoords[stackId][baseValue] = {\n p: valueAxisStart,\n // Positive stack\n n: valueAxisStart // Negative stack\n\n };\n } // Should also consider #4243\n\n\n baseCoord = lastStackCoords[stackId][baseValue][sign];\n }\n\n var x;\n var y;\n var width;\n var height;\n\n if (isValueAxisH) {\n var coord = cartesian.dataToPoint([value, baseValue]);\n x = baseCoord;\n y = coord[1] + columnOffset;\n width = coord[0] - valueAxisStart;\n height = columnWidth;\n\n if (Math.abs(width) < barMinHeight) {\n width = (width < 0 ? -1 : 1) * barMinHeight;\n } // Ignore stack from NaN value\n\n\n if (!isNaN(width)) {\n stacked && (lastStackCoords[stackId][baseValue][sign] += width);\n }\n } else {\n var coord = cartesian.dataToPoint([baseValue, value]);\n x = coord[0] + columnOffset;\n y = baseCoord;\n width = columnWidth;\n height = coord[1] - valueAxisStart;\n\n if (Math.abs(height) < barMinHeight) {\n // Include zero to has a positive bar\n height = (height <= 0 ? -1 : 1) * barMinHeight;\n } // Ignore stack from NaN value\n\n\n if (!isNaN(height)) {\n stacked && (lastStackCoords[stackId][baseValue][sign] += height);\n }\n }\n\n data.setItemLayout(idx, {\n x: x,\n y: y,\n width: width,\n height: height\n });\n }\n }, this);\n} // TODO: Do not support stack in large mode yet.\n\n\nvar largeLayout = {\n seriesType: 'bar',\n plan: createRenderPlanner(),\n reset: function (seriesModel) {\n if (!isOnCartesian(seriesModel) || !isInLargeMode(seriesModel)) {\n return;\n }\n\n var data = seriesModel.getData();\n var cartesian = seriesModel.coordinateSystem;\n var coordLayout = cartesian.grid.getRect();\n var baseAxis = cartesian.getBaseAxis();\n var valueAxis = cartesian.getOtherAxis(baseAxis);\n var valueDim = data.mapDimension(valueAxis.dim);\n var baseDim = data.mapDimension(baseAxis.dim);\n var valueAxisHorizontal = valueAxis.isHorizontal();\n var valueDimIdx = valueAxisHorizontal ? 0 : 1;\n var barWidth = retrieveColumnLayout(makeColumnLayout([seriesModel]), baseAxis, seriesModel).width;\n\n if (!(barWidth > LARGE_BAR_MIN_WIDTH)) {\n // jshint ignore:line\n barWidth = LARGE_BAR_MIN_WIDTH;\n }\n\n return {\n progress: progress\n };\n\n function progress(params, data) {\n var count = params.count;\n var largePoints = new LargeArr(count * 2);\n var largeBackgroundPoints = new LargeArr(count * 2);\n var largeDataIndices = new LargeArr(count);\n var dataIndex;\n var coord = [];\n var valuePair = [];\n var pointsOffset = 0;\n var idxOffset = 0;\n\n while ((dataIndex = params.next()) != null) {\n valuePair[valueDimIdx] = data.get(valueDim, dataIndex);\n valuePair[1 - valueDimIdx] = data.get(baseDim, dataIndex);\n coord = cartesian.dataToPoint(valuePair, null, coord); // Data index might not be in order, depends on `progressiveChunkMode`.\n\n largeBackgroundPoints[pointsOffset] = valueAxisHorizontal ? coordLayout.x + coordLayout.width : coord[0];\n largePoints[pointsOffset++] = coord[0];\n largeBackgroundPoints[pointsOffset] = valueAxisHorizontal ? coord[1] : coordLayout.y + coordLayout.height;\n largePoints[pointsOffset++] = coord[1];\n largeDataIndices[idxOffset++] = dataIndex;\n }\n\n data.setLayout({\n largePoints: largePoints,\n largeDataIndices: largeDataIndices,\n largeBackgroundPoints: largeBackgroundPoints,\n barWidth: barWidth,\n valueAxisStart: getValueAxisStart(baseAxis, valueAxis, false),\n backgroundStart: valueAxisHorizontal ? coordLayout.x : coordLayout.y,\n valueAxisHorizontal: valueAxisHorizontal\n });\n }\n }\n};\n\nfunction isOnCartesian(seriesModel) {\n return seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'cartesian2d';\n}\n\nfunction isInLargeMode(seriesModel) {\n return seriesModel.pipelineContext && seriesModel.pipelineContext.large;\n} // See cases in `test/bar-start.html` and `#7412`, `#8747`.\n\n\nfunction getValueAxisStart(baseAxis, valueAxis, stacked) {\n return valueAxis.toGlobalCoord(valueAxis.dataToCoord(valueAxis.type === 'log' ? 1 : 0));\n}\n\nexports.getLayoutOnAxis = getLayoutOnAxis;\nexports.prepareLayoutBarSeries = prepareLayoutBarSeries;\nexports.makeColumnLayout = makeColumnLayout;\nexports.retrieveColumnLayout = retrieveColumnLayout;\nexports.layout = layout;\nexports.largeLayout = largeLayout;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/layout/barGrid.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/layout/barPolar.js": +/*!*****************************************************!*\ + !*** ./node_modules/echarts/lib/layout/barPolar.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar _number = __webpack_require__(/*! ../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _dataStackHelper = __webpack_require__(/*! ../data/helper/dataStackHelper */ \"./node_modules/echarts/lib/data/helper/dataStackHelper.js\");\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction getSeriesStackId(seriesModel) {\n return seriesModel.get('stack') || '__ec_stack_' + seriesModel.seriesIndex;\n}\n\nfunction getAxisKey(polar, axis) {\n return axis.dim + polar.model.componentIndex;\n}\n/**\n * @param {string} seriesType\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n\n\nfunction barLayoutPolar(seriesType, ecModel, api) {\n var lastStackCoords = {};\n var barWidthAndOffset = calRadialBar(zrUtil.filter(ecModel.getSeriesByType(seriesType), function (seriesModel) {\n return !ecModel.isSeriesFiltered(seriesModel) && seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'polar';\n }));\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n // Check series coordinate, do layout for polar only\n if (seriesModel.coordinateSystem.type !== 'polar') {\n return;\n }\n\n var data = seriesModel.getData();\n var polar = seriesModel.coordinateSystem;\n var baseAxis = polar.getBaseAxis();\n var axisKey = getAxisKey(polar, baseAxis);\n var stackId = getSeriesStackId(seriesModel);\n var columnLayoutInfo = barWidthAndOffset[axisKey][stackId];\n var columnOffset = columnLayoutInfo.offset;\n var columnWidth = columnLayoutInfo.width;\n var valueAxis = polar.getOtherAxis(baseAxis);\n var cx = seriesModel.coordinateSystem.cx;\n var cy = seriesModel.coordinateSystem.cy;\n var barMinHeight = seriesModel.get('barMinHeight') || 0;\n var barMinAngle = seriesModel.get('barMinAngle') || 0;\n lastStackCoords[stackId] = lastStackCoords[stackId] || [];\n var valueDim = data.mapDimension(valueAxis.dim);\n var baseDim = data.mapDimension(baseAxis.dim);\n var stacked = isDimensionStacked(data, valueDim\n /*, baseDim*/\n );\n var clampLayout = baseAxis.dim !== 'radius' || !seriesModel.get('roundCap', true);\n var valueAxisStart = valueAxis.dim === 'radius' ? valueAxis.dataToRadius(0) : valueAxis.dataToAngle(0);\n\n for (var idx = 0, len = data.count(); idx < len; idx++) {\n var value = data.get(valueDim, idx);\n var baseValue = data.get(baseDim, idx);\n var sign = value >= 0 ? 'p' : 'n';\n var baseCoord = valueAxisStart; // Because of the barMinHeight, we can not use the value in\n // stackResultDimension directly.\n // Only ordinal axis can be stacked.\n\n if (stacked) {\n if (!lastStackCoords[stackId][baseValue]) {\n lastStackCoords[stackId][baseValue] = {\n p: valueAxisStart,\n // Positive stack\n n: valueAxisStart // Negative stack\n\n };\n } // Should also consider #4243\n\n\n baseCoord = lastStackCoords[stackId][baseValue][sign];\n }\n\n var r0;\n var r;\n var startAngle;\n var endAngle; // radial sector\n\n if (valueAxis.dim === 'radius') {\n var radiusSpan = valueAxis.dataToRadius(value) - valueAxisStart;\n var angle = baseAxis.dataToAngle(baseValue);\n\n if (Math.abs(radiusSpan) < barMinHeight) {\n radiusSpan = (radiusSpan < 0 ? -1 : 1) * barMinHeight;\n }\n\n r0 = baseCoord;\n r = baseCoord + radiusSpan;\n startAngle = angle - columnOffset;\n endAngle = startAngle - columnWidth;\n stacked && (lastStackCoords[stackId][baseValue][sign] = r);\n } // tangential sector\n else {\n var angleSpan = valueAxis.dataToAngle(value, clampLayout) - valueAxisStart;\n var radius = baseAxis.dataToRadius(baseValue);\n\n if (Math.abs(angleSpan) < barMinAngle) {\n angleSpan = (angleSpan < 0 ? -1 : 1) * barMinAngle;\n }\n\n r0 = radius + columnOffset;\n r = r0 + columnWidth;\n startAngle = baseCoord;\n endAngle = baseCoord + angleSpan; // if the previous stack is at the end of the ring,\n // add a round to differentiate it from origin\n // var extent = angleAxis.getExtent();\n // var stackCoord = angle;\n // if (stackCoord === extent[0] && value > 0) {\n // stackCoord = extent[1];\n // }\n // else if (stackCoord === extent[1] && value < 0) {\n // stackCoord = extent[0];\n // }\n\n stacked && (lastStackCoords[stackId][baseValue][sign] = endAngle);\n }\n\n data.setItemLayout(idx, {\n cx: cx,\n cy: cy,\n r0: r0,\n r: r,\n // Consider that positive angle is anti-clockwise,\n // while positive radian of sector is clockwise\n startAngle: -startAngle * Math.PI / 180,\n endAngle: -endAngle * Math.PI / 180\n });\n }\n }, this);\n}\n/**\n * Calculate bar width and offset for radial bar charts\n */\n\n\nfunction calRadialBar(barSeries, api) {\n // Columns info on each category axis. Key is polar name\n var columnsMap = {};\n zrUtil.each(barSeries, function (seriesModel, idx) {\n var data = seriesModel.getData();\n var polar = seriesModel.coordinateSystem;\n var baseAxis = polar.getBaseAxis();\n var axisKey = getAxisKey(polar, baseAxis);\n var axisExtent = baseAxis.getExtent();\n var bandWidth = baseAxis.type === 'category' ? baseAxis.getBandWidth() : Math.abs(axisExtent[1] - axisExtent[0]) / data.count();\n var columnsOnAxis = columnsMap[axisKey] || {\n bandWidth: bandWidth,\n remainedWidth: bandWidth,\n autoWidthCount: 0,\n categoryGap: '20%',\n gap: '30%',\n stacks: {}\n };\n var stacks = columnsOnAxis.stacks;\n columnsMap[axisKey] = columnsOnAxis;\n var stackId = getSeriesStackId(seriesModel);\n\n if (!stacks[stackId]) {\n columnsOnAxis.autoWidthCount++;\n }\n\n stacks[stackId] = stacks[stackId] || {\n width: 0,\n maxWidth: 0\n };\n var barWidth = parsePercent(seriesModel.get('barWidth'), bandWidth);\n var barMaxWidth = parsePercent(seriesModel.get('barMaxWidth'), bandWidth);\n var barGap = seriesModel.get('barGap');\n var barCategoryGap = seriesModel.get('barCategoryGap');\n\n if (barWidth && !stacks[stackId].width) {\n barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);\n stacks[stackId].width = barWidth;\n columnsOnAxis.remainedWidth -= barWidth;\n }\n\n barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);\n barGap != null && (columnsOnAxis.gap = barGap);\n barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap);\n });\n var result = {};\n zrUtil.each(columnsMap, function (columnsOnAxis, coordSysName) {\n result[coordSysName] = {};\n var stacks = columnsOnAxis.stacks;\n var bandWidth = columnsOnAxis.bandWidth;\n var categoryGap = parsePercent(columnsOnAxis.categoryGap, bandWidth);\n var barGapPercent = parsePercent(columnsOnAxis.gap, 1);\n var remainedWidth = columnsOnAxis.remainedWidth;\n var autoWidthCount = columnsOnAxis.autoWidthCount;\n var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n autoWidth = Math.max(autoWidth, 0); // Find if any auto calculated bar exceeded maxBarWidth\n\n zrUtil.each(stacks, function (column, stack) {\n var maxWidth = column.maxWidth;\n\n if (maxWidth && maxWidth < autoWidth) {\n maxWidth = Math.min(maxWidth, remainedWidth);\n\n if (column.width) {\n maxWidth = Math.min(maxWidth, column.width);\n }\n\n remainedWidth -= maxWidth;\n column.width = maxWidth;\n autoWidthCount--;\n }\n }); // Recalculate width again\n\n autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n autoWidth = Math.max(autoWidth, 0);\n var widthSum = 0;\n var lastColumn;\n zrUtil.each(stacks, function (column, idx) {\n if (!column.width) {\n column.width = autoWidth;\n }\n\n lastColumn = column;\n widthSum += column.width * (1 + barGapPercent);\n });\n\n if (lastColumn) {\n widthSum -= lastColumn.width * barGapPercent;\n }\n\n var offset = -widthSum / 2;\n zrUtil.each(stacks, function (column, stackId) {\n result[coordSysName][stackId] = result[coordSysName][stackId] || {\n offset: offset,\n width: column.width\n };\n offset += column.width * (1 + barGapPercent);\n });\n });\n return result;\n}\n\nvar _default = barLayoutPolar;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/layout/barPolar.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/layout/points.js": +/*!***************************************************!*\ + !*** ./node_modules/echarts/lib/layout/points.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar map = _util.map;\n\nvar createRenderPlanner = __webpack_require__(/*! ../chart/helper/createRenderPlanner */ \"./node_modules/echarts/lib/chart/helper/createRenderPlanner.js\");\n\nvar _dataStackHelper = __webpack_require__(/*! ../data/helper/dataStackHelper */ \"./node_modules/echarts/lib/data/helper/dataStackHelper.js\");\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float32Array */\nfunction _default(seriesType) {\n return {\n seriesType: seriesType,\n plan: createRenderPlanner(),\n reset: function (seriesModel) {\n var data = seriesModel.getData();\n var coordSys = seriesModel.coordinateSystem;\n var pipelineContext = seriesModel.pipelineContext;\n var isLargeRender = pipelineContext.large;\n\n if (!coordSys) {\n return;\n }\n\n var dims = map(coordSys.dimensions, function (dim) {\n return data.mapDimension(dim);\n }).slice(0, 2);\n var dimLen = dims.length;\n var stackResultDim = data.getCalculationInfo('stackResultDimension');\n\n if (isDimensionStacked(data, dims[0]\n /*, dims[1]*/\n )) {\n dims[0] = stackResultDim;\n }\n\n if (isDimensionStacked(data, dims[1]\n /*, dims[0]*/\n )) {\n dims[1] = stackResultDim;\n }\n\n function progress(params, data) {\n var segCount = params.end - params.start;\n var points = isLargeRender && new Float32Array(segCount * dimLen);\n\n for (var i = params.start, offset = 0, tmpIn = [], tmpOut = []; i < params.end; i++) {\n var point;\n\n if (dimLen === 1) {\n var x = data.get(dims[0], i);\n point = !isNaN(x) && coordSys.dataToPoint(x, null, tmpOut);\n } else {\n var x = tmpIn[0] = data.get(dims[0], i);\n var y = tmpIn[1] = data.get(dims[1], i); // Also {Array.}, not undefined to avoid if...else... statement\n\n point = !isNaN(x) && !isNaN(y) && coordSys.dataToPoint(tmpIn, null, tmpOut);\n }\n\n if (isLargeRender) {\n points[offset++] = point ? point[0] : NaN;\n points[offset++] = point ? point[1] : NaN;\n } else {\n data.setItemLayout(i, point && point.slice() || [NaN, NaN]);\n }\n }\n\n isLargeRender && data.setLayout('symbolPoints', points);\n }\n\n return dimLen && {\n progress: progress\n };\n }\n };\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/layout/points.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/loading/default.js": +/*!*****************************************************!*\ + !*** ./node_modules/echarts/lib/loading/default.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar graphic = __webpack_require__(/*! ../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar textContain = __webpack_require__(/*! zrender/lib/contain/text */ \"./node_modules/zrender/lib/contain/text.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PI = Math.PI;\n/**\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} [opts]\n * @param {string} [opts.text]\n * @param {string} [opts.color]\n * @param {string} [opts.textColor]\n * @return {module:zrender/Element}\n */\n\nfunction _default(api, opts) {\n opts = opts || {};\n zrUtil.defaults(opts, {\n text: 'loading',\n textColor: '#000',\n fontSize: '12px',\n maskColor: 'rgba(255, 255, 255, 0.8)',\n showSpinner: true,\n color: '#c23531',\n spinnerRadius: 10,\n lineWidth: 5,\n zlevel: 0\n });\n var group = new graphic.Group();\n var mask = new graphic.Rect({\n style: {\n fill: opts.maskColor\n },\n zlevel: opts.zlevel,\n z: 10000\n });\n group.add(mask);\n var font = opts.fontSize + ' sans-serif';\n var labelRect = new graphic.Rect({\n style: {\n fill: 'none',\n text: opts.text,\n font: font,\n textPosition: 'right',\n textDistance: 10,\n textFill: opts.textColor\n },\n zlevel: opts.zlevel,\n z: 10001\n });\n group.add(labelRect);\n\n if (opts.showSpinner) {\n var arc = new graphic.Arc({\n shape: {\n startAngle: -PI / 2,\n endAngle: -PI / 2 + 0.1,\n r: opts.spinnerRadius\n },\n style: {\n stroke: opts.color,\n lineCap: 'round',\n lineWidth: opts.lineWidth\n },\n zlevel: opts.zlevel,\n z: 10001\n });\n arc.animateShape(true).when(1000, {\n endAngle: PI * 3 / 2\n }).start('circularInOut');\n arc.animateShape(true).when(1000, {\n startAngle: PI * 3 / 2\n }).delay(300).start('circularInOut');\n group.add(arc);\n } // Inject resize\n\n\n group.resize = function () {\n var textWidth = textContain.getWidth(opts.text, font);\n var r = opts.showSpinner ? opts.spinnerRadius : 0; // cx = (containerWidth - arcDiameter - textDistance - textWidth) / 2\n // textDistance needs to be calculated when both animation and text exist\n\n var cx = (api.getWidth() - r * 2 - (opts.showSpinner && textWidth ? 10 : 0) - textWidth) / 2 // only show the text\n - (opts.showSpinner ? 0 : textWidth / 2);\n var cy = api.getHeight() / 2;\n opts.showSpinner && arc.setShape({\n cx: cx,\n cy: cy\n });\n labelRect.setShape({\n x: cx - r,\n y: cy - r,\n width: r * 2,\n height: r * 2\n });\n mask.setShape({\n x: 0,\n y: 0,\n width: api.getWidth(),\n height: api.getHeight()\n });\n };\n\n group.resize();\n return group;\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/loading/default.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/model/Component.js": +/*!*****************************************************!*\ + !*** ./node_modules/echarts/lib/model/Component.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar Model = __webpack_require__(/*! ./Model */ \"./node_modules/echarts/lib/model/Model.js\");\n\nvar componentUtil = __webpack_require__(/*! ../util/component */ \"./node_modules/echarts/lib/util/component.js\");\n\nvar _clazz = __webpack_require__(/*! ../util/clazz */ \"./node_modules/echarts/lib/util/clazz.js\");\n\nvar enableClassManagement = _clazz.enableClassManagement;\nvar parseClassType = _clazz.parseClassType;\n\nvar _model = __webpack_require__(/*! ../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar makeInner = _model.makeInner;\n\nvar layout = __webpack_require__(/*! ../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar boxLayoutMixin = __webpack_require__(/*! ./mixin/boxLayout */ \"./node_modules/echarts/lib/model/mixin/boxLayout.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Component model\n *\n * @module echarts/model/Component\n */\nvar inner = makeInner();\n/**\n * @alias module:echarts/model/Component\n * @constructor\n * @param {Object} option\n * @param {module:echarts/model/Model} parentModel\n * @param {module:echarts/model/Model} ecModel\n */\n\nvar ComponentModel = Model.extend({\n type: 'component',\n\n /**\n * @readOnly\n * @type {string}\n */\n id: '',\n\n /**\n * Because simplified concept is probably better, series.name (or component.name)\n * has been having too many resposibilities:\n * (1) Generating id (which requires name in option should not be modified).\n * (2) As an index to mapping series when merging option or calling API (a name\n * can refer to more then one components, which is convinient is some case).\n * (3) Display.\n * @readOnly\n */\n name: '',\n\n /**\n * @readOnly\n * @type {string}\n */\n mainType: '',\n\n /**\n * @readOnly\n * @type {string}\n */\n subType: '',\n\n /**\n * @readOnly\n * @type {number}\n */\n componentIndex: 0,\n\n /**\n * @type {Object}\n * @protected\n */\n defaultOption: null,\n\n /**\n * @type {module:echarts/model/Global}\n * @readOnly\n */\n ecModel: null,\n\n /**\n * key: componentType\n * value: Component model list, can not be null.\n * @type {Object.>}\n * @readOnly\n */\n dependentModels: [],\n\n /**\n * @type {string}\n * @readOnly\n */\n uid: null,\n\n /**\n * Support merge layout params.\n * Only support 'box' now (left/right/top/bottom/width/height).\n * @type {string|Object} Object can be {ignoreSize: true}\n * @readOnly\n */\n layoutMode: null,\n $constructor: function (option, parentModel, ecModel, extraOpt) {\n Model.call(this, option, parentModel, ecModel, extraOpt);\n this.uid = componentUtil.getUID('ec_cpt_model');\n },\n init: function (option, parentModel, ecModel, extraOpt) {\n this.mergeDefaultAndTheme(option, ecModel);\n },\n mergeDefaultAndTheme: function (option, ecModel) {\n var layoutMode = this.layoutMode;\n var inputPositionParams = layoutMode ? layout.getLayoutParams(option) : {};\n var themeModel = ecModel.getTheme();\n zrUtil.merge(option, themeModel.get(this.mainType));\n zrUtil.merge(option, this.getDefaultOption());\n\n if (layoutMode) {\n layout.mergeLayoutParam(option, inputPositionParams, layoutMode);\n }\n },\n mergeOption: function (option, extraOpt) {\n zrUtil.merge(this.option, option, true);\n var layoutMode = this.layoutMode;\n\n if (layoutMode) {\n layout.mergeLayoutParam(this.option, option, layoutMode);\n }\n },\n // Hooker after init or mergeOption\n optionUpdated: function (newCptOption, isInit) {},\n getDefaultOption: function () {\n var fields = inner(this);\n\n if (!fields.defaultOption) {\n var optList = [];\n var Class = this.constructor;\n\n while (Class) {\n var opt = Class.prototype.defaultOption;\n opt && optList.push(opt);\n Class = Class.superClass;\n }\n\n var defaultOption = {};\n\n for (var i = optList.length - 1; i >= 0; i--) {\n defaultOption = zrUtil.merge(defaultOption, optList[i], true);\n }\n\n fields.defaultOption = defaultOption;\n }\n\n return fields.defaultOption;\n },\n getReferringComponents: function (mainType) {\n return this.ecModel.queryComponents({\n mainType: mainType,\n index: this.get(mainType + 'Index', true),\n id: this.get(mainType + 'Id', true)\n });\n }\n}); // Reset ComponentModel.extend, add preConstruct.\n// clazzUtil.enableClassExtend(\n// ComponentModel,\n// function (option, parentModel, ecModel, extraOpt) {\n// // Set dependentModels, componentIndex, name, id, mainType, subType.\n// zrUtil.extend(this, extraOpt);\n// this.uid = componentUtil.getUID('componentModel');\n// // this.setReadOnly([\n// // 'type', 'id', 'uid', 'name', 'mainType', 'subType',\n// // 'dependentModels', 'componentIndex'\n// // ]);\n// }\n// );\n// Add capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.\n\nenableClassManagement(ComponentModel, {\n registerWhenExtend: true\n});\ncomponentUtil.enableSubTypeDefaulter(ComponentModel); // Add capability of ComponentModel.topologicalTravel.\n\ncomponentUtil.enableTopologicalTravel(ComponentModel, getDependencies);\n\nfunction getDependencies(componentType) {\n var deps = [];\n zrUtil.each(ComponentModel.getClassesByMainType(componentType), function (Clazz) {\n deps = deps.concat(Clazz.prototype.dependencies || []);\n }); // Ensure main type.\n\n deps = zrUtil.map(deps, function (type) {\n return parseClassType(type).main;\n }); // Hack dataset for convenience.\n\n if (componentType !== 'dataset' && zrUtil.indexOf(deps, 'dataset') <= 0) {\n deps.unshift('dataset');\n }\n\n return deps;\n}\n\nzrUtil.mixin(ComponentModel, boxLayoutMixin);\nvar _default = ComponentModel;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/model/Component.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/model/Global.js": +/*!**************************************************!*\ + !*** ./node_modules/echarts/lib/model/Global.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar each = _util.each;\nvar filter = _util.filter;\nvar map = _util.map;\nvar isArray = _util.isArray;\nvar indexOf = _util.indexOf;\nvar isObject = _util.isObject;\nvar isString = _util.isString;\nvar createHashMap = _util.createHashMap;\nvar assert = _util.assert;\nvar clone = _util.clone;\nvar merge = _util.merge;\nvar extend = _util.extend;\nvar mixin = _util.mixin;\n\nvar modelUtil = __webpack_require__(/*! ../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar Model = __webpack_require__(/*! ./Model */ \"./node_modules/echarts/lib/model/Model.js\");\n\nvar ComponentModel = __webpack_require__(/*! ./Component */ \"./node_modules/echarts/lib/model/Component.js\");\n\nvar globalDefault = __webpack_require__(/*! ./globalDefault */ \"./node_modules/echarts/lib/model/globalDefault.js\");\n\nvar colorPaletteMixin = __webpack_require__(/*! ./mixin/colorPalette */ \"./node_modules/echarts/lib/model/mixin/colorPalette.js\");\n\nvar _sourceHelper = __webpack_require__(/*! ../data/helper/sourceHelper */ \"./node_modules/echarts/lib/data/helper/sourceHelper.js\");\n\nvar resetSourceDefaulter = _sourceHelper.resetSourceDefaulter;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * ECharts global model\n *\n * @module {echarts/model/Global}\n */\n\n/**\n * Caution: If the mechanism should be changed some day, these cases\n * should be considered:\n *\n * (1) In `merge option` mode, if using the same option to call `setOption`\n * many times, the result should be the same (try our best to ensure that).\n * (2) In `merge option` mode, if a component has no id/name specified, it\n * will be merged by index, and the result sequence of the components is\n * consistent to the original sequence.\n * (3) `reset` feature (in toolbox). Find detailed info in comments about\n * `mergeOption` in module:echarts/model/OptionManager.\n */\nvar OPTION_INNER_KEY = '\\0_ec_inner';\n/**\n * @alias module:echarts/model/Global\n *\n * @param {Object} option\n * @param {module:echarts/model/Model} parentModel\n * @param {Object} theme\n */\n\nvar GlobalModel = Model.extend({\n init: function (option, parentModel, theme, optionManager) {\n theme = theme || {};\n this.option = null; // Mark as not initialized.\n\n /**\n * @type {module:echarts/model/Model}\n * @private\n */\n\n this._theme = new Model(theme);\n /**\n * @type {module:echarts/model/OptionManager}\n */\n\n this._optionManager = optionManager;\n },\n setOption: function (option, optionPreprocessorFuncs) {\n assert(!(OPTION_INNER_KEY in option), 'please use chart.getOption()');\n\n this._optionManager.setOption(option, optionPreprocessorFuncs);\n\n this.resetOption(null);\n },\n\n /**\n * @param {string} type null/undefined: reset all.\n * 'recreate': force recreate all.\n * 'timeline': only reset timeline option\n * 'media': only reset media query option\n * @return {boolean} Whether option changed.\n */\n resetOption: function (type) {\n var optionChanged = false;\n var optionManager = this._optionManager;\n\n if (!type || type === 'recreate') {\n var baseOption = optionManager.mountOption(type === 'recreate');\n\n if (!this.option || type === 'recreate') {\n initBase.call(this, baseOption);\n } else {\n this.restoreData();\n this.mergeOption(baseOption);\n }\n\n optionChanged = true;\n }\n\n if (type === 'timeline' || type === 'media') {\n this.restoreData();\n }\n\n if (!type || type === 'recreate' || type === 'timeline') {\n var timelineOption = optionManager.getTimelineOption(this);\n timelineOption && (this.mergeOption(timelineOption), optionChanged = true);\n }\n\n if (!type || type === 'recreate' || type === 'media') {\n var mediaOptions = optionManager.getMediaOption(this, this._api);\n\n if (mediaOptions.length) {\n each(mediaOptions, function (mediaOption) {\n this.mergeOption(mediaOption, optionChanged = true);\n }, this);\n }\n }\n\n return optionChanged;\n },\n\n /**\n * @protected\n */\n mergeOption: function (newOption) {\n var option = this.option;\n var componentsMap = this._componentsMap;\n var newCptTypes = [];\n resetSourceDefaulter(this); // If no component class, merge directly.\n // For example: color, animaiton options, etc.\n\n each(newOption, function (componentOption, mainType) {\n if (componentOption == null) {\n return;\n }\n\n if (!ComponentModel.hasClass(mainType)) {\n // globalSettingTask.dirty();\n option[mainType] = option[mainType] == null ? clone(componentOption) : merge(option[mainType], componentOption, true);\n } else if (mainType) {\n newCptTypes.push(mainType);\n }\n });\n ComponentModel.topologicalTravel(newCptTypes, ComponentModel.getAllClassMainTypes(), visitComponent, this);\n\n function visitComponent(mainType, dependencies) {\n var newCptOptionList = modelUtil.normalizeToArray(newOption[mainType]);\n var mapResult = modelUtil.mappingToExists(componentsMap.get(mainType), newCptOptionList);\n modelUtil.makeIdAndName(mapResult); // Set mainType and complete subType.\n\n each(mapResult, function (item, index) {\n var opt = item.option;\n\n if (isObject(opt)) {\n item.keyInfo.mainType = mainType;\n item.keyInfo.subType = determineSubType(mainType, opt, item.exist);\n }\n });\n var dependentModels = getComponentsByTypes(componentsMap, dependencies);\n option[mainType] = [];\n componentsMap.set(mainType, []);\n each(mapResult, function (resultItem, index) {\n var componentModel = resultItem.exist;\n var newCptOption = resultItem.option;\n assert(isObject(newCptOption) || componentModel, 'Empty component definition'); // Consider where is no new option and should be merged using {},\n // see removeEdgeAndAdd in topologicalTravel and\n // ComponentModel.getAllClassMainTypes.\n\n if (!newCptOption) {\n componentModel.mergeOption({}, this);\n componentModel.optionUpdated({}, false);\n } else {\n var ComponentModelClass = ComponentModel.getClass(mainType, resultItem.keyInfo.subType, true);\n\n if (componentModel && componentModel.constructor === ComponentModelClass) {\n componentModel.name = resultItem.keyInfo.name; // componentModel.settingTask && componentModel.settingTask.dirty();\n\n componentModel.mergeOption(newCptOption, this);\n componentModel.optionUpdated(newCptOption, false);\n } else {\n // PENDING Global as parent ?\n var extraOpt = extend({\n dependentModels: dependentModels,\n componentIndex: index\n }, resultItem.keyInfo);\n componentModel = new ComponentModelClass(newCptOption, this, this, extraOpt);\n extend(componentModel, extraOpt);\n componentModel.init(newCptOption, this, this, extraOpt); // Call optionUpdated after init.\n // newCptOption has been used as componentModel.option\n // and may be merged with theme and default, so pass null\n // to avoid confusion.\n\n componentModel.optionUpdated(null, true);\n }\n }\n\n componentsMap.get(mainType)[index] = componentModel;\n option[mainType][index] = componentModel.option;\n }, this); // Backup series for filtering.\n\n if (mainType === 'series') {\n createSeriesIndices(this, componentsMap.get('series'));\n }\n }\n\n this._seriesIndicesMap = createHashMap(this._seriesIndices = this._seriesIndices || []);\n },\n\n /**\n * Get option for output (cloned option and inner info removed)\n * @public\n * @return {Object}\n */\n getOption: function () {\n var option = clone(this.option);\n each(option, function (opts, mainType) {\n if (ComponentModel.hasClass(mainType)) {\n var opts = modelUtil.normalizeToArray(opts);\n\n for (var i = opts.length - 1; i >= 0; i--) {\n // Remove options with inner id.\n if (modelUtil.isIdInner(opts[i])) {\n opts.splice(i, 1);\n }\n }\n\n option[mainType] = opts;\n }\n });\n delete option[OPTION_INNER_KEY];\n return option;\n },\n\n /**\n * @return {module:echarts/model/Model}\n */\n getTheme: function () {\n return this._theme;\n },\n\n /**\n * @param {string} mainType\n * @param {number} [idx=0]\n * @return {module:echarts/model/Component}\n */\n getComponent: function (mainType, idx) {\n var list = this._componentsMap.get(mainType);\n\n if (list) {\n return list[idx || 0];\n }\n },\n\n /**\n * If none of index and id and name used, return all components with mainType.\n * @param {Object} condition\n * @param {string} condition.mainType\n * @param {string} [condition.subType] If ignore, only query by mainType\n * @param {number|Array.} [condition.index] Either input index or id or name.\n * @param {string|Array.} [condition.id] Either input index or id or name.\n * @param {string|Array.} [condition.name] Either input index or id or name.\n * @return {Array.}\n */\n queryComponents: function (condition) {\n var mainType = condition.mainType;\n\n if (!mainType) {\n return [];\n }\n\n var index = condition.index;\n var id = condition.id;\n var name = condition.name;\n\n var cpts = this._componentsMap.get(mainType);\n\n if (!cpts || !cpts.length) {\n return [];\n }\n\n var result;\n\n if (index != null) {\n if (!isArray(index)) {\n index = [index];\n }\n\n result = filter(map(index, function (idx) {\n return cpts[idx];\n }), function (val) {\n return !!val;\n });\n } else if (id != null) {\n var isIdArray = isArray(id);\n result = filter(cpts, function (cpt) {\n return isIdArray && indexOf(id, cpt.id) >= 0 || !isIdArray && cpt.id === id;\n });\n } else if (name != null) {\n var isNameArray = isArray(name);\n result = filter(cpts, function (cpt) {\n return isNameArray && indexOf(name, cpt.name) >= 0 || !isNameArray && cpt.name === name;\n });\n } else {\n // Return all components with mainType\n result = cpts.slice();\n }\n\n return filterBySubType(result, condition);\n },\n\n /**\n * The interface is different from queryComponents,\n * which is convenient for inner usage.\n *\n * @usage\n * var result = findComponents(\n * {mainType: 'dataZoom', query: {dataZoomId: 'abc'}}\n * );\n * var result = findComponents(\n * {mainType: 'series', subType: 'pie', query: {seriesName: 'uio'}}\n * );\n * var result = findComponents(\n * {mainType: 'series',\n * filter: function (model, index) {...}}\n * );\n * // result like [component0, componnet1, ...]\n *\n * @param {Object} condition\n * @param {string} condition.mainType Mandatory.\n * @param {string} [condition.subType] Optional.\n * @param {Object} [condition.query] like {xxxIndex, xxxId, xxxName},\n * where xxx is mainType.\n * If query attribute is null/undefined or has no index/id/name,\n * do not filtering by query conditions, which is convenient for\n * no-payload situations or when target of action is global.\n * @param {Function} [condition.filter] parameter: component, return boolean.\n * @return {Array.}\n */\n findComponents: function (condition) {\n var query = condition.query;\n var mainType = condition.mainType;\n var queryCond = getQueryCond(query);\n var result = queryCond ? this.queryComponents(queryCond) : this._componentsMap.get(mainType);\n return doFilter(filterBySubType(result, condition));\n\n function getQueryCond(q) {\n var indexAttr = mainType + 'Index';\n var idAttr = mainType + 'Id';\n var nameAttr = mainType + 'Name';\n return q && (q[indexAttr] != null || q[idAttr] != null || q[nameAttr] != null) ? {\n mainType: mainType,\n // subType will be filtered finally.\n index: q[indexAttr],\n id: q[idAttr],\n name: q[nameAttr]\n } : null;\n }\n\n function doFilter(res) {\n return condition.filter ? filter(res, condition.filter) : res;\n }\n },\n\n /**\n * @usage\n * eachComponent('legend', function (legendModel, index) {\n * ...\n * });\n * eachComponent(function (componentType, model, index) {\n * // componentType does not include subType\n * // (componentType is 'xxx' but not 'xxx.aa')\n * });\n * eachComponent(\n * {mainType: 'dataZoom', query: {dataZoomId: 'abc'}},\n * function (model, index) {...}\n * );\n * eachComponent(\n * {mainType: 'series', subType: 'pie', query: {seriesName: 'uio'}},\n * function (model, index) {...}\n * );\n *\n * @param {string|Object=} mainType When mainType is object, the definition\n * is the same as the method 'findComponents'.\n * @param {Function} cb\n * @param {*} context\n */\n eachComponent: function (mainType, cb, context) {\n var componentsMap = this._componentsMap;\n\n if (typeof mainType === 'function') {\n context = cb;\n cb = mainType;\n componentsMap.each(function (components, componentType) {\n each(components, function (component, index) {\n cb.call(context, componentType, component, index);\n });\n });\n } else if (isString(mainType)) {\n each(componentsMap.get(mainType), cb, context);\n } else if (isObject(mainType)) {\n var queryResult = this.findComponents(mainType);\n each(queryResult, cb, context);\n }\n },\n\n /**\n * @param {string} name\n * @return {Array.}\n */\n getSeriesByName: function (name) {\n var series = this._componentsMap.get('series');\n\n return filter(series, function (oneSeries) {\n return oneSeries.name === name;\n });\n },\n\n /**\n * @param {number} seriesIndex\n * @return {module:echarts/model/Series}\n */\n getSeriesByIndex: function (seriesIndex) {\n return this._componentsMap.get('series')[seriesIndex];\n },\n\n /**\n * Get series list before filtered by type.\n * FIXME: rename to getRawSeriesByType?\n *\n * @param {string} subType\n * @return {Array.}\n */\n getSeriesByType: function (subType) {\n var series = this._componentsMap.get('series');\n\n return filter(series, function (oneSeries) {\n return oneSeries.subType === subType;\n });\n },\n\n /**\n * @return {Array.}\n */\n getSeries: function () {\n return this._componentsMap.get('series').slice();\n },\n\n /**\n * @return {number}\n */\n getSeriesCount: function () {\n return this._componentsMap.get('series').length;\n },\n\n /**\n * After filtering, series may be different\n * frome raw series.\n *\n * @param {Function} cb\n * @param {*} context\n */\n eachSeries: function (cb, context) {\n assertSeriesInitialized(this);\n each(this._seriesIndices, function (rawSeriesIndex) {\n var series = this._componentsMap.get('series')[rawSeriesIndex];\n\n cb.call(context, series, rawSeriesIndex);\n }, this);\n },\n\n /**\n * Iterate raw series before filtered.\n *\n * @param {Function} cb\n * @param {*} context\n */\n eachRawSeries: function (cb, context) {\n each(this._componentsMap.get('series'), cb, context);\n },\n\n /**\n * After filtering, series may be different.\n * frome raw series.\n *\n * @param {string} subType.\n * @param {Function} cb\n * @param {*} context\n */\n eachSeriesByType: function (subType, cb, context) {\n assertSeriesInitialized(this);\n each(this._seriesIndices, function (rawSeriesIndex) {\n var series = this._componentsMap.get('series')[rawSeriesIndex];\n\n if (series.subType === subType) {\n cb.call(context, series, rawSeriesIndex);\n }\n }, this);\n },\n\n /**\n * Iterate raw series before filtered of given type.\n *\n * @parma {string} subType\n * @param {Function} cb\n * @param {*} context\n */\n eachRawSeriesByType: function (subType, cb, context) {\n return each(this.getSeriesByType(subType), cb, context);\n },\n\n /**\n * @param {module:echarts/model/Series} seriesModel\n */\n isSeriesFiltered: function (seriesModel) {\n assertSeriesInitialized(this);\n return this._seriesIndicesMap.get(seriesModel.componentIndex) == null;\n },\n\n /**\n * @return {Array.}\n */\n getCurrentSeriesIndices: function () {\n return (this._seriesIndices || []).slice();\n },\n\n /**\n * @param {Function} cb\n * @param {*} context\n */\n filterSeries: function (cb, context) {\n assertSeriesInitialized(this);\n var filteredSeries = filter(this._componentsMap.get('series'), cb, context);\n createSeriesIndices(this, filteredSeries);\n },\n restoreData: function (payload) {\n var componentsMap = this._componentsMap;\n createSeriesIndices(this, componentsMap.get('series'));\n var componentTypes = [];\n componentsMap.each(function (components, componentType) {\n componentTypes.push(componentType);\n });\n ComponentModel.topologicalTravel(componentTypes, ComponentModel.getAllClassMainTypes(), function (componentType, dependencies) {\n each(componentsMap.get(componentType), function (component) {\n (componentType !== 'series' || !isNotTargetSeries(component, payload)) && component.restoreData();\n });\n });\n }\n});\n\nfunction isNotTargetSeries(seriesModel, payload) {\n if (payload) {\n var index = payload.seiresIndex;\n var id = payload.seriesId;\n var name = payload.seriesName;\n return index != null && seriesModel.componentIndex !== index || id != null && seriesModel.id !== id || name != null && seriesModel.name !== name;\n }\n}\n/**\n * @inner\n */\n\n\nfunction mergeTheme(option, theme) {\n // PENDING\n // NOT use `colorLayer` in theme if option has `color`\n var notMergeColorLayer = option.color && !option.colorLayer;\n each(theme, function (themeItem, name) {\n if (name === 'colorLayer' && notMergeColorLayer) {\n return;\n } // 如果有 component model 则把具体的 merge 逻辑交给该 model 处理\n\n\n if (!ComponentModel.hasClass(name)) {\n if (typeof themeItem === 'object') {\n option[name] = !option[name] ? clone(themeItem) : merge(option[name], themeItem, false);\n } else {\n if (option[name] == null) {\n option[name] = themeItem;\n }\n }\n }\n });\n}\n\nfunction initBase(baseOption) {\n baseOption = baseOption; // Using OPTION_INNER_KEY to mark that this option can not be used outside,\n // i.e. `chart.setOption(chart.getModel().option);` is forbiden.\n\n this.option = {};\n this.option[OPTION_INNER_KEY] = 1;\n /**\n * Init with series: [], in case of calling findSeries method\n * before series initialized.\n * @type {Object.>}\n * @private\n */\n\n this._componentsMap = createHashMap({\n series: []\n });\n /**\n * Mapping between filtered series list and raw series list.\n * key: filtered series indices, value: raw series indices.\n * @type {Array.}\n * @private\n */\n\n this._seriesIndices;\n this._seriesIndicesMap;\n mergeTheme(baseOption, this._theme.option); // TODO Needs clone when merging to the unexisted property\n\n merge(baseOption, globalDefault, false);\n this.mergeOption(baseOption);\n}\n/**\n * @inner\n * @param {Array.|string} types model types\n * @return {Object} key: {string} type, value: {Array.} models\n */\n\n\nfunction getComponentsByTypes(componentsMap, types) {\n if (!isArray(types)) {\n types = types ? [types] : [];\n }\n\n var ret = {};\n each(types, function (type) {\n ret[type] = (componentsMap.get(type) || []).slice();\n });\n return ret;\n}\n/**\n * @inner\n */\n\n\nfunction determineSubType(mainType, newCptOption, existComponent) {\n var subType = newCptOption.type ? newCptOption.type : existComponent ? existComponent.subType // Use determineSubType only when there is no existComponent.\n : ComponentModel.determineSubType(mainType, newCptOption); // tooltip, markline, markpoint may always has no subType\n\n return subType;\n}\n/**\n * @inner\n */\n\n\nfunction createSeriesIndices(ecModel, seriesModels) {\n ecModel._seriesIndicesMap = createHashMap(ecModel._seriesIndices = map(seriesModels, function (series) {\n return series.componentIndex;\n }) || []);\n}\n/**\n * @inner\n */\n\n\nfunction filterBySubType(components, condition) {\n // Using hasOwnProperty for restrict. Consider\n // subType is undefined in user payload.\n return condition.hasOwnProperty('subType') ? filter(components, function (cpt) {\n return cpt.subType === condition.subType;\n }) : components;\n}\n/**\n * @inner\n */\n\n\nfunction assertSeriesInitialized(ecModel) {}\n\nmixin(GlobalModel, colorPaletteMixin);\nvar _default = GlobalModel;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/model/Global.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/model/Model.js": +/*!*************************************************!*\ + !*** ./node_modules/echarts/lib/model/Model.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar env = __webpack_require__(/*! zrender/lib/core/env */ \"./node_modules/zrender/lib/core/env.js\");\n\nvar _model = __webpack_require__(/*! ../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar makeInner = _model.makeInner;\n\nvar _clazz = __webpack_require__(/*! ../util/clazz */ \"./node_modules/echarts/lib/util/clazz.js\");\n\nvar enableClassExtend = _clazz.enableClassExtend;\nvar enableClassCheck = _clazz.enableClassCheck;\n\nvar lineStyleMixin = __webpack_require__(/*! ./mixin/lineStyle */ \"./node_modules/echarts/lib/model/mixin/lineStyle.js\");\n\nvar areaStyleMixin = __webpack_require__(/*! ./mixin/areaStyle */ \"./node_modules/echarts/lib/model/mixin/areaStyle.js\");\n\nvar textStyleMixin = __webpack_require__(/*! ./mixin/textStyle */ \"./node_modules/echarts/lib/model/mixin/textStyle.js\");\n\nvar itemStyleMixin = __webpack_require__(/*! ./mixin/itemStyle */ \"./node_modules/echarts/lib/model/mixin/itemStyle.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/model/Model\n */\nvar mixin = zrUtil.mixin;\nvar inner = makeInner();\n/**\n * @alias module:echarts/model/Model\n * @constructor\n * @param {Object} [option]\n * @param {module:echarts/model/Model} [parentModel]\n * @param {module:echarts/model/Global} [ecModel]\n */\n\nfunction Model(option, parentModel, ecModel) {\n /**\n * @type {module:echarts/model/Model}\n * @readOnly\n */\n this.parentModel = parentModel;\n /**\n * @type {module:echarts/model/Global}\n * @readOnly\n */\n\n this.ecModel = ecModel;\n /**\n * @type {Object}\n * @protected\n */\n\n this.option = option; // Simple optimization\n // if (this.init) {\n // if (arguments.length <= 4) {\n // this.init(option, parentModel, ecModel, extraOpt);\n // }\n // else {\n // this.init.apply(this, arguments);\n // }\n // }\n}\n\nModel.prototype = {\n constructor: Model,\n\n /**\n * Model 的初始化函数\n * @param {Object} option\n */\n init: null,\n\n /**\n * 从新的 Option merge\n */\n mergeOption: function (option) {\n zrUtil.merge(this.option, option, true);\n },\n\n /**\n * @param {string|Array.} path\n * @param {boolean} [ignoreParent=false]\n * @return {*}\n */\n get: function (path, ignoreParent) {\n if (path == null) {\n return this.option;\n }\n\n return doGet(this.option, this.parsePath(path), !ignoreParent && getParent(this, path));\n },\n\n /**\n * @param {string} key\n * @param {boolean} [ignoreParent=false]\n * @return {*}\n */\n getShallow: function (key, ignoreParent) {\n var option = this.option;\n var val = option == null ? option : option[key];\n var parentModel = !ignoreParent && getParent(this, key);\n\n if (val == null && parentModel) {\n val = parentModel.getShallow(key);\n }\n\n return val;\n },\n\n /**\n * @param {string|Array.} [path]\n * @param {module:echarts/model/Model} [parentModel]\n * @return {module:echarts/model/Model}\n */\n getModel: function (path, parentModel) {\n var obj = path == null ? this.option : doGet(this.option, path = this.parsePath(path));\n var thisParentModel;\n parentModel = parentModel || (thisParentModel = getParent(this, path)) && thisParentModel.getModel(path);\n return new Model(obj, parentModel, this.ecModel);\n },\n\n /**\n * If model has option\n */\n isEmpty: function () {\n return this.option == null;\n },\n restoreData: function () {},\n // Pending\n clone: function () {\n var Ctor = this.constructor;\n return new Ctor(zrUtil.clone(this.option));\n },\n setReadOnly: function (properties) {// clazzUtil.setReadOnly(this, properties);\n },\n // If path is null/undefined, return null/undefined.\n parsePath: function (path) {\n if (typeof path === 'string') {\n path = path.split('.');\n }\n\n return path;\n },\n\n /**\n * @param {Function} getParentMethod\n * param {Array.|string} path\n * return {module:echarts/model/Model}\n */\n customizeGetParent: function (getParentMethod) {\n inner(this).getParent = getParentMethod;\n },\n isAnimationEnabled: function () {\n if (!env.node) {\n if (this.option.animation != null) {\n return !!this.option.animation;\n } else if (this.parentModel) {\n return this.parentModel.isAnimationEnabled();\n }\n }\n }\n};\n\nfunction doGet(obj, pathArr, parentModel) {\n for (var i = 0; i < pathArr.length; i++) {\n // Ignore empty\n if (!pathArr[i]) {\n continue;\n } // obj could be number/string/... (like 0)\n\n\n obj = obj && typeof obj === 'object' ? obj[pathArr[i]] : null;\n\n if (obj == null) {\n break;\n }\n }\n\n if (obj == null && parentModel) {\n obj = parentModel.get(pathArr);\n }\n\n return obj;\n} // `path` can be null/undefined\n\n\nfunction getParent(model, path) {\n var getParentMethod = inner(model).getParent;\n return getParentMethod ? getParentMethod.call(model, path) : model.parentModel;\n} // Enable Model.extend.\n\n\nenableClassExtend(Model);\nenableClassCheck(Model);\nmixin(Model, lineStyleMixin);\nmixin(Model, areaStyleMixin);\nmixin(Model, textStyleMixin);\nmixin(Model, itemStyleMixin);\nvar _default = Model;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/model/Model.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/model/OptionManager.js": +/*!*********************************************************!*\ + !*** ./node_modules/echarts/lib/model/OptionManager.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar modelUtil = __webpack_require__(/*! ../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar ComponentModel = __webpack_require__(/*! ./Component */ \"./node_modules/echarts/lib/model/Component.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * ECharts option manager\n *\n * @module {echarts/model/OptionManager}\n */\nvar each = zrUtil.each;\nvar clone = zrUtil.clone;\nvar map = zrUtil.map;\nvar merge = zrUtil.merge;\nvar QUERY_REG = /^(min|max)?(.+)$/;\n/**\n * TERM EXPLANATIONS:\n *\n * [option]:\n *\n * An object that contains definitions of components. For example:\n * var option = {\n * title: {...},\n * legend: {...},\n * visualMap: {...},\n * series: [\n * {data: [...]},\n * {data: [...]},\n * ...\n * ]\n * };\n *\n * [rawOption]:\n *\n * An object input to echarts.setOption. 'rawOption' may be an\n * 'option', or may be an object contains multi-options. For example:\n * var option = {\n * baseOption: {\n * title: {...},\n * legend: {...},\n * series: [\n * {data: [...]},\n * {data: [...]},\n * ...\n * ]\n * },\n * timeline: {...},\n * options: [\n * {title: {...}, series: {data: [...]}},\n * {title: {...}, series: {data: [...]}},\n * ...\n * ],\n * media: [\n * {\n * query: {maxWidth: 320},\n * option: {series: {x: 20}, visualMap: {show: false}}\n * },\n * {\n * query: {minWidth: 320, maxWidth: 720},\n * option: {series: {x: 500}, visualMap: {show: true}}\n * },\n * {\n * option: {series: {x: 1200}, visualMap: {show: true}}\n * }\n * ]\n * };\n *\n * @alias module:echarts/model/OptionManager\n * @param {module:echarts/ExtensionAPI} api\n */\n\nfunction OptionManager(api) {\n /**\n * @private\n * @type {module:echarts/ExtensionAPI}\n */\n this._api = api;\n /**\n * @private\n * @type {Array.}\n */\n\n this._timelineOptions = [];\n /**\n * @private\n * @type {Array.}\n */\n\n this._mediaList = [];\n /**\n * @private\n * @type {Object}\n */\n\n this._mediaDefault;\n /**\n * -1, means default.\n * empty means no media.\n * @private\n * @type {Array.}\n */\n\n this._currentMediaIndices = [];\n /**\n * @private\n * @type {Object}\n */\n\n this._optionBackup;\n /**\n * @private\n * @type {Object}\n */\n\n this._newBaseOption;\n} // timeline.notMerge is not supported in ec3. Firstly there is rearly\n// case that notMerge is needed. Secondly supporting 'notMerge' requires\n// rawOption cloned and backuped when timeline changed, which does no\n// good to performance. What's more, that both timeline and setOption\n// method supply 'notMerge' brings complex and some problems.\n// Consider this case:\n// (step1) chart.setOption({timeline: {notMerge: false}, ...}, false);\n// (step2) chart.setOption({timeline: {notMerge: true}, ...}, false);\n\n\nOptionManager.prototype = {\n constructor: OptionManager,\n\n /**\n * @public\n * @param {Object} rawOption Raw option.\n * @param {module:echarts/model/Global} ecModel\n * @param {Array.} optionPreprocessorFuncs\n * @return {Object} Init option\n */\n setOption: function (rawOption, optionPreprocessorFuncs) {\n if (rawOption) {\n // That set dat primitive is dangerous if user reuse the data when setOption again.\n zrUtil.each(modelUtil.normalizeToArray(rawOption.series), function (series) {\n series && series.data && zrUtil.isTypedArray(series.data) && zrUtil.setAsPrimitive(series.data);\n });\n } // Caution: some series modify option data, if do not clone,\n // it should ensure that the repeat modify correctly\n // (create a new object when modify itself).\n\n\n rawOption = clone(rawOption); // FIXME\n // 如果 timeline options 或者 media 中设置了某个属性,而baseOption中没有设置,则进行警告。\n\n var oldOptionBackup = this._optionBackup;\n var newParsedOption = parseRawOption.call(this, rawOption, optionPreprocessorFuncs, !oldOptionBackup);\n this._newBaseOption = newParsedOption.baseOption; // For setOption at second time (using merge mode);\n\n if (oldOptionBackup) {\n // Only baseOption can be merged.\n mergeOption(oldOptionBackup.baseOption, newParsedOption.baseOption); // For simplicity, timeline options and media options do not support merge,\n // that is, if you `setOption` twice and both has timeline options, the latter\n // timeline opitons will not be merged to the formers, but just substitude them.\n\n if (newParsedOption.timelineOptions.length) {\n oldOptionBackup.timelineOptions = newParsedOption.timelineOptions;\n }\n\n if (newParsedOption.mediaList.length) {\n oldOptionBackup.mediaList = newParsedOption.mediaList;\n }\n\n if (newParsedOption.mediaDefault) {\n oldOptionBackup.mediaDefault = newParsedOption.mediaDefault;\n }\n } else {\n this._optionBackup = newParsedOption;\n }\n },\n\n /**\n * @param {boolean} isRecreate\n * @return {Object}\n */\n mountOption: function (isRecreate) {\n var optionBackup = this._optionBackup; // TODO\n // 如果没有reset功能则不clone。\n\n this._timelineOptions = map(optionBackup.timelineOptions, clone);\n this._mediaList = map(optionBackup.mediaList, clone);\n this._mediaDefault = clone(optionBackup.mediaDefault);\n this._currentMediaIndices = [];\n return clone(isRecreate // this._optionBackup.baseOption, which is created at the first `setOption`\n // called, and is merged into every new option by inner method `mergeOption`\n // each time `setOption` called, can be only used in `isRecreate`, because\n // its reliability is under suspicion. In other cases option merge is\n // performed by `model.mergeOption`.\n ? optionBackup.baseOption : this._newBaseOption);\n },\n\n /**\n * @param {module:echarts/model/Global} ecModel\n * @return {Object}\n */\n getTimelineOption: function (ecModel) {\n var option;\n var timelineOptions = this._timelineOptions;\n\n if (timelineOptions.length) {\n // getTimelineOption can only be called after ecModel inited,\n // so we can get currentIndex from timelineModel.\n var timelineModel = ecModel.getComponent('timeline');\n\n if (timelineModel) {\n option = clone(timelineOptions[timelineModel.getCurrentIndex()], true);\n }\n }\n\n return option;\n },\n\n /**\n * @param {module:echarts/model/Global} ecModel\n * @return {Array.}\n */\n getMediaOption: function (ecModel) {\n var ecWidth = this._api.getWidth();\n\n var ecHeight = this._api.getHeight();\n\n var mediaList = this._mediaList;\n var mediaDefault = this._mediaDefault;\n var indices = [];\n var result = []; // No media defined.\n\n if (!mediaList.length && !mediaDefault) {\n return result;\n } // Multi media may be applied, the latter defined media has higher priority.\n\n\n for (var i = 0, len = mediaList.length; i < len; i++) {\n if (applyMediaQuery(mediaList[i].query, ecWidth, ecHeight)) {\n indices.push(i);\n }\n } // FIXME\n // 是否mediaDefault应该强制用户设置,否则可能修改不能回归。\n\n\n if (!indices.length && mediaDefault) {\n indices = [-1];\n }\n\n if (indices.length && !indicesEquals(indices, this._currentMediaIndices)) {\n result = map(indices, function (index) {\n return clone(index === -1 ? mediaDefault.option : mediaList[index].option);\n });\n } // Otherwise return nothing.\n\n\n this._currentMediaIndices = indices;\n return result;\n }\n};\n\nfunction parseRawOption(rawOption, optionPreprocessorFuncs, isNew) {\n var timelineOptions = [];\n var mediaList = [];\n var mediaDefault;\n var baseOption; // Compatible with ec2.\n\n var timelineOpt = rawOption.timeline;\n\n if (rawOption.baseOption) {\n baseOption = rawOption.baseOption;\n } // For timeline\n\n\n if (timelineOpt || rawOption.options) {\n baseOption = baseOption || {};\n timelineOptions = (rawOption.options || []).slice();\n } // For media query\n\n\n if (rawOption.media) {\n baseOption = baseOption || {};\n var media = rawOption.media;\n each(media, function (singleMedia) {\n if (singleMedia && singleMedia.option) {\n if (singleMedia.query) {\n mediaList.push(singleMedia);\n } else if (!mediaDefault) {\n // Use the first media default.\n mediaDefault = singleMedia;\n }\n }\n });\n } // For normal option\n\n\n if (!baseOption) {\n baseOption = rawOption;\n } // Set timelineOpt to baseOption in ec3,\n // which is convenient for merge option.\n\n\n if (!baseOption.timeline) {\n baseOption.timeline = timelineOpt;\n } // Preprocess.\n\n\n each([baseOption].concat(timelineOptions).concat(zrUtil.map(mediaList, function (media) {\n return media.option;\n })), function (option) {\n each(optionPreprocessorFuncs, function (preProcess) {\n preProcess(option, isNew);\n });\n });\n return {\n baseOption: baseOption,\n timelineOptions: timelineOptions,\n mediaDefault: mediaDefault,\n mediaList: mediaList\n };\n}\n/**\n * @see \n * Support: width, height, aspectRatio\n * Can use max or min as prefix.\n */\n\n\nfunction applyMediaQuery(query, ecWidth, ecHeight) {\n var realMap = {\n width: ecWidth,\n height: ecHeight,\n aspectratio: ecWidth / ecHeight // lowser case for convenientce.\n\n };\n var applicatable = true;\n zrUtil.each(query, function (value, attr) {\n var matched = attr.match(QUERY_REG);\n\n if (!matched || !matched[1] || !matched[2]) {\n return;\n }\n\n var operator = matched[1];\n var realAttr = matched[2].toLowerCase();\n\n if (!compare(realMap[realAttr], value, operator)) {\n applicatable = false;\n }\n });\n return applicatable;\n}\n\nfunction compare(real, expect, operator) {\n if (operator === 'min') {\n return real >= expect;\n } else if (operator === 'max') {\n return real <= expect;\n } else {\n // Equals\n return real === expect;\n }\n}\n\nfunction indicesEquals(indices1, indices2) {\n // indices is always order by asc and has only finite number.\n return indices1.join(',') === indices2.join(',');\n}\n/**\n * Consider case:\n * `chart.setOption(opt1);`\n * Then user do some interaction like dataZoom, dataView changing.\n * `chart.setOption(opt2);`\n * Then user press 'reset button' in toolbox.\n *\n * After doing that all of the interaction effects should be reset, the\n * chart should be the same as the result of invoke\n * `chart.setOption(opt1); chart.setOption(opt2);`.\n *\n * Although it is not able ensure that\n * `chart.setOption(opt1); chart.setOption(opt2);` is equivalents to\n * `chart.setOption(merge(opt1, opt2));` exactly,\n * this might be the only simple way to implement that feature.\n *\n * MEMO: We've considered some other approaches:\n * 1. Each model handle its self restoration but not uniform treatment.\n * (Too complex in logic and error-prone)\n * 2. Use a shadow ecModel. (Performace expensive)\n */\n\n\nfunction mergeOption(oldOption, newOption) {\n newOption = newOption || {};\n each(newOption, function (newCptOpt, mainType) {\n if (newCptOpt == null) {\n return;\n }\n\n var oldCptOpt = oldOption[mainType];\n\n if (!ComponentModel.hasClass(mainType)) {\n oldOption[mainType] = merge(oldCptOpt, newCptOpt, true);\n } else {\n newCptOpt = modelUtil.normalizeToArray(newCptOpt);\n oldCptOpt = modelUtil.normalizeToArray(oldCptOpt);\n var mapResult = modelUtil.mappingToExists(oldCptOpt, newCptOpt);\n oldOption[mainType] = map(mapResult, function (item) {\n return item.option && item.exist ? merge(item.exist, item.option, true) : item.exist || item.option;\n });\n }\n });\n}\n\nvar _default = OptionManager;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/model/OptionManager.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/model/Series.js": +/*!**************************************************!*\ + !*** ./node_modules/echarts/lib/model/Series.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar env = __webpack_require__(/*! zrender/lib/core/env */ \"./node_modules/zrender/lib/core/env.js\");\n\nvar _format = __webpack_require__(/*! ../util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\nvar formatTime = _format.formatTime;\nvar encodeHTML = _format.encodeHTML;\nvar addCommas = _format.addCommas;\nvar getTooltipMarker = _format.getTooltipMarker;\n\nvar modelUtil = __webpack_require__(/*! ../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar ComponentModel = __webpack_require__(/*! ./Component */ \"./node_modules/echarts/lib/model/Component.js\");\n\nvar colorPaletteMixin = __webpack_require__(/*! ./mixin/colorPalette */ \"./node_modules/echarts/lib/model/mixin/colorPalette.js\");\n\nvar dataFormatMixin = __webpack_require__(/*! ../model/mixin/dataFormat */ \"./node_modules/echarts/lib/model/mixin/dataFormat.js\");\n\nvar _layout = __webpack_require__(/*! ../util/layout */ \"./node_modules/echarts/lib/util/layout.js\");\n\nvar getLayoutParams = _layout.getLayoutParams;\nvar mergeLayoutParam = _layout.mergeLayoutParam;\n\nvar _task = __webpack_require__(/*! ../stream/task */ \"./node_modules/echarts/lib/stream/task.js\");\n\nvar createTask = _task.createTask;\n\nvar _sourceHelper = __webpack_require__(/*! ../data/helper/sourceHelper */ \"./node_modules/echarts/lib/data/helper/sourceHelper.js\");\n\nvar prepareSource = _sourceHelper.prepareSource;\nvar getSource = _sourceHelper.getSource;\n\nvar _dataProvider = __webpack_require__(/*! ../data/helper/dataProvider */ \"./node_modules/echarts/lib/data/helper/dataProvider.js\");\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = modelUtil.makeInner();\nvar SeriesModel = ComponentModel.extend({\n type: 'series.__base__',\n\n /**\n * @readOnly\n */\n seriesIndex: 0,\n // coodinateSystem will be injected in the echarts/CoordinateSystem\n coordinateSystem: null,\n\n /**\n * @type {Object}\n * @protected\n */\n defaultOption: null,\n\n /**\n * legend visual provider to the legend component\n * @type {Object}\n */\n // PENDING\n legendVisualProvider: null,\n\n /**\n * Access path of color for visual\n */\n visualColorAccessPath: 'itemStyle.color',\n\n /**\n * Access path of borderColor for visual\n */\n visualBorderColorAccessPath: 'itemStyle.borderColor',\n\n /**\n * Support merge layout params.\n * Only support 'box' now (left/right/top/bottom/width/height).\n * @type {string|Object} Object can be {ignoreSize: true}\n * @readOnly\n */\n layoutMode: null,\n init: function (option, parentModel, ecModel, extraOpt) {\n /**\n * @type {number}\n * @readOnly\n */\n this.seriesIndex = this.componentIndex;\n this.dataTask = createTask({\n count: dataTaskCount,\n reset: dataTaskReset\n });\n this.dataTask.context = {\n model: this\n };\n this.mergeDefaultAndTheme(option, ecModel);\n prepareSource(this);\n var data = this.getInitialData(option, ecModel);\n wrapData(data, this);\n this.dataTask.context.data = data;\n\n /**\n * @type {module:echarts/data/List|module:echarts/data/Tree|module:echarts/data/Graph}\n * @private\n */\n inner(this).dataBeforeProcessed = data; // If we reverse the order (make data firstly, and then make\n // dataBeforeProcessed by cloneShallow), cloneShallow will\n // cause data.graph.data !== data when using\n // module:echarts/data/Graph or module:echarts/data/Tree.\n // See module:echarts/data/helper/linkList\n // Theoretically, it is unreasonable to call `seriesModel.getData()` in the model\n // init or merge stage, because the data can be restored. So we do not `restoreData`\n // and `setData` here, which forbids calling `seriesModel.getData()` in this stage.\n // Call `seriesModel.getRawData()` instead.\n // this.restoreData();\n\n autoSeriesName(this);\n },\n\n /**\n * Util for merge default and theme to option\n * @param {Object} option\n * @param {module:echarts/model/Global} ecModel\n */\n mergeDefaultAndTheme: function (option, ecModel) {\n var layoutMode = this.layoutMode;\n var inputPositionParams = layoutMode ? getLayoutParams(option) : {}; // Backward compat: using subType on theme.\n // But if name duplicate between series subType\n // (for example: parallel) add component mainType,\n // add suffix 'Series'.\n\n var themeSubType = this.subType;\n\n if (ComponentModel.hasClass(themeSubType)) {\n themeSubType += 'Series';\n }\n\n zrUtil.merge(option, ecModel.getTheme().get(this.subType));\n zrUtil.merge(option, this.getDefaultOption()); // Default label emphasis `show`\n\n modelUtil.defaultEmphasis(option, 'label', ['show']);\n this.fillDataTextStyle(option.data);\n\n if (layoutMode) {\n mergeLayoutParam(option, inputPositionParams, layoutMode);\n }\n },\n mergeOption: function (newSeriesOption, ecModel) {\n // this.settingTask.dirty();\n newSeriesOption = zrUtil.merge(this.option, newSeriesOption, true);\n this.fillDataTextStyle(newSeriesOption.data);\n var layoutMode = this.layoutMode;\n\n if (layoutMode) {\n mergeLayoutParam(this.option, newSeriesOption, layoutMode);\n }\n\n prepareSource(this);\n var data = this.getInitialData(newSeriesOption, ecModel);\n wrapData(data, this);\n this.dataTask.dirty();\n this.dataTask.context.data = data;\n inner(this).dataBeforeProcessed = data;\n autoSeriesName(this);\n },\n fillDataTextStyle: function (data) {\n // Default data label emphasis `show`\n // FIXME Tree structure data ?\n // FIXME Performance ?\n if (data && !zrUtil.isTypedArray(data)) {\n var props = ['show'];\n\n for (var i = 0; i < data.length; i++) {\n if (data[i] && data[i].label) {\n modelUtil.defaultEmphasis(data[i], 'label', props);\n }\n }\n }\n },\n\n /**\n * Init a data structure from data related option in series\n * Must be overwritten\n */\n getInitialData: function () {},\n\n /**\n * Append data to list\n * @param {Object} params\n * @param {Array|TypedArray} params.data\n */\n appendData: function (params) {\n // FIXME ???\n // (1) If data from dataset, forbidden append.\n // (2) support append data of dataset.\n var data = this.getRawData();\n data.appendData(params.data);\n },\n\n /**\n * Consider some method like `filter`, `map` need make new data,\n * We should make sure that `seriesModel.getData()` get correct\n * data in the stream procedure. So we fetch data from upstream\n * each time `task.perform` called.\n * @param {string} [dataType]\n * @return {module:echarts/data/List}\n */\n getData: function (dataType) {\n var task = getCurrentTask(this);\n\n if (task) {\n var data = task.context.data;\n return dataType == null ? data : data.getLinkedData(dataType);\n } else {\n // When series is not alive (that may happen when click toolbox\n // restore or setOption with not merge mode), series data may\n // be still need to judge animation or something when graphic\n // elements want to know whether fade out.\n return inner(this).data;\n }\n },\n\n /**\n * @param {module:echarts/data/List} data\n */\n setData: function (data) {\n var task = getCurrentTask(this);\n\n if (task) {\n var context = task.context; // Consider case: filter, data sample.\n\n if (context.data !== data && task.modifyOutputEnd) {\n task.setOutputEnd(data.count());\n }\n\n context.outputData = data; // Caution: setData should update context.data,\n // Because getData may be called multiply in a\n // single stage and expect to get the data just\n // set. (For example, AxisProxy, x y both call\n // getData and setDate sequentially).\n // So the context.data should be fetched from\n // upstream each time when a stage starts to be\n // performed.\n\n if (task !== this.dataTask) {\n context.data = data;\n }\n }\n\n inner(this).data = data;\n },\n\n /**\n * @see {module:echarts/data/helper/sourceHelper#getSource}\n * @return {module:echarts/data/Source} source\n */\n getSource: function () {\n return getSource(this);\n },\n\n /**\n * Get data before processed\n * @return {module:echarts/data/List}\n */\n getRawData: function () {\n return inner(this).dataBeforeProcessed;\n },\n\n /**\n * Get base axis if has coordinate system and has axis.\n * By default use coordSys.getBaseAxis();\n * Can be overrided for some chart.\n * @return {type} description\n */\n getBaseAxis: function () {\n var coordSys = this.coordinateSystem;\n return coordSys && coordSys.getBaseAxis && coordSys.getBaseAxis();\n },\n // FIXME\n\n /**\n * Default tooltip formatter\n *\n * @param {number} dataIndex\n * @param {boolean} [multipleSeries=false]\n * @param {number} [dataType]\n * @param {string} [renderMode='html'] valid values: 'html' and 'richText'.\n * 'html' is used for rendering tooltip in extra DOM form, and the result\n * string is used as DOM HTML content.\n * 'richText' is used for rendering tooltip in rich text form, for those where\n * DOM operation is not supported.\n * @return {Object} formatted tooltip with `html` and `markers`\n */\n formatTooltip: function (dataIndex, multipleSeries, dataType, renderMode) {\n var series = this;\n renderMode = renderMode || 'html';\n var newLine = renderMode === 'html' ? '
' : '\\n';\n var isRichText = renderMode === 'richText';\n var markers = {};\n var markerId = 0;\n\n function formatArrayValue(value) {\n // ??? TODO refactor these logic.\n // check: category-no-encode-has-axis-data in dataset.html\n var vertially = zrUtil.reduce(value, function (vertially, val, idx) {\n var dimItem = data.getDimensionInfo(idx);\n return vertially |= dimItem && dimItem.tooltip !== false && dimItem.displayName != null;\n }, 0);\n var result = [];\n tooltipDims.length ? zrUtil.each(tooltipDims, function (dim) {\n setEachItem(retrieveRawValue(data, dataIndex, dim), dim);\n }) // By default, all dims is used on tooltip.\n : zrUtil.each(value, setEachItem);\n\n function setEachItem(val, dim) {\n var dimInfo = data.getDimensionInfo(dim); // If `dimInfo.tooltip` is not set, show tooltip.\n\n if (!dimInfo || dimInfo.otherDims.tooltip === false) {\n return;\n }\n\n var dimType = dimInfo.type;\n var markName = 'sub' + series.seriesIndex + 'at' + markerId;\n var dimHead = getTooltipMarker({\n color: color,\n type: 'subItem',\n renderMode: renderMode,\n markerId: markName\n });\n var dimHeadStr = typeof dimHead === 'string' ? dimHead : dimHead.content;\n var valStr = (vertially ? dimHeadStr + encodeHTML(dimInfo.displayName || '-') + ': ' : '') + // FIXME should not format time for raw data?\n encodeHTML(dimType === 'ordinal' ? val + '' : dimType === 'time' ? multipleSeries ? '' : formatTime('yyyy/MM/dd hh:mm:ss', val) : addCommas(val));\n valStr && result.push(valStr);\n\n if (isRichText) {\n markers[markName] = color;\n ++markerId;\n }\n }\n\n var newLine = vertially ? isRichText ? '\\n' : '
' : '';\n var content = newLine + result.join(newLine || ', ');\n return {\n renderMode: renderMode,\n content: content,\n style: markers\n };\n }\n\n function formatSingleValue(val) {\n // return encodeHTML(addCommas(val));\n return {\n renderMode: renderMode,\n content: encodeHTML(addCommas(val)),\n style: markers\n };\n }\n\n var data = this.getData();\n var tooltipDims = data.mapDimension('defaultedTooltip', true);\n var tooltipDimLen = tooltipDims.length;\n var value = this.getRawValue(dataIndex);\n var isValueArr = zrUtil.isArray(value);\n var color = data.getItemVisual(dataIndex, 'color');\n\n if (zrUtil.isObject(color) && color.colorStops) {\n color = (color.colorStops[0] || {}).color;\n }\n\n color = color || 'transparent'; // Complicated rule for pretty tooltip.\n\n var formattedValue = tooltipDimLen > 1 || isValueArr && !tooltipDimLen ? formatArrayValue(value) : tooltipDimLen ? formatSingleValue(retrieveRawValue(data, dataIndex, tooltipDims[0])) : formatSingleValue(isValueArr ? value[0] : value);\n var content = formattedValue.content;\n var markName = series.seriesIndex + 'at' + markerId;\n var colorEl = getTooltipMarker({\n color: color,\n type: 'item',\n renderMode: renderMode,\n markerId: markName\n });\n markers[markName] = color;\n ++markerId;\n var name = data.getName(dataIndex);\n var seriesName = this.name;\n\n if (!modelUtil.isNameSpecified(this)) {\n seriesName = '';\n }\n\n seriesName = seriesName ? encodeHTML(seriesName) + (!multipleSeries ? newLine : ': ') : '';\n var colorStr = typeof colorEl === 'string' ? colorEl : colorEl.content;\n var html = !multipleSeries ? seriesName + colorStr + (name ? encodeHTML(name) + ': ' + content : content) : colorStr + seriesName + content;\n return {\n html: html,\n markers: markers\n };\n },\n\n /**\n * @return {boolean}\n */\n isAnimationEnabled: function () {\n if (env.node) {\n return false;\n }\n\n var animationEnabled = this.getShallow('animation');\n\n if (animationEnabled) {\n if (this.getData().count() > this.getShallow('animationThreshold')) {\n animationEnabled = false;\n }\n }\n\n return animationEnabled;\n },\n restoreData: function () {\n this.dataTask.dirty();\n },\n getColorFromPalette: function (name, scope, requestColorNum) {\n var ecModel = this.ecModel; // PENDING\n\n var color = colorPaletteMixin.getColorFromPalette.call(this, name, scope, requestColorNum);\n\n if (!color) {\n color = ecModel.getColorFromPalette(name, scope, requestColorNum);\n }\n\n return color;\n },\n\n /**\n * Use `data.mapDimension(coordDim, true)` instead.\n * @deprecated\n */\n coordDimToDataDim: function (coordDim) {\n return this.getRawData().mapDimension(coordDim, true);\n },\n\n /**\n * Get progressive rendering count each step\n * @return {number}\n */\n getProgressive: function () {\n return this.get('progressive');\n },\n\n /**\n * Get progressive rendering count each step\n * @return {number}\n */\n getProgressiveThreshold: function () {\n return this.get('progressiveThreshold');\n },\n\n /**\n * Get data indices for show tooltip content. See tooltip.\n * @abstract\n * @param {Array.|string} dim\n * @param {Array.} value\n * @param {module:echarts/coord/single/SingleAxis} baseAxis\n * @return {Object} {dataIndices, nestestValue}.\n */\n getAxisTooltipData: null,\n\n /**\n * See tooltip.\n * @abstract\n * @param {number} dataIndex\n * @return {Array.} Point of tooltip. null/undefined can be returned.\n */\n getTooltipPosition: null,\n\n /**\n * @see {module:echarts/stream/Scheduler}\n */\n pipeTask: null,\n\n /**\n * Convinient for override in extended class.\n * @protected\n * @type {Function}\n */\n preventIncremental: null,\n\n /**\n * @public\n * @readOnly\n * @type {Object}\n */\n pipelineContext: null\n});\nzrUtil.mixin(SeriesModel, dataFormatMixin);\nzrUtil.mixin(SeriesModel, colorPaletteMixin);\n/**\n * MUST be called after `prepareSource` called\n * Here we need to make auto series, especially for auto legend. But we\n * do not modify series.name in option to avoid side effects.\n */\n\nfunction autoSeriesName(seriesModel) {\n // User specified name has higher priority, otherwise it may cause\n // series can not be queried unexpectedly.\n var name = seriesModel.name;\n\n if (!modelUtil.isNameSpecified(seriesModel)) {\n seriesModel.name = getSeriesAutoName(seriesModel) || name;\n }\n}\n\nfunction getSeriesAutoName(seriesModel) {\n var data = seriesModel.getRawData();\n var dataDims = data.mapDimension('seriesName', true);\n var nameArr = [];\n zrUtil.each(dataDims, function (dataDim) {\n var dimInfo = data.getDimensionInfo(dataDim);\n dimInfo.displayName && nameArr.push(dimInfo.displayName);\n });\n return nameArr.join(' ');\n}\n\nfunction dataTaskCount(context) {\n return context.model.getRawData().count();\n}\n\nfunction dataTaskReset(context) {\n var seriesModel = context.model;\n seriesModel.setData(seriesModel.getRawData().cloneShallow());\n return dataTaskProgress;\n}\n\nfunction dataTaskProgress(param, context) {\n // Avoid repead cloneShallow when data just created in reset.\n if (context.outputData && param.end > context.outputData.count()) {\n context.model.getRawData().cloneShallow(context.outputData);\n }\n} // TODO refactor\n\n\nfunction wrapData(data, seriesModel) {\n zrUtil.each(data.CHANGABLE_METHODS, function (methodName) {\n data.wrapMethod(methodName, zrUtil.curry(onDataSelfChange, seriesModel));\n });\n}\n\nfunction onDataSelfChange(seriesModel) {\n var task = getCurrentTask(seriesModel);\n\n if (task) {\n // Consider case: filter, selectRange\n task.setOutputEnd(this.count());\n }\n}\n\nfunction getCurrentTask(seriesModel) {\n var scheduler = (seriesModel.ecModel || {}).scheduler;\n var pipeline = scheduler && scheduler.getPipeline(seriesModel.uid);\n\n if (pipeline) {\n // When pipline finished, the currrentTask keep the last\n // task (renderTask).\n var task = pipeline.currentTask;\n\n if (task) {\n var agentStubMap = task.agentStubMap;\n\n if (agentStubMap) {\n task = agentStubMap.get(seriesModel.uid);\n }\n }\n\n return task;\n }\n}\n\nvar _default = SeriesModel;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/model/Series.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/model/globalDefault.js": +/*!*********************************************************!*\ + !*** ./node_modules/echarts/lib/model/globalDefault.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar platform = ''; // Navigator not exists in node\n\nif (typeof navigator !== 'undefined') {\n platform = navigator.platform || '';\n}\n\nvar _default = {\n // backgroundColor: 'rgba(0,0,0,0)',\n // https://dribbble.com/shots/1065960-Infographic-Pie-chart-visualization\n // color: ['#5793f3', '#d14a61', '#fd9c35', '#675bba', '#fec42c', '#dd4444', '#d4df5a', '#cd4870'],\n // Light colors:\n // color: ['#bcd3bb', '#e88f70', '#edc1a5', '#9dc5c8', '#e1e8c8', '#7b7c68', '#e5b5b5', '#f0b489', '#928ea8', '#bda29a'],\n // color: ['#cc5664', '#9bd6ec', '#ea946e', '#8acaaa', '#f1ec64', '#ee8686', '#a48dc1', '#5da6bc', '#b9dcae'],\n // Dark colors:\n color: ['#c23531', '#2f4554', '#61a0a8', '#d48265', '#91c7ae', '#749f83', '#ca8622', '#bda29a', '#6e7074', '#546570', '#c4ccd3'],\n gradientColor: ['#f6efa6', '#d88273', '#bf444c'],\n // If xAxis and yAxis declared, grid is created by default.\n // grid: {},\n textStyle: {\n // color: '#000',\n // decoration: 'none',\n // PENDING\n fontFamily: platform.match(/^Win/) ? 'Microsoft YaHei' : 'sans-serif',\n // fontFamily: 'Arial, Verdana, sans-serif',\n fontSize: 12,\n fontStyle: 'normal',\n fontWeight: 'normal'\n },\n // http://blogs.adobe.com/webplatform/2014/02/24/using-blend-modes-in-html-canvas/\n // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation\n // Default is source-over\n blendMode: null,\n animation: 'auto',\n animationDuration: 1000,\n animationDurationUpdate: 300,\n animationEasing: 'exponentialOut',\n animationEasingUpdate: 'cubicOut',\n animationThreshold: 2000,\n // Configuration for progressive/incremental rendering\n progressiveThreshold: 3000,\n progressive: 400,\n // Threshold of if use single hover layer to optimize.\n // It is recommended that `hoverLayerThreshold` is equivalent to or less than\n // `progressiveThreshold`, otherwise hover will cause restart of progressive,\n // which is unexpected.\n // see example .\n hoverLayerThreshold: 3000,\n // See: module:echarts/scale/Time\n useUTC: false\n};\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/model/globalDefault.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/model/mixin/areaStyle.js": +/*!***********************************************************!*\ + !*** ./node_modules/echarts/lib/model/mixin/areaStyle.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar makeStyleMapper = __webpack_require__(/*! ./makeStyleMapper */ \"./node_modules/echarts/lib/model/mixin/makeStyleMapper.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar getAreaStyle = makeStyleMapper([['fill', 'color'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['opacity'], ['shadowColor']]);\nvar _default = {\n getAreaStyle: function (excludes, includes) {\n return getAreaStyle(this, excludes, includes);\n }\n};\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/model/mixin/areaStyle.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/model/mixin/boxLayout.js": +/*!***********************************************************!*\ + !*** ./node_modules/echarts/lib/model/mixin/boxLayout.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = {\n getBoxLayoutParams: function () {\n return {\n left: this.get('left'),\n top: this.get('top'),\n right: this.get('right'),\n bottom: this.get('bottom'),\n width: this.get('width'),\n height: this.get('height')\n };\n }\n};\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/model/mixin/boxLayout.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/model/mixin/colorPalette.js": +/*!**************************************************************!*\ + !*** ./node_modules/echarts/lib/model/mixin/colorPalette.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _model = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar makeInner = _model.makeInner;\nvar normalizeToArray = _model.normalizeToArray;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = makeInner();\n\nfunction getNearestColorPalette(colors, requestColorNum) {\n var paletteNum = colors.length; // TODO colors must be in order\n\n for (var i = 0; i < paletteNum; i++) {\n if (colors[i].length > requestColorNum) {\n return colors[i];\n }\n }\n\n return colors[paletteNum - 1];\n}\n\nvar _default = {\n clearColorPalette: function () {\n inner(this).colorIdx = 0;\n inner(this).colorNameMap = {};\n },\n\n /**\n * @param {string} name MUST NOT be null/undefined. Otherwise call this function\n * twise with the same parameters will get different result.\n * @param {Object} [scope=this]\n * @param {Object} [requestColorNum]\n * @return {string} color string.\n */\n getColorFromPalette: function (name, scope, requestColorNum) {\n scope = scope || this;\n var scopeFields = inner(scope);\n var colorIdx = scopeFields.colorIdx || 0;\n var colorNameMap = scopeFields.colorNameMap = scopeFields.colorNameMap || {}; // Use `hasOwnProperty` to avoid conflict with Object.prototype.\n\n if (colorNameMap.hasOwnProperty(name)) {\n return colorNameMap[name];\n }\n\n var defaultColorPalette = normalizeToArray(this.get('color', true));\n var layeredColorPalette = this.get('colorLayer', true);\n var colorPalette = requestColorNum == null || !layeredColorPalette ? defaultColorPalette : getNearestColorPalette(layeredColorPalette, requestColorNum); // In case can't find in layered color palette.\n\n colorPalette = colorPalette || defaultColorPalette;\n\n if (!colorPalette || !colorPalette.length) {\n return;\n }\n\n var color = colorPalette[colorIdx];\n\n if (name) {\n colorNameMap[name] = color;\n }\n\n scopeFields.colorIdx = (colorIdx + 1) % colorPalette.length;\n return color;\n }\n};\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/model/mixin/colorPalette.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/model/mixin/dataFormat.js": +/*!************************************************************!*\ + !*** ./node_modules/echarts/lib/model/mixin/dataFormat.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _dataProvider = __webpack_require__(/*! ../../data/helper/dataProvider */ \"./node_modules/echarts/lib/data/helper/dataProvider.js\");\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\n\nvar _format = __webpack_require__(/*! ../../util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\nvar getTooltipMarker = _format.getTooltipMarker;\nvar formatTpl = _format.formatTpl;\n\nvar _model = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar getTooltipRenderMode = _model.getTooltipRenderMode;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar DIMENSION_LABEL_REG = /\\{@(.+?)\\}/g; // PENDING A little ugly\n\nvar _default = {\n /**\n * Get params for formatter\n * @param {number} dataIndex\n * @param {string} [dataType]\n * @return {Object}\n */\n getDataParams: function (dataIndex, dataType) {\n var data = this.getData(dataType);\n var rawValue = this.getRawValue(dataIndex, dataType);\n var rawDataIndex = data.getRawIndex(dataIndex);\n var name = data.getName(dataIndex);\n var itemOpt = data.getRawDataItem(dataIndex);\n var color = data.getItemVisual(dataIndex, 'color');\n var borderColor = data.getItemVisual(dataIndex, 'borderColor');\n var tooltipModel = this.ecModel.getComponent('tooltip');\n var renderModeOption = tooltipModel && tooltipModel.get('renderMode');\n var renderMode = getTooltipRenderMode(renderModeOption);\n var mainType = this.mainType;\n var isSeries = mainType === 'series';\n var userOutput = data.userOutput;\n return {\n componentType: mainType,\n componentSubType: this.subType,\n componentIndex: this.componentIndex,\n seriesType: isSeries ? this.subType : null,\n seriesIndex: this.seriesIndex,\n seriesId: isSeries ? this.id : null,\n seriesName: isSeries ? this.name : null,\n name: name,\n dataIndex: rawDataIndex,\n data: itemOpt,\n dataType: dataType,\n value: rawValue,\n color: color,\n borderColor: borderColor,\n dimensionNames: userOutput ? userOutput.dimensionNames : null,\n encode: userOutput ? userOutput.encode : null,\n marker: getTooltipMarker({\n color: color,\n renderMode: renderMode\n }),\n // Param name list for mapping `a`, `b`, `c`, `d`, `e`\n $vars: ['seriesName', 'name', 'value']\n };\n },\n\n /**\n * Format label\n * @param {number} dataIndex\n * @param {string} [status='normal'] 'normal' or 'emphasis'\n * @param {string} [dataType]\n * @param {number} [dimIndex] Only used in some chart that\n * use formatter in different dimensions, like radar.\n * @param {string} [labelProp='label']\n * @return {string} If not formatter, return null/undefined\n */\n getFormattedLabel: function (dataIndex, status, dataType, dimIndex, labelProp) {\n status = status || 'normal';\n var data = this.getData(dataType);\n var itemModel = data.getItemModel(dataIndex);\n var params = this.getDataParams(dataIndex, dataType);\n\n if (dimIndex != null && params.value instanceof Array) {\n params.value = params.value[dimIndex];\n }\n\n var formatter = itemModel.get(status === 'normal' ? [labelProp || 'label', 'formatter'] : [status, labelProp || 'label', 'formatter']);\n\n if (typeof formatter === 'function') {\n params.status = status;\n params.dimensionIndex = dimIndex;\n return formatter(params);\n } else if (typeof formatter === 'string') {\n var str = formatTpl(formatter, params); // Support 'aaa{@[3]}bbb{@product}ccc'.\n // Do not support '}' in dim name util have to.\n\n return str.replace(DIMENSION_LABEL_REG, function (origin, dim) {\n var len = dim.length;\n\n if (dim.charAt(0) === '[' && dim.charAt(len - 1) === ']') {\n dim = +dim.slice(1, len - 1); // Also: '[]' => 0\n }\n\n return retrieveRawValue(data, dataIndex, dim);\n });\n }\n },\n\n /**\n * Get raw value in option\n * @param {number} idx\n * @param {string} [dataType]\n * @return {Array|number|string}\n */\n getRawValue: function (idx, dataType) {\n return retrieveRawValue(this.getData(dataType), idx);\n },\n\n /**\n * Should be implemented.\n * @param {number} dataIndex\n * @param {boolean} [multipleSeries=false]\n * @param {number} [dataType]\n * @return {string} tooltip string\n */\n formatTooltip: function () {// Empty function\n }\n};\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/model/mixin/dataFormat.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/model/mixin/itemStyle.js": +/*!***********************************************************!*\ + !*** ./node_modules/echarts/lib/model/mixin/itemStyle.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar makeStyleMapper = __webpack_require__(/*! ./makeStyleMapper */ \"./node_modules/echarts/lib/model/mixin/makeStyleMapper.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar getItemStyle = makeStyleMapper([['fill', 'color'], ['stroke', 'borderColor'], ['lineWidth', 'borderWidth'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor'], ['textPosition'], ['textAlign']]);\nvar _default = {\n getItemStyle: function (excludes, includes) {\n var style = getItemStyle(this, excludes, includes);\n var lineDash = this.getBorderLineDash();\n lineDash && (style.lineDash = lineDash);\n return style;\n },\n getBorderLineDash: function () {\n var lineType = this.get('borderType');\n return lineType === 'solid' || lineType == null ? null : lineType === 'dashed' ? [5, 5] : [1, 1];\n }\n};\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/model/mixin/itemStyle.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/model/mixin/lineStyle.js": +/*!***********************************************************!*\ + !*** ./node_modules/echarts/lib/model/mixin/lineStyle.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar makeStyleMapper = __webpack_require__(/*! ./makeStyleMapper */ \"./node_modules/echarts/lib/model/mixin/makeStyleMapper.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar getLineStyle = makeStyleMapper([['lineWidth', 'width'], ['stroke', 'color'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor']]);\nvar _default = {\n getLineStyle: function (excludes) {\n var style = getLineStyle(this, excludes); // Always set lineDash whether dashed, otherwise we can not\n // erase the previous style when assigning to el.style.\n\n style.lineDash = this.getLineDash(style.lineWidth);\n return style;\n },\n getLineDash: function (lineWidth) {\n if (lineWidth == null) {\n lineWidth = 1;\n }\n\n var lineType = this.get('type');\n var dotSize = Math.max(lineWidth, 2);\n var dashSize = lineWidth * 4;\n return lineType === 'solid' || lineType == null ? // Use `false` but not `null` for the solid line here, because `null` might be\n // ignored when assigning to `el.style`. e.g., when setting `lineStyle.type` as\n // `'dashed'` and `emphasis.lineStyle.type` as `'solid'` in graph series, the\n // `lineDash` gotten form the latter one is not able to erase that from the former\n // one if using `null` here according to the emhpsis strategy in `util/graphic.js`.\n false : lineType === 'dashed' ? [dashSize, dashSize] : [dotSize, dotSize];\n }\n};\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/model/mixin/lineStyle.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/model/mixin/makeStyleMapper.js": +/*!*****************************************************************!*\ + !*** ./node_modules/echarts/lib/model/mixin/makeStyleMapper.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// TODO Parse shadow style\n// TODO Only shallow path support\nfunction _default(properties) {\n // Normalize\n for (var i = 0; i < properties.length; i++) {\n if (!properties[i][1]) {\n properties[i][1] = properties[i][0];\n }\n }\n\n return function (model, excludes, includes) {\n var style = {};\n\n for (var i = 0; i < properties.length; i++) {\n var propName = properties[i][1];\n\n if (excludes && zrUtil.indexOf(excludes, propName) >= 0 || includes && zrUtil.indexOf(includes, propName) < 0) {\n continue;\n }\n\n var val = model.getShallow(propName);\n\n if (val != null) {\n style[properties[i][0]] = val;\n }\n }\n\n return style;\n };\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/model/mixin/makeStyleMapper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/model/mixin/textStyle.js": +/*!***********************************************************!*\ + !*** ./node_modules/echarts/lib/model/mixin/textStyle.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar textContain = __webpack_require__(/*! zrender/lib/contain/text */ \"./node_modules/zrender/lib/contain/text.js\");\n\nvar graphicUtil = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PATH_COLOR = ['textStyle', 'color'];\nvar _default = {\n /**\n * Get color property or get color from option.textStyle.color\n * @param {boolean} [isEmphasis]\n * @return {string}\n */\n getTextColor: function (isEmphasis) {\n var ecModel = this.ecModel;\n return this.getShallow('color') || (!isEmphasis && ecModel ? ecModel.get(PATH_COLOR) : null);\n },\n\n /**\n * Create font string from fontStyle, fontWeight, fontSize, fontFamily\n * @return {string}\n */\n getFont: function () {\n return graphicUtil.getFont({\n fontStyle: this.getShallow('fontStyle'),\n fontWeight: this.getShallow('fontWeight'),\n fontSize: this.getShallow('fontSize'),\n fontFamily: this.getShallow('fontFamily')\n }, this.ecModel);\n },\n getTextRect: function (text) {\n return textContain.getBoundingRect(text, this.getFont(), this.getShallow('align'), this.getShallow('verticalAlign') || this.getShallow('baseline'), this.getShallow('padding'), this.getShallow('lineHeight'), this.getShallow('rich'), this.getShallow('truncateText'));\n }\n};\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/model/mixin/textStyle.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/model/referHelper.js": +/*!*******************************************************!*\ + !*** ./node_modules/echarts/lib/model/referHelper.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar createHashMap = _util.createHashMap;\nvar retrieve = _util.retrieve;\nvar each = _util.each;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Helper for model references.\n * There are many manners to refer axis/coordSys.\n */\n// TODO\n// merge relevant logic to this file?\n// check: \"modelHelper\" of tooltip and \"BrushTargetManager\".\n\n/**\n * @class\n * For example:\n * {\n * coordSysName: 'cartesian2d',\n * coordSysDims: ['x', 'y', ...],\n * axisMap: HashMap({\n * x: xAxisModel,\n * y: yAxisModel\n * }),\n * categoryAxisMap: HashMap({\n * x: xAxisModel,\n * y: undefined\n * }),\n * // The index of the first category axis in `coordSysDims`.\n * // `null/undefined` means no category axis exists.\n * firstCategoryDimIndex: 1,\n * // To replace user specified encode.\n * }\n */\nfunction CoordSysInfo(coordSysName) {\n /**\n * @type {string}\n */\n this.coordSysName = coordSysName;\n /**\n * @type {Array.}\n */\n\n this.coordSysDims = [];\n /**\n * @type {module:zrender/core/util#HashMap}\n */\n\n this.axisMap = createHashMap();\n /**\n * @type {module:zrender/core/util#HashMap}\n */\n\n this.categoryAxisMap = createHashMap();\n /**\n * @type {number}\n */\n\n this.firstCategoryDimIndex = null;\n}\n/**\n * @return {module:model/referHelper#CoordSysInfo}\n */\n\n\nfunction getCoordSysInfoBySeries(seriesModel) {\n var coordSysName = seriesModel.get('coordinateSystem');\n var result = new CoordSysInfo(coordSysName);\n var fetch = fetchers[coordSysName];\n\n if (fetch) {\n fetch(seriesModel, result, result.axisMap, result.categoryAxisMap);\n return result;\n }\n}\n\nvar fetchers = {\n cartesian2d: function (seriesModel, result, axisMap, categoryAxisMap) {\n var xAxisModel = seriesModel.getReferringComponents('xAxis')[0];\n var yAxisModel = seriesModel.getReferringComponents('yAxis')[0];\n result.coordSysDims = ['x', 'y'];\n axisMap.set('x', xAxisModel);\n axisMap.set('y', yAxisModel);\n\n if (isCategory(xAxisModel)) {\n categoryAxisMap.set('x', xAxisModel);\n result.firstCategoryDimIndex = 0;\n }\n\n if (isCategory(yAxisModel)) {\n categoryAxisMap.set('y', yAxisModel);\n result.firstCategoryDimIndex == null & (result.firstCategoryDimIndex = 1);\n }\n },\n singleAxis: function (seriesModel, result, axisMap, categoryAxisMap) {\n var singleAxisModel = seriesModel.getReferringComponents('singleAxis')[0];\n result.coordSysDims = ['single'];\n axisMap.set('single', singleAxisModel);\n\n if (isCategory(singleAxisModel)) {\n categoryAxisMap.set('single', singleAxisModel);\n result.firstCategoryDimIndex = 0;\n }\n },\n polar: function (seriesModel, result, axisMap, categoryAxisMap) {\n var polarModel = seriesModel.getReferringComponents('polar')[0];\n var radiusAxisModel = polarModel.findAxisModel('radiusAxis');\n var angleAxisModel = polarModel.findAxisModel('angleAxis');\n result.coordSysDims = ['radius', 'angle'];\n axisMap.set('radius', radiusAxisModel);\n axisMap.set('angle', angleAxisModel);\n\n if (isCategory(radiusAxisModel)) {\n categoryAxisMap.set('radius', radiusAxisModel);\n result.firstCategoryDimIndex = 0;\n }\n\n if (isCategory(angleAxisModel)) {\n categoryAxisMap.set('angle', angleAxisModel);\n result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);\n }\n },\n geo: function (seriesModel, result, axisMap, categoryAxisMap) {\n result.coordSysDims = ['lng', 'lat'];\n },\n parallel: function (seriesModel, result, axisMap, categoryAxisMap) {\n var ecModel = seriesModel.ecModel;\n var parallelModel = ecModel.getComponent('parallel', seriesModel.get('parallelIndex'));\n var coordSysDims = result.coordSysDims = parallelModel.dimensions.slice();\n each(parallelModel.parallelAxisIndex, function (axisIndex, index) {\n var axisModel = ecModel.getComponent('parallelAxis', axisIndex);\n var axisDim = coordSysDims[index];\n axisMap.set(axisDim, axisModel);\n\n if (isCategory(axisModel) && result.firstCategoryDimIndex == null) {\n categoryAxisMap.set(axisDim, axisModel);\n result.firstCategoryDimIndex = index;\n }\n });\n }\n};\n\nfunction isCategory(axisModel) {\n return axisModel.get('type') === 'category';\n}\n\nexports.getCoordSysInfoBySeries = getCoordSysInfoBySeries;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/model/referHelper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/preprocessor/backwardCompat.js": +/*!*****************************************************************!*\ + !*** ./node_modules/echarts/lib/preprocessor/backwardCompat.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar each = _util.each;\nvar isArray = _util.isArray;\nvar isObject = _util.isObject;\n\nvar compatStyle = __webpack_require__(/*! ./helper/compatStyle */ \"./node_modules/echarts/lib/preprocessor/helper/compatStyle.js\");\n\nvar _model = __webpack_require__(/*! ../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar normalizeToArray = _model.normalizeToArray;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Compatitable with 2.0\nfunction get(opt, path) {\n path = path.split(',');\n var obj = opt;\n\n for (var i = 0; i < path.length; i++) {\n obj = obj && obj[path[i]];\n\n if (obj == null) {\n break;\n }\n }\n\n return obj;\n}\n\nfunction set(opt, path, val, overwrite) {\n path = path.split(',');\n var obj = opt;\n var key;\n\n for (var i = 0; i < path.length - 1; i++) {\n key = path[i];\n\n if (obj[key] == null) {\n obj[key] = {};\n }\n\n obj = obj[key];\n }\n\n if (overwrite || obj[path[i]] == null) {\n obj[path[i]] = val;\n }\n}\n\nfunction compatLayoutProperties(option) {\n each(LAYOUT_PROPERTIES, function (prop) {\n if (prop[0] in option && !(prop[1] in option)) {\n option[prop[1]] = option[prop[0]];\n }\n });\n}\n\nvar LAYOUT_PROPERTIES = [['x', 'left'], ['y', 'top'], ['x2', 'right'], ['y2', 'bottom']];\nvar COMPATITABLE_COMPONENTS = ['grid', 'geo', 'parallel', 'legend', 'toolbox', 'title', 'visualMap', 'dataZoom', 'timeline'];\n\nfunction _default(option, isTheme) {\n compatStyle(option, isTheme); // Make sure series array for model initialization.\n\n option.series = normalizeToArray(option.series);\n each(option.series, function (seriesOpt) {\n if (!isObject(seriesOpt)) {\n return;\n }\n\n var seriesType = seriesOpt.type;\n\n if (seriesType === 'line') {\n if (seriesOpt.clipOverflow != null) {\n seriesOpt.clip = seriesOpt.clipOverflow;\n }\n } else if (seriesType === 'pie' || seriesType === 'gauge') {\n if (seriesOpt.clockWise != null) {\n seriesOpt.clockwise = seriesOpt.clockWise;\n }\n } else if (seriesType === 'gauge') {\n var pointerColor = get(seriesOpt, 'pointer.color');\n pointerColor != null && set(seriesOpt, 'itemStyle.color', pointerColor);\n }\n\n compatLayoutProperties(seriesOpt);\n }); // dataRange has changed to visualMap\n\n if (option.dataRange) {\n option.visualMap = option.dataRange;\n }\n\n each(COMPATITABLE_COMPONENTS, function (componentName) {\n var options = option[componentName];\n\n if (options) {\n if (!isArray(options)) {\n options = [options];\n }\n\n each(options, function (option) {\n compatLayoutProperties(option);\n });\n }\n });\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/preprocessor/backwardCompat.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/preprocessor/helper/compatStyle.js": +/*!*********************************************************************!*\ + !*** ./node_modules/echarts/lib/preprocessor/helper/compatStyle.js ***! + \*********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar modelUtil = __webpack_require__(/*! ../../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar isObject = zrUtil.isObject;\nvar POSSIBLE_STYLES = ['areaStyle', 'lineStyle', 'nodeStyle', 'linkStyle', 'chordStyle', 'label', 'labelLine'];\n\nfunction compatEC2ItemStyle(opt) {\n var itemStyleOpt = opt && opt.itemStyle;\n\n if (!itemStyleOpt) {\n return;\n }\n\n for (var i = 0, len = POSSIBLE_STYLES.length; i < len; i++) {\n var styleName = POSSIBLE_STYLES[i];\n var normalItemStyleOpt = itemStyleOpt.normal;\n var emphasisItemStyleOpt = itemStyleOpt.emphasis;\n\n if (normalItemStyleOpt && normalItemStyleOpt[styleName]) {\n opt[styleName] = opt[styleName] || {};\n\n if (!opt[styleName].normal) {\n opt[styleName].normal = normalItemStyleOpt[styleName];\n } else {\n zrUtil.merge(opt[styleName].normal, normalItemStyleOpt[styleName]);\n }\n\n normalItemStyleOpt[styleName] = null;\n }\n\n if (emphasisItemStyleOpt && emphasisItemStyleOpt[styleName]) {\n opt[styleName] = opt[styleName] || {};\n\n if (!opt[styleName].emphasis) {\n opt[styleName].emphasis = emphasisItemStyleOpt[styleName];\n } else {\n zrUtil.merge(opt[styleName].emphasis, emphasisItemStyleOpt[styleName]);\n }\n\n emphasisItemStyleOpt[styleName] = null;\n }\n }\n}\n\nfunction convertNormalEmphasis(opt, optType, useExtend) {\n if (opt && opt[optType] && (opt[optType].normal || opt[optType].emphasis)) {\n var normalOpt = opt[optType].normal;\n var emphasisOpt = opt[optType].emphasis;\n\n if (normalOpt) {\n // Timeline controlStyle has other properties besides normal and emphasis\n if (useExtend) {\n opt[optType].normal = opt[optType].emphasis = null;\n zrUtil.defaults(opt[optType], normalOpt);\n } else {\n opt[optType] = normalOpt;\n }\n }\n\n if (emphasisOpt) {\n opt.emphasis = opt.emphasis || {};\n opt.emphasis[optType] = emphasisOpt;\n }\n }\n}\n\nfunction removeEC3NormalStatus(opt) {\n convertNormalEmphasis(opt, 'itemStyle');\n convertNormalEmphasis(opt, 'lineStyle');\n convertNormalEmphasis(opt, 'areaStyle');\n convertNormalEmphasis(opt, 'label');\n convertNormalEmphasis(opt, 'labelLine'); // treemap\n\n convertNormalEmphasis(opt, 'upperLabel'); // graph\n\n convertNormalEmphasis(opt, 'edgeLabel');\n}\n\nfunction compatTextStyle(opt, propName) {\n // Check whether is not object (string\\null\\undefined ...)\n var labelOptSingle = isObject(opt) && opt[propName];\n var textStyle = isObject(labelOptSingle) && labelOptSingle.textStyle;\n\n if (textStyle) {\n for (var i = 0, len = modelUtil.TEXT_STYLE_OPTIONS.length; i < len; i++) {\n var propName = modelUtil.TEXT_STYLE_OPTIONS[i];\n\n if (textStyle.hasOwnProperty(propName)) {\n labelOptSingle[propName] = textStyle[propName];\n }\n }\n }\n}\n\nfunction compatEC3CommonStyles(opt) {\n if (opt) {\n removeEC3NormalStatus(opt);\n compatTextStyle(opt, 'label');\n opt.emphasis && compatTextStyle(opt.emphasis, 'label');\n }\n}\n\nfunction processSeries(seriesOpt) {\n if (!isObject(seriesOpt)) {\n return;\n }\n\n compatEC2ItemStyle(seriesOpt);\n removeEC3NormalStatus(seriesOpt);\n compatTextStyle(seriesOpt, 'label'); // treemap\n\n compatTextStyle(seriesOpt, 'upperLabel'); // graph\n\n compatTextStyle(seriesOpt, 'edgeLabel');\n\n if (seriesOpt.emphasis) {\n compatTextStyle(seriesOpt.emphasis, 'label'); // treemap\n\n compatTextStyle(seriesOpt.emphasis, 'upperLabel'); // graph\n\n compatTextStyle(seriesOpt.emphasis, 'edgeLabel');\n }\n\n var markPoint = seriesOpt.markPoint;\n\n if (markPoint) {\n compatEC2ItemStyle(markPoint);\n compatEC3CommonStyles(markPoint);\n }\n\n var markLine = seriesOpt.markLine;\n\n if (markLine) {\n compatEC2ItemStyle(markLine);\n compatEC3CommonStyles(markLine);\n }\n\n var markArea = seriesOpt.markArea;\n\n if (markArea) {\n compatEC3CommonStyles(markArea);\n }\n\n var data = seriesOpt.data; // Break with ec3: if `setOption` again, there may be no `type` in option,\n // then the backward compat based on option type will not be performed.\n\n if (seriesOpt.type === 'graph') {\n data = data || seriesOpt.nodes;\n var edgeData = seriesOpt.links || seriesOpt.edges;\n\n if (edgeData && !zrUtil.isTypedArray(edgeData)) {\n for (var i = 0; i < edgeData.length; i++) {\n compatEC3CommonStyles(edgeData[i]);\n }\n }\n\n zrUtil.each(seriesOpt.categories, function (opt) {\n removeEC3NormalStatus(opt);\n });\n }\n\n if (data && !zrUtil.isTypedArray(data)) {\n for (var i = 0; i < data.length; i++) {\n compatEC3CommonStyles(data[i]);\n }\n } // mark point data\n\n\n var markPoint = seriesOpt.markPoint;\n\n if (markPoint && markPoint.data) {\n var mpData = markPoint.data;\n\n for (var i = 0; i < mpData.length; i++) {\n compatEC3CommonStyles(mpData[i]);\n }\n } // mark line data\n\n\n var markLine = seriesOpt.markLine;\n\n if (markLine && markLine.data) {\n var mlData = markLine.data;\n\n for (var i = 0; i < mlData.length; i++) {\n if (zrUtil.isArray(mlData[i])) {\n compatEC3CommonStyles(mlData[i][0]);\n compatEC3CommonStyles(mlData[i][1]);\n } else {\n compatEC3CommonStyles(mlData[i]);\n }\n }\n } // Series\n\n\n if (seriesOpt.type === 'gauge') {\n compatTextStyle(seriesOpt, 'axisLabel');\n compatTextStyle(seriesOpt, 'title');\n compatTextStyle(seriesOpt, 'detail');\n } else if (seriesOpt.type === 'treemap') {\n convertNormalEmphasis(seriesOpt.breadcrumb, 'itemStyle');\n zrUtil.each(seriesOpt.levels, function (opt) {\n removeEC3NormalStatus(opt);\n });\n } else if (seriesOpt.type === 'tree') {\n removeEC3NormalStatus(seriesOpt.leaves);\n } // sunburst starts from ec4, so it does not need to compat levels.\n\n}\n\nfunction toArr(o) {\n return zrUtil.isArray(o) ? o : o ? [o] : [];\n}\n\nfunction toObj(o) {\n return (zrUtil.isArray(o) ? o[0] : o) || {};\n}\n\nfunction _default(option, isTheme) {\n each(toArr(option.series), function (seriesOpt) {\n isObject(seriesOpt) && processSeries(seriesOpt);\n });\n var axes = ['xAxis', 'yAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'parallelAxis', 'radar'];\n isTheme && axes.push('valueAxis', 'categoryAxis', 'logAxis', 'timeAxis');\n each(axes, function (axisName) {\n each(toArr(option[axisName]), function (axisOpt) {\n if (axisOpt) {\n compatTextStyle(axisOpt, 'axisLabel');\n compatTextStyle(axisOpt.axisPointer, 'label');\n }\n });\n });\n each(toArr(option.parallel), function (parallelOpt) {\n var parallelAxisDefault = parallelOpt && parallelOpt.parallelAxisDefault;\n compatTextStyle(parallelAxisDefault, 'axisLabel');\n compatTextStyle(parallelAxisDefault && parallelAxisDefault.axisPointer, 'label');\n });\n each(toArr(option.calendar), function (calendarOpt) {\n convertNormalEmphasis(calendarOpt, 'itemStyle');\n compatTextStyle(calendarOpt, 'dayLabel');\n compatTextStyle(calendarOpt, 'monthLabel');\n compatTextStyle(calendarOpt, 'yearLabel');\n }); // radar.name.textStyle\n\n each(toArr(option.radar), function (radarOpt) {\n compatTextStyle(radarOpt, 'name');\n });\n each(toArr(option.geo), function (geoOpt) {\n if (isObject(geoOpt)) {\n compatEC3CommonStyles(geoOpt);\n each(toArr(geoOpt.regions), function (regionObj) {\n compatEC3CommonStyles(regionObj);\n });\n }\n });\n each(toArr(option.timeline), function (timelineOpt) {\n compatEC3CommonStyles(timelineOpt);\n convertNormalEmphasis(timelineOpt, 'label');\n convertNormalEmphasis(timelineOpt, 'itemStyle');\n convertNormalEmphasis(timelineOpt, 'controlStyle', true);\n var data = timelineOpt.data;\n zrUtil.isArray(data) && zrUtil.each(data, function (item) {\n if (zrUtil.isObject(item)) {\n convertNormalEmphasis(item, 'label');\n convertNormalEmphasis(item, 'itemStyle');\n }\n });\n });\n each(toArr(option.toolbox), function (toolboxOpt) {\n convertNormalEmphasis(toolboxOpt, 'iconStyle');\n each(toolboxOpt.feature, function (featureOpt) {\n convertNormalEmphasis(featureOpt, 'iconStyle');\n });\n });\n compatTextStyle(toObj(option.axisPointer), 'label');\n compatTextStyle(toObj(option.tooltip).axisPointer, 'label');\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/preprocessor/helper/compatStyle.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/processor/dataFilter.js": +/*!**********************************************************!*\ + !*** ./node_modules/echarts/lib/processor/dataFilter.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(seriesType) {\n return {\n seriesType: seriesType,\n reset: function (seriesModel, ecModel) {\n var legendModels = ecModel.findComponents({\n mainType: 'legend'\n });\n\n if (!legendModels || !legendModels.length) {\n return;\n }\n\n var data = seriesModel.getData();\n data.filterSelf(function (idx) {\n var name = data.getName(idx); // If in any legend component the status is not selected.\n\n for (var i = 0; i < legendModels.length; i++) {\n if (!legendModels[i].isSelected(name)) {\n return false;\n }\n }\n\n return true;\n });\n }\n };\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/processor/dataFilter.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/processor/dataSample.js": +/*!**********************************************************!*\ + !*** ./node_modules/echarts/lib/processor/dataSample.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar samplers = {\n average: function (frame) {\n var sum = 0;\n var count = 0;\n\n for (var i = 0; i < frame.length; i++) {\n if (!isNaN(frame[i])) {\n sum += frame[i];\n count++;\n }\n } // Return NaN if count is 0\n\n\n return count === 0 ? NaN : sum / count;\n },\n sum: function (frame) {\n var sum = 0;\n\n for (var i = 0; i < frame.length; i++) {\n // Ignore NaN\n sum += frame[i] || 0;\n }\n\n return sum;\n },\n max: function (frame) {\n var max = -Infinity;\n\n for (var i = 0; i < frame.length; i++) {\n frame[i] > max && (max = frame[i]);\n } // NaN will cause illegal axis extent.\n\n\n return isFinite(max) ? max : NaN;\n },\n min: function (frame) {\n var min = Infinity;\n\n for (var i = 0; i < frame.length; i++) {\n frame[i] < min && (min = frame[i]);\n } // NaN will cause illegal axis extent.\n\n\n return isFinite(min) ? min : NaN;\n },\n // TODO\n // Median\n nearest: function (frame) {\n return frame[0];\n }\n};\n\nvar indexSampler = function (frame, value) {\n return Math.round(frame.length / 2);\n};\n\nfunction _default(seriesType) {\n return {\n seriesType: seriesType,\n modifyOutputEnd: true,\n reset: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n var sampling = seriesModel.get('sampling');\n var coordSys = seriesModel.coordinateSystem; // Only cartesian2d support down sampling\n\n if (coordSys.type === 'cartesian2d' && sampling) {\n var baseAxis = coordSys.getBaseAxis();\n var valueAxis = coordSys.getOtherAxis(baseAxis);\n var extent = baseAxis.getExtent(); // Coordinste system has been resized\n\n var size = Math.abs(extent[1] - extent[0]);\n var rate = Math.round(data.count() / size);\n\n if (rate > 1) {\n var sampler;\n\n if (typeof sampling === 'string') {\n sampler = samplers[sampling];\n } else if (typeof sampling === 'function') {\n sampler = sampling;\n }\n\n if (sampler) {\n // Only support sample the first dim mapped from value axis.\n seriesModel.setData(data.downSample(data.mapDimension(valueAxis.dim), 1 / rate, sampler, indexSampler));\n }\n }\n }\n }\n };\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/processor/dataSample.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/processor/dataStack.js": +/*!*********************************************************!*\ + !*** ./node_modules/echarts/lib/processor/dataStack.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// (1) [Caution]: the logic is correct based on the premises:\n// data processing stage is blocked in stream.\n// See \n// (2) Only register once when import repeatly.\n// Should be executed after series filtered and before stack calculation.\nfunction _default(ecModel) {\n var stackInfoMap = createHashMap();\n ecModel.eachSeries(function (seriesModel) {\n var stack = seriesModel.get('stack'); // Compatibal: when `stack` is set as '', do not stack.\n\n if (stack) {\n var stackInfoList = stackInfoMap.get(stack) || stackInfoMap.set(stack, []);\n var data = seriesModel.getData();\n var stackInfo = {\n // Used for calculate axis extent automatically.\n stackResultDimension: data.getCalculationInfo('stackResultDimension'),\n stackedOverDimension: data.getCalculationInfo('stackedOverDimension'),\n stackedDimension: data.getCalculationInfo('stackedDimension'),\n stackedByDimension: data.getCalculationInfo('stackedByDimension'),\n isStackedByIndex: data.getCalculationInfo('isStackedByIndex'),\n data: data,\n seriesModel: seriesModel\n }; // If stacked on axis that do not support data stack.\n\n if (!stackInfo.stackedDimension || !(stackInfo.isStackedByIndex || stackInfo.stackedByDimension)) {\n return;\n }\n\n stackInfoList.length && data.setCalculationInfo('stackedOnSeries', stackInfoList[stackInfoList.length - 1].seriesModel);\n stackInfoList.push(stackInfo);\n }\n });\n stackInfoMap.each(calculateStack);\n}\n\nfunction calculateStack(stackInfoList) {\n each(stackInfoList, function (targetStackInfo, idxInStack) {\n var resultVal = [];\n var resultNaN = [NaN, NaN];\n var dims = [targetStackInfo.stackResultDimension, targetStackInfo.stackedOverDimension];\n var targetData = targetStackInfo.data;\n var isStackedByIndex = targetStackInfo.isStackedByIndex; // Should not write on raw data, because stack series model list changes\n // depending on legend selection.\n\n var newData = targetData.map(dims, function (v0, v1, dataIndex) {\n var sum = targetData.get(targetStackInfo.stackedDimension, dataIndex); // Consider `connectNulls` of line area, if value is NaN, stackedOver\n // should also be NaN, to draw a appropriate belt area.\n\n if (isNaN(sum)) {\n return resultNaN;\n }\n\n var byValue;\n var stackedDataRawIndex;\n\n if (isStackedByIndex) {\n stackedDataRawIndex = targetData.getRawIndex(dataIndex);\n } else {\n byValue = targetData.get(targetStackInfo.stackedByDimension, dataIndex);\n } // If stackOver is NaN, chart view will render point on value start.\n\n\n var stackedOver = NaN;\n\n for (var j = idxInStack - 1; j >= 0; j--) {\n var stackInfo = stackInfoList[j]; // Has been optimized by inverted indices on `stackedByDimension`.\n\n if (!isStackedByIndex) {\n stackedDataRawIndex = stackInfo.data.rawIndexOf(stackInfo.stackedByDimension, byValue);\n }\n\n if (stackedDataRawIndex >= 0) {\n var val = stackInfo.data.getByRawIndex(stackInfo.stackResultDimension, stackedDataRawIndex); // Considering positive stack, negative stack and empty data\n\n if (sum >= 0 && val > 0 || // Positive stack\n sum <= 0 && val < 0 // Negative stack\n ) {\n sum += val;\n stackedOver = val;\n break;\n }\n }\n }\n\n resultVal[0] = sum;\n resultVal[1] = stackedOver;\n return resultVal;\n });\n targetData.hostModel.setData(newData); // Update for consequent calculation\n\n targetStackInfo.data = newData;\n });\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/processor/dataStack.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/scale/Interval.js": +/*!****************************************************!*\ + !*** ./node_modules/echarts/lib/scale/Interval.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar numberUtil = __webpack_require__(/*! ../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar formatUtil = __webpack_require__(/*! ../util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\nvar Scale = __webpack_require__(/*! ./Scale */ \"./node_modules/echarts/lib/scale/Scale.js\");\n\nvar helper = __webpack_require__(/*! ./helper */ \"./node_modules/echarts/lib/scale/helper.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Interval scale\n * @module echarts/scale/Interval\n */\nvar roundNumber = numberUtil.round;\n/**\n * @alias module:echarts/coord/scale/Interval\n * @constructor\n */\n\nvar IntervalScale = Scale.extend({\n type: 'interval',\n _interval: 0,\n _intervalPrecision: 2,\n setExtent: function (start, end) {\n var thisExtent = this._extent; //start,end may be a Number like '25',so...\n\n if (!isNaN(start)) {\n thisExtent[0] = parseFloat(start);\n }\n\n if (!isNaN(end)) {\n thisExtent[1] = parseFloat(end);\n }\n },\n unionExtent: function (other) {\n var extent = this._extent;\n other[0] < extent[0] && (extent[0] = other[0]);\n other[1] > extent[1] && (extent[1] = other[1]); // unionExtent may called by it's sub classes\n\n IntervalScale.prototype.setExtent.call(this, extent[0], extent[1]);\n },\n\n /**\n * Get interval\n */\n getInterval: function () {\n return this._interval;\n },\n\n /**\n * Set interval\n */\n setInterval: function (interval) {\n this._interval = interval; // Dropped auto calculated niceExtent and use user setted extent\n // We assume user wan't to set both interval, min, max to get a better result\n\n this._niceExtent = this._extent.slice();\n this._intervalPrecision = helper.getIntervalPrecision(interval);\n },\n\n /**\n * @param {boolean} [expandToNicedExtent=false] If expand the ticks to niced extent.\n * @return {Array.}\n */\n getTicks: function (expandToNicedExtent) {\n var interval = this._interval;\n var extent = this._extent;\n var niceTickExtent = this._niceExtent;\n var intervalPrecision = this._intervalPrecision;\n var ticks = []; // If interval is 0, return [];\n\n if (!interval) {\n return ticks;\n } // Consider this case: using dataZoom toolbox, zoom and zoom.\n\n\n var safeLimit = 10000;\n\n if (extent[0] < niceTickExtent[0]) {\n if (expandToNicedExtent) {\n ticks.push(roundNumber(niceTickExtent[0] - interval, intervalPrecision));\n } else {\n ticks.push(extent[0]);\n }\n }\n\n var tick = niceTickExtent[0];\n\n while (tick <= niceTickExtent[1]) {\n ticks.push(tick); // Avoid rounding error\n\n tick = roundNumber(tick + interval, intervalPrecision);\n\n if (tick === ticks[ticks.length - 1]) {\n // Consider out of safe float point, e.g.,\n // -3711126.9907707 + 2e-10 === -3711126.9907707\n break;\n }\n\n if (ticks.length > safeLimit) {\n return [];\n }\n } // Consider this case: the last item of ticks is smaller\n // than niceTickExtent[1] and niceTickExtent[1] === extent[1].\n\n\n var lastNiceTick = ticks.length ? ticks[ticks.length - 1] : niceTickExtent[1];\n\n if (extent[1] > lastNiceTick) {\n if (expandToNicedExtent) {\n ticks.push(roundNumber(lastNiceTick + interval, intervalPrecision));\n } else {\n ticks.push(extent[1]);\n }\n }\n\n return ticks;\n },\n\n /**\n * @param {number} [splitNumber=5]\n * @return {Array.>}\n */\n getMinorTicks: function (splitNumber) {\n var ticks = this.getTicks(true);\n var minorTicks = [];\n var extent = this.getExtent();\n\n for (var i = 1; i < ticks.length; i++) {\n var nextTick = ticks[i];\n var prevTick = ticks[i - 1];\n var count = 0;\n var minorTicksGroup = [];\n var interval = nextTick - prevTick;\n var minorInterval = interval / splitNumber;\n\n while (count < splitNumber - 1) {\n var minorTick = numberUtil.round(prevTick + (count + 1) * minorInterval); // For the first and last interval. The count may be less than splitNumber.\n\n if (minorTick > extent[0] && minorTick < extent[1]) {\n minorTicksGroup.push(minorTick);\n }\n\n count++;\n }\n\n minorTicks.push(minorTicksGroup);\n }\n\n return minorTicks;\n },\n\n /**\n * @param {number} data\n * @param {Object} [opt]\n * @param {number|string} [opt.precision] If 'auto', use nice presision.\n * @param {boolean} [opt.pad] returns 1.50 but not 1.5 if precision is 2.\n * @return {string}\n */\n getLabel: function (data, opt) {\n if (data == null) {\n return '';\n }\n\n var precision = opt && opt.precision;\n\n if (precision == null) {\n precision = numberUtil.getPrecisionSafe(data) || 0;\n } else if (precision === 'auto') {\n // Should be more precise then tick.\n precision = this._intervalPrecision;\n } // (1) If `precision` is set, 12.005 should be display as '12.00500'.\n // (2) Use roundNumber (toFixed) to avoid scientific notation like '3.5e-7'.\n\n\n data = roundNumber(data, precision, true);\n return formatUtil.addCommas(data);\n },\n\n /**\n * Update interval and extent of intervals for nice ticks\n *\n * @param {number} [splitNumber = 5] Desired number of ticks\n * @param {number} [minInterval]\n * @param {number} [maxInterval]\n */\n niceTicks: function (splitNumber, minInterval, maxInterval) {\n splitNumber = splitNumber || 5;\n var extent = this._extent;\n var span = extent[1] - extent[0];\n\n if (!isFinite(span)) {\n return;\n } // User may set axis min 0 and data are all negative\n // FIXME If it needs to reverse ?\n\n\n if (span < 0) {\n span = -span;\n extent.reverse();\n }\n\n var result = helper.intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval);\n this._intervalPrecision = result.intervalPrecision;\n this._interval = result.interval;\n this._niceExtent = result.niceTickExtent;\n },\n\n /**\n * Nice extent.\n * @param {Object} opt\n * @param {number} [opt.splitNumber = 5] Given approx tick number\n * @param {boolean} [opt.fixMin=false]\n * @param {boolean} [opt.fixMax=false]\n * @param {boolean} [opt.minInterval]\n * @param {boolean} [opt.maxInterval]\n */\n niceExtent: function (opt) {\n var extent = this._extent; // If extent start and end are same, expand them\n\n if (extent[0] === extent[1]) {\n if (extent[0] !== 0) {\n // Expand extent\n var expandSize = extent[0]; // In the fowllowing case\n // Axis has been fixed max 100\n // Plus data are all 100 and axis extent are [100, 100].\n // Extend to the both side will cause expanded max is larger than fixed max.\n // So only expand to the smaller side.\n\n if (!opt.fixMax) {\n extent[1] += expandSize / 2;\n extent[0] -= expandSize / 2;\n } else {\n extent[0] -= expandSize / 2;\n }\n } else {\n extent[1] = 1;\n }\n }\n\n var span = extent[1] - extent[0]; // If there are no data and extent are [Infinity, -Infinity]\n\n if (!isFinite(span)) {\n extent[0] = 0;\n extent[1] = 1;\n }\n\n this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval); // var extent = this._extent;\n\n var interval = this._interval;\n\n if (!opt.fixMin) {\n extent[0] = roundNumber(Math.floor(extent[0] / interval) * interval);\n }\n\n if (!opt.fixMax) {\n extent[1] = roundNumber(Math.ceil(extent[1] / interval) * interval);\n }\n }\n});\n/**\n * @return {module:echarts/scale/Time}\n */\n\nIntervalScale.create = function () {\n return new IntervalScale();\n};\n\nvar _default = IntervalScale;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/scale/Interval.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/scale/Log.js": +/*!***********************************************!*\ + !*** ./node_modules/echarts/lib/scale/Log.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar Scale = __webpack_require__(/*! ./Scale */ \"./node_modules/echarts/lib/scale/Scale.js\");\n\nvar numberUtil = __webpack_require__(/*! ../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar IntervalScale = __webpack_require__(/*! ./Interval */ \"./node_modules/echarts/lib/scale/Interval.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Log scale\n * @module echarts/scale/Log\n */\n// Use some method of IntervalScale\nvar scaleProto = Scale.prototype;\nvar intervalScaleProto = IntervalScale.prototype;\nvar getPrecisionSafe = numberUtil.getPrecisionSafe;\nvar roundingErrorFix = numberUtil.round;\nvar mathFloor = Math.floor;\nvar mathCeil = Math.ceil;\nvar mathPow = Math.pow;\nvar mathLog = Math.log;\nvar LogScale = Scale.extend({\n type: 'log',\n base: 10,\n $constructor: function () {\n Scale.apply(this, arguments);\n this._originalScale = new IntervalScale();\n },\n\n /**\n * @param {boolean} [expandToNicedExtent=false] If expand the ticks to niced extent.\n * @return {Array.}\n */\n getTicks: function (expandToNicedExtent) {\n var originalScale = this._originalScale;\n var extent = this._extent;\n var originalExtent = originalScale.getExtent();\n return zrUtil.map(intervalScaleProto.getTicks.call(this, expandToNicedExtent), function (val) {\n var powVal = numberUtil.round(mathPow(this.base, val)); // Fix #4158\n\n powVal = val === extent[0] && originalScale.__fixMin ? fixRoundingError(powVal, originalExtent[0]) : powVal;\n powVal = val === extent[1] && originalScale.__fixMax ? fixRoundingError(powVal, originalExtent[1]) : powVal;\n return powVal;\n }, this);\n },\n\n /**\n * @param {number} splitNumber\n * @return {Array.>}\n */\n getMinorTicks: intervalScaleProto.getMinorTicks,\n\n /**\n * @param {number} val\n * @return {string}\n */\n getLabel: intervalScaleProto.getLabel,\n\n /**\n * @param {number} val\n * @return {number}\n */\n scale: function (val) {\n val = scaleProto.scale.call(this, val);\n return mathPow(this.base, val);\n },\n\n /**\n * @param {number} start\n * @param {number} end\n */\n setExtent: function (start, end) {\n var base = this.base;\n start = mathLog(start) / mathLog(base);\n end = mathLog(end) / mathLog(base);\n intervalScaleProto.setExtent.call(this, start, end);\n },\n\n /**\n * @return {number} end\n */\n getExtent: function () {\n var base = this.base;\n var extent = scaleProto.getExtent.call(this);\n extent[0] = mathPow(base, extent[0]);\n extent[1] = mathPow(base, extent[1]); // Fix #4158\n\n var originalScale = this._originalScale;\n var originalExtent = originalScale.getExtent();\n originalScale.__fixMin && (extent[0] = fixRoundingError(extent[0], originalExtent[0]));\n originalScale.__fixMax && (extent[1] = fixRoundingError(extent[1], originalExtent[1]));\n return extent;\n },\n\n /**\n * @param {Array.} extent\n */\n unionExtent: function (extent) {\n this._originalScale.unionExtent(extent);\n\n var base = this.base;\n extent[0] = mathLog(extent[0]) / mathLog(base);\n extent[1] = mathLog(extent[1]) / mathLog(base);\n scaleProto.unionExtent.call(this, extent);\n },\n\n /**\n * @override\n */\n unionExtentFromData: function (data, dim) {\n // TODO\n // filter value that <= 0\n this.unionExtent(data.getApproximateExtent(dim));\n },\n\n /**\n * Update interval and extent of intervals for nice ticks\n * @param {number} [approxTickNum = 10] Given approx tick number\n */\n niceTicks: function (approxTickNum) {\n approxTickNum = approxTickNum || 10;\n var extent = this._extent;\n var span = extent[1] - extent[0];\n\n if (span === Infinity || span <= 0) {\n return;\n }\n\n var interval = numberUtil.quantity(span);\n var err = approxTickNum / span * interval; // Filter ticks to get closer to the desired count.\n\n if (err <= 0.5) {\n interval *= 10;\n } // Interval should be integer\n\n\n while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) {\n interval *= 10;\n }\n\n var niceExtent = [numberUtil.round(mathCeil(extent[0] / interval) * interval), numberUtil.round(mathFloor(extent[1] / interval) * interval)];\n this._interval = interval;\n this._niceExtent = niceExtent;\n },\n\n /**\n * Nice extent.\n * @override\n */\n niceExtent: function (opt) {\n intervalScaleProto.niceExtent.call(this, opt);\n var originalScale = this._originalScale;\n originalScale.__fixMin = opt.fixMin;\n originalScale.__fixMax = opt.fixMax;\n }\n});\nzrUtil.each(['contain', 'normalize'], function (methodName) {\n LogScale.prototype[methodName] = function (val) {\n val = mathLog(val) / mathLog(this.base);\n return scaleProto[methodName].call(this, val);\n };\n});\n\nLogScale.create = function () {\n return new LogScale();\n};\n\nfunction fixRoundingError(val, originalVal) {\n return roundingErrorFix(val, getPrecisionSafe(originalVal));\n}\n\nvar _default = LogScale;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/scale/Log.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/scale/Ordinal.js": +/*!***************************************************!*\ + !*** ./node_modules/echarts/lib/scale/Ordinal.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar Scale = __webpack_require__(/*! ./Scale */ \"./node_modules/echarts/lib/scale/Scale.js\");\n\nvar OrdinalMeta = __webpack_require__(/*! ../data/OrdinalMeta */ \"./node_modules/echarts/lib/data/OrdinalMeta.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Linear continuous scale\n * @module echarts/coord/scale/Ordinal\n *\n * http://en.wikipedia.org/wiki/Level_of_measurement\n */\n// FIXME only one data\nvar scaleProto = Scale.prototype;\nvar OrdinalScale = Scale.extend({\n type: 'ordinal',\n\n /**\n * @param {module:echarts/data/OrdianlMeta|Array.} ordinalMeta\n */\n init: function (ordinalMeta, extent) {\n // Caution: Should not use instanceof, consider ec-extensions using\n // import approach to get OrdinalMeta class.\n if (!ordinalMeta || zrUtil.isArray(ordinalMeta)) {\n ordinalMeta = new OrdinalMeta({\n categories: ordinalMeta\n });\n }\n\n this._ordinalMeta = ordinalMeta;\n this._extent = extent || [0, ordinalMeta.categories.length - 1];\n },\n parse: function (val) {\n return typeof val === 'string' ? this._ordinalMeta.getOrdinal(val) // val might be float.\n : Math.round(val);\n },\n contain: function (rank) {\n rank = this.parse(rank);\n return scaleProto.contain.call(this, rank) && this._ordinalMeta.categories[rank] != null;\n },\n\n /**\n * Normalize given rank or name to linear [0, 1]\n * @param {number|string} [val]\n * @return {number}\n */\n normalize: function (val) {\n return scaleProto.normalize.call(this, this.parse(val));\n },\n scale: function (val) {\n return Math.round(scaleProto.scale.call(this, val));\n },\n\n /**\n * @return {Array}\n */\n getTicks: function () {\n var ticks = [];\n var extent = this._extent;\n var rank = extent[0];\n\n while (rank <= extent[1]) {\n ticks.push(rank);\n rank++;\n }\n\n return ticks;\n },\n\n /**\n * Get item on rank n\n * @param {number} n\n * @return {string}\n */\n getLabel: function (n) {\n if (!this.isBlank()) {\n // Note that if no data, ordinalMeta.categories is an empty array.\n return this._ordinalMeta.categories[n];\n }\n },\n\n /**\n * @return {number}\n */\n count: function () {\n return this._extent[1] - this._extent[0] + 1;\n },\n\n /**\n * @override\n */\n unionExtentFromData: function (data, dim) {\n this.unionExtent(data.getApproximateExtent(dim));\n },\n getOrdinalMeta: function () {\n return this._ordinalMeta;\n },\n niceTicks: zrUtil.noop,\n niceExtent: zrUtil.noop\n});\n/**\n * @return {module:echarts/scale/Time}\n */\n\nOrdinalScale.create = function () {\n return new OrdinalScale();\n};\n\nvar _default = OrdinalScale;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/scale/Ordinal.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/scale/Scale.js": +/*!*************************************************!*\ + !*** ./node_modules/echarts/lib/scale/Scale.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar clazzUtil = __webpack_require__(/*! ../util/clazz */ \"./node_modules/echarts/lib/util/clazz.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * // Scale class management\n * @module echarts/scale/Scale\n */\n\n/**\n * @param {Object} [setting]\n */\nfunction Scale(setting) {\n this._setting = setting || {};\n /**\n * Extent\n * @type {Array.}\n * @protected\n */\n\n this._extent = [Infinity, -Infinity];\n /**\n * Step is calculated in adjustExtent\n * @type {Array.}\n * @protected\n */\n\n this._interval = 0;\n this.init && this.init.apply(this, arguments);\n}\n/**\n * Parse input val to valid inner number.\n * @param {*} val\n * @return {number}\n */\n\n\nScale.prototype.parse = function (val) {\n // Notice: This would be a trap here, If the implementation\n // of this method depends on extent, and this method is used\n // before extent set (like in dataZoom), it would be wrong.\n // Nevertheless, parse does not depend on extent generally.\n return val;\n};\n\nScale.prototype.getSetting = function (name) {\n return this._setting[name];\n};\n\nScale.prototype.contain = function (val) {\n var extent = this._extent;\n return val >= extent[0] && val <= extent[1];\n};\n/**\n * Normalize value to linear [0, 1], return 0.5 if extent span is 0\n * @param {number} val\n * @return {number}\n */\n\n\nScale.prototype.normalize = function (val) {\n var extent = this._extent;\n\n if (extent[1] === extent[0]) {\n return 0.5;\n }\n\n return (val - extent[0]) / (extent[1] - extent[0]);\n};\n/**\n * Scale normalized value\n * @param {number} val\n * @return {number}\n */\n\n\nScale.prototype.scale = function (val) {\n var extent = this._extent;\n return val * (extent[1] - extent[0]) + extent[0];\n};\n/**\n * Set extent from data\n * @param {Array.} other\n */\n\n\nScale.prototype.unionExtent = function (other) {\n var extent = this._extent;\n other[0] < extent[0] && (extent[0] = other[0]);\n other[1] > extent[1] && (extent[1] = other[1]); // not setExtent because in log axis it may transformed to power\n // this.setExtent(extent[0], extent[1]);\n};\n/**\n * Set extent from data\n * @param {module:echarts/data/List} data\n * @param {string} dim\n */\n\n\nScale.prototype.unionExtentFromData = function (data, dim) {\n this.unionExtent(data.getApproximateExtent(dim));\n};\n/**\n * Get extent\n * @return {Array.}\n */\n\n\nScale.prototype.getExtent = function () {\n return this._extent.slice();\n};\n/**\n * Set extent\n * @param {number} start\n * @param {number} end\n */\n\n\nScale.prototype.setExtent = function (start, end) {\n var thisExtent = this._extent;\n\n if (!isNaN(start)) {\n thisExtent[0] = start;\n }\n\n if (!isNaN(end)) {\n thisExtent[1] = end;\n }\n};\n/**\n * When axis extent depends on data and no data exists,\n * axis ticks should not be drawn, which is named 'blank'.\n */\n\n\nScale.prototype.isBlank = function () {\n return this._isBlank;\n},\n/**\n * When axis extent depends on data and no data exists,\n * axis ticks should not be drawn, which is named 'blank'.\n */\nScale.prototype.setBlank = function (isBlank) {\n this._isBlank = isBlank;\n};\n/**\n * @abstract\n * @param {*} tick\n * @return {string} label of the tick.\n */\n\nScale.prototype.getLabel = null;\nclazzUtil.enableClassExtend(Scale);\nclazzUtil.enableClassManagement(Scale, {\n registerWhenExtend: true\n});\nvar _default = Scale;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/scale/Scale.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/scale/Time.js": +/*!************************************************!*\ + !*** ./node_modules/echarts/lib/scale/Time.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar numberUtil = __webpack_require__(/*! ../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar formatUtil = __webpack_require__(/*! ../util/format */ \"./node_modules/echarts/lib/util/format.js\");\n\nvar scaleHelper = __webpack_require__(/*! ./helper */ \"./node_modules/echarts/lib/scale/helper.js\");\n\nvar IntervalScale = __webpack_require__(/*! ./Interval */ \"./node_modules/echarts/lib/scale/Interval.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* A third-party license is embeded for some of the code in this file:\n* The \"scaleLevels\" was originally copied from \"d3.js\" with some\n* modifications made for this project.\n* (See more details in the comment on the definition of \"scaleLevels\" below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\n* ).\n*/\n// [About UTC and local time zone]:\n// In most cases, `number.parseDate` will treat input data string as local time\n// (except time zone is specified in time string). And `format.formateTime` returns\n// local time by default. option.useUTC is false by default. This design have\n// concidered these common case:\n// (1) Time that is persistent in server is in UTC, but it is needed to be diplayed\n// in local time by default.\n// (2) By default, the input data string (e.g., '2011-01-02') should be displayed\n// as its original time, without any time difference.\nvar intervalScaleProto = IntervalScale.prototype;\nvar mathCeil = Math.ceil;\nvar mathFloor = Math.floor;\nvar ONE_SECOND = 1000;\nvar ONE_MINUTE = ONE_SECOND * 60;\nvar ONE_HOUR = ONE_MINUTE * 60;\nvar ONE_DAY = ONE_HOUR * 24; // FIXME 公用?\n\nvar bisect = function (a, x, lo, hi) {\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n\n if (a[mid][1] < x) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n\n return lo;\n};\n/**\n * @alias module:echarts/coord/scale/Time\n * @constructor\n */\n\n\nvar TimeScale = IntervalScale.extend({\n type: 'time',\n\n /**\n * @override\n */\n getLabel: function (val) {\n var stepLvl = this._stepLvl;\n var date = new Date(val);\n return formatUtil.formatTime(stepLvl[0], date, this.getSetting('useUTC'));\n },\n\n /**\n * @override\n */\n niceExtent: function (opt) {\n var extent = this._extent; // If extent start and end are same, expand them\n\n if (extent[0] === extent[1]) {\n // Expand extent\n extent[0] -= ONE_DAY;\n extent[1] += ONE_DAY;\n } // If there are no data and extent are [Infinity, -Infinity]\n\n\n if (extent[1] === -Infinity && extent[0] === Infinity) {\n var d = new Date();\n extent[1] = +new Date(d.getFullYear(), d.getMonth(), d.getDate());\n extent[0] = extent[1] - ONE_DAY;\n }\n\n this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval); // var extent = this._extent;\n\n var interval = this._interval;\n\n if (!opt.fixMin) {\n extent[0] = numberUtil.round(mathFloor(extent[0] / interval) * interval);\n }\n\n if (!opt.fixMax) {\n extent[1] = numberUtil.round(mathCeil(extent[1] / interval) * interval);\n }\n },\n\n /**\n * @override\n */\n niceTicks: function (approxTickNum, minInterval, maxInterval) {\n approxTickNum = approxTickNum || 10;\n var extent = this._extent;\n var span = extent[1] - extent[0];\n var approxInterval = span / approxTickNum;\n\n if (minInterval != null && approxInterval < minInterval) {\n approxInterval = minInterval;\n }\n\n if (maxInterval != null && approxInterval > maxInterval) {\n approxInterval = maxInterval;\n }\n\n var scaleLevelsLen = scaleLevels.length;\n var idx = bisect(scaleLevels, approxInterval, 0, scaleLevelsLen);\n var level = scaleLevels[Math.min(idx, scaleLevelsLen - 1)];\n var interval = level[1]; // Same with interval scale if span is much larger than 1 year\n\n if (level[0] === 'year') {\n var yearSpan = span / interval; // From \"Nice Numbers for Graph Labels\" of Graphic Gems\n // var niceYearSpan = numberUtil.nice(yearSpan, false);\n\n var yearStep = numberUtil.nice(yearSpan / approxTickNum, true);\n interval *= yearStep;\n }\n\n var timezoneOffset = this.getSetting('useUTC') ? 0 : new Date(+extent[0] || +extent[1]).getTimezoneOffset() * 60 * 1000;\n var niceExtent = [Math.round(mathCeil((extent[0] - timezoneOffset) / interval) * interval + timezoneOffset), Math.round(mathFloor((extent[1] - timezoneOffset) / interval) * interval + timezoneOffset)];\n scaleHelper.fixExtent(niceExtent, extent);\n this._stepLvl = level; // Interval will be used in getTicks\n\n this._interval = interval;\n this._niceExtent = niceExtent;\n },\n parse: function (val) {\n // val might be float.\n return +numberUtil.parseDate(val);\n }\n});\nzrUtil.each(['contain', 'normalize'], function (methodName) {\n TimeScale.prototype[methodName] = function (val) {\n return intervalScaleProto[methodName].call(this, this.parse(val));\n };\n});\n/**\n * This implementation was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n */\n\nvar scaleLevels = [// Format interval\n['hh:mm:ss', ONE_SECOND], // 1s\n['hh:mm:ss', ONE_SECOND * 5], // 5s\n['hh:mm:ss', ONE_SECOND * 10], // 10s\n['hh:mm:ss', ONE_SECOND * 15], // 15s\n['hh:mm:ss', ONE_SECOND * 30], // 30s\n['hh:mm\\nMM-dd', ONE_MINUTE], // 1m\n['hh:mm\\nMM-dd', ONE_MINUTE * 5], // 5m\n['hh:mm\\nMM-dd', ONE_MINUTE * 10], // 10m\n['hh:mm\\nMM-dd', ONE_MINUTE * 15], // 15m\n['hh:mm\\nMM-dd', ONE_MINUTE * 30], // 30m\n['hh:mm\\nMM-dd', ONE_HOUR], // 1h\n['hh:mm\\nMM-dd', ONE_HOUR * 2], // 2h\n['hh:mm\\nMM-dd', ONE_HOUR * 6], // 6h\n['hh:mm\\nMM-dd', ONE_HOUR * 12], // 12h\n['MM-dd\\nyyyy', ONE_DAY], // 1d\n['MM-dd\\nyyyy', ONE_DAY * 2], // 2d\n['MM-dd\\nyyyy', ONE_DAY * 3], // 3d\n['MM-dd\\nyyyy', ONE_DAY * 4], // 4d\n['MM-dd\\nyyyy', ONE_DAY * 5], // 5d\n['MM-dd\\nyyyy', ONE_DAY * 6], // 6d\n['week', ONE_DAY * 7], // 7d\n['MM-dd\\nyyyy', ONE_DAY * 10], // 10d\n['week', ONE_DAY * 14], // 2w\n['week', ONE_DAY * 21], // 3w\n['month', ONE_DAY * 31], // 1M\n['week', ONE_DAY * 42], // 6w\n['month', ONE_DAY * 62], // 2M\n['week', ONE_DAY * 70], // 10w\n['quarter', ONE_DAY * 95], // 3M\n['month', ONE_DAY * 31 * 4], // 4M\n['month', ONE_DAY * 31 * 5], // 5M\n['half-year', ONE_DAY * 380 / 2], // 6M\n['month', ONE_DAY * 31 * 8], // 8M\n['month', ONE_DAY * 31 * 10], // 10M\n['year', ONE_DAY * 380] // 1Y\n];\n/**\n * @param {module:echarts/model/Model}\n * @return {module:echarts/scale/Time}\n */\n\nTimeScale.create = function (model) {\n return new TimeScale({\n useUTC: model.ecModel.get('useUTC')\n });\n};\n\nvar _default = TimeScale;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/scale/Time.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/scale/helper.js": +/*!**************************************************!*\ + !*** ./node_modules/echarts/lib/scale/helper.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar numberUtil = __webpack_require__(/*! ../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * For testable.\n */\nvar roundNumber = numberUtil.round;\n/**\n * @param {Array.} extent Both extent[0] and extent[1] should be valid number.\n * Should be extent[0] < extent[1].\n * @param {number} splitNumber splitNumber should be >= 1.\n * @param {number} [minInterval]\n * @param {number} [maxInterval]\n * @return {Object} {interval, intervalPrecision, niceTickExtent}\n */\n\nfunction intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval) {\n var result = {};\n var span = extent[1] - extent[0];\n var interval = result.interval = numberUtil.nice(span / splitNumber, true);\n\n if (minInterval != null && interval < minInterval) {\n interval = result.interval = minInterval;\n }\n\n if (maxInterval != null && interval > maxInterval) {\n interval = result.interval = maxInterval;\n } // Tow more digital for tick.\n\n\n var precision = result.intervalPrecision = getIntervalPrecision(interval); // Niced extent inside original extent\n\n var niceTickExtent = result.niceTickExtent = [roundNumber(Math.ceil(extent[0] / interval) * interval, precision), roundNumber(Math.floor(extent[1] / interval) * interval, precision)];\n fixExtent(niceTickExtent, extent);\n return result;\n}\n/**\n * @param {number} interval\n * @return {number} interval precision\n */\n\n\nfunction getIntervalPrecision(interval) {\n // Tow more digital for tick.\n return numberUtil.getPrecisionSafe(interval) + 2;\n}\n\nfunction clamp(niceTickExtent, idx, extent) {\n niceTickExtent[idx] = Math.max(Math.min(niceTickExtent[idx], extent[1]), extent[0]);\n} // In some cases (e.g., splitNumber is 1), niceTickExtent may be out of extent.\n\n\nfunction fixExtent(niceTickExtent, extent) {\n !isFinite(niceTickExtent[0]) && (niceTickExtent[0] = extent[0]);\n !isFinite(niceTickExtent[1]) && (niceTickExtent[1] = extent[1]);\n clamp(niceTickExtent, 0, extent);\n clamp(niceTickExtent, 1, extent);\n\n if (niceTickExtent[0] > niceTickExtent[1]) {\n niceTickExtent[0] = niceTickExtent[1];\n }\n}\n\nexports.intervalScaleNiceTicks = intervalScaleNiceTicks;\nexports.getIntervalPrecision = getIntervalPrecision;\nexports.fixExtent = fixExtent;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/scale/helper.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/stream/Scheduler.js": +/*!******************************************************!*\ + !*** ./node_modules/echarts/lib/stream/Scheduler.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar each = _util.each;\nvar map = _util.map;\nvar isFunction = _util.isFunction;\nvar createHashMap = _util.createHashMap;\nvar noop = _util.noop;\n\nvar _task = __webpack_require__(/*! ./task */ \"./node_modules/echarts/lib/stream/task.js\");\n\nvar createTask = _task.createTask;\n\nvar _component = __webpack_require__(/*! ../util/component */ \"./node_modules/echarts/lib/util/component.js\");\n\nvar getUID = _component.getUID;\n\nvar GlobalModel = __webpack_require__(/*! ../model/Global */ \"./node_modules/echarts/lib/model/Global.js\");\n\nvar ExtensionAPI = __webpack_require__(/*! ../ExtensionAPI */ \"./node_modules/echarts/lib/ExtensionAPI.js\");\n\nvar _model = __webpack_require__(/*! ../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar normalizeToArray = _model.normalizeToArray;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/stream/Scheduler\n */\n\n/**\n * @constructor\n */\nfunction Scheduler(ecInstance, api, dataProcessorHandlers, visualHandlers) {\n this.ecInstance = ecInstance;\n this.api = api;\n this.unfinished; // Fix current processors in case that in some rear cases that\n // processors might be registered after echarts instance created.\n // Register processors incrementally for a echarts instance is\n // not supported by this stream architecture.\n\n var dataProcessorHandlers = this._dataProcessorHandlers = dataProcessorHandlers.slice();\n var visualHandlers = this._visualHandlers = visualHandlers.slice();\n this._allHandlers = dataProcessorHandlers.concat(visualHandlers);\n /**\n * @private\n * @type {\n * [handlerUID: string]: {\n * seriesTaskMap?: {\n * [seriesUID: string]: Task\n * },\n * overallTask?: Task\n * }\n * }\n */\n\n this._stageTaskMap = createHashMap();\n}\n\nvar proto = Scheduler.prototype;\n/**\n * @param {module:echarts/model/Global} ecModel\n * @param {Object} payload\n */\n\nproto.restoreData = function (ecModel, payload) {\n // TODO: Only restore needed series and components, but not all components.\n // Currently `restoreData` of all of the series and component will be called.\n // But some independent components like `title`, `legend`, `graphic`, `toolbox`,\n // `tooltip`, `axisPointer`, etc, do not need series refresh when `setOption`,\n // and some components like coordinate system, axes, dataZoom, visualMap only\n // need their target series refresh.\n // (1) If we are implementing this feature some day, we should consider these cases:\n // if a data processor depends on a component (e.g., dataZoomProcessor depends\n // on the settings of `dataZoom`), it should be re-performed if the component\n // is modified by `setOption`.\n // (2) If a processor depends on sevral series, speicified by its `getTargetSeries`,\n // it should be re-performed when the result array of `getTargetSeries` changed.\n // We use `dependencies` to cover these issues.\n // (3) How to update target series when coordinate system related components modified.\n // TODO: simply the dirty mechanism? Check whether only the case here can set tasks dirty,\n // and this case all of the tasks will be set as dirty.\n ecModel.restoreData(payload); // Theoretically an overall task not only depends on each of its target series, but also\n // depends on all of the series.\n // The overall task is not in pipeline, and `ecModel.restoreData` only set pipeline tasks\n // dirty. If `getTargetSeries` of an overall task returns nothing, we should also ensure\n // that the overall task is set as dirty and to be performed, otherwise it probably cause\n // state chaos. So we have to set dirty of all of the overall tasks manually, otherwise it\n // probably cause state chaos (consider `dataZoomProcessor`).\n\n this._stageTaskMap.each(function (taskRecord) {\n var overallTask = taskRecord.overallTask;\n overallTask && overallTask.dirty();\n });\n}; // If seriesModel provided, incremental threshold is check by series data.\n\n\nproto.getPerformArgs = function (task, isBlock) {\n // For overall task\n if (!task.__pipeline) {\n return;\n }\n\n var pipeline = this._pipelineMap.get(task.__pipeline.id);\n\n var pCtx = pipeline.context;\n var incremental = !isBlock && pipeline.progressiveEnabled && (!pCtx || pCtx.progressiveRender) && task.__idxInPipeline > pipeline.blockIndex;\n var step = incremental ? pipeline.step : null;\n var modDataCount = pCtx && pCtx.modDataCount;\n var modBy = modDataCount != null ? Math.ceil(modDataCount / step) : null;\n return {\n step: step,\n modBy: modBy,\n modDataCount: modDataCount\n };\n};\n\nproto.getPipeline = function (pipelineId) {\n return this._pipelineMap.get(pipelineId);\n};\n/**\n * Current, progressive rendering starts from visual and layout.\n * Always detect render mode in the same stage, avoiding that incorrect\n * detection caused by data filtering.\n * Caution:\n * `updateStreamModes` use `seriesModel.getData()`.\n */\n\n\nproto.updateStreamModes = function (seriesModel, view) {\n var pipeline = this._pipelineMap.get(seriesModel.uid);\n\n var data = seriesModel.getData();\n var dataLen = data.count(); // `progressiveRender` means that can render progressively in each\n // animation frame. Note that some types of series do not provide\n // `view.incrementalPrepareRender` but support `chart.appendData`. We\n // use the term `incremental` but not `progressive` to describe the\n // case that `chart.appendData`.\n\n var progressiveRender = pipeline.progressiveEnabled && view.incrementalPrepareRender && dataLen >= pipeline.threshold;\n var large = seriesModel.get('large') && dataLen >= seriesModel.get('largeThreshold'); // TODO: modDataCount should not updated if `appendData`, otherwise cause whole repaint.\n // see `test/candlestick-large3.html`\n\n var modDataCount = seriesModel.get('progressiveChunkMode') === 'mod' ? dataLen : null;\n seriesModel.pipelineContext = pipeline.context = {\n progressiveRender: progressiveRender,\n modDataCount: modDataCount,\n large: large\n };\n};\n\nproto.restorePipelines = function (ecModel) {\n var scheduler = this;\n var pipelineMap = scheduler._pipelineMap = createHashMap();\n ecModel.eachSeries(function (seriesModel) {\n var progressive = seriesModel.getProgressive();\n var pipelineId = seriesModel.uid;\n pipelineMap.set(pipelineId, {\n id: pipelineId,\n head: null,\n tail: null,\n threshold: seriesModel.getProgressiveThreshold(),\n progressiveEnabled: progressive && !(seriesModel.preventIncremental && seriesModel.preventIncremental()),\n blockIndex: -1,\n step: Math.round(progressive || 700),\n count: 0\n });\n pipe(scheduler, seriesModel, seriesModel.dataTask);\n });\n};\n\nproto.prepareStageTasks = function () {\n var stageTaskMap = this._stageTaskMap;\n var ecModel = this.ecInstance.getModel();\n var api = this.api;\n each(this._allHandlers, function (handler) {\n var record = stageTaskMap.get(handler.uid) || stageTaskMap.set(handler.uid, []);\n handler.reset && createSeriesStageTask(this, handler, record, ecModel, api);\n handler.overallReset && createOverallStageTask(this, handler, record, ecModel, api);\n }, this);\n};\n\nproto.prepareView = function (view, model, ecModel, api) {\n var renderTask = view.renderTask;\n var context = renderTask.context;\n context.model = model;\n context.ecModel = ecModel;\n context.api = api;\n renderTask.__block = !view.incrementalPrepareRender;\n pipe(this, model, renderTask);\n};\n\nproto.performDataProcessorTasks = function (ecModel, payload) {\n // If we do not use `block` here, it should be considered when to update modes.\n performStageTasks(this, this._dataProcessorHandlers, ecModel, payload, {\n block: true\n });\n}; // opt\n// opt.visualType: 'visual' or 'layout'\n// opt.setDirty\n\n\nproto.performVisualTasks = function (ecModel, payload, opt) {\n performStageTasks(this, this._visualHandlers, ecModel, payload, opt);\n};\n\nfunction performStageTasks(scheduler, stageHandlers, ecModel, payload, opt) {\n opt = opt || {};\n var unfinished;\n each(stageHandlers, function (stageHandler, idx) {\n if (opt.visualType && opt.visualType !== stageHandler.visualType) {\n return;\n }\n\n var stageHandlerRecord = scheduler._stageTaskMap.get(stageHandler.uid);\n\n var seriesTaskMap = stageHandlerRecord.seriesTaskMap;\n var overallTask = stageHandlerRecord.overallTask;\n\n if (overallTask) {\n var overallNeedDirty;\n var agentStubMap = overallTask.agentStubMap;\n agentStubMap.each(function (stub) {\n if (needSetDirty(opt, stub)) {\n stub.dirty();\n overallNeedDirty = true;\n }\n });\n overallNeedDirty && overallTask.dirty();\n updatePayload(overallTask, payload);\n var performArgs = scheduler.getPerformArgs(overallTask, opt.block); // Execute stubs firstly, which may set the overall task dirty,\n // then execute the overall task. And stub will call seriesModel.setData,\n // which ensures that in the overallTask seriesModel.getData() will not\n // return incorrect data.\n\n agentStubMap.each(function (stub) {\n stub.perform(performArgs);\n });\n unfinished |= overallTask.perform(performArgs);\n } else if (seriesTaskMap) {\n seriesTaskMap.each(function (task, pipelineId) {\n if (needSetDirty(opt, task)) {\n task.dirty();\n }\n\n var performArgs = scheduler.getPerformArgs(task, opt.block); // FIXME\n // if intending to decalare `performRawSeries` in handlers, only\n // stream-independent (specifically, data item independent) operations can be\n // performed. Because is a series is filtered, most of the tasks will not\n // be performed. A stream-dependent operation probably cause wrong biz logic.\n // Perhaps we should not provide a separate callback for this case instead\n // of providing the config `performRawSeries`. The stream-dependent operaions\n // and stream-independent operations should better not be mixed.\n\n performArgs.skip = !stageHandler.performRawSeries && ecModel.isSeriesFiltered(task.context.model);\n updatePayload(task, payload);\n unfinished |= task.perform(performArgs);\n });\n }\n });\n\n function needSetDirty(opt, task) {\n return opt.setDirty && (!opt.dirtyMap || opt.dirtyMap.get(task.__pipeline.id));\n }\n\n scheduler.unfinished |= unfinished;\n}\n\nproto.performSeriesTasks = function (ecModel) {\n var unfinished;\n ecModel.eachSeries(function (seriesModel) {\n // Progress to the end for dataInit and dataRestore.\n unfinished |= seriesModel.dataTask.perform();\n });\n this.unfinished |= unfinished;\n};\n\nproto.plan = function () {\n // Travel pipelines, check block.\n this._pipelineMap.each(function (pipeline) {\n var task = pipeline.tail;\n\n do {\n if (task.__block) {\n pipeline.blockIndex = task.__idxInPipeline;\n break;\n }\n\n task = task.getUpstream();\n } while (task);\n });\n};\n\nvar updatePayload = proto.updatePayload = function (task, payload) {\n payload !== 'remain' && (task.context.payload = payload);\n};\n\nfunction createSeriesStageTask(scheduler, stageHandler, stageHandlerRecord, ecModel, api) {\n var seriesTaskMap = stageHandlerRecord.seriesTaskMap || (stageHandlerRecord.seriesTaskMap = createHashMap());\n var seriesType = stageHandler.seriesType;\n var getTargetSeries = stageHandler.getTargetSeries; // If a stageHandler should cover all series, `createOnAllSeries` should be declared mandatorily,\n // to avoid some typo or abuse. Otherwise if an extension do not specify a `seriesType`,\n // it works but it may cause other irrelevant charts blocked.\n\n if (stageHandler.createOnAllSeries) {\n ecModel.eachRawSeries(create);\n } else if (seriesType) {\n ecModel.eachRawSeriesByType(seriesType, create);\n } else if (getTargetSeries) {\n getTargetSeries(ecModel, api).each(create);\n }\n\n function create(seriesModel) {\n var pipelineId = seriesModel.uid; // Init tasks for each seriesModel only once.\n // Reuse original task instance.\n\n var task = seriesTaskMap.get(pipelineId) || seriesTaskMap.set(pipelineId, createTask({\n plan: seriesTaskPlan,\n reset: seriesTaskReset,\n count: seriesTaskCount\n }));\n task.context = {\n model: seriesModel,\n ecModel: ecModel,\n api: api,\n useClearVisual: stageHandler.isVisual && !stageHandler.isLayout,\n plan: stageHandler.plan,\n reset: stageHandler.reset,\n scheduler: scheduler\n };\n pipe(scheduler, seriesModel, task);\n } // Clear unused series tasks.\n\n\n var pipelineMap = scheduler._pipelineMap;\n seriesTaskMap.each(function (task, pipelineId) {\n if (!pipelineMap.get(pipelineId)) {\n task.dispose();\n seriesTaskMap.removeKey(pipelineId);\n }\n });\n}\n\nfunction createOverallStageTask(scheduler, stageHandler, stageHandlerRecord, ecModel, api) {\n var overallTask = stageHandlerRecord.overallTask = stageHandlerRecord.overallTask // For overall task, the function only be called on reset stage.\n || createTask({\n reset: overallTaskReset\n });\n overallTask.context = {\n ecModel: ecModel,\n api: api,\n overallReset: stageHandler.overallReset,\n scheduler: scheduler\n }; // Reuse orignal stubs.\n\n var agentStubMap = overallTask.agentStubMap = overallTask.agentStubMap || createHashMap();\n var seriesType = stageHandler.seriesType;\n var getTargetSeries = stageHandler.getTargetSeries;\n var overallProgress = true;\n var modifyOutputEnd = stageHandler.modifyOutputEnd; // An overall task with seriesType detected or has `getTargetSeries`, we add\n // stub in each pipelines, it will set the overall task dirty when the pipeline\n // progress. Moreover, to avoid call the overall task each frame (too frequent),\n // we set the pipeline block.\n\n if (seriesType) {\n ecModel.eachRawSeriesByType(seriesType, createStub);\n } else if (getTargetSeries) {\n getTargetSeries(ecModel, api).each(createStub);\n } // Otherwise, (usually it is legancy case), the overall task will only be\n // executed when upstream dirty. Otherwise the progressive rendering of all\n // pipelines will be disabled unexpectedly. But it still needs stubs to receive\n // dirty info from upsteam.\n else {\n overallProgress = false;\n each(ecModel.getSeries(), createStub);\n }\n\n function createStub(seriesModel) {\n var pipelineId = seriesModel.uid;\n var stub = agentStubMap.get(pipelineId);\n\n if (!stub) {\n stub = agentStubMap.set(pipelineId, createTask({\n reset: stubReset,\n onDirty: stubOnDirty\n })); // When the result of `getTargetSeries` changed, the overallTask\n // should be set as dirty and re-performed.\n\n overallTask.dirty();\n }\n\n stub.context = {\n model: seriesModel,\n overallProgress: overallProgress,\n modifyOutputEnd: modifyOutputEnd\n };\n stub.agent = overallTask;\n stub.__block = overallProgress;\n pipe(scheduler, seriesModel, stub);\n } // Clear unused stubs.\n\n\n var pipelineMap = scheduler._pipelineMap;\n agentStubMap.each(function (stub, pipelineId) {\n if (!pipelineMap.get(pipelineId)) {\n stub.dispose(); // When the result of `getTargetSeries` changed, the overallTask\n // should be set as dirty and re-performed.\n\n overallTask.dirty();\n agentStubMap.removeKey(pipelineId);\n }\n });\n}\n\nfunction overallTaskReset(context) {\n context.overallReset(context.ecModel, context.api, context.payload);\n}\n\nfunction stubReset(context, upstreamContext) {\n return context.overallProgress && stubProgress;\n}\n\nfunction stubProgress() {\n this.agent.dirty();\n this.getDownstream().dirty();\n}\n\nfunction stubOnDirty() {\n this.agent && this.agent.dirty();\n}\n\nfunction seriesTaskPlan(context) {\n return context.plan && context.plan(context.model, context.ecModel, context.api, context.payload);\n}\n\nfunction seriesTaskReset(context) {\n if (context.useClearVisual) {\n context.data.clearAllVisual();\n }\n\n var resetDefines = context.resetDefines = normalizeToArray(context.reset(context.model, context.ecModel, context.api, context.payload));\n return resetDefines.length > 1 ? map(resetDefines, function (v, idx) {\n return makeSeriesTaskProgress(idx);\n }) : singleSeriesTaskProgress;\n}\n\nvar singleSeriesTaskProgress = makeSeriesTaskProgress(0);\n\nfunction makeSeriesTaskProgress(resetDefineIdx) {\n return function (params, context) {\n var data = context.data;\n var resetDefine = context.resetDefines[resetDefineIdx];\n\n if (resetDefine && resetDefine.dataEach) {\n for (var i = params.start; i < params.end; i++) {\n resetDefine.dataEach(data, i);\n }\n } else if (resetDefine && resetDefine.progress) {\n resetDefine.progress(params, data);\n }\n };\n}\n\nfunction seriesTaskCount(context) {\n return context.data.count();\n}\n\nfunction pipe(scheduler, seriesModel, task) {\n var pipelineId = seriesModel.uid;\n\n var pipeline = scheduler._pipelineMap.get(pipelineId);\n\n !pipeline.head && (pipeline.head = task);\n pipeline.tail && pipeline.tail.pipe(task);\n pipeline.tail = task;\n task.__idxInPipeline = pipeline.count++;\n task.__pipeline = pipeline;\n}\n\nScheduler.wrapStageHandler = function (stageHandler, visualType) {\n if (isFunction(stageHandler)) {\n stageHandler = {\n overallReset: stageHandler,\n seriesType: detectSeriseType(stageHandler)\n };\n }\n\n stageHandler.uid = getUID('stageHandler');\n visualType && (stageHandler.visualType = visualType);\n return stageHandler;\n};\n/**\n * Only some legacy stage handlers (usually in echarts extensions) are pure function.\n * To ensure that they can work normally, they should work in block mode, that is,\n * they should not be started util the previous tasks finished. So they cause the\n * progressive rendering disabled. We try to detect the series type, to narrow down\n * the block range to only the series type they concern, but not all series.\n */\n\n\nfunction detectSeriseType(legacyFunc) {\n seriesType = null;\n\n try {\n // Assume there is no async when calling `eachSeriesByType`.\n legacyFunc(ecModelMock, apiMock);\n } catch (e) {}\n\n return seriesType;\n}\n\nvar ecModelMock = {};\nvar apiMock = {};\nvar seriesType;\nmockMethods(ecModelMock, GlobalModel);\nmockMethods(apiMock, ExtensionAPI);\n\necModelMock.eachSeriesByType = ecModelMock.eachRawSeriesByType = function (type) {\n seriesType = type;\n};\n\necModelMock.eachComponent = function (cond) {\n if (cond.mainType === 'series' && cond.subType) {\n seriesType = cond.subType;\n }\n};\n\nfunction mockMethods(target, Clz) {\n /* eslint-disable */\n for (var name in Clz.prototype) {\n // Do not use hasOwnProperty\n target[name] = noop;\n }\n /* eslint-enable */\n\n}\n\nvar _default = Scheduler;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/stream/Scheduler.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/stream/task.js": +/*!*************************************************!*\ + !*** ./node_modules/echarts/lib/stream/task.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar assert = _util.assert;\nvar isArray = _util.isArray;\n\nvar _config = __webpack_require__(/*! ../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {Object} define\n * @return See the return of `createTask`.\n */\nfunction createTask(define) {\n return new Task(define);\n}\n/**\n * @constructor\n * @param {Object} define\n * @param {Function} define.reset Custom reset\n * @param {Function} [define.plan] Returns 'reset' indicate reset immediately.\n * @param {Function} [define.count] count is used to determin data task.\n * @param {Function} [define.onDirty] count is used to determin data task.\n */\n\n\nfunction Task(define) {\n define = define || {};\n this._reset = define.reset;\n this._plan = define.plan;\n this._count = define.count;\n this._onDirty = define.onDirty;\n this._dirty = true; // Context must be specified implicitly, to\n // avoid miss update context when model changed.\n\n this.context;\n}\n\nvar taskProto = Task.prototype;\n/**\n * @param {Object} performArgs\n * @param {number} [performArgs.step] Specified step.\n * @param {number} [performArgs.skip] Skip customer perform call.\n * @param {number} [performArgs.modBy] Sampling window size.\n * @param {number} [performArgs.modDataCount] Sampling count.\n */\n\ntaskProto.perform = function (performArgs) {\n var upTask = this._upstream;\n var skip = performArgs && performArgs.skip; // TODO some refactor.\n // Pull data. Must pull data each time, because context.data\n // may be updated by Series.setData.\n\n if (this._dirty && upTask) {\n var context = this.context;\n context.data = context.outputData = upTask.context.outputData;\n }\n\n if (this.__pipeline) {\n this.__pipeline.currentTask = this;\n }\n\n var planResult;\n\n if (this._plan && !skip) {\n planResult = this._plan(this.context);\n } // Support sharding by mod, which changes the render sequence and makes the rendered graphic\n // elements uniformed distributed when progress, especially when moving or zooming.\n\n\n var lastModBy = normalizeModBy(this._modBy);\n var lastModDataCount = this._modDataCount || 0;\n var modBy = normalizeModBy(performArgs && performArgs.modBy);\n var modDataCount = performArgs && performArgs.modDataCount || 0;\n\n if (lastModBy !== modBy || lastModDataCount !== modDataCount) {\n planResult = 'reset';\n }\n\n function normalizeModBy(val) {\n !(val >= 1) && (val = 1); // jshint ignore:line\n\n return val;\n }\n\n var forceFirstProgress;\n\n if (this._dirty || planResult === 'reset') {\n this._dirty = false;\n forceFirstProgress = reset(this, skip);\n }\n\n this._modBy = modBy;\n this._modDataCount = modDataCount;\n var step = performArgs && performArgs.step;\n\n if (upTask) {\n this._dueEnd = upTask._outputDueEnd;\n } // DataTask or overallTask\n else {\n this._dueEnd = this._count ? this._count(this.context) : Infinity;\n } // Note: Stubs, that its host overall task let it has progress, has progress.\n // If no progress, pass index from upstream to downstream each time plan called.\n\n\n if (this._progress) {\n var start = this._dueIndex;\n var end = Math.min(step != null ? this._dueIndex + step : Infinity, this._dueEnd);\n\n if (!skip && (forceFirstProgress || start < end)) {\n var progress = this._progress;\n\n if (isArray(progress)) {\n for (var i = 0; i < progress.length; i++) {\n doProgress(this, progress[i], start, end, modBy, modDataCount);\n }\n } else {\n doProgress(this, progress, start, end, modBy, modDataCount);\n }\n }\n\n this._dueIndex = end; // If no `outputDueEnd`, assume that output data and\n // input data is the same, so use `dueIndex` as `outputDueEnd`.\n\n var outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : end;\n this._outputDueEnd = outputDueEnd;\n } else {\n // (1) Some overall task has no progress.\n // (2) Stubs, that its host overall task do not let it has progress, has no progress.\n // This should always be performed so it can be passed to downstream.\n this._dueIndex = this._outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : this._dueEnd;\n }\n\n return this.unfinished();\n};\n\nvar iterator = function () {\n var end;\n var current;\n var modBy;\n var modDataCount;\n var winCount;\n var it = {\n reset: function (s, e, sStep, sCount) {\n current = s;\n end = e;\n modBy = sStep;\n modDataCount = sCount;\n winCount = Math.ceil(modDataCount / modBy);\n it.next = modBy > 1 && modDataCount > 0 ? modNext : sequentialNext;\n }\n };\n return it;\n\n function sequentialNext() {\n return current < end ? current++ : null;\n }\n\n function modNext() {\n var dataIndex = current % winCount * modBy + Math.ceil(current / winCount);\n var result = current >= end ? null : dataIndex < modDataCount ? dataIndex // If modDataCount is smaller than data.count() (consider `appendData` case),\n // Use normal linear rendering mode.\n : current;\n current++;\n return result;\n }\n}();\n\ntaskProto.dirty = function () {\n this._dirty = true;\n this._onDirty && this._onDirty(this.context);\n};\n\nfunction doProgress(taskIns, progress, start, end, modBy, modDataCount) {\n iterator.reset(start, end, modBy, modDataCount);\n taskIns._callingProgress = progress;\n\n taskIns._callingProgress({\n start: start,\n end: end,\n count: end - start,\n next: iterator.next\n }, taskIns.context);\n}\n\nfunction reset(taskIns, skip) {\n taskIns._dueIndex = taskIns._outputDueEnd = taskIns._dueEnd = 0;\n taskIns._settedOutputEnd = null;\n var progress;\n var forceFirstProgress;\n\n if (!skip && taskIns._reset) {\n progress = taskIns._reset(taskIns.context);\n\n if (progress && progress.progress) {\n forceFirstProgress = progress.forceFirstProgress;\n progress = progress.progress;\n } // To simplify no progress checking, array must has item.\n\n\n if (isArray(progress) && !progress.length) {\n progress = null;\n }\n }\n\n taskIns._progress = progress;\n taskIns._modBy = taskIns._modDataCount = null;\n var downstream = taskIns._downstream;\n downstream && downstream.dirty();\n return forceFirstProgress;\n}\n/**\n * @return {boolean}\n */\n\n\ntaskProto.unfinished = function () {\n return this._progress && this._dueIndex < this._dueEnd;\n};\n/**\n * @param {Object} downTask The downstream task.\n * @return {Object} The downstream task.\n */\n\n\ntaskProto.pipe = function (downTask) {\n // If already downstream, do not dirty downTask.\n if (this._downstream !== downTask || this._dirty) {\n this._downstream = downTask;\n downTask._upstream = this;\n downTask.dirty();\n }\n};\n\ntaskProto.dispose = function () {\n if (this._disposed) {\n return;\n }\n\n this._upstream && (this._upstream._downstream = null);\n this._downstream && (this._downstream._upstream = null);\n this._dirty = false;\n this._disposed = true;\n};\n\ntaskProto.getUpstream = function () {\n return this._upstream;\n};\n\ntaskProto.getDownstream = function () {\n return this._downstream;\n};\n\ntaskProto.setOutputEnd = function (end) {\n // This only happend in dataTask, dataZoom, map, currently.\n // where dataZoom do not set end each time, but only set\n // when reset. So we should record the setted end, in case\n // that the stub of dataZoom perform again and earse the\n // setted end by upstream.\n this._outputDueEnd = this._settedOutputEnd = end;\n}; ///////////////////////////////////////////////////////////\n// For stream debug (Should be commented out after used!)\n// Usage: printTask(this, 'begin');\n// Usage: printTask(this, null, {someExtraProp});\n// function printTask(task, prefix, extra) {\n// window.ecTaskUID == null && (window.ecTaskUID = 0);\n// task.uidDebug == null && (task.uidDebug = `task_${window.ecTaskUID++}`);\n// task.agent && task.agent.uidDebug == null && (task.agent.uidDebug = `task_${window.ecTaskUID++}`);\n// var props = [];\n// if (task.__pipeline) {\n// var val = `${task.__idxInPipeline}/${task.__pipeline.tail.__idxInPipeline} ${task.agent ? '(stub)' : ''}`;\n// props.push({text: 'idx', value: val});\n// } else {\n// var stubCount = 0;\n// task.agentStubMap.each(() => stubCount++);\n// props.push({text: 'idx', value: `overall (stubs: ${stubCount})`});\n// }\n// props.push({text: 'uid', value: task.uidDebug});\n// if (task.__pipeline) {\n// props.push({text: 'pid', value: task.__pipeline.id});\n// task.agent && props.push(\n// {text: 'stubFor', value: task.agent.uidDebug}\n// );\n// }\n// props.push(\n// {text: 'dirty', value: task._dirty},\n// {text: 'dueIndex', value: task._dueIndex},\n// {text: 'dueEnd', value: task._dueEnd},\n// {text: 'outputDueEnd', value: task._outputDueEnd}\n// );\n// if (extra) {\n// Object.keys(extra).forEach(key => {\n// props.push({text: key, value: extra[key]});\n// });\n// }\n// var args = ['color: blue'];\n// var msg = `%c[${prefix || 'T'}] %c` + props.map(item => (\n// args.push('color: black', 'color: red'),\n// `${item.text}: %c${item.value}`\n// )).join('%c, ');\n// console.log.apply(console, [msg].concat(args));\n// // console.log(this);\n// }\n\n\nexports.createTask = createTask;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/stream/task.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/theme/dark.js": +/*!************************************************!*\ + !*** ./node_modules/echarts/lib/theme/dark.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar contrastColor = '#eee';\n\nvar axisCommon = function () {\n return {\n axisLine: {\n lineStyle: {\n color: contrastColor\n }\n },\n axisTick: {\n lineStyle: {\n color: contrastColor\n }\n },\n axisLabel: {\n textStyle: {\n color: contrastColor\n }\n },\n splitLine: {\n lineStyle: {\n type: 'dashed',\n color: '#aaa'\n }\n },\n splitArea: {\n areaStyle: {\n color: contrastColor\n }\n }\n };\n};\n\nvar colorPalette = ['#dd6b66', '#759aa0', '#e69d87', '#8dc1a9', '#ea7e53', '#eedd78', '#73a373', '#73b9bc', '#7289ab', '#91ca8c', '#f49f42'];\nvar theme = {\n color: colorPalette,\n backgroundColor: '#333',\n tooltip: {\n axisPointer: {\n lineStyle: {\n color: contrastColor\n },\n crossStyle: {\n color: contrastColor\n },\n label: {\n color: '#000'\n }\n }\n },\n legend: {\n textStyle: {\n color: contrastColor\n }\n },\n textStyle: {\n color: contrastColor\n },\n title: {\n textStyle: {\n color: contrastColor\n }\n },\n toolbox: {\n iconStyle: {\n normal: {\n borderColor: contrastColor\n }\n }\n },\n dataZoom: {\n textStyle: {\n color: contrastColor\n }\n },\n visualMap: {\n textStyle: {\n color: contrastColor\n }\n },\n timeline: {\n lineStyle: {\n color: contrastColor\n },\n itemStyle: {\n normal: {\n color: colorPalette[1]\n }\n },\n label: {\n normal: {\n textStyle: {\n color: contrastColor\n }\n }\n },\n controlStyle: {\n normal: {\n color: contrastColor,\n borderColor: contrastColor\n }\n }\n },\n timeAxis: axisCommon(),\n logAxis: axisCommon(),\n valueAxis: axisCommon(),\n categoryAxis: axisCommon(),\n line: {\n symbol: 'circle'\n },\n graph: {\n color: colorPalette\n },\n gauge: {\n title: {\n textStyle: {\n color: contrastColor\n }\n }\n },\n candlestick: {\n itemStyle: {\n normal: {\n color: '#FD1050',\n color0: '#0CF49B',\n borderColor: '#FD1050',\n borderColor0: '#0CF49B'\n }\n }\n }\n};\ntheme.categoryAxis.splitLine.show = false;\nvar _default = theme;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/theme/dark.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/theme/light.js": +/*!*************************************************!*\ + !*** ./node_modules/echarts/lib/theme/light.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar colorAll = ['#37A2DA', '#32C5E9', '#67E0E3', '#9FE6B8', '#FFDB5C', '#ff9f7f', '#fb7293', '#E062AE', '#E690D1', '#e7bcf3', '#9d96f5', '#8378EA', '#96BFFF'];\nvar _default = {\n color: colorAll,\n colorLayer: [['#37A2DA', '#ffd85c', '#fd7b5f'], ['#37A2DA', '#67E0E3', '#FFDB5C', '#ff9f7f', '#E062AE', '#9d96f5'], ['#37A2DA', '#32C5E9', '#9FE6B8', '#FFDB5C', '#ff9f7f', '#fb7293', '#e7bcf3', '#8378EA', '#96BFFF'], colorAll]\n};\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/theme/light.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/util/animation.js": +/*!****************************************************!*\ + !*** ./node_modules/echarts/lib/util/animation.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {number} [time=500] Time in ms\n * @param {string} [easing='linear']\n * @param {number} [delay=0]\n * @param {Function} [callback]\n *\n * @example\n * // Animate position\n * animation\n * .createWrap()\n * .add(el1, {position: [10, 10]})\n * .add(el2, {shape: {width: 500}, style: {fill: 'red'}}, 400)\n * .done(function () { // done })\n * .start('cubicOut');\n */\nfunction createWrap() {\n var storage = [];\n var elExistsMap = {};\n var doneCallback;\n return {\n /**\n * Caution: a el can only be added once, otherwise 'done'\n * might not be called. This method checks this (by el.id),\n * suppresses adding and returns false when existing el found.\n *\n * @param {modele:zrender/Element} el\n * @param {Object} target\n * @param {number} [time=500]\n * @param {number} [delay=0]\n * @param {string} [easing='linear']\n * @return {boolean} Whether adding succeeded.\n *\n * @example\n * add(el, target, time, delay, easing);\n * add(el, target, time, easing);\n * add(el, target, time);\n * add(el, target);\n */\n add: function (el, target, time, delay, easing) {\n if (zrUtil.isString(delay)) {\n easing = delay;\n delay = 0;\n }\n\n if (elExistsMap[el.id]) {\n return false;\n }\n\n elExistsMap[el.id] = 1;\n storage.push({\n el: el,\n target: target,\n time: time,\n delay: delay,\n easing: easing\n });\n return true;\n },\n\n /**\n * Only execute when animation finished. Will not execute when any\n * of 'stop' or 'stopAnimation' called.\n *\n * @param {Function} callback\n */\n done: function (callback) {\n doneCallback = callback;\n return this;\n },\n\n /**\n * Will stop exist animation firstly.\n */\n start: function () {\n var count = storage.length;\n\n for (var i = 0, len = storage.length; i < len; i++) {\n var item = storage[i];\n item.el.animateTo(item.target, item.time, item.delay, item.easing, done);\n }\n\n return this;\n\n function done() {\n count--;\n\n if (!count) {\n storage.length = 0;\n elExistsMap = {};\n doneCallback && doneCallback();\n }\n }\n }\n };\n}\n\nexports.createWrap = createWrap;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/util/animation.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/util/clazz.js": +/*!************************************************!*\ + !*** ./node_modules/echarts/lib/util/clazz.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(/*! ../config */ \"./node_modules/echarts/lib/config.js\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar TYPE_DELIMITER = '.';\nvar IS_CONTAINER = '___EC__COMPONENT__CONTAINER___';\n/**\n * Notice, parseClassType('') should returns {main: '', sub: ''}\n * @public\n */\n\nfunction parseClassType(componentType) {\n var ret = {\n main: '',\n sub: ''\n };\n\n if (componentType) {\n componentType = componentType.split(TYPE_DELIMITER);\n ret.main = componentType[0] || '';\n ret.sub = componentType[1] || '';\n }\n\n return ret;\n}\n/**\n * @public\n */\n\n\nfunction checkClassType(componentType) {\n zrUtil.assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(componentType), 'componentType \"' + componentType + '\" illegal');\n}\n/**\n * @public\n */\n\n\nfunction enableClassExtend(RootClass, mandatoryMethods) {\n RootClass.$constructor = RootClass;\n\n RootClass.extend = function (proto) {\n var superClass = this;\n\n var ExtendedClass = function () {\n if (!proto.$constructor) {\n superClass.apply(this, arguments);\n } else {\n proto.$constructor.apply(this, arguments);\n }\n };\n\n zrUtil.extend(ExtendedClass.prototype, proto);\n ExtendedClass.extend = this.extend;\n ExtendedClass.superCall = superCall;\n ExtendedClass.superApply = superApply;\n zrUtil.inherits(ExtendedClass, this);\n ExtendedClass.superClass = superClass;\n return ExtendedClass;\n };\n}\n\nvar classBase = 0;\n/**\n * Can not use instanceof, consider different scope by\n * cross domain or es module import in ec extensions.\n * Mount a method \"isInstance()\" to Clz.\n */\n\nfunction enableClassCheck(Clz) {\n var classAttr = ['__\\0is_clz', classBase++, Math.random().toFixed(3)].join('_');\n Clz.prototype[classAttr] = true;\n\n Clz.isInstance = function (obj) {\n return !!(obj && obj[classAttr]);\n };\n} // superCall should have class info, which can not be fetch from 'this'.\n// Consider this case:\n// class A has method f,\n// class B inherits class A, overrides method f, f call superApply('f'),\n// class C inherits class B, do not overrides method f,\n// then when method of class C is called, dead loop occured.\n\n\nfunction superCall(context, methodName) {\n var args = zrUtil.slice(arguments, 2);\n return this.superClass.prototype[methodName].apply(context, args);\n}\n\nfunction superApply(context, methodName, args) {\n return this.superClass.prototype[methodName].apply(context, args);\n}\n/**\n * @param {Object} entity\n * @param {Object} options\n * @param {boolean} [options.registerWhenExtend]\n * @public\n */\n\n\nfunction enableClassManagement(entity, options) {\n options = options || {};\n /**\n * Component model classes\n * key: componentType,\n * value:\n * componentClass, when componentType is 'xxx'\n * or Object., when componentType is 'xxx.yy'\n * @type {Object}\n */\n\n var storage = {};\n\n entity.registerClass = function (Clazz, componentType) {\n if (componentType) {\n checkClassType(componentType);\n componentType = parseClassType(componentType);\n\n if (!componentType.sub) {\n storage[componentType.main] = Clazz;\n } else if (componentType.sub !== IS_CONTAINER) {\n var container = makeContainer(componentType);\n container[componentType.sub] = Clazz;\n }\n }\n\n return Clazz;\n };\n\n entity.getClass = function (componentMainType, subType, throwWhenNotFound) {\n var Clazz = storage[componentMainType];\n\n if (Clazz && Clazz[IS_CONTAINER]) {\n Clazz = subType ? Clazz[subType] : null;\n }\n\n if (throwWhenNotFound && !Clazz) {\n throw new Error(!subType ? componentMainType + '.' + 'type should be specified.' : 'Component ' + componentMainType + '.' + (subType || '') + ' not exists. Load it first.');\n }\n\n return Clazz;\n };\n\n entity.getClassesByMainType = function (componentType) {\n componentType = parseClassType(componentType);\n var result = [];\n var obj = storage[componentType.main];\n\n if (obj && obj[IS_CONTAINER]) {\n zrUtil.each(obj, function (o, type) {\n type !== IS_CONTAINER && result.push(o);\n });\n } else {\n result.push(obj);\n }\n\n return result;\n };\n\n entity.hasClass = function (componentType) {\n // Just consider componentType.main.\n componentType = parseClassType(componentType);\n return !!storage[componentType.main];\n };\n /**\n * @return {Array.} Like ['aa', 'bb'], but can not be ['aa.xx']\n */\n\n\n entity.getAllClassMainTypes = function () {\n var types = [];\n zrUtil.each(storage, function (obj, type) {\n types.push(type);\n });\n return types;\n };\n /**\n * If a main type is container and has sub types\n * @param {string} mainType\n * @return {boolean}\n */\n\n\n entity.hasSubTypes = function (componentType) {\n componentType = parseClassType(componentType);\n var obj = storage[componentType.main];\n return obj && obj[IS_CONTAINER];\n };\n\n entity.parseClassType = parseClassType;\n\n function makeContainer(componentType) {\n var container = storage[componentType.main];\n\n if (!container || !container[IS_CONTAINER]) {\n container = storage[componentType.main] = {};\n container[IS_CONTAINER] = true;\n }\n\n return container;\n }\n\n if (options.registerWhenExtend) {\n var originalExtend = entity.extend;\n\n if (originalExtend) {\n entity.extend = function (proto) {\n var ExtendedClass = originalExtend.call(this, proto);\n return entity.registerClass(ExtendedClass, proto.type);\n };\n }\n }\n\n return entity;\n}\n/**\n * @param {string|Array.} properties\n */\n\n\nfunction setReadOnly(obj, properties) {// FIXME It seems broken in IE8 simulation of IE11\n // if (!zrUtil.isArray(properties)) {\n // properties = properties != null ? [properties] : [];\n // }\n // zrUtil.each(properties, function (prop) {\n // var value = obj[prop];\n // Object.defineProperty\n // && Object.defineProperty(obj, prop, {\n // value: value, writable: false\n // });\n // zrUtil.isArray(obj[prop])\n // && Object.freeze\n // && Object.freeze(obj[prop]);\n // });\n}\n\nexports.parseClassType = parseClassType;\nexports.enableClassExtend = enableClassExtend;\nexports.enableClassCheck = enableClassCheck;\nexports.enableClassManagement = enableClassManagement;\nexports.setReadOnly = setReadOnly;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/util/clazz.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/util/component.js": +/*!****************************************************!*\ + !*** ./node_modules/echarts/lib/util/component.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar _clazz = __webpack_require__(/*! ./clazz */ \"./node_modules/echarts/lib/util/clazz.js\");\n\nvar parseClassType = _clazz.parseClassType;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar base = 0;\n/**\n * @public\n * @param {string} type\n * @return {string}\n */\n\nfunction getUID(type) {\n // Considering the case of crossing js context,\n // use Math.random to make id as unique as possible.\n return [type || '', base++, Math.random().toFixed(5)].join('_');\n}\n/**\n * @inner\n */\n\n\nfunction enableSubTypeDefaulter(entity) {\n var subTypeDefaulters = {};\n\n entity.registerSubTypeDefaulter = function (componentType, defaulter) {\n componentType = parseClassType(componentType);\n subTypeDefaulters[componentType.main] = defaulter;\n };\n\n entity.determineSubType = function (componentType, option) {\n var type = option.type;\n\n if (!type) {\n var componentTypeMain = parseClassType(componentType).main;\n\n if (entity.hasSubTypes(componentType) && subTypeDefaulters[componentTypeMain]) {\n type = subTypeDefaulters[componentTypeMain](option);\n }\n }\n\n return type;\n };\n\n return entity;\n}\n/**\n * Topological travel on Activity Network (Activity On Vertices).\n * Dependencies is defined in Model.prototype.dependencies, like ['xAxis', 'yAxis'].\n *\n * If 'xAxis' or 'yAxis' is absent in componentTypeList, just ignore it in topology.\n *\n * If there is circle dependencey, Error will be thrown.\n *\n */\n\n\nfunction enableTopologicalTravel(entity, dependencyGetter) {\n /**\n * @public\n * @param {Array.} targetNameList Target Component type list.\n * Can be ['aa', 'bb', 'aa.xx']\n * @param {Array.} fullNameList By which we can build dependency graph.\n * @param {Function} callback Params: componentType, dependencies.\n * @param {Object} context Scope of callback.\n */\n entity.topologicalTravel = function (targetNameList, fullNameList, callback, context) {\n if (!targetNameList.length) {\n return;\n }\n\n var result = makeDepndencyGraph(fullNameList);\n var graph = result.graph;\n var stack = result.noEntryList;\n var targetNameSet = {};\n zrUtil.each(targetNameList, function (name) {\n targetNameSet[name] = true;\n });\n\n while (stack.length) {\n var currComponentType = stack.pop();\n var currVertex = graph[currComponentType];\n var isInTargetNameSet = !!targetNameSet[currComponentType];\n\n if (isInTargetNameSet) {\n callback.call(context, currComponentType, currVertex.originalDeps.slice());\n delete targetNameSet[currComponentType];\n }\n\n zrUtil.each(currVertex.successor, isInTargetNameSet ? removeEdgeAndAdd : removeEdge);\n }\n\n zrUtil.each(targetNameSet, function () {\n throw new Error('Circle dependency may exists');\n });\n\n function removeEdge(succComponentType) {\n graph[succComponentType].entryCount--;\n\n if (graph[succComponentType].entryCount === 0) {\n stack.push(succComponentType);\n }\n } // Consider this case: legend depends on series, and we call\n // chart.setOption({series: [...]}), where only series is in option.\n // If we do not have 'removeEdgeAndAdd', legendModel.mergeOption will\n // not be called, but only sereis.mergeOption is called. Thus legend\n // have no chance to update its local record about series (like which\n // name of series is available in legend).\n\n\n function removeEdgeAndAdd(succComponentType) {\n targetNameSet[succComponentType] = true;\n removeEdge(succComponentType);\n }\n };\n /**\n * DepndencyGraph: {Object}\n * key: conponentType,\n * value: {\n * successor: [conponentTypes...],\n * originalDeps: [conponentTypes...],\n * entryCount: {number}\n * }\n */\n\n\n function makeDepndencyGraph(fullNameList) {\n var graph = {};\n var noEntryList = [];\n zrUtil.each(fullNameList, function (name) {\n var thisItem = createDependencyGraphItem(graph, name);\n var originalDeps = thisItem.originalDeps = dependencyGetter(name);\n var availableDeps = getAvailableDependencies(originalDeps, fullNameList);\n thisItem.entryCount = availableDeps.length;\n\n if (thisItem.entryCount === 0) {\n noEntryList.push(name);\n }\n\n zrUtil.each(availableDeps, function (dependentName) {\n if (zrUtil.indexOf(thisItem.predecessor, dependentName) < 0) {\n thisItem.predecessor.push(dependentName);\n }\n\n var thatItem = createDependencyGraphItem(graph, dependentName);\n\n if (zrUtil.indexOf(thatItem.successor, dependentName) < 0) {\n thatItem.successor.push(name);\n }\n });\n });\n return {\n graph: graph,\n noEntryList: noEntryList\n };\n }\n\n function createDependencyGraphItem(graph, name) {\n if (!graph[name]) {\n graph[name] = {\n predecessor: [],\n successor: []\n };\n }\n\n return graph[name];\n }\n\n function getAvailableDependencies(originalDeps, fullNameList) {\n var availableDeps = [];\n zrUtil.each(originalDeps, function (dep) {\n zrUtil.indexOf(fullNameList, dep) >= 0 && availableDeps.push(dep);\n });\n return availableDeps;\n }\n}\n\nexports.getUID = getUID;\nexports.enableSubTypeDefaulter = enableSubTypeDefaulter;\nexports.enableTopologicalTravel = enableTopologicalTravel;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/util/component.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/util/format.js": +/*!*************************************************!*\ + !*** ./node_modules/echarts/lib/util/format.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar textContain = __webpack_require__(/*! zrender/lib/contain/text */ \"./node_modules/zrender/lib/contain/text.js\");\n\nvar numberUtil = __webpack_require__(/*! ./number */ \"./node_modules/echarts/lib/util/number.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// import Text from 'zrender/src/graphic/Text';\n\n/**\n * add commas after every three numbers\n * @param {string|number} x\n * @return {string}\n */\nfunction addCommas(x) {\n if (isNaN(x)) {\n return '-';\n }\n\n x = (x + '').split('.');\n return x[0].replace(/(\\d{1,3})(?=(?:\\d{3})+(?!\\d))/g, '$1,') + (x.length > 1 ? '.' + x[1] : '');\n}\n/**\n * @param {string} str\n * @param {boolean} [upperCaseFirst=false]\n * @return {string} str\n */\n\n\nfunction toCamelCase(str, upperCaseFirst) {\n str = (str || '').toLowerCase().replace(/-(.)/g, function (match, group1) {\n return group1.toUpperCase();\n });\n\n if (upperCaseFirst && str) {\n str = str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n return str;\n}\n\nvar normalizeCssArray = zrUtil.normalizeCssArray;\nvar replaceReg = /([&<>\"'])/g;\nvar replaceMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': '''\n};\n\nfunction encodeHTML(source) {\n return source == null ? '' : (source + '').replace(replaceReg, function (str, c) {\n return replaceMap[c];\n });\n}\n\nvar TPL_VAR_ALIAS = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];\n\nvar wrapVar = function (varName, seriesIdx) {\n return '{' + varName + (seriesIdx == null ? '' : seriesIdx) + '}';\n};\n/**\n * Template formatter\n * @param {string} tpl\n * @param {Array.|Object} paramsList\n * @param {boolean} [encode=false]\n * @return {string}\n */\n\n\nfunction formatTpl(tpl, paramsList, encode) {\n if (!zrUtil.isArray(paramsList)) {\n paramsList = [paramsList];\n }\n\n var seriesLen = paramsList.length;\n\n if (!seriesLen) {\n return '';\n }\n\n var $vars = paramsList[0].$vars || [];\n\n for (var i = 0; i < $vars.length; i++) {\n var alias = TPL_VAR_ALIAS[i];\n tpl = tpl.replace(wrapVar(alias), wrapVar(alias, 0));\n }\n\n for (var seriesIdx = 0; seriesIdx < seriesLen; seriesIdx++) {\n for (var k = 0; k < $vars.length; k++) {\n var val = paramsList[seriesIdx][$vars[k]];\n tpl = tpl.replace(wrapVar(TPL_VAR_ALIAS[k], seriesIdx), encode ? encodeHTML(val) : val);\n }\n }\n\n return tpl;\n}\n/**\n * simple Template formatter\n *\n * @param {string} tpl\n * @param {Object} param\n * @param {boolean} [encode=false]\n * @return {string}\n */\n\n\nfunction formatTplSimple(tpl, param, encode) {\n zrUtil.each(param, function (value, key) {\n tpl = tpl.replace('{' + key + '}', encode ? encodeHTML(value) : value);\n });\n return tpl;\n}\n/**\n * @param {Object|string} [opt] If string, means color.\n * @param {string} [opt.color]\n * @param {string} [opt.extraCssText]\n * @param {string} [opt.type='item'] 'item' or 'subItem'\n * @param {string} [opt.renderMode='html'] render mode of tooltip, 'html' or 'richText'\n * @param {string} [opt.markerId='X'] id name for marker. If only one marker is in a rich text, this can be omitted.\n * @return {string}\n */\n\n\nfunction getTooltipMarker(opt, extraCssText) {\n opt = zrUtil.isString(opt) ? {\n color: opt,\n extraCssText: extraCssText\n } : opt || {};\n var color = opt.color;\n var type = opt.type;\n var extraCssText = opt.extraCssText;\n var renderMode = opt.renderMode || 'html';\n var markerId = opt.markerId || 'X';\n\n if (!color) {\n return '';\n }\n\n if (renderMode === 'html') {\n return type === 'subItem' ? '' : '';\n } else {\n // Space for rich element marker\n return {\n renderMode: renderMode,\n content: '{marker' + markerId + '|} ',\n style: {\n color: color\n }\n };\n }\n}\n\nfunction pad(str, len) {\n str += '';\n return '0000'.substr(0, len - str.length) + str;\n}\n/**\n * ISO Date format\n * @param {string} tpl\n * @param {number} value\n * @param {boolean} [isUTC=false] Default in local time.\n * see `module:echarts/scale/Time`\n * and `module:echarts/util/number#parseDate`.\n * @inner\n */\n\n\nfunction formatTime(tpl, value, isUTC) {\n if (tpl === 'week' || tpl === 'month' || tpl === 'quarter' || tpl === 'half-year' || tpl === 'year') {\n tpl = 'MM-dd\\nyyyy';\n }\n\n var date = numberUtil.parseDate(value);\n var utc = isUTC ? 'UTC' : '';\n var y = date['get' + utc + 'FullYear']();\n var M = date['get' + utc + 'Month']() + 1;\n var d = date['get' + utc + 'Date']();\n var h = date['get' + utc + 'Hours']();\n var m = date['get' + utc + 'Minutes']();\n var s = date['get' + utc + 'Seconds']();\n var S = date['get' + utc + 'Milliseconds']();\n tpl = tpl.replace('MM', pad(M, 2)).replace('M', M).replace('yyyy', y).replace('yy', y % 100).replace('dd', pad(d, 2)).replace('d', d).replace('hh', pad(h, 2)).replace('h', h).replace('mm', pad(m, 2)).replace('m', m).replace('ss', pad(s, 2)).replace('s', s).replace('SSS', pad(S, 3));\n return tpl;\n}\n/**\n * Capital first\n * @param {string} str\n * @return {string}\n */\n\n\nfunction capitalFirst(str) {\n return str ? str.charAt(0).toUpperCase() + str.substr(1) : str;\n}\n\nvar truncateText = textContain.truncateText;\n/**\n * @public\n * @param {Object} opt\n * @param {string} opt.text\n * @param {string} opt.font\n * @param {string} [opt.textAlign='left']\n * @param {string} [opt.textVerticalAlign='top']\n * @param {Array.} [opt.textPadding]\n * @param {number} [opt.textLineHeight]\n * @param {Object} [opt.rich]\n * @param {Object} [opt.truncate]\n * @return {Object} {x, y, width, height, lineHeight}\n */\n\nfunction getTextBoundingRect(opt) {\n return textContain.getBoundingRect(opt.text, opt.font, opt.textAlign, opt.textVerticalAlign, opt.textPadding, opt.textLineHeight, opt.rich, opt.truncate);\n}\n/**\n * @deprecated\n * the `textLineHeight` was added later.\n * For backward compatiblility, put it as the last parameter.\n * But deprecated this interface. Please use `getTextBoundingRect` instead.\n */\n\n\nfunction getTextRect(text, font, textAlign, textVerticalAlign, textPadding, rich, truncate, textLineHeight) {\n return textContain.getBoundingRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, rich, truncate);\n}\n/**\n * open new tab\n * @param {string} link url\n * @param {string} target blank or self\n */\n\n\nfunction windowOpen(link, target) {\n if (target === '_blank' || target === 'blank') {\n var blank = window.open();\n blank.opener = null;\n blank.location = link;\n } else {\n window.open(link, target);\n }\n}\n\nexports.addCommas = addCommas;\nexports.toCamelCase = toCamelCase;\nexports.normalizeCssArray = normalizeCssArray;\nexports.encodeHTML = encodeHTML;\nexports.formatTpl = formatTpl;\nexports.formatTplSimple = formatTplSimple;\nexports.getTooltipMarker = getTooltipMarker;\nexports.formatTime = formatTime;\nexports.capitalFirst = capitalFirst;\nexports.truncateText = truncateText;\nexports.getTextBoundingRect = getTextBoundingRect;\nexports.getTextRect = getTextRect;\nexports.windowOpen = windowOpen;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/util/format.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/util/graphic.js": +/*!**************************************************!*\ + !*** ./node_modules/echarts/lib/util/graphic.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar pathTool = __webpack_require__(/*! zrender/lib/tool/path */ \"./node_modules/zrender/lib/tool/path.js\");\n\nvar colorTool = __webpack_require__(/*! zrender/lib/tool/color */ \"./node_modules/zrender/lib/tool/color.js\");\n\nvar matrix = __webpack_require__(/*! zrender/lib/core/matrix */ \"./node_modules/zrender/lib/core/matrix.js\");\n\nvar vector = __webpack_require__(/*! zrender/lib/core/vector */ \"./node_modules/zrender/lib/core/vector.js\");\n\nvar Path = __webpack_require__(/*! zrender/lib/graphic/Path */ \"./node_modules/zrender/lib/graphic/Path.js\");\n\nvar Transformable = __webpack_require__(/*! zrender/lib/mixin/Transformable */ \"./node_modules/zrender/lib/mixin/Transformable.js\");\n\nvar ZImage = __webpack_require__(/*! zrender/lib/graphic/Image */ \"./node_modules/zrender/lib/graphic/Image.js\");\n\nexports.Image = ZImage;\n\nvar Group = __webpack_require__(/*! zrender/lib/container/Group */ \"./node_modules/zrender/lib/container/Group.js\");\n\nexports.Group = Group;\n\nvar Text = __webpack_require__(/*! zrender/lib/graphic/Text */ \"./node_modules/zrender/lib/graphic/Text.js\");\n\nexports.Text = Text;\n\nvar Circle = __webpack_require__(/*! zrender/lib/graphic/shape/Circle */ \"./node_modules/zrender/lib/graphic/shape/Circle.js\");\n\nexports.Circle = Circle;\n\nvar Sector = __webpack_require__(/*! zrender/lib/graphic/shape/Sector */ \"./node_modules/zrender/lib/graphic/shape/Sector.js\");\n\nexports.Sector = Sector;\n\nvar Ring = __webpack_require__(/*! zrender/lib/graphic/shape/Ring */ \"./node_modules/zrender/lib/graphic/shape/Ring.js\");\n\nexports.Ring = Ring;\n\nvar Polygon = __webpack_require__(/*! zrender/lib/graphic/shape/Polygon */ \"./node_modules/zrender/lib/graphic/shape/Polygon.js\");\n\nexports.Polygon = Polygon;\n\nvar Polyline = __webpack_require__(/*! zrender/lib/graphic/shape/Polyline */ \"./node_modules/zrender/lib/graphic/shape/Polyline.js\");\n\nexports.Polyline = Polyline;\n\nvar Rect = __webpack_require__(/*! zrender/lib/graphic/shape/Rect */ \"./node_modules/zrender/lib/graphic/shape/Rect.js\");\n\nexports.Rect = Rect;\n\nvar Line = __webpack_require__(/*! zrender/lib/graphic/shape/Line */ \"./node_modules/zrender/lib/graphic/shape/Line.js\");\n\nexports.Line = Line;\n\nvar BezierCurve = __webpack_require__(/*! zrender/lib/graphic/shape/BezierCurve */ \"./node_modules/zrender/lib/graphic/shape/BezierCurve.js\");\n\nexports.BezierCurve = BezierCurve;\n\nvar Arc = __webpack_require__(/*! zrender/lib/graphic/shape/Arc */ \"./node_modules/zrender/lib/graphic/shape/Arc.js\");\n\nexports.Arc = Arc;\n\nvar CompoundPath = __webpack_require__(/*! zrender/lib/graphic/CompoundPath */ \"./node_modules/zrender/lib/graphic/CompoundPath.js\");\n\nexports.CompoundPath = CompoundPath;\n\nvar LinearGradient = __webpack_require__(/*! zrender/lib/graphic/LinearGradient */ \"./node_modules/zrender/lib/graphic/LinearGradient.js\");\n\nexports.LinearGradient = LinearGradient;\n\nvar RadialGradient = __webpack_require__(/*! zrender/lib/graphic/RadialGradient */ \"./node_modules/zrender/lib/graphic/RadialGradient.js\");\n\nexports.RadialGradient = RadialGradient;\n\nvar BoundingRect = __webpack_require__(/*! zrender/lib/core/BoundingRect */ \"./node_modules/zrender/lib/core/BoundingRect.js\");\n\nexports.BoundingRect = BoundingRect;\n\nvar IncrementalDisplayable = __webpack_require__(/*! zrender/lib/graphic/IncrementalDisplayable */ \"./node_modules/zrender/lib/graphic/IncrementalDisplayable.js\");\n\nexports.IncrementalDisplayable = IncrementalDisplayable;\n\nvar subPixelOptimizeUtil = __webpack_require__(/*! zrender/lib/graphic/helper/subPixelOptimize */ \"./node_modules/zrender/lib/graphic/helper/subPixelOptimize.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar mathMax = Math.max;\nvar mathMin = Math.min;\nvar EMPTY_OBJ = {};\nvar Z2_EMPHASIS_LIFT = 1; // key: label model property nane, value: style property name.\n\nvar CACHED_LABEL_STYLE_PROPERTIES = {\n color: 'textFill',\n textBorderColor: 'textStroke',\n textBorderWidth: 'textStrokeWidth'\n};\nvar EMPHASIS = 'emphasis';\nvar NORMAL = 'normal'; // Reserve 0 as default.\n\nvar _highlightNextDigit = 1;\nvar _highlightKeyMap = {};\nvar _customShapeMap = {};\n/**\n * Extend shape with parameters\n */\n\nfunction extendShape(opts) {\n return Path.extend(opts);\n}\n/**\n * Extend path\n */\n\n\nfunction extendPath(pathData, opts) {\n return pathTool.extendFromString(pathData, opts);\n}\n/**\n * Register a user defined shape.\n * The shape class can be fetched by `getShapeClass`\n * This method will overwrite the registered shapes, including\n * the registered built-in shapes, if using the same `name`.\n * The shape can be used in `custom series` and\n * `graphic component` by declaring `{type: name}`.\n *\n * @param {string} name\n * @param {Object} ShapeClass Can be generated by `extendShape`.\n */\n\n\nfunction registerShape(name, ShapeClass) {\n _customShapeMap[name] = ShapeClass;\n}\n/**\n * Find shape class registered by `registerShape`. Usually used in\n * fetching user defined shape.\n *\n * [Caution]:\n * (1) This method **MUST NOT be used inside echarts !!!**, unless it is prepared\n * to use user registered shapes.\n * Because the built-in shape (see `getBuiltInShape`) will be registered by\n * `registerShape` by default. That enables users to get both built-in\n * shapes as well as the shapes belonging to themsleves. But users can overwrite\n * the built-in shapes by using names like 'circle', 'rect' via calling\n * `registerShape`. So the echarts inner featrues should not fetch shapes from here\n * in case that it is overwritten by users, except that some features, like\n * `custom series`, `graphic component`, do it deliberately.\n *\n * (2) In the features like `custom series`, `graphic component`, the user input\n * `{tpye: 'xxx'}` does not only specify shapes but also specify other graphic\n * elements like `'group'`, `'text'`, `'image'` or event `'path'`. Those names\n * are reserved names, that is, if some user register a shape named `'image'`,\n * the shape will not be used. If we intending to add some more reserved names\n * in feature, that might bring break changes (disable some existing user shape\n * names). But that case probably rearly happen. So we dont make more mechanism\n * to resolve this issue here.\n *\n * @param {string} name\n * @return {Object} The shape class. If not found, return nothing.\n */\n\n\nfunction getShapeClass(name) {\n if (_customShapeMap.hasOwnProperty(name)) {\n return _customShapeMap[name];\n }\n}\n/**\n * Create a path element from path data string\n * @param {string} pathData\n * @param {Object} opts\n * @param {module:zrender/core/BoundingRect} rect\n * @param {string} [layout=cover] 'center' or 'cover'\n */\n\n\nfunction makePath(pathData, opts, rect, layout) {\n var path = pathTool.createFromString(pathData, opts);\n\n if (rect) {\n if (layout === 'center') {\n rect = centerGraphic(rect, path.getBoundingRect());\n }\n\n resizePath(path, rect);\n }\n\n return path;\n}\n/**\n * Create a image element from image url\n * @param {string} imageUrl image url\n * @param {Object} opts options\n * @param {module:zrender/core/BoundingRect} rect constrain rect\n * @param {string} [layout=cover] 'center' or 'cover'\n */\n\n\nfunction makeImage(imageUrl, rect, layout) {\n var path = new ZImage({\n style: {\n image: imageUrl,\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height\n },\n onload: function (img) {\n if (layout === 'center') {\n var boundingRect = {\n width: img.width,\n height: img.height\n };\n path.setStyle(centerGraphic(rect, boundingRect));\n }\n }\n });\n return path;\n}\n/**\n * Get position of centered element in bounding box.\n *\n * @param {Object} rect element local bounding box\n * @param {Object} boundingRect constraint bounding box\n * @return {Object} element position containing x, y, width, and height\n */\n\n\nfunction centerGraphic(rect, boundingRect) {\n // Set rect to center, keep width / height ratio.\n var aspect = boundingRect.width / boundingRect.height;\n var width = rect.height * aspect;\n var height;\n\n if (width <= rect.width) {\n height = rect.height;\n } else {\n width = rect.width;\n height = width / aspect;\n }\n\n var cx = rect.x + rect.width / 2;\n var cy = rect.y + rect.height / 2;\n return {\n x: cx - width / 2,\n y: cy - height / 2,\n width: width,\n height: height\n };\n}\n\nvar mergePath = pathTool.mergePath;\n/**\n * Resize a path to fit the rect\n * @param {module:zrender/graphic/Path} path\n * @param {Object} rect\n */\n\nfunction resizePath(path, rect) {\n if (!path.applyTransform) {\n return;\n }\n\n var pathRect = path.getBoundingRect();\n var m = pathRect.calculateTransform(rect);\n path.applyTransform(m);\n}\n/**\n * Sub pixel optimize line for canvas\n *\n * @param {Object} param\n * @param {Object} [param.shape]\n * @param {number} [param.shape.x1]\n * @param {number} [param.shape.y1]\n * @param {number} [param.shape.x2]\n * @param {number} [param.shape.y2]\n * @param {Object} [param.style]\n * @param {number} [param.style.lineWidth]\n * @return {Object} Modified param\n */\n\n\nfunction subPixelOptimizeLine(param) {\n subPixelOptimizeUtil.subPixelOptimizeLine(param.shape, param.shape, param.style);\n return param;\n}\n/**\n * Sub pixel optimize rect for canvas\n *\n * @param {Object} param\n * @param {Object} [param.shape]\n * @param {number} [param.shape.x]\n * @param {number} [param.shape.y]\n * @param {number} [param.shape.width]\n * @param {number} [param.shape.height]\n * @param {Object} [param.style]\n * @param {number} [param.style.lineWidth]\n * @return {Object} Modified param\n */\n\n\nfunction subPixelOptimizeRect(param) {\n subPixelOptimizeUtil.subPixelOptimizeRect(param.shape, param.shape, param.style);\n return param;\n}\n/**\n * Sub pixel optimize for canvas\n *\n * @param {number} position Coordinate, such as x, y\n * @param {number} lineWidth Should be nonnegative integer.\n * @param {boolean=} positiveOrNegative Default false (negative).\n * @return {number} Optimized position.\n */\n\n\nvar subPixelOptimize = subPixelOptimizeUtil.subPixelOptimize;\n\nfunction hasFillOrStroke(fillOrStroke) {\n return fillOrStroke != null && fillOrStroke !== 'none';\n} // Most lifted color are duplicated.\n\n\nvar liftedColorMap = zrUtil.createHashMap();\nvar liftedColorCount = 0;\n\nfunction liftColor(color) {\n if (typeof color !== 'string') {\n return color;\n }\n\n var liftedColor = liftedColorMap.get(color);\n\n if (!liftedColor) {\n liftedColor = colorTool.lift(color, -0.1);\n\n if (liftedColorCount < 10000) {\n liftedColorMap.set(color, liftedColor);\n liftedColorCount++;\n }\n }\n\n return liftedColor;\n}\n\nfunction cacheElementStl(el) {\n if (!el.__hoverStlDirty) {\n return;\n }\n\n el.__hoverStlDirty = false;\n var hoverStyle = el.__hoverStl;\n\n if (!hoverStyle) {\n el.__cachedNormalStl = el.__cachedNormalZ2 = null;\n return;\n }\n\n var normalStyle = el.__cachedNormalStl = {};\n el.__cachedNormalZ2 = el.z2;\n var elStyle = el.style;\n\n for (var name in hoverStyle) {\n // See comment in `singleEnterEmphasis`.\n if (hoverStyle[name] != null) {\n normalStyle[name] = elStyle[name];\n }\n } // Always cache fill and stroke to normalStyle for lifting color.\n\n\n normalStyle.fill = elStyle.fill;\n normalStyle.stroke = elStyle.stroke;\n}\n\nfunction singleEnterEmphasis(el) {\n var hoverStl = el.__hoverStl;\n\n if (!hoverStl || el.__highlighted) {\n return;\n }\n\n var zr = el.__zr;\n var useHoverLayer = el.useHoverLayer && zr && zr.painter.type === 'canvas';\n el.__highlighted = useHoverLayer ? 'layer' : 'plain';\n\n if (el.isGroup || !zr && el.useHoverLayer) {\n return;\n }\n\n var elTarget = el;\n var targetStyle = el.style;\n\n if (useHoverLayer) {\n elTarget = zr.addHover(el);\n targetStyle = elTarget.style;\n }\n\n rollbackDefaultTextStyle(targetStyle);\n\n if (!useHoverLayer) {\n cacheElementStl(elTarget);\n } // styles can be:\n // {\n // label: {\n // show: false,\n // position: 'outside',\n // fontSize: 18\n // },\n // emphasis: {\n // label: {\n // show: true\n // }\n // }\n // },\n // where properties of `emphasis` may not appear in `normal`. We previously use\n // module:echarts/util/model#defaultEmphasis to merge `normal` to `emphasis`.\n // But consider rich text and setOption in merge mode, it is impossible to cover\n // all properties in merge. So we use merge mode when setting style here.\n // But we choose the merge strategy that only properties that is not `null/undefined`.\n // Because when making a textStyle (espacially rich text), it is not easy to distinguish\n // `hasOwnProperty` and `null/undefined` in code, so we trade them as the same for simplicity.\n // But this strategy brings a trouble that `null/undefined` can not be used to remove\n // style any more in `emphasis`. Users can both set properties directly on normal and\n // emphasis to avoid this issue, or we might support `'none'` for this case if required.\n\n\n targetStyle.extendFrom(hoverStl);\n setDefaultHoverFillStroke(targetStyle, hoverStl, 'fill');\n setDefaultHoverFillStroke(targetStyle, hoverStl, 'stroke');\n applyDefaultTextStyle(targetStyle);\n\n if (!useHoverLayer) {\n el.dirty(false);\n el.z2 += Z2_EMPHASIS_LIFT;\n }\n}\n\nfunction setDefaultHoverFillStroke(targetStyle, hoverStyle, prop) {\n if (!hasFillOrStroke(hoverStyle[prop]) && hasFillOrStroke(targetStyle[prop])) {\n targetStyle[prop] = liftColor(targetStyle[prop]);\n }\n}\n\nfunction singleEnterNormal(el) {\n var highlighted = el.__highlighted;\n\n if (!highlighted) {\n return;\n }\n\n el.__highlighted = false;\n\n if (el.isGroup) {\n return;\n }\n\n if (highlighted === 'layer') {\n el.__zr && el.__zr.removeHover(el);\n } else {\n var style = el.style;\n var normalStl = el.__cachedNormalStl;\n\n if (normalStl) {\n rollbackDefaultTextStyle(style);\n el.setStyle(normalStl);\n applyDefaultTextStyle(style);\n } // `__cachedNormalZ2` will not be reset if calling `setElementHoverStyle`\n // when `el` is on emphasis state. So here by comparing with 1, we try\n // hard to make the bug case rare.\n\n\n var normalZ2 = el.__cachedNormalZ2;\n\n if (normalZ2 != null && el.z2 - normalZ2 === Z2_EMPHASIS_LIFT) {\n el.z2 = normalZ2;\n }\n }\n}\n\nfunction traverseUpdate(el, updater, commonParam) {\n // If root is group, also enter updater for `highDownOnUpdate`.\n var fromState = NORMAL;\n var toState = NORMAL;\n var trigger; // See the rule of `highDownOnUpdate` on `graphic.setAsHighDownDispatcher`.\n\n el.__highlighted && (fromState = EMPHASIS, trigger = true);\n updater(el, commonParam);\n el.__highlighted && (toState = EMPHASIS, trigger = true);\n el.isGroup && el.traverse(function (child) {\n !child.isGroup && updater(child, commonParam);\n });\n trigger && el.__highDownOnUpdate && el.__highDownOnUpdate(fromState, toState);\n}\n/**\n * Set hover style (namely \"emphasis style\") of element, based on the current\n * style of the given `el`.\n * This method should be called after all of the normal styles have been adopted\n * to the `el`. See the reason on `setHoverStyle`.\n *\n * @param {module:zrender/Element} el Should not be `zrender/container/Group`.\n * @param {Object} [el.hoverStyle] Can be set on el or its descendants,\n * e.g., `el.hoverStyle = ...; graphic.setHoverStyle(el); `.\n * Often used when item group has a label element and it's hoverStyle is different.\n * @param {Object|boolean} [hoverStl] The specified hover style.\n * If set as `false`, disable the hover style.\n * Similarly, The `el.hoverStyle` can alse be set\n * as `false` to disable the hover style.\n * Otherwise, use the default hover style if not provided.\n */\n\n\nfunction setElementHoverStyle(el, hoverStl) {\n // For performance consideration, it might be better to make the \"hover style\" only the\n // difference properties from the \"normal style\", but not a entire copy of all styles.\n hoverStl = el.__hoverStl = hoverStl !== false && (el.hoverStyle || hoverStl || {});\n el.__hoverStlDirty = true; // FIXME\n // It is not completely right to save \"normal\"/\"emphasis\" flag on elements.\n // It probably should be saved on `data` of series. Consider the cases:\n // (1) A highlighted elements are moved out of the view port and re-enter\n // again by dataZoom.\n // (2) call `setOption` and replace elements totally when they are highlighted.\n\n if (el.__highlighted) {\n // Consider the case:\n // The styles of a highlighted `el` is being updated. The new \"emphasis style\"\n // should be adapted to the `el`. Notice here new \"normal styles\" should have\n // been set outside and the cached \"normal style\" is out of date.\n el.__cachedNormalStl = null; // Do not clear `__cachedNormalZ2` here, because setting `z2` is not a constraint\n // of this method. In most cases, `z2` is not set and hover style should be able\n // to rollback. Of course, that would bring bug, but only in a rare case, see\n // `doSingleLeaveHover` for details.\n\n singleEnterNormal(el);\n singleEnterEmphasis(el);\n }\n}\n\nfunction onElementMouseOver(e) {\n !shouldSilent(this, e) // \"emphasis\" event highlight has higher priority than mouse highlight.\n && !this.__highByOuter && traverseUpdate(this, singleEnterEmphasis);\n}\n\nfunction onElementMouseOut(e) {\n !shouldSilent(this, e) // \"emphasis\" event highlight has higher priority than mouse highlight.\n && !this.__highByOuter && traverseUpdate(this, singleEnterNormal);\n}\n\nfunction onElementEmphasisEvent(highlightDigit) {\n this.__highByOuter |= 1 << (highlightDigit || 0);\n traverseUpdate(this, singleEnterEmphasis);\n}\n\nfunction onElementNormalEvent(highlightDigit) {\n !(this.__highByOuter &= ~(1 << (highlightDigit || 0))) && traverseUpdate(this, singleEnterNormal);\n}\n\nfunction shouldSilent(el, e) {\n return el.__highDownSilentOnTouch && e.zrByTouch;\n}\n/**\n * Set hover style (namely \"emphasis style\") of element,\n * based on the current style of the given `el`.\n *\n * (1)\n * **CONSTRAINTS** for this method:\n * This method MUST be called after all of the normal styles having been adopted\n * to the `el`.\n * The input `hoverStyle` (that is, \"emphasis style\") MUST be the subset of the\n * \"normal style\" having been set to the el.\n * `color` MUST be one of the \"normal styles\" (because color might be lifted as\n * a default hover style).\n *\n * The reason: this method treat the current style of the `el` as the \"normal style\"\n * and cache them when enter/update the \"emphasis style\". Consider the case: the `el`\n * is in \"emphasis\" state and `setOption`/`dispatchAction` trigger the style updating\n * logic, where the el should shift from the original emphasis style to the new\n * \"emphasis style\" and should be able to \"downplay\" back to the new \"normal style\".\n *\n * Indeed, it is error-prone to make a interface has so many constraints, but I have\n * not found a better solution yet to fit the backward compatibility, performance and\n * the current programming style.\n *\n * (2)\n * Call the method for a \"root\" element once. Do not call it for each descendants.\n * If the descendants elemenets of a group has itself hover style different from the\n * root group, we can simply mount the style on `el.hoverStyle` for them, but should\n * not call this method for them.\n *\n * (3) These input parameters can be set directly on `el`:\n *\n * @param {module:zrender/Element} el\n * @param {Object} [el.hoverStyle] See `graphic.setElementHoverStyle`.\n * @param {boolean} [el.highDownSilentOnTouch=false] See `graphic.setAsHighDownDispatcher`.\n * @param {Function} [el.highDownOnUpdate] See `graphic.setAsHighDownDispatcher`.\n * @param {Object|boolean} [hoverStyle] See `graphic.setElementHoverStyle`.\n */\n\n\nfunction setHoverStyle(el, hoverStyle) {\n setAsHighDownDispatcher(el, true);\n traverseUpdate(el, setElementHoverStyle, hoverStyle);\n}\n/**\n * @param {module:zrender/Element} el\n * @param {Function} [el.highDownOnUpdate] Called when state updated.\n * Since `setHoverStyle` has the constraint that it must be called after\n * all of the normal style updated, `highDownOnUpdate` is not needed to\n * trigger if both `fromState` and `toState` is 'normal', and needed to\n * trigger if both `fromState` and `toState` is 'emphasis', which enables\n * to sync outside style settings to \"emphasis\" state.\n * @this {string} This dispatcher `el`.\n * @param {string} fromState Can be \"normal\" or \"emphasis\".\n * `fromState` might equal to `toState`,\n * for example, when this method is called when `el` is\n * on \"emphasis\" state.\n * @param {string} toState Can be \"normal\" or \"emphasis\".\n *\n * FIXME\n * CAUTION: Do not expose `highDownOnUpdate` outside echarts.\n * Because it is not a complete solution. The update\n * listener should not have been mount in element,\n * and the normal/emphasis state should not have\n * mantained on elements.\n *\n * @param {boolean} [el.highDownSilentOnTouch=false]\n * In touch device, mouseover event will be trigger on touchstart event\n * (see module:zrender/dom/HandlerProxy). By this mechanism, we can\n * conveniently use hoverStyle when tap on touch screen without additional\n * code for compatibility.\n * But if the chart/component has select feature, which usually also use\n * hoverStyle, there might be conflict between 'select-highlight' and\n * 'hover-highlight' especially when roam is enabled (see geo for example).\n * In this case, `highDownSilentOnTouch` should be used to disable\n * hover-highlight on touch device.\n * @param {boolean} [asDispatcher=true] If `false`, do not set as \"highDownDispatcher\".\n */\n\n\nfunction setAsHighDownDispatcher(el, asDispatcher) {\n var disable = asDispatcher === false; // Make `highDownSilentOnTouch` and `highDownOnUpdate` only work after\n // `setAsHighDownDispatcher` called. Avoid it is modified by user unexpectedly.\n\n el.__highDownSilentOnTouch = el.highDownSilentOnTouch;\n el.__highDownOnUpdate = el.highDownOnUpdate; // Simple optimize, since this method might be\n // called for each elements of a group in some cases.\n\n if (!disable || el.__highDownDispatcher) {\n var method = disable ? 'off' : 'on'; // Duplicated function will be auto-ignored, see Eventful.js.\n\n el[method]('mouseover', onElementMouseOver)[method]('mouseout', onElementMouseOut); // Emphasis, normal can be triggered manually by API or other components like hover link.\n\n el[method]('emphasis', onElementEmphasisEvent)[method]('normal', onElementNormalEvent); // Also keep previous record.\n\n el.__highByOuter = el.__highByOuter || 0;\n el.__highDownDispatcher = !disable;\n }\n}\n/**\n * @param {module:zrender/src/Element} el\n * @return {boolean}\n */\n\n\nfunction isHighDownDispatcher(el) {\n return !!(el && el.__highDownDispatcher);\n}\n/**\n * Support hightlight/downplay record on each elements.\n * For the case: hover highlight/downplay (legend, visualMap, ...) and\n * user triggerred hightlight/downplay should not conflict.\n * Only all of the highlightDigit cleared, return to normal.\n * @param {string} highlightKey\n * @return {number} highlightDigit\n */\n\n\nfunction getHighlightDigit(highlightKey) {\n var highlightDigit = _highlightKeyMap[highlightKey];\n\n if (highlightDigit == null && _highlightNextDigit <= 32) {\n highlightDigit = _highlightKeyMap[highlightKey] = _highlightNextDigit++;\n }\n\n return highlightDigit;\n}\n/**\n * See more info in `setTextStyleCommon`.\n * @param {Object|module:zrender/graphic/Style} normalStyle\n * @param {Object} emphasisStyle\n * @param {module:echarts/model/Model} normalModel\n * @param {module:echarts/model/Model} emphasisModel\n * @param {Object} opt Check `opt` of `setTextStyleCommon` to find other props.\n * @param {string|Function} [opt.defaultText]\n * @param {module:echarts/model/Model} [opt.labelFetcher] Fetch text by\n * `opt.labelFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {number} [opt.labelDataIndex] Fetch text by\n * `opt.textFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {number} [opt.labelDimIndex] Fetch text by\n * `opt.textFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {string} [opt.labelProp] Fetch text by\n * `opt.textFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {Object} [normalSpecified]\n * @param {Object} [emphasisSpecified]\n */\n\n\nfunction setLabelStyle(normalStyle, emphasisStyle, normalModel, emphasisModel, opt, normalSpecified, emphasisSpecified) {\n opt = opt || EMPTY_OBJ;\n var labelFetcher = opt.labelFetcher;\n var labelDataIndex = opt.labelDataIndex;\n var labelDimIndex = opt.labelDimIndex;\n var labelProp = opt.labelProp; // This scenario, `label.normal.show = true; label.emphasis.show = false`,\n // is not supported util someone requests.\n\n var showNormal = normalModel.getShallow('show');\n var showEmphasis = emphasisModel.getShallow('show'); // Consider performance, only fetch label when necessary.\n // If `normal.show` is `false` and `emphasis.show` is `true` and `emphasis.formatter` is not set,\n // label should be displayed, where text is fetched by `normal.formatter` or `opt.defaultText`.\n\n var baseText;\n\n if (showNormal || showEmphasis) {\n if (labelFetcher) {\n baseText = labelFetcher.getFormattedLabel(labelDataIndex, 'normal', null, labelDimIndex, labelProp);\n }\n\n if (baseText == null) {\n baseText = zrUtil.isFunction(opt.defaultText) ? opt.defaultText(labelDataIndex, opt) : opt.defaultText;\n }\n }\n\n var normalStyleText = showNormal ? baseText : null;\n var emphasisStyleText = showEmphasis ? zrUtil.retrieve2(labelFetcher ? labelFetcher.getFormattedLabel(labelDataIndex, 'emphasis', null, labelDimIndex, labelProp) : null, baseText) : null; // Optimize: If style.text is null, text will not be drawn.\n\n if (normalStyleText != null || emphasisStyleText != null) {\n // Always set `textStyle` even if `normalStyle.text` is null, because default\n // values have to be set on `normalStyle`.\n // If we set default values on `emphasisStyle`, consider case:\n // Firstly, `setOption(... label: {normal: {text: null}, emphasis: {show: true}} ...);`\n // Secondly, `setOption(... label: {noraml: {show: true, text: 'abc', color: 'red'} ...);`\n // Then the 'red' will not work on emphasis.\n setTextStyle(normalStyle, normalModel, normalSpecified, opt);\n setTextStyle(emphasisStyle, emphasisModel, emphasisSpecified, opt, true);\n }\n\n normalStyle.text = normalStyleText;\n emphasisStyle.text = emphasisStyleText;\n}\n/**\n * Modify label style manually.\n * Only works after `setLabelStyle` and `setElementHoverStyle` called.\n *\n * @param {module:zrender/src/Element} el\n * @param {Object} [normalStyleProps] optional\n * @param {Object} [emphasisStyleProps] optional\n */\n\n\nfunction modifyLabelStyle(el, normalStyleProps, emphasisStyleProps) {\n var elStyle = el.style;\n\n if (normalStyleProps) {\n rollbackDefaultTextStyle(elStyle);\n el.setStyle(normalStyleProps);\n applyDefaultTextStyle(elStyle);\n }\n\n elStyle = el.__hoverStl;\n\n if (emphasisStyleProps && elStyle) {\n rollbackDefaultTextStyle(elStyle);\n zrUtil.extend(elStyle, emphasisStyleProps);\n applyDefaultTextStyle(elStyle);\n }\n}\n/**\n * Set basic textStyle properties.\n * See more info in `setTextStyleCommon`.\n * @param {Object|module:zrender/graphic/Style} textStyle\n * @param {module:echarts/model/Model} model\n * @param {Object} [specifiedTextStyle] Can be overrided by settings in model.\n * @param {Object} [opt] See `opt` of `setTextStyleCommon`.\n * @param {boolean} [isEmphasis]\n */\n\n\nfunction setTextStyle(textStyle, textStyleModel, specifiedTextStyle, opt, isEmphasis) {\n setTextStyleCommon(textStyle, textStyleModel, opt, isEmphasis);\n specifiedTextStyle && zrUtil.extend(textStyle, specifiedTextStyle); // textStyle.host && textStyle.host.dirty && textStyle.host.dirty(false);\n\n return textStyle;\n}\n/**\n * Set text option in the style.\n * See more info in `setTextStyleCommon`.\n * @deprecated\n * @param {Object} textStyle\n * @param {module:echarts/model/Model} labelModel\n * @param {string|boolean} defaultColor Default text color.\n * If set as false, it will be processed as a emphasis style.\n */\n\n\nfunction setText(textStyle, labelModel, defaultColor) {\n var opt = {\n isRectText: true\n };\n var isEmphasis;\n\n if (defaultColor === false) {\n isEmphasis = true;\n } else {\n // Support setting color as 'auto' to get visual color.\n opt.autoColor = defaultColor;\n }\n\n setTextStyleCommon(textStyle, labelModel, opt, isEmphasis); // textStyle.host && textStyle.host.dirty && textStyle.host.dirty(false);\n}\n/**\n * The uniform entry of set text style, that is, retrieve style definitions\n * from `model` and set to `textStyle` object.\n *\n * Never in merge mode, but in overwrite mode, that is, all of the text style\n * properties will be set. (Consider the states of normal and emphasis and\n * default value can be adopted, merge would make the logic too complicated\n * to manage.)\n *\n * The `textStyle` object can either be a plain object or an instance of\n * `zrender/src/graphic/Style`, and either be the style of normal or emphasis.\n * After this mothod called, the `textStyle` object can then be used in\n * `el.setStyle(textStyle)` or `el.hoverStyle = textStyle`.\n *\n * Default value will be adopted and `insideRollbackOpt` will be created.\n * See `applyDefaultTextStyle` `rollbackDefaultTextStyle` for more details.\n *\n * opt: {\n * disableBox: boolean, Whether diable drawing box of block (outer most).\n * isRectText: boolean,\n * autoColor: string, specify a color when color is 'auto',\n * for textFill, textStroke, textBackgroundColor, and textBorderColor.\n * If autoColor specified, it is used as default textFill.\n * useInsideStyle:\n * `true`: Use inside style (textFill, textStroke, textStrokeWidth)\n * if `textFill` is not specified.\n * `false`: Do not use inside style.\n * `null/undefined`: use inside style if `isRectText` is true and\n * `textFill` is not specified and textPosition contains `'inside'`.\n * forceRich: boolean\n * }\n */\n\n\nfunction setTextStyleCommon(textStyle, textStyleModel, opt, isEmphasis) {\n // Consider there will be abnormal when merge hover style to normal style if given default value.\n opt = opt || EMPTY_OBJ;\n\n if (opt.isRectText) {\n var textPosition;\n\n if (opt.getTextPosition) {\n textPosition = opt.getTextPosition(textStyleModel, isEmphasis);\n } else {\n textPosition = textStyleModel.getShallow('position') || (isEmphasis ? null : 'inside'); // 'outside' is not a valid zr textPostion value, but used\n // in bar series, and magric type should be considered.\n\n textPosition === 'outside' && (textPosition = 'top');\n }\n\n textStyle.textPosition = textPosition;\n textStyle.textOffset = textStyleModel.getShallow('offset');\n var labelRotate = textStyleModel.getShallow('rotate');\n labelRotate != null && (labelRotate *= Math.PI / 180);\n textStyle.textRotation = labelRotate;\n textStyle.textDistance = zrUtil.retrieve2(textStyleModel.getShallow('distance'), isEmphasis ? null : 5);\n }\n\n var ecModel = textStyleModel.ecModel;\n var globalTextStyle = ecModel && ecModel.option.textStyle; // Consider case:\n // {\n // data: [{\n // value: 12,\n // label: {\n // rich: {\n // // no 'a' here but using parent 'a'.\n // }\n // }\n // }],\n // rich: {\n // a: { ... }\n // }\n // }\n\n var richItemNames = getRichItemNames(textStyleModel);\n var richResult;\n\n if (richItemNames) {\n richResult = {};\n\n for (var name in richItemNames) {\n if (richItemNames.hasOwnProperty(name)) {\n // Cascade is supported in rich.\n var richTextStyle = textStyleModel.getModel(['rich', name]); // In rich, never `disableBox`.\n // FIXME: consider `label: {formatter: '{a|xx}', color: 'blue', rich: {a: {}}}`,\n // the default color `'blue'` will not be adopted if no color declared in `rich`.\n // That might confuses users. So probably we should put `textStyleModel` as the\n // root ancestor of the `richTextStyle`. But that would be a break change.\n\n setTokenTextStyle(richResult[name] = {}, richTextStyle, globalTextStyle, opt, isEmphasis);\n }\n }\n }\n\n textStyle.rich = richResult;\n setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isEmphasis, true);\n\n if (opt.forceRich && !opt.textStyle) {\n opt.textStyle = {};\n }\n\n return textStyle;\n} // Consider case:\n// {\n// data: [{\n// value: 12,\n// label: {\n// rich: {\n// // no 'a' here but using parent 'a'.\n// }\n// }\n// }],\n// rich: {\n// a: { ... }\n// }\n// }\n\n\nfunction getRichItemNames(textStyleModel) {\n // Use object to remove duplicated names.\n var richItemNameMap;\n\n while (textStyleModel && textStyleModel !== textStyleModel.ecModel) {\n var rich = (textStyleModel.option || EMPTY_OBJ).rich;\n\n if (rich) {\n richItemNameMap = richItemNameMap || {};\n\n for (var name in rich) {\n if (rich.hasOwnProperty(name)) {\n richItemNameMap[name] = 1;\n }\n }\n }\n\n textStyleModel = textStyleModel.parentModel;\n }\n\n return richItemNameMap;\n}\n\nfunction setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isEmphasis, isBlock) {\n // In merge mode, default value should not be given.\n globalTextStyle = !isEmphasis && globalTextStyle || EMPTY_OBJ;\n textStyle.textFill = getAutoColor(textStyleModel.getShallow('color'), opt) || globalTextStyle.color;\n textStyle.textStroke = getAutoColor(textStyleModel.getShallow('textBorderColor'), opt) || globalTextStyle.textBorderColor;\n textStyle.textStrokeWidth = zrUtil.retrieve2(textStyleModel.getShallow('textBorderWidth'), globalTextStyle.textBorderWidth);\n\n if (!isEmphasis) {\n if (isBlock) {\n textStyle.insideRollbackOpt = opt;\n applyDefaultTextStyle(textStyle);\n } // Set default finally.\n\n\n if (textStyle.textFill == null) {\n textStyle.textFill = opt.autoColor;\n }\n } // Do not use `getFont` here, because merge should be supported, where\n // part of these properties may be changed in emphasis style, and the\n // others should remain their original value got from normal style.\n\n\n textStyle.fontStyle = textStyleModel.getShallow('fontStyle') || globalTextStyle.fontStyle;\n textStyle.fontWeight = textStyleModel.getShallow('fontWeight') || globalTextStyle.fontWeight;\n textStyle.fontSize = textStyleModel.getShallow('fontSize') || globalTextStyle.fontSize;\n textStyle.fontFamily = textStyleModel.getShallow('fontFamily') || globalTextStyle.fontFamily;\n textStyle.textAlign = textStyleModel.getShallow('align');\n textStyle.textVerticalAlign = textStyleModel.getShallow('verticalAlign') || textStyleModel.getShallow('baseline');\n textStyle.textLineHeight = textStyleModel.getShallow('lineHeight');\n textStyle.textWidth = textStyleModel.getShallow('width');\n textStyle.textHeight = textStyleModel.getShallow('height');\n textStyle.textTag = textStyleModel.getShallow('tag');\n\n if (!isBlock || !opt.disableBox) {\n textStyle.textBackgroundColor = getAutoColor(textStyleModel.getShallow('backgroundColor'), opt);\n textStyle.textPadding = textStyleModel.getShallow('padding');\n textStyle.textBorderColor = getAutoColor(textStyleModel.getShallow('borderColor'), opt);\n textStyle.textBorderWidth = textStyleModel.getShallow('borderWidth');\n textStyle.textBorderRadius = textStyleModel.getShallow('borderRadius');\n textStyle.textBoxShadowColor = textStyleModel.getShallow('shadowColor');\n textStyle.textBoxShadowBlur = textStyleModel.getShallow('shadowBlur');\n textStyle.textBoxShadowOffsetX = textStyleModel.getShallow('shadowOffsetX');\n textStyle.textBoxShadowOffsetY = textStyleModel.getShallow('shadowOffsetY');\n }\n\n textStyle.textShadowColor = textStyleModel.getShallow('textShadowColor') || globalTextStyle.textShadowColor;\n textStyle.textShadowBlur = textStyleModel.getShallow('textShadowBlur') || globalTextStyle.textShadowBlur;\n textStyle.textShadowOffsetX = textStyleModel.getShallow('textShadowOffsetX') || globalTextStyle.textShadowOffsetX;\n textStyle.textShadowOffsetY = textStyleModel.getShallow('textShadowOffsetY') || globalTextStyle.textShadowOffsetY;\n}\n\nfunction getAutoColor(color, opt) {\n return color !== 'auto' ? color : opt && opt.autoColor ? opt.autoColor : null;\n}\n/**\n * Give some default value to the input `textStyle` object, based on the current settings\n * in this `textStyle` object.\n *\n * The Scenario:\n * when text position is `inside` and `textFill` is not specified, we show\n * text border by default for better view. But it should be considered that text position\n * might be changed when hovering or being emphasis, where the `insideRollback` is used to\n * restore the style.\n *\n * Usage (& NOTICE):\n * When a style object (eithor plain object or instance of `zrender/src/graphic/Style`) is\n * about to be modified on its text related properties, `rollbackDefaultTextStyle` should\n * be called before the modification and `applyDefaultTextStyle` should be called after that.\n * (For the case that all of the text related properties is reset, like `setTextStyleCommon`\n * does, `rollbackDefaultTextStyle` is not needed to be called).\n */\n\n\nfunction applyDefaultTextStyle(textStyle) {\n var textPosition = textStyle.textPosition;\n var opt = textStyle.insideRollbackOpt;\n var insideRollback;\n\n if (opt && textStyle.textFill == null) {\n var autoColor = opt.autoColor;\n var isRectText = opt.isRectText;\n var useInsideStyle = opt.useInsideStyle;\n var useInsideStyleCache = useInsideStyle !== false && (useInsideStyle === true || isRectText && textPosition // textPosition can be [10, 30]\n && typeof textPosition === 'string' && textPosition.indexOf('inside') >= 0);\n var useAutoColorCache = !useInsideStyleCache && autoColor != null; // All of the props declared in `CACHED_LABEL_STYLE_PROPERTIES` are to be cached.\n\n if (useInsideStyleCache || useAutoColorCache) {\n insideRollback = {\n textFill: textStyle.textFill,\n textStroke: textStyle.textStroke,\n textStrokeWidth: textStyle.textStrokeWidth\n };\n }\n\n if (useInsideStyleCache) {\n textStyle.textFill = '#fff'; // Consider text with #fff overflow its container.\n\n if (textStyle.textStroke == null) {\n textStyle.textStroke = autoColor;\n textStyle.textStrokeWidth == null && (textStyle.textStrokeWidth = 2);\n }\n }\n\n if (useAutoColorCache) {\n textStyle.textFill = autoColor;\n }\n } // Always set `insideRollback`, so that the previous one can be cleared.\n\n\n textStyle.insideRollback = insideRollback;\n}\n/**\n * Consider the case: in a scatter,\n * label: {\n * normal: {position: 'inside'},\n * emphasis: {position: 'top'}\n * }\n * In the normal state, the `textFill` will be set as '#fff' for pretty view (see\n * `applyDefaultTextStyle`), but when switching to emphasis state, the `textFill`\n * should be retured to 'autoColor', but not keep '#fff'.\n */\n\n\nfunction rollbackDefaultTextStyle(style) {\n var insideRollback = style.insideRollback;\n\n if (insideRollback) {\n // Reset all of the props in `CACHED_LABEL_STYLE_PROPERTIES`.\n style.textFill = insideRollback.textFill;\n style.textStroke = insideRollback.textStroke;\n style.textStrokeWidth = insideRollback.textStrokeWidth;\n style.insideRollback = null;\n }\n}\n\nfunction getFont(opt, ecModel) {\n var gTextStyleModel = ecModel && ecModel.getModel('textStyle');\n return zrUtil.trim([// FIXME in node-canvas fontWeight is before fontStyle\n opt.fontStyle || gTextStyleModel && gTextStyleModel.getShallow('fontStyle') || '', opt.fontWeight || gTextStyleModel && gTextStyleModel.getShallow('fontWeight') || '', (opt.fontSize || gTextStyleModel && gTextStyleModel.getShallow('fontSize') || 12) + 'px', opt.fontFamily || gTextStyleModel && gTextStyleModel.getShallow('fontFamily') || 'sans-serif'].join(' '));\n}\n\nfunction animateOrSetProps(isUpdate, el, props, animatableModel, dataIndex, cb) {\n if (typeof dataIndex === 'function') {\n cb = dataIndex;\n dataIndex = null;\n } // Do not check 'animation' property directly here. Consider this case:\n // animation model is an `itemModel`, whose does not have `isAnimationEnabled`\n // but its parent model (`seriesModel`) does.\n\n\n var animationEnabled = animatableModel && animatableModel.isAnimationEnabled();\n\n if (animationEnabled) {\n var postfix = isUpdate ? 'Update' : '';\n var duration = animatableModel.getShallow('animationDuration' + postfix);\n var animationEasing = animatableModel.getShallow('animationEasing' + postfix);\n var animationDelay = animatableModel.getShallow('animationDelay' + postfix);\n\n if (typeof animationDelay === 'function') {\n animationDelay = animationDelay(dataIndex, animatableModel.getAnimationDelayParams ? animatableModel.getAnimationDelayParams(el, dataIndex) : null);\n }\n\n if (typeof duration === 'function') {\n duration = duration(dataIndex);\n }\n\n duration > 0 ? el.animateTo(props, duration, animationDelay || 0, animationEasing, cb, !!cb) : (el.stopAnimation(), el.attr(props), cb && cb());\n } else {\n el.stopAnimation();\n el.attr(props);\n cb && cb();\n }\n}\n/**\n * Update graphic element properties with or without animation according to the\n * configuration in series.\n *\n * Caution: this method will stop previous animation.\n * So do not use this method to one element twice before\n * animation starts, unless you know what you are doing.\n *\n * @param {module:zrender/Element} el\n * @param {Object} props\n * @param {module:echarts/model/Model} [animatableModel]\n * @param {number} [dataIndex]\n * @param {Function} [cb]\n * @example\n * graphic.updateProps(el, {\n * position: [100, 100]\n * }, seriesModel, dataIndex, function () { console.log('Animation done!'); });\n * // Or\n * graphic.updateProps(el, {\n * position: [100, 100]\n * }, seriesModel, function () { console.log('Animation done!'); });\n */\n\n\nfunction updateProps(el, props, animatableModel, dataIndex, cb) {\n animateOrSetProps(true, el, props, animatableModel, dataIndex, cb);\n}\n/**\n * Init graphic element properties with or without animation according to the\n * configuration in series.\n *\n * Caution: this method will stop previous animation.\n * So do not use this method to one element twice before\n * animation starts, unless you know what you are doing.\n *\n * @param {module:zrender/Element} el\n * @param {Object} props\n * @param {module:echarts/model/Model} [animatableModel]\n * @param {number} [dataIndex]\n * @param {Function} cb\n */\n\n\nfunction initProps(el, props, animatableModel, dataIndex, cb) {\n animateOrSetProps(false, el, props, animatableModel, dataIndex, cb);\n}\n/**\n * Get transform matrix of target (param target),\n * in coordinate of its ancestor (param ancestor)\n *\n * @param {module:zrender/mixin/Transformable} target\n * @param {module:zrender/mixin/Transformable} [ancestor]\n */\n\n\nfunction getTransform(target, ancestor) {\n var mat = matrix.identity([]);\n\n while (target && target !== ancestor) {\n matrix.mul(mat, target.getLocalTransform(), mat);\n target = target.parent;\n }\n\n return mat;\n}\n/**\n * Apply transform to an vertex.\n * @param {Array.} target [x, y]\n * @param {Array.|TypedArray.|Object} transform Can be:\n * + Transform matrix: like [1, 0, 0, 1, 0, 0]\n * + {position, rotation, scale}, the same as `zrender/Transformable`.\n * @param {boolean=} invert Whether use invert matrix.\n * @return {Array.} [x, y]\n */\n\n\nfunction applyTransform(target, transform, invert) {\n if (transform && !zrUtil.isArrayLike(transform)) {\n transform = Transformable.getLocalTransform(transform);\n }\n\n if (invert) {\n transform = matrix.invert([], transform);\n }\n\n return vector.applyTransform([], target, transform);\n}\n/**\n * @param {string} direction 'left' 'right' 'top' 'bottom'\n * @param {Array.} transform Transform matrix: like [1, 0, 0, 1, 0, 0]\n * @param {boolean=} invert Whether use invert matrix.\n * @return {string} Transformed direction. 'left' 'right' 'top' 'bottom'\n */\n\n\nfunction transformDirection(direction, transform, invert) {\n // Pick a base, ensure that transform result will not be (0, 0).\n var hBase = transform[4] === 0 || transform[5] === 0 || transform[0] === 0 ? 1 : Math.abs(2 * transform[4] / transform[0]);\n var vBase = transform[4] === 0 || transform[5] === 0 || transform[2] === 0 ? 1 : Math.abs(2 * transform[4] / transform[2]);\n var vertex = [direction === 'left' ? -hBase : direction === 'right' ? hBase : 0, direction === 'top' ? -vBase : direction === 'bottom' ? vBase : 0];\n vertex = applyTransform(vertex, transform, invert);\n return Math.abs(vertex[0]) > Math.abs(vertex[1]) ? vertex[0] > 0 ? 'right' : 'left' : vertex[1] > 0 ? 'bottom' : 'top';\n}\n/**\n * Apply group transition animation from g1 to g2.\n * If no animatableModel, no animation.\n */\n\n\nfunction groupTransition(g1, g2, animatableModel, cb) {\n if (!g1 || !g2) {\n return;\n }\n\n function getElMap(g) {\n var elMap = {};\n g.traverse(function (el) {\n if (!el.isGroup && el.anid) {\n elMap[el.anid] = el;\n }\n });\n return elMap;\n }\n\n function getAnimatableProps(el) {\n var obj = {\n position: vector.clone(el.position),\n rotation: el.rotation\n };\n\n if (el.shape) {\n obj.shape = zrUtil.extend({}, el.shape);\n }\n\n return obj;\n }\n\n var elMap1 = getElMap(g1);\n g2.traverse(function (el) {\n if (!el.isGroup && el.anid) {\n var oldEl = elMap1[el.anid];\n\n if (oldEl) {\n var newProp = getAnimatableProps(el);\n el.attr(getAnimatableProps(oldEl));\n updateProps(el, newProp, animatableModel, el.dataIndex);\n } // else {\n // if (el.previousProps) {\n // graphic.updateProps\n // }\n // }\n\n }\n });\n}\n/**\n * @param {Array.>} points Like: [[23, 44], [53, 66], ...]\n * @param {Object} rect {x, y, width, height}\n * @return {Array.>} A new clipped points.\n */\n\n\nfunction clipPointsByRect(points, rect) {\n // FIXME: this way migth be incorrect when grpahic clipped by a corner.\n // and when element have border.\n return zrUtil.map(points, function (point) {\n var x = point[0];\n x = mathMax(x, rect.x);\n x = mathMin(x, rect.x + rect.width);\n var y = point[1];\n y = mathMax(y, rect.y);\n y = mathMin(y, rect.y + rect.height);\n return [x, y];\n });\n}\n/**\n * @param {Object} targetRect {x, y, width, height}\n * @param {Object} rect {x, y, width, height}\n * @return {Object} A new clipped rect. If rect size are negative, return undefined.\n */\n\n\nfunction clipRectByRect(targetRect, rect) {\n var x = mathMax(targetRect.x, rect.x);\n var x2 = mathMin(targetRect.x + targetRect.width, rect.x + rect.width);\n var y = mathMax(targetRect.y, rect.y);\n var y2 = mathMin(targetRect.y + targetRect.height, rect.y + rect.height); // If the total rect is cliped, nothing, including the border,\n // should be painted. So return undefined.\n\n if (x2 >= x && y2 >= y) {\n return {\n x: x,\n y: y,\n width: x2 - x,\n height: y2 - y\n };\n }\n}\n/**\n * @param {string} iconStr Support 'image://' or 'path://' or direct svg path.\n * @param {Object} [opt] Properties of `module:zrender/Element`, except `style`.\n * @param {Object} [rect] {x, y, width, height}\n * @return {module:zrender/Element} Icon path or image element.\n */\n\n\nfunction createIcon(iconStr, opt, rect) {\n opt = zrUtil.extend({\n rectHover: true\n }, opt);\n var style = opt.style = {\n strokeNoScale: true\n };\n rect = rect || {\n x: -1,\n y: -1,\n width: 2,\n height: 2\n };\n\n if (iconStr) {\n return iconStr.indexOf('image://') === 0 ? (style.image = iconStr.slice(8), zrUtil.defaults(style, rect), new ZImage(opt)) : makePath(iconStr.replace('path://', ''), opt, rect, 'center');\n }\n}\n/**\n * Return `true` if the given line (line `a`) and the given polygon\n * are intersect.\n * Note that we do not count colinear as intersect here because no\n * requirement for that. We could do that if required in future.\n *\n * @param {number} a1x\n * @param {number} a1y\n * @param {number} a2x\n * @param {number} a2y\n * @param {Array.>} points Points of the polygon.\n * @return {boolean}\n */\n\n\nfunction linePolygonIntersect(a1x, a1y, a2x, a2y, points) {\n for (var i = 0, p2 = points[points.length - 1]; i < points.length; i++) {\n var p = points[i];\n\n if (lineLineIntersect(a1x, a1y, a2x, a2y, p[0], p[1], p2[0], p2[1])) {\n return true;\n }\n\n p2 = p;\n }\n}\n/**\n * Return `true` if the given two lines (line `a` and line `b`)\n * are intersect.\n * Note that we do not count colinear as intersect here because no\n * requirement for that. We could do that if required in future.\n *\n * @param {number} a1x\n * @param {number} a1y\n * @param {number} a2x\n * @param {number} a2y\n * @param {number} b1x\n * @param {number} b1y\n * @param {number} b2x\n * @param {number} b2y\n * @return {boolean}\n */\n\n\nfunction lineLineIntersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) {\n // let `vec_m` to be `vec_a2 - vec_a1` and `vec_n` to be `vec_b2 - vec_b1`.\n var mx = a2x - a1x;\n var my = a2y - a1y;\n var nx = b2x - b1x;\n var ny = b2y - b1y; // `vec_m` and `vec_n` are parallel iff\n // exising `k` such that `vec_m = k · vec_n`, equivalent to `vec_m X vec_n = 0`.\n\n var nmCrossProduct = crossProduct2d(nx, ny, mx, my);\n\n if (nearZero(nmCrossProduct)) {\n return false;\n } // `vec_m` and `vec_n` are intersect iff\n // existing `p` and `q` in [0, 1] such that `vec_a1 + p * vec_m = vec_b1 + q * vec_n`,\n // such that `q = ((vec_a1 - vec_b1) X vec_m) / (vec_n X vec_m)`\n // and `p = ((vec_a1 - vec_b1) X vec_n) / (vec_n X vec_m)`.\n\n\n var b1a1x = a1x - b1x;\n var b1a1y = a1y - b1y;\n var q = crossProduct2d(b1a1x, b1a1y, mx, my) / nmCrossProduct;\n\n if (q < 0 || q > 1) {\n return false;\n }\n\n var p = crossProduct2d(b1a1x, b1a1y, nx, ny) / nmCrossProduct;\n\n if (p < 0 || p > 1) {\n return false;\n }\n\n return true;\n}\n/**\n * Cross product of 2-dimension vector.\n */\n\n\nfunction crossProduct2d(x1, y1, x2, y2) {\n return x1 * y2 - x2 * y1;\n}\n\nfunction nearZero(val) {\n return val <= 1e-6 && val >= -1e-6;\n} // Register built-in shapes. These shapes might be overwirtten\n// by users, although we do not recommend that.\n\n\nregisterShape('circle', Circle);\nregisterShape('sector', Sector);\nregisterShape('ring', Ring);\nregisterShape('polygon', Polygon);\nregisterShape('polyline', Polyline);\nregisterShape('rect', Rect);\nregisterShape('line', Line);\nregisterShape('bezierCurve', BezierCurve);\nregisterShape('arc', Arc);\nexports.Z2_EMPHASIS_LIFT = Z2_EMPHASIS_LIFT;\nexports.CACHED_LABEL_STYLE_PROPERTIES = CACHED_LABEL_STYLE_PROPERTIES;\nexports.extendShape = extendShape;\nexports.extendPath = extendPath;\nexports.registerShape = registerShape;\nexports.getShapeClass = getShapeClass;\nexports.makePath = makePath;\nexports.makeImage = makeImage;\nexports.mergePath = mergePath;\nexports.resizePath = resizePath;\nexports.subPixelOptimizeLine = subPixelOptimizeLine;\nexports.subPixelOptimizeRect = subPixelOptimizeRect;\nexports.subPixelOptimize = subPixelOptimize;\nexports.setElementHoverStyle = setElementHoverStyle;\nexports.setHoverStyle = setHoverStyle;\nexports.setAsHighDownDispatcher = setAsHighDownDispatcher;\nexports.isHighDownDispatcher = isHighDownDispatcher;\nexports.getHighlightDigit = getHighlightDigit;\nexports.setLabelStyle = setLabelStyle;\nexports.modifyLabelStyle = modifyLabelStyle;\nexports.setTextStyle = setTextStyle;\nexports.setText = setText;\nexports.getFont = getFont;\nexports.updateProps = updateProps;\nexports.initProps = initProps;\nexports.getTransform = getTransform;\nexports.applyTransform = applyTransform;\nexports.transformDirection = transformDirection;\nexports.groupTransition = groupTransition;\nexports.clipPointsByRect = clipPointsByRect;\nexports.clipRectByRect = clipRectByRect;\nexports.createIcon = createIcon;\nexports.linePolygonIntersect = linePolygonIntersect;\nexports.lineLineIntersect = lineLineIntersect;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/util/graphic.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/util/layout.js": +/*!*************************************************!*\ + !*** ./node_modules/echarts/lib/util/layout.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar BoundingRect = __webpack_require__(/*! zrender/lib/core/BoundingRect */ \"./node_modules/zrender/lib/core/BoundingRect.js\");\n\nvar _number = __webpack_require__(/*! ./number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar parsePercent = _number.parsePercent;\n\nvar formatUtil = __webpack_require__(/*! ./format */ \"./node_modules/echarts/lib/util/format.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Layout helpers for each component positioning\nvar each = zrUtil.each;\n/**\n * @public\n */\n\nvar LOCATION_PARAMS = ['left', 'right', 'top', 'bottom', 'width', 'height'];\n/**\n * @public\n */\n\nvar HV_NAMES = [['width', 'left', 'right'], ['height', 'top', 'bottom']];\n\nfunction boxLayout(orient, group, gap, maxWidth, maxHeight) {\n var x = 0;\n var y = 0;\n\n if (maxWidth == null) {\n maxWidth = Infinity;\n }\n\n if (maxHeight == null) {\n maxHeight = Infinity;\n }\n\n var currentLineMaxSize = 0;\n group.eachChild(function (child, idx) {\n var position = child.position;\n var rect = child.getBoundingRect();\n var nextChild = group.childAt(idx + 1);\n var nextChildRect = nextChild && nextChild.getBoundingRect();\n var nextX;\n var nextY;\n\n if (orient === 'horizontal') {\n var moveX = rect.width + (nextChildRect ? -nextChildRect.x + rect.x : 0);\n nextX = x + moveX; // Wrap when width exceeds maxWidth or meet a `newline` group\n // FIXME compare before adding gap?\n\n if (nextX > maxWidth || child.newline) {\n x = 0;\n nextX = moveX;\n y += currentLineMaxSize + gap;\n currentLineMaxSize = rect.height;\n } else {\n // FIXME: consider rect.y is not `0`?\n currentLineMaxSize = Math.max(currentLineMaxSize, rect.height);\n }\n } else {\n var moveY = rect.height + (nextChildRect ? -nextChildRect.y + rect.y : 0);\n nextY = y + moveY; // Wrap when width exceeds maxHeight or meet a `newline` group\n\n if (nextY > maxHeight || child.newline) {\n x += currentLineMaxSize + gap;\n y = 0;\n nextY = moveY;\n currentLineMaxSize = rect.width;\n } else {\n currentLineMaxSize = Math.max(currentLineMaxSize, rect.width);\n }\n }\n\n if (child.newline) {\n return;\n }\n\n position[0] = x;\n position[1] = y;\n orient === 'horizontal' ? x = nextX + gap : y = nextY + gap;\n });\n}\n/**\n * VBox or HBox layouting\n * @param {string} orient\n * @param {module:zrender/container/Group} group\n * @param {number} gap\n * @param {number} [width=Infinity]\n * @param {number} [height=Infinity]\n */\n\n\nvar box = boxLayout;\n/**\n * VBox layouting\n * @param {module:zrender/container/Group} group\n * @param {number} gap\n * @param {number} [width=Infinity]\n * @param {number} [height=Infinity]\n */\n\nvar vbox = zrUtil.curry(boxLayout, 'vertical');\n/**\n * HBox layouting\n * @param {module:zrender/container/Group} group\n * @param {number} gap\n * @param {number} [width=Infinity]\n * @param {number} [height=Infinity]\n */\n\nvar hbox = zrUtil.curry(boxLayout, 'horizontal');\n/**\n * If x or x2 is not specified or 'center' 'left' 'right',\n * the width would be as long as possible.\n * If y or y2 is not specified or 'middle' 'top' 'bottom',\n * the height would be as long as possible.\n *\n * @param {Object} positionInfo\n * @param {number|string} [positionInfo.x]\n * @param {number|string} [positionInfo.y]\n * @param {number|string} [positionInfo.x2]\n * @param {number|string} [positionInfo.y2]\n * @param {Object} containerRect {width, height}\n * @param {string|number} margin\n * @return {Object} {width, height}\n */\n\nfunction getAvailableSize(positionInfo, containerRect, margin) {\n var containerWidth = containerRect.width;\n var containerHeight = containerRect.height;\n var x = parsePercent(positionInfo.x, containerWidth);\n var y = parsePercent(positionInfo.y, containerHeight);\n var x2 = parsePercent(positionInfo.x2, containerWidth);\n var y2 = parsePercent(positionInfo.y2, containerHeight);\n (isNaN(x) || isNaN(parseFloat(positionInfo.x))) && (x = 0);\n (isNaN(x2) || isNaN(parseFloat(positionInfo.x2))) && (x2 = containerWidth);\n (isNaN(y) || isNaN(parseFloat(positionInfo.y))) && (y = 0);\n (isNaN(y2) || isNaN(parseFloat(positionInfo.y2))) && (y2 = containerHeight);\n margin = formatUtil.normalizeCssArray(margin || 0);\n return {\n width: Math.max(x2 - x - margin[1] - margin[3], 0),\n height: Math.max(y2 - y - margin[0] - margin[2], 0)\n };\n}\n/**\n * Parse position info.\n *\n * @param {Object} positionInfo\n * @param {number|string} [positionInfo.left]\n * @param {number|string} [positionInfo.top]\n * @param {number|string} [positionInfo.right]\n * @param {number|string} [positionInfo.bottom]\n * @param {number|string} [positionInfo.width]\n * @param {number|string} [positionInfo.height]\n * @param {number|string} [positionInfo.aspect] Aspect is width / height\n * @param {Object} containerRect\n * @param {string|number} [margin]\n *\n * @return {module:zrender/core/BoundingRect}\n */\n\n\nfunction getLayoutRect(positionInfo, containerRect, margin) {\n margin = formatUtil.normalizeCssArray(margin || 0);\n var containerWidth = containerRect.width;\n var containerHeight = containerRect.height;\n var left = parsePercent(positionInfo.left, containerWidth);\n var top = parsePercent(positionInfo.top, containerHeight);\n var right = parsePercent(positionInfo.right, containerWidth);\n var bottom = parsePercent(positionInfo.bottom, containerHeight);\n var width = parsePercent(positionInfo.width, containerWidth);\n var height = parsePercent(positionInfo.height, containerHeight);\n var verticalMargin = margin[2] + margin[0];\n var horizontalMargin = margin[1] + margin[3];\n var aspect = positionInfo.aspect; // If width is not specified, calculate width from left and right\n\n if (isNaN(width)) {\n width = containerWidth - right - horizontalMargin - left;\n }\n\n if (isNaN(height)) {\n height = containerHeight - bottom - verticalMargin - top;\n }\n\n if (aspect != null) {\n // If width and height are not given\n // 1. Graph should not exceeds the container\n // 2. Aspect must be keeped\n // 3. Graph should take the space as more as possible\n // FIXME\n // Margin is not considered, because there is no case that both\n // using margin and aspect so far.\n if (isNaN(width) && isNaN(height)) {\n if (aspect > containerWidth / containerHeight) {\n width = containerWidth * 0.8;\n } else {\n height = containerHeight * 0.8;\n }\n } // Calculate width or height with given aspect\n\n\n if (isNaN(width)) {\n width = aspect * height;\n }\n\n if (isNaN(height)) {\n height = width / aspect;\n }\n } // If left is not specified, calculate left from right and width\n\n\n if (isNaN(left)) {\n left = containerWidth - right - width - horizontalMargin;\n }\n\n if (isNaN(top)) {\n top = containerHeight - bottom - height - verticalMargin;\n } // Align left and top\n\n\n switch (positionInfo.left || positionInfo.right) {\n case 'center':\n left = containerWidth / 2 - width / 2 - margin[3];\n break;\n\n case 'right':\n left = containerWidth - width - horizontalMargin;\n break;\n }\n\n switch (positionInfo.top || positionInfo.bottom) {\n case 'middle':\n case 'center':\n top = containerHeight / 2 - height / 2 - margin[0];\n break;\n\n case 'bottom':\n top = containerHeight - height - verticalMargin;\n break;\n } // If something is wrong and left, top, width, height are calculated as NaN\n\n\n left = left || 0;\n top = top || 0;\n\n if (isNaN(width)) {\n // Width may be NaN if only one value is given except width\n width = containerWidth - horizontalMargin - left - (right || 0);\n }\n\n if (isNaN(height)) {\n // Height may be NaN if only one value is given except height\n height = containerHeight - verticalMargin - top - (bottom || 0);\n }\n\n var rect = new BoundingRect(left + margin[3], top + margin[0], width, height);\n rect.margin = margin;\n return rect;\n}\n/**\n * Position a zr element in viewport\n * Group position is specified by either\n * {left, top}, {right, bottom}\n * If all properties exists, right and bottom will be igonred.\n *\n * Logic:\n * 1. Scale (against origin point in parent coord)\n * 2. Rotate (against origin point in parent coord)\n * 3. Traslate (with el.position by this method)\n * So this method only fixes the last step 'Traslate', which does not affect\n * scaling and rotating.\n *\n * If be called repeatly with the same input el, the same result will be gotten.\n *\n * @param {module:zrender/Element} el Should have `getBoundingRect` method.\n * @param {Object} positionInfo\n * @param {number|string} [positionInfo.left]\n * @param {number|string} [positionInfo.top]\n * @param {number|string} [positionInfo.right]\n * @param {number|string} [positionInfo.bottom]\n * @param {number|string} [positionInfo.width] Only for opt.boundingModel: 'raw'\n * @param {number|string} [positionInfo.height] Only for opt.boundingModel: 'raw'\n * @param {Object} containerRect\n * @param {string|number} margin\n * @param {Object} [opt]\n * @param {Array.} [opt.hv=[1,1]] Only horizontal or only vertical.\n * @param {Array.} [opt.boundingMode='all']\n * Specify how to calculate boundingRect when locating.\n * 'all': Position the boundingRect that is transformed and uioned\n * both itself and its descendants.\n * This mode simplies confine the elements in the bounding\n * of their container (e.g., using 'right: 0').\n * 'raw': Position the boundingRect that is not transformed and only itself.\n * This mode is useful when you want a element can overflow its\n * container. (Consider a rotated circle needs to be located in a corner.)\n * In this mode positionInfo.width/height can only be number.\n */\n\n\nfunction positionElement(el, positionInfo, containerRect, margin, opt) {\n var h = !opt || !opt.hv || opt.hv[0];\n var v = !opt || !opt.hv || opt.hv[1];\n var boundingMode = opt && opt.boundingMode || 'all';\n\n if (!h && !v) {\n return;\n }\n\n var rect;\n\n if (boundingMode === 'raw') {\n rect = el.type === 'group' ? new BoundingRect(0, 0, +positionInfo.width || 0, +positionInfo.height || 0) : el.getBoundingRect();\n } else {\n rect = el.getBoundingRect();\n\n if (el.needLocalTransform()) {\n var transform = el.getLocalTransform(); // Notice: raw rect may be inner object of el,\n // which should not be modified.\n\n rect = rect.clone();\n rect.applyTransform(transform);\n }\n } // The real width and height can not be specified but calculated by the given el.\n\n\n positionInfo = getLayoutRect(zrUtil.defaults({\n width: rect.width,\n height: rect.height\n }, positionInfo), containerRect, margin); // Because 'tranlate' is the last step in transform\n // (see zrender/core/Transformable#getLocalTransform),\n // we can just only modify el.position to get final result.\n\n var elPos = el.position;\n var dx = h ? positionInfo.x - rect.x : 0;\n var dy = v ? positionInfo.y - rect.y : 0;\n el.attr('position', boundingMode === 'raw' ? [dx, dy] : [elPos[0] + dx, elPos[1] + dy]);\n}\n/**\n * @param {Object} option Contains some of the properties in HV_NAMES.\n * @param {number} hvIdx 0: horizontal; 1: vertical.\n */\n\n\nfunction sizeCalculable(option, hvIdx) {\n return option[HV_NAMES[hvIdx][0]] != null || option[HV_NAMES[hvIdx][1]] != null && option[HV_NAMES[hvIdx][2]] != null;\n}\n/**\n * Consider Case:\n * When defulat option has {left: 0, width: 100}, and we set {right: 0}\n * through setOption or media query, using normal zrUtil.merge will cause\n * {right: 0} does not take effect.\n *\n * @example\n * ComponentModel.extend({\n * init: function () {\n * ...\n * var inputPositionParams = layout.getLayoutParams(option);\n * this.mergeOption(inputPositionParams);\n * },\n * mergeOption: function (newOption) {\n * newOption && zrUtil.merge(thisOption, newOption, true);\n * layout.mergeLayoutParam(thisOption, newOption);\n * }\n * });\n *\n * @param {Object} targetOption\n * @param {Object} newOption\n * @param {Object|string} [opt]\n * @param {boolean|Array.} [opt.ignoreSize=false] Used for the components\n * that width (or height) should not be calculated by left and right (or top and bottom).\n */\n\n\nfunction mergeLayoutParam(targetOption, newOption, opt) {\n !zrUtil.isObject(opt) && (opt = {});\n var ignoreSize = opt.ignoreSize;\n !zrUtil.isArray(ignoreSize) && (ignoreSize = [ignoreSize, ignoreSize]);\n var hResult = merge(HV_NAMES[0], 0);\n var vResult = merge(HV_NAMES[1], 1);\n copy(HV_NAMES[0], targetOption, hResult);\n copy(HV_NAMES[1], targetOption, vResult);\n\n function merge(names, hvIdx) {\n var newParams = {};\n var newValueCount = 0;\n var merged = {};\n var mergedValueCount = 0;\n var enoughParamNumber = 2;\n each(names, function (name) {\n merged[name] = targetOption[name];\n });\n each(names, function (name) {\n // Consider case: newOption.width is null, which is\n // set by user for removing width setting.\n hasProp(newOption, name) && (newParams[name] = merged[name] = newOption[name]);\n hasValue(newParams, name) && newValueCount++;\n hasValue(merged, name) && mergedValueCount++;\n });\n\n if (ignoreSize[hvIdx]) {\n // Only one of left/right is premitted to exist.\n if (hasValue(newOption, names[1])) {\n merged[names[2]] = null;\n } else if (hasValue(newOption, names[2])) {\n merged[names[1]] = null;\n }\n\n return merged;\n } // Case: newOption: {width: ..., right: ...},\n // or targetOption: {right: ...} and newOption: {width: ...},\n // There is no conflict when merged only has params count\n // little than enoughParamNumber.\n\n\n if (mergedValueCount === enoughParamNumber || !newValueCount) {\n return merged;\n } // Case: newOption: {width: ..., right: ...},\n // Than we can make sure user only want those two, and ignore\n // all origin params in targetOption.\n else if (newValueCount >= enoughParamNumber) {\n return newParams;\n } else {\n // Chose another param from targetOption by priority.\n for (var i = 0; i < names.length; i++) {\n var name = names[i];\n\n if (!hasProp(newParams, name) && hasProp(targetOption, name)) {\n newParams[name] = targetOption[name];\n break;\n }\n }\n\n return newParams;\n }\n }\n\n function hasProp(obj, name) {\n return obj.hasOwnProperty(name);\n }\n\n function hasValue(obj, name) {\n return obj[name] != null && obj[name] !== 'auto';\n }\n\n function copy(names, target, source) {\n each(names, function (name) {\n target[name] = source[name];\n });\n }\n}\n/**\n * Retrieve 'left', 'right', 'top', 'bottom', 'width', 'height' from object.\n * @param {Object} source\n * @return {Object} Result contains those props.\n */\n\n\nfunction getLayoutParams(source) {\n return copyLayoutParams({}, source);\n}\n/**\n * Retrieve 'left', 'right', 'top', 'bottom', 'width', 'height' from object.\n * @param {Object} source\n * @return {Object} Result contains those props.\n */\n\n\nfunction copyLayoutParams(target, source) {\n source && target && each(LOCATION_PARAMS, function (name) {\n source.hasOwnProperty(name) && (target[name] = source[name]);\n });\n return target;\n}\n\nexports.LOCATION_PARAMS = LOCATION_PARAMS;\nexports.HV_NAMES = HV_NAMES;\nexports.box = box;\nexports.vbox = vbox;\nexports.hbox = hbox;\nexports.getAvailableSize = getAvailableSize;\nexports.getLayoutRect = getLayoutRect;\nexports.positionElement = positionElement;\nexports.sizeCalculable = sizeCalculable;\nexports.mergeLayoutParam = mergeLayoutParam;\nexports.getLayoutParams = getLayoutParams;\nexports.copyLayoutParams = copyLayoutParams;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/util/layout.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/util/model.js": +/*!************************************************!*\ + !*** ./node_modules/echarts/lib/util/model.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar env = __webpack_require__(/*! zrender/lib/core/env */ \"./node_modules/zrender/lib/core/env.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar isObject = zrUtil.isObject;\nvar isArray = zrUtil.isArray;\n/**\n * Make the name displayable. But we should\n * make sure it is not duplicated with user\n * specified name, so use '\\0';\n */\n\nvar DUMMY_COMPONENT_NAME_PREFIX = 'series\\0';\n/**\n * If value is not array, then translate it to array.\n * @param {*} value\n * @return {Array} [value] or value\n */\n\nfunction normalizeToArray(value) {\n return value instanceof Array ? value : value == null ? [] : [value];\n}\n/**\n * Sync default option between normal and emphasis like `position` and `show`\n * In case some one will write code like\n * label: {\n * show: false,\n * position: 'outside',\n * fontSize: 18\n * },\n * emphasis: {\n * label: { show: true }\n * }\n * @param {Object} opt\n * @param {string} key\n * @param {Array.} subOpts\n */\n\n\nfunction defaultEmphasis(opt, key, subOpts) {\n // Caution: performance sensitive.\n if (opt) {\n opt[key] = opt[key] || {};\n opt.emphasis = opt.emphasis || {};\n opt.emphasis[key] = opt.emphasis[key] || {}; // Default emphasis option from normal\n\n for (var i = 0, len = subOpts.length; i < len; i++) {\n var subOptName = subOpts[i];\n\n if (!opt.emphasis[key].hasOwnProperty(subOptName) && opt[key].hasOwnProperty(subOptName)) {\n opt.emphasis[key][subOptName] = opt[key][subOptName];\n }\n }\n }\n}\n\nvar TEXT_STYLE_OPTIONS = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily', 'rich', 'tag', 'color', 'textBorderColor', 'textBorderWidth', 'width', 'height', 'lineHeight', 'align', 'verticalAlign', 'baseline', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY', 'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY', 'backgroundColor', 'borderColor', 'borderWidth', 'borderRadius', 'padding']; // modelUtil.LABEL_OPTIONS = modelUtil.TEXT_STYLE_OPTIONS.concat([\n// 'position', 'offset', 'rotate', 'origin', 'show', 'distance', 'formatter',\n// 'fontStyle', 'fontWeight', 'fontSize', 'fontFamily',\n// // FIXME: deprecated, check and remove it.\n// 'textStyle'\n// ]);\n\n/**\n * The method do not ensure performance.\n * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}]\n * This helper method retieves value from data.\n * @param {string|number|Date|Array|Object} dataItem\n * @return {number|string|Date|Array.}\n */\n\nfunction getDataItemValue(dataItem) {\n return isObject(dataItem) && !isArray(dataItem) && !(dataItem instanceof Date) ? dataItem.value : dataItem;\n}\n/**\n * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}]\n * This helper method determine if dataItem has extra option besides value\n * @param {string|number|Date|Array|Object} dataItem\n */\n\n\nfunction isDataItemOption(dataItem) {\n return isObject(dataItem) && !(dataItem instanceof Array); // // markLine data can be array\n // && !(dataItem[0] && isObject(dataItem[0]) && !(dataItem[0] instanceof Array));\n}\n/**\n * Mapping to exists for merge.\n *\n * @public\n * @param {Array.|Array.} exists\n * @param {Object|Array.} newCptOptions\n * @return {Array.} Result, like [{exist: ..., option: ...}, {}],\n * index of which is the same as exists.\n */\n\n\nfunction mappingToExists(exists, newCptOptions) {\n // Mapping by the order by original option (but not order of\n // new option) in merge mode. Because we should ensure\n // some specified index (like xAxisIndex) is consistent with\n // original option, which is easy to understand, espatially in\n // media query. And in most case, merge option is used to\n // update partial option but not be expected to change order.\n newCptOptions = (newCptOptions || []).slice();\n var result = zrUtil.map(exists || [], function (obj, index) {\n return {\n exist: obj\n };\n }); // Mapping by id or name if specified.\n\n each(newCptOptions, function (cptOption, index) {\n if (!isObject(cptOption)) {\n return;\n } // id has highest priority.\n\n\n for (var i = 0; i < result.length; i++) {\n if (!result[i].option // Consider name: two map to one.\n && cptOption.id != null && result[i].exist.id === cptOption.id + '') {\n result[i].option = cptOption;\n newCptOptions[index] = null;\n return;\n }\n }\n\n for (var i = 0; i < result.length; i++) {\n var exist = result[i].exist;\n\n if (!result[i].option // Consider name: two map to one.\n // Can not match when both ids exist but different.\n && (exist.id == null || cptOption.id == null) && cptOption.name != null && !isIdInner(cptOption) && !isIdInner(exist) && exist.name === cptOption.name + '') {\n result[i].option = cptOption;\n newCptOptions[index] = null;\n return;\n }\n }\n }); // Otherwise mapping by index.\n\n each(newCptOptions, function (cptOption, index) {\n if (!isObject(cptOption)) {\n return;\n }\n\n var i = 0;\n\n for (; i < result.length; i++) {\n var exist = result[i].exist;\n\n if (!result[i].option // Existing model that already has id should be able to\n // mapped to (because after mapping performed model may\n // be assigned with a id, whish should not affect next\n // mapping), except those has inner id.\n && !isIdInner(exist) // Caution:\n // Do not overwrite id. But name can be overwritten,\n // because axis use name as 'show label text'.\n // 'exist' always has id and name and we dont\n // need to check it.\n && cptOption.id == null) {\n result[i].option = cptOption;\n break;\n }\n }\n\n if (i >= result.length) {\n result.push({\n option: cptOption\n });\n }\n });\n return result;\n}\n/**\n * Make id and name for mapping result (result of mappingToExists)\n * into `keyInfo` field.\n *\n * @public\n * @param {Array.} Result, like [{exist: ..., option: ...}, {}],\n * which order is the same as exists.\n * @return {Array.} The input.\n */\n\n\nfunction makeIdAndName(mapResult) {\n // We use this id to hash component models and view instances\n // in echarts. id can be specified by user, or auto generated.\n // The id generation rule ensures new view instance are able\n // to mapped to old instance when setOption are called in\n // no-merge mode. So we generate model id by name and plus\n // type in view id.\n // name can be duplicated among components, which is convenient\n // to specify multi components (like series) by one name.\n // Ensure that each id is distinct.\n var idMap = zrUtil.createHashMap();\n each(mapResult, function (item, index) {\n var existCpt = item.exist;\n existCpt && idMap.set(existCpt.id, item);\n });\n each(mapResult, function (item, index) {\n var opt = item.option;\n zrUtil.assert(!opt || opt.id == null || !idMap.get(opt.id) || idMap.get(opt.id) === item, 'id duplicates: ' + (opt && opt.id));\n opt && opt.id != null && idMap.set(opt.id, item);\n !item.keyInfo && (item.keyInfo = {});\n }); // Make name and id.\n\n each(mapResult, function (item, index) {\n var existCpt = item.exist;\n var opt = item.option;\n var keyInfo = item.keyInfo;\n\n if (!isObject(opt)) {\n return;\n } // name can be overwitten. Consider case: axis.name = '20km'.\n // But id generated by name will not be changed, which affect\n // only in that case: setOption with 'not merge mode' and view\n // instance will be recreated, which can be accepted.\n\n\n keyInfo.name = opt.name != null ? opt.name + '' : existCpt ? existCpt.name // Avoid diffferent series has the same name,\n // because name may be used like in color pallet.\n : DUMMY_COMPONENT_NAME_PREFIX + index;\n\n if (existCpt) {\n keyInfo.id = existCpt.id;\n } else if (opt.id != null) {\n keyInfo.id = opt.id + '';\n } else {\n // Consider this situatoin:\n // optionA: [{name: 'a'}, {name: 'a'}, {..}]\n // optionB [{..}, {name: 'a'}, {name: 'a'}]\n // Series with the same name between optionA and optionB\n // should be mapped.\n var idNum = 0;\n\n do {\n keyInfo.id = '\\0' + keyInfo.name + '\\0' + idNum++;\n } while (idMap.get(keyInfo.id));\n }\n\n idMap.set(keyInfo.id, item);\n });\n}\n\nfunction isNameSpecified(componentModel) {\n var name = componentModel.name; // Is specified when `indexOf` get -1 or > 0.\n\n return !!(name && name.indexOf(DUMMY_COMPONENT_NAME_PREFIX));\n}\n/**\n * @public\n * @param {Object} cptOption\n * @return {boolean}\n */\n\n\nfunction isIdInner(cptOption) {\n return isObject(cptOption) && cptOption.id && (cptOption.id + '').indexOf('\\0_ec_\\0') === 0;\n}\n/**\n * A helper for removing duplicate items between batchA and batchB,\n * and in themselves, and categorize by series.\n *\n * @param {Array.} batchA Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...]\n * @param {Array.} batchB Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...]\n * @return {Array., Array.>} result: [resultBatchA, resultBatchB]\n */\n\n\nfunction compressBatches(batchA, batchB) {\n var mapA = {};\n var mapB = {};\n makeMap(batchA || [], mapA);\n makeMap(batchB || [], mapB, mapA);\n return [mapToArray(mapA), mapToArray(mapB)];\n\n function makeMap(sourceBatch, map, otherMap) {\n for (var i = 0, len = sourceBatch.length; i < len; i++) {\n var seriesId = sourceBatch[i].seriesId;\n var dataIndices = normalizeToArray(sourceBatch[i].dataIndex);\n var otherDataIndices = otherMap && otherMap[seriesId];\n\n for (var j = 0, lenj = dataIndices.length; j < lenj; j++) {\n var dataIndex = dataIndices[j];\n\n if (otherDataIndices && otherDataIndices[dataIndex]) {\n otherDataIndices[dataIndex] = null;\n } else {\n (map[seriesId] || (map[seriesId] = {}))[dataIndex] = 1;\n }\n }\n }\n }\n\n function mapToArray(map, isData) {\n var result = [];\n\n for (var i in map) {\n if (map.hasOwnProperty(i) && map[i] != null) {\n if (isData) {\n result.push(+i);\n } else {\n var dataIndices = mapToArray(map[i], true);\n dataIndices.length && result.push({\n seriesId: i,\n dataIndex: dataIndices\n });\n }\n }\n }\n\n return result;\n }\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {Object} payload Contains dataIndex (means rawIndex) / dataIndexInside / name\n * each of which can be Array or primary type.\n * @return {number|Array.} dataIndex If not found, return undefined/null.\n */\n\n\nfunction queryDataIndex(data, payload) {\n if (payload.dataIndexInside != null) {\n return payload.dataIndexInside;\n } else if (payload.dataIndex != null) {\n return zrUtil.isArray(payload.dataIndex) ? zrUtil.map(payload.dataIndex, function (value) {\n return data.indexOfRawIndex(value);\n }) : data.indexOfRawIndex(payload.dataIndex);\n } else if (payload.name != null) {\n return zrUtil.isArray(payload.name) ? zrUtil.map(payload.name, function (value) {\n return data.indexOfName(value);\n }) : data.indexOfName(payload.name);\n }\n}\n/**\n * Enable property storage to any host object.\n * Notice: Serialization is not supported.\n *\n * For example:\n * var inner = zrUitl.makeInner();\n *\n * function some1(hostObj) {\n * inner(hostObj).someProperty = 1212;\n * ...\n * }\n * function some2() {\n * var fields = inner(this);\n * fields.someProperty1 = 1212;\n * fields.someProperty2 = 'xx';\n * ...\n * }\n *\n * @return {Function}\n */\n\n\nfunction makeInner() {\n // Consider different scope by es module import.\n var key = '__\\0ec_inner_' + innerUniqueIndex++ + '_' + Math.random().toFixed(5);\n return function (hostObj) {\n return hostObj[key] || (hostObj[key] = {});\n };\n}\n\nvar innerUniqueIndex = 0;\n/**\n * @param {module:echarts/model/Global} ecModel\n * @param {string|Object} finder\n * If string, e.g., 'geo', means {geoIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex, seriesId, seriesName,\n * geoIndex, geoId, geoName,\n * bmapIndex, bmapId, bmapName,\n * xAxisIndex, xAxisId, xAxisName,\n * yAxisIndex, yAxisId, yAxisName,\n * gridIndex, gridId, gridName,\n * ... (can be extended)\n * }\n * Each properties can be number|string|Array.|Array.\n * For example, a finder could be\n * {\n * seriesIndex: 3,\n * geoId: ['aa', 'cc'],\n * gridName: ['xx', 'rr']\n * }\n * xxxIndex can be set as 'all' (means all xxx) or 'none' (means not specify)\n * If nothing or null/undefined specified, return nothing.\n * @param {Object} [opt]\n * @param {string} [opt.defaultMainType]\n * @param {Array.} [opt.includeMainTypes]\n * @return {Object} result like:\n * {\n * seriesModels: [seriesModel1, seriesModel2],\n * seriesModel: seriesModel1, // The first model\n * geoModels: [geoModel1, geoModel2],\n * geoModel: geoModel1, // The first model\n * ...\n * }\n */\n\nfunction parseFinder(ecModel, finder, opt) {\n if (zrUtil.isString(finder)) {\n var obj = {};\n obj[finder + 'Index'] = 0;\n finder = obj;\n }\n\n var defaultMainType = opt && opt.defaultMainType;\n\n if (defaultMainType && !has(finder, defaultMainType + 'Index') && !has(finder, defaultMainType + 'Id') && !has(finder, defaultMainType + 'Name')) {\n finder[defaultMainType + 'Index'] = 0;\n }\n\n var result = {};\n each(finder, function (value, key) {\n var value = finder[key]; // Exclude 'dataIndex' and other illgal keys.\n\n if (key === 'dataIndex' || key === 'dataIndexInside') {\n result[key] = value;\n return;\n }\n\n var parsedKey = key.match(/^(\\w+)(Index|Id|Name)$/) || [];\n var mainType = parsedKey[1];\n var queryType = (parsedKey[2] || '').toLowerCase();\n\n if (!mainType || !queryType || value == null || queryType === 'index' && value === 'none' || opt && opt.includeMainTypes && zrUtil.indexOf(opt.includeMainTypes, mainType) < 0) {\n return;\n }\n\n var queryParam = {\n mainType: mainType\n };\n\n if (queryType !== 'index' || value !== 'all') {\n queryParam[queryType] = value;\n }\n\n var models = ecModel.queryComponents(queryParam);\n result[mainType + 'Models'] = models;\n result[mainType + 'Model'] = models[0];\n });\n return result;\n}\n\nfunction has(obj, prop) {\n return obj && obj.hasOwnProperty(prop);\n}\n\nfunction setAttribute(dom, key, value) {\n dom.setAttribute ? dom.setAttribute(key, value) : dom[key] = value;\n}\n\nfunction getAttribute(dom, key) {\n return dom.getAttribute ? dom.getAttribute(key) : dom[key];\n}\n\nfunction getTooltipRenderMode(renderModeOption) {\n if (renderModeOption === 'auto') {\n // Using html when `document` exists, use richText otherwise\n return env.domSupported ? 'html' : 'richText';\n } else {\n return renderModeOption || 'html';\n }\n}\n/**\n * Group a list by key.\n *\n * @param {Array} array\n * @param {Function} getKey\n * param {*} Array item\n * return {string} key\n * @return {Object} Result\n * {Array}: keys,\n * {module:zrender/core/util/HashMap} buckets: {key -> Array}\n */\n\n\nfunction groupData(array, getKey) {\n var buckets = zrUtil.createHashMap();\n var keys = [];\n zrUtil.each(array, function (item) {\n var key = getKey(item);\n (buckets.get(key) || (keys.push(key), buckets.set(key, []))).push(item);\n });\n return {\n keys: keys,\n buckets: buckets\n };\n}\n\nexports.normalizeToArray = normalizeToArray;\nexports.defaultEmphasis = defaultEmphasis;\nexports.TEXT_STYLE_OPTIONS = TEXT_STYLE_OPTIONS;\nexports.getDataItemValue = getDataItemValue;\nexports.isDataItemOption = isDataItemOption;\nexports.mappingToExists = mappingToExists;\nexports.makeIdAndName = makeIdAndName;\nexports.isNameSpecified = isNameSpecified;\nexports.isIdInner = isIdInner;\nexports.compressBatches = compressBatches;\nexports.queryDataIndex = queryDataIndex;\nexports.makeInner = makeInner;\nexports.parseFinder = parseFinder;\nexports.setAttribute = setAttribute;\nexports.getAttribute = getAttribute;\nexports.getTooltipRenderMode = getTooltipRenderMode;\nexports.groupData = groupData;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/util/model.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/util/number.js": +/*!*************************************************!*\ + !*** ./node_modules/echarts/lib/util/number.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* A third-party license is embeded for some of the code in this file:\n* The method \"quantile\" was copied from \"d3.js\".\n* (See more details in the comment of the method below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\n* ).\n*/\nvar RADIAN_EPSILON = 1e-4;\n\nfunction _trim(str) {\n return str.replace(/^\\s+|\\s+$/g, '');\n}\n/**\n * Linear mapping a value from domain to range\n * @memberOf module:echarts/util/number\n * @param {(number|Array.)} val\n * @param {Array.} domain Domain extent domain[0] can be bigger than domain[1]\n * @param {Array.} range Range extent range[0] can be bigger than range[1]\n * @param {boolean} clamp\n * @return {(number|Array.}\n */\n\n\nfunction linearMap(val, domain, range, clamp) {\n var subDomain = domain[1] - domain[0];\n var subRange = range[1] - range[0];\n\n if (subDomain === 0) {\n return subRange === 0 ? range[0] : (range[0] + range[1]) / 2;\n } // Avoid accuracy problem in edge, such as\n // 146.39 - 62.83 === 83.55999999999999.\n // See echarts/test/ut/spec/util/number.js#linearMap#accuracyError\n // It is a little verbose for efficiency considering this method\n // is a hotspot.\n\n\n if (clamp) {\n if (subDomain > 0) {\n if (val <= domain[0]) {\n return range[0];\n } else if (val >= domain[1]) {\n return range[1];\n }\n } else {\n if (val >= domain[0]) {\n return range[0];\n } else if (val <= domain[1]) {\n return range[1];\n }\n }\n } else {\n if (val === domain[0]) {\n return range[0];\n }\n\n if (val === domain[1]) {\n return range[1];\n }\n }\n\n return (val - domain[0]) / subDomain * subRange + range[0];\n}\n/**\n * Convert a percent string to absolute number.\n * Returns NaN if percent is not a valid string or number\n * @memberOf module:echarts/util/number\n * @param {string|number} percent\n * @param {number} all\n * @return {number}\n */\n\n\nfunction parsePercent(percent, all) {\n switch (percent) {\n case 'center':\n case 'middle':\n percent = '50%';\n break;\n\n case 'left':\n case 'top':\n percent = '0%';\n break;\n\n case 'right':\n case 'bottom':\n percent = '100%';\n break;\n }\n\n if (typeof percent === 'string') {\n if (_trim(percent).match(/%$/)) {\n return parseFloat(percent) / 100 * all;\n }\n\n return parseFloat(percent);\n }\n\n return percent == null ? NaN : +percent;\n}\n/**\n * (1) Fix rounding error of float numbers.\n * (2) Support return string to avoid scientific notation like '3.5e-7'.\n *\n * @param {number} x\n * @param {number} [precision]\n * @param {boolean} [returnStr]\n * @return {number|string}\n */\n\n\nfunction round(x, precision, returnStr) {\n if (precision == null) {\n precision = 10;\n } // Avoid range error\n\n\n precision = Math.min(Math.max(0, precision), 20);\n x = (+x).toFixed(precision);\n return returnStr ? x : +x;\n}\n/**\n * asc sort arr.\n * The input arr will be modified.\n *\n * @param {Array} arr\n * @return {Array} The input arr.\n */\n\n\nfunction asc(arr) {\n arr.sort(function (a, b) {\n return a - b;\n });\n return arr;\n}\n/**\n * Get precision\n * @param {number} val\n */\n\n\nfunction getPrecision(val) {\n val = +val;\n\n if (isNaN(val)) {\n return 0;\n } // It is much faster than methods converting number to string as follows\n // var tmp = val.toString();\n // return tmp.length - 1 - tmp.indexOf('.');\n // especially when precision is low\n\n\n var e = 1;\n var count = 0;\n\n while (Math.round(val * e) / e !== val) {\n e *= 10;\n count++;\n }\n\n return count;\n}\n/**\n * @param {string|number} val\n * @return {number}\n */\n\n\nfunction getPrecisionSafe(val) {\n var str = val.toString(); // Consider scientific notation: '3.4e-12' '3.4e+12'\n\n var eIndex = str.indexOf('e');\n\n if (eIndex > 0) {\n var precision = +str.slice(eIndex + 1);\n return precision < 0 ? -precision : 0;\n } else {\n var dotIndex = str.indexOf('.');\n return dotIndex < 0 ? 0 : str.length - 1 - dotIndex;\n }\n}\n/**\n * Minimal dicernible data precisioin according to a single pixel.\n *\n * @param {Array.} dataExtent\n * @param {Array.} pixelExtent\n * @return {number} precision\n */\n\n\nfunction getPixelPrecision(dataExtent, pixelExtent) {\n var log = Math.log;\n var LN10 = Math.LN10;\n var dataQuantity = Math.floor(log(dataExtent[1] - dataExtent[0]) / LN10);\n var sizeQuantity = Math.round(log(Math.abs(pixelExtent[1] - pixelExtent[0])) / LN10); // toFixed() digits argument must be between 0 and 20.\n\n var precision = Math.min(Math.max(-dataQuantity + sizeQuantity, 0), 20);\n return !isFinite(precision) ? 20 : precision;\n}\n/**\n * Get a data of given precision, assuring the sum of percentages\n * in valueList is 1.\n * The largest remainer method is used.\n * https://en.wikipedia.org/wiki/Largest_remainder_method\n *\n * @param {Array.} valueList a list of all data\n * @param {number} idx index of the data to be processed in valueList\n * @param {number} precision integer number showing digits of precision\n * @return {number} percent ranging from 0 to 100\n */\n\n\nfunction getPercentWithPrecision(valueList, idx, precision) {\n if (!valueList[idx]) {\n return 0;\n }\n\n var sum = zrUtil.reduce(valueList, function (acc, val) {\n return acc + (isNaN(val) ? 0 : val);\n }, 0);\n\n if (sum === 0) {\n return 0;\n }\n\n var digits = Math.pow(10, precision);\n var votesPerQuota = zrUtil.map(valueList, function (val) {\n return (isNaN(val) ? 0 : val) / sum * digits * 100;\n });\n var targetSeats = digits * 100;\n var seats = zrUtil.map(votesPerQuota, function (votes) {\n // Assign automatic seats.\n return Math.floor(votes);\n });\n var currentSum = zrUtil.reduce(seats, function (acc, val) {\n return acc + val;\n }, 0);\n var remainder = zrUtil.map(votesPerQuota, function (votes, idx) {\n return votes - seats[idx];\n }); // Has remainding votes.\n\n while (currentSum < targetSeats) {\n // Find next largest remainder.\n var max = Number.NEGATIVE_INFINITY;\n var maxId = null;\n\n for (var i = 0, len = remainder.length; i < len; ++i) {\n if (remainder[i] > max) {\n max = remainder[i];\n maxId = i;\n }\n } // Add a vote to max remainder.\n\n\n ++seats[maxId];\n remainder[maxId] = 0;\n ++currentSum;\n }\n\n return seats[idx] / digits;\n} // Number.MAX_SAFE_INTEGER, ie do not support.\n\n\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/**\n * To 0 - 2 * PI, considering negative radian.\n * @param {number} radian\n * @return {number}\n */\n\nfunction remRadian(radian) {\n var pi2 = Math.PI * 2;\n return (radian % pi2 + pi2) % pi2;\n}\n/**\n * @param {type} radian\n * @return {boolean}\n */\n\n\nfunction isRadianAroundZero(val) {\n return val > -RADIAN_EPSILON && val < RADIAN_EPSILON;\n}\n/* eslint-disable */\n\n\nvar TIME_REG = /^(?:(\\d{4})(?:[-\\/](\\d{1,2})(?:[-\\/](\\d{1,2})(?:[T ](\\d{1,2})(?::(\\d\\d)(?::(\\d\\d)(?:[.,](\\d+))?)?)?(Z|[\\+\\-]\\d\\d:?\\d\\d)?)?)?)?)?$/; // jshint ignore:line\n\n/* eslint-enable */\n\n/**\n * @param {string|Date|number} value These values can be accepted:\n * + An instance of Date, represent a time in its own time zone.\n * + Or string in a subset of ISO 8601, only including:\n * + only year, month, date: '2012-03', '2012-03-01', '2012-03-01 05', '2012-03-01 05:06',\n * + separated with T or space: '2012-03-01T12:22:33.123', '2012-03-01 12:22:33.123',\n * + time zone: '2012-03-01T12:22:33Z', '2012-03-01T12:22:33+8000', '2012-03-01T12:22:33-05:00',\n * all of which will be treated as local time if time zone is not specified\n * (see ).\n * + Or other string format, including (all of which will be treated as loacal time):\n * '2012', '2012-3-1', '2012/3/1', '2012/03/01',\n * '2009/6/12 2:00', '2009/6/12 2:05:08', '2009/6/12 2:05:08.123'\n * + a timestamp, which represent a time in UTC.\n * @return {Date} date\n */\n\nfunction parseDate(value) {\n if (value instanceof Date) {\n return value;\n } else if (typeof value === 'string') {\n // Different browsers parse date in different way, so we parse it manually.\n // Some other issues:\n // new Date('1970-01-01') is UTC,\n // new Date('1970/01/01') and new Date('1970-1-01') is local.\n // See issue #3623\n var match = TIME_REG.exec(value);\n\n if (!match) {\n // return Invalid Date.\n return new Date(NaN);\n } // Use local time when no timezone offset specifed.\n\n\n if (!match[8]) {\n // match[n] can only be string or undefined.\n // But take care of '12' + 1 => '121'.\n return new Date(+match[1], +(match[2] || 1) - 1, +match[3] || 1, +match[4] || 0, +(match[5] || 0), +match[6] || 0, +match[7] || 0);\n } // Timezoneoffset of Javascript Date has considered DST (Daylight Saving Time,\n // https://tc39.github.io/ecma262/#sec-daylight-saving-time-adjustment).\n // For example, system timezone is set as \"Time Zone: America/Toronto\",\n // then these code will get different result:\n // `new Date(1478411999999).getTimezoneOffset(); // get 240`\n // `new Date(1478412000000).getTimezoneOffset(); // get 300`\n // So we should not use `new Date`, but use `Date.UTC`.\n else {\n var hour = +match[4] || 0;\n\n if (match[8].toUpperCase() !== 'Z') {\n hour -= match[8].slice(0, 3);\n }\n\n return new Date(Date.UTC(+match[1], +(match[2] || 1) - 1, +match[3] || 1, hour, +(match[5] || 0), +match[6] || 0, +match[7] || 0));\n }\n } else if (value == null) {\n return new Date(NaN);\n }\n\n return new Date(Math.round(value));\n}\n/**\n * Quantity of a number. e.g. 0.1, 1, 10, 100\n *\n * @param {number} val\n * @return {number}\n */\n\n\nfunction quantity(val) {\n return Math.pow(10, quantityExponent(val));\n}\n/**\n * Exponent of the quantity of a number\n * e.g., 1234 equals to 1.234*10^3, so quantityExponent(1234) is 3\n *\n * @param {number} val non-negative value\n * @return {number}\n */\n\n\nfunction quantityExponent(val) {\n if (val === 0) {\n return 0;\n }\n\n var exp = Math.floor(Math.log(val) / Math.LN10);\n /**\n * exp is expected to be the rounded-down result of the base-10 log of val.\n * But due to the precision loss with Math.log(val), we need to restore it\n * using 10^exp to make sure we can get val back from exp. #11249\n */\n\n if (val / Math.pow(10, exp) >= 10) {\n exp++;\n }\n\n return exp;\n}\n/**\n * find a “nice” number approximately equal to x. Round the number if round = true,\n * take ceiling if round = false. The primary observation is that the “nicest”\n * numbers in decimal are 1, 2, and 5, and all power-of-ten multiples of these numbers.\n *\n * See \"Nice Numbers for Graph Labels\" of Graphic Gems.\n *\n * @param {number} val Non-negative value.\n * @param {boolean} round\n * @return {number}\n */\n\n\nfunction nice(val, round) {\n var exponent = quantityExponent(val);\n var exp10 = Math.pow(10, exponent);\n var f = val / exp10; // 1 <= f < 10\n\n var nf;\n\n if (round) {\n if (f < 1.5) {\n nf = 1;\n } else if (f < 2.5) {\n nf = 2;\n } else if (f < 4) {\n nf = 3;\n } else if (f < 7) {\n nf = 5;\n } else {\n nf = 10;\n }\n } else {\n if (f < 1) {\n nf = 1;\n } else if (f < 2) {\n nf = 2;\n } else if (f < 3) {\n nf = 3;\n } else if (f < 5) {\n nf = 5;\n } else {\n nf = 10;\n }\n }\n\n val = nf * exp10; // Fix 3 * 0.1 === 0.30000000000000004 issue (see IEEE 754).\n // 20 is the uppper bound of toFixed.\n\n return exponent >= -20 ? +val.toFixed(exponent < 0 ? -exponent : 0) : val;\n}\n/**\n * This code was copied from \"d3.js\"\n * .\n * See the license statement at the head of this file.\n * @param {Array.} ascArr\n */\n\n\nfunction quantile(ascArr, p) {\n var H = (ascArr.length - 1) * p + 1;\n var h = Math.floor(H);\n var v = +ascArr[h - 1];\n var e = H - h;\n return e ? v + e * (ascArr[h] - v) : v;\n}\n/**\n * Order intervals asc, and split them when overlap.\n * expect(numberUtil.reformIntervals([\n * {interval: [18, 62], close: [1, 1]},\n * {interval: [-Infinity, -70], close: [0, 0]},\n * {interval: [-70, -26], close: [1, 1]},\n * {interval: [-26, 18], close: [1, 1]},\n * {interval: [62, 150], close: [1, 1]},\n * {interval: [106, 150], close: [1, 1]},\n * {interval: [150, Infinity], close: [0, 0]}\n * ])).toEqual([\n * {interval: [-Infinity, -70], close: [0, 0]},\n * {interval: [-70, -26], close: [1, 1]},\n * {interval: [-26, 18], close: [0, 1]},\n * {interval: [18, 62], close: [0, 1]},\n * {interval: [62, 150], close: [0, 1]},\n * {interval: [150, Infinity], close: [0, 0]}\n * ]);\n * @param {Array.} list, where `close` mean open or close\n * of the interval, and Infinity can be used.\n * @return {Array.} The origin list, which has been reformed.\n */\n\n\nfunction reformIntervals(list) {\n list.sort(function (a, b) {\n return littleThan(a, b, 0) ? -1 : 1;\n });\n var curr = -Infinity;\n var currClose = 1;\n\n for (var i = 0; i < list.length;) {\n var interval = list[i].interval;\n var close = list[i].close;\n\n for (var lg = 0; lg < 2; lg++) {\n if (interval[lg] <= curr) {\n interval[lg] = curr;\n close[lg] = !lg ? 1 - currClose : 1;\n }\n\n curr = interval[lg];\n currClose = close[lg];\n }\n\n if (interval[0] === interval[1] && close[0] * close[1] !== 1) {\n list.splice(i, 1);\n } else {\n i++;\n }\n }\n\n return list;\n\n function littleThan(a, b, lg) {\n return a.interval[lg] < b.interval[lg] || a.interval[lg] === b.interval[lg] && (a.close[lg] - b.close[lg] === (!lg ? 1 : -1) || !lg && littleThan(a, b, 1));\n }\n}\n/**\n * parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n * ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n * subtraction forces infinities to NaN\n *\n * @param {*} v\n * @return {boolean}\n */\n\n\nfunction isNumeric(v) {\n return v - parseFloat(v) >= 0;\n}\n\nexports.linearMap = linearMap;\nexports.parsePercent = parsePercent;\nexports.round = round;\nexports.asc = asc;\nexports.getPrecision = getPrecision;\nexports.getPrecisionSafe = getPrecisionSafe;\nexports.getPixelPrecision = getPixelPrecision;\nexports.getPercentWithPrecision = getPercentWithPrecision;\nexports.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER;\nexports.remRadian = remRadian;\nexports.isRadianAroundZero = isRadianAroundZero;\nexports.parseDate = parseDate;\nexports.quantity = quantity;\nexports.quantityExponent = quantityExponent;\nexports.nice = nice;\nexports.quantile = quantile;\nexports.reformIntervals = reformIntervals;\nexports.isNumeric = isNumeric;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/util/number.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/util/shape/sausage.js": +/*!********************************************************!*\ + !*** ./node_modules/echarts/lib/util/shape/sausage.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _graphic = __webpack_require__(/*! ../graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar extendShape = _graphic.extendShape;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Sausage: similar to sector, but have half circle on both sides\n * @public\n */\nvar _default = extendShape({\n type: 'sausage',\n shape: {\n cx: 0,\n cy: 0,\n r0: 0,\n r: 0,\n startAngle: 0,\n endAngle: Math.PI * 2,\n clockwise: true\n },\n buildPath: function (ctx, shape) {\n var x = shape.cx;\n var y = shape.cy;\n var r0 = Math.max(shape.r0 || 0, 0);\n var r = Math.max(shape.r, 0);\n var dr = (r - r0) * 0.5;\n var rCenter = r0 + dr;\n var startAngle = shape.startAngle;\n var endAngle = shape.endAngle;\n var clockwise = shape.clockwise;\n var unitStartX = Math.cos(startAngle);\n var unitStartY = Math.sin(startAngle);\n var unitEndX = Math.cos(endAngle);\n var unitEndY = Math.sin(endAngle);\n var lessThanCircle = clockwise ? endAngle - startAngle < Math.PI * 2 : startAngle - endAngle < Math.PI * 2;\n\n if (lessThanCircle) {\n ctx.moveTo(unitStartX * r0 + x, unitStartY * r0 + y);\n ctx.arc(unitStartX * rCenter + x, unitStartY * rCenter + y, dr, -Math.PI + startAngle, startAngle, !clockwise);\n }\n\n ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\n ctx.moveTo(unitEndX * r + x, unitEndY * r + y);\n ctx.arc(unitEndX * rCenter + x, unitEndY * rCenter + y, dr, endAngle - Math.PI * 2, endAngle - Math.PI, !clockwise);\n\n if (r0 !== 0) {\n ctx.arc(x, y, r0, endAngle, startAngle, clockwise);\n ctx.moveTo(unitStartX * r0 + x, unitEndY * r0 + y);\n }\n\n ctx.closePath();\n }\n});\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/util/shape/sausage.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/util/symbol.js": +/*!*************************************************!*\ + !*** ./node_modules/echarts/lib/util/symbol.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar graphic = __webpack_require__(/*! ./graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar BoundingRect = __webpack_require__(/*! zrender/lib/core/BoundingRect */ \"./node_modules/zrender/lib/core/BoundingRect.js\");\n\nvar _text = __webpack_require__(/*! zrender/lib/contain/text */ \"./node_modules/zrender/lib/contain/text.js\");\n\nvar calculateTextPosition = _text.calculateTextPosition;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Symbol factory\n\n/**\n * Triangle shape\n * @inner\n */\nvar Triangle = graphic.extendShape({\n type: 'triangle',\n shape: {\n cx: 0,\n cy: 0,\n width: 0,\n height: 0\n },\n buildPath: function (path, shape) {\n var cx = shape.cx;\n var cy = shape.cy;\n var width = shape.width / 2;\n var height = shape.height / 2;\n path.moveTo(cx, cy - height);\n path.lineTo(cx + width, cy + height);\n path.lineTo(cx - width, cy + height);\n path.closePath();\n }\n});\n/**\n * Diamond shape\n * @inner\n */\n\nvar Diamond = graphic.extendShape({\n type: 'diamond',\n shape: {\n cx: 0,\n cy: 0,\n width: 0,\n height: 0\n },\n buildPath: function (path, shape) {\n var cx = shape.cx;\n var cy = shape.cy;\n var width = shape.width / 2;\n var height = shape.height / 2;\n path.moveTo(cx, cy - height);\n path.lineTo(cx + width, cy);\n path.lineTo(cx, cy + height);\n path.lineTo(cx - width, cy);\n path.closePath();\n }\n});\n/**\n * Pin shape\n * @inner\n */\n\nvar Pin = graphic.extendShape({\n type: 'pin',\n shape: {\n // x, y on the cusp\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n buildPath: function (path, shape) {\n var x = shape.x;\n var y = shape.y;\n var w = shape.width / 5 * 3; // Height must be larger than width\n\n var h = Math.max(w, shape.height);\n var r = w / 2; // Dist on y with tangent point and circle center\n\n var dy = r * r / (h - r);\n var cy = y - h + r + dy;\n var angle = Math.asin(dy / r); // Dist on x with tangent point and circle center\n\n var dx = Math.cos(angle) * r;\n var tanX = Math.sin(angle);\n var tanY = Math.cos(angle);\n var cpLen = r * 0.6;\n var cpLen2 = r * 0.7;\n path.moveTo(x - dx, cy + dy);\n path.arc(x, cy, r, Math.PI - angle, Math.PI * 2 + angle);\n path.bezierCurveTo(x + dx - tanX * cpLen, cy + dy + tanY * cpLen, x, y - cpLen2, x, y);\n path.bezierCurveTo(x, y - cpLen2, x - dx + tanX * cpLen, cy + dy + tanY * cpLen, x - dx, cy + dy);\n path.closePath();\n }\n});\n/**\n * Arrow shape\n * @inner\n */\n\nvar Arrow = graphic.extendShape({\n type: 'arrow',\n shape: {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n buildPath: function (ctx, shape) {\n var height = shape.height;\n var width = shape.width;\n var x = shape.x;\n var y = shape.y;\n var dx = width / 3 * 2;\n ctx.moveTo(x, y);\n ctx.lineTo(x + dx, y + height);\n ctx.lineTo(x, y + height / 4 * 3);\n ctx.lineTo(x - dx, y + height);\n ctx.lineTo(x, y);\n ctx.closePath();\n }\n});\n/**\n * Map of path contructors\n * @type {Object.}\n */\n\nvar symbolCtors = {\n line: graphic.Line,\n rect: graphic.Rect,\n roundRect: graphic.Rect,\n square: graphic.Rect,\n circle: graphic.Circle,\n diamond: Diamond,\n pin: Pin,\n arrow: Arrow,\n triangle: Triangle\n};\nvar symbolShapeMakers = {\n line: function (x, y, w, h, shape) {\n // FIXME\n shape.x1 = x;\n shape.y1 = y + h / 2;\n shape.x2 = x + w;\n shape.y2 = y + h / 2;\n },\n rect: function (x, y, w, h, shape) {\n shape.x = x;\n shape.y = y;\n shape.width = w;\n shape.height = h;\n },\n roundRect: function (x, y, w, h, shape) {\n shape.x = x;\n shape.y = y;\n shape.width = w;\n shape.height = h;\n shape.r = Math.min(w, h) / 4;\n },\n square: function (x, y, w, h, shape) {\n var size = Math.min(w, h);\n shape.x = x;\n shape.y = y;\n shape.width = size;\n shape.height = size;\n },\n circle: function (x, y, w, h, shape) {\n // Put circle in the center of square\n shape.cx = x + w / 2;\n shape.cy = y + h / 2;\n shape.r = Math.min(w, h) / 2;\n },\n diamond: function (x, y, w, h, shape) {\n shape.cx = x + w / 2;\n shape.cy = y + h / 2;\n shape.width = w;\n shape.height = h;\n },\n pin: function (x, y, w, h, shape) {\n shape.x = x + w / 2;\n shape.y = y + h / 2;\n shape.width = w;\n shape.height = h;\n },\n arrow: function (x, y, w, h, shape) {\n shape.x = x + w / 2;\n shape.y = y + h / 2;\n shape.width = w;\n shape.height = h;\n },\n triangle: function (x, y, w, h, shape) {\n shape.cx = x + w / 2;\n shape.cy = y + h / 2;\n shape.width = w;\n shape.height = h;\n }\n};\nvar symbolBuildProxies = {};\nzrUtil.each(symbolCtors, function (Ctor, name) {\n symbolBuildProxies[name] = new Ctor();\n});\nvar SymbolClz = graphic.extendShape({\n type: 'symbol',\n shape: {\n symbolType: '',\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n calculateTextPosition: function (out, style, rect) {\n var res = calculateTextPosition(out, style, rect);\n var shape = this.shape;\n\n if (shape && shape.symbolType === 'pin' && style.textPosition === 'inside') {\n res.y = rect.y + rect.height * 0.4;\n }\n\n return res;\n },\n buildPath: function (ctx, shape, inBundle) {\n var symbolType = shape.symbolType;\n\n if (symbolType !== 'none') {\n var proxySymbol = symbolBuildProxies[symbolType];\n\n if (!proxySymbol) {\n // Default rect\n symbolType = 'rect';\n proxySymbol = symbolBuildProxies[symbolType];\n }\n\n symbolShapeMakers[symbolType](shape.x, shape.y, shape.width, shape.height, proxySymbol.shape);\n proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle);\n }\n }\n}); // Provide setColor helper method to avoid determine if set the fill or stroke outside\n\nfunction symbolPathSetColor(color, innerColor) {\n if (this.type !== 'image') {\n var symbolStyle = this.style;\n var symbolShape = this.shape;\n\n if (symbolShape && symbolShape.symbolType === 'line') {\n symbolStyle.stroke = color;\n } else if (this.__isEmptyBrush) {\n symbolStyle.stroke = color;\n symbolStyle.fill = innerColor || '#fff';\n } else {\n // FIXME 判断图形默认是填充还是描边,使用 onlyStroke ?\n symbolStyle.fill && (symbolStyle.fill = color);\n symbolStyle.stroke && (symbolStyle.stroke = color);\n }\n\n this.dirty(false);\n }\n}\n/**\n * Create a symbol element with given symbol configuration: shape, x, y, width, height, color\n * @param {string} symbolType\n * @param {number} x\n * @param {number} y\n * @param {number} w\n * @param {number} h\n * @param {string} color\n * @param {boolean} [keepAspect=false] whether to keep the ratio of w/h,\n * for path and image only.\n */\n\n\nfunction createSymbol(symbolType, x, y, w, h, color, keepAspect) {\n // TODO Support image object, DynamicImage.\n var isEmpty = symbolType.indexOf('empty') === 0;\n\n if (isEmpty) {\n symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6);\n }\n\n var symbolPath;\n\n if (symbolType.indexOf('image://') === 0) {\n symbolPath = graphic.makeImage(symbolType.slice(8), new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\n } else if (symbolType.indexOf('path://') === 0) {\n symbolPath = graphic.makePath(symbolType.slice(7), {}, new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\n } else {\n symbolPath = new SymbolClz({\n shape: {\n symbolType: symbolType,\n x: x,\n y: y,\n width: w,\n height: h\n }\n });\n }\n\n symbolPath.__isEmptyBrush = isEmpty;\n symbolPath.setColor = symbolPathSetColor;\n symbolPath.setColor(color);\n return symbolPath;\n}\n\nexports.createSymbol = createSymbol;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/util/symbol.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/util/throttle.js": +/*!***************************************************!*\ + !*** ./node_modules/echarts/lib/util/throttle.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar ORIGIN_METHOD = '\\0__throttleOriginMethod';\nvar RATE = '\\0__throttleRate';\nvar THROTTLE_TYPE = '\\0__throttleType';\n/**\n * @public\n * @param {(Function)} fn\n * @param {number} [delay=0] Unit: ms.\n * @param {boolean} [debounce=false]\n * true: If call interval less than `delay`, only the last call works.\n * false: If call interval less than `delay, call works on fixed rate.\n * @return {(Function)} throttled fn.\n */\n\nfunction throttle(fn, delay, debounce) {\n var currCall;\n var lastCall = 0;\n var lastExec = 0;\n var timer = null;\n var diff;\n var scope;\n var args;\n var debounceNextCall;\n delay = delay || 0;\n\n function exec() {\n lastExec = new Date().getTime();\n timer = null;\n fn.apply(scope, args || []);\n }\n\n var cb = function () {\n currCall = new Date().getTime();\n scope = this;\n args = arguments;\n var thisDelay = debounceNextCall || delay;\n var thisDebounce = debounceNextCall || debounce;\n debounceNextCall = null;\n diff = currCall - (thisDebounce ? lastCall : lastExec) - thisDelay;\n clearTimeout(timer); // Here we should make sure that: the `exec` SHOULD NOT be called later\n // than a new call of `cb`, that is, preserving the command order. Consider\n // calculating \"scale rate\" when roaming as an example. When a call of `cb`\n // happens, either the `exec` is called dierectly, or the call is delayed.\n // But the delayed call should never be later than next call of `cb`. Under\n // this assurance, we can simply update view state each time `dispatchAction`\n // triggered by user roaming, but not need to add extra code to avoid the\n // state being \"rolled-back\".\n\n if (thisDebounce) {\n timer = setTimeout(exec, thisDelay);\n } else {\n if (diff >= 0) {\n exec();\n } else {\n timer = setTimeout(exec, -diff);\n }\n }\n\n lastCall = currCall;\n };\n /**\n * Clear throttle.\n * @public\n */\n\n\n cb.clear = function () {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n };\n /**\n * Enable debounce once.\n */\n\n\n cb.debounceNextCall = function (debounceDelay) {\n debounceNextCall = debounceDelay;\n };\n\n return cb;\n}\n/**\n * Create throttle method or update throttle rate.\n *\n * @example\n * ComponentView.prototype.render = function () {\n * ...\n * throttle.createOrUpdate(\n * this,\n * '_dispatchAction',\n * this.model.get('throttle'),\n * 'fixRate'\n * );\n * };\n * ComponentView.prototype.remove = function () {\n * throttle.clear(this, '_dispatchAction');\n * };\n * ComponentView.prototype.dispose = function () {\n * throttle.clear(this, '_dispatchAction');\n * };\n *\n * @public\n * @param {Object} obj\n * @param {string} fnAttr\n * @param {number} [rate]\n * @param {string} [throttleType='fixRate'] 'fixRate' or 'debounce'\n * @return {Function} throttled function.\n */\n\n\nfunction createOrUpdate(obj, fnAttr, rate, throttleType) {\n var fn = obj[fnAttr];\n\n if (!fn) {\n return;\n }\n\n var originFn = fn[ORIGIN_METHOD] || fn;\n var lastThrottleType = fn[THROTTLE_TYPE];\n var lastRate = fn[RATE];\n\n if (lastRate !== rate || lastThrottleType !== throttleType) {\n if (rate == null || !throttleType) {\n return obj[fnAttr] = originFn;\n }\n\n fn = obj[fnAttr] = throttle(originFn, rate, throttleType === 'debounce');\n fn[ORIGIN_METHOD] = originFn;\n fn[THROTTLE_TYPE] = throttleType;\n fn[RATE] = rate;\n }\n\n return fn;\n}\n/**\n * Clear throttle. Example see throttle.createOrUpdate.\n *\n * @public\n * @param {Object} obj\n * @param {string} fnAttr\n */\n\n\nfunction clear(obj, fnAttr) {\n var fn = obj[fnAttr];\n\n if (fn && fn[ORIGIN_METHOD]) {\n obj[fnAttr] = fn[ORIGIN_METHOD];\n }\n}\n\nexports.throttle = throttle;\nexports.createOrUpdate = createOrUpdate;\nexports.clear = clear;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/util/throttle.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/view/Chart.js": +/*!************************************************!*\ + !*** ./node_modules/echarts/lib/view/Chart.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar each = _util.each;\n\nvar Group = __webpack_require__(/*! zrender/lib/container/Group */ \"./node_modules/zrender/lib/container/Group.js\");\n\nvar componentUtil = __webpack_require__(/*! ../util/component */ \"./node_modules/echarts/lib/util/component.js\");\n\nvar clazzUtil = __webpack_require__(/*! ../util/clazz */ \"./node_modules/echarts/lib/util/clazz.js\");\n\nvar modelUtil = __webpack_require__(/*! ../util/model */ \"./node_modules/echarts/lib/util/model.js\");\n\nvar graphicUtil = __webpack_require__(/*! ../util/graphic */ \"./node_modules/echarts/lib/util/graphic.js\");\n\nvar _task = __webpack_require__(/*! ../stream/task */ \"./node_modules/echarts/lib/stream/task.js\");\n\nvar createTask = _task.createTask;\n\nvar createRenderPlanner = __webpack_require__(/*! ../chart/helper/createRenderPlanner */ \"./node_modules/echarts/lib/chart/helper/createRenderPlanner.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = modelUtil.makeInner();\nvar renderPlanner = createRenderPlanner();\n\nfunction Chart() {\n /**\n * @type {module:zrender/container/Group}\n * @readOnly\n */\n this.group = new Group();\n /**\n * @type {string}\n * @readOnly\n */\n\n this.uid = componentUtil.getUID('viewChart');\n this.renderTask = createTask({\n plan: renderTaskPlan,\n reset: renderTaskReset\n });\n this.renderTask.context = {\n view: this\n };\n}\n\nChart.prototype = {\n type: 'chart',\n\n /**\n * Init the chart.\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n init: function (ecModel, api) {},\n\n /**\n * Render the chart.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n render: function (seriesModel, ecModel, api, payload) {},\n\n /**\n * Highlight series or specified data item.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n highlight: function (seriesModel, ecModel, api, payload) {\n toggleHighlight(seriesModel.getData(), payload, 'emphasis');\n },\n\n /**\n * Downplay series or specified data item.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n downplay: function (seriesModel, ecModel, api, payload) {\n toggleHighlight(seriesModel.getData(), payload, 'normal');\n },\n\n /**\n * Remove self.\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n remove: function (ecModel, api) {\n this.group.removeAll();\n },\n\n /**\n * Dispose self.\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n dispose: function () {},\n\n /**\n * Rendering preparation in progressive mode.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n incrementalPrepareRender: null,\n\n /**\n * Render in progressive mode.\n * @param {Object} params See taskParams in `stream/task.js`\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n incrementalRender: null,\n\n /**\n * Update transform directly.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n * @return {Object} {update: true}\n */\n updateTransform: null,\n\n /**\n * The view contains the given point.\n * @interface\n * @param {Array.} point\n * @return {boolean}\n */\n // containPoint: function () {}\n\n /**\n * @param {string} eventType\n * @param {Object} query\n * @param {module:zrender/Element} targetEl\n * @param {Object} packedEvent\n * @return {boolen} Pass only when return `true`.\n */\n filterForExposedEvent: null\n};\nvar chartProto = Chart.prototype;\n\nchartProto.updateView = chartProto.updateLayout = chartProto.updateVisual = function (seriesModel, ecModel, api, payload) {\n this.render(seriesModel, ecModel, api, payload);\n};\n/**\n * Set state of single element\n * @param {module:zrender/Element} el\n * @param {string} state 'normal'|'emphasis'\n * @param {number} highlightDigit\n */\n\n\nfunction elSetState(el, state, highlightDigit) {\n if (el) {\n el.trigger(state, highlightDigit);\n\n if (el.isGroup // Simple optimize.\n && !graphicUtil.isHighDownDispatcher(el)) {\n for (var i = 0, len = el.childCount(); i < len; i++) {\n elSetState(el.childAt(i), state, highlightDigit);\n }\n }\n }\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {Object} payload\n * @param {string} state 'normal'|'emphasis'\n */\n\n\nfunction toggleHighlight(data, payload, state) {\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n var highlightDigit = payload && payload.highlightKey != null ? graphicUtil.getHighlightDigit(payload.highlightKey) : null;\n\n if (dataIndex != null) {\n each(modelUtil.normalizeToArray(dataIndex), function (dataIdx) {\n elSetState(data.getItemGraphicEl(dataIdx), state, highlightDigit);\n });\n } else {\n data.eachItemGraphicEl(function (el) {\n elSetState(el, state, highlightDigit);\n });\n }\n} // Enable Chart.extend.\n\n\nclazzUtil.enableClassExtend(Chart, ['dispose']); // Add capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.\n\nclazzUtil.enableClassManagement(Chart, {\n registerWhenExtend: true\n});\n\nChart.markUpdateMethod = function (payload, methodName) {\n inner(payload).updateMethod = methodName;\n};\n\nfunction renderTaskPlan(context) {\n return renderPlanner(context.model);\n}\n\nfunction renderTaskReset(context) {\n var seriesModel = context.model;\n var ecModel = context.ecModel;\n var api = context.api;\n var payload = context.payload; // ???! remove updateView updateVisual\n\n var progressiveRender = seriesModel.pipelineContext.progressiveRender;\n var view = context.view;\n var updateMethod = payload && inner(payload).updateMethod;\n var methodName = progressiveRender ? 'incrementalPrepareRender' : updateMethod && view[updateMethod] ? updateMethod // `appendData` is also supported when data amount\n // is less than progressive threshold.\n : 'render';\n\n if (methodName !== 'render') {\n view[methodName](seriesModel, ecModel, api, payload);\n }\n\n return progressMethodMap[methodName];\n}\n\nvar progressMethodMap = {\n incrementalPrepareRender: {\n progress: function (params, context) {\n context.view.incrementalRender(params, context.model, context.ecModel, context.api, context.payload);\n }\n },\n render: {\n // Put view.render in `progress` to support appendData. But in this case\n // view.render should not be called in reset, otherwise it will be called\n // twise. Use `forceFirstProgress` to make sure that view.render is called\n // in any cases.\n forceFirstProgress: true,\n progress: function (params, context) {\n context.view.render(context.model, context.ecModel, context.api, context.payload);\n }\n }\n};\nvar _default = Chart;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/view/Chart.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/view/Component.js": +/*!****************************************************!*\ + !*** ./node_modules/echarts/lib/view/Component.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Group = __webpack_require__(/*! zrender/lib/container/Group */ \"./node_modules/zrender/lib/container/Group.js\");\n\nvar componentUtil = __webpack_require__(/*! ../util/component */ \"./node_modules/echarts/lib/util/component.js\");\n\nvar clazzUtil = __webpack_require__(/*! ../util/clazz */ \"./node_modules/echarts/lib/util/clazz.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar Component = function () {\n /**\n * @type {module:zrender/container/Group}\n * @readOnly\n */\n this.group = new Group();\n /**\n * @type {string}\n * @readOnly\n */\n\n this.uid = componentUtil.getUID('viewComponent');\n};\n\nComponent.prototype = {\n constructor: Component,\n init: function (ecModel, api) {},\n render: function (componentModel, ecModel, api, payload) {},\n dispose: function () {},\n\n /**\n * @param {string} eventType\n * @param {Object} query\n * @param {module:zrender/Element} targetEl\n * @param {Object} packedEvent\n * @return {boolen} Pass only when return `true`.\n */\n filterForExposedEvent: null\n};\nvar componentProto = Component.prototype;\n\ncomponentProto.updateView = componentProto.updateLayout = componentProto.updateVisual = function (seriesModel, ecModel, api, payload) {// Do nothing;\n}; // Enable Component.extend.\n\n\nclazzUtil.enableClassExtend(Component); // Enable capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.\n\nclazzUtil.enableClassManagement(Component, {\n registerWhenExtend: true\n});\nvar _default = Component;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/view/Component.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/visual/LegendVisualProvider.js": +/*!*****************************************************************!*\ + !*** ./node_modules/echarts/lib/visual/LegendVisualProvider.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * LegendVisualProvider is an bridge that pick encoded color from data and\n * provide to the legend component.\n * @param {Function} getDataWithEncodedVisual Function to get data after filtered. It stores all the encoding info\n * @param {Function} getRawData Function to get raw data before filtered.\n */\nfunction LegendVisualProvider(getDataWithEncodedVisual, getRawData) {\n this.getAllNames = function () {\n var rawData = getRawData(); // We find the name from the raw data. In case it's filtered by the legend component.\n // Normally, the name can be found in rawData, but can't be found in filtered data will display as gray.\n\n return rawData.mapArray(rawData.getName);\n };\n\n this.containName = function (name) {\n var rawData = getRawData();\n return rawData.indexOfName(name) >= 0;\n };\n\n this.indexOfName = function (name) {\n // Only get data when necessary.\n // Because LegendVisualProvider constructor may be new in the stage that data is not prepared yet.\n // Invoking Series#getData immediately will throw an error.\n var dataWithEncodedVisual = getDataWithEncodedVisual();\n return dataWithEncodedVisual.indexOfName(name);\n };\n\n this.getItemVisual = function (dataIndex, key) {\n // Get encoded visual properties from final filtered data.\n var dataWithEncodedVisual = getDataWithEncodedVisual();\n return dataWithEncodedVisual.getItemVisual(dataIndex, key);\n };\n}\n\nvar _default = LegendVisualProvider;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/visual/LegendVisualProvider.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/visual/VisualMapping.js": +/*!**********************************************************!*\ + !*** ./node_modules/echarts/lib/visual/VisualMapping.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar zrColor = __webpack_require__(/*! zrender/lib/tool/color */ \"./node_modules/zrender/lib/tool/color.js\");\n\nvar _number = __webpack_require__(/*! ../util/number */ \"./node_modules/echarts/lib/util/number.js\");\n\nvar linearMap = _number.linearMap;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar isObject = zrUtil.isObject;\nvar CATEGORY_DEFAULT_VISUAL_INDEX = -1;\n/**\n * @param {Object} option\n * @param {string} [option.type] See visualHandlers.\n * @param {string} [option.mappingMethod] 'linear' or 'piecewise' or 'category' or 'fixed'\n * @param {Array.=} [option.dataExtent] [minExtent, maxExtent],\n * required when mappingMethod is 'linear'\n * @param {Array.=} [option.pieceList] [\n * {value: someValue},\n * {interval: [min1, max1], visual: {...}},\n * {interval: [min2, max2]}\n * ],\n * required when mappingMethod is 'piecewise'.\n * Visual for only each piece can be specified.\n * @param {Array.=} [option.categories] ['cate1', 'cate2']\n * required when mappingMethod is 'category'.\n * If no option.categories, categories is set\n * as [0, 1, 2, ...].\n * @param {boolean} [option.loop=false] Whether loop mapping when mappingMethod is 'category'.\n * @param {(Array|Object|*)} [option.visual] Visual data.\n * when mappingMethod is 'category',\n * visual data can be array or object\n * (like: {cate1: '#222', none: '#fff'})\n * or primary types (which represents\n * default category visual), otherwise visual\n * can be array or primary (which will be\n * normalized to array).\n *\n */\n\nvar VisualMapping = function (option) {\n var mappingMethod = option.mappingMethod;\n var visualType = option.type;\n /**\n * @readOnly\n * @type {Object}\n */\n\n var thisOption = this.option = zrUtil.clone(option);\n /**\n * @readOnly\n * @type {string}\n */\n\n this.type = visualType;\n /**\n * @readOnly\n * @type {string}\n */\n\n this.mappingMethod = mappingMethod;\n /**\n * @private\n * @type {Function}\n */\n\n this._normalizeData = normalizers[mappingMethod];\n var visualHandler = visualHandlers[visualType];\n /**\n * @public\n * @type {Function}\n */\n\n this.applyVisual = visualHandler.applyVisual;\n /**\n * @public\n * @type {Function}\n */\n\n this.getColorMapper = visualHandler.getColorMapper;\n /**\n * @private\n * @type {Function}\n */\n\n this._doMap = visualHandler._doMap[mappingMethod];\n\n if (mappingMethod === 'piecewise') {\n normalizeVisualRange(thisOption);\n preprocessForPiecewise(thisOption);\n } else if (mappingMethod === 'category') {\n thisOption.categories ? preprocessForSpecifiedCategory(thisOption) // categories is ordinal when thisOption.categories not specified,\n // which need no more preprocess except normalize visual.\n : normalizeVisualRange(thisOption, true);\n } else {\n // mappingMethod === 'linear' or 'fixed'\n zrUtil.assert(mappingMethod !== 'linear' || thisOption.dataExtent);\n normalizeVisualRange(thisOption);\n }\n};\n\nVisualMapping.prototype = {\n constructor: VisualMapping,\n mapValueToVisual: function (value) {\n var normalized = this._normalizeData(value);\n\n return this._doMap(normalized, value);\n },\n getNormalizer: function () {\n return zrUtil.bind(this._normalizeData, this);\n }\n};\nvar visualHandlers = VisualMapping.visualHandlers = {\n color: {\n applyVisual: makeApplyVisual('color'),\n\n /**\n * Create a mapper function\n * @return {Function}\n */\n getColorMapper: function () {\n var thisOption = this.option;\n return zrUtil.bind(thisOption.mappingMethod === 'category' ? function (value, isNormalized) {\n !isNormalized && (value = this._normalizeData(value));\n return doMapCategory.call(this, value);\n } : function (value, isNormalized, out) {\n // If output rgb array\n // which will be much faster and useful in pixel manipulation\n var returnRGBArray = !!out;\n !isNormalized && (value = this._normalizeData(value));\n out = zrColor.fastLerp(value, thisOption.parsedVisual, out);\n return returnRGBArray ? out : zrColor.stringify(out, 'rgba');\n }, this);\n },\n _doMap: {\n linear: function (normalized) {\n return zrColor.stringify(zrColor.fastLerp(normalized, this.option.parsedVisual), 'rgba');\n },\n category: doMapCategory,\n piecewise: function (normalized, value) {\n var result = getSpecifiedVisual.call(this, value);\n\n if (result == null) {\n result = zrColor.stringify(zrColor.fastLerp(normalized, this.option.parsedVisual), 'rgba');\n }\n\n return result;\n },\n fixed: doMapFixed\n }\n },\n colorHue: makePartialColorVisualHandler(function (color, value) {\n return zrColor.modifyHSL(color, value);\n }),\n colorSaturation: makePartialColorVisualHandler(function (color, value) {\n return zrColor.modifyHSL(color, null, value);\n }),\n colorLightness: makePartialColorVisualHandler(function (color, value) {\n return zrColor.modifyHSL(color, null, null, value);\n }),\n colorAlpha: makePartialColorVisualHandler(function (color, value) {\n return zrColor.modifyAlpha(color, value);\n }),\n opacity: {\n applyVisual: makeApplyVisual('opacity'),\n _doMap: makeDoMap([0, 1])\n },\n liftZ: {\n applyVisual: makeApplyVisual('liftZ'),\n _doMap: {\n linear: doMapFixed,\n category: doMapFixed,\n piecewise: doMapFixed,\n fixed: doMapFixed\n }\n },\n symbol: {\n applyVisual: function (value, getter, setter) {\n var symbolCfg = this.mapValueToVisual(value);\n\n if (zrUtil.isString(symbolCfg)) {\n setter('symbol', symbolCfg);\n } else if (isObject(symbolCfg)) {\n for (var name in symbolCfg) {\n if (symbolCfg.hasOwnProperty(name)) {\n setter(name, symbolCfg[name]);\n }\n }\n }\n },\n _doMap: {\n linear: doMapToArray,\n category: doMapCategory,\n piecewise: function (normalized, value) {\n var result = getSpecifiedVisual.call(this, value);\n\n if (result == null) {\n result = doMapToArray.call(this, normalized);\n }\n\n return result;\n },\n fixed: doMapFixed\n }\n },\n symbolSize: {\n applyVisual: makeApplyVisual('symbolSize'),\n _doMap: makeDoMap([0, 1])\n }\n};\n\nfunction preprocessForPiecewise(thisOption) {\n var pieceList = thisOption.pieceList;\n thisOption.hasSpecialVisual = false;\n zrUtil.each(pieceList, function (piece, index) {\n piece.originIndex = index; // piece.visual is \"result visual value\" but not\n // a visual range, so it does not need to be normalized.\n\n if (piece.visual != null) {\n thisOption.hasSpecialVisual = true;\n }\n });\n}\n\nfunction preprocessForSpecifiedCategory(thisOption) {\n // Hash categories.\n var categories = thisOption.categories;\n var visual = thisOption.visual;\n var categoryMap = thisOption.categoryMap = {};\n each(categories, function (cate, index) {\n categoryMap[cate] = index;\n }); // Process visual map input.\n\n if (!zrUtil.isArray(visual)) {\n var visualArr = [];\n\n if (zrUtil.isObject(visual)) {\n each(visual, function (v, cate) {\n var index = categoryMap[cate];\n visualArr[index != null ? index : CATEGORY_DEFAULT_VISUAL_INDEX] = v;\n });\n } else {\n // Is primary type, represents default visual.\n visualArr[CATEGORY_DEFAULT_VISUAL_INDEX] = visual;\n }\n\n visual = setVisualToOption(thisOption, visualArr);\n } // Remove categories that has no visual,\n // then we can mapping them to CATEGORY_DEFAULT_VISUAL_INDEX.\n\n\n for (var i = categories.length - 1; i >= 0; i--) {\n if (visual[i] == null) {\n delete categoryMap[categories[i]];\n categories.pop();\n }\n }\n}\n\nfunction normalizeVisualRange(thisOption, isCategory) {\n var visual = thisOption.visual;\n var visualArr = [];\n\n if (zrUtil.isObject(visual)) {\n each(visual, function (v) {\n visualArr.push(v);\n });\n } else if (visual != null) {\n visualArr.push(visual);\n }\n\n var doNotNeedPair = {\n color: 1,\n symbol: 1\n };\n\n if (!isCategory && visualArr.length === 1 && !doNotNeedPair.hasOwnProperty(thisOption.type)) {\n // Do not care visualArr.length === 0, which is illegal.\n visualArr[1] = visualArr[0];\n }\n\n setVisualToOption(thisOption, visualArr);\n}\n\nfunction makePartialColorVisualHandler(applyValue) {\n return {\n applyVisual: function (value, getter, setter) {\n value = this.mapValueToVisual(value); // Must not be array value\n\n setter('color', applyValue(getter('color'), value));\n },\n _doMap: makeDoMap([0, 1])\n };\n}\n\nfunction doMapToArray(normalized) {\n var visual = this.option.visual;\n return visual[Math.round(linearMap(normalized, [0, 1], [0, visual.length - 1], true))] || {};\n}\n\nfunction makeApplyVisual(visualType) {\n return function (value, getter, setter) {\n setter(visualType, this.mapValueToVisual(value));\n };\n}\n\nfunction doMapCategory(normalized) {\n var visual = this.option.visual;\n return visual[this.option.loop && normalized !== CATEGORY_DEFAULT_VISUAL_INDEX ? normalized % visual.length : normalized];\n}\n\nfunction doMapFixed() {\n return this.option.visual[0];\n}\n\nfunction makeDoMap(sourceExtent) {\n return {\n linear: function (normalized) {\n return linearMap(normalized, sourceExtent, this.option.visual, true);\n },\n category: doMapCategory,\n piecewise: function (normalized, value) {\n var result = getSpecifiedVisual.call(this, value);\n\n if (result == null) {\n result = linearMap(normalized, sourceExtent, this.option.visual, true);\n }\n\n return result;\n },\n fixed: doMapFixed\n };\n}\n\nfunction getSpecifiedVisual(value) {\n var thisOption = this.option;\n var pieceList = thisOption.pieceList;\n\n if (thisOption.hasSpecialVisual) {\n var pieceIndex = VisualMapping.findPieceIndex(value, pieceList);\n var piece = pieceList[pieceIndex];\n\n if (piece && piece.visual) {\n return piece.visual[this.type];\n }\n }\n}\n\nfunction setVisualToOption(thisOption, visualArr) {\n thisOption.visual = visualArr;\n\n if (thisOption.type === 'color') {\n thisOption.parsedVisual = zrUtil.map(visualArr, function (item) {\n return zrColor.parse(item);\n });\n }\n\n return visualArr;\n}\n/**\n * Normalizers by mapping methods.\n */\n\n\nvar normalizers = {\n linear: function (value) {\n return linearMap(value, this.option.dataExtent, [0, 1], true);\n },\n piecewise: function (value) {\n var pieceList = this.option.pieceList;\n var pieceIndex = VisualMapping.findPieceIndex(value, pieceList, true);\n\n if (pieceIndex != null) {\n return linearMap(pieceIndex, [0, pieceList.length - 1], [0, 1], true);\n }\n },\n category: function (value) {\n var index = this.option.categories ? this.option.categoryMap[value] : value; // ordinal\n\n return index == null ? CATEGORY_DEFAULT_VISUAL_INDEX : index;\n },\n fixed: zrUtil.noop\n};\n/**\n * List available visual types.\n *\n * @public\n * @return {Array.}\n */\n\nVisualMapping.listVisualTypes = function () {\n var visualTypes = [];\n zrUtil.each(visualHandlers, function (handler, key) {\n visualTypes.push(key);\n });\n return visualTypes;\n};\n/**\n * @public\n */\n\n\nVisualMapping.addVisualHandler = function (name, handler) {\n visualHandlers[name] = handler;\n};\n/**\n * @public\n */\n\n\nVisualMapping.isValidType = function (visualType) {\n return visualHandlers.hasOwnProperty(visualType);\n};\n/**\n * Convinent method.\n * Visual can be Object or Array or primary type.\n *\n * @public\n */\n\n\nVisualMapping.eachVisual = function (visual, callback, context) {\n if (zrUtil.isObject(visual)) {\n zrUtil.each(visual, callback, context);\n } else {\n callback.call(context, visual);\n }\n};\n\nVisualMapping.mapVisual = function (visual, callback, context) {\n var isPrimary;\n var newVisual = zrUtil.isArray(visual) ? [] : zrUtil.isObject(visual) ? {} : (isPrimary = true, null);\n VisualMapping.eachVisual(visual, function (v, key) {\n var newVal = callback.call(context, v, key);\n isPrimary ? newVisual = newVal : newVisual[key] = newVal;\n });\n return newVisual;\n};\n/**\n * @public\n * @param {Object} obj\n * @return {Object} new object containers visual values.\n * If no visuals, return null.\n */\n\n\nVisualMapping.retrieveVisuals = function (obj) {\n var ret = {};\n var hasVisual;\n obj && each(visualHandlers, function (h, visualType) {\n if (obj.hasOwnProperty(visualType)) {\n ret[visualType] = obj[visualType];\n hasVisual = true;\n }\n });\n return hasVisual ? ret : null;\n};\n/**\n * Give order to visual types, considering colorSaturation, colorAlpha depends on color.\n *\n * @public\n * @param {(Object|Array)} visualTypes If Object, like: {color: ..., colorSaturation: ...}\n * IF Array, like: ['color', 'symbol', 'colorSaturation']\n * @return {Array.} Sorted visual types.\n */\n\n\nVisualMapping.prepareVisualTypes = function (visualTypes) {\n if (isObject(visualTypes)) {\n var types = [];\n each(visualTypes, function (item, type) {\n types.push(type);\n });\n visualTypes = types;\n } else if (zrUtil.isArray(visualTypes)) {\n visualTypes = visualTypes.slice();\n } else {\n return [];\n }\n\n visualTypes.sort(function (type1, type2) {\n // color should be front of colorSaturation, colorAlpha, ...\n // symbol and symbolSize do not matter.\n return type2 === 'color' && type1 !== 'color' && type1.indexOf('color') === 0 ? 1 : -1;\n });\n return visualTypes;\n};\n/**\n * 'color', 'colorSaturation', 'colorAlpha', ... are depends on 'color'.\n * Other visuals are only depends on themself.\n *\n * @public\n * @param {string} visualType1\n * @param {string} visualType2\n * @return {boolean}\n */\n\n\nVisualMapping.dependsOn = function (visualType1, visualType2) {\n return visualType2 === 'color' ? !!(visualType1 && visualType1.indexOf(visualType2) === 0) : visualType1 === visualType2;\n};\n/**\n * @param {number} value\n * @param {Array.} pieceList [{value: ..., interval: [min, max]}, ...]\n * Always from small to big.\n * @param {boolean} [findClosestWhenOutside=false]\n * @return {number} index\n */\n\n\nVisualMapping.findPieceIndex = function (value, pieceList, findClosestWhenOutside) {\n var possibleI;\n var abs = Infinity; // value has the higher priority.\n\n for (var i = 0, len = pieceList.length; i < len; i++) {\n var pieceValue = pieceList[i].value;\n\n if (pieceValue != null) {\n if (pieceValue === value // FIXME\n // It is supposed to compare value according to value type of dimension,\n // but currently value type can exactly be string or number.\n // Compromise for numeric-like string (like '12'), especially\n // in the case that visualMap.categories is ['22', '33'].\n || typeof pieceValue === 'string' && pieceValue === value + '') {\n return i;\n }\n\n findClosestWhenOutside && updatePossible(pieceValue, i);\n }\n }\n\n for (var i = 0, len = pieceList.length; i < len; i++) {\n var piece = pieceList[i];\n var interval = piece.interval;\n var close = piece.close;\n\n if (interval) {\n if (interval[0] === -Infinity) {\n if (littleThan(close[1], value, interval[1])) {\n return i;\n }\n } else if (interval[1] === Infinity) {\n if (littleThan(close[0], interval[0], value)) {\n return i;\n }\n } else if (littleThan(close[0], interval[0], value) && littleThan(close[1], value, interval[1])) {\n return i;\n }\n\n findClosestWhenOutside && updatePossible(interval[0], i);\n findClosestWhenOutside && updatePossible(interval[1], i);\n }\n }\n\n if (findClosestWhenOutside) {\n return value === Infinity ? pieceList.length - 1 : value === -Infinity ? 0 : possibleI;\n }\n\n function updatePossible(val, index) {\n var newAbs = Math.abs(val - value);\n\n if (newAbs < abs) {\n abs = newAbs;\n possibleI = index;\n }\n }\n};\n\nfunction littleThan(close, a, b) {\n return close ? a <= b : a < b;\n}\n\nvar _default = VisualMapping;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/visual/VisualMapping.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/visual/aria.js": +/*!*************************************************!*\ + !*** ./node_modules/echarts/lib/visual/aria.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar lang = __webpack_require__(/*! ../lang */ \"./node_modules/echarts/lib/lang.js\");\n\nvar _dataProvider = __webpack_require__(/*! ../data/helper/dataProvider */ \"./node_modules/echarts/lib/data/helper/dataProvider.js\");\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(dom, ecModel) {\n var ariaModel = ecModel.getModel('aria');\n\n if (!ariaModel.get('show')) {\n return;\n } else if (ariaModel.get('description')) {\n dom.setAttribute('aria-label', ariaModel.get('description'));\n return;\n }\n\n var seriesCnt = 0;\n ecModel.eachSeries(function (seriesModel, idx) {\n ++seriesCnt;\n }, this);\n var maxDataCnt = ariaModel.get('data.maxCount') || 10;\n var maxSeriesCnt = ariaModel.get('series.maxCount') || 10;\n var displaySeriesCnt = Math.min(seriesCnt, maxSeriesCnt);\n var ariaLabel;\n\n if (seriesCnt < 1) {\n // No series, no aria label\n return;\n } else {\n var title = getTitle();\n\n if (title) {\n ariaLabel = replace(getConfig('general.withTitle'), {\n title: title\n });\n } else {\n ariaLabel = getConfig('general.withoutTitle');\n }\n\n var seriesLabels = [];\n var prefix = seriesCnt > 1 ? 'series.multiple.prefix' : 'series.single.prefix';\n ariaLabel += replace(getConfig(prefix), {\n seriesCount: seriesCnt\n });\n ecModel.eachSeries(function (seriesModel, idx) {\n if (idx < displaySeriesCnt) {\n var seriesLabel;\n var seriesName = seriesModel.get('name');\n var seriesTpl = 'series.' + (seriesCnt > 1 ? 'multiple' : 'single') + '.';\n seriesLabel = getConfig(seriesName ? seriesTpl + 'withName' : seriesTpl + 'withoutName');\n seriesLabel = replace(seriesLabel, {\n seriesId: seriesModel.seriesIndex,\n seriesName: seriesModel.get('name'),\n seriesType: getSeriesTypeName(seriesModel.subType)\n });\n var data = seriesModel.getData();\n window.data = data;\n\n if (data.count() > maxDataCnt) {\n // Show part of data\n seriesLabel += replace(getConfig('data.partialData'), {\n displayCnt: maxDataCnt\n });\n } else {\n seriesLabel += getConfig('data.allData');\n }\n\n var dataLabels = [];\n\n for (var i = 0; i < data.count(); i++) {\n if (i < maxDataCnt) {\n var name = data.getName(i);\n var value = retrieveRawValue(data, i);\n dataLabels.push(replace(name ? getConfig('data.withName') : getConfig('data.withoutName'), {\n name: name,\n value: value\n }));\n }\n }\n\n seriesLabel += dataLabels.join(getConfig('data.separator.middle')) + getConfig('data.separator.end');\n seriesLabels.push(seriesLabel);\n }\n });\n ariaLabel += seriesLabels.join(getConfig('series.multiple.separator.middle')) + getConfig('series.multiple.separator.end');\n dom.setAttribute('aria-label', ariaLabel);\n }\n\n function replace(str, keyValues) {\n if (typeof str !== 'string') {\n return str;\n }\n\n var result = str;\n zrUtil.each(keyValues, function (value, key) {\n result = result.replace(new RegExp('\\\\{\\\\s*' + key + '\\\\s*\\\\}', 'g'), value);\n });\n return result;\n }\n\n function getConfig(path) {\n var userConfig = ariaModel.get(path);\n\n if (userConfig == null) {\n var pathArr = path.split('.');\n var result = lang.aria;\n\n for (var i = 0; i < pathArr.length; ++i) {\n result = result[pathArr[i]];\n }\n\n return result;\n } else {\n return userConfig;\n }\n }\n\n function getTitle() {\n var title = ecModel.getModel('title').option;\n\n if (title && title.length) {\n title = title[0];\n }\n\n return title && title.text;\n }\n\n function getSeriesTypeName(type) {\n return lang.series.typeNames[type] || '自定义图';\n }\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/visual/aria.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/visual/dataColor.js": +/*!******************************************************!*\ + !*** ./node_modules/echarts/lib/visual/dataColor.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar createHashMap = _util.createHashMap;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Pick color from palette for each data item.\n// Applicable for charts that require applying color palette\n// in data level (like pie, funnel, chord).\nfunction _default(seriesType) {\n return {\n getTargetSeries: function (ecModel) {\n // Pie and funnel may use diferrent scope\n var paletteScope = {};\n var seiresModelMap = createHashMap();\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n seriesModel.__paletteScope = paletteScope;\n seiresModelMap.set(seriesModel.uid, seriesModel);\n });\n return seiresModelMap;\n },\n reset: function (seriesModel, ecModel) {\n var dataAll = seriesModel.getRawData();\n var idxMap = {};\n var data = seriesModel.getData();\n data.each(function (idx) {\n var rawIdx = data.getRawIndex(idx);\n idxMap[rawIdx] = idx;\n });\n dataAll.each(function (rawIdx) {\n var filteredIdx = idxMap[rawIdx]; // If series.itemStyle.normal.color is a function. itemVisual may be encoded\n\n var singleDataColor = filteredIdx != null && data.getItemVisual(filteredIdx, 'color', true);\n var singleDataBorderColor = filteredIdx != null && data.getItemVisual(filteredIdx, 'borderColor', true);\n var itemModel;\n\n if (!singleDataColor || !singleDataBorderColor) {\n // FIXME Performance\n itemModel = dataAll.getItemModel(rawIdx);\n }\n\n if (!singleDataColor) {\n var color = itemModel.get('itemStyle.color') || seriesModel.getColorFromPalette(dataAll.getName(rawIdx) || rawIdx + '', seriesModel.__paletteScope, dataAll.count()); // Data is not filtered\n\n if (filteredIdx != null) {\n data.setItemVisual(filteredIdx, 'color', color);\n }\n }\n\n if (!singleDataBorderColor) {\n var borderColor = itemModel.get('itemStyle.borderColor'); // Data is not filtered\n\n if (filteredIdx != null) {\n data.setItemVisual(filteredIdx, 'borderColor', borderColor);\n }\n }\n });\n }\n };\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/visual/dataColor.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/visual/seriesColor.js": +/*!********************************************************!*\ + !*** ./node_modules/echarts/lib/visual/seriesColor.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Gradient = __webpack_require__(/*! zrender/lib/graphic/Gradient */ \"./node_modules/zrender/lib/graphic/Gradient.js\");\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar isFunction = _util.isFunction;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = {\n createOnAllSeries: true,\n performRawSeries: true,\n reset: function (seriesModel, ecModel) {\n var data = seriesModel.getData();\n var colorAccessPath = (seriesModel.visualColorAccessPath || 'itemStyle.color').split('.'); // Set in itemStyle\n\n var color = seriesModel.get(colorAccessPath);\n var colorCallback = isFunction(color) && !(color instanceof Gradient) ? color : null; // Default color\n\n if (!color || colorCallback) {\n color = seriesModel.getColorFromPalette( // TODO series count changed.\n seriesModel.name, null, ecModel.getSeriesCount());\n }\n\n data.setVisual('color', color);\n var borderColorAccessPath = (seriesModel.visualBorderColorAccessPath || 'itemStyle.borderColor').split('.');\n var borderColor = seriesModel.get(borderColorAccessPath);\n data.setVisual('borderColor', borderColor); // Only visible series has each data be visual encoded\n\n if (!ecModel.isSeriesFiltered(seriesModel)) {\n if (colorCallback) {\n data.each(function (idx) {\n data.setItemVisual(idx, 'color', colorCallback(seriesModel.getDataParams(idx)));\n });\n } // itemStyle in each data item\n\n\n var dataEach = function (data, idx) {\n var itemModel = data.getItemModel(idx);\n var color = itemModel.get(colorAccessPath, true);\n var borderColor = itemModel.get(borderColorAccessPath, true);\n\n if (color != null) {\n data.setItemVisual(idx, 'color', color);\n }\n\n if (borderColor != null) {\n data.setItemVisual(idx, 'borderColor', borderColor);\n }\n };\n\n return {\n dataEach: data.hasItemOption ? dataEach : null\n };\n }\n }\n};\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/visual/seriesColor.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/visual/symbol.js": +/*!***************************************************!*\ + !*** ./node_modules/echarts/lib/visual/symbol.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar isFunction = _util.isFunction;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(seriesType, defaultSymbolType, legendSymbol) {\n // Encoding visual for all series include which is filtered for legend drawing\n return {\n seriesType: seriesType,\n // For legend.\n performRawSeries: true,\n reset: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n var symbolType = seriesModel.get('symbol');\n var symbolSize = seriesModel.get('symbolSize');\n var keepAspect = seriesModel.get('symbolKeepAspect');\n var symbolRotate = seriesModel.get('symbolRotate');\n var hasSymbolTypeCallback = isFunction(symbolType);\n var hasSymbolSizeCallback = isFunction(symbolSize);\n var hasSymbolRotateCallback = isFunction(symbolRotate);\n var hasCallback = hasSymbolTypeCallback || hasSymbolSizeCallback || hasSymbolRotateCallback;\n var seriesSymbol = !hasSymbolTypeCallback && symbolType ? symbolType : defaultSymbolType;\n var seriesSymbolSize = !hasSymbolSizeCallback ? symbolSize : null;\n var seriesSymbolRotate = !hasSymbolRotateCallback ? seriesSymbolRotate : null;\n data.setVisual({\n legendSymbol: legendSymbol || seriesSymbol,\n // If seting callback functions on `symbol` or `symbolSize`, for simplicity and avoiding\n // to bring trouble, we do not pick a reuslt from one of its calling on data item here,\n // but just use the default value. Callback on `symbol` or `symbolSize` is convenient in\n // some cases but generally it is not recommanded.\n symbol: seriesSymbol,\n symbolSize: seriesSymbolSize,\n symbolKeepAspect: keepAspect,\n symbolRotate: symbolRotate\n }); // Only visible series has each data be visual encoded\n\n if (ecModel.isSeriesFiltered(seriesModel)) {\n return;\n }\n\n function dataEach(data, idx) {\n if (hasCallback) {\n var rawValue = seriesModel.getRawValue(idx);\n var params = seriesModel.getDataParams(idx);\n hasSymbolTypeCallback && data.setItemVisual(idx, 'symbol', symbolType(rawValue, params));\n hasSymbolSizeCallback && data.setItemVisual(idx, 'symbolSize', symbolSize(rawValue, params));\n hasSymbolRotateCallback && data.setItemVisual(idx, 'symbolRotate', symbolRotate(rawValue, params));\n }\n\n if (data.hasItemOption) {\n var itemModel = data.getItemModel(idx);\n var itemSymbolType = itemModel.getShallow('symbol', true);\n var itemSymbolSize = itemModel.getShallow('symbolSize', true);\n var itemSymbolRotate = itemModel.getShallow('symbolRotate', true);\n var itemSymbolKeepAspect = itemModel.getShallow('symbolKeepAspect', true); // If has item symbol\n\n if (itemSymbolType != null) {\n data.setItemVisual(idx, 'symbol', itemSymbolType);\n }\n\n if (itemSymbolSize != null) {\n // PENDING Transform symbolSize ?\n data.setItemVisual(idx, 'symbolSize', itemSymbolSize);\n }\n\n if (itemSymbolRotate != null) {\n data.setItemVisual(idx, 'symbolRotate', itemSymbolRotate);\n }\n\n if (itemSymbolKeepAspect != null) {\n data.setItemVisual(idx, 'symbolKeepAspect', itemSymbolKeepAspect);\n }\n }\n }\n\n return {\n dataEach: data.hasItemOption || hasCallback ? dataEach : null\n };\n }\n };\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/visual/symbol.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/visual/visualDefault.js": +/*!**********************************************************!*\ + !*** ./node_modules/echarts/lib/visual/visualDefault.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @file Visual mapping.\n */\nvar visualDefault = {\n /**\n * @public\n */\n get: function (visualType, key, isCategory) {\n var value = zrUtil.clone((defaultOption[visualType] || {})[key]);\n return isCategory ? zrUtil.isArray(value) ? value[value.length - 1] : value : value;\n }\n};\nvar defaultOption = {\n color: {\n active: ['#006edd', '#e0ffff'],\n inactive: ['rgba(0,0,0,0)']\n },\n colorHue: {\n active: [0, 360],\n inactive: [0, 0]\n },\n colorSaturation: {\n active: [0.3, 1],\n inactive: [0, 0]\n },\n colorLightness: {\n active: [0.9, 0.5],\n inactive: [0, 0]\n },\n colorAlpha: {\n active: [0.3, 1],\n inactive: [0, 0]\n },\n opacity: {\n active: [0.3, 1],\n inactive: [0, 0]\n },\n symbol: {\n active: ['circle', 'roundRect', 'diamond'],\n inactive: ['none']\n },\n symbolSize: {\n active: [10, 50],\n inactive: [0, 0]\n }\n};\nvar _default = visualDefault;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/visual/visualDefault.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/lib/visual/visualSolution.js": +/*!***********************************************************!*\ + !*** ./node_modules/echarts/lib/visual/visualSolution.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(/*! zrender/lib/core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar VisualMapping = __webpack_require__(/*! ./VisualMapping */ \"./node_modules/echarts/lib/visual/VisualMapping.js\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @file Visual solution, for consistent option specification.\n */\nvar each = zrUtil.each;\n\nfunction hasKeys(obj) {\n if (obj) {\n for (var name in obj) {\n if (obj.hasOwnProperty(name)) {\n return true;\n }\n }\n }\n}\n/**\n * @param {Object} option\n * @param {Array.} stateList\n * @param {Function} [supplementVisualOption]\n * @return {Object} visualMappings >\n */\n\n\nfunction createVisualMappings(option, stateList, supplementVisualOption) {\n var visualMappings = {};\n each(stateList, function (state) {\n var mappings = visualMappings[state] = createMappings();\n each(option[state], function (visualData, visualType) {\n if (!VisualMapping.isValidType(visualType)) {\n return;\n }\n\n var mappingOption = {\n type: visualType,\n visual: visualData\n };\n supplementVisualOption && supplementVisualOption(mappingOption, state);\n mappings[visualType] = new VisualMapping(mappingOption); // Prepare a alpha for opacity, for some case that opacity\n // is not supported, such as rendering using gradient color.\n\n if (visualType === 'opacity') {\n mappingOption = zrUtil.clone(mappingOption);\n mappingOption.type = 'colorAlpha';\n mappings.__hidden.__alphaForOpacity = new VisualMapping(mappingOption);\n }\n });\n });\n return visualMappings;\n\n function createMappings() {\n var Creater = function () {}; // Make sure hidden fields will not be visited by\n // object iteration (with hasOwnProperty checking).\n\n\n Creater.prototype.__hidden = Creater.prototype;\n var obj = new Creater();\n return obj;\n }\n}\n/**\n * @param {Object} thisOption\n * @param {Object} newOption\n * @param {Array.} keys\n */\n\n\nfunction replaceVisualOption(thisOption, newOption, keys) {\n // Visual attributes merge is not supported, otherwise it\n // brings overcomplicated merge logic. See #2853. So if\n // newOption has anyone of these keys, all of these keys\n // will be reset. Otherwise, all keys remain.\n var has;\n zrUtil.each(keys, function (key) {\n if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) {\n has = true;\n }\n });\n has && zrUtil.each(keys, function (key) {\n if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) {\n thisOption[key] = zrUtil.clone(newOption[key]);\n } else {\n delete thisOption[key];\n }\n });\n}\n/**\n * @param {Array.} stateList\n * @param {Object} visualMappings >\n * @param {module:echarts/data/List} list\n * @param {Function} getValueState param: valueOrIndex, return: state.\n * @param {object} [scope] Scope for getValueState\n * @param {string} [dimension] Concrete dimension, if used.\n */\n// ???! handle brush?\n\n\nfunction applyVisual(stateList, visualMappings, data, getValueState, scope, dimension) {\n var visualTypesMap = {};\n zrUtil.each(stateList, function (state) {\n var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]);\n visualTypesMap[state] = visualTypes;\n });\n var dataIndex;\n\n function getVisual(key) {\n return data.getItemVisual(dataIndex, key);\n }\n\n function setVisual(key, value) {\n data.setItemVisual(dataIndex, key, value);\n }\n\n if (dimension == null) {\n data.each(eachItem);\n } else {\n data.each([dimension], eachItem);\n }\n\n function eachItem(valueOrIndex, index) {\n dataIndex = dimension == null ? valueOrIndex : index;\n var rawDataItem = data.getRawDataItem(dataIndex); // Consider performance\n\n if (rawDataItem && rawDataItem.visualMap === false) {\n return;\n }\n\n var valueState = getValueState.call(scope, valueOrIndex);\n var mappings = visualMappings[valueState];\n var visualTypes = visualTypesMap[valueState];\n\n for (var i = 0, len = visualTypes.length; i < len; i++) {\n var type = visualTypes[i];\n mappings[type] && mappings[type].applyVisual(valueOrIndex, getVisual, setVisual);\n }\n }\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {Array.} stateList\n * @param {Object} visualMappings >\n * @param {Function} getValueState param: valueOrIndex, return: state.\n * @param {number} [dim] dimension or dimension index.\n */\n\n\nfunction incrementalApplyVisual(stateList, visualMappings, getValueState, dim) {\n var visualTypesMap = {};\n zrUtil.each(stateList, function (state) {\n var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]);\n visualTypesMap[state] = visualTypes;\n });\n\n function progress(params, data) {\n if (dim != null) {\n dim = data.getDimension(dim);\n }\n\n function getVisual(key) {\n return data.getItemVisual(dataIndex, key);\n }\n\n function setVisual(key, value) {\n data.setItemVisual(dataIndex, key, value);\n }\n\n var dataIndex;\n\n while ((dataIndex = params.next()) != null) {\n var rawDataItem = data.getRawDataItem(dataIndex); // Consider performance\n\n if (rawDataItem && rawDataItem.visualMap === false) {\n continue;\n }\n\n var value = dim != null ? data.get(dim, dataIndex, true) : dataIndex;\n var valueState = getValueState(value);\n var mappings = visualMappings[valueState];\n var visualTypes = visualTypesMap[valueState];\n\n for (var i = 0, len = visualTypes.length; i < len; i++) {\n var type = visualTypes[i];\n mappings[type] && mappings[type].applyVisual(value, getVisual, setVisual);\n }\n }\n }\n\n return {\n progress: progress\n };\n}\n\nexports.createVisualMappings = createVisualMappings;\nexports.replaceVisualOption = replaceVisualOption;\nexports.applyVisual = applyVisual;\nexports.incrementalApplyVisual = incrementalApplyVisual;\n\n//# sourceURL=webpack:///./node_modules/echarts/lib/visual/visualSolution.js?"); + +/***/ }), + +/***/ "./node_modules/echarts/theme/macarons.js": +/*!************************************************!*\ + !*** ./node_modules/echarts/theme/macarons.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n(function(root, factory) {\n if (true) {\n // AMD. Register as an anonymous module.\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! echarts */ \"./node_modules/echarts/index.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else {}\n})(this, function(exports, echarts) {\n var log = function(msg) {\n if (typeof console !== 'undefined') {\n console && console.error && console.error(msg);\n }\n };\n if (!echarts) {\n log('ECharts is not Loaded');\n return;\n }\n\n var colorPalette = [\n '#2ec7c9',\n '#b6a2de',\n '#5ab1ef',\n '#ffb980',\n '#d87a80',\n '#8d98b3',\n '#e5cf0d',\n '#97b552',\n '#95706d',\n '#dc69aa',\n '#07a2a4',\n '#9a7fd1',\n '#588dd5',\n '#f5994e',\n '#c05050',\n '#59678c',\n '#c9ab00',\n '#7eb00a',\n '#6f5553',\n '#c14089'\n ];\n\n var theme = {\n color: colorPalette,\n\n title: {\n textStyle: {\n fontWeight: 'normal',\n color: '#008acd'\n }\n },\n\n visualMap: {\n itemWidth: 15,\n color: ['#5ab1ef', '#e0ffff']\n },\n\n toolbox: {\n iconStyle: {\n normal: {\n borderColor: colorPalette[0]\n }\n }\n },\n\n tooltip: {\n backgroundColor: 'rgba(50,50,50,0.5)',\n axisPointer: {\n type: 'line',\n lineStyle: {\n color: '#008acd'\n },\n crossStyle: {\n color: '#008acd'\n },\n shadowStyle: {\n color: 'rgba(200,200,200,0.2)'\n }\n }\n },\n\n dataZoom: {\n dataBackgroundColor: '#efefff',\n fillerColor: 'rgba(182,162,222,0.2)',\n handleColor: '#008acd'\n },\n\n grid: {\n borderColor: '#eee'\n },\n\n categoryAxis: {\n axisLine: {\n lineStyle: {\n color: '#008acd'\n }\n },\n splitLine: {\n lineStyle: {\n color: ['#eee']\n }\n }\n },\n\n valueAxis: {\n axisLine: {\n lineStyle: {\n color: '#008acd'\n }\n },\n splitArea: {\n show: true,\n areaStyle: {\n color: ['rgba(250,250,250,0.1)', 'rgba(200,200,200,0.1)']\n }\n },\n splitLine: {\n lineStyle: {\n color: ['#eee']\n }\n }\n },\n\n timeline: {\n lineStyle: {\n color: '#008acd'\n },\n controlStyle: {\n color: '#008acd',\n borderColor: '#008acd'\n },\n symbol: 'emptyCircle',\n symbolSize: 3\n },\n\n line: {\n smooth: true,\n symbol: 'emptyCircle',\n symbolSize: 3\n },\n\n candlestick: {\n itemStyle: {\n color: '#d87a80',\n color0: '#2ec7c9'\n },\n lineStyle: {\n width: 1,\n color: '#d87a80',\n color0: '#2ec7c9'\n },\n areaStyle: {\n color: '#2ec7c9',\n color0: '#b6a2de'\n }\n },\n\n scatter: {\n symbol: 'circle',\n symbolSize: 4\n },\n\n map: {\n itemStyle: {\n color: '#ddd'\n },\n areaStyle: {\n color: '#fe994e'\n },\n label: {\n color: '#d87a80'\n }\n },\n\n graph: {\n itemStyle: {\n color: '#d87a80'\n },\n linkStyle: {\n color: '#2ec7c9'\n }\n },\n\n gauge: {\n axisLine: {\n lineStyle: {\n color: [\n [0.2, '#2ec7c9'],\n [0.8, '#5ab1ef'],\n [1, '#d87a80']\n ],\n width: 10\n }\n },\n axisTick: {\n splitNumber: 10,\n length: 15,\n lineStyle: {\n color: 'auto'\n }\n },\n splitLine: {\n length: 22,\n lineStyle: {\n color: 'auto'\n }\n },\n pointer: {\n width: 5\n }\n }\n };\n\n echarts.registerTheme('macarons', theme);\n});\n\n\n//# sourceURL=webpack:///./node_modules/echarts/theme/macarons.js?"); + +/***/ }), + +/***/ "./node_modules/vue-count-to/dist/vue-count-to.min.js": +/*!************************************************************!*\ + !*** ./node_modules/vue-count-to/dist/vue-count-to.min.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("!function(t,e){ true?module.exports=e():undefined}(this,function(){return function(t){function e(n){if(i[n])return i[n].exports;var a=i[n]={i:n,l:!1,exports:{}};return t[n].call(a.exports,a,a.exports,e),a.l=!0,a.exports}var i={};return e.m=t,e.c=i,e.i=function(t){return t},e.d=function(t,i,n){e.o(t,i)||Object.defineProperty(t,i,{configurable:!1,enumerable:!0,get:n})},e.n=function(t){var i=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(i,\"a\",i),i},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"/dist/\",e(e.s=2)}([function(t,e,i){var n=i(4)(i(1),i(5),null,null);t.exports=n.exports},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=i(3);e.default={props:{startVal:{type:Number,required:!1,default:0},endVal:{type:Number,required:!1,default:2017},duration:{type:Number,required:!1,default:3e3},autoplay:{type:Boolean,required:!1,default:!0},decimals:{type:Number,required:!1,default:0,validator:function(t){return t>=0}},decimal:{type:String,required:!1,default:\".\"},separator:{type:String,required:!1,default:\",\"},prefix:{type:String,required:!1,default:\"\"},suffix:{type:String,required:!1,default:\"\"},useEasing:{type:Boolean,required:!1,default:!0},easingFn:{type:Function,default:function(t,e,i,n){return i*(1-Math.pow(2,-10*t/n))*1024/1023+e}}},data:function(){return{localStartVal:this.startVal,displayValue:this.formatNumber(this.startVal),printVal:null,paused:!1,localDuration:this.duration,startTime:null,timestamp:null,remaining:null,rAF:null}},computed:{countDown:function(){return this.startVal>this.endVal}},watch:{startVal:function(){this.autoplay&&this.start()},endVal:function(){this.autoplay&&this.start()}},mounted:function(){this.autoplay&&this.start(),this.$emit(\"mountedCallback\")},methods:{start:function(){this.localStartVal=this.startVal,this.startTime=null,this.localDuration=this.duration,this.paused=!1,this.rAF=(0,n.requestAnimationFrame)(this.count)},pauseResume:function(){this.paused?(this.resume(),this.paused=!1):(this.pause(),this.paused=!0)},pause:function(){(0,n.cancelAnimationFrame)(this.rAF)},resume:function(){this.startTime=null,this.localDuration=+this.remaining,this.localStartVal=+this.printVal,(0,n.requestAnimationFrame)(this.count)},reset:function(){this.startTime=null,(0,n.cancelAnimationFrame)(this.rAF),this.displayValue=this.formatNumber(this.startVal)},count:function(t){this.startTime||(this.startTime=t),this.timestamp=t;var e=t-this.startTime;this.remaining=this.localDuration-e,this.useEasing?this.countDown?this.printVal=this.localStartVal-this.easingFn(e,0,this.localStartVal-this.endVal,this.localDuration):this.printVal=this.easingFn(e,this.localStartVal,this.endVal-this.localStartVal,this.localDuration):this.countDown?this.printVal=this.localStartVal-(this.localStartVal-this.endVal)*(e/this.localDuration):this.printVal=this.localStartVal+(this.localStartVal-this.startVal)*(e/this.localDuration),this.countDown?this.printVal=this.printValthis.endVal?this.endVal:this.printVal,this.displayValue=this.formatNumber(this.printVal),e1?this.decimal+e[1]:\"\",a=/(\\d+)(\\d{3})/;if(this.separator&&!this.isNumber(this.separator))for(;a.test(i);)i=i.replace(a,\"$1\"+this.separator+\"$2\");return this.prefix+i+n+this.suffix}},destroyed:function(){(0,n.cancelAnimationFrame)(this.rAF)}}},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=i(0),a=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default=a.default,\"undefined\"!=typeof window&&window.Vue&&window.Vue.component(\"count-to\",a.default)},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=0,a=\"webkit moz ms o\".split(\" \"),r=void 0,o=void 0;if(\"undefined\"==typeof window)e.requestAnimationFrame=r=function(){},e.cancelAnimationFrame=o=function(){};else{e.requestAnimationFrame=r=window.requestAnimationFrame,e.cancelAnimationFrame=o=window.cancelAnimationFrame;for(var s=void 0,u=0;u tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib??vue-loader-options!./PanelGroup.vue?vue&type=style&index=0&id=0333a520&lang=scss&scoped=true& */ \"./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/PanelGroup.vue?vue&type=style&index=0&id=0333a520&lang=scss&scoped=true&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../../node_modules/vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"3d8eb02e\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(false) {}\n\n//# sourceURL=webpack:///./src/views/dashboard/PanelGroup.vue?./node_modules/vue-style-loader??ref--9-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--9-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/index.vue?vue&type=style&index=0&id=a83bd3b0&lang=scss&scoped=true&": +/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/vue-style-loader??ref--9-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--9-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/index.vue?vue&type=style&index=0&id=a83bd3b0&lang=scss&scoped=true& ***! + \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// style-loader: Adds some css to the DOM by adding a in svg, where nodeName is 'style',\n // CSS classes is defined globally wherever the style tags are declared.\n\n if (nodeName === 'defs') {\n // define flag\n this._isDefine = true;\n } else if (nodeName === 'text') {\n this._isText = true;\n }\n\n var el;\n\n if (this._isDefine) {\n var parser = defineParsers[nodeName];\n\n if (parser) {\n var def = parser.call(this, xmlNode);\n var id = xmlNode.getAttribute('id');\n\n if (id) {\n this._defs[id] = def;\n }\n }\n } else {\n var parser = nodeParsers[nodeName];\n\n if (parser) {\n el = parser.call(this, xmlNode, parentGroup);\n parentGroup.add(el);\n }\n }\n\n var child = xmlNode.firstChild;\n\n while (child) {\n if (child.nodeType === 1) {\n this._parseNode(child, el);\n } // Is text\n\n\n if (child.nodeType === 3 && this._isText) {\n this._parseText(child, el);\n }\n\n child = child.nextSibling;\n } // Quit define\n\n\n if (nodeName === 'defs') {\n this._isDefine = false;\n } else if (nodeName === 'text') {\n this._isText = false;\n }\n};\n\nSVGParser.prototype._parseText = function (xmlNode, parentGroup) {\n if (xmlNode.nodeType === 1) {\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n this._textX += parseFloat(dx);\n this._textY += parseFloat(dy);\n }\n\n var text = new Text({\n style: {\n text: xmlNode.textContent,\n transformText: true\n },\n position: [this._textX || 0, this._textY || 0]\n });\n inheritStyle(parentGroup, text);\n parseAttributes(xmlNode, text, this._defs);\n var fontSize = text.style.fontSize;\n\n if (fontSize && fontSize < 9) {\n // PENDING\n text.style.fontSize = 9;\n text.scale = text.scale || [1, 1];\n text.scale[0] *= fontSize / 9;\n text.scale[1] *= fontSize / 9;\n }\n\n var rect = text.getBoundingRect();\n this._textX += rect.width;\n parentGroup.add(text);\n return text;\n};\n\nvar nodeParsers = {\n 'g': function (xmlNode, parentGroup) {\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n return g;\n },\n 'rect': function (xmlNode, parentGroup) {\n var rect = new Rect();\n inheritStyle(parentGroup, rect);\n parseAttributes(xmlNode, rect, this._defs);\n rect.setShape({\n x: parseFloat(xmlNode.getAttribute('x') || 0),\n y: parseFloat(xmlNode.getAttribute('y') || 0),\n width: parseFloat(xmlNode.getAttribute('width') || 0),\n height: parseFloat(xmlNode.getAttribute('height') || 0)\n }); // console.log(xmlNode.getAttribute('transform'));\n // console.log(rect.transform);\n\n return rect;\n },\n 'circle': function (xmlNode, parentGroup) {\n var circle = new Circle();\n inheritStyle(parentGroup, circle);\n parseAttributes(xmlNode, circle, this._defs);\n circle.setShape({\n cx: parseFloat(xmlNode.getAttribute('cx') || 0),\n cy: parseFloat(xmlNode.getAttribute('cy') || 0),\n r: parseFloat(xmlNode.getAttribute('r') || 0)\n });\n return circle;\n },\n 'line': function (xmlNode, parentGroup) {\n var line = new Line();\n inheritStyle(parentGroup, line);\n parseAttributes(xmlNode, line, this._defs);\n line.setShape({\n x1: parseFloat(xmlNode.getAttribute('x1') || 0),\n y1: parseFloat(xmlNode.getAttribute('y1') || 0),\n x2: parseFloat(xmlNode.getAttribute('x2') || 0),\n y2: parseFloat(xmlNode.getAttribute('y2') || 0)\n });\n return line;\n },\n 'ellipse': function (xmlNode, parentGroup) {\n var ellipse = new Ellipse();\n inheritStyle(parentGroup, ellipse);\n parseAttributes(xmlNode, ellipse, this._defs);\n ellipse.setShape({\n cx: parseFloat(xmlNode.getAttribute('cx') || 0),\n cy: parseFloat(xmlNode.getAttribute('cy') || 0),\n rx: parseFloat(xmlNode.getAttribute('rx') || 0),\n ry: parseFloat(xmlNode.getAttribute('ry') || 0)\n });\n return ellipse;\n },\n 'polygon': function (xmlNode, parentGroup) {\n var points = xmlNode.getAttribute('points');\n\n if (points) {\n points = parsePoints(points);\n }\n\n var polygon = new Polygon({\n shape: {\n points: points || []\n }\n });\n inheritStyle(parentGroup, polygon);\n parseAttributes(xmlNode, polygon, this._defs);\n return polygon;\n },\n 'polyline': function (xmlNode, parentGroup) {\n var path = new Path();\n inheritStyle(parentGroup, path);\n parseAttributes(xmlNode, path, this._defs);\n var points = xmlNode.getAttribute('points');\n\n if (points) {\n points = parsePoints(points);\n }\n\n var polyline = new Polyline({\n shape: {\n points: points || []\n }\n });\n return polyline;\n },\n 'image': function (xmlNode, parentGroup) {\n var img = new ZImage();\n inheritStyle(parentGroup, img);\n parseAttributes(xmlNode, img, this._defs);\n img.setStyle({\n image: xmlNode.getAttribute('xlink:href'),\n x: xmlNode.getAttribute('x'),\n y: xmlNode.getAttribute('y'),\n width: xmlNode.getAttribute('width'),\n height: xmlNode.getAttribute('height')\n });\n return img;\n },\n 'text': function (xmlNode, parentGroup) {\n var x = xmlNode.getAttribute('x') || 0;\n var y = xmlNode.getAttribute('y') || 0;\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n this._textX = parseFloat(x) + parseFloat(dx);\n this._textY = parseFloat(y) + parseFloat(dy);\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n return g;\n },\n 'tspan': function (xmlNode, parentGroup) {\n var x = xmlNode.getAttribute('x');\n var y = xmlNode.getAttribute('y');\n\n if (x != null) {\n // new offset x\n this._textX = parseFloat(x);\n }\n\n if (y != null) {\n // new offset y\n this._textY = parseFloat(y);\n }\n\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n this._textX += dx;\n this._textY += dy;\n return g;\n },\n 'path': function (xmlNode, parentGroup) {\n // TODO svg fill rule\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-rule\n // path.style.globalCompositeOperation = 'xor';\n var d = xmlNode.getAttribute('d') || ''; // Performance sensitive.\n\n var path = createFromString(d);\n inheritStyle(parentGroup, path);\n parseAttributes(xmlNode, path, this._defs);\n return path;\n }\n};\nvar defineParsers = {\n 'lineargradient': function (xmlNode) {\n var x1 = parseInt(xmlNode.getAttribute('x1') || 0, 10);\n var y1 = parseInt(xmlNode.getAttribute('y1') || 0, 10);\n var x2 = parseInt(xmlNode.getAttribute('x2') || 10, 10);\n var y2 = parseInt(xmlNode.getAttribute('y2') || 0, 10);\n var gradient = new LinearGradient(x1, y1, x2, y2);\n\n _parseGradientColorStops(xmlNode, gradient);\n\n return gradient;\n },\n 'radialgradient': function (xmlNode) {}\n};\n\nfunction _parseGradientColorStops(xmlNode, gradient) {\n var stop = xmlNode.firstChild;\n\n while (stop) {\n if (stop.nodeType === 1) {\n var offset = stop.getAttribute('offset');\n\n if (offset.indexOf('%') > 0) {\n // percentage\n offset = parseInt(offset, 10) / 100;\n } else if (offset) {\n // number from 0 to 1\n offset = parseFloat(offset);\n } else {\n offset = 0;\n }\n\n var stopColor = stop.getAttribute('stop-color') || '#000000';\n gradient.addColorStop(offset, stopColor);\n }\n\n stop = stop.nextSibling;\n }\n}\n\nfunction inheritStyle(parent, child) {\n if (parent && parent.__inheritedStyle) {\n if (!child.__inheritedStyle) {\n child.__inheritedStyle = {};\n }\n\n defaults(child.__inheritedStyle, parent.__inheritedStyle);\n }\n}\n\nfunction parsePoints(pointsString) {\n var list = trim(pointsString).split(DILIMITER_REG);\n var points = [];\n\n for (var i = 0; i < list.length; i += 2) {\n var x = parseFloat(list[i]);\n var y = parseFloat(list[i + 1]);\n points.push([x, y]);\n }\n\n return points;\n}\n\nvar attributesMap = {\n 'fill': 'fill',\n 'stroke': 'stroke',\n 'stroke-width': 'lineWidth',\n 'opacity': 'opacity',\n 'fill-opacity': 'fillOpacity',\n 'stroke-opacity': 'strokeOpacity',\n 'stroke-dasharray': 'lineDash',\n 'stroke-dashoffset': 'lineDashOffset',\n 'stroke-linecap': 'lineCap',\n 'stroke-linejoin': 'lineJoin',\n 'stroke-miterlimit': 'miterLimit',\n 'font-family': 'fontFamily',\n 'font-size': 'fontSize',\n 'font-style': 'fontStyle',\n 'font-weight': 'fontWeight',\n 'text-align': 'textAlign',\n 'alignment-baseline': 'textBaseline'\n};\n\nfunction parseAttributes(xmlNode, el, defs, onlyInlineStyle) {\n var zrStyle = el.__inheritedStyle || {};\n var isTextEl = el.type === 'text'; // TODO Shadow\n\n if (xmlNode.nodeType === 1) {\n parseTransformAttribute(xmlNode, el);\n extend(zrStyle, parseStyleAttribute(xmlNode));\n\n if (!onlyInlineStyle) {\n for (var svgAttrName in attributesMap) {\n if (attributesMap.hasOwnProperty(svgAttrName)) {\n var attrValue = xmlNode.getAttribute(svgAttrName);\n\n if (attrValue != null) {\n zrStyle[attributesMap[svgAttrName]] = attrValue;\n }\n }\n }\n }\n }\n\n var elFillProp = isTextEl ? 'textFill' : 'fill';\n var elStrokeProp = isTextEl ? 'textStroke' : 'stroke';\n el.style = el.style || new Style();\n var elStyle = el.style;\n zrStyle.fill != null && elStyle.set(elFillProp, getPaint(zrStyle.fill, defs));\n zrStyle.stroke != null && elStyle.set(elStrokeProp, getPaint(zrStyle.stroke, defs));\n each(['lineWidth', 'opacity', 'fillOpacity', 'strokeOpacity', 'miterLimit', 'fontSize'], function (propName) {\n var elPropName = propName === 'lineWidth' && isTextEl ? 'textStrokeWidth' : propName;\n zrStyle[propName] != null && elStyle.set(elPropName, parseFloat(zrStyle[propName]));\n });\n\n if (!zrStyle.textBaseline || zrStyle.textBaseline === 'auto') {\n zrStyle.textBaseline = 'alphabetic';\n }\n\n if (zrStyle.textBaseline === 'alphabetic') {\n zrStyle.textBaseline = 'bottom';\n }\n\n if (zrStyle.textAlign === 'start') {\n zrStyle.textAlign = 'left';\n }\n\n if (zrStyle.textAlign === 'end') {\n zrStyle.textAlign = 'right';\n }\n\n each(['lineDashOffset', 'lineCap', 'lineJoin', 'fontWeight', 'fontFamily', 'fontStyle', 'textAlign', 'textBaseline'], function (propName) {\n zrStyle[propName] != null && elStyle.set(propName, zrStyle[propName]);\n });\n\n if (zrStyle.lineDash) {\n el.style.lineDash = trim(zrStyle.lineDash).split(DILIMITER_REG);\n }\n\n if (elStyle[elStrokeProp] && elStyle[elStrokeProp] !== 'none') {\n // enable stroke\n el[elStrokeProp] = true;\n }\n\n el.__inheritedStyle = zrStyle;\n}\n\nvar urlRegex = /url\\(\\s*#(.*?)\\)/;\n\nfunction getPaint(str, defs) {\n // if (str === 'none') {\n // return;\n // }\n var urlMatch = defs && str && str.match(urlRegex);\n\n if (urlMatch) {\n var url = trim(urlMatch[1]);\n var def = defs[url];\n return def;\n }\n\n return str;\n}\n\nvar transformRegex = /(translate|scale|rotate|skewX|skewY|matrix)\\(([\\-\\s0-9\\.e,]*)\\)/g;\n\nfunction parseTransformAttribute(xmlNode, node) {\n var transform = xmlNode.getAttribute('transform');\n\n if (transform) {\n transform = transform.replace(/,/g, ' ');\n var m = null;\n var transformOps = [];\n transform.replace(transformRegex, function (str, type, value) {\n transformOps.push(type, value);\n });\n\n for (var i = transformOps.length - 1; i > 0; i -= 2) {\n var value = transformOps[i];\n var type = transformOps[i - 1];\n m = m || matrix.create();\n\n switch (type) {\n case 'translate':\n value = trim(value).split(DILIMITER_REG);\n matrix.translate(m, m, [parseFloat(value[0]), parseFloat(value[1] || 0)]);\n break;\n\n case 'scale':\n value = trim(value).split(DILIMITER_REG);\n matrix.scale(m, m, [parseFloat(value[0]), parseFloat(value[1] || value[0])]);\n break;\n\n case 'rotate':\n value = trim(value).split(DILIMITER_REG);\n matrix.rotate(m, m, parseFloat(value[0]));\n break;\n\n case 'skew':\n value = trim(value).split(DILIMITER_REG);\n console.warn('Skew transform is not supported yet');\n break;\n\n case 'matrix':\n var value = trim(value).split(DILIMITER_REG);\n m[0] = parseFloat(value[0]);\n m[1] = parseFloat(value[1]);\n m[2] = parseFloat(value[2]);\n m[3] = parseFloat(value[3]);\n m[4] = parseFloat(value[4]);\n m[5] = parseFloat(value[5]);\n break;\n }\n }\n\n node.setLocalTransform(m);\n }\n} // Value may contain space.\n\n\nvar styleRegex = /([^\\s:;]+)\\s*:\\s*([^:;]+)/g;\n\nfunction parseStyleAttribute(xmlNode) {\n var style = xmlNode.getAttribute('style');\n var result = {};\n\n if (!style) {\n return result;\n }\n\n var styleList = {};\n styleRegex.lastIndex = 0;\n var styleRegResult;\n\n while ((styleRegResult = styleRegex.exec(style)) != null) {\n styleList[styleRegResult[1]] = styleRegResult[2];\n }\n\n for (var svgAttrName in attributesMap) {\n if (attributesMap.hasOwnProperty(svgAttrName) && styleList[svgAttrName] != null) {\n result[attributesMap[svgAttrName]] = styleList[svgAttrName];\n }\n }\n\n return result;\n}\n/**\n * @param {Array.} viewBoxRect\n * @param {number} width\n * @param {number} height\n * @return {Object} {scale, position}\n */\n\n\nfunction makeViewBoxTransform(viewBoxRect, width, height) {\n var scaleX = width / viewBoxRect.width;\n var scaleY = height / viewBoxRect.height;\n var scale = Math.min(scaleX, scaleY); // preserveAspectRatio 'xMidYMid'\n\n var viewBoxScale = [scale, scale];\n var viewBoxPosition = [-(viewBoxRect.x + viewBoxRect.width / 2) * scale + width / 2, -(viewBoxRect.y + viewBoxRect.height / 2) * scale + height / 2];\n return {\n scale: viewBoxScale,\n position: viewBoxPosition\n };\n}\n/**\n * @param {string|XMLElement} xml\n * @param {Object} [opt]\n * @param {number} [opt.width] Default width if svg width not specified or is a percent value.\n * @param {number} [opt.height] Default height if svg height not specified or is a percent value.\n * @param {boolean} [opt.ignoreViewBox]\n * @param {boolean} [opt.ignoreRootClip]\n * @return {Object} result:\n * {\n * root: Group, The root of the the result tree of zrender shapes,\n * width: number, the viewport width of the SVG,\n * height: number, the viewport height of the SVG,\n * viewBoxRect: {x, y, width, height}, the declared viewBox rect of the SVG, if exists,\n * viewBoxTransform: the {scale, position} calculated by viewBox and viewport, is exists.\n * }\n */\n\n\nfunction parseSVG(xml, opt) {\n var parser = new SVGParser();\n return parser.parse(xml, opt);\n}\n\nexports.parseXML = parseXML;\nexports.makeViewBoxTransform = makeViewBoxTransform;\nexports.parseSVG = parseSVG;\n\n//# sourceURL=webpack:///./node_modules/zrender/lib/tool/parseSVG.js?"); + +/***/ }), + +/***/ "./node_modules/zrender/lib/tool/path.js": +/*!***********************************************!*\ + !*** ./node_modules/zrender/lib/tool/path.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var Path = __webpack_require__(/*! ../graphic/Path */ \"./node_modules/zrender/lib/graphic/Path.js\");\n\nvar PathProxy = __webpack_require__(/*! ../core/PathProxy */ \"./node_modules/zrender/lib/core/PathProxy.js\");\n\nvar transformPath = __webpack_require__(/*! ./transformPath */ \"./node_modules/zrender/lib/tool/transformPath.js\");\n\n// command chars\n// var cc = [\n// 'm', 'M', 'l', 'L', 'v', 'V', 'h', 'H', 'z', 'Z',\n// 'c', 'C', 'q', 'Q', 't', 'T', 's', 'S', 'a', 'A'\n// ];\nvar mathSqrt = Math.sqrt;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI = Math.PI;\n\nvar vMag = function (v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n};\n\nvar vRatio = function (u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\n};\n\nvar vAngle = function (u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n};\n\nfunction processArc(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg, cmd, path) {\n var psi = psiDeg * (PI / 180.0);\n var xp = mathCos(psi) * (x1 - x2) / 2.0 + mathSin(psi) * (y1 - y2) / 2.0;\n var yp = -1 * mathSin(psi) * (x1 - x2) / 2.0 + mathCos(psi) * (y1 - y2) / 2.0;\n var lambda = xp * xp / (rx * rx) + yp * yp / (ry * ry);\n\n if (lambda > 1) {\n rx *= mathSqrt(lambda);\n ry *= mathSqrt(lambda);\n }\n\n var f = (fa === fs ? -1 : 1) * mathSqrt((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) / (rx * rx * (yp * yp) + ry * ry * (xp * xp))) || 0;\n var cxp = f * rx * yp / ry;\n var cyp = f * -ry * xp / rx;\n var cx = (x1 + x2) / 2.0 + mathCos(psi) * cxp - mathSin(psi) * cyp;\n var cy = (y1 + y2) / 2.0 + mathSin(psi) * cxp + mathCos(psi) * cyp;\n var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n var dTheta = vAngle(u, v);\n\n if (vRatio(u, v) <= -1) {\n dTheta = PI;\n }\n\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n\n if (fs === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * PI;\n }\n\n if (fs === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * PI;\n }\n\n path.addData(cmd, cx, cy, rx, ry, theta, dTheta, psi, fs);\n}\n\nvar commandReg = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig; // Consider case:\n// (1) delimiter can be comma or space, where continuous commas\n// or spaces should be seen as one comma.\n// (2) value can be like:\n// '2e-4', 'l.5.9' (ignore 0), 'M-10-10', 'l-2.43e-1,34.9983',\n// 'l-.5E1,54', '121-23-44-11' (no delimiter)\n\nvar numberReg = /-?([0-9]*\\.)?[0-9]+([eE]-?[0-9]+)?/g; // var valueSplitReg = /[\\s,]+/;\n\nfunction createPathProxyFromString(data) {\n if (!data) {\n return new PathProxy();\n } // var data = data.replace(/-/g, ' -')\n // .replace(/ /g, ' ')\n // .replace(/ /g, ',')\n // .replace(/,,/g, ',');\n // var n;\n // create pipes so that we can split the data\n // for (n = 0; n < cc.length; n++) {\n // cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]);\n // }\n // data = data.replace(/-/g, ',-');\n // create array\n // var arr = cs.split('|');\n // init context point\n\n\n var cpx = 0;\n var cpy = 0;\n var subpathX = cpx;\n var subpathY = cpy;\n var prevCmd;\n var path = new PathProxy();\n var CMD = PathProxy.CMD; // commandReg.lastIndex = 0;\n // var cmdResult;\n // while ((cmdResult = commandReg.exec(data)) != null) {\n // var cmdStr = cmdResult[1];\n // var cmdContent = cmdResult[2];\n\n var cmdList = data.match(commandReg);\n\n for (var l = 0; l < cmdList.length; l++) {\n var cmdText = cmdList[l];\n var cmdStr = cmdText.charAt(0);\n var cmd; // String#split is faster a little bit than String#replace or RegExp#exec.\n // var p = cmdContent.split(valueSplitReg);\n // var pLen = 0;\n // for (var i = 0; i < p.length; i++) {\n // // '' and other invalid str => NaN\n // var val = parseFloat(p[i]);\n // !isNaN(val) && (p[pLen++] = val);\n // }\n\n var p = cmdText.match(numberReg) || [];\n var pLen = p.length;\n\n for (var i = 0; i < pLen; i++) {\n p[i] = parseFloat(p[i]);\n }\n\n var off = 0;\n\n while (off < pLen) {\n var ctlPtx;\n var ctlPty;\n var rx;\n var ry;\n var psi;\n var fa;\n var fs;\n var x1 = cpx;\n var y1 = cpy; // convert l, H, h, V, and v to L\n\n switch (cmdStr) {\n case 'l':\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'L':\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'm':\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.M;\n path.addData(cmd, cpx, cpy);\n subpathX = cpx;\n subpathY = cpy;\n cmdStr = 'l';\n break;\n\n case 'M':\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.M;\n path.addData(cmd, cpx, cpy);\n subpathX = cpx;\n subpathY = cpy;\n cmdStr = 'L';\n break;\n\n case 'h':\n cpx += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'H':\n cpx = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'v':\n cpy += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'V':\n cpy = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'C':\n cmd = CMD.C;\n path.addData(cmd, p[off++], p[off++], p[off++], p[off++], p[off++], p[off++]);\n cpx = p[off - 2];\n cpy = p[off - 1];\n break;\n\n case 'c':\n cmd = CMD.C;\n path.addData(cmd, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy);\n cpx += p[off - 2];\n cpy += p[off - 1];\n break;\n\n case 'S':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.C) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cmd = CMD.C;\n x1 = p[off++];\n y1 = p[off++];\n cpx = p[off++];\n cpy = p[off++];\n path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\n break;\n\n case 's':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.C) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cmd = CMD.C;\n x1 = cpx + p[off++];\n y1 = cpy + p[off++];\n cpx += p[off++];\n cpy += p[off++];\n path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\n break;\n\n case 'Q':\n x1 = p[off++];\n y1 = p[off++];\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.Q;\n path.addData(cmd, x1, y1, cpx, cpy);\n break;\n\n case 'q':\n x1 = p[off++] + cpx;\n y1 = p[off++] + cpy;\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.Q;\n path.addData(cmd, x1, y1, cpx, cpy);\n break;\n\n case 'T':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.Q) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.Q;\n path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\n break;\n\n case 't':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.Q) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.Q;\n path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\n break;\n\n case 'A':\n rx = p[off++];\n ry = p[off++];\n psi = p[off++];\n fa = p[off++];\n fs = p[off++];\n x1 = cpx, y1 = cpy;\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.A;\n processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\n break;\n\n case 'a':\n rx = p[off++];\n ry = p[off++];\n psi = p[off++];\n fa = p[off++];\n fs = p[off++];\n x1 = cpx, y1 = cpy;\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.A;\n processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\n break;\n }\n }\n\n if (cmdStr === 'z' || cmdStr === 'Z') {\n cmd = CMD.Z;\n path.addData(cmd); // z may be in the middle of the path.\n\n cpx = subpathX;\n cpy = subpathY;\n }\n\n prevCmd = cmd;\n }\n\n path.toStatic();\n return path;\n} // TODO Optimize double memory cost problem\n\n\nfunction createPathOptions(str, opts) {\n var pathProxy = createPathProxyFromString(str);\n opts = opts || {};\n\n opts.buildPath = function (path) {\n if (path.setData) {\n path.setData(pathProxy.data); // Svg and vml renderer don't have context\n\n var ctx = path.getContext();\n\n if (ctx) {\n path.rebuildPath(ctx);\n }\n } else {\n var ctx = path;\n pathProxy.rebuildPath(ctx);\n }\n };\n\n opts.applyTransform = function (m) {\n transformPath(pathProxy, m);\n this.dirty(true);\n };\n\n return opts;\n}\n/**\n * Create a Path object from path string data\n * http://www.w3.org/TR/SVG/paths.html#PathData\n * @param {Object} opts Other options\n */\n\n\nfunction createFromString(str, opts) {\n return new Path(createPathOptions(str, opts));\n}\n/**\n * Create a Path class from path string data\n * @param {string} str\n * @param {Object} opts Other options\n */\n\n\nfunction extendFromString(str, opts) {\n return Path.extend(createPathOptions(str, opts));\n}\n/**\n * Merge multiple paths\n */\n// TODO Apply transform\n// TODO stroke dash\n// TODO Optimize double memory cost problem\n\n\nfunction mergePath(pathEls, opts) {\n var pathList = [];\n var len = pathEls.length;\n\n for (var i = 0; i < len; i++) {\n var pathEl = pathEls[i];\n\n if (!pathEl.path) {\n pathEl.createPathProxy();\n }\n\n if (pathEl.__dirtyPath) {\n pathEl.buildPath(pathEl.path, pathEl.shape, true);\n }\n\n pathList.push(pathEl.path);\n }\n\n var pathBundle = new Path(opts); // Need path proxy.\n\n pathBundle.createPathProxy();\n\n pathBundle.buildPath = function (path) {\n path.appendPath(pathList); // Svg and vml renderer don't have context\n\n var ctx = path.getContext();\n\n if (ctx) {\n path.rebuildPath(ctx);\n }\n };\n\n return pathBundle;\n}\n\nexports.createFromString = createFromString;\nexports.extendFromString = extendFromString;\nexports.mergePath = mergePath;\n\n//# sourceURL=webpack:///./node_modules/zrender/lib/tool/path.js?"); + +/***/ }), + +/***/ "./node_modules/zrender/lib/tool/transformPath.js": +/*!********************************************************!*\ + !*** ./node_modules/zrender/lib/tool/transformPath.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var PathProxy = __webpack_require__(/*! ../core/PathProxy */ \"./node_modules/zrender/lib/core/PathProxy.js\");\n\nvar _vector = __webpack_require__(/*! ../core/vector */ \"./node_modules/zrender/lib/core/vector.js\");\n\nvar v2ApplyTransform = _vector.applyTransform;\nvar CMD = PathProxy.CMD;\nvar points = [[], [], []];\nvar mathSqrt = Math.sqrt;\nvar mathAtan2 = Math.atan2;\n\nfunction _default(path, m) {\n var data = path.data;\n var cmd;\n var nPoint;\n var i;\n var j;\n var k;\n var p;\n var M = CMD.M;\n var C = CMD.C;\n var L = CMD.L;\n var R = CMD.R;\n var A = CMD.A;\n var Q = CMD.Q;\n\n for (i = 0, j = 0; i < data.length;) {\n cmd = data[i++];\n j = i;\n nPoint = 0;\n\n switch (cmd) {\n case M:\n nPoint = 1;\n break;\n\n case L:\n nPoint = 1;\n break;\n\n case C:\n nPoint = 3;\n break;\n\n case Q:\n nPoint = 2;\n break;\n\n case A:\n var x = m[4];\n var y = m[5];\n var sx = mathSqrt(m[0] * m[0] + m[1] * m[1]);\n var sy = mathSqrt(m[2] * m[2] + m[3] * m[3]);\n var angle = mathAtan2(-m[1] / sy, m[0] / sx); // cx\n\n data[i] *= sx;\n data[i++] += x; // cy\n\n data[i] *= sy;\n data[i++] += y; // Scale rx and ry\n // FIXME Assume psi is 0 here\n\n data[i++] *= sx;\n data[i++] *= sy; // Start angle\n\n data[i++] += angle; // end angle\n\n data[i++] += angle; // FIXME psi\n\n i += 2;\n j = i;\n break;\n\n case R:\n // x0, y0\n p[0] = data[i++];\n p[1] = data[i++];\n v2ApplyTransform(p, p, m);\n data[j++] = p[0];\n data[j++] = p[1]; // x1, y1\n\n p[0] += data[i++];\n p[1] += data[i++];\n v2ApplyTransform(p, p, m);\n data[j++] = p[0];\n data[j++] = p[1];\n }\n\n for (k = 0; k < nPoint; k++) {\n var p = points[k];\n p[0] = data[i++];\n p[1] = data[i++];\n v2ApplyTransform(p, p, m); // Write back\n\n data[j++] = p[0];\n data[j++] = p[1];\n }\n }\n}\n\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/zrender/lib/tool/transformPath.js?"); + +/***/ }), + +/***/ "./node_modules/zrender/lib/vml/Painter.js": +/*!*************************************************!*\ + !*** ./node_modules/zrender/lib/vml/Painter.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var logError = __webpack_require__(/*! ../core/log */ \"./node_modules/zrender/lib/core/log.js\");\n\nvar vmlCore = __webpack_require__(/*! ./core */ \"./node_modules/zrender/lib/vml/core.js\");\n\nvar _util = __webpack_require__(/*! ../core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar each = _util.each;\n\n/**\n * VML Painter.\n *\n * @module zrender/vml/Painter\n */\nfunction parseInt10(val) {\n return parseInt(val, 10);\n}\n/**\n * @alias module:zrender/vml/Painter\n */\n\n\nfunction VMLPainter(root, storage) {\n vmlCore.initVML();\n this.root = root;\n this.storage = storage;\n var vmlViewport = document.createElement('div');\n var vmlRoot = document.createElement('div');\n vmlViewport.style.cssText = 'display:inline-block;overflow:hidden;position:relative;width:300px;height:150px;';\n vmlRoot.style.cssText = 'position:absolute;left:0;top:0;';\n root.appendChild(vmlViewport);\n this._vmlRoot = vmlRoot;\n this._vmlViewport = vmlViewport;\n this.resize(); // Modify storage\n\n var oldDelFromStorage = storage.delFromStorage;\n var oldAddToStorage = storage.addToStorage;\n\n storage.delFromStorage = function (el) {\n oldDelFromStorage.call(storage, el);\n\n if (el) {\n el.onRemove && el.onRemove(vmlRoot);\n }\n };\n\n storage.addToStorage = function (el) {\n // Displayable already has a vml node\n el.onAdd && el.onAdd(vmlRoot);\n oldAddToStorage.call(storage, el);\n };\n\n this._firstPaint = true;\n}\n\nVMLPainter.prototype = {\n constructor: VMLPainter,\n getType: function () {\n return 'vml';\n },\n\n /**\n * @return {HTMLDivElement}\n */\n getViewportRoot: function () {\n return this._vmlViewport;\n },\n getViewportRootOffset: function () {\n var viewportRoot = this.getViewportRoot();\n\n if (viewportRoot) {\n return {\n offsetLeft: viewportRoot.offsetLeft || 0,\n offsetTop: viewportRoot.offsetTop || 0\n };\n }\n },\n\n /**\n * 刷新\n */\n refresh: function () {\n var list = this.storage.getDisplayList(true, true);\n\n this._paintList(list);\n },\n _paintList: function (list) {\n var vmlRoot = this._vmlRoot;\n\n for (var i = 0; i < list.length; i++) {\n var el = list[i];\n\n if (el.invisible || el.ignore) {\n if (!el.__alreadyNotVisible) {\n el.onRemove(vmlRoot);\n } // Set as already invisible\n\n\n el.__alreadyNotVisible = true;\n } else {\n if (el.__alreadyNotVisible) {\n el.onAdd(vmlRoot);\n }\n\n el.__alreadyNotVisible = false;\n\n if (el.__dirty) {\n el.beforeBrush && el.beforeBrush();\n (el.brushVML || el.brush).call(el, vmlRoot);\n el.afterBrush && el.afterBrush();\n }\n }\n\n el.__dirty = false;\n }\n\n if (this._firstPaint) {\n // Detached from document at first time\n // to avoid page refreshing too many times\n // FIXME 如果每次都先 removeChild 可能会导致一些填充和描边的效果改变\n this._vmlViewport.appendChild(vmlRoot);\n\n this._firstPaint = false;\n }\n },\n resize: function (width, height) {\n var width = width == null ? this._getWidth() : width;\n var height = height == null ? this._getHeight() : height;\n\n if (this._width !== width || this._height !== height) {\n this._width = width;\n this._height = height;\n var vmlViewportStyle = this._vmlViewport.style;\n vmlViewportStyle.width = width + 'px';\n vmlViewportStyle.height = height + 'px';\n }\n },\n dispose: function () {\n this.root.innerHTML = '';\n this._vmlRoot = this._vmlViewport = this.storage = null;\n },\n getWidth: function () {\n return this._width;\n },\n getHeight: function () {\n return this._height;\n },\n clear: function () {\n if (this._vmlViewport) {\n this.root.removeChild(this._vmlViewport);\n }\n },\n _getWidth: function () {\n var root = this.root;\n var stl = root.currentStyle;\n return (root.clientWidth || parseInt10(stl.width)) - parseInt10(stl.paddingLeft) - parseInt10(stl.paddingRight) | 0;\n },\n _getHeight: function () {\n var root = this.root;\n var stl = root.currentStyle;\n return (root.clientHeight || parseInt10(stl.height)) - parseInt10(stl.paddingTop) - parseInt10(stl.paddingBottom) | 0;\n }\n}; // Not supported methods\n\nfunction createMethodNotSupport(method) {\n return function () {\n logError('In IE8.0 VML mode painter not support method \"' + method + '\"');\n };\n} // Unsupported methods\n\n\neach(['getLayer', 'insertLayer', 'eachLayer', 'eachBuiltinLayer', 'eachOtherLayer', 'getLayers', 'modLayer', 'delLayer', 'clearLayer', 'toDataURL', 'pathToImage'], function (name) {\n VMLPainter.prototype[name] = createMethodNotSupport(name);\n});\nvar _default = VMLPainter;\nmodule.exports = _default;\n\n//# sourceURL=webpack:///./node_modules/zrender/lib/vml/Painter.js?"); + +/***/ }), + +/***/ "./node_modules/zrender/lib/vml/core.js": +/*!**********************************************!*\ + !*** ./node_modules/zrender/lib/vml/core.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var env = __webpack_require__(/*! ../core/env */ \"./node_modules/zrender/lib/core/env.js\");\n\nvar urn = 'urn:schemas-microsoft-com:vml';\nvar win = typeof window === 'undefined' ? null : window;\nvar vmlInited = false;\nvar doc = win && win.document;\n\nfunction createNode(tagName) {\n return doCreateNode(tagName);\n} // Avoid assign to an exported variable, for transforming to cjs.\n\n\nvar doCreateNode;\n\nif (doc && !env.canvasSupported) {\n try {\n !doc.namespaces.zrvml && doc.namespaces.add('zrvml', urn);\n\n doCreateNode = function (tagName) {\n return doc.createElement('');\n };\n } catch (e) {\n doCreateNode = function (tagName) {\n return doc.createElement('<' + tagName + ' xmlns=\"' + urn + '\" class=\"zrvml\">');\n };\n }\n} // From raphael\n\n\nfunction initVML() {\n if (vmlInited || !doc) {\n return;\n }\n\n vmlInited = true;\n var styleSheets = doc.styleSheets;\n\n if (styleSheets.length < 31) {\n doc.createStyleSheet().addRule('.zrvml', 'behavior:url(#default#VML)');\n } else {\n // http://msdn.microsoft.com/en-us/library/ms531194%28VS.85%29.aspx\n styleSheets[0].addRule('.zrvml', 'behavior:url(#default#VML)');\n }\n}\n\nexports.doc = doc;\nexports.createNode = createNode;\nexports.initVML = initVML;\n\n//# sourceURL=webpack:///./node_modules/zrender/lib/vml/core.js?"); + +/***/ }), + +/***/ "./node_modules/zrender/lib/vml/graphic.js": +/*!*************************************************!*\ + !*** ./node_modules/zrender/lib/vml/graphic.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var env = __webpack_require__(/*! ../core/env */ \"./node_modules/zrender/lib/core/env.js\");\n\nvar _vector = __webpack_require__(/*! ../core/vector */ \"./node_modules/zrender/lib/core/vector.js\");\n\nvar applyTransform = _vector.applyTransform;\n\nvar BoundingRect = __webpack_require__(/*! ../core/BoundingRect */ \"./node_modules/zrender/lib/core/BoundingRect.js\");\n\nvar colorTool = __webpack_require__(/*! ../tool/color */ \"./node_modules/zrender/lib/tool/color.js\");\n\nvar textContain = __webpack_require__(/*! ../contain/text */ \"./node_modules/zrender/lib/contain/text.js\");\n\nvar textHelper = __webpack_require__(/*! ../graphic/helper/text */ \"./node_modules/zrender/lib/graphic/helper/text.js\");\n\nvar RectText = __webpack_require__(/*! ../graphic/mixin/RectText */ \"./node_modules/zrender/lib/graphic/mixin/RectText.js\");\n\nvar Displayable = __webpack_require__(/*! ../graphic/Displayable */ \"./node_modules/zrender/lib/graphic/Displayable.js\");\n\nvar ZImage = __webpack_require__(/*! ../graphic/Image */ \"./node_modules/zrender/lib/graphic/Image.js\");\n\nvar Text = __webpack_require__(/*! ../graphic/Text */ \"./node_modules/zrender/lib/graphic/Text.js\");\n\nvar Path = __webpack_require__(/*! ../graphic/Path */ \"./node_modules/zrender/lib/graphic/Path.js\");\n\nvar PathProxy = __webpack_require__(/*! ../core/PathProxy */ \"./node_modules/zrender/lib/core/PathProxy.js\");\n\nvar Gradient = __webpack_require__(/*! ../graphic/Gradient */ \"./node_modules/zrender/lib/graphic/Gradient.js\");\n\nvar vmlCore = __webpack_require__(/*! ./core */ \"./node_modules/zrender/lib/vml/core.js\");\n\n// http://www.w3.org/TR/NOTE-VML\n// TODO Use proxy like svg instead of overwrite brush methods\nvar CMD = PathProxy.CMD;\nvar round = Math.round;\nvar sqrt = Math.sqrt;\nvar abs = Math.abs;\nvar cos = Math.cos;\nvar sin = Math.sin;\nvar mathMax = Math.max;\n\nif (!env.canvasSupported) {\n var comma = ',';\n var imageTransformPrefix = 'progid:DXImageTransform.Microsoft';\n var Z = 21600;\n var Z2 = Z / 2;\n var ZLEVEL_BASE = 100000;\n var Z_BASE = 1000;\n\n var initRootElStyle = function (el) {\n el.style.cssText = 'position:absolute;left:0;top:0;width:1px;height:1px;';\n el.coordsize = Z + ',' + Z;\n el.coordorigin = '0,0';\n };\n\n var encodeHtmlAttribute = function (s) {\n return String(s).replace(/&/g, '&').replace(/\"/g, '"');\n };\n\n var rgb2Str = function (r, g, b) {\n return 'rgb(' + [r, g, b].join(',') + ')';\n };\n\n var append = function (parent, child) {\n if (child && parent && child.parentNode !== parent) {\n parent.appendChild(child);\n }\n };\n\n var remove = function (parent, child) {\n if (child && parent && child.parentNode === parent) {\n parent.removeChild(child);\n }\n };\n\n var getZIndex = function (zlevel, z, z2) {\n // z 的取值范围为 [0, 1000]\n return (parseFloat(zlevel) || 0) * ZLEVEL_BASE + (parseFloat(z) || 0) * Z_BASE + z2;\n };\n\n var parsePercent = textHelper.parsePercent;\n /***************************************************\n * PATH\n **************************************************/\n\n var setColorAndOpacity = function (el, color, opacity) {\n var colorArr = colorTool.parse(color);\n opacity = +opacity;\n\n if (isNaN(opacity)) {\n opacity = 1;\n }\n\n if (colorArr) {\n el.color = rgb2Str(colorArr[0], colorArr[1], colorArr[2]);\n el.opacity = opacity * colorArr[3];\n }\n };\n\n var getColorAndAlpha = function (color) {\n var colorArr = colorTool.parse(color);\n return [rgb2Str(colorArr[0], colorArr[1], colorArr[2]), colorArr[3]];\n };\n\n var updateFillNode = function (el, style, zrEl) {\n // TODO pattern\n var fill = style.fill;\n\n if (fill != null) {\n // Modified from excanvas\n if (fill instanceof Gradient) {\n var gradientType;\n var angle = 0;\n var focus = [0, 0]; // additional offset\n\n var shift = 0; // scale factor for offset\n\n var expansion = 1;\n var rect = zrEl.getBoundingRect();\n var rectWidth = rect.width;\n var rectHeight = rect.height;\n\n if (fill.type === 'linear') {\n gradientType = 'gradient';\n var transform = zrEl.transform;\n var p0 = [fill.x * rectWidth, fill.y * rectHeight];\n var p1 = [fill.x2 * rectWidth, fill.y2 * rectHeight];\n\n if (transform) {\n applyTransform(p0, p0, transform);\n applyTransform(p1, p1, transform);\n }\n\n var dx = p1[0] - p0[0];\n var dy = p1[1] - p0[1];\n angle = Math.atan2(dx, dy) * 180 / Math.PI; // The angle should be a non-negative number.\n\n if (angle < 0) {\n angle += 360;\n } // Very small angles produce an unexpected result because they are\n // converted to a scientific notation string.\n\n\n if (angle < 1e-6) {\n angle = 0;\n }\n } else {\n gradientType = 'gradientradial';\n var p0 = [fill.x * rectWidth, fill.y * rectHeight];\n var transform = zrEl.transform;\n var scale = zrEl.scale;\n var width = rectWidth;\n var height = rectHeight;\n focus = [// Percent in bounding rect\n (p0[0] - rect.x) / width, (p0[1] - rect.y) / height];\n\n if (transform) {\n applyTransform(p0, p0, transform);\n }\n\n width /= scale[0] * Z;\n height /= scale[1] * Z;\n var dimension = mathMax(width, height);\n shift = 2 * 0 / dimension;\n expansion = 2 * fill.r / dimension - shift;\n } // We need to sort the color stops in ascending order by offset,\n // otherwise IE won't interpret it correctly.\n\n\n var stops = fill.colorStops.slice();\n stops.sort(function (cs1, cs2) {\n return cs1.offset - cs2.offset;\n });\n var length = stops.length; // Color and alpha list of first and last stop\n\n var colorAndAlphaList = [];\n var colors = [];\n\n for (var i = 0; i < length; i++) {\n var stop = stops[i];\n var colorAndAlpha = getColorAndAlpha(stop.color);\n colors.push(stop.offset * expansion + shift + ' ' + colorAndAlpha[0]);\n\n if (i === 0 || i === length - 1) {\n colorAndAlphaList.push(colorAndAlpha);\n }\n }\n\n if (length >= 2) {\n var color1 = colorAndAlphaList[0][0];\n var color2 = colorAndAlphaList[1][0];\n var opacity1 = colorAndAlphaList[0][1] * style.opacity;\n var opacity2 = colorAndAlphaList[1][1] * style.opacity;\n el.type = gradientType;\n el.method = 'none';\n el.focus = '100%';\n el.angle = angle;\n el.color = color1;\n el.color2 = color2;\n el.colors = colors.join(','); // When colors attribute is used, the meanings of opacity and o:opacity2\n // are reversed.\n\n el.opacity = opacity2; // FIXME g_o_:opacity ?\n\n el.opacity2 = opacity1;\n }\n\n if (gradientType === 'radial') {\n el.focusposition = focus.join(',');\n }\n } else {\n // FIXME Change from Gradient fill to color fill\n setColorAndOpacity(el, fill, style.opacity);\n }\n }\n };\n\n var updateStrokeNode = function (el, style) {\n // if (style.lineJoin != null) {\n // el.joinstyle = style.lineJoin;\n // }\n // if (style.miterLimit != null) {\n // el.miterlimit = style.miterLimit * Z;\n // }\n // if (style.lineCap != null) {\n // el.endcap = style.lineCap;\n // }\n if (style.lineDash) {\n el.dashstyle = style.lineDash.join(' ');\n }\n\n if (style.stroke != null && !(style.stroke instanceof Gradient)) {\n setColorAndOpacity(el, style.stroke, style.opacity);\n }\n };\n\n var updateFillAndStroke = function (vmlEl, type, style, zrEl) {\n var isFill = type === 'fill';\n var el = vmlEl.getElementsByTagName(type)[0]; // Stroke must have lineWidth\n\n if (style[type] != null && style[type] !== 'none' && (isFill || !isFill && style.lineWidth)) {\n vmlEl[isFill ? 'filled' : 'stroked'] = 'true'; // FIXME Remove before updating, or set `colors` will throw error\n\n if (style[type] instanceof Gradient) {\n remove(vmlEl, el);\n }\n\n if (!el) {\n el = vmlCore.createNode(type);\n }\n\n isFill ? updateFillNode(el, style, zrEl) : updateStrokeNode(el, style);\n append(vmlEl, el);\n } else {\n vmlEl[isFill ? 'filled' : 'stroked'] = 'false';\n remove(vmlEl, el);\n }\n };\n\n var points = [[], [], []];\n\n var pathDataToString = function (path, m) {\n var M = CMD.M;\n var C = CMD.C;\n var L = CMD.L;\n var A = CMD.A;\n var Q = CMD.Q;\n var str = [];\n var nPoint;\n var cmdStr;\n var cmd;\n var i;\n var xi;\n var yi;\n var data = path.data;\n var dataLength = path.len();\n\n for (i = 0; i < dataLength;) {\n cmd = data[i++];\n cmdStr = '';\n nPoint = 0;\n\n switch (cmd) {\n case M:\n cmdStr = ' m ';\n nPoint = 1;\n xi = data[i++];\n yi = data[i++];\n points[0][0] = xi;\n points[0][1] = yi;\n break;\n\n case L:\n cmdStr = ' l ';\n nPoint = 1;\n xi = data[i++];\n yi = data[i++];\n points[0][0] = xi;\n points[0][1] = yi;\n break;\n\n case Q:\n case C:\n cmdStr = ' c ';\n nPoint = 3;\n var x1 = data[i++];\n var y1 = data[i++];\n var x2 = data[i++];\n var y2 = data[i++];\n var x3;\n var y3;\n\n if (cmd === Q) {\n // Convert quadratic to cubic using degree elevation\n x3 = x2;\n y3 = y2;\n x2 = (x2 + 2 * x1) / 3;\n y2 = (y2 + 2 * y1) / 3;\n x1 = (xi + 2 * x1) / 3;\n y1 = (yi + 2 * y1) / 3;\n } else {\n x3 = data[i++];\n y3 = data[i++];\n }\n\n points[0][0] = x1;\n points[0][1] = y1;\n points[1][0] = x2;\n points[1][1] = y2;\n points[2][0] = x3;\n points[2][1] = y3;\n xi = x3;\n yi = y3;\n break;\n\n case A:\n var x = 0;\n var y = 0;\n var sx = 1;\n var sy = 1;\n var angle = 0;\n\n if (m) {\n // Extract SRT from matrix\n x = m[4];\n y = m[5];\n sx = sqrt(m[0] * m[0] + m[1] * m[1]);\n sy = sqrt(m[2] * m[2] + m[3] * m[3]);\n angle = Math.atan2(-m[1] / sy, m[0] / sx);\n }\n\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var startAngle = data[i++] + angle;\n var endAngle = data[i++] + startAngle + angle; // FIXME\n // var psi = data[i++];\n\n i++;\n var clockwise = data[i++];\n var x0 = cx + cos(startAngle) * rx;\n var y0 = cy + sin(startAngle) * ry;\n var x1 = cx + cos(endAngle) * rx;\n var y1 = cy + sin(endAngle) * ry;\n var type = clockwise ? ' wa ' : ' at ';\n\n if (Math.abs(x0 - x1) < 1e-4) {\n // IE won't render arches drawn counter clockwise if x0 == x1.\n if (Math.abs(endAngle - startAngle) > 1e-2) {\n // Offset x0 by 1/80 of a pixel. Use something\n // that can be represented in binary\n if (clockwise) {\n x0 += 270 / Z;\n }\n } else {\n // Avoid case draw full circle\n if (Math.abs(y0 - cy) < 1e-4) {\n if (clockwise && x0 < cx || !clockwise && x0 > cx) {\n y1 -= 270 / Z;\n } else {\n y1 += 270 / Z;\n }\n } else if (clockwise && y0 < cy || !clockwise && y0 > cy) {\n x1 += 270 / Z;\n } else {\n x1 -= 270 / Z;\n }\n }\n }\n\n str.push(type, round(((cx - rx) * sx + x) * Z - Z2), comma, round(((cy - ry) * sy + y) * Z - Z2), comma, round(((cx + rx) * sx + x) * Z - Z2), comma, round(((cy + ry) * sy + y) * Z - Z2), comma, round((x0 * sx + x) * Z - Z2), comma, round((y0 * sy + y) * Z - Z2), comma, round((x1 * sx + x) * Z - Z2), comma, round((y1 * sy + y) * Z - Z2));\n xi = x1;\n yi = y1;\n break;\n\n case CMD.R:\n var p0 = points[0];\n var p1 = points[1]; // x0, y0\n\n p0[0] = data[i++];\n p0[1] = data[i++]; // x1, y1\n\n p1[0] = p0[0] + data[i++];\n p1[1] = p0[1] + data[i++];\n\n if (m) {\n applyTransform(p0, p0, m);\n applyTransform(p1, p1, m);\n }\n\n p0[0] = round(p0[0] * Z - Z2);\n p1[0] = round(p1[0] * Z - Z2);\n p0[1] = round(p0[1] * Z - Z2);\n p1[1] = round(p1[1] * Z - Z2);\n str.push( // x0, y0\n ' m ', p0[0], comma, p0[1], // x1, y0\n ' l ', p1[0], comma, p0[1], // x1, y1\n ' l ', p1[0], comma, p1[1], // x0, y1\n ' l ', p0[0], comma, p1[1]);\n break;\n\n case CMD.Z:\n // FIXME Update xi, yi\n str.push(' x ');\n }\n\n if (nPoint > 0) {\n str.push(cmdStr);\n\n for (var k = 0; k < nPoint; k++) {\n var p = points[k];\n m && applyTransform(p, p, m); // 不 round 会非常慢\n\n str.push(round(p[0] * Z - Z2), comma, round(p[1] * Z - Z2), k < nPoint - 1 ? comma : '');\n }\n }\n }\n\n return str.join('');\n }; // Rewrite the original path method\n\n\n Path.prototype.brushVML = function (vmlRoot) {\n var style = this.style;\n var vmlEl = this._vmlEl;\n\n if (!vmlEl) {\n vmlEl = vmlCore.createNode('shape');\n initRootElStyle(vmlEl);\n this._vmlEl = vmlEl;\n }\n\n updateFillAndStroke(vmlEl, 'fill', style, this);\n updateFillAndStroke(vmlEl, 'stroke', style, this);\n var m = this.transform;\n var needTransform = m != null;\n var strokeEl = vmlEl.getElementsByTagName('stroke')[0];\n\n if (strokeEl) {\n var lineWidth = style.lineWidth; // Get the line scale.\n // Determinant of this.m_ means how much the area is enlarged by the\n // transformation. So its square root can be used as a scale factor\n // for width.\n\n if (needTransform && !style.strokeNoScale) {\n var det = m[0] * m[3] - m[1] * m[2];\n lineWidth *= sqrt(abs(det));\n }\n\n strokeEl.weight = lineWidth + 'px';\n }\n\n var path = this.path || (this.path = new PathProxy());\n\n if (this.__dirtyPath) {\n path.beginPath();\n path.subPixelOptimize = false;\n this.buildPath(path, this.shape);\n path.toStatic();\n this.__dirtyPath = false;\n }\n\n vmlEl.path = pathDataToString(path, this.transform);\n vmlEl.style.zIndex = getZIndex(this.zlevel, this.z, this.z2); // Append to root\n\n append(vmlRoot, vmlEl); // Text\n\n if (style.text != null) {\n this.drawRectText(vmlRoot, this.getBoundingRect());\n } else {\n this.removeRectText(vmlRoot);\n }\n };\n\n Path.prototype.onRemove = function (vmlRoot) {\n remove(vmlRoot, this._vmlEl);\n this.removeRectText(vmlRoot);\n };\n\n Path.prototype.onAdd = function (vmlRoot) {\n append(vmlRoot, this._vmlEl);\n this.appendRectText(vmlRoot);\n };\n /***************************************************\n * IMAGE\n **************************************************/\n\n\n var isImage = function (img) {\n // FIXME img instanceof Image 如果 img 是一个字符串的时候,IE8 下会报错\n return typeof img === 'object' && img.tagName && img.tagName.toUpperCase() === 'IMG'; // return img instanceof Image;\n }; // Rewrite the original path method\n\n\n ZImage.prototype.brushVML = function (vmlRoot) {\n var style = this.style;\n var image = style.image; // Image original width, height\n\n var ow;\n var oh;\n\n if (isImage(image)) {\n var src = image.src;\n\n if (src === this._imageSrc) {\n ow = this._imageWidth;\n oh = this._imageHeight;\n } else {\n var imageRuntimeStyle = image.runtimeStyle;\n var oldRuntimeWidth = imageRuntimeStyle.width;\n var oldRuntimeHeight = imageRuntimeStyle.height;\n imageRuntimeStyle.width = 'auto';\n imageRuntimeStyle.height = 'auto'; // get the original size\n\n ow = image.width;\n oh = image.height; // and remove overides\n\n imageRuntimeStyle.width = oldRuntimeWidth;\n imageRuntimeStyle.height = oldRuntimeHeight; // Caching image original width, height and src\n\n this._imageSrc = src;\n this._imageWidth = ow;\n this._imageHeight = oh;\n }\n\n image = src;\n } else {\n if (image === this._imageSrc) {\n ow = this._imageWidth;\n oh = this._imageHeight;\n }\n }\n\n if (!image) {\n return;\n }\n\n var x = style.x || 0;\n var y = style.y || 0;\n var dw = style.width;\n var dh = style.height;\n var sw = style.sWidth;\n var sh = style.sHeight;\n var sx = style.sx || 0;\n var sy = style.sy || 0;\n var hasCrop = sw && sh;\n var vmlEl = this._vmlEl;\n\n if (!vmlEl) {\n // FIXME 使用 group 在 left, top 都不是 0 的时候就无法显示了。\n // vmlEl = vmlCore.createNode('group');\n vmlEl = vmlCore.doc.createElement('div');\n initRootElStyle(vmlEl);\n this._vmlEl = vmlEl;\n }\n\n var vmlElStyle = vmlEl.style;\n var hasRotation = false;\n var m;\n var scaleX = 1;\n var scaleY = 1;\n\n if (this.transform) {\n m = this.transform;\n scaleX = sqrt(m[0] * m[0] + m[1] * m[1]);\n scaleY = sqrt(m[2] * m[2] + m[3] * m[3]);\n hasRotation = m[1] || m[2];\n }\n\n if (hasRotation) {\n // If filters are necessary (rotation exists), create them\n // filters are bog-slow, so only create them if abbsolutely necessary\n // The following check doesn't account for skews (which don't exist\n // in the canvas spec (yet) anyway.\n // From excanvas\n var p0 = [x, y];\n var p1 = [x + dw, y];\n var p2 = [x, y + dh];\n var p3 = [x + dw, y + dh];\n applyTransform(p0, p0, m);\n applyTransform(p1, p1, m);\n applyTransform(p2, p2, m);\n applyTransform(p3, p3, m);\n var maxX = mathMax(p0[0], p1[0], p2[0], p3[0]);\n var maxY = mathMax(p0[1], p1[1], p2[1], p3[1]);\n var transformFilter = [];\n transformFilter.push('M11=', m[0] / scaleX, comma, 'M12=', m[2] / scaleY, comma, 'M21=', m[1] / scaleX, comma, 'M22=', m[3] / scaleY, comma, 'Dx=', round(x * scaleX + m[4]), comma, 'Dy=', round(y * scaleY + m[5]));\n vmlElStyle.padding = '0 ' + round(maxX) + 'px ' + round(maxY) + 'px 0'; // FIXME DXImageTransform 在 IE11 的兼容模式下不起作用\n\n vmlElStyle.filter = imageTransformPrefix + '.Matrix(' + transformFilter.join('') + ', SizingMethod=clip)';\n } else {\n if (m) {\n x = x * scaleX + m[4];\n y = y * scaleY + m[5];\n }\n\n vmlElStyle.filter = '';\n vmlElStyle.left = round(x) + 'px';\n vmlElStyle.top = round(y) + 'px';\n }\n\n var imageEl = this._imageEl;\n var cropEl = this._cropEl;\n\n if (!imageEl) {\n imageEl = vmlCore.doc.createElement('div');\n this._imageEl = imageEl;\n }\n\n var imageELStyle = imageEl.style;\n\n if (hasCrop) {\n // Needs know image original width and height\n if (!(ow && oh)) {\n var tmpImage = new Image();\n var self = this;\n\n tmpImage.onload = function () {\n tmpImage.onload = null;\n ow = tmpImage.width;\n oh = tmpImage.height; // Adjust image width and height to fit the ratio destinationSize / sourceSize\n\n imageELStyle.width = round(scaleX * ow * dw / sw) + 'px';\n imageELStyle.height = round(scaleY * oh * dh / sh) + 'px'; // Caching image original width, height and src\n\n self._imageWidth = ow;\n self._imageHeight = oh;\n self._imageSrc = image;\n };\n\n tmpImage.src = image;\n } else {\n imageELStyle.width = round(scaleX * ow * dw / sw) + 'px';\n imageELStyle.height = round(scaleY * oh * dh / sh) + 'px';\n }\n\n if (!cropEl) {\n cropEl = vmlCore.doc.createElement('div');\n cropEl.style.overflow = 'hidden';\n this._cropEl = cropEl;\n }\n\n var cropElStyle = cropEl.style;\n cropElStyle.width = round((dw + sx * dw / sw) * scaleX);\n cropElStyle.height = round((dh + sy * dh / sh) * scaleY);\n cropElStyle.filter = imageTransformPrefix + '.Matrix(Dx=' + -sx * dw / sw * scaleX + ',Dy=' + -sy * dh / sh * scaleY + ')';\n\n if (!cropEl.parentNode) {\n vmlEl.appendChild(cropEl);\n }\n\n if (imageEl.parentNode !== cropEl) {\n cropEl.appendChild(imageEl);\n }\n } else {\n imageELStyle.width = round(scaleX * dw) + 'px';\n imageELStyle.height = round(scaleY * dh) + 'px';\n vmlEl.appendChild(imageEl);\n\n if (cropEl && cropEl.parentNode) {\n vmlEl.removeChild(cropEl);\n this._cropEl = null;\n }\n }\n\n var filterStr = '';\n var alpha = style.opacity;\n\n if (alpha < 1) {\n filterStr += '.Alpha(opacity=' + round(alpha * 100) + ') ';\n }\n\n filterStr += imageTransformPrefix + '.AlphaImageLoader(src=' + image + ', SizingMethod=scale)';\n imageELStyle.filter = filterStr;\n vmlEl.style.zIndex = getZIndex(this.zlevel, this.z, this.z2); // Append to root\n\n append(vmlRoot, vmlEl); // Text\n\n if (style.text != null) {\n this.drawRectText(vmlRoot, this.getBoundingRect());\n }\n };\n\n ZImage.prototype.onRemove = function (vmlRoot) {\n remove(vmlRoot, this._vmlEl);\n this._vmlEl = null;\n this._cropEl = null;\n this._imageEl = null;\n this.removeRectText(vmlRoot);\n };\n\n ZImage.prototype.onAdd = function (vmlRoot) {\n append(vmlRoot, this._vmlEl);\n this.appendRectText(vmlRoot);\n };\n /***************************************************\n * TEXT\n **************************************************/\n\n\n var DEFAULT_STYLE_NORMAL = 'normal';\n var fontStyleCache = {};\n var fontStyleCacheCount = 0;\n var MAX_FONT_CACHE_SIZE = 100;\n var fontEl = document.createElement('div');\n\n var getFontStyle = function (fontString) {\n var fontStyle = fontStyleCache[fontString];\n\n if (!fontStyle) {\n // Clear cache\n if (fontStyleCacheCount > MAX_FONT_CACHE_SIZE) {\n fontStyleCacheCount = 0;\n fontStyleCache = {};\n }\n\n var style = fontEl.style;\n var fontFamily;\n\n try {\n style.font = fontString;\n fontFamily = style.fontFamily.split(',')[0];\n } catch (e) {}\n\n fontStyle = {\n style: style.fontStyle || DEFAULT_STYLE_NORMAL,\n variant: style.fontVariant || DEFAULT_STYLE_NORMAL,\n weight: style.fontWeight || DEFAULT_STYLE_NORMAL,\n size: parseFloat(style.fontSize || 12) | 0,\n family: fontFamily || 'Microsoft YaHei'\n };\n fontStyleCache[fontString] = fontStyle;\n fontStyleCacheCount++;\n }\n\n return fontStyle;\n };\n\n var textMeasureEl; // Overwrite measure text method\n\n textContain.$override('measureText', function (text, textFont) {\n var doc = vmlCore.doc;\n\n if (!textMeasureEl) {\n textMeasureEl = doc.createElement('div');\n textMeasureEl.style.cssText = 'position:absolute;top:-20000px;left:0;' + 'padding:0;margin:0;border:none;white-space:pre;';\n vmlCore.doc.body.appendChild(textMeasureEl);\n }\n\n try {\n textMeasureEl.style.font = textFont;\n } catch (ex) {// Ignore failures to set to invalid font.\n }\n\n textMeasureEl.innerHTML = ''; // Don't use innerHTML or innerText because they allow markup/whitespace.\n\n textMeasureEl.appendChild(doc.createTextNode(text));\n return {\n width: textMeasureEl.offsetWidth\n };\n });\n var tmpRect = new BoundingRect();\n\n var drawRectText = function (vmlRoot, rect, textRect, fromTextEl) {\n var style = this.style; // Optimize, avoid normalize every time.\n\n this.__dirty && textHelper.normalizeTextStyle(style, true);\n var text = style.text; // Convert to string\n\n text != null && (text += '');\n\n if (!text) {\n return;\n } // Convert rich text to plain text. Rich text is not supported in\n // IE8-, but tags in rich text template will be removed.\n\n\n if (style.rich) {\n var contentBlock = textContain.parseRichText(text, style);\n text = [];\n\n for (var i = 0; i < contentBlock.lines.length; i++) {\n var tokens = contentBlock.lines[i].tokens;\n var textLine = [];\n\n for (var j = 0; j < tokens.length; j++) {\n textLine.push(tokens[j].text);\n }\n\n text.push(textLine.join(''));\n }\n\n text = text.join('\\n');\n }\n\n var x;\n var y;\n var align = style.textAlign;\n var verticalAlign = style.textVerticalAlign;\n var fontStyle = getFontStyle(style.font); // FIXME encodeHtmlAttribute ?\n\n var font = fontStyle.style + ' ' + fontStyle.variant + ' ' + fontStyle.weight + ' ' + fontStyle.size + 'px \"' + fontStyle.family + '\"';\n textRect = textRect || textContain.getBoundingRect(text, font, align, verticalAlign, style.textPadding, style.textLineHeight); // Transform rect to view space\n\n var m = this.transform; // Ignore transform for text in other element\n\n if (m && !fromTextEl) {\n tmpRect.copy(rect);\n tmpRect.applyTransform(m);\n rect = tmpRect;\n }\n\n if (!fromTextEl) {\n var textPosition = style.textPosition; // Text position represented by coord\n\n if (textPosition instanceof Array) {\n x = rect.x + parsePercent(textPosition[0], rect.width);\n y = rect.y + parsePercent(textPosition[1], rect.height);\n align = align || 'left';\n } else {\n var res = this.calculateTextPosition ? this.calculateTextPosition({}, style, rect) : textContain.calculateTextPosition({}, style, rect);\n x = res.x;\n y = res.y; // Default align and baseline when has textPosition\n\n align = align || res.textAlign;\n verticalAlign = verticalAlign || res.textVerticalAlign;\n }\n } else {\n x = rect.x;\n y = rect.y;\n }\n\n x = textContain.adjustTextX(x, textRect.width, align);\n y = textContain.adjustTextY(y, textRect.height, verticalAlign); // Force baseline 'middle'\n\n y += textRect.height / 2; // var fontSize = fontStyle.size;\n // 1.75 is an arbitrary number, as there is no info about the text baseline\n // switch (baseline) {\n // case 'hanging':\n // case 'top':\n // y += fontSize / 1.75;\n // break;\n // case 'middle':\n // break;\n // default:\n // // case null:\n // // case 'alphabetic':\n // // case 'ideographic':\n // // case 'bottom':\n // y -= fontSize / 2.25;\n // break;\n // }\n // switch (align) {\n // case 'left':\n // break;\n // case 'center':\n // x -= textRect.width / 2;\n // break;\n // case 'right':\n // x -= textRect.width;\n // break;\n // case 'end':\n // align = elementStyle.direction == 'ltr' ? 'right' : 'left';\n // break;\n // case 'start':\n // align = elementStyle.direction == 'rtl' ? 'right' : 'left';\n // break;\n // default:\n // align = 'left';\n // }\n\n var createNode = vmlCore.createNode;\n var textVmlEl = this._textVmlEl;\n var pathEl;\n var textPathEl;\n var skewEl;\n\n if (!textVmlEl) {\n textVmlEl = createNode('line');\n pathEl = createNode('path');\n textPathEl = createNode('textpath');\n skewEl = createNode('skew'); // FIXME Why here is not cammel case\n // Align 'center' seems wrong\n\n textPathEl.style['v-text-align'] = 'left';\n initRootElStyle(textVmlEl);\n pathEl.textpathok = true;\n textPathEl.on = true;\n textVmlEl.from = '0 0';\n textVmlEl.to = '1000 0.05';\n append(textVmlEl, skewEl);\n append(textVmlEl, pathEl);\n append(textVmlEl, textPathEl);\n this._textVmlEl = textVmlEl;\n } else {\n // 这里是在前面 appendChild 保证顺序的前提下\n skewEl = textVmlEl.firstChild;\n pathEl = skewEl.nextSibling;\n textPathEl = pathEl.nextSibling;\n }\n\n var coords = [x, y];\n var textVmlElStyle = textVmlEl.style; // Ignore transform for text in other element\n\n if (m && fromTextEl) {\n applyTransform(coords, coords, m);\n skewEl.on = true;\n skewEl.matrix = m[0].toFixed(3) + comma + m[2].toFixed(3) + comma + m[1].toFixed(3) + comma + m[3].toFixed(3) + ',0,0'; // Text position\n\n skewEl.offset = (round(coords[0]) || 0) + ',' + (round(coords[1]) || 0); // Left top point as origin\n\n skewEl.origin = '0 0';\n textVmlElStyle.left = '0px';\n textVmlElStyle.top = '0px';\n } else {\n skewEl.on = false;\n textVmlElStyle.left = round(x) + 'px';\n textVmlElStyle.top = round(y) + 'px';\n }\n\n textPathEl.string = encodeHtmlAttribute(text); // TODO\n\n try {\n textPathEl.style.font = font;\n } // Error font format\n catch (e) {}\n\n updateFillAndStroke(textVmlEl, 'fill', {\n fill: style.textFill,\n opacity: style.opacity\n }, this);\n updateFillAndStroke(textVmlEl, 'stroke', {\n stroke: style.textStroke,\n opacity: style.opacity,\n lineDash: style.lineDash || null // style.lineDash can be `false`.\n\n }, this);\n textVmlEl.style.zIndex = getZIndex(this.zlevel, this.z, this.z2); // Attached to root\n\n append(vmlRoot, textVmlEl);\n };\n\n var removeRectText = function (vmlRoot) {\n remove(vmlRoot, this._textVmlEl);\n this._textVmlEl = null;\n };\n\n var appendRectText = function (vmlRoot) {\n append(vmlRoot, this._textVmlEl);\n };\n\n var list = [RectText, Displayable, ZImage, Path, Text]; // In case Displayable has been mixed in RectText\n\n for (var i = 0; i < list.length; i++) {\n var proto = list[i].prototype;\n proto.drawRectText = drawRectText;\n proto.removeRectText = removeRectText;\n proto.appendRectText = appendRectText;\n }\n\n Text.prototype.brushVML = function (vmlRoot) {\n var style = this.style;\n\n if (style.text != null) {\n this.drawRectText(vmlRoot, {\n x: style.x || 0,\n y: style.y || 0,\n width: 0,\n height: 0\n }, this.getBoundingRect(), true);\n } else {\n this.removeRectText(vmlRoot);\n }\n };\n\n Text.prototype.onRemove = function (vmlRoot) {\n this.removeRectText(vmlRoot);\n };\n\n Text.prototype.onAdd = function (vmlRoot) {\n this.appendRectText(vmlRoot);\n };\n}\n\n//# sourceURL=webpack:///./node_modules/zrender/lib/vml/graphic.js?"); + +/***/ }), + +/***/ "./node_modules/zrender/lib/vml/vml.js": +/*!*********************************************!*\ + !*** ./node_modules/zrender/lib/vml/vml.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("__webpack_require__(/*! ./graphic */ \"./node_modules/zrender/lib/vml/graphic.js\");\n\nvar _zrender = __webpack_require__(/*! ../zrender */ \"./node_modules/zrender/lib/zrender.js\");\n\nvar registerPainter = _zrender.registerPainter;\n\nvar Painter = __webpack_require__(/*! ./Painter */ \"./node_modules/zrender/lib/vml/Painter.js\");\n\nregisterPainter('vml', Painter);\n\n//# sourceURL=webpack:///./node_modules/zrender/lib/vml/vml.js?"); + +/***/ }), + +/***/ "./node_modules/zrender/lib/zrender.js": +/*!*********************************************!*\ + !*** ./node_modules/zrender/lib/zrender.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var guid = __webpack_require__(/*! ./core/guid */ \"./node_modules/zrender/lib/core/guid.js\");\n\nvar env = __webpack_require__(/*! ./core/env */ \"./node_modules/zrender/lib/core/env.js\");\n\nvar zrUtil = __webpack_require__(/*! ./core/util */ \"./node_modules/zrender/lib/core/util.js\");\n\nvar Handler = __webpack_require__(/*! ./Handler */ \"./node_modules/zrender/lib/Handler.js\");\n\nvar Storage = __webpack_require__(/*! ./Storage */ \"./node_modules/zrender/lib/Storage.js\");\n\nvar Painter = __webpack_require__(/*! ./Painter */ \"./node_modules/zrender/lib/Painter.js\");\n\nvar Animation = __webpack_require__(/*! ./animation/Animation */ \"./node_modules/zrender/lib/animation/Animation.js\");\n\nvar HandlerProxy = __webpack_require__(/*! ./dom/HandlerProxy */ \"./node_modules/zrender/lib/dom/HandlerProxy.js\");\n\n/*!\n* ZRender, a high performance 2d drawing library.\n*\n* Copyright (c) 2013, Baidu Inc.\n* All rights reserved.\n*\n* LICENSE\n* https://github.com/ecomfe/zrender/blob/master/LICENSE.txt\n*/\nvar useVML = !env.canvasSupported;\nvar painterCtors = {\n canvas: Painter\n};\nvar instances = {}; // ZRender实例map索引\n\n/**\n * @type {string}\n */\n\nvar version = '4.3.2';\n/**\n * Initializing a zrender instance\n * @param {HTMLElement} dom\n * @param {Object} [opts]\n * @param {string} [opts.renderer='canvas'] 'canvas' or 'svg'\n * @param {number} [opts.devicePixelRatio]\n * @param {number|string} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number|string} [opts.height] Can be 'auto' (the same as null/undefined)\n * @return {module:zrender/ZRender}\n */\n\nfunction init(dom, opts) {\n var zr = new ZRender(guid(), dom, opts);\n instances[zr.id] = zr;\n return zr;\n}\n/**\n * Dispose zrender instance\n * @param {module:zrender/ZRender} zr\n */\n\n\nfunction dispose(zr) {\n if (zr) {\n zr.dispose();\n } else {\n for (var key in instances) {\n if (instances.hasOwnProperty(key)) {\n instances[key].dispose();\n }\n }\n\n instances = {};\n }\n\n return this;\n}\n/**\n * Get zrender instance by id\n * @param {string} id zrender instance id\n * @return {module:zrender/ZRender}\n */\n\n\nfunction getInstance(id) {\n return instances[id];\n}\n\nfunction registerPainter(name, Ctor) {\n painterCtors[name] = Ctor;\n}\n\nfunction delInstance(id) {\n delete instances[id];\n}\n/**\n * @module zrender/ZRender\n */\n\n/**\n * @constructor\n * @alias module:zrender/ZRender\n * @param {string} id\n * @param {HTMLElement} dom\n * @param {Object} opts\n * @param {string} [opts.renderer='canvas'] 'canvas' or 'svg'\n * @param {number} [opts.devicePixelRatio]\n * @param {number} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Can be 'auto' (the same as null/undefined)\n */\n\n\nvar ZRender = function (id, dom, opts) {\n opts = opts || {};\n /**\n * @type {HTMLDomElement}\n */\n\n this.dom = dom;\n /**\n * @type {string}\n */\n\n this.id = id;\n var self = this;\n var storage = new Storage();\n var rendererType = opts.renderer; // TODO WebGL\n\n if (useVML) {\n if (!painterCtors.vml) {\n throw new Error('You need to require \\'zrender/vml/vml\\' to support IE8');\n }\n\n rendererType = 'vml';\n } else if (!rendererType || !painterCtors[rendererType]) {\n rendererType = 'canvas';\n }\n\n var painter = new painterCtors[rendererType](dom, storage, opts, id);\n this.storage = storage;\n this.painter = painter;\n var handerProxy = !env.node && !env.worker ? new HandlerProxy(painter.getViewportRoot(), painter.root) : null;\n this.handler = new Handler(storage, painter, handerProxy, painter.root);\n /**\n * @type {module:zrender/animation/Animation}\n */\n\n this.animation = new Animation({\n stage: {\n update: zrUtil.bind(this.flush, this)\n }\n });\n this.animation.start();\n /**\n * @type {boolean}\n * @private\n */\n\n this._needsRefresh; // 修改 storage.delFromStorage, 每次删除元素之前删除动画\n // FIXME 有点ugly\n\n var oldDelFromStorage = storage.delFromStorage;\n var oldAddToStorage = storage.addToStorage;\n\n storage.delFromStorage = function (el) {\n oldDelFromStorage.call(storage, el);\n el && el.removeSelfFromZr(self);\n };\n\n storage.addToStorage = function (el) {\n oldAddToStorage.call(storage, el);\n el.addSelfToZr(self);\n };\n};\n\nZRender.prototype = {\n constructor: ZRender,\n\n /**\n * 获取实例唯一标识\n * @return {string}\n */\n getId: function () {\n return this.id;\n },\n\n /**\n * 添加元素\n * @param {module:zrender/Element} el\n */\n add: function (el) {\n this.storage.addRoot(el);\n this._needsRefresh = true;\n },\n\n /**\n * 删除元素\n * @param {module:zrender/Element} el\n */\n remove: function (el) {\n this.storage.delRoot(el);\n this._needsRefresh = true;\n },\n\n /**\n * Change configuration of layer\n * @param {string} zLevel\n * @param {Object} config\n * @param {string} [config.clearColor=0] Clear color\n * @param {string} [config.motionBlur=false] If enable motion blur\n * @param {number} [config.lastFrameAlpha=0.7] Motion blur factor. Larger value cause longer trailer\n */\n configLayer: function (zLevel, config) {\n if (this.painter.configLayer) {\n this.painter.configLayer(zLevel, config);\n }\n\n this._needsRefresh = true;\n },\n\n /**\n * Set background color\n * @param {string} backgroundColor\n */\n setBackgroundColor: function (backgroundColor) {\n if (this.painter.setBackgroundColor) {\n this.painter.setBackgroundColor(backgroundColor);\n }\n\n this._needsRefresh = true;\n },\n\n /**\n * Repaint the canvas immediately\n */\n refreshImmediately: function () {\n // var start = new Date();\n // Clear needsRefresh ahead to avoid something wrong happens in refresh\n // Or it will cause zrender refreshes again and again.\n this._needsRefresh = this._needsRefreshHover = false;\n this.painter.refresh(); // Avoid trigger zr.refresh in Element#beforeUpdate hook\n\n this._needsRefresh = this._needsRefreshHover = false; // var end = new Date();\n // var log = document.getElementById('log');\n // if (log) {\n // log.innerHTML = log.innerHTML + '
' + (end - start);\n // }\n },\n\n /**\n * Mark and repaint the canvas in the next frame of browser\n */\n refresh: function () {\n this._needsRefresh = true;\n },\n\n /**\n * Perform all refresh\n */\n flush: function () {\n var triggerRendered;\n\n if (this._needsRefresh) {\n triggerRendered = true;\n this.refreshImmediately();\n }\n\n if (this._needsRefreshHover) {\n triggerRendered = true;\n this.refreshHoverImmediately();\n }\n\n triggerRendered && this.trigger('rendered');\n },\n\n /**\n * Add element to hover layer\n * @param {module:zrender/Element} el\n * @param {Object} style\n */\n addHover: function (el, style) {\n if (this.painter.addHover) {\n var elMirror = this.painter.addHover(el, style);\n this.refreshHover();\n return elMirror;\n }\n },\n\n /**\n * Add element from hover layer\n * @param {module:zrender/Element} el\n */\n removeHover: function (el) {\n if (this.painter.removeHover) {\n this.painter.removeHover(el);\n this.refreshHover();\n }\n },\n\n /**\n * Clear all hover elements in hover layer\n * @param {module:zrender/Element} el\n */\n clearHover: function () {\n if (this.painter.clearHover) {\n this.painter.clearHover();\n this.refreshHover();\n }\n },\n\n /**\n * Refresh hover in next frame\n */\n refreshHover: function () {\n this._needsRefreshHover = true;\n },\n\n /**\n * Refresh hover immediately\n */\n refreshHoverImmediately: function () {\n this._needsRefreshHover = false;\n this.painter.refreshHover && this.painter.refreshHover();\n },\n\n /**\n * Resize the canvas.\n * Should be invoked when container size is changed\n * @param {Object} [opts]\n * @param {number|string} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number|string} [opts.height] Can be 'auto' (the same as null/undefined)\n */\n resize: function (opts) {\n opts = opts || {};\n this.painter.resize(opts.width, opts.height);\n this.handler.resize();\n },\n\n /**\n * Stop and clear all animation immediately\n */\n clearAnimation: function () {\n this.animation.clear();\n },\n\n /**\n * Get container width\n */\n getWidth: function () {\n return this.painter.getWidth();\n },\n\n /**\n * Get container height\n */\n getHeight: function () {\n return this.painter.getHeight();\n },\n\n /**\n * Export the canvas as Base64 URL\n * @param {string} type\n * @param {string} [backgroundColor='#fff']\n * @return {string} Base64 URL\n */\n // toDataURL: function(type, backgroundColor) {\n // return this.painter.getRenderedCanvas({\n // backgroundColor: backgroundColor\n // }).toDataURL(type);\n // },\n\n /**\n * Converting a path to image.\n * It has much better performance of drawing image rather than drawing a vector path.\n * @param {module:zrender/graphic/Path} e\n * @param {number} width\n * @param {number} height\n */\n pathToImage: function (e, dpr) {\n return this.painter.pathToImage(e, dpr);\n },\n\n /**\n * Set default cursor\n * @param {string} [cursorStyle='default'] 例如 crosshair\n */\n setCursorStyle: function (cursorStyle) {\n this.handler.setCursorStyle(cursorStyle);\n },\n\n /**\n * Find hovered element\n * @param {number} x\n * @param {number} y\n * @return {Object} {target, topTarget}\n */\n findHover: function (x, y) {\n return this.handler.findHover(x, y);\n },\n\n /**\n * Bind event\n *\n * @param {string} eventName Event name\n * @param {Function} eventHandler Handler function\n * @param {Object} [context] Context object\n */\n on: function (eventName, eventHandler, context) {\n this.handler.on(eventName, eventHandler, context);\n },\n\n /**\n * Unbind event\n * @param {string} eventName Event name\n * @param {Function} [eventHandler] Handler function\n */\n off: function (eventName, eventHandler) {\n this.handler.off(eventName, eventHandler);\n },\n\n /**\n * Trigger event manually\n *\n * @param {string} eventName Event name\n * @param {event=} event Event object\n */\n trigger: function (eventName, event) {\n this.handler.trigger(eventName, event);\n },\n\n /**\n * Clear all objects and the canvas.\n */\n clear: function () {\n this.storage.delRoot();\n this.painter.clear();\n },\n\n /**\n * Dispose self.\n */\n dispose: function () {\n this.animation.stop();\n this.clear();\n this.storage.dispose();\n this.painter.dispose();\n this.handler.dispose();\n this.animation = this.storage = this.painter = this.handler = null;\n delInstance(this.id);\n }\n};\nexports.version = version;\nexports.init = init;\nexports.dispose = dispose;\nexports.getInstance = getInstance;\nexports.registerPainter = registerPainter;\n\n//# sourceURL=webpack:///./node_modules/zrender/lib/zrender.js?"); + +/***/ }), + +/***/ "./src/views/dashboard/BarChart.vue": +/*!******************************************!*\ + !*** ./src/views/dashboard/BarChart.vue ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _BarChart_vue_vue_type_template_id_397bf160___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BarChart.vue?vue&type=template&id=397bf160& */ \"./src/views/dashboard/BarChart.vue?vue&type=template&id=397bf160&\");\n/* harmony import */ var _BarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./BarChart.vue?vue&type=script&lang=js& */ \"./src/views/dashboard/BarChart.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _BarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _BarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _BarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _BarChart_vue_vue_type_template_id_397bf160___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _BarChart_vue_vue_type_template_id_397bf160___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/dashboard/BarChart.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/dashboard/BarChart.vue?"); + +/***/ }), + +/***/ "./src/views/dashboard/BarChart.vue?vue&type=script&lang=js&": +/*!*******************************************************************!*\ + !*** ./src/views/dashboard/BarChart.vue?vue&type=script&lang=js& ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_BarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib??vue-loader-options!./BarChart.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/BarChart.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_BarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_BarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_BarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_BarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_BarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/dashboard/BarChart.vue?"); + +/***/ }), + +/***/ "./src/views/dashboard/BarChart.vue?vue&type=template&id=397bf160&": +/*!*************************************************************************!*\ + !*** ./src/views/dashboard/BarChart.vue?vue&type=template&id=397bf160& ***! + \*************************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_BarChart_vue_vue_type_template_id_397bf160___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib??vue-loader-options!./BarChart.vue?vue&type=template&id=397bf160& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"b76c6300-vue-loader-template\\\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/BarChart.vue?vue&type=template&id=397bf160&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_BarChart_vue_vue_type_template_id_397bf160___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_BarChart_vue_vue_type_template_id_397bf160___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_BarChart_vue_vue_type_template_id_397bf160___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_BarChart_vue_vue_type_template_id_397bf160___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/dashboard/BarChart.vue?"); + +/***/ }), + +/***/ "./src/views/dashboard/LineChart.vue": +/*!*******************************************!*\ + !*** ./src/views/dashboard/LineChart.vue ***! \*******************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _formEditor_vue_vue_type_template_id_3df0b122___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formEditor.vue?vue&type=template&id=3df0b122& */ \"./src/views/bpm/form/formEditor.vue?vue&type=template&id=3df0b122&\");\n/* harmony import */ var _formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formEditor.vue?vue&type=script&lang=js& */ \"./src/views/bpm/form/formEditor.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _formEditor_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formEditor.vue?vue&type=style&index=0&lang=scss& */ \"./src/views/bpm/form/formEditor.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _formEditor_vue_vue_type_template_id_3df0b122___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _formEditor_vue_vue_type_template_id_3df0b122___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/bpm/form/formEditor.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/bpm/form/formEditor.vue?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _LineChart_vue_vue_type_template_id_edb3ae76___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./LineChart.vue?vue&type=template&id=edb3ae76& */ \"./src/views/dashboard/LineChart.vue?vue&type=template&id=edb3ae76&\");\n/* harmony import */ var _LineChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./LineChart.vue?vue&type=script&lang=js& */ \"./src/views/dashboard/LineChart.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _LineChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _LineChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _LineChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _LineChart_vue_vue_type_template_id_edb3ae76___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _LineChart_vue_vue_type_template_id_edb3ae76___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/dashboard/LineChart.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/dashboard/LineChart.vue?"); /***/ }), -/***/ "./src/views/bpm/form/formEditor.vue?vue&type=script&lang=js&": +/***/ "./src/views/dashboard/LineChart.vue?vue&type=script&lang=js&": /*!********************************************************************!*\ - !*** ./src/views/bpm/form/formEditor.vue?vue&type=script&lang=js& ***! + !*** ./src/views/dashboard/LineChart.vue?vue&type=script&lang=js& ***! \********************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./formEditor.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/form/formEditor.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/bpm/form/formEditor.vue?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_LineChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib??vue-loader-options!./LineChart.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/LineChart.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_LineChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_LineChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_LineChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_LineChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_LineChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/dashboard/LineChart.vue?"); /***/ }), -/***/ "./src/views/bpm/form/formEditor.vue?vue&type=style&index=0&lang=scss&": -/*!*****************************************************************************!*\ - !*** ./src/views/bpm/form/formEditor.vue?vue&type=style&index=0&lang=scss& ***! - \*****************************************************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-style-loader??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./formEditor.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/form/formEditor.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/bpm/form/formEditor.vue?"); - -/***/ }), - -/***/ "./src/views/bpm/form/formEditor.vue?vue&type=template&id=3df0b122&": +/***/ "./src/views/dashboard/LineChart.vue?vue&type=template&id=edb3ae76&": /*!**************************************************************************!*\ - !*** ./src/views/bpm/form/formEditor.vue?vue&type=template&id=3df0b122& ***! - \**************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_template_id_3df0b122___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./formEditor.vue?vue&type=template&id=3df0b122& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/form/formEditor.vue?vue&type=template&id=3df0b122&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_template_id_3df0b122___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_template_id_3df0b122___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/bpm/form/formEditor.vue?"); - -/***/ }), - -/***/ "./src/views/infra/build/CodeTypeDialog.vue": -/*!**************************************************!*\ - !*** ./src/views/infra/build/CodeTypeDialog.vue ***! - \**************************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _CodeTypeDialog_vue_vue_type_template_id_ac1f446e_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CodeTypeDialog.vue?vue&type=template&id=ac1f446e&scoped=true& */ \"./src/views/infra/build/CodeTypeDialog.vue?vue&type=template&id=ac1f446e&scoped=true&\");\n/* harmony import */ var _CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CodeTypeDialog.vue?vue&type=script&lang=js& */ \"./src/views/infra/build/CodeTypeDialog.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _CodeTypeDialog_vue_vue_type_template_id_ac1f446e_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _CodeTypeDialog_vue_vue_type_template_id_ac1f446e_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"ac1f446e\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/infra/build/CodeTypeDialog.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/infra/build/CodeTypeDialog.vue?"); - -/***/ }), - -/***/ "./src/views/infra/build/CodeTypeDialog.vue?vue&type=script&lang=js&": -/*!***************************************************************************!*\ - !*** ./src/views/infra/build/CodeTypeDialog.vue?vue&type=script&lang=js& ***! - \***************************************************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./CodeTypeDialog.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/CodeTypeDialog.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/infra/build/CodeTypeDialog.vue?"); - -/***/ }), - -/***/ "./src/views/infra/build/CodeTypeDialog.vue?vue&type=template&id=ac1f446e&scoped=true&": -/*!*********************************************************************************************!*\ - !*** ./src/views/infra/build/CodeTypeDialog.vue?vue&type=template&id=ac1f446e&scoped=true& ***! - \*********************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_template_id_ac1f446e_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./CodeTypeDialog.vue?vue&type=template&id=ac1f446e&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/CodeTypeDialog.vue?vue&type=template&id=ac1f446e&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_template_id_ac1f446e_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_template_id_ac1f446e_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/CodeTypeDialog.vue?"); - -/***/ }), - -/***/ "./src/views/infra/build/DraggableItem.vue": -/*!*************************************************!*\ - !*** ./src/views/infra/build/DraggableItem.vue ***! - \*************************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./DraggableItem.vue?vue&type=script&lang=js& */ \"./src/views/infra/build/DraggableItem.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\nvar render, staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\n _DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/infra/build/DraggableItem.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/infra/build/DraggableItem.vue?"); - -/***/ }), - -/***/ "./src/views/infra/build/DraggableItem.vue?vue&type=script&lang=js&": -/*!**************************************************************************!*\ - !*** ./src/views/infra/build/DraggableItem.vue?vue&type=script&lang=js& ***! + !*** ./src/views/dashboard/LineChart.vue?vue&type=template&id=edb3ae76& ***! \**************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./DraggableItem.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/DraggableItem.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/infra/build/DraggableItem.vue?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_LineChart_vue_vue_type_template_id_edb3ae76___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib??vue-loader-options!./LineChart.vue?vue&type=template&id=edb3ae76& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"b76c6300-vue-loader-template\\\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/LineChart.vue?vue&type=template&id=edb3ae76&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_LineChart_vue_vue_type_template_id_edb3ae76___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_LineChart_vue_vue_type_template_id_edb3ae76___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_LineChart_vue_vue_type_template_id_edb3ae76___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_LineChart_vue_vue_type_template_id_edb3ae76___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/dashboard/LineChart.vue?"); /***/ }), -/***/ "./src/views/infra/build/FormDrawer.vue": +/***/ "./src/views/dashboard/PanelGroup.vue": +/*!********************************************!*\ + !*** ./src/views/dashboard/PanelGroup.vue ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _PanelGroup_vue_vue_type_template_id_0333a520_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PanelGroup.vue?vue&type=template&id=0333a520&scoped=true& */ \"./src/views/dashboard/PanelGroup.vue?vue&type=template&id=0333a520&scoped=true&\");\n/* harmony import */ var _PanelGroup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PanelGroup.vue?vue&type=script&lang=js& */ \"./src/views/dashboard/PanelGroup.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _PanelGroup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _PanelGroup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _PanelGroup_vue_vue_type_style_index_0_id_0333a520_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./PanelGroup.vue?vue&type=style&index=0&id=0333a520&lang=scss&scoped=true& */ \"./src/views/dashboard/PanelGroup.vue?vue&type=style&index=0&id=0333a520&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _PanelGroup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _PanelGroup_vue_vue_type_template_id_0333a520_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _PanelGroup_vue_vue_type_template_id_0333a520_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"0333a520\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/dashboard/PanelGroup.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/dashboard/PanelGroup.vue?"); + +/***/ }), + +/***/ "./src/views/dashboard/PanelGroup.vue?vue&type=script&lang=js&": +/*!*********************************************************************!*\ + !*** ./src/views/dashboard/PanelGroup.vue?vue&type=script&lang=js& ***! + \*********************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib??vue-loader-options!./PanelGroup.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/PanelGroup.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/dashboard/PanelGroup.vue?"); + +/***/ }), + +/***/ "./src/views/dashboard/PanelGroup.vue?vue&type=style&index=0&id=0333a520&lang=scss&scoped=true&": +/*!******************************************************************************************************!*\ + !*** ./src/views/dashboard/PanelGroup.vue?vue&type=style&index=0&id=0333a520&lang=scss&scoped=true& ***! + \******************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_style_index_0_id_0333a520_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-style-loader??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib??vue-loader-options!./PanelGroup.vue?vue&type=style&index=0&id=0333a520&lang=scss&scoped=true& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/PanelGroup.vue?vue&type=style&index=0&id=0333a520&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_style_index_0_id_0333a520_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_style_index_0_id_0333a520_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_style_index_0_id_0333a520_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_style_index_0_id_0333a520_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/dashboard/PanelGroup.vue?"); + +/***/ }), + +/***/ "./src/views/dashboard/PanelGroup.vue?vue&type=template&id=0333a520&scoped=true&": +/*!***************************************************************************************!*\ + !*** ./src/views/dashboard/PanelGroup.vue?vue&type=template&id=0333a520&scoped=true& ***! + \***************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_template_id_0333a520_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib??vue-loader-options!./PanelGroup.vue?vue&type=template&id=0333a520&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"b76c6300-vue-loader-template\\\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/PanelGroup.vue?vue&type=template&id=0333a520&scoped=true&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_template_id_0333a520_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_template_id_0333a520_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_template_id_0333a520_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PanelGroup_vue_vue_type_template_id_0333a520_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/dashboard/PanelGroup.vue?"); + +/***/ }), + +/***/ "./src/views/dashboard/PieChart.vue": +/*!******************************************!*\ + !*** ./src/views/dashboard/PieChart.vue ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _PieChart_vue_vue_type_template_id_36c457f2___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PieChart.vue?vue&type=template&id=36c457f2& */ \"./src/views/dashboard/PieChart.vue?vue&type=template&id=36c457f2&\");\n/* harmony import */ var _PieChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PieChart.vue?vue&type=script&lang=js& */ \"./src/views/dashboard/PieChart.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _PieChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _PieChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _PieChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _PieChart_vue_vue_type_template_id_36c457f2___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _PieChart_vue_vue_type_template_id_36c457f2___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/dashboard/PieChart.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/dashboard/PieChart.vue?"); + +/***/ }), + +/***/ "./src/views/dashboard/PieChart.vue?vue&type=script&lang=js&": +/*!*******************************************************************!*\ + !*** ./src/views/dashboard/PieChart.vue?vue&type=script&lang=js& ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PieChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib??vue-loader-options!./PieChart.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/PieChart.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PieChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PieChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PieChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PieChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PieChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/dashboard/PieChart.vue?"); + +/***/ }), + +/***/ "./src/views/dashboard/PieChart.vue?vue&type=template&id=36c457f2&": +/*!*************************************************************************!*\ + !*** ./src/views/dashboard/PieChart.vue?vue&type=template&id=36c457f2& ***! + \*************************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PieChart_vue_vue_type_template_id_36c457f2___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib??vue-loader-options!./PieChart.vue?vue&type=template&id=36c457f2& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"b76c6300-vue-loader-template\\\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/PieChart.vue?vue&type=template&id=36c457f2&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PieChart_vue_vue_type_template_id_36c457f2___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PieChart_vue_vue_type_template_id_36c457f2___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PieChart_vue_vue_type_template_id_36c457f2___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PieChart_vue_vue_type_template_id_36c457f2___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/dashboard/PieChart.vue?"); + +/***/ }), + +/***/ "./src/views/dashboard/RaddarChart.vue": +/*!*********************************************!*\ + !*** ./src/views/dashboard/RaddarChart.vue ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _RaddarChart_vue_vue_type_template_id_bd9223ce___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RaddarChart.vue?vue&type=template&id=bd9223ce& */ \"./src/views/dashboard/RaddarChart.vue?vue&type=template&id=bd9223ce&\");\n/* harmony import */ var _RaddarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RaddarChart.vue?vue&type=script&lang=js& */ \"./src/views/dashboard/RaddarChart.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _RaddarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _RaddarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _RaddarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _RaddarChart_vue_vue_type_template_id_bd9223ce___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _RaddarChart_vue_vue_type_template_id_bd9223ce___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/dashboard/RaddarChart.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/dashboard/RaddarChart.vue?"); + +/***/ }), + +/***/ "./src/views/dashboard/RaddarChart.vue?vue&type=script&lang=js&": +/*!**********************************************************************!*\ + !*** ./src/views/dashboard/RaddarChart.vue?vue&type=script&lang=js& ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RaddarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/babel-loader/lib!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib??vue-loader-options!./RaddarChart.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/RaddarChart.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RaddarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RaddarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RaddarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RaddarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RaddarChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/dashboard/RaddarChart.vue?"); + +/***/ }), + +/***/ "./src/views/dashboard/RaddarChart.vue?vue&type=template&id=bd9223ce&": +/*!****************************************************************************!*\ + !*** ./src/views/dashboard/RaddarChart.vue?vue&type=template&id=bd9223ce& ***! + \****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RaddarChart_vue_vue_type_template_id_bd9223ce___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib??vue-loader-options!./RaddarChart.vue?vue&type=template&id=bd9223ce& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"b76c6300-vue-loader-template\\\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/dashboard/RaddarChart.vue?vue&type=template&id=bd9223ce&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RaddarChart_vue_vue_type_template_id_bd9223ce___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RaddarChart_vue_vue_type_template_id_bd9223ce___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RaddarChart_vue_vue_type_template_id_bd9223ce___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RaddarChart_vue_vue_type_template_id_bd9223ce___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/dashboard/RaddarChart.vue?"); + +/***/ }), + +/***/ "./src/views/dashboard/mixins/resize.js": /*!**********************************************!*\ - !*** ./src/views/infra/build/FormDrawer.vue ***! + !*** ./src/views/dashboard/mixins/resize.js ***! \**********************************************/ /*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _FormDrawer_vue_vue_type_template_id_753f0faf_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FormDrawer.vue?vue&type=template&id=753f0faf&scoped=true& */ \"./src/views/infra/build/FormDrawer.vue?vue&type=template&id=753f0faf&scoped=true&\");\n/* harmony import */ var _FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./FormDrawer.vue?vue&type=script&lang=js& */ \"./src/views/infra/build/FormDrawer.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _FormDrawer_vue_vue_type_style_index_0_id_753f0faf_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true& */ \"./src/views/infra/build/FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _FormDrawer_vue_vue_type_template_id_753f0faf_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _FormDrawer_vue_vue_type_template_id_753f0faf_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"753f0faf\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/infra/build/FormDrawer.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/infra/build/FormDrawer.vue?"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _utils = __webpack_require__(/*! @/utils */ \"./src/utils/index.js\");\nvar _default = {\n data: function data() {\n return {\n $_sidebarElm: null,\n $_resizeHandler: null\n };\n },\n mounted: function mounted() {\n this.initListener();\n },\n activated: function activated() {\n if (!this.$_resizeHandler) {\n // avoid duplication init\n this.initListener();\n }\n\n // when keep-alive chart activated, auto resize\n this.resize();\n },\n beforeDestroy: function beforeDestroy() {\n this.destroyListener();\n },\n deactivated: function deactivated() {\n this.destroyListener();\n },\n methods: {\n // use $_ for mixins properties\n // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential\n $_sidebarResizeHandler: function $_sidebarResizeHandler(e) {\n if (e.propertyName === 'width') {\n this.$_resizeHandler();\n }\n },\n initListener: function initListener() {\n var _this = this;\n this.$_resizeHandler = (0, _utils.debounce)(function () {\n _this.resize();\n }, 100);\n window.addEventListener('resize', this.$_resizeHandler);\n this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0];\n this.$_sidebarElm && this.$_sidebarElm.addEventListener('transitionend', this.$_sidebarResizeHandler);\n },\n destroyListener: function destroyListener() {\n window.removeEventListener('resize', this.$_resizeHandler);\n this.$_resizeHandler = null;\n this.$_sidebarElm && this.$_sidebarElm.removeEventListener('transitionend', this.$_sidebarResizeHandler);\n },\n resize: function resize() {\n var chart = this.chart;\n chart && chart.resize();\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/dashboard/mixins/resize.js?"); /***/ }), -/***/ "./src/views/infra/build/FormDrawer.vue?vue&type=script&lang=js&": -/*!***********************************************************************!*\ - !*** ./src/views/infra/build/FormDrawer.vue?vue&type=script&lang=js& ***! - \***********************************************************************/ +/***/ "./src/views/index.vue": +/*!*****************************!*\ + !*** ./src/views/index.vue ***! + \*****************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./FormDrawer.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/FormDrawer.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/infra/build/FormDrawer.vue?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index_vue_vue_type_template_id_a83bd3b0_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.vue?vue&type=template&id=a83bd3b0&scoped=true& */ \"./src/views/index.vue?vue&type=template&id=a83bd3b0&scoped=true&\");\n/* harmony import */ var _index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.vue?vue&type=script&lang=js& */ \"./src/views/index.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _index_vue_vue_type_style_index_0_id_a83bd3b0_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.vue?vue&type=style&index=0&id=a83bd3b0&lang=scss&scoped=true& */ \"./src/views/index.vue?vue&type=style&index=0&id=a83bd3b0&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _index_vue_vue_type_template_id_a83bd3b0_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _index_vue_vue_type_template_id_a83bd3b0_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"a83bd3b0\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/index.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/index.vue?"); /***/ }), -/***/ "./src/views/infra/build/FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true&": -/*!********************************************************************************************************!*\ - !*** ./src/views/infra/build/FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true& ***! - \********************************************************************************************************/ +/***/ "./src/views/index.vue?vue&type=script&lang=js&": +/*!******************************************************!*\ + !*** ./src/views/index.vue?vue&type=script&lang=js& ***! + \******************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_style_index_0_id_753f0faf_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-style-loader??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_style_index_0_id_753f0faf_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_style_index_0_id_753f0faf_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_style_index_0_id_753f0faf_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_style_index_0_id_753f0faf_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/infra/build/FormDrawer.vue?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/babel-loader/lib!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib??vue-loader-options!./index.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/index.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/index.vue?"); /***/ }), -/***/ "./src/views/infra/build/FormDrawer.vue?vue&type=template&id=753f0faf&scoped=true&": -/*!*****************************************************************************************!*\ - !*** ./src/views/infra/build/FormDrawer.vue?vue&type=template&id=753f0faf&scoped=true& ***! - \*****************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_template_id_753f0faf_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./FormDrawer.vue?vue&type=template&id=753f0faf&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/FormDrawer.vue?vue&type=template&id=753f0faf&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_template_id_753f0faf_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_template_id_753f0faf_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/FormDrawer.vue?"); - -/***/ }), - -/***/ "./src/views/infra/build/IconsDialog.vue": -/*!***********************************************!*\ - !*** ./src/views/infra/build/IconsDialog.vue ***! - \***********************************************/ +/***/ "./src/views/index.vue?vue&type=style&index=0&id=a83bd3b0&lang=scss&scoped=true&": +/*!***************************************************************************************!*\ + !*** ./src/views/index.vue?vue&type=style&index=0&id=a83bd3b0&lang=scss&scoped=true& ***! + \***************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _IconsDialog_vue_vue_type_template_id_7bbbfa18_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./IconsDialog.vue?vue&type=template&id=7bbbfa18&scoped=true& */ \"./src/views/infra/build/IconsDialog.vue?vue&type=template&id=7bbbfa18&scoped=true&\");\n/* harmony import */ var _IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./IconsDialog.vue?vue&type=script&lang=js& */ \"./src/views/infra/build/IconsDialog.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IconsDialog_vue_vue_type_style_index_0_id_7bbbfa18_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true& */ \"./src/views/infra/build/IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _IconsDialog_vue_vue_type_template_id_7bbbfa18_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _IconsDialog_vue_vue_type_template_id_7bbbfa18_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"7bbbfa18\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/infra/build/IconsDialog.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/infra/build/IconsDialog.vue?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_a83bd3b0_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/vue-style-loader??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib??vue-loader-options!./index.vue?vue&type=style&index=0&id=a83bd3b0&lang=scss&scoped=true& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/index.vue?vue&type=style&index=0&id=a83bd3b0&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_a83bd3b0_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_a83bd3b0_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_a83bd3b0_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_a83bd3b0_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/index.vue?"); /***/ }), -/***/ "./src/views/infra/build/IconsDialog.vue?vue&type=script&lang=js&": +/***/ "./src/views/index.vue?vue&type=template&id=a83bd3b0&scoped=true&": /*!************************************************************************!*\ - !*** ./src/views/infra/build/IconsDialog.vue?vue&type=script&lang=js& ***! + !*** ./src/views/index.vue?vue&type=template&id=a83bd3b0&scoped=true& ***! \************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./IconsDialog.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/IconsDialog.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/infra/build/IconsDialog.vue?"); - -/***/ }), - -/***/ "./src/views/infra/build/IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true&": -/*!*********************************************************************************************************!*\ - !*** ./src/views/infra/build/IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true& ***! - \*********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_style_index_0_id_7bbbfa18_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-style-loader??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_style_index_0_id_7bbbfa18_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_style_index_0_id_7bbbfa18_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_style_index_0_id_7bbbfa18_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_style_index_0_id_7bbbfa18_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/infra/build/IconsDialog.vue?"); - -/***/ }), - -/***/ "./src/views/infra/build/IconsDialog.vue?vue&type=template&id=7bbbfa18&scoped=true&": -/*!******************************************************************************************!*\ - !*** ./src/views/infra/build/IconsDialog.vue?vue&type=template&id=7bbbfa18&scoped=true& ***! - \******************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_template_id_7bbbfa18_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./IconsDialog.vue?vue&type=template&id=7bbbfa18&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/IconsDialog.vue?vue&type=template&id=7bbbfa18&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_template_id_7bbbfa18_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_template_id_7bbbfa18_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/IconsDialog.vue?"); - -/***/ }), - -/***/ "./src/views/infra/build/JsonDrawer.vue": -/*!**********************************************!*\ - !*** ./src/views/infra/build/JsonDrawer.vue ***! - \**********************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _JsonDrawer_vue_vue_type_template_id_349212d3_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./JsonDrawer.vue?vue&type=template&id=349212d3&scoped=true& */ \"./src/views/infra/build/JsonDrawer.vue?vue&type=template&id=349212d3&scoped=true&\");\n/* harmony import */ var _JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./JsonDrawer.vue?vue&type=script&lang=js& */ \"./src/views/infra/build/JsonDrawer.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _JsonDrawer_vue_vue_type_style_index_0_id_349212d3_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true& */ \"./src/views/infra/build/JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _JsonDrawer_vue_vue_type_template_id_349212d3_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _JsonDrawer_vue_vue_type_template_id_349212d3_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"349212d3\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/infra/build/JsonDrawer.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/infra/build/JsonDrawer.vue?"); - -/***/ }), - -/***/ "./src/views/infra/build/JsonDrawer.vue?vue&type=script&lang=js&": -/*!***********************************************************************!*\ - !*** ./src/views/infra/build/JsonDrawer.vue?vue&type=script&lang=js& ***! - \***********************************************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./JsonDrawer.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/JsonDrawer.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/infra/build/JsonDrawer.vue?"); - -/***/ }), - -/***/ "./src/views/infra/build/JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true&": -/*!********************************************************************************************************!*\ - !*** ./src/views/infra/build/JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true& ***! - \********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_style_index_0_id_349212d3_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-style-loader??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_style_index_0_id_349212d3_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_style_index_0_id_349212d3_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_style_index_0_id_349212d3_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_style_index_0_id_349212d3_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/infra/build/JsonDrawer.vue?"); - -/***/ }), - -/***/ "./src/views/infra/build/JsonDrawer.vue?vue&type=template&id=349212d3&scoped=true&": -/*!*****************************************************************************************!*\ - !*** ./src/views/infra/build/JsonDrawer.vue?vue&type=template&id=349212d3&scoped=true& ***! - \*****************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_template_id_349212d3_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./JsonDrawer.vue?vue&type=template&id=349212d3&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/JsonDrawer.vue?vue&type=template&id=349212d3&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_template_id_349212d3_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_template_id_349212d3_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/JsonDrawer.vue?"); - -/***/ }), - -/***/ "./src/views/infra/build/ResourceDialog.vue": -/*!**************************************************!*\ - !*** ./src/views/infra/build/ResourceDialog.vue ***! - \**************************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ResourceDialog_vue_vue_type_template_id_1416fb60_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ResourceDialog.vue?vue&type=template&id=1416fb60&scoped=true& */ \"./src/views/infra/build/ResourceDialog.vue?vue&type=template&id=1416fb60&scoped=true&\");\n/* harmony import */ var _ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ResourceDialog.vue?vue&type=script&lang=js& */ \"./src/views/infra/build/ResourceDialog.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _ResourceDialog_vue_vue_type_style_index_0_id_1416fb60_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true& */ \"./src/views/infra/build/ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _ResourceDialog_vue_vue_type_template_id_1416fb60_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _ResourceDialog_vue_vue_type_template_id_1416fb60_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"1416fb60\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/infra/build/ResourceDialog.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/infra/build/ResourceDialog.vue?"); - -/***/ }), - -/***/ "./src/views/infra/build/ResourceDialog.vue?vue&type=script&lang=js&": -/*!***************************************************************************!*\ - !*** ./src/views/infra/build/ResourceDialog.vue?vue&type=script&lang=js& ***! - \***************************************************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./ResourceDialog.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/ResourceDialog.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/infra/build/ResourceDialog.vue?"); - -/***/ }), - -/***/ "./src/views/infra/build/ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true&": -/*!************************************************************************************************************!*\ - !*** ./src/views/infra/build/ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true& ***! - \************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_style_index_0_id_1416fb60_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-style-loader??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_style_index_0_id_1416fb60_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_style_index_0_id_1416fb60_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_style_index_0_id_1416fb60_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_style_index_0_id_1416fb60_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/infra/build/ResourceDialog.vue?"); - -/***/ }), - -/***/ "./src/views/infra/build/ResourceDialog.vue?vue&type=template&id=1416fb60&scoped=true&": -/*!*********************************************************************************************!*\ - !*** ./src/views/infra/build/ResourceDialog.vue?vue&type=template&id=1416fb60&scoped=true& ***! - \*********************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_template_id_1416fb60_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./ResourceDialog.vue?vue&type=template&id=1416fb60&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/ResourceDialog.vue?vue&type=template&id=1416fb60&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_template_id_1416fb60_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_template_id_1416fb60_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/ResourceDialog.vue?"); - -/***/ }), - -/***/ "./src/views/infra/build/RightPanel.vue": -/*!**********************************************!*\ - !*** ./src/views/infra/build/RightPanel.vue ***! - \**********************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _RightPanel_vue_vue_type_template_id_77ba98a2_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RightPanel.vue?vue&type=template&id=77ba98a2&scoped=true& */ \"./src/views/infra/build/RightPanel.vue?vue&type=template&id=77ba98a2&scoped=true&\");\n/* harmony import */ var _RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RightPanel.vue?vue&type=script&lang=js& */ \"./src/views/infra/build/RightPanel.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _RightPanel_vue_vue_type_style_index_0_id_77ba98a2_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true& */ \"./src/views/infra/build/RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _RightPanel_vue_vue_type_template_id_77ba98a2_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _RightPanel_vue_vue_type_template_id_77ba98a2_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"77ba98a2\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/infra/build/RightPanel.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/infra/build/RightPanel.vue?"); - -/***/ }), - -/***/ "./src/views/infra/build/RightPanel.vue?vue&type=script&lang=js&": -/*!***********************************************************************!*\ - !*** ./src/views/infra/build/RightPanel.vue?vue&type=script&lang=js& ***! - \***********************************************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./RightPanel.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/RightPanel.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/infra/build/RightPanel.vue?"); - -/***/ }), - -/***/ "./src/views/infra/build/RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true&": -/*!********************************************************************************************************!*\ - !*** ./src/views/infra/build/RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true& ***! - \********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_style_index_0_id_77ba98a2_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-style-loader??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_style_index_0_id_77ba98a2_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_style_index_0_id_77ba98a2_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_style_index_0_id_77ba98a2_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_style_index_0_id_77ba98a2_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/infra/build/RightPanel.vue?"); - -/***/ }), - -/***/ "./src/views/infra/build/RightPanel.vue?vue&type=template&id=77ba98a2&scoped=true&": -/*!*****************************************************************************************!*\ - !*** ./src/views/infra/build/RightPanel.vue?vue&type=template&id=77ba98a2&scoped=true& ***! - \*****************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_template_id_77ba98a2_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./RightPanel.vue?vue&type=template&id=77ba98a2&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/RightPanel.vue?vue&type=template&id=77ba98a2&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_template_id_77ba98a2_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_template_id_77ba98a2_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/RightPanel.vue?"); - -/***/ }), - -/***/ "./src/views/infra/build/TreeNodeDialog.vue": -/*!**************************************************!*\ - !*** ./src/views/infra/build/TreeNodeDialog.vue ***! - \**************************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _TreeNodeDialog_vue_vue_type_template_id_dae9c2fc_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TreeNodeDialog.vue?vue&type=template&id=dae9c2fc&scoped=true& */ \"./src/views/infra/build/TreeNodeDialog.vue?vue&type=template&id=dae9c2fc&scoped=true&\");\n/* harmony import */ var _TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TreeNodeDialog.vue?vue&type=script&lang=js& */ \"./src/views/infra/build/TreeNodeDialog.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _TreeNodeDialog_vue_vue_type_template_id_dae9c2fc_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _TreeNodeDialog_vue_vue_type_template_id_dae9c2fc_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"dae9c2fc\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/infra/build/TreeNodeDialog.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/infra/build/TreeNodeDialog.vue?"); - -/***/ }), - -/***/ "./src/views/infra/build/TreeNodeDialog.vue?vue&type=script&lang=js&": -/*!***************************************************************************!*\ - !*** ./src/views/infra/build/TreeNodeDialog.vue?vue&type=script&lang=js& ***! - \***************************************************************************/ -/*! no static exports found */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./TreeNodeDialog.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/TreeNodeDialog.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/infra/build/TreeNodeDialog.vue?"); - -/***/ }), - -/***/ "./src/views/infra/build/TreeNodeDialog.vue?vue&type=template&id=dae9c2fc&scoped=true&": -/*!*********************************************************************************************!*\ - !*** ./src/views/infra/build/TreeNodeDialog.vue?vue&type=template&id=dae9c2fc&scoped=true& ***! - \*********************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_template_id_dae9c2fc_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./TreeNodeDialog.vue?vue&type=template&id=dae9c2fc&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/TreeNodeDialog.vue?vue&type=template&id=dae9c2fc&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_template_id_dae9c2fc_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_template_id_dae9c2fc_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/TreeNodeDialog.vue?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_a83bd3b0_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/babel-loader/lib!../../node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib??vue-loader-options!./index.vue?vue&type=template&id=a83bd3b0&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"b76c6300-vue-loader-template\\\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/index.vue?vue&type=template&id=a83bd3b0&scoped=true&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_a83bd3b0_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_a83bd3b0_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_a83bd3b0_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_a83bd3b0_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/index.vue?"); /***/ }) diff --git a/yudao-server/src/main/resources/admin-ui/static/js/5.js.gz b/yudao-server/src/main/resources/admin-ui/static/js/5.js.gz index 6f94444ef67d2efed4e2310b59170d1344b38266..f5e3da469b520031bbfa728c05505a45af66fb42 100644 GIT binary patch literal 676769 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 z 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%0D)vZU06yS^xDN=lM=$j|OH| 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�eYgSqMUvBFG^@ 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 tnO){Xori>iogK9(_>UcLI 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�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%0DB#QzvV4GXc&AoK3I2zy0EOUDF^kNO!D? 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 Q{{!4!mrhs2iwN|80Q2xXM*si- diff --git a/yudao-server/src/main/resources/admin-ui/static/js/6.js b/yudao-server/src/main/resources/admin-ui/static/js/6.js index 616bcc82a0..a7bb9ec418 100644 --- a/yudao-server/src/main/resources/admin-ui/static/js/6.js +++ b/yudao-server/src/main/resources/admin-ui/static/js/6.js @@ -1,371 +1,932 @@ (window["webpackJsonp"] = window["webpackJsonp"] || []).push([[6],{ -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/index.vue?vue&type=script&lang=js&": +/***/ "./node_modules/@babel/parser/lib/index.js": +/*!*************************************************!*\ + !*** ./node_modules/@babel/parser/lib/index.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nclass Position {\n constructor(line, col, index) {\n this.line = void 0;\n this.column = void 0;\n this.index = void 0;\n this.line = line;\n this.column = col;\n this.index = index;\n }\n\n}\nclass SourceLocation {\n constructor(start, end) {\n this.start = void 0;\n this.end = void 0;\n this.filename = void 0;\n this.identifierName = void 0;\n this.start = start;\n this.end = end;\n }\n\n}\nfunction createPositionWithColumnOffset(position, columnOffset) {\n const {\n line,\n column,\n index\n } = position;\n return new Position(line, column + columnOffset, index + columnOffset);\n}\n\nconst ParseErrorCodes = Object.freeze({\n SyntaxError: \"BABEL_PARSER_SYNTAX_ERROR\",\n SourceTypeModuleError: \"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED\"\n});\n\nconst reflect = (keys, last = keys.length - 1) => ({\n get() {\n return keys.reduce((object, key) => object[key], this);\n },\n\n set(value) {\n keys.reduce((item, key, i) => i === last ? item[key] = value : item[key], this);\n }\n\n});\n\nconst instantiate = (constructor, properties, descriptors) => Object.keys(descriptors).map(key => [key, descriptors[key]]).filter(([, descriptor]) => !!descriptor).map(([key, descriptor]) => [key, typeof descriptor === \"function\" ? {\n value: descriptor,\n enumerable: false\n} : typeof descriptor.reflect === \"string\" ? Object.assign({}, descriptor, reflect(descriptor.reflect.split(\".\"))) : descriptor]).reduce((instance, [key, descriptor]) => Object.defineProperty(instance, key, Object.assign({\n configurable: true\n}, descriptor)), Object.assign(new constructor(), properties));\n\nvar ModuleErrors = (_ => ({\n ImportMetaOutsideModule: _(`import.meta may appear only with 'sourceType: \"module\"'`, {\n code: ParseErrorCodes.SourceTypeModuleError\n }),\n ImportOutsideModule: _(`'import' and 'export' may appear only with 'sourceType: \"module\"'`, {\n code: ParseErrorCodes.SourceTypeModuleError\n })\n}));\n\nconst NodeDescriptions = {\n ArrayPattern: \"array destructuring pattern\",\n AssignmentExpression: \"assignment expression\",\n AssignmentPattern: \"assignment expression\",\n ArrowFunctionExpression: \"arrow function expression\",\n ConditionalExpression: \"conditional expression\",\n ForOfStatement: \"for-of statement\",\n ForInStatement: \"for-in statement\",\n ForStatement: \"for-loop\",\n FormalParameters: \"function parameter list\",\n Identifier: \"identifier\",\n ObjectPattern: \"object destructuring pattern\",\n ParenthesizedExpression: \"parenthesized expression\",\n RestElement: \"rest element\",\n UpdateExpression: {\n true: \"prefix operation\",\n false: \"postfix operation\"\n },\n VariableDeclarator: \"variable declaration\",\n YieldExpression: \"yield expression\"\n};\n\nconst toNodeDescription = ({\n type,\n prefix\n}) => type === \"UpdateExpression\" ? NodeDescriptions.UpdateExpression[String(prefix)] : NodeDescriptions[type];\n\nvar StandardErrors = (_ => ({\n AccessorIsGenerator: _(({\n kind\n }) => `A ${kind}ter cannot be a generator.`),\n ArgumentsInClass: _(\"'arguments' is only allowed in functions and class methods.\"),\n AsyncFunctionInSingleStatementContext: _(\"Async functions can only be declared at the top level or inside a block.\"),\n AwaitBindingIdentifier: _(\"Can not use 'await' as identifier inside an async function.\"),\n AwaitBindingIdentifierInStaticBlock: _(\"Can not use 'await' as identifier inside a static block.\"),\n AwaitExpressionFormalParameter: _(\"'await' is not allowed in async function parameters.\"),\n AwaitNotInAsyncContext: _(\"'await' is only allowed within async functions and at the top levels of modules.\"),\n AwaitNotInAsyncFunction: _(\"'await' is only allowed within async functions.\"),\n BadGetterArity: _(\"A 'get' accesor must not have any formal parameters.\"),\n BadSetterArity: _(\"A 'set' accesor must have exactly one formal parameter.\"),\n BadSetterRestParameter: _(\"A 'set' accesor function argument must not be a rest parameter.\"),\n ConstructorClassField: _(\"Classes may not have a field named 'constructor'.\"),\n ConstructorClassPrivateField: _(\"Classes may not have a private field named '#constructor'.\"),\n ConstructorIsAccessor: _(\"Class constructor may not be an accessor.\"),\n ConstructorIsAsync: _(\"Constructor can't be an async function.\"),\n ConstructorIsGenerator: _(\"Constructor can't be a generator.\"),\n DeclarationMissingInitializer: _(({\n kind\n }) => `Missing initializer in ${kind} declaration.`),\n DecoratorBeforeExport: _(\"Decorators must be placed *before* the 'export' keyword. You can set the 'decoratorsBeforeExport' option to false to use the 'export @decorator class {}' syntax.\"),\n DecoratorConstructor: _(\"Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?\"),\n DecoratorExportClass: _(\"Using the export keyword between a decorator and a class is not allowed. Please use `export @dec class` instead.\"),\n DecoratorSemicolon: _(\"Decorators must not be followed by a semicolon.\"),\n DecoratorStaticBlock: _(\"Decorators can't be used with a static block.\"),\n DeletePrivateField: _(\"Deleting a private field is not allowed.\"),\n DestructureNamedImport: _(\"ES2015 named imports do not destructure. Use another statement for destructuring after the import.\"),\n DuplicateConstructor: _(\"Duplicate constructor in the same class.\"),\n DuplicateDefaultExport: _(\"Only one default export allowed per module.\"),\n DuplicateExport: _(({\n exportName\n }) => `\\`${exportName}\\` has already been exported. Exported identifiers must be unique.`),\n DuplicateProto: _(\"Redefinition of __proto__ property.\"),\n DuplicateRegExpFlags: _(\"Duplicate regular expression flag.\"),\n ElementAfterRest: _(\"Rest element must be last element.\"),\n EscapedCharNotAnIdentifier: _(\"Invalid Unicode escape.\"),\n ExportBindingIsString: _(({\n localName,\n exportName\n }) => `A string literal cannot be used as an exported binding without \\`from\\`.\\n- Did you mean \\`export { '${localName}' as '${exportName}' } from 'some-module'\\`?`),\n ExportDefaultFromAsIdentifier: _(\"'from' is not allowed as an identifier after 'export default'.\"),\n ForInOfLoopInitializer: _(({\n type\n }) => `'${type === \"ForInStatement\" ? \"for-in\" : \"for-of\"}' loop variable declaration may not have an initializer.`),\n ForOfAsync: _(\"The left-hand side of a for-of loop may not be 'async'.\"),\n ForOfLet: _(\"The left-hand side of a for-of loop may not start with 'let'.\"),\n GeneratorInSingleStatementContext: _(\"Generators can only be declared at the top level or inside a block.\"),\n IllegalBreakContinue: _(({\n type\n }) => `Unsyntactic ${type === \"BreakStatement\" ? \"break\" : \"continue\"}.`),\n IllegalLanguageModeDirective: _(\"Illegal 'use strict' directive in function with non-simple parameter list.\"),\n IllegalReturn: _(\"'return' outside of function.\"),\n ImportBindingIsString: _(({\n importName\n }) => `A string literal cannot be used as an imported binding.\\n- Did you mean \\`import { \"${importName}\" as foo }\\`?`),\n ImportCallArgumentTrailingComma: _(\"Trailing comma is disallowed inside import(...) arguments.\"),\n ImportCallArity: _(({\n maxArgumentCount\n }) => `\\`import()\\` requires exactly ${maxArgumentCount === 1 ? \"one argument\" : \"one or two arguments\"}.`),\n ImportCallNotNewExpression: _(\"Cannot use new with import(...).\"),\n ImportCallSpreadArgument: _(\"`...` is not allowed in `import()`.\"),\n IncompatibleRegExpUVFlags: _(\"The 'u' and 'v' regular expression flags cannot be enabled at the same time.\"),\n InvalidBigIntLiteral: _(\"Invalid BigIntLiteral.\"),\n InvalidCodePoint: _(\"Code point out of bounds.\"),\n InvalidCoverInitializedName: _(\"Invalid shorthand property initializer.\"),\n InvalidDecimal: _(\"Invalid decimal.\"),\n InvalidDigit: _(({\n radix\n }) => `Expected number in radix ${radix}.`),\n InvalidEscapeSequence: _(\"Bad character escape sequence.\"),\n InvalidEscapeSequenceTemplate: _(\"Invalid escape sequence in template.\"),\n InvalidEscapedReservedWord: _(({\n reservedWord\n }) => `Escape sequence in keyword ${reservedWord}.`),\n InvalidIdentifier: _(({\n identifierName\n }) => `Invalid identifier ${identifierName}.`),\n InvalidLhs: _(({\n ancestor\n }) => `Invalid left-hand side in ${toNodeDescription(ancestor)}.`),\n InvalidLhsBinding: _(({\n ancestor\n }) => `Binding invalid left-hand side in ${toNodeDescription(ancestor)}.`),\n InvalidNumber: _(\"Invalid number.\"),\n InvalidOrMissingExponent: _(\"Floating-point numbers require a valid exponent after the 'e'.\"),\n InvalidOrUnexpectedToken: _(({\n unexpected\n }) => `Unexpected character '${unexpected}'.`),\n InvalidParenthesizedAssignment: _(\"Invalid parenthesized assignment pattern.\"),\n InvalidPrivateFieldResolution: _(({\n identifierName\n }) => `Private name #${identifierName} is not defined.`),\n InvalidPropertyBindingPattern: _(\"Binding member expression.\"),\n InvalidRecordProperty: _(\"Only properties and spread elements are allowed in record definitions.\"),\n InvalidRestAssignmentPattern: _(\"Invalid rest operator's argument.\"),\n LabelRedeclaration: _(({\n labelName\n }) => `Label '${labelName}' is already declared.`),\n LetInLexicalBinding: _(\"'let' is not allowed to be used as a name in 'let' or 'const' declarations.\"),\n LineTerminatorBeforeArrow: _(\"No line break is allowed before '=>'.\"),\n MalformedRegExpFlags: _(\"Invalid regular expression flag.\"),\n MissingClassName: _(\"A class name is required.\"),\n MissingEqInAssignment: _(\"Only '=' operator can be used for specifying default value.\"),\n MissingSemicolon: _(\"Missing semicolon.\"),\n MissingPlugin: _(({\n missingPlugin\n }) => `This experimental syntax requires enabling the parser plugin: ${missingPlugin.map(name => JSON.stringify(name)).join(\", \")}.`),\n MissingOneOfPlugins: _(({\n missingPlugin\n }) => `This experimental syntax requires enabling one of the following parser plugin(s): ${missingPlugin.map(name => JSON.stringify(name)).join(\", \")}.`),\n MissingUnicodeEscape: _(\"Expecting Unicode escape sequence \\\\uXXXX.\"),\n MixingCoalesceWithLogical: _(\"Nullish coalescing operator(??) requires parens when mixing with logical operators.\"),\n ModuleAttributeDifferentFromType: _(\"The only accepted module attribute is `type`.\"),\n ModuleAttributeInvalidValue: _(\"Only string literals are allowed as module attribute values.\"),\n ModuleAttributesWithDuplicateKeys: _(({\n key\n }) => `Duplicate key \"${key}\" is not allowed in module attributes.`),\n ModuleExportNameHasLoneSurrogate: _(({\n surrogateCharCode\n }) => `An export name cannot include a lone surrogate, found '\\\\u${surrogateCharCode.toString(16)}'.`),\n ModuleExportUndefined: _(({\n localName\n }) => `Export '${localName}' is not defined.`),\n MultipleDefaultsInSwitch: _(\"Multiple default clauses.\"),\n NewlineAfterThrow: _(\"Illegal newline after throw.\"),\n NoCatchOrFinally: _(\"Missing catch or finally clause.\"),\n NumberIdentifier: _(\"Identifier directly after number.\"),\n NumericSeparatorInEscapeSequence: _(\"Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.\"),\n ObsoleteAwaitStar: _(\"'await*' has been removed from the async functions proposal. Use Promise.all() instead.\"),\n OptionalChainingNoNew: _(\"Constructors in/after an Optional Chain are not allowed.\"),\n OptionalChainingNoTemplate: _(\"Tagged Template Literals are not allowed in optionalChain.\"),\n OverrideOnConstructor: _(\"'override' modifier cannot appear on a constructor declaration.\"),\n ParamDupe: _(\"Argument name clash.\"),\n PatternHasAccessor: _(\"Object pattern can't contain getter or setter.\"),\n PatternHasMethod: _(\"Object pattern can't contain methods.\"),\n PrivateInExpectedIn: _(({\n identifierName\n }) => `Private names are only allowed in property accesses (\\`obj.#${identifierName}\\`) or in \\`in\\` expressions (\\`#${identifierName} in obj\\`).`),\n PrivateNameRedeclaration: _(({\n identifierName\n }) => `Duplicate private name #${identifierName}.`),\n RecordExpressionBarIncorrectEndSyntaxType: _(\"Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\"),\n RecordExpressionBarIncorrectStartSyntaxType: _(\"Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\"),\n RecordExpressionHashIncorrectStartSyntaxType: _(\"Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.\"),\n RecordNoProto: _(\"'__proto__' is not allowed in Record expressions.\"),\n RestTrailingComma: _(\"Unexpected trailing comma after rest element.\"),\n SloppyFunction: _(\"In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.\"),\n StaticPrototype: _(\"Classes may not have static property named prototype.\"),\n SuperNotAllowed: _(\"`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?\"),\n SuperPrivateField: _(\"Private fields can't be accessed on super.\"),\n TrailingDecorator: _(\"Decorators must be attached to a class element.\"),\n TupleExpressionBarIncorrectEndSyntaxType: _(\"Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\"),\n TupleExpressionBarIncorrectStartSyntaxType: _(\"Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\"),\n TupleExpressionHashIncorrectStartSyntaxType: _(\"Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.\"),\n UnexpectedArgumentPlaceholder: _(\"Unexpected argument placeholder.\"),\n UnexpectedAwaitAfterPipelineBody: _('Unexpected \"await\" after pipeline body; await must have parentheses in minimal proposal.'),\n UnexpectedDigitAfterHash: _(\"Unexpected digit after hash token.\"),\n UnexpectedImportExport: _(\"'import' and 'export' may only appear at the top level.\"),\n UnexpectedKeyword: _(({\n keyword\n }) => `Unexpected keyword '${keyword}'.`),\n UnexpectedLeadingDecorator: _(\"Leading decorators must be attached to a class declaration.\"),\n UnexpectedLexicalDeclaration: _(\"Lexical declaration cannot appear in a single-statement context.\"),\n UnexpectedNewTarget: _(\"`new.target` can only be used in functions or class properties.\"),\n UnexpectedNumericSeparator: _(\"A numeric separator is only allowed between two digits.\"),\n UnexpectedPrivateField: _(\"Unexpected private name.\"),\n UnexpectedReservedWord: _(({\n reservedWord\n }) => `Unexpected reserved word '${reservedWord}'.`),\n UnexpectedSuper: _(\"'super' is only allowed in object methods and classes.\"),\n UnexpectedToken: _(({\n expected,\n unexpected\n }) => `Unexpected token${unexpected ? ` '${unexpected}'.` : \"\"}${expected ? `, expected \"${expected}\"` : \"\"}`),\n UnexpectedTokenUnaryExponentiation: _(\"Illegal expression. Wrap left hand side or entire exponentiation in parentheses.\"),\n UnsupportedBind: _(\"Binding should be performed on object property.\"),\n UnsupportedDecoratorExport: _(\"A decorated export must export a class declaration.\"),\n UnsupportedDefaultExport: _(\"Only expressions, functions or classes are allowed as the `default` export.\"),\n UnsupportedImport: _(\"`import` can only be used in `import()` or `import.meta`.\"),\n UnsupportedMetaProperty: _(({\n target,\n onlyValidPropertyName\n }) => `The only valid meta property for ${target} is ${target}.${onlyValidPropertyName}.`),\n UnsupportedParameterDecorator: _(\"Decorators cannot be used to decorate parameters.\"),\n UnsupportedPropertyDecorator: _(\"Decorators cannot be used to decorate object literal properties.\"),\n UnsupportedSuper: _(\"'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).\"),\n UnterminatedComment: _(\"Unterminated comment.\"),\n UnterminatedRegExp: _(\"Unterminated regular expression.\"),\n UnterminatedString: _(\"Unterminated string constant.\"),\n UnterminatedTemplate: _(\"Unterminated template.\"),\n VarRedeclaration: _(({\n identifierName\n }) => `Identifier '${identifierName}' has already been declared.`),\n YieldBindingIdentifier: _(\"Can not use 'yield' as identifier inside a generator.\"),\n YieldInParameter: _(\"Yield expression is not allowed in formal parameters.\"),\n ZeroDigitNumericSeparator: _(\"Numeric separator can not be used after leading 0.\")\n}));\n\nvar StrictModeErrors = (_ => ({\n StrictDelete: _(\"Deleting local variable in strict mode.\"),\n StrictEvalArguments: _(({\n referenceName\n }) => `Assigning to '${referenceName}' in strict mode.`),\n StrictEvalArgumentsBinding: _(({\n bindingName\n }) => `Binding '${bindingName}' in strict mode.`),\n StrictFunction: _(\"In strict mode code, functions can only be declared at top level or inside a block.\"),\n StrictNumericEscape: _(\"The only valid numeric escape in strict mode is '\\\\0'.\"),\n StrictOctalLiteral: _(\"Legacy octal literals are not allowed in strict mode.\"),\n StrictWith: _(\"'with' in strict mode.\")\n}));\n\nconst UnparenthesizedPipeBodyDescriptions = new Set([\"ArrowFunctionExpression\", \"AssignmentExpression\", \"ConditionalExpression\", \"YieldExpression\"]);\nvar PipelineOperatorErrors = (_ => ({\n PipeBodyIsTighter: _(\"Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.\"),\n PipeTopicRequiresHackPipes: _('Topic reference is used, but the pipelineOperator plugin was not passed a \"proposal\": \"hack\" or \"smart\" option.'),\n PipeTopicUnbound: _(\"Topic reference is unbound; it must be inside a pipe body.\"),\n PipeTopicUnconfiguredToken: _(({\n token\n }) => `Invalid topic token ${token}. In order to use ${token} as a topic reference, the pipelineOperator plugin must be configured with { \"proposal\": \"hack\", \"topicToken\": \"${token}\" }.`),\n PipeTopicUnused: _(\"Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.\"),\n PipeUnparenthesizedBody: _(({\n type\n }) => `Hack-style pipe body cannot be an unparenthesized ${toNodeDescription({\n type\n })}; please wrap it in parentheses.`),\n PipelineBodyNoArrow: _('Unexpected arrow \"=>\" after pipeline body; arrow function in pipeline body must be parenthesized.'),\n PipelineBodySequenceExpression: _(\"Pipeline body may not be a comma-separated sequence expression.\"),\n PipelineHeadSequenceExpression: _(\"Pipeline head should not be a comma-separated sequence expression.\"),\n PipelineTopicUnused: _(\"Pipeline is in topic style but does not use topic reference.\"),\n PrimaryTopicNotAllowed: _(\"Topic reference was used in a lexical context without topic binding.\"),\n PrimaryTopicRequiresSmartPipeline: _('Topic reference is used, but the pipelineOperator plugin was not passed a \"proposal\": \"hack\" or \"smart\" option.')\n}));\n\nconst _excluded$1 = [\"toMessage\"];\n\nfunction toParseErrorConstructor(_ref) {\n let {\n toMessage\n } = _ref,\n properties = _objectWithoutPropertiesLoose(_ref, _excluded$1);\n\n return function constructor({\n loc,\n details\n }) {\n return instantiate(SyntaxError, Object.assign({}, properties, {\n loc\n }), {\n clone(overrides = {}) {\n const loc = overrides.loc || {};\n return constructor({\n loc: new Position(\"line\" in loc ? loc.line : this.loc.line, \"column\" in loc ? loc.column : this.loc.column, \"index\" in loc ? loc.index : this.loc.index),\n details: Object.assign({}, this.details, overrides.details)\n });\n },\n\n details: {\n value: details,\n enumerable: false\n },\n message: {\n get() {\n return `${toMessage(this.details)} (${this.loc.line}:${this.loc.column})`;\n },\n\n set(value) {\n Object.defineProperty(this, \"message\", {\n value\n });\n }\n\n },\n pos: {\n reflect: \"loc.index\",\n enumerable: true\n },\n missingPlugin: \"missingPlugin\" in details && {\n reflect: \"details.missingPlugin\",\n enumerable: true\n }\n });\n };\n}\n\nfunction toParseErrorCredentials(toMessageOrMessage, credentials) {\n return Object.assign({\n toMessage: typeof toMessageOrMessage === \"string\" ? () => toMessageOrMessage : toMessageOrMessage\n }, credentials);\n}\nfunction ParseErrorEnum(argument, syntaxPlugin) {\n if (Array.isArray(argument)) {\n return toParseErrorCredentialsMap => ParseErrorEnum(toParseErrorCredentialsMap, argument[0]);\n }\n\n const partialCredentials = argument(toParseErrorCredentials);\n const ParseErrorConstructors = {};\n\n for (const reasonCode of Object.keys(partialCredentials)) {\n ParseErrorConstructors[reasonCode] = toParseErrorConstructor(Object.assign({\n code: ParseErrorCodes.SyntaxError,\n reasonCode\n }, syntaxPlugin ? {\n syntaxPlugin\n } : {}, partialCredentials[reasonCode]));\n }\n\n return ParseErrorConstructors;\n}\nconst Errors = Object.assign({}, ParseErrorEnum(ModuleErrors), ParseErrorEnum(StandardErrors), ParseErrorEnum(StrictModeErrors), ParseErrorEnum`pipelineOperator`(PipelineOperatorErrors));\n\nconst {\n defineProperty\n} = Object;\n\nconst toUnenumerable = (object, key) => defineProperty(object, key, {\n enumerable: false,\n value: object[key]\n});\n\nfunction toESTreeLocation(node) {\n node.loc.start && toUnenumerable(node.loc.start, \"index\");\n node.loc.end && toUnenumerable(node.loc.end, \"index\");\n return node;\n}\n\nvar estree = (superClass => class extends superClass {\n parse() {\n const file = toESTreeLocation(super.parse());\n\n if (this.options.tokens) {\n file.tokens = file.tokens.map(toESTreeLocation);\n }\n\n return file;\n }\n\n parseRegExpLiteral({\n pattern,\n flags\n }) {\n let regex = null;\n\n try {\n regex = new RegExp(pattern, flags);\n } catch (e) {}\n\n const node = this.estreeParseLiteral(regex);\n node.regex = {\n pattern,\n flags\n };\n return node;\n }\n\n parseBigIntLiteral(value) {\n let bigInt;\n\n try {\n bigInt = BigInt(value);\n } catch (_unused) {\n bigInt = null;\n }\n\n const node = this.estreeParseLiteral(bigInt);\n node.bigint = String(node.value || value);\n return node;\n }\n\n parseDecimalLiteral(value) {\n const decimal = null;\n const node = this.estreeParseLiteral(decimal);\n node.decimal = String(node.value || value);\n return node;\n }\n\n estreeParseLiteral(value) {\n return this.parseLiteral(value, \"Literal\");\n }\n\n parseStringLiteral(value) {\n return this.estreeParseLiteral(value);\n }\n\n parseNumericLiteral(value) {\n return this.estreeParseLiteral(value);\n }\n\n parseNullLiteral() {\n return this.estreeParseLiteral(null);\n }\n\n parseBooleanLiteral(value) {\n return this.estreeParseLiteral(value);\n }\n\n directiveToStmt(directive) {\n const directiveLiteral = directive.value;\n const stmt = this.startNodeAt(directive.start, directive.loc.start);\n const expression = this.startNodeAt(directiveLiteral.start, directiveLiteral.loc.start);\n expression.value = directiveLiteral.extra.expressionValue;\n expression.raw = directiveLiteral.extra.raw;\n stmt.expression = this.finishNodeAt(expression, \"Literal\", directiveLiteral.loc.end);\n stmt.directive = directiveLiteral.extra.raw.slice(1, -1);\n return this.finishNodeAt(stmt, \"ExpressionStatement\", directive.loc.end);\n }\n\n initFunction(node, isAsync) {\n super.initFunction(node, isAsync);\n node.expression = false;\n }\n\n checkDeclaration(node) {\n if (node != null && this.isObjectProperty(node)) {\n this.checkDeclaration(node.value);\n } else {\n super.checkDeclaration(node);\n }\n }\n\n getObjectOrClassMethodParams(method) {\n return method.value.params;\n }\n\n isValidDirective(stmt) {\n var _stmt$expression$extr;\n\n return stmt.type === \"ExpressionStatement\" && stmt.expression.type === \"Literal\" && typeof stmt.expression.value === \"string\" && !((_stmt$expression$extr = stmt.expression.extra) != null && _stmt$expression$extr.parenthesized);\n }\n\n parseBlockBody(node, ...args) {\n super.parseBlockBody(node, ...args);\n const directiveStatements = node.directives.map(d => this.directiveToStmt(d));\n node.body = directiveStatements.concat(node.body);\n delete node.directives;\n }\n\n pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {\n this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, \"ClassMethod\", true);\n\n if (method.typeParameters) {\n method.value.typeParameters = method.typeParameters;\n delete method.typeParameters;\n }\n\n classBody.body.push(method);\n }\n\n parsePrivateName() {\n const node = super.parsePrivateName();\n {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return node;\n }\n }\n return this.convertPrivateNameToPrivateIdentifier(node);\n }\n\n convertPrivateNameToPrivateIdentifier(node) {\n const name = super.getPrivateNameSV(node);\n node = node;\n delete node.id;\n node.name = name;\n node.type = \"PrivateIdentifier\";\n return node;\n }\n\n isPrivateName(node) {\n {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return super.isPrivateName(node);\n }\n }\n return node.type === \"PrivateIdentifier\";\n }\n\n getPrivateNameSV(node) {\n {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return super.getPrivateNameSV(node);\n }\n }\n return node.name;\n }\n\n parseLiteral(value, type) {\n const node = super.parseLiteral(value, type);\n node.raw = node.extra.raw;\n delete node.extra;\n return node;\n }\n\n parseFunctionBody(node, allowExpression, isMethod = false) {\n super.parseFunctionBody(node, allowExpression, isMethod);\n node.expression = node.body.type !== \"BlockStatement\";\n }\n\n parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) {\n let funcNode = this.startNode();\n funcNode.kind = node.kind;\n funcNode = super.parseMethod(funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope);\n funcNode.type = \"FunctionExpression\";\n delete funcNode.kind;\n node.value = funcNode;\n\n if (type === \"ClassPrivateMethod\") {\n node.computed = false;\n }\n\n type = \"MethodDefinition\";\n return this.finishNode(node, type);\n }\n\n parseClassProperty(...args) {\n const propertyNode = super.parseClassProperty(...args);\n {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return propertyNode;\n }\n }\n propertyNode.type = \"PropertyDefinition\";\n return propertyNode;\n }\n\n parseClassPrivateProperty(...args) {\n const propertyNode = super.parseClassPrivateProperty(...args);\n {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return propertyNode;\n }\n }\n propertyNode.type = \"PropertyDefinition\";\n propertyNode.computed = false;\n return propertyNode;\n }\n\n parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) {\n const node = super.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor);\n\n if (node) {\n node.type = \"Property\";\n if (node.kind === \"method\") node.kind = \"init\";\n node.shorthand = false;\n }\n\n return node;\n }\n\n parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors) {\n const node = super.parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors);\n\n if (node) {\n node.kind = \"init\";\n node.type = \"Property\";\n }\n\n return node;\n }\n\n isValidLVal(type, ...rest) {\n return type === \"Property\" ? \"value\" : super.isValidLVal(type, ...rest);\n }\n\n isAssignable(node, isBinding) {\n if (node != null && this.isObjectProperty(node)) {\n return this.isAssignable(node.value, isBinding);\n }\n\n return super.isAssignable(node, isBinding);\n }\n\n toAssignable(node, isLHS = false) {\n if (node != null && this.isObjectProperty(node)) {\n const {\n key,\n value\n } = node;\n\n if (this.isPrivateName(key)) {\n this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start);\n }\n\n this.toAssignable(value, isLHS);\n } else {\n super.toAssignable(node, isLHS);\n }\n }\n\n toAssignableObjectExpressionProp(prop) {\n if (prop.kind === \"get\" || prop.kind === \"set\") {\n this.raise(Errors.PatternHasAccessor, {\n at: prop.key\n });\n } else if (prop.method) {\n this.raise(Errors.PatternHasMethod, {\n at: prop.key\n });\n } else {\n super.toAssignableObjectExpressionProp(...arguments);\n }\n }\n\n finishCallExpression(node, optional) {\n super.finishCallExpression(node, optional);\n\n if (node.callee.type === \"Import\") {\n node.type = \"ImportExpression\";\n node.source = node.arguments[0];\n\n if (this.hasPlugin(\"importAssertions\")) {\n var _node$arguments$;\n\n node.attributes = (_node$arguments$ = node.arguments[1]) != null ? _node$arguments$ : null;\n }\n\n delete node.arguments;\n delete node.callee;\n }\n\n return node;\n }\n\n toReferencedArguments(node) {\n if (node.type === \"ImportExpression\") {\n return;\n }\n\n super.toReferencedArguments(node);\n }\n\n parseExport(node) {\n super.parseExport(node);\n\n switch (node.type) {\n case \"ExportAllDeclaration\":\n node.exported = null;\n break;\n\n case \"ExportNamedDeclaration\":\n if (node.specifiers.length === 1 && node.specifiers[0].type === \"ExportNamespaceSpecifier\") {\n node.type = \"ExportAllDeclaration\";\n node.exported = node.specifiers[0].exported;\n delete node.specifiers;\n }\n\n break;\n }\n\n return node;\n }\n\n parseSubscript(base, startPos, startLoc, noCalls, state) {\n const node = super.parseSubscript(base, startPos, startLoc, noCalls, state);\n\n if (state.optionalChainMember) {\n if (node.type === \"OptionalMemberExpression\" || node.type === \"OptionalCallExpression\") {\n node.type = node.type.substring(8);\n }\n\n if (state.stop) {\n const chain = this.startNodeAtNode(node);\n chain.expression = node;\n return this.finishNode(chain, \"ChainExpression\");\n }\n } else if (node.type === \"MemberExpression\" || node.type === \"CallExpression\") {\n node.optional = false;\n }\n\n return node;\n }\n\n hasPropertyAsPrivateName(node) {\n if (node.type === \"ChainExpression\") {\n node = node.expression;\n }\n\n return super.hasPropertyAsPrivateName(node);\n }\n\n isOptionalChain(node) {\n return node.type === \"ChainExpression\";\n }\n\n isObjectProperty(node) {\n return node.type === \"Property\" && node.kind === \"init\" && !node.method;\n }\n\n isObjectMethod(node) {\n return node.method || node.kind === \"get\" || node.kind === \"set\";\n }\n\n finishNodeAt(node, type, endLoc) {\n return toESTreeLocation(super.finishNodeAt(node, type, endLoc));\n }\n\n resetStartLocation(node, start, startLoc) {\n super.resetStartLocation(node, start, startLoc);\n toESTreeLocation(node);\n }\n\n resetEndLocation(node, endLoc = this.state.lastTokEndLoc) {\n super.resetEndLocation(node, endLoc);\n toESTreeLocation(node);\n }\n\n});\n\nclass TokContext {\n constructor(token, preserveSpace) {\n this.token = void 0;\n this.preserveSpace = void 0;\n this.token = token;\n this.preserveSpace = !!preserveSpace;\n }\n\n}\nconst types = {\n brace: new TokContext(\"{\"),\n j_oTag: new TokContext(\"...\", true)\n};\n{\n types.template = new TokContext(\"`\", true);\n}\n\nconst beforeExpr = true;\nconst startsExpr = true;\nconst isLoop = true;\nconst isAssign = true;\nconst prefix = true;\nconst postfix = true;\nclass ExportedTokenType {\n constructor(label, conf = {}) {\n this.label = void 0;\n this.keyword = void 0;\n this.beforeExpr = void 0;\n this.startsExpr = void 0;\n this.rightAssociative = void 0;\n this.isLoop = void 0;\n this.isAssign = void 0;\n this.prefix = void 0;\n this.postfix = void 0;\n this.binop = void 0;\n this.label = label;\n this.keyword = conf.keyword;\n this.beforeExpr = !!conf.beforeExpr;\n this.startsExpr = !!conf.startsExpr;\n this.rightAssociative = !!conf.rightAssociative;\n this.isLoop = !!conf.isLoop;\n this.isAssign = !!conf.isAssign;\n this.prefix = !!conf.prefix;\n this.postfix = !!conf.postfix;\n this.binop = conf.binop != null ? conf.binop : null;\n {\n this.updateContext = null;\n }\n }\n\n}\nconst keywords$1 = new Map();\n\nfunction createKeyword(name, options = {}) {\n options.keyword = name;\n const token = createToken(name, options);\n keywords$1.set(name, token);\n return token;\n}\n\nfunction createBinop(name, binop) {\n return createToken(name, {\n beforeExpr,\n binop\n });\n}\n\nlet tokenTypeCounter = -1;\nconst tokenTypes = [];\nconst tokenLabels = [];\nconst tokenBinops = [];\nconst tokenBeforeExprs = [];\nconst tokenStartsExprs = [];\nconst tokenPrefixes = [];\n\nfunction createToken(name, options = {}) {\n var _options$binop, _options$beforeExpr, _options$startsExpr, _options$prefix;\n\n ++tokenTypeCounter;\n tokenLabels.push(name);\n tokenBinops.push((_options$binop = options.binop) != null ? _options$binop : -1);\n tokenBeforeExprs.push((_options$beforeExpr = options.beforeExpr) != null ? _options$beforeExpr : false);\n tokenStartsExprs.push((_options$startsExpr = options.startsExpr) != null ? _options$startsExpr : false);\n tokenPrefixes.push((_options$prefix = options.prefix) != null ? _options$prefix : false);\n tokenTypes.push(new ExportedTokenType(name, options));\n return tokenTypeCounter;\n}\n\nfunction createKeywordLike(name, options = {}) {\n var _options$binop2, _options$beforeExpr2, _options$startsExpr2, _options$prefix2;\n\n ++tokenTypeCounter;\n keywords$1.set(name, tokenTypeCounter);\n tokenLabels.push(name);\n tokenBinops.push((_options$binop2 = options.binop) != null ? _options$binop2 : -1);\n tokenBeforeExprs.push((_options$beforeExpr2 = options.beforeExpr) != null ? _options$beforeExpr2 : false);\n tokenStartsExprs.push((_options$startsExpr2 = options.startsExpr) != null ? _options$startsExpr2 : false);\n tokenPrefixes.push((_options$prefix2 = options.prefix) != null ? _options$prefix2 : false);\n tokenTypes.push(new ExportedTokenType(\"name\", options));\n return tokenTypeCounter;\n}\n\nconst tt = {\n bracketL: createToken(\"[\", {\n beforeExpr,\n startsExpr\n }),\n bracketHashL: createToken(\"#[\", {\n beforeExpr,\n startsExpr\n }),\n bracketBarL: createToken(\"[|\", {\n beforeExpr,\n startsExpr\n }),\n bracketR: createToken(\"]\"),\n bracketBarR: createToken(\"|]\"),\n braceL: createToken(\"{\", {\n beforeExpr,\n startsExpr\n }),\n braceBarL: createToken(\"{|\", {\n beforeExpr,\n startsExpr\n }),\n braceHashL: createToken(\"#{\", {\n beforeExpr,\n startsExpr\n }),\n braceR: createToken(\"}\"),\n braceBarR: createToken(\"|}\"),\n parenL: createToken(\"(\", {\n beforeExpr,\n startsExpr\n }),\n parenR: createToken(\")\"),\n comma: createToken(\",\", {\n beforeExpr\n }),\n semi: createToken(\";\", {\n beforeExpr\n }),\n colon: createToken(\":\", {\n beforeExpr\n }),\n doubleColon: createToken(\"::\", {\n beforeExpr\n }),\n dot: createToken(\".\"),\n question: createToken(\"?\", {\n beforeExpr\n }),\n questionDot: createToken(\"?.\"),\n arrow: createToken(\"=>\", {\n beforeExpr\n }),\n template: createToken(\"template\"),\n ellipsis: createToken(\"...\", {\n beforeExpr\n }),\n backQuote: createToken(\"`\", {\n startsExpr\n }),\n dollarBraceL: createToken(\"${\", {\n beforeExpr,\n startsExpr\n }),\n templateTail: createToken(\"...`\", {\n startsExpr\n }),\n templateNonTail: createToken(\"...${\", {\n beforeExpr,\n startsExpr\n }),\n at: createToken(\"@\"),\n hash: createToken(\"#\", {\n startsExpr\n }),\n interpreterDirective: createToken(\"#!...\"),\n eq: createToken(\"=\", {\n beforeExpr,\n isAssign\n }),\n assign: createToken(\"_=\", {\n beforeExpr,\n isAssign\n }),\n slashAssign: createToken(\"_=\", {\n beforeExpr,\n isAssign\n }),\n xorAssign: createToken(\"_=\", {\n beforeExpr,\n isAssign\n }),\n moduloAssign: createToken(\"_=\", {\n beforeExpr,\n isAssign\n }),\n incDec: createToken(\"++/--\", {\n prefix,\n postfix,\n startsExpr\n }),\n bang: createToken(\"!\", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n tilde: createToken(\"~\", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n doubleCaret: createToken(\"^^\", {\n startsExpr\n }),\n doubleAt: createToken(\"@@\", {\n startsExpr\n }),\n pipeline: createBinop(\"|>\", 0),\n nullishCoalescing: createBinop(\"??\", 1),\n logicalOR: createBinop(\"||\", 1),\n logicalAND: createBinop(\"&&\", 2),\n bitwiseOR: createBinop(\"|\", 3),\n bitwiseXOR: createBinop(\"^\", 4),\n bitwiseAND: createBinop(\"&\", 5),\n equality: createBinop(\"==/!=/===/!==\", 6),\n lt: createBinop(\"/<=/>=\", 7),\n gt: createBinop(\"/<=/>=\", 7),\n relational: createBinop(\"/<=/>=\", 7),\n bitShift: createBinop(\"<>/>>>\", 8),\n bitShiftL: createBinop(\"<>/>>>\", 8),\n bitShiftR: createBinop(\"<>/>>>\", 8),\n plusMin: createToken(\"+/-\", {\n beforeExpr,\n binop: 9,\n prefix,\n startsExpr\n }),\n modulo: createToken(\"%\", {\n binop: 10,\n startsExpr\n }),\n star: createToken(\"*\", {\n binop: 10\n }),\n slash: createBinop(\"/\", 10),\n exponent: createToken(\"**\", {\n beforeExpr,\n binop: 11,\n rightAssociative: true\n }),\n _in: createKeyword(\"in\", {\n beforeExpr,\n binop: 7\n }),\n _instanceof: createKeyword(\"instanceof\", {\n beforeExpr,\n binop: 7\n }),\n _break: createKeyword(\"break\"),\n _case: createKeyword(\"case\", {\n beforeExpr\n }),\n _catch: createKeyword(\"catch\"),\n _continue: createKeyword(\"continue\"),\n _debugger: createKeyword(\"debugger\"),\n _default: createKeyword(\"default\", {\n beforeExpr\n }),\n _else: createKeyword(\"else\", {\n beforeExpr\n }),\n _finally: createKeyword(\"finally\"),\n _function: createKeyword(\"function\", {\n startsExpr\n }),\n _if: createKeyword(\"if\"),\n _return: createKeyword(\"return\", {\n beforeExpr\n }),\n _switch: createKeyword(\"switch\"),\n _throw: createKeyword(\"throw\", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n _try: createKeyword(\"try\"),\n _var: createKeyword(\"var\"),\n _const: createKeyword(\"const\"),\n _with: createKeyword(\"with\"),\n _new: createKeyword(\"new\", {\n beforeExpr,\n startsExpr\n }),\n _this: createKeyword(\"this\", {\n startsExpr\n }),\n _super: createKeyword(\"super\", {\n startsExpr\n }),\n _class: createKeyword(\"class\", {\n startsExpr\n }),\n _extends: createKeyword(\"extends\", {\n beforeExpr\n }),\n _export: createKeyword(\"export\"),\n _import: createKeyword(\"import\", {\n startsExpr\n }),\n _null: createKeyword(\"null\", {\n startsExpr\n }),\n _true: createKeyword(\"true\", {\n startsExpr\n }),\n _false: createKeyword(\"false\", {\n startsExpr\n }),\n _typeof: createKeyword(\"typeof\", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n _void: createKeyword(\"void\", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n _delete: createKeyword(\"delete\", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n _do: createKeyword(\"do\", {\n isLoop,\n beforeExpr\n }),\n _for: createKeyword(\"for\", {\n isLoop\n }),\n _while: createKeyword(\"while\", {\n isLoop\n }),\n _as: createKeywordLike(\"as\", {\n startsExpr\n }),\n _assert: createKeywordLike(\"assert\", {\n startsExpr\n }),\n _async: createKeywordLike(\"async\", {\n startsExpr\n }),\n _await: createKeywordLike(\"await\", {\n startsExpr\n }),\n _from: createKeywordLike(\"from\", {\n startsExpr\n }),\n _get: createKeywordLike(\"get\", {\n startsExpr\n }),\n _let: createKeywordLike(\"let\", {\n startsExpr\n }),\n _meta: createKeywordLike(\"meta\", {\n startsExpr\n }),\n _of: createKeywordLike(\"of\", {\n startsExpr\n }),\n _sent: createKeywordLike(\"sent\", {\n startsExpr\n }),\n _set: createKeywordLike(\"set\", {\n startsExpr\n }),\n _static: createKeywordLike(\"static\", {\n startsExpr\n }),\n _yield: createKeywordLike(\"yield\", {\n startsExpr\n }),\n _asserts: createKeywordLike(\"asserts\", {\n startsExpr\n }),\n _checks: createKeywordLike(\"checks\", {\n startsExpr\n }),\n _exports: createKeywordLike(\"exports\", {\n startsExpr\n }),\n _global: createKeywordLike(\"global\", {\n startsExpr\n }),\n _implements: createKeywordLike(\"implements\", {\n startsExpr\n }),\n _intrinsic: createKeywordLike(\"intrinsic\", {\n startsExpr\n }),\n _infer: createKeywordLike(\"infer\", {\n startsExpr\n }),\n _is: createKeywordLike(\"is\", {\n startsExpr\n }),\n _mixins: createKeywordLike(\"mixins\", {\n startsExpr\n }),\n _proto: createKeywordLike(\"proto\", {\n startsExpr\n }),\n _require: createKeywordLike(\"require\", {\n startsExpr\n }),\n _keyof: createKeywordLike(\"keyof\", {\n startsExpr\n }),\n _readonly: createKeywordLike(\"readonly\", {\n startsExpr\n }),\n _unique: createKeywordLike(\"unique\", {\n startsExpr\n }),\n _abstract: createKeywordLike(\"abstract\", {\n startsExpr\n }),\n _declare: createKeywordLike(\"declare\", {\n startsExpr\n }),\n _enum: createKeywordLike(\"enum\", {\n startsExpr\n }),\n _module: createKeywordLike(\"module\", {\n startsExpr\n }),\n _namespace: createKeywordLike(\"namespace\", {\n startsExpr\n }),\n _interface: createKeywordLike(\"interface\", {\n startsExpr\n }),\n _type: createKeywordLike(\"type\", {\n startsExpr\n }),\n _opaque: createKeywordLike(\"opaque\", {\n startsExpr\n }),\n name: createToken(\"name\", {\n startsExpr\n }),\n string: createToken(\"string\", {\n startsExpr\n }),\n num: createToken(\"num\", {\n startsExpr\n }),\n bigint: createToken(\"bigint\", {\n startsExpr\n }),\n decimal: createToken(\"decimal\", {\n startsExpr\n }),\n regexp: createToken(\"regexp\", {\n startsExpr\n }),\n privateName: createToken(\"#name\", {\n startsExpr\n }),\n eof: createToken(\"eof\"),\n jsxName: createToken(\"jsxName\"),\n jsxText: createToken(\"jsxText\", {\n beforeExpr: true\n }),\n jsxTagStart: createToken(\"jsxTagStart\", {\n startsExpr: true\n }),\n jsxTagEnd: createToken(\"jsxTagEnd\"),\n placeholder: createToken(\"%%\", {\n startsExpr: true\n })\n};\nfunction tokenIsIdentifier(token) {\n return token >= 93 && token <= 128;\n}\nfunction tokenKeywordOrIdentifierIsKeyword(token) {\n return token <= 92;\n}\nfunction tokenIsKeywordOrIdentifier(token) {\n return token >= 58 && token <= 128;\n}\nfunction tokenIsLiteralPropertyName(token) {\n return token >= 58 && token <= 132;\n}\nfunction tokenComesBeforeExpression(token) {\n return tokenBeforeExprs[token];\n}\nfunction tokenCanStartExpression(token) {\n return tokenStartsExprs[token];\n}\nfunction tokenIsAssignment(token) {\n return token >= 29 && token <= 33;\n}\nfunction tokenIsFlowInterfaceOrTypeOrOpaque(token) {\n return token >= 125 && token <= 127;\n}\nfunction tokenIsLoop(token) {\n return token >= 90 && token <= 92;\n}\nfunction tokenIsKeyword(token) {\n return token >= 58 && token <= 92;\n}\nfunction tokenIsOperator(token) {\n return token >= 39 && token <= 59;\n}\nfunction tokenIsPostfix(token) {\n return token === 34;\n}\nfunction tokenIsPrefix(token) {\n return tokenPrefixes[token];\n}\nfunction tokenIsTSTypeOperator(token) {\n return token >= 117 && token <= 119;\n}\nfunction tokenIsTSDeclarationStart(token) {\n return token >= 120 && token <= 126;\n}\nfunction tokenLabelName(token) {\n return tokenLabels[token];\n}\nfunction tokenOperatorPrecedence(token) {\n return tokenBinops[token];\n}\nfunction tokenIsBinaryOperator(token) {\n return tokenBinops[token] !== -1;\n}\nfunction tokenIsRightAssociative(token) {\n return token === 57;\n}\nfunction tokenIsTemplate(token) {\n return token >= 24 && token <= 25;\n}\nfunction getExportedToken(token) {\n return tokenTypes[token];\n}\n{\n tokenTypes[8].updateContext = context => {\n context.pop();\n };\n\n tokenTypes[5].updateContext = tokenTypes[7].updateContext = tokenTypes[23].updateContext = context => {\n context.push(types.brace);\n };\n\n tokenTypes[22].updateContext = context => {\n if (context[context.length - 1] === types.template) {\n context.pop();\n } else {\n context.push(types.template);\n }\n };\n\n tokenTypes[138].updateContext = context => {\n context.push(types.j_expr, types.j_oTag);\n };\n}\n\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088e\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c88\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7ca\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7d9\\ua7f2-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\nlet nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0898-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ecd\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1ace\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\";\nconst nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nconst nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\nconst astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 190, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1070, 4050, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 46, 2, 18, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 482, 44, 11, 6, 17, 0, 322, 29, 19, 43, 1269, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4152, 8, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938];\nconst astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 154, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 19306, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 262, 6, 10, 9, 357, 0, 62, 13, 1495, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];\n\nfunction isInAstralSet(code, set) {\n let pos = 0x10000;\n\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n\n return false;\n}\n\nfunction isIdentifierStart(code) {\n if (code < 65) return code === 36;\n if (code <= 90) return true;\n if (code < 97) return code === 95;\n if (code <= 122) return true;\n\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));\n }\n\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\nfunction isIdentifierChar(code) {\n if (code < 48) return code === 36;\n if (code < 58) return true;\n if (code < 65) return false;\n if (code <= 90) return true;\n if (code < 97) return code === 95;\n if (code <= 122) return true;\n\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);\n}\n\nconst reservedWords = {\n keyword: [\"break\", \"case\", \"catch\", \"continue\", \"debugger\", \"default\", \"do\", \"else\", \"finally\", \"for\", \"function\", \"if\", \"return\", \"switch\", \"throw\", \"try\", \"var\", \"const\", \"while\", \"with\", \"new\", \"this\", \"super\", \"class\", \"extends\", \"export\", \"import\", \"null\", \"true\", \"false\", \"in\", \"instanceof\", \"typeof\", \"void\", \"delete\"],\n strict: [\"implements\", \"interface\", \"let\", \"package\", \"private\", \"protected\", \"public\", \"static\", \"yield\"],\n strictBind: [\"eval\", \"arguments\"]\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\nfunction isReservedWord(word, inModule) {\n return inModule && word === \"await\" || word === \"enum\";\n}\nfunction isStrictReservedWord(word, inModule) {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\nfunction isStrictBindOnlyReservedWord(word) {\n return reservedWordsStrictBindSet.has(word);\n}\nfunction isStrictBindReservedWord(word, inModule) {\n return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);\n}\nfunction isKeyword(word) {\n return keywords.has(word);\n}\n\nfunction isIteratorStart(current, next, next2) {\n return current === 64 && next === 64 && isIdentifierStart(next2);\n}\nconst reservedWordLikeSet = new Set([\"break\", \"case\", \"catch\", \"continue\", \"debugger\", \"default\", \"do\", \"else\", \"finally\", \"for\", \"function\", \"if\", \"return\", \"switch\", \"throw\", \"try\", \"var\", \"const\", \"while\", \"with\", \"new\", \"this\", \"super\", \"class\", \"extends\", \"export\", \"import\", \"null\", \"true\", \"false\", \"in\", \"instanceof\", \"typeof\", \"void\", \"delete\", \"implements\", \"interface\", \"let\", \"package\", \"private\", \"protected\", \"public\", \"static\", \"yield\", \"eval\", \"arguments\", \"enum\", \"await\"]);\nfunction canBeReservedWord(word) {\n return reservedWordLikeSet.has(word);\n}\n\nconst SCOPE_OTHER = 0b000000000,\n SCOPE_PROGRAM = 0b000000001,\n SCOPE_FUNCTION = 0b000000010,\n SCOPE_ARROW = 0b000000100,\n SCOPE_SIMPLE_CATCH = 0b000001000,\n SCOPE_SUPER = 0b000010000,\n SCOPE_DIRECT_SUPER = 0b000100000,\n SCOPE_CLASS = 0b001000000,\n SCOPE_STATIC_BLOCK = 0b010000000,\n SCOPE_TS_MODULE = 0b100000000,\n SCOPE_VAR = SCOPE_PROGRAM | SCOPE_FUNCTION | SCOPE_TS_MODULE;\nconst BIND_KIND_VALUE = 0b000000000001,\n BIND_KIND_TYPE = 0b000000000010,\n BIND_SCOPE_VAR = 0b000000000100,\n BIND_SCOPE_LEXICAL = 0b000000001000,\n BIND_SCOPE_FUNCTION = 0b000000010000,\n BIND_FLAGS_NONE = 0b000001000000,\n BIND_FLAGS_CLASS = 0b000010000000,\n BIND_FLAGS_TS_ENUM = 0b000100000000,\n BIND_FLAGS_TS_CONST_ENUM = 0b001000000000,\n BIND_FLAGS_TS_EXPORT_ONLY = 0b010000000000,\n BIND_FLAGS_FLOW_DECLARE_FN = 0b100000000000;\nconst BIND_CLASS = BIND_KIND_VALUE | BIND_KIND_TYPE | BIND_SCOPE_LEXICAL | BIND_FLAGS_CLASS,\n BIND_LEXICAL = BIND_KIND_VALUE | 0 | BIND_SCOPE_LEXICAL | 0,\n BIND_VAR = BIND_KIND_VALUE | 0 | BIND_SCOPE_VAR | 0,\n BIND_FUNCTION = BIND_KIND_VALUE | 0 | BIND_SCOPE_FUNCTION | 0,\n BIND_TS_INTERFACE = 0 | BIND_KIND_TYPE | 0 | BIND_FLAGS_CLASS,\n BIND_TS_TYPE = 0 | BIND_KIND_TYPE | 0 | 0,\n BIND_TS_ENUM = BIND_KIND_VALUE | BIND_KIND_TYPE | BIND_SCOPE_LEXICAL | BIND_FLAGS_TS_ENUM,\n BIND_TS_AMBIENT = 0 | 0 | 0 | BIND_FLAGS_TS_EXPORT_ONLY,\n BIND_NONE = 0 | 0 | 0 | BIND_FLAGS_NONE,\n BIND_OUTSIDE = BIND_KIND_VALUE | 0 | 0 | BIND_FLAGS_NONE,\n BIND_TS_CONST_ENUM = BIND_TS_ENUM | BIND_FLAGS_TS_CONST_ENUM,\n BIND_TS_NAMESPACE = 0 | 0 | 0 | BIND_FLAGS_TS_EXPORT_ONLY,\n BIND_FLOW_DECLARE_FN = BIND_FLAGS_FLOW_DECLARE_FN;\nconst CLASS_ELEMENT_FLAG_STATIC = 0b100,\n CLASS_ELEMENT_KIND_GETTER = 0b010,\n CLASS_ELEMENT_KIND_SETTER = 0b001,\n CLASS_ELEMENT_KIND_ACCESSOR = CLASS_ELEMENT_KIND_GETTER | CLASS_ELEMENT_KIND_SETTER;\nconst CLASS_ELEMENT_STATIC_GETTER = CLASS_ELEMENT_KIND_GETTER | CLASS_ELEMENT_FLAG_STATIC,\n CLASS_ELEMENT_STATIC_SETTER = CLASS_ELEMENT_KIND_SETTER | CLASS_ELEMENT_FLAG_STATIC,\n CLASS_ELEMENT_INSTANCE_GETTER = CLASS_ELEMENT_KIND_GETTER,\n CLASS_ELEMENT_INSTANCE_SETTER = CLASS_ELEMENT_KIND_SETTER,\n CLASS_ELEMENT_OTHER = 0;\n\nclass BaseParser {\n constructor() {\n this.sawUnambiguousESM = false;\n this.ambiguousScriptDifferentAst = false;\n }\n\n hasPlugin(pluginConfig) {\n if (typeof pluginConfig === \"string\") {\n return this.plugins.has(pluginConfig);\n } else {\n const [pluginName, pluginOptions] = pluginConfig;\n\n if (!this.hasPlugin(pluginName)) {\n return false;\n }\n\n const actualOptions = this.plugins.get(pluginName);\n\n for (const key of Object.keys(pluginOptions)) {\n if ((actualOptions == null ? void 0 : actualOptions[key]) !== pluginOptions[key]) {\n return false;\n }\n }\n\n return true;\n }\n }\n\n getPluginOption(plugin, name) {\n var _this$plugins$get;\n\n return (_this$plugins$get = this.plugins.get(plugin)) == null ? void 0 : _this$plugins$get[name];\n }\n\n}\n\nfunction setTrailingComments(node, comments) {\n if (node.trailingComments === undefined) {\n node.trailingComments = comments;\n } else {\n node.trailingComments.unshift(...comments);\n }\n}\n\nfunction setLeadingComments(node, comments) {\n if (node.leadingComments === undefined) {\n node.leadingComments = comments;\n } else {\n node.leadingComments.unshift(...comments);\n }\n}\n\nfunction setInnerComments(node, comments) {\n if (node.innerComments === undefined) {\n node.innerComments = comments;\n } else {\n node.innerComments.unshift(...comments);\n }\n}\n\nfunction adjustInnerComments(node, elements, commentWS) {\n let lastElement = null;\n let i = elements.length;\n\n while (lastElement === null && i > 0) {\n lastElement = elements[--i];\n }\n\n if (lastElement === null || lastElement.start > commentWS.start) {\n setInnerComments(node, commentWS.comments);\n } else {\n setTrailingComments(lastElement, commentWS.comments);\n }\n}\n\nclass CommentsParser extends BaseParser {\n addComment(comment) {\n if (this.filename) comment.loc.filename = this.filename;\n this.state.comments.push(comment);\n }\n\n processComment(node) {\n const {\n commentStack\n } = this.state;\n const commentStackLength = commentStack.length;\n if (commentStackLength === 0) return;\n let i = commentStackLength - 1;\n const lastCommentWS = commentStack[i];\n\n if (lastCommentWS.start === node.end) {\n lastCommentWS.leadingNode = node;\n i--;\n }\n\n const {\n start: nodeStart\n } = node;\n\n for (; i >= 0; i--) {\n const commentWS = commentStack[i];\n const commentEnd = commentWS.end;\n\n if (commentEnd > nodeStart) {\n commentWS.containingNode = node;\n this.finalizeComment(commentWS);\n commentStack.splice(i, 1);\n } else {\n if (commentEnd === nodeStart) {\n commentWS.trailingNode = node;\n }\n\n break;\n }\n }\n }\n\n finalizeComment(commentWS) {\n const {\n comments\n } = commentWS;\n\n if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) {\n if (commentWS.leadingNode !== null) {\n setTrailingComments(commentWS.leadingNode, comments);\n }\n\n if (commentWS.trailingNode !== null) {\n setLeadingComments(commentWS.trailingNode, comments);\n }\n } else {\n const {\n containingNode: node,\n start: commentStart\n } = commentWS;\n\n if (this.input.charCodeAt(commentStart - 1) === 44) {\n switch (node.type) {\n case \"ObjectExpression\":\n case \"ObjectPattern\":\n case \"RecordExpression\":\n adjustInnerComments(node, node.properties, commentWS);\n break;\n\n case \"CallExpression\":\n case \"OptionalCallExpression\":\n adjustInnerComments(node, node.arguments, commentWS);\n break;\n\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"ArrowFunctionExpression\":\n case \"ObjectMethod\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n adjustInnerComments(node, node.params, commentWS);\n break;\n\n case \"ArrayExpression\":\n case \"ArrayPattern\":\n case \"TupleExpression\":\n adjustInnerComments(node, node.elements, commentWS);\n break;\n\n case \"ExportNamedDeclaration\":\n case \"ImportDeclaration\":\n adjustInnerComments(node, node.specifiers, commentWS);\n break;\n\n default:\n {\n setInnerComments(node, comments);\n }\n }\n } else {\n setInnerComments(node, comments);\n }\n }\n }\n\n finalizeRemainingComments() {\n const {\n commentStack\n } = this.state;\n\n for (let i = commentStack.length - 1; i >= 0; i--) {\n this.finalizeComment(commentStack[i]);\n }\n\n this.state.commentStack = [];\n }\n\n resetPreviousNodeTrailingComments(node) {\n const {\n commentStack\n } = this.state;\n const {\n length\n } = commentStack;\n if (length === 0) return;\n const commentWS = commentStack[length - 1];\n\n if (commentWS.leadingNode === node) {\n commentWS.leadingNode = null;\n }\n }\n\n takeSurroundingComments(node, start, end) {\n const {\n commentStack\n } = this.state;\n const commentStackLength = commentStack.length;\n if (commentStackLength === 0) return;\n let i = commentStackLength - 1;\n\n for (; i >= 0; i--) {\n const commentWS = commentStack[i];\n const commentEnd = commentWS.end;\n const commentStart = commentWS.start;\n\n if (commentStart === end) {\n commentWS.leadingNode = node;\n } else if (commentEnd === start) {\n commentWS.trailingNode = node;\n } else if (commentEnd < start) {\n break;\n }\n }\n }\n\n}\n\nconst lineBreak = /\\r\\n?|[\\n\\u2028\\u2029]/;\nconst lineBreakG = new RegExp(lineBreak.source, \"g\");\nfunction isNewLine(code) {\n switch (code) {\n case 10:\n case 13:\n case 8232:\n case 8233:\n return true;\n\n default:\n return false;\n }\n}\nconst skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\nconst skipWhiteSpaceInLine = /(?:[^\\S\\n\\r\\u2028\\u2029]|\\/\\/.*|\\/\\*.*?\\*\\/)*/y;\nconst skipWhiteSpaceToLineBreak = new RegExp(\"(?=(\" + skipWhiteSpaceInLine.source + \"))\\\\1\" + /(?=[\\n\\r\\u2028\\u2029]|\\/\\*(?!.*?\\*\\/)|$)/.source, \"y\");\nfunction isWhitespace(code) {\n switch (code) {\n case 0x0009:\n case 0x000b:\n case 0x000c:\n case 32:\n case 160:\n case 5760:\n case 0x2000:\n case 0x2001:\n case 0x2002:\n case 0x2003:\n case 0x2004:\n case 0x2005:\n case 0x2006:\n case 0x2007:\n case 0x2008:\n case 0x2009:\n case 0x200a:\n case 0x202f:\n case 0x205f:\n case 0x3000:\n case 0xfeff:\n return true;\n\n default:\n return false;\n }\n}\n\nclass State {\n constructor() {\n this.strict = void 0;\n this.curLine = void 0;\n this.lineStart = void 0;\n this.startLoc = void 0;\n this.endLoc = void 0;\n this.errors = [];\n this.potentialArrowAt = -1;\n this.noArrowAt = [];\n this.noArrowParamsConversionAt = [];\n this.maybeInArrowParameters = false;\n this.inType = false;\n this.noAnonFunctionType = false;\n this.hasFlowComment = false;\n this.isAmbientContext = false;\n this.inAbstractClass = false;\n this.inDisallowConditionalTypesContext = false;\n this.topicContext = {\n maxNumOfResolvableTopics: 0,\n maxTopicIndex: null\n };\n this.soloAwait = false;\n this.inFSharpPipelineDirectBody = false;\n this.labels = [];\n this.decoratorStack = [[]];\n this.comments = [];\n this.commentStack = [];\n this.pos = 0;\n this.type = 135;\n this.value = null;\n this.start = 0;\n this.end = 0;\n this.lastTokEndLoc = null;\n this.lastTokStartLoc = null;\n this.lastTokStart = 0;\n this.context = [types.brace];\n this.canStartJSXElement = true;\n this.containsEsc = false;\n this.strictErrors = new Map();\n this.tokensLength = 0;\n }\n\n init({\n strictMode,\n sourceType,\n startLine,\n startColumn\n }) {\n this.strict = strictMode === false ? false : strictMode === true ? true : sourceType === \"module\";\n this.curLine = startLine;\n this.lineStart = -startColumn;\n this.startLoc = this.endLoc = new Position(startLine, startColumn, 0);\n }\n\n curPosition() {\n return new Position(this.curLine, this.pos - this.lineStart, this.pos);\n }\n\n clone(skipArrays) {\n const state = new State();\n const keys = Object.keys(this);\n\n for (let i = 0, length = keys.length; i < length; i++) {\n const key = keys[i];\n let val = this[key];\n\n if (!skipArrays && Array.isArray(val)) {\n val = val.slice();\n }\n\n state[key] = val;\n }\n\n return state;\n }\n\n}\n\nconst _excluded = [\"at\"],\n _excluded2 = [\"at\"];\n\nvar _isDigit = function isDigit(code) {\n return code >= 48 && code <= 57;\n};\nconst VALID_REGEX_FLAGS = new Set([103, 109, 115, 105, 121, 117, 100, 118]);\nconst forbiddenNumericSeparatorSiblings = {\n decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]),\n hex: new Set([46, 88, 95, 120])\n};\nconst isAllowedNumericSeparatorSibling = {\n bin: ch => ch === 48 || ch === 49,\n oct: ch => ch >= 48 && ch <= 55,\n dec: ch => ch >= 48 && ch <= 57,\n hex: ch => ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102\n};\nclass Token {\n constructor(state) {\n this.type = state.type;\n this.value = state.value;\n this.start = state.start;\n this.end = state.end;\n this.loc = new SourceLocation(state.startLoc, state.endLoc);\n }\n\n}\nclass Tokenizer extends CommentsParser {\n constructor(options, input) {\n super();\n this.isLookahead = void 0;\n this.tokens = [];\n this.state = new State();\n this.state.init(options);\n this.input = input;\n this.length = input.length;\n this.isLookahead = false;\n }\n\n pushToken(token) {\n this.tokens.length = this.state.tokensLength;\n this.tokens.push(token);\n ++this.state.tokensLength;\n }\n\n next() {\n this.checkKeywordEscapes();\n\n if (this.options.tokens) {\n this.pushToken(new Token(this.state));\n }\n\n this.state.lastTokStart = this.state.start;\n this.state.lastTokEndLoc = this.state.endLoc;\n this.state.lastTokStartLoc = this.state.startLoc;\n this.nextToken();\n }\n\n eat(type) {\n if (this.match(type)) {\n this.next();\n return true;\n } else {\n return false;\n }\n }\n\n match(type) {\n return this.state.type === type;\n }\n\n createLookaheadState(state) {\n return {\n pos: state.pos,\n value: null,\n type: state.type,\n start: state.start,\n end: state.end,\n context: [this.curContext()],\n inType: state.inType,\n startLoc: state.startLoc,\n lastTokEndLoc: state.lastTokEndLoc,\n curLine: state.curLine,\n lineStart: state.lineStart,\n curPosition: state.curPosition\n };\n }\n\n lookahead() {\n const old = this.state;\n this.state = this.createLookaheadState(old);\n this.isLookahead = true;\n this.nextToken();\n this.isLookahead = false;\n const curr = this.state;\n this.state = old;\n return curr;\n }\n\n nextTokenStart() {\n return this.nextTokenStartSince(this.state.pos);\n }\n\n nextTokenStartSince(pos) {\n skipWhiteSpace.lastIndex = pos;\n return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos;\n }\n\n lookaheadCharCode() {\n return this.input.charCodeAt(this.nextTokenStart());\n }\n\n codePointAtPos(pos) {\n let cp = this.input.charCodeAt(pos);\n\n if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) {\n const trail = this.input.charCodeAt(pos);\n\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n\n return cp;\n }\n\n setStrict(strict) {\n this.state.strict = strict;\n\n if (strict) {\n this.state.strictErrors.forEach(([toParseError, at]) => this.raise(toParseError, {\n at\n }));\n this.state.strictErrors.clear();\n }\n }\n\n curContext() {\n return this.state.context[this.state.context.length - 1];\n }\n\n nextToken() {\n this.skipSpace();\n this.state.start = this.state.pos;\n if (!this.isLookahead) this.state.startLoc = this.state.curPosition();\n\n if (this.state.pos >= this.length) {\n this.finishToken(135);\n return;\n }\n\n this.getTokenFromCode(this.codePointAtPos(this.state.pos));\n }\n\n skipBlockComment() {\n let startLoc;\n if (!this.isLookahead) startLoc = this.state.curPosition();\n const start = this.state.pos;\n const end = this.input.indexOf(\"*/\", start + 2);\n\n if (end === -1) {\n throw this.raise(Errors.UnterminatedComment, {\n at: this.state.curPosition()\n });\n }\n\n this.state.pos = end + 2;\n lineBreakG.lastIndex = start + 2;\n\n while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) {\n ++this.state.curLine;\n this.state.lineStart = lineBreakG.lastIndex;\n }\n\n if (this.isLookahead) return;\n const comment = {\n type: \"CommentBlock\",\n value: this.input.slice(start + 2, end),\n start,\n end: end + 2,\n loc: new SourceLocation(startLoc, this.state.curPosition())\n };\n if (this.options.tokens) this.pushToken(comment);\n return comment;\n }\n\n skipLineComment(startSkip) {\n const start = this.state.pos;\n let startLoc;\n if (!this.isLookahead) startLoc = this.state.curPosition();\n let ch = this.input.charCodeAt(this.state.pos += startSkip);\n\n if (this.state.pos < this.length) {\n while (!isNewLine(ch) && ++this.state.pos < this.length) {\n ch = this.input.charCodeAt(this.state.pos);\n }\n }\n\n if (this.isLookahead) return;\n const end = this.state.pos;\n const value = this.input.slice(start + startSkip, end);\n const comment = {\n type: \"CommentLine\",\n value,\n start,\n end,\n loc: new SourceLocation(startLoc, this.state.curPosition())\n };\n if (this.options.tokens) this.pushToken(comment);\n return comment;\n }\n\n skipSpace() {\n const spaceStart = this.state.pos;\n const comments = [];\n\n loop: while (this.state.pos < this.length) {\n const ch = this.input.charCodeAt(this.state.pos);\n\n switch (ch) {\n case 32:\n case 160:\n case 9:\n ++this.state.pos;\n break;\n\n case 13:\n if (this.input.charCodeAt(this.state.pos + 1) === 10) {\n ++this.state.pos;\n }\n\n case 10:\n case 8232:\n case 8233:\n ++this.state.pos;\n ++this.state.curLine;\n this.state.lineStart = this.state.pos;\n break;\n\n case 47:\n switch (this.input.charCodeAt(this.state.pos + 1)) {\n case 42:\n {\n const comment = this.skipBlockComment();\n\n if (comment !== undefined) {\n this.addComment(comment);\n if (this.options.attachComment) comments.push(comment);\n }\n\n break;\n }\n\n case 47:\n {\n const comment = this.skipLineComment(2);\n\n if (comment !== undefined) {\n this.addComment(comment);\n if (this.options.attachComment) comments.push(comment);\n }\n\n break;\n }\n\n default:\n break loop;\n }\n\n break;\n\n default:\n if (isWhitespace(ch)) {\n ++this.state.pos;\n } else if (ch === 45 && !this.inModule) {\n const pos = this.state.pos;\n\n if (this.input.charCodeAt(pos + 1) === 45 && this.input.charCodeAt(pos + 2) === 62 && (spaceStart === 0 || this.state.lineStart > spaceStart)) {\n const comment = this.skipLineComment(3);\n\n if (comment !== undefined) {\n this.addComment(comment);\n if (this.options.attachComment) comments.push(comment);\n }\n } else {\n break loop;\n }\n } else if (ch === 60 && !this.inModule) {\n const pos = this.state.pos;\n\n if (this.input.charCodeAt(pos + 1) === 33 && this.input.charCodeAt(pos + 2) === 45 && this.input.charCodeAt(pos + 3) === 45) {\n const comment = this.skipLineComment(4);\n\n if (comment !== undefined) {\n this.addComment(comment);\n if (this.options.attachComment) comments.push(comment);\n }\n } else {\n break loop;\n }\n } else {\n break loop;\n }\n\n }\n }\n\n if (comments.length > 0) {\n const end = this.state.pos;\n const CommentWhitespace = {\n start: spaceStart,\n end,\n comments,\n leadingNode: null,\n trailingNode: null,\n containingNode: null\n };\n this.state.commentStack.push(CommentWhitespace);\n }\n }\n\n finishToken(type, val) {\n this.state.end = this.state.pos;\n this.state.endLoc = this.state.curPosition();\n const prevType = this.state.type;\n this.state.type = type;\n this.state.value = val;\n\n if (!this.isLookahead) {\n this.updateContext(prevType);\n }\n }\n\n replaceToken(type) {\n this.state.type = type;\n this.updateContext();\n }\n\n readToken_numberSign() {\n if (this.state.pos === 0 && this.readToken_interpreter()) {\n return;\n }\n\n const nextPos = this.state.pos + 1;\n const next = this.codePointAtPos(nextPos);\n\n if (next >= 48 && next <= 57) {\n throw this.raise(Errors.UnexpectedDigitAfterHash, {\n at: this.state.curPosition()\n });\n }\n\n if (next === 123 || next === 91 && this.hasPlugin(\"recordAndTuple\")) {\n this.expectPlugin(\"recordAndTuple\");\n\n if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"hash\") {\n throw this.raise(next === 123 ? Errors.RecordExpressionHashIncorrectStartSyntaxType : Errors.TupleExpressionHashIncorrectStartSyntaxType, {\n at: this.state.curPosition()\n });\n }\n\n this.state.pos += 2;\n\n if (next === 123) {\n this.finishToken(7);\n } else {\n this.finishToken(1);\n }\n } else if (isIdentifierStart(next)) {\n ++this.state.pos;\n this.finishToken(134, this.readWord1(next));\n } else if (next === 92) {\n ++this.state.pos;\n this.finishToken(134, this.readWord1());\n } else {\n this.finishOp(27, 1);\n }\n }\n\n readToken_dot() {\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (next >= 48 && next <= 57) {\n this.readNumber(true);\n return;\n }\n\n if (next === 46 && this.input.charCodeAt(this.state.pos + 2) === 46) {\n this.state.pos += 3;\n this.finishToken(21);\n } else {\n ++this.state.pos;\n this.finishToken(16);\n }\n }\n\n readToken_slash() {\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (next === 61) {\n this.finishOp(31, 2);\n } else {\n this.finishOp(56, 1);\n }\n }\n\n readToken_interpreter() {\n if (this.state.pos !== 0 || this.length < 2) return false;\n let ch = this.input.charCodeAt(this.state.pos + 1);\n if (ch !== 33) return false;\n const start = this.state.pos;\n this.state.pos += 1;\n\n while (!isNewLine(ch) && ++this.state.pos < this.length) {\n ch = this.input.charCodeAt(this.state.pos);\n }\n\n const value = this.input.slice(start + 2, this.state.pos);\n this.finishToken(28, value);\n return true;\n }\n\n readToken_mult_modulo(code) {\n let type = code === 42 ? 55 : 54;\n let width = 1;\n let next = this.input.charCodeAt(this.state.pos + 1);\n\n if (code === 42 && next === 42) {\n width++;\n next = this.input.charCodeAt(this.state.pos + 2);\n type = 57;\n }\n\n if (next === 61 && !this.state.inType) {\n width++;\n type = code === 37 ? 33 : 30;\n }\n\n this.finishOp(type, width);\n }\n\n readToken_pipe_amp(code) {\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (next === code) {\n if (this.input.charCodeAt(this.state.pos + 2) === 61) {\n this.finishOp(30, 3);\n } else {\n this.finishOp(code === 124 ? 41 : 42, 2);\n }\n\n return;\n }\n\n if (code === 124) {\n if (next === 62) {\n this.finishOp(39, 2);\n return;\n }\n\n if (this.hasPlugin(\"recordAndTuple\") && next === 125) {\n if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n throw this.raise(Errors.RecordExpressionBarIncorrectEndSyntaxType, {\n at: this.state.curPosition()\n });\n }\n\n this.state.pos += 2;\n this.finishToken(9);\n return;\n }\n\n if (this.hasPlugin(\"recordAndTuple\") && next === 93) {\n if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n throw this.raise(Errors.TupleExpressionBarIncorrectEndSyntaxType, {\n at: this.state.curPosition()\n });\n }\n\n this.state.pos += 2;\n this.finishToken(4);\n return;\n }\n }\n\n if (next === 61) {\n this.finishOp(30, 2);\n return;\n }\n\n this.finishOp(code === 124 ? 43 : 45, 1);\n }\n\n readToken_caret() {\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (next === 61 && !this.state.inType) {\n this.finishOp(32, 2);\n } else if (next === 94 && this.hasPlugin([\"pipelineOperator\", {\n proposal: \"hack\",\n topicToken: \"^^\"\n }])) {\n this.finishOp(37, 2);\n const lookaheadCh = this.input.codePointAt(this.state.pos);\n\n if (lookaheadCh === 94) {\n throw this.unexpected();\n }\n } else {\n this.finishOp(44, 1);\n }\n }\n\n readToken_atSign() {\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (next === 64 && this.hasPlugin([\"pipelineOperator\", {\n proposal: \"hack\",\n topicToken: \"@@\"\n }])) {\n this.finishOp(38, 2);\n } else {\n this.finishOp(26, 1);\n }\n }\n\n readToken_plus_min(code) {\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (next === code) {\n this.finishOp(34, 2);\n return;\n }\n\n if (next === 61) {\n this.finishOp(30, 2);\n } else {\n this.finishOp(53, 1);\n }\n }\n\n readToken_lt() {\n const {\n pos\n } = this.state;\n const next = this.input.charCodeAt(pos + 1);\n\n if (next === 60) {\n if (this.input.charCodeAt(pos + 2) === 61) {\n this.finishOp(30, 3);\n return;\n }\n\n this.finishOp(51, 2);\n return;\n }\n\n if (next === 61) {\n this.finishOp(49, 2);\n return;\n }\n\n this.finishOp(47, 1);\n }\n\n readToken_gt() {\n const {\n pos\n } = this.state;\n const next = this.input.charCodeAt(pos + 1);\n\n if (next === 62) {\n const size = this.input.charCodeAt(pos + 2) === 62 ? 3 : 2;\n\n if (this.input.charCodeAt(pos + size) === 61) {\n this.finishOp(30, size + 1);\n return;\n }\n\n this.finishOp(52, size);\n return;\n }\n\n if (next === 61) {\n this.finishOp(49, 2);\n return;\n }\n\n this.finishOp(48, 1);\n }\n\n readToken_eq_excl(code) {\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (next === 61) {\n this.finishOp(46, this.input.charCodeAt(this.state.pos + 2) === 61 ? 3 : 2);\n return;\n }\n\n if (code === 61 && next === 62) {\n this.state.pos += 2;\n this.finishToken(19);\n return;\n }\n\n this.finishOp(code === 61 ? 29 : 35, 1);\n }\n\n readToken_question() {\n const next = this.input.charCodeAt(this.state.pos + 1);\n const next2 = this.input.charCodeAt(this.state.pos + 2);\n\n if (next === 63) {\n if (next2 === 61) {\n this.finishOp(30, 3);\n } else {\n this.finishOp(40, 2);\n }\n } else if (next === 46 && !(next2 >= 48 && next2 <= 57)) {\n this.state.pos += 2;\n this.finishToken(18);\n } else {\n ++this.state.pos;\n this.finishToken(17);\n }\n }\n\n getTokenFromCode(code) {\n switch (code) {\n case 46:\n this.readToken_dot();\n return;\n\n case 40:\n ++this.state.pos;\n this.finishToken(10);\n return;\n\n case 41:\n ++this.state.pos;\n this.finishToken(11);\n return;\n\n case 59:\n ++this.state.pos;\n this.finishToken(13);\n return;\n\n case 44:\n ++this.state.pos;\n this.finishToken(12);\n return;\n\n case 91:\n if (this.hasPlugin(\"recordAndTuple\") && this.input.charCodeAt(this.state.pos + 1) === 124) {\n if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n throw this.raise(Errors.TupleExpressionBarIncorrectStartSyntaxType, {\n at: this.state.curPosition()\n });\n }\n\n this.state.pos += 2;\n this.finishToken(2);\n } else {\n ++this.state.pos;\n this.finishToken(0);\n }\n\n return;\n\n case 93:\n ++this.state.pos;\n this.finishToken(3);\n return;\n\n case 123:\n if (this.hasPlugin(\"recordAndTuple\") && this.input.charCodeAt(this.state.pos + 1) === 124) {\n if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n throw this.raise(Errors.RecordExpressionBarIncorrectStartSyntaxType, {\n at: this.state.curPosition()\n });\n }\n\n this.state.pos += 2;\n this.finishToken(6);\n } else {\n ++this.state.pos;\n this.finishToken(5);\n }\n\n return;\n\n case 125:\n ++this.state.pos;\n this.finishToken(8);\n return;\n\n case 58:\n if (this.hasPlugin(\"functionBind\") && this.input.charCodeAt(this.state.pos + 1) === 58) {\n this.finishOp(15, 2);\n } else {\n ++this.state.pos;\n this.finishToken(14);\n }\n\n return;\n\n case 63:\n this.readToken_question();\n return;\n\n case 96:\n this.readTemplateToken();\n return;\n\n case 48:\n {\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (next === 120 || next === 88) {\n this.readRadixNumber(16);\n return;\n }\n\n if (next === 111 || next === 79) {\n this.readRadixNumber(8);\n return;\n }\n\n if (next === 98 || next === 66) {\n this.readRadixNumber(2);\n return;\n }\n }\n\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n this.readNumber(false);\n return;\n\n case 34:\n case 39:\n this.readString(code);\n return;\n\n case 47:\n this.readToken_slash();\n return;\n\n case 37:\n case 42:\n this.readToken_mult_modulo(code);\n return;\n\n case 124:\n case 38:\n this.readToken_pipe_amp(code);\n return;\n\n case 94:\n this.readToken_caret();\n return;\n\n case 43:\n case 45:\n this.readToken_plus_min(code);\n return;\n\n case 60:\n this.readToken_lt();\n return;\n\n case 62:\n this.readToken_gt();\n return;\n\n case 61:\n case 33:\n this.readToken_eq_excl(code);\n return;\n\n case 126:\n this.finishOp(36, 1);\n return;\n\n case 64:\n this.readToken_atSign();\n return;\n\n case 35:\n this.readToken_numberSign();\n return;\n\n case 92:\n this.readWord();\n return;\n\n default:\n if (isIdentifierStart(code)) {\n this.readWord(code);\n return;\n }\n\n }\n\n throw this.raise(Errors.InvalidOrUnexpectedToken, {\n at: this.state.curPosition(),\n unexpected: String.fromCodePoint(code)\n });\n }\n\n finishOp(type, size) {\n const str = this.input.slice(this.state.pos, this.state.pos + size);\n this.state.pos += size;\n this.finishToken(type, str);\n }\n\n readRegexp() {\n const startLoc = this.state.startLoc;\n const start = this.state.start + 1;\n let escaped, inClass;\n let {\n pos\n } = this.state;\n\n for (;; ++pos) {\n if (pos >= this.length) {\n throw this.raise(Errors.UnterminatedRegExp, {\n at: createPositionWithColumnOffset(startLoc, 1)\n });\n }\n\n const ch = this.input.charCodeAt(pos);\n\n if (isNewLine(ch)) {\n throw this.raise(Errors.UnterminatedRegExp, {\n at: createPositionWithColumnOffset(startLoc, 1)\n });\n }\n\n if (escaped) {\n escaped = false;\n } else {\n if (ch === 91) {\n inClass = true;\n } else if (ch === 93 && inClass) {\n inClass = false;\n } else if (ch === 47 && !inClass) {\n break;\n }\n\n escaped = ch === 92;\n }\n }\n\n const content = this.input.slice(start, pos);\n ++pos;\n let mods = \"\";\n\n const nextPos = () => createPositionWithColumnOffset(startLoc, pos + 2 - start);\n\n while (pos < this.length) {\n const cp = this.codePointAtPos(pos);\n const char = String.fromCharCode(cp);\n\n if (VALID_REGEX_FLAGS.has(cp)) {\n if (cp === 118) {\n this.expectPlugin(\"regexpUnicodeSets\", nextPos());\n\n if (mods.includes(\"u\")) {\n this.raise(Errors.IncompatibleRegExpUVFlags, {\n at: nextPos()\n });\n }\n } else if (cp === 117) {\n if (mods.includes(\"v\")) {\n this.raise(Errors.IncompatibleRegExpUVFlags, {\n at: nextPos()\n });\n }\n }\n\n if (mods.includes(char)) {\n this.raise(Errors.DuplicateRegExpFlags, {\n at: nextPos()\n });\n }\n } else if (isIdentifierChar(cp) || cp === 92) {\n this.raise(Errors.MalformedRegExpFlags, {\n at: nextPos()\n });\n } else {\n break;\n }\n\n ++pos;\n mods += char;\n }\n\n this.state.pos = pos;\n this.finishToken(133, {\n pattern: content,\n flags: mods\n });\n }\n\n readInt(radix, len, forceLen, allowNumSeparator = true) {\n const start = this.state.pos;\n const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct;\n const isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin;\n let invalid = false;\n let total = 0;\n\n for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n const code = this.input.charCodeAt(this.state.pos);\n let val;\n\n if (code === 95 && allowNumSeparator !== \"bail\") {\n const prev = this.input.charCodeAt(this.state.pos - 1);\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (!allowNumSeparator) {\n this.raise(Errors.NumericSeparatorInEscapeSequence, {\n at: this.state.curPosition()\n });\n } else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) {\n this.raise(Errors.UnexpectedNumericSeparator, {\n at: this.state.curPosition()\n });\n }\n\n ++this.state.pos;\n continue;\n }\n\n if (code >= 97) {\n val = code - 97 + 10;\n } else if (code >= 65) {\n val = code - 65 + 10;\n } else if (_isDigit(code)) {\n val = code - 48;\n } else {\n val = Infinity;\n }\n\n if (val >= radix) {\n if (this.options.errorRecovery && val <= 9) {\n val = 0;\n this.raise(Errors.InvalidDigit, {\n at: this.state.curPosition(),\n radix\n });\n } else if (forceLen) {\n val = 0;\n invalid = true;\n } else {\n break;\n }\n }\n\n ++this.state.pos;\n total = total * radix + val;\n }\n\n if (this.state.pos === start || len != null && this.state.pos - start !== len || invalid) {\n return null;\n }\n\n return total;\n }\n\n readRadixNumber(radix) {\n const startLoc = this.state.curPosition();\n let isBigInt = false;\n this.state.pos += 2;\n const val = this.readInt(radix);\n\n if (val == null) {\n this.raise(Errors.InvalidDigit, {\n at: createPositionWithColumnOffset(startLoc, 2),\n radix\n });\n }\n\n const next = this.input.charCodeAt(this.state.pos);\n\n if (next === 110) {\n ++this.state.pos;\n isBigInt = true;\n } else if (next === 109) {\n throw this.raise(Errors.InvalidDecimal, {\n at: startLoc\n });\n }\n\n if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {\n throw this.raise(Errors.NumberIdentifier, {\n at: this.state.curPosition()\n });\n }\n\n if (isBigInt) {\n const str = this.input.slice(startLoc.index, this.state.pos).replace(/[_n]/g, \"\");\n this.finishToken(131, str);\n return;\n }\n\n this.finishToken(130, val);\n }\n\n readNumber(startsWithDot) {\n const start = this.state.pos;\n const startLoc = this.state.curPosition();\n let isFloat = false;\n let isBigInt = false;\n let isDecimal = false;\n let hasExponent = false;\n let isOctal = false;\n\n if (!startsWithDot && this.readInt(10) === null) {\n this.raise(Errors.InvalidNumber, {\n at: this.state.curPosition()\n });\n }\n\n const hasLeadingZero = this.state.pos - start >= 2 && this.input.charCodeAt(start) === 48;\n\n if (hasLeadingZero) {\n const integer = this.input.slice(start, this.state.pos);\n this.recordStrictModeErrors(Errors.StrictOctalLiteral, {\n at: startLoc\n });\n\n if (!this.state.strict) {\n const underscorePos = integer.indexOf(\"_\");\n\n if (underscorePos > 0) {\n this.raise(Errors.ZeroDigitNumericSeparator, {\n at: createPositionWithColumnOffset(startLoc, underscorePos)\n });\n }\n }\n\n isOctal = hasLeadingZero && !/[89]/.test(integer);\n }\n\n let next = this.input.charCodeAt(this.state.pos);\n\n if (next === 46 && !isOctal) {\n ++this.state.pos;\n this.readInt(10);\n isFloat = true;\n next = this.input.charCodeAt(this.state.pos);\n }\n\n if ((next === 69 || next === 101) && !isOctal) {\n next = this.input.charCodeAt(++this.state.pos);\n\n if (next === 43 || next === 45) {\n ++this.state.pos;\n }\n\n if (this.readInt(10) === null) {\n this.raise(Errors.InvalidOrMissingExponent, {\n at: startLoc\n });\n }\n\n isFloat = true;\n hasExponent = true;\n next = this.input.charCodeAt(this.state.pos);\n }\n\n if (next === 110) {\n if (isFloat || hasLeadingZero) {\n this.raise(Errors.InvalidBigIntLiteral, {\n at: startLoc\n });\n }\n\n ++this.state.pos;\n isBigInt = true;\n }\n\n if (next === 109) {\n this.expectPlugin(\"decimal\", this.state.curPosition());\n\n if (hasExponent || hasLeadingZero) {\n this.raise(Errors.InvalidDecimal, {\n at: startLoc\n });\n }\n\n ++this.state.pos;\n isDecimal = true;\n }\n\n if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {\n throw this.raise(Errors.NumberIdentifier, {\n at: this.state.curPosition()\n });\n }\n\n const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, \"\");\n\n if (isBigInt) {\n this.finishToken(131, str);\n return;\n }\n\n if (isDecimal) {\n this.finishToken(132, str);\n return;\n }\n\n const val = isOctal ? parseInt(str, 8) : parseFloat(str);\n this.finishToken(130, val);\n }\n\n readCodePoint(throwOnInvalid) {\n const ch = this.input.charCodeAt(this.state.pos);\n let code;\n\n if (ch === 123) {\n ++this.state.pos;\n code = this.readHexChar(this.input.indexOf(\"}\", this.state.pos) - this.state.pos, true, throwOnInvalid);\n ++this.state.pos;\n\n if (code !== null && code > 0x10ffff) {\n if (throwOnInvalid) {\n this.raise(Errors.InvalidCodePoint, {\n at: this.state.curPosition()\n });\n } else {\n return null;\n }\n }\n } else {\n code = this.readHexChar(4, false, throwOnInvalid);\n }\n\n return code;\n }\n\n readString(quote) {\n let out = \"\",\n chunkStart = ++this.state.pos;\n\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(Errors.UnterminatedString, {\n at: this.state.startLoc\n });\n }\n\n const ch = this.input.charCodeAt(this.state.pos);\n if (ch === quote) break;\n\n if (ch === 92) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.readEscapedChar(false);\n chunkStart = this.state.pos;\n } else if (ch === 8232 || ch === 8233) {\n ++this.state.pos;\n ++this.state.curLine;\n this.state.lineStart = this.state.pos;\n } else if (isNewLine(ch)) {\n throw this.raise(Errors.UnterminatedString, {\n at: this.state.startLoc\n });\n } else {\n ++this.state.pos;\n }\n }\n\n out += this.input.slice(chunkStart, this.state.pos++);\n this.finishToken(129, out);\n }\n\n readTemplateContinuation() {\n if (!this.match(8)) {\n this.unexpected(null, 8);\n }\n\n this.state.pos--;\n this.readTemplateToken();\n }\n\n readTemplateToken() {\n let out = \"\",\n chunkStart = this.state.pos,\n containsInvalid = false;\n ++this.state.pos;\n\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(Errors.UnterminatedTemplate, {\n at: createPositionWithColumnOffset(this.state.startLoc, 1)\n });\n }\n\n const ch = this.input.charCodeAt(this.state.pos);\n\n if (ch === 96) {\n ++this.state.pos;\n out += this.input.slice(chunkStart, this.state.pos);\n this.finishToken(24, containsInvalid ? null : out);\n return;\n }\n\n if (ch === 36 && this.input.charCodeAt(this.state.pos + 1) === 123) {\n this.state.pos += 2;\n out += this.input.slice(chunkStart, this.state.pos);\n this.finishToken(25, containsInvalid ? null : out);\n return;\n }\n\n if (ch === 92) {\n out += this.input.slice(chunkStart, this.state.pos);\n const escaped = this.readEscapedChar(true);\n\n if (escaped === null) {\n containsInvalid = true;\n } else {\n out += escaped;\n }\n\n chunkStart = this.state.pos;\n } else if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.state.pos);\n ++this.state.pos;\n\n switch (ch) {\n case 13:\n if (this.input.charCodeAt(this.state.pos) === 10) {\n ++this.state.pos;\n }\n\n case 10:\n out += \"\\n\";\n break;\n\n default:\n out += String.fromCharCode(ch);\n break;\n }\n\n ++this.state.curLine;\n this.state.lineStart = this.state.pos;\n chunkStart = this.state.pos;\n } else {\n ++this.state.pos;\n }\n }\n }\n\n recordStrictModeErrors(toParseError, {\n at\n }) {\n const index = at.index;\n\n if (this.state.strict && !this.state.strictErrors.has(index)) {\n this.raise(toParseError, {\n at\n });\n } else {\n this.state.strictErrors.set(index, [toParseError, at]);\n }\n }\n\n readEscapedChar(inTemplate) {\n const throwOnInvalid = !inTemplate;\n const ch = this.input.charCodeAt(++this.state.pos);\n ++this.state.pos;\n\n switch (ch) {\n case 110:\n return \"\\n\";\n\n case 114:\n return \"\\r\";\n\n case 120:\n {\n const code = this.readHexChar(2, false, throwOnInvalid);\n return code === null ? null : String.fromCharCode(code);\n }\n\n case 117:\n {\n const code = this.readCodePoint(throwOnInvalid);\n return code === null ? null : String.fromCodePoint(code);\n }\n\n case 116:\n return \"\\t\";\n\n case 98:\n return \"\\b\";\n\n case 118:\n return \"\\u000b\";\n\n case 102:\n return \"\\f\";\n\n case 13:\n if (this.input.charCodeAt(this.state.pos) === 10) {\n ++this.state.pos;\n }\n\n case 10:\n this.state.lineStart = this.state.pos;\n ++this.state.curLine;\n\n case 8232:\n case 8233:\n return \"\";\n\n case 56:\n case 57:\n if (inTemplate) {\n return null;\n } else {\n this.recordStrictModeErrors(Errors.StrictNumericEscape, {\n at: createPositionWithColumnOffset(this.state.curPosition(), -1)\n });\n }\n\n default:\n if (ch >= 48 && ch <= 55) {\n const codePos = createPositionWithColumnOffset(this.state.curPosition(), -1);\n const match = this.input.slice(this.state.pos - 1, this.state.pos + 2).match(/^[0-7]+/);\n let octalStr = match[0];\n let octal = parseInt(octalStr, 8);\n\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n\n this.state.pos += octalStr.length - 1;\n const next = this.input.charCodeAt(this.state.pos);\n\n if (octalStr !== \"0\" || next === 56 || next === 57) {\n if (inTemplate) {\n return null;\n } else {\n this.recordStrictModeErrors(Errors.StrictNumericEscape, {\n at: codePos\n });\n }\n }\n\n return String.fromCharCode(octal);\n }\n\n return String.fromCharCode(ch);\n }\n }\n\n readHexChar(len, forceLen, throwOnInvalid) {\n const codeLoc = this.state.curPosition();\n const n = this.readInt(16, len, forceLen, false);\n\n if (n === null) {\n if (throwOnInvalid) {\n this.raise(Errors.InvalidEscapeSequence, {\n at: codeLoc\n });\n } else {\n this.state.pos = codeLoc.index - 1;\n }\n }\n\n return n;\n }\n\n readWord1(firstCode) {\n this.state.containsEsc = false;\n let word = \"\";\n const start = this.state.pos;\n let chunkStart = this.state.pos;\n\n if (firstCode !== undefined) {\n this.state.pos += firstCode <= 0xffff ? 1 : 2;\n }\n\n while (this.state.pos < this.length) {\n const ch = this.codePointAtPos(this.state.pos);\n\n if (isIdentifierChar(ch)) {\n this.state.pos += ch <= 0xffff ? 1 : 2;\n } else if (ch === 92) {\n this.state.containsEsc = true;\n word += this.input.slice(chunkStart, this.state.pos);\n const escStart = this.state.curPosition();\n const identifierCheck = this.state.pos === start ? isIdentifierStart : isIdentifierChar;\n\n if (this.input.charCodeAt(++this.state.pos) !== 117) {\n this.raise(Errors.MissingUnicodeEscape, {\n at: this.state.curPosition()\n });\n chunkStart = this.state.pos - 1;\n continue;\n }\n\n ++this.state.pos;\n const esc = this.readCodePoint(true);\n\n if (esc !== null) {\n if (!identifierCheck(esc)) {\n this.raise(Errors.EscapedCharNotAnIdentifier, {\n at: escStart\n });\n }\n\n word += String.fromCodePoint(esc);\n }\n\n chunkStart = this.state.pos;\n } else {\n break;\n }\n }\n\n return word + this.input.slice(chunkStart, this.state.pos);\n }\n\n readWord(firstCode) {\n const word = this.readWord1(firstCode);\n const type = keywords$1.get(word);\n\n if (type !== undefined) {\n this.finishToken(type, tokenLabelName(type));\n } else {\n this.finishToken(128, word);\n }\n }\n\n checkKeywordEscapes() {\n const {\n type\n } = this.state;\n\n if (tokenIsKeyword(type) && this.state.containsEsc) {\n this.raise(Errors.InvalidEscapedReservedWord, {\n at: this.state.startLoc,\n reservedWord: tokenLabelName(type)\n });\n }\n }\n\n raise(toParseError, raiseProperties) {\n const {\n at\n } = raiseProperties,\n details = _objectWithoutPropertiesLoose(raiseProperties, _excluded);\n\n const loc = at instanceof Position ? at : at.loc.start;\n const error = toParseError({\n loc,\n details\n });\n if (!this.options.errorRecovery) throw error;\n if (!this.isLookahead) this.state.errors.push(error);\n return error;\n }\n\n raiseOverwrite(toParseError, raiseProperties) {\n const {\n at\n } = raiseProperties,\n details = _objectWithoutPropertiesLoose(raiseProperties, _excluded2);\n\n const loc = at instanceof Position ? at : at.loc.start;\n const pos = loc.index;\n const errors = this.state.errors;\n\n for (let i = errors.length - 1; i >= 0; i--) {\n const error = errors[i];\n\n if (error.loc.index === pos) {\n return errors[i] = toParseError({\n loc,\n details\n });\n }\n\n if (error.loc.index < pos) break;\n }\n\n return this.raise(toParseError, raiseProperties);\n }\n\n updateContext(prevType) {}\n\n unexpected(loc, type) {\n throw this.raise(Errors.UnexpectedToken, {\n expected: type ? tokenLabelName(type) : null,\n at: loc != null ? loc : this.state.startLoc\n });\n }\n\n expectPlugin(pluginName, loc) {\n if (this.hasPlugin(pluginName)) {\n return true;\n }\n\n throw this.raise(Errors.MissingPlugin, {\n at: loc != null ? loc : this.state.startLoc,\n missingPlugin: [pluginName]\n });\n }\n\n expectOnePlugin(pluginNames) {\n if (!pluginNames.some(name => this.hasPlugin(name))) {\n throw this.raise(Errors.MissingOneOfPlugins, {\n at: this.state.startLoc,\n missingPlugin: pluginNames\n });\n }\n }\n\n}\n\nclass Scope {\n constructor(flags) {\n this.var = new Set();\n this.lexical = new Set();\n this.functions = new Set();\n this.flags = flags;\n }\n\n}\nclass ScopeHandler {\n constructor(parser, inModule) {\n this.parser = void 0;\n this.scopeStack = [];\n this.inModule = void 0;\n this.undefinedExports = new Map();\n this.parser = parser;\n this.inModule = inModule;\n }\n\n get inFunction() {\n return (this.currentVarScopeFlags() & SCOPE_FUNCTION) > 0;\n }\n\n get allowSuper() {\n return (this.currentThisScopeFlags() & SCOPE_SUPER) > 0;\n }\n\n get allowDirectSuper() {\n return (this.currentThisScopeFlags() & SCOPE_DIRECT_SUPER) > 0;\n }\n\n get inClass() {\n return (this.currentThisScopeFlags() & SCOPE_CLASS) > 0;\n }\n\n get inClassAndNotInNonArrowFunction() {\n const flags = this.currentThisScopeFlags();\n return (flags & SCOPE_CLASS) > 0 && (flags & SCOPE_FUNCTION) === 0;\n }\n\n get inStaticBlock() {\n for (let i = this.scopeStack.length - 1;; i--) {\n const {\n flags\n } = this.scopeStack[i];\n\n if (flags & SCOPE_STATIC_BLOCK) {\n return true;\n }\n\n if (flags & (SCOPE_VAR | SCOPE_CLASS)) {\n return false;\n }\n }\n }\n\n get inNonArrowFunction() {\n return (this.currentThisScopeFlags() & SCOPE_FUNCTION) > 0;\n }\n\n get treatFunctionsAsVar() {\n return this.treatFunctionsAsVarInScope(this.currentScope());\n }\n\n createScope(flags) {\n return new Scope(flags);\n }\n\n enter(flags) {\n this.scopeStack.push(this.createScope(flags));\n }\n\n exit() {\n this.scopeStack.pop();\n }\n\n treatFunctionsAsVarInScope(scope) {\n return !!(scope.flags & (SCOPE_FUNCTION | SCOPE_STATIC_BLOCK) || !this.parser.inModule && scope.flags & SCOPE_PROGRAM);\n }\n\n declareName(name, bindingType, loc) {\n let scope = this.currentScope();\n\n if (bindingType & BIND_SCOPE_LEXICAL || bindingType & BIND_SCOPE_FUNCTION) {\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n\n if (bindingType & BIND_SCOPE_FUNCTION) {\n scope.functions.add(name);\n } else {\n scope.lexical.add(name);\n }\n\n if (bindingType & BIND_SCOPE_LEXICAL) {\n this.maybeExportDefined(scope, name);\n }\n } else if (bindingType & BIND_SCOPE_VAR) {\n for (let i = this.scopeStack.length - 1; i >= 0; --i) {\n scope = this.scopeStack[i];\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n scope.var.add(name);\n this.maybeExportDefined(scope, name);\n if (scope.flags & SCOPE_VAR) break;\n }\n }\n\n if (this.parser.inModule && scope.flags & SCOPE_PROGRAM) {\n this.undefinedExports.delete(name);\n }\n }\n\n maybeExportDefined(scope, name) {\n if (this.parser.inModule && scope.flags & SCOPE_PROGRAM) {\n this.undefinedExports.delete(name);\n }\n }\n\n checkRedeclarationInScope(scope, name, bindingType, loc) {\n if (this.isRedeclaredInScope(scope, name, bindingType)) {\n this.parser.raise(Errors.VarRedeclaration, {\n at: loc,\n identifierName: name\n });\n }\n }\n\n isRedeclaredInScope(scope, name, bindingType) {\n if (!(bindingType & BIND_KIND_VALUE)) return false;\n\n if (bindingType & BIND_SCOPE_LEXICAL) {\n return scope.lexical.has(name) || scope.functions.has(name) || scope.var.has(name);\n }\n\n if (bindingType & BIND_SCOPE_FUNCTION) {\n return scope.lexical.has(name) || !this.treatFunctionsAsVarInScope(scope) && scope.var.has(name);\n }\n\n return scope.lexical.has(name) && !(scope.flags & SCOPE_SIMPLE_CATCH && scope.lexical.values().next().value === name) || !this.treatFunctionsAsVarInScope(scope) && scope.functions.has(name);\n }\n\n checkLocalExport(id) {\n const {\n name\n } = id;\n const topLevelScope = this.scopeStack[0];\n\n if (!topLevelScope.lexical.has(name) && !topLevelScope.var.has(name) && !topLevelScope.functions.has(name)) {\n this.undefinedExports.set(name, id.loc.start);\n }\n }\n\n currentScope() {\n return this.scopeStack[this.scopeStack.length - 1];\n }\n\n currentVarScopeFlags() {\n for (let i = this.scopeStack.length - 1;; i--) {\n const {\n flags\n } = this.scopeStack[i];\n\n if (flags & SCOPE_VAR) {\n return flags;\n }\n }\n }\n\n currentThisScopeFlags() {\n for (let i = this.scopeStack.length - 1;; i--) {\n const {\n flags\n } = this.scopeStack[i];\n\n if (flags & (SCOPE_VAR | SCOPE_CLASS) && !(flags & SCOPE_ARROW)) {\n return flags;\n }\n }\n }\n\n}\n\nclass FlowScope extends Scope {\n constructor(...args) {\n super(...args);\n this.declareFunctions = new Set();\n }\n\n}\n\nclass FlowScopeHandler extends ScopeHandler {\n createScope(flags) {\n return new FlowScope(flags);\n }\n\n declareName(name, bindingType, loc) {\n const scope = this.currentScope();\n\n if (bindingType & BIND_FLAGS_FLOW_DECLARE_FN) {\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n this.maybeExportDefined(scope, name);\n scope.declareFunctions.add(name);\n return;\n }\n\n super.declareName(...arguments);\n }\n\n isRedeclaredInScope(scope, name, bindingType) {\n if (super.isRedeclaredInScope(...arguments)) return true;\n\n if (bindingType & BIND_FLAGS_FLOW_DECLARE_FN) {\n return !scope.declareFunctions.has(name) && (scope.lexical.has(name) || scope.functions.has(name));\n }\n\n return false;\n }\n\n checkLocalExport(id) {\n if (!this.scopeStack[0].declareFunctions.has(id.name)) {\n super.checkLocalExport(id);\n }\n }\n\n}\n\nclass ClassScope {\n constructor() {\n this.privateNames = new Set();\n this.loneAccessors = new Map();\n this.undefinedPrivateNames = new Map();\n }\n\n}\nclass ClassScopeHandler {\n constructor(parser) {\n this.parser = void 0;\n this.stack = [];\n this.undefinedPrivateNames = new Map();\n this.parser = parser;\n }\n\n current() {\n return this.stack[this.stack.length - 1];\n }\n\n enter() {\n this.stack.push(new ClassScope());\n }\n\n exit() {\n const oldClassScope = this.stack.pop();\n const current = this.current();\n\n for (const [name, loc] of Array.from(oldClassScope.undefinedPrivateNames)) {\n if (current) {\n if (!current.undefinedPrivateNames.has(name)) {\n current.undefinedPrivateNames.set(name, loc);\n }\n } else {\n this.parser.raise(Errors.InvalidPrivateFieldResolution, {\n at: loc,\n identifierName: name\n });\n }\n }\n }\n\n declarePrivateName(name, elementType, loc) {\n const {\n privateNames,\n loneAccessors,\n undefinedPrivateNames\n } = this.current();\n let redefined = privateNames.has(name);\n\n if (elementType & CLASS_ELEMENT_KIND_ACCESSOR) {\n const accessor = redefined && loneAccessors.get(name);\n\n if (accessor) {\n const oldStatic = accessor & CLASS_ELEMENT_FLAG_STATIC;\n const newStatic = elementType & CLASS_ELEMENT_FLAG_STATIC;\n const oldKind = accessor & CLASS_ELEMENT_KIND_ACCESSOR;\n const newKind = elementType & CLASS_ELEMENT_KIND_ACCESSOR;\n redefined = oldKind === newKind || oldStatic !== newStatic;\n if (!redefined) loneAccessors.delete(name);\n } else if (!redefined) {\n loneAccessors.set(name, elementType);\n }\n }\n\n if (redefined) {\n this.parser.raise(Errors.PrivateNameRedeclaration, {\n at: loc,\n identifierName: name\n });\n }\n\n privateNames.add(name);\n undefinedPrivateNames.delete(name);\n }\n\n usePrivateName(name, loc) {\n let classScope;\n\n for (classScope of this.stack) {\n if (classScope.privateNames.has(name)) return;\n }\n\n if (classScope) {\n classScope.undefinedPrivateNames.set(name, loc);\n } else {\n this.parser.raise(Errors.InvalidPrivateFieldResolution, {\n at: loc,\n identifierName: name\n });\n }\n }\n\n}\n\nconst kExpression = 0,\n kMaybeArrowParameterDeclaration = 1,\n kMaybeAsyncArrowParameterDeclaration = 2,\n kParameterDeclaration = 3;\n\nclass ExpressionScope {\n constructor(type = kExpression) {\n this.type = void 0;\n this.type = type;\n }\n\n canBeArrowParameterDeclaration() {\n return this.type === kMaybeAsyncArrowParameterDeclaration || this.type === kMaybeArrowParameterDeclaration;\n }\n\n isCertainlyParameterDeclaration() {\n return this.type === kParameterDeclaration;\n }\n\n}\n\nclass ArrowHeadParsingScope extends ExpressionScope {\n constructor(type) {\n super(type);\n this.declarationErrors = new Map();\n }\n\n recordDeclarationError(ParsingErrorClass, {\n at\n }) {\n const index = at.index;\n this.declarationErrors.set(index, [ParsingErrorClass, at]);\n }\n\n clearDeclarationError(index) {\n this.declarationErrors.delete(index);\n }\n\n iterateErrors(iterator) {\n this.declarationErrors.forEach(iterator);\n }\n\n}\n\nclass ExpressionScopeHandler {\n constructor(parser) {\n this.parser = void 0;\n this.stack = [new ExpressionScope()];\n this.parser = parser;\n }\n\n enter(scope) {\n this.stack.push(scope);\n }\n\n exit() {\n this.stack.pop();\n }\n\n recordParameterInitializerError(toParseError, {\n at: node\n }) {\n const origin = {\n at: node.loc.start\n };\n const {\n stack\n } = this;\n let i = stack.length - 1;\n let scope = stack[i];\n\n while (!scope.isCertainlyParameterDeclaration()) {\n if (scope.canBeArrowParameterDeclaration()) {\n scope.recordDeclarationError(toParseError, origin);\n } else {\n return;\n }\n\n scope = stack[--i];\n }\n\n this.parser.raise(toParseError, origin);\n }\n\n recordArrowParemeterBindingError(error, {\n at: node\n }) {\n const {\n stack\n } = this;\n const scope = stack[stack.length - 1];\n const origin = {\n at: node.loc.start\n };\n\n if (scope.isCertainlyParameterDeclaration()) {\n this.parser.raise(error, origin);\n } else if (scope.canBeArrowParameterDeclaration()) {\n scope.recordDeclarationError(error, origin);\n } else {\n return;\n }\n }\n\n recordAsyncArrowParametersError({\n at\n }) {\n const {\n stack\n } = this;\n let i = stack.length - 1;\n let scope = stack[i];\n\n while (scope.canBeArrowParameterDeclaration()) {\n if (scope.type === kMaybeAsyncArrowParameterDeclaration) {\n scope.recordDeclarationError(Errors.AwaitBindingIdentifier, {\n at\n });\n }\n\n scope = stack[--i];\n }\n }\n\n validateAsPattern() {\n const {\n stack\n } = this;\n const currentScope = stack[stack.length - 1];\n if (!currentScope.canBeArrowParameterDeclaration()) return;\n currentScope.iterateErrors(([toParseError, loc]) => {\n this.parser.raise(toParseError, {\n at: loc\n });\n let i = stack.length - 2;\n let scope = stack[i];\n\n while (scope.canBeArrowParameterDeclaration()) {\n scope.clearDeclarationError(loc.index);\n scope = stack[--i];\n }\n });\n }\n\n}\nfunction newParameterDeclarationScope() {\n return new ExpressionScope(kParameterDeclaration);\n}\nfunction newArrowHeadScope() {\n return new ArrowHeadParsingScope(kMaybeArrowParameterDeclaration);\n}\nfunction newAsyncArrowScope() {\n return new ArrowHeadParsingScope(kMaybeAsyncArrowParameterDeclaration);\n}\nfunction newExpressionScope() {\n return new ExpressionScope();\n}\n\nconst PARAM = 0b0000,\n PARAM_YIELD = 0b0001,\n PARAM_AWAIT = 0b0010,\n PARAM_RETURN = 0b0100,\n PARAM_IN = 0b1000;\nclass ProductionParameterHandler {\n constructor() {\n this.stacks = [];\n }\n\n enter(flags) {\n this.stacks.push(flags);\n }\n\n exit() {\n this.stacks.pop();\n }\n\n currentFlags() {\n return this.stacks[this.stacks.length - 1];\n }\n\n get hasAwait() {\n return (this.currentFlags() & PARAM_AWAIT) > 0;\n }\n\n get hasYield() {\n return (this.currentFlags() & PARAM_YIELD) > 0;\n }\n\n get hasReturn() {\n return (this.currentFlags() & PARAM_RETURN) > 0;\n }\n\n get hasIn() {\n return (this.currentFlags() & PARAM_IN) > 0;\n }\n\n}\nfunction functionFlags(isAsync, isGenerator) {\n return (isAsync ? PARAM_AWAIT : 0) | (isGenerator ? PARAM_YIELD : 0);\n}\n\nclass UtilParser extends Tokenizer {\n addExtra(node, key, value, enumerable = true) {\n if (!node) return;\n const extra = node.extra = node.extra || {};\n\n if (enumerable) {\n extra[key] = value;\n } else {\n Object.defineProperty(extra, key, {\n enumerable,\n value\n });\n }\n }\n\n isContextual(token) {\n return this.state.type === token && !this.state.containsEsc;\n }\n\n isUnparsedContextual(nameStart, name) {\n const nameEnd = nameStart + name.length;\n\n if (this.input.slice(nameStart, nameEnd) === name) {\n const nextCh = this.input.charCodeAt(nameEnd);\n return !(isIdentifierChar(nextCh) || (nextCh & 0xfc00) === 0xd800);\n }\n\n return false;\n }\n\n isLookaheadContextual(name) {\n const next = this.nextTokenStart();\n return this.isUnparsedContextual(next, name);\n }\n\n eatContextual(token) {\n if (this.isContextual(token)) {\n this.next();\n return true;\n }\n\n return false;\n }\n\n expectContextual(token, toParseError) {\n if (!this.eatContextual(token)) {\n if (toParseError != null) {\n throw this.raise(toParseError, {\n at: this.state.startLoc\n });\n }\n\n throw this.unexpected(null, token);\n }\n }\n\n canInsertSemicolon() {\n return this.match(135) || this.match(8) || this.hasPrecedingLineBreak();\n }\n\n hasPrecedingLineBreak() {\n return lineBreak.test(this.input.slice(this.state.lastTokEndLoc.index, this.state.start));\n }\n\n hasFollowingLineBreak() {\n skipWhiteSpaceToLineBreak.lastIndex = this.state.end;\n return skipWhiteSpaceToLineBreak.test(this.input);\n }\n\n isLineTerminator() {\n return this.eat(13) || this.canInsertSemicolon();\n }\n\n semicolon(allowAsi = true) {\n if (allowAsi ? this.isLineTerminator() : this.eat(13)) return;\n this.raise(Errors.MissingSemicolon, {\n at: this.state.lastTokEndLoc\n });\n }\n\n expect(type, loc) {\n this.eat(type) || this.unexpected(loc, type);\n }\n\n tryParse(fn, oldState = this.state.clone()) {\n const abortSignal = {\n node: null\n };\n\n try {\n const node = fn((node = null) => {\n abortSignal.node = node;\n throw abortSignal;\n });\n\n if (this.state.errors.length > oldState.errors.length) {\n const failState = this.state;\n this.state = oldState;\n this.state.tokensLength = failState.tokensLength;\n return {\n node,\n error: failState.errors[oldState.errors.length],\n thrown: false,\n aborted: false,\n failState\n };\n }\n\n return {\n node,\n error: null,\n thrown: false,\n aborted: false,\n failState: null\n };\n } catch (error) {\n const failState = this.state;\n this.state = oldState;\n\n if (error instanceof SyntaxError) {\n return {\n node: null,\n error,\n thrown: true,\n aborted: false,\n failState\n };\n }\n\n if (error === abortSignal) {\n return {\n node: abortSignal.node,\n error: null,\n thrown: false,\n aborted: true,\n failState\n };\n }\n\n throw error;\n }\n }\n\n checkExpressionErrors(refExpressionErrors, andThrow) {\n if (!refExpressionErrors) return false;\n const {\n shorthandAssignLoc,\n doubleProtoLoc,\n privateKeyLoc,\n optionalParametersLoc\n } = refExpressionErrors;\n const hasErrors = !!shorthandAssignLoc || !!doubleProtoLoc || !!optionalParametersLoc || !!privateKeyLoc;\n\n if (!andThrow) {\n return hasErrors;\n }\n\n if (shorthandAssignLoc != null) {\n this.raise(Errors.InvalidCoverInitializedName, {\n at: shorthandAssignLoc\n });\n }\n\n if (doubleProtoLoc != null) {\n this.raise(Errors.DuplicateProto, {\n at: doubleProtoLoc\n });\n }\n\n if (privateKeyLoc != null) {\n this.raise(Errors.UnexpectedPrivateField, {\n at: privateKeyLoc\n });\n }\n\n if (optionalParametersLoc != null) {\n this.unexpected(optionalParametersLoc);\n }\n }\n\n isLiteralPropertyName() {\n return tokenIsLiteralPropertyName(this.state.type);\n }\n\n isPrivateName(node) {\n return node.type === \"PrivateName\";\n }\n\n getPrivateNameSV(node) {\n return node.id.name;\n }\n\n hasPropertyAsPrivateName(node) {\n return (node.type === \"MemberExpression\" || node.type === \"OptionalMemberExpression\") && this.isPrivateName(node.property);\n }\n\n isOptionalChain(node) {\n return node.type === \"OptionalMemberExpression\" || node.type === \"OptionalCallExpression\";\n }\n\n isObjectProperty(node) {\n return node.type === \"ObjectProperty\";\n }\n\n isObjectMethod(node) {\n return node.type === \"ObjectMethod\";\n }\n\n initializeScopes(inModule = this.options.sourceType === \"module\") {\n const oldLabels = this.state.labels;\n this.state.labels = [];\n const oldExportedIdentifiers = this.exportedIdentifiers;\n this.exportedIdentifiers = new Set();\n const oldInModule = this.inModule;\n this.inModule = inModule;\n const oldScope = this.scope;\n const ScopeHandler = this.getScopeHandler();\n this.scope = new ScopeHandler(this, inModule);\n const oldProdParam = this.prodParam;\n this.prodParam = new ProductionParameterHandler();\n const oldClassScope = this.classScope;\n this.classScope = new ClassScopeHandler(this);\n const oldExpressionScope = this.expressionScope;\n this.expressionScope = new ExpressionScopeHandler(this);\n return () => {\n this.state.labels = oldLabels;\n this.exportedIdentifiers = oldExportedIdentifiers;\n this.inModule = oldInModule;\n this.scope = oldScope;\n this.prodParam = oldProdParam;\n this.classScope = oldClassScope;\n this.expressionScope = oldExpressionScope;\n };\n }\n\n enterInitialScopes() {\n let paramFlags = PARAM;\n\n if (this.inModule) {\n paramFlags |= PARAM_AWAIT;\n }\n\n this.scope.enter(SCOPE_PROGRAM);\n this.prodParam.enter(paramFlags);\n }\n\n checkDestructuringPrivate(refExpressionErrors) {\n const {\n privateKeyLoc\n } = refExpressionErrors;\n\n if (privateKeyLoc !== null) {\n this.expectPlugin(\"destructuringPrivate\", privateKeyLoc);\n }\n }\n\n}\nclass ExpressionErrors {\n constructor() {\n this.shorthandAssignLoc = null;\n this.doubleProtoLoc = null;\n this.privateKeyLoc = null;\n this.optionalParametersLoc = null;\n }\n\n}\n\nclass Node {\n constructor(parser, pos, loc) {\n this.type = \"\";\n this.start = pos;\n this.end = 0;\n this.loc = new SourceLocation(loc);\n if (parser != null && parser.options.ranges) this.range = [pos, 0];\n if (parser != null && parser.filename) this.loc.filename = parser.filename;\n }\n\n}\n\nconst NodePrototype = Node.prototype;\n{\n NodePrototype.__clone = function () {\n const newNode = new Node();\n const keys = Object.keys(this);\n\n for (let i = 0, length = keys.length; i < length; i++) {\n const key = keys[i];\n\n if (key !== \"leadingComments\" && key !== \"trailingComments\" && key !== \"innerComments\") {\n newNode[key] = this[key];\n }\n }\n\n return newNode;\n };\n}\n\nfunction clonePlaceholder(node) {\n return cloneIdentifier(node);\n}\n\nfunction cloneIdentifier(node) {\n const {\n type,\n start,\n end,\n loc,\n range,\n extra,\n name\n } = node;\n const cloned = Object.create(NodePrototype);\n cloned.type = type;\n cloned.start = start;\n cloned.end = end;\n cloned.loc = loc;\n cloned.range = range;\n cloned.extra = extra;\n cloned.name = name;\n\n if (type === \"Placeholder\") {\n cloned.expectedNode = node.expectedNode;\n }\n\n return cloned;\n}\nfunction cloneStringLiteral(node) {\n const {\n type,\n start,\n end,\n loc,\n range,\n extra\n } = node;\n\n if (type === \"Placeholder\") {\n return clonePlaceholder(node);\n }\n\n const cloned = Object.create(NodePrototype);\n cloned.type = type;\n cloned.start = start;\n cloned.end = end;\n cloned.loc = loc;\n cloned.range = range;\n\n if (node.raw !== undefined) {\n cloned.raw = node.raw;\n } else {\n cloned.extra = extra;\n }\n\n cloned.value = node.value;\n return cloned;\n}\nclass NodeUtils extends UtilParser {\n startNode() {\n return new Node(this, this.state.start, this.state.startLoc);\n }\n\n startNodeAt(pos, loc) {\n return new Node(this, pos, loc);\n }\n\n startNodeAtNode(type) {\n return this.startNodeAt(type.start, type.loc.start);\n }\n\n finishNode(node, type) {\n return this.finishNodeAt(node, type, this.state.lastTokEndLoc);\n }\n\n finishNodeAt(node, type, endLoc) {\n\n node.type = type;\n node.end = endLoc.index;\n node.loc.end = endLoc;\n if (this.options.ranges) node.range[1] = endLoc.index;\n if (this.options.attachComment) this.processComment(node);\n return node;\n }\n\n resetStartLocation(node, start, startLoc) {\n node.start = start;\n node.loc.start = startLoc;\n if (this.options.ranges) node.range[0] = start;\n }\n\n resetEndLocation(node, endLoc = this.state.lastTokEndLoc) {\n node.end = endLoc.index;\n node.loc.end = endLoc;\n if (this.options.ranges) node.range[1] = endLoc.index;\n }\n\n resetStartLocationFromNode(node, locationNode) {\n this.resetStartLocation(node, locationNode.start, locationNode.loc.start);\n }\n\n}\n\nconst reservedTypes = new Set([\"_\", \"any\", \"bool\", \"boolean\", \"empty\", \"extends\", \"false\", \"interface\", \"mixed\", \"null\", \"number\", \"static\", \"string\", \"true\", \"typeof\", \"void\"]);\nconst FlowErrors = ParseErrorEnum`flow`(_ => ({\n AmbiguousConditionalArrow: _(\"Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.\"),\n AmbiguousDeclareModuleKind: _(\"Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.\"),\n AssignReservedType: _(({\n reservedType\n }) => `Cannot overwrite reserved type ${reservedType}.`),\n DeclareClassElement: _(\"The `declare` modifier can only appear on class fields.\"),\n DeclareClassFieldInitializer: _(\"Initializers are not allowed in fields with the `declare` modifier.\"),\n DuplicateDeclareModuleExports: _(\"Duplicate `declare module.exports` statement.\"),\n EnumBooleanMemberNotInitialized: _(({\n memberName,\n enumName\n }) => `Boolean enum members need to be initialized. Use either \\`${memberName} = true,\\` or \\`${memberName} = false,\\` in enum \\`${enumName}\\`.`),\n EnumDuplicateMemberName: _(({\n memberName,\n enumName\n }) => `Enum member names need to be unique, but the name \\`${memberName}\\` has already been used before in enum \\`${enumName}\\`.`),\n EnumInconsistentMemberValues: _(({\n enumName\n }) => `Enum \\`${enumName}\\` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.`),\n EnumInvalidExplicitType: _(({\n invalidEnumType,\n enumName\n }) => `Enum type \\`${invalidEnumType}\\` is not valid. Use one of \\`boolean\\`, \\`number\\`, \\`string\\`, or \\`symbol\\` in enum \\`${enumName}\\`.`),\n EnumInvalidExplicitTypeUnknownSupplied: _(({\n enumName\n }) => `Supplied enum type is not valid. Use one of \\`boolean\\`, \\`number\\`, \\`string\\`, or \\`symbol\\` in enum \\`${enumName}\\`.`),\n EnumInvalidMemberInitializerPrimaryType: _(({\n enumName,\n memberName,\n explicitType\n }) => `Enum \\`${enumName}\\` has type \\`${explicitType}\\`, so the initializer of \\`${memberName}\\` needs to be a ${explicitType} literal.`),\n EnumInvalidMemberInitializerSymbolType: _(({\n enumName,\n memberName\n }) => `Symbol enum members cannot be initialized. Use \\`${memberName},\\` in enum \\`${enumName}\\`.`),\n EnumInvalidMemberInitializerUnknownType: _(({\n enumName,\n memberName\n }) => `The enum member initializer for \\`${memberName}\\` needs to be a literal (either a boolean, number, or string) in enum \\`${enumName}\\`.`),\n EnumInvalidMemberName: _(({\n enumName,\n memberName,\n suggestion\n }) => `Enum member names cannot start with lowercase 'a' through 'z'. Instead of using \\`${memberName}\\`, consider using \\`${suggestion}\\`, in enum \\`${enumName}\\`.`),\n EnumNumberMemberNotInitialized: _(({\n enumName,\n memberName\n }) => `Number enum members need to be initialized, e.g. \\`${memberName} = 1\\` in enum \\`${enumName}\\`.`),\n EnumStringMemberInconsistentlyInitailized: _(({\n enumName\n }) => `String enum members need to consistently either all use initializers, or use no initializers, in enum \\`${enumName}\\`.`),\n GetterMayNotHaveThisParam: _(\"A getter cannot have a `this` parameter.\"),\n ImportTypeShorthandOnlyInPureImport: _(\"The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.\"),\n InexactInsideExact: _(\"Explicit inexact syntax cannot appear inside an explicit exact object type.\"),\n InexactInsideNonObject: _(\"Explicit inexact syntax cannot appear in class or interface definitions.\"),\n InexactVariance: _(\"Explicit inexact syntax cannot have variance.\"),\n InvalidNonTypeImportInDeclareModule: _(\"Imports within a `declare module` body must always be `import type` or `import typeof`.\"),\n MissingTypeParamDefault: _(\"Type parameter declaration needs a default, since a preceding type parameter declaration has a default.\"),\n NestedDeclareModule: _(\"`declare module` cannot be used inside another `declare module`.\"),\n NestedFlowComment: _(\"Cannot have a flow comment inside another flow comment.\"),\n PatternIsOptional: _(\"A binding pattern parameter cannot be optional in an implementation signature.\", {\n reasonCode: \"OptionalBindingPattern\"\n }),\n SetterMayNotHaveThisParam: _(\"A setter cannot have a `this` parameter.\"),\n SpreadVariance: _(\"Spread properties cannot have variance.\"),\n ThisParamAnnotationRequired: _(\"A type annotation is required for the `this` parameter.\"),\n ThisParamBannedInConstructor: _(\"Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.\"),\n ThisParamMayNotBeOptional: _(\"The `this` parameter cannot be optional.\"),\n ThisParamMustBeFirst: _(\"The `this` parameter must be the first function parameter.\"),\n ThisParamNoDefault: _(\"The `this` parameter may not have a default value.\"),\n TypeBeforeInitializer: _(\"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.\"),\n TypeCastInPattern: _(\"The type cast expression is expected to be wrapped with parenthesis.\"),\n UnexpectedExplicitInexactInObject: _(\"Explicit inexact syntax must appear at the end of an inexact object.\"),\n UnexpectedReservedType: _(({\n reservedType\n }) => `Unexpected reserved type ${reservedType}.`),\n UnexpectedReservedUnderscore: _(\"`_` is only allowed as a type argument to call or new.\"),\n UnexpectedSpaceBetweenModuloChecks: _(\"Spaces between `%` and `checks` are not allowed here.\"),\n UnexpectedSpreadType: _(\"Spread operator cannot appear in class or interface definitions.\"),\n UnexpectedSubtractionOperand: _('Unexpected token, expected \"number\" or \"bigint\".'),\n UnexpectedTokenAfterTypeParameter: _(\"Expected an arrow function after this type parameter declaration.\"),\n UnexpectedTypeParameterBeforeAsyncArrowFunction: _(\"Type parameters must come after the async keyword, e.g. instead of ` async () => {}`, use `async () => {}`.\"),\n UnsupportedDeclareExportKind: _(({\n unsupportedExportKind,\n suggestion\n }) => `\\`declare export ${unsupportedExportKind}\\` is not supported. Use \\`${suggestion}\\` instead.`),\n UnsupportedStatementInDeclareModule: _(\"Only declares and type imports are allowed inside declare module.\"),\n UnterminatedFlowComment: _(\"Unterminated flow-comment.\")\n}));\n\nfunction isEsModuleType(bodyElement) {\n return bodyElement.type === \"DeclareExportAllDeclaration\" || bodyElement.type === \"DeclareExportDeclaration\" && (!bodyElement.declaration || bodyElement.declaration.type !== \"TypeAlias\" && bodyElement.declaration.type !== \"InterfaceDeclaration\");\n}\n\nfunction hasTypeImportKind(node) {\n return node.importKind === \"type\" || node.importKind === \"typeof\";\n}\n\nfunction isMaybeDefaultImport(type) {\n return tokenIsKeywordOrIdentifier(type) && type !== 97;\n}\n\nconst exportSuggestions = {\n const: \"declare export var\",\n let: \"declare export var\",\n type: \"export type\",\n interface: \"export interface\"\n};\n\nfunction partition(list, test) {\n const list1 = [];\n const list2 = [];\n\n for (let i = 0; i < list.length; i++) {\n (test(list[i], i, list) ? list1 : list2).push(list[i]);\n }\n\n return [list1, list2];\n}\n\nconst FLOW_PRAGMA_REGEX = /\\*?\\s*@((?:no)?flow)\\b/;\nvar flow = (superClass => class extends superClass {\n constructor(...args) {\n super(...args);\n this.flowPragma = undefined;\n }\n\n getScopeHandler() {\n return FlowScopeHandler;\n }\n\n shouldParseTypes() {\n return this.getPluginOption(\"flow\", \"all\") || this.flowPragma === \"flow\";\n }\n\n shouldParseEnums() {\n return !!this.getPluginOption(\"flow\", \"enums\");\n }\n\n finishToken(type, val) {\n if (type !== 129 && type !== 13 && type !== 28) {\n if (this.flowPragma === undefined) {\n this.flowPragma = null;\n }\n }\n\n return super.finishToken(type, val);\n }\n\n addComment(comment) {\n if (this.flowPragma === undefined) {\n const matches = FLOW_PRAGMA_REGEX.exec(comment.value);\n\n if (!matches) ; else if (matches[1] === \"flow\") {\n this.flowPragma = \"flow\";\n } else if (matches[1] === \"noflow\") {\n this.flowPragma = \"noflow\";\n } else {\n throw new Error(\"Unexpected flow pragma\");\n }\n }\n\n return super.addComment(comment);\n }\n\n flowParseTypeInitialiser(tok) {\n const oldInType = this.state.inType;\n this.state.inType = true;\n this.expect(tok || 14);\n const type = this.flowParseType();\n this.state.inType = oldInType;\n return type;\n }\n\n flowParsePredicate() {\n const node = this.startNode();\n const moduloLoc = this.state.startLoc;\n this.next();\n this.expectContextual(107);\n\n if (this.state.lastTokStart > moduloLoc.index + 1) {\n this.raise(FlowErrors.UnexpectedSpaceBetweenModuloChecks, {\n at: moduloLoc\n });\n }\n\n if (this.eat(10)) {\n node.value = this.parseExpression();\n this.expect(11);\n return this.finishNode(node, \"DeclaredPredicate\");\n } else {\n return this.finishNode(node, \"InferredPredicate\");\n }\n }\n\n flowParseTypeAndPredicateInitialiser() {\n const oldInType = this.state.inType;\n this.state.inType = true;\n this.expect(14);\n let type = null;\n let predicate = null;\n\n if (this.match(54)) {\n this.state.inType = oldInType;\n predicate = this.flowParsePredicate();\n } else {\n type = this.flowParseType();\n this.state.inType = oldInType;\n\n if (this.match(54)) {\n predicate = this.flowParsePredicate();\n }\n }\n\n return [type, predicate];\n }\n\n flowParseDeclareClass(node) {\n this.next();\n this.flowParseInterfaceish(node, true);\n return this.finishNode(node, \"DeclareClass\");\n }\n\n flowParseDeclareFunction(node) {\n this.next();\n const id = node.id = this.parseIdentifier();\n const typeNode = this.startNode();\n const typeContainer = this.startNode();\n\n if (this.match(47)) {\n typeNode.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n typeNode.typeParameters = null;\n }\n\n this.expect(10);\n const tmp = this.flowParseFunctionTypeParams();\n typeNode.params = tmp.params;\n typeNode.rest = tmp.rest;\n typeNode.this = tmp._this;\n this.expect(11);\n [typeNode.returnType, node.predicate] = this.flowParseTypeAndPredicateInitialiser();\n typeContainer.typeAnnotation = this.finishNode(typeNode, \"FunctionTypeAnnotation\");\n id.typeAnnotation = this.finishNode(typeContainer, \"TypeAnnotation\");\n this.resetEndLocation(id);\n this.semicolon();\n this.scope.declareName(node.id.name, BIND_FLOW_DECLARE_FN, node.id.loc.start);\n return this.finishNode(node, \"DeclareFunction\");\n }\n\n flowParseDeclare(node, insideModule) {\n if (this.match(80)) {\n return this.flowParseDeclareClass(node);\n } else if (this.match(68)) {\n return this.flowParseDeclareFunction(node);\n } else if (this.match(74)) {\n return this.flowParseDeclareVariable(node);\n } else if (this.eatContextual(123)) {\n if (this.match(16)) {\n return this.flowParseDeclareModuleExports(node);\n } else {\n if (insideModule) {\n this.raise(FlowErrors.NestedDeclareModule, {\n at: this.state.lastTokStartLoc\n });\n }\n\n return this.flowParseDeclareModule(node);\n }\n } else if (this.isContextual(126)) {\n return this.flowParseDeclareTypeAlias(node);\n } else if (this.isContextual(127)) {\n return this.flowParseDeclareOpaqueType(node);\n } else if (this.isContextual(125)) {\n return this.flowParseDeclareInterface(node);\n } else if (this.match(82)) {\n return this.flowParseDeclareExportDeclaration(node, insideModule);\n } else {\n throw this.unexpected();\n }\n }\n\n flowParseDeclareVariable(node) {\n this.next();\n node.id = this.flowParseTypeAnnotatableIdentifier(true);\n this.scope.declareName(node.id.name, BIND_VAR, node.id.loc.start);\n this.semicolon();\n return this.finishNode(node, \"DeclareVariable\");\n }\n\n flowParseDeclareModule(node) {\n this.scope.enter(SCOPE_OTHER);\n\n if (this.match(129)) {\n node.id = this.parseExprAtom();\n } else {\n node.id = this.parseIdentifier();\n }\n\n const bodyNode = node.body = this.startNode();\n const body = bodyNode.body = [];\n this.expect(5);\n\n while (!this.match(8)) {\n let bodyNode = this.startNode();\n\n if (this.match(83)) {\n this.next();\n\n if (!this.isContextual(126) && !this.match(87)) {\n this.raise(FlowErrors.InvalidNonTypeImportInDeclareModule, {\n at: this.state.lastTokStartLoc\n });\n }\n\n this.parseImport(bodyNode);\n } else {\n this.expectContextual(121, FlowErrors.UnsupportedStatementInDeclareModule);\n bodyNode = this.flowParseDeclare(bodyNode, true);\n }\n\n body.push(bodyNode);\n }\n\n this.scope.exit();\n this.expect(8);\n this.finishNode(bodyNode, \"BlockStatement\");\n let kind = null;\n let hasModuleExport = false;\n body.forEach(bodyElement => {\n if (isEsModuleType(bodyElement)) {\n if (kind === \"CommonJS\") {\n this.raise(FlowErrors.AmbiguousDeclareModuleKind, {\n at: bodyElement\n });\n }\n\n kind = \"ES\";\n } else if (bodyElement.type === \"DeclareModuleExports\") {\n if (hasModuleExport) {\n this.raise(FlowErrors.DuplicateDeclareModuleExports, {\n at: bodyElement\n });\n }\n\n if (kind === \"ES\") {\n this.raise(FlowErrors.AmbiguousDeclareModuleKind, {\n at: bodyElement\n });\n }\n\n kind = \"CommonJS\";\n hasModuleExport = true;\n }\n });\n node.kind = kind || \"CommonJS\";\n return this.finishNode(node, \"DeclareModule\");\n }\n\n flowParseDeclareExportDeclaration(node, insideModule) {\n this.expect(82);\n\n if (this.eat(65)) {\n if (this.match(68) || this.match(80)) {\n node.declaration = this.flowParseDeclare(this.startNode());\n } else {\n node.declaration = this.flowParseType();\n this.semicolon();\n }\n\n node.default = true;\n return this.finishNode(node, \"DeclareExportDeclaration\");\n } else {\n if (this.match(75) || this.isLet() || (this.isContextual(126) || this.isContextual(125)) && !insideModule) {\n const label = this.state.value;\n throw this.raise(FlowErrors.UnsupportedDeclareExportKind, {\n at: this.state.startLoc,\n unsupportedExportKind: label,\n suggestion: exportSuggestions[label]\n });\n }\n\n if (this.match(74) || this.match(68) || this.match(80) || this.isContextual(127)) {\n node.declaration = this.flowParseDeclare(this.startNode());\n node.default = false;\n return this.finishNode(node, \"DeclareExportDeclaration\");\n } else if (this.match(55) || this.match(5) || this.isContextual(125) || this.isContextual(126) || this.isContextual(127)) {\n node = this.parseExport(node);\n\n if (node.type === \"ExportNamedDeclaration\") {\n node.type = \"ExportDeclaration\";\n node.default = false;\n delete node.exportKind;\n }\n\n node.type = \"Declare\" + node.type;\n return node;\n }\n }\n\n throw this.unexpected();\n }\n\n flowParseDeclareModuleExports(node) {\n this.next();\n this.expectContextual(108);\n node.typeAnnotation = this.flowParseTypeAnnotation();\n this.semicolon();\n return this.finishNode(node, \"DeclareModuleExports\");\n }\n\n flowParseDeclareTypeAlias(node) {\n this.next();\n this.flowParseTypeAlias(node);\n node.type = \"DeclareTypeAlias\";\n return node;\n }\n\n flowParseDeclareOpaqueType(node) {\n this.next();\n this.flowParseOpaqueType(node, true);\n node.type = \"DeclareOpaqueType\";\n return node;\n }\n\n flowParseDeclareInterface(node) {\n this.next();\n this.flowParseInterfaceish(node);\n return this.finishNode(node, \"DeclareInterface\");\n }\n\n flowParseInterfaceish(node, isClass = false) {\n node.id = this.flowParseRestrictedIdentifier(!isClass, true);\n this.scope.declareName(node.id.name, isClass ? BIND_FUNCTION : BIND_LEXICAL, node.id.loc.start);\n\n if (this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n\n node.extends = [];\n node.implements = [];\n node.mixins = [];\n\n if (this.eat(81)) {\n do {\n node.extends.push(this.flowParseInterfaceExtends());\n } while (!isClass && this.eat(12));\n }\n\n if (this.isContextual(114)) {\n this.next();\n\n do {\n node.mixins.push(this.flowParseInterfaceExtends());\n } while (this.eat(12));\n }\n\n if (this.isContextual(110)) {\n this.next();\n\n do {\n node.implements.push(this.flowParseInterfaceExtends());\n } while (this.eat(12));\n }\n\n node.body = this.flowParseObjectType({\n allowStatic: isClass,\n allowExact: false,\n allowSpread: false,\n allowProto: isClass,\n allowInexact: false\n });\n }\n\n flowParseInterfaceExtends() {\n const node = this.startNode();\n node.id = this.flowParseQualifiedTypeIdentifier();\n\n if (this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n } else {\n node.typeParameters = null;\n }\n\n return this.finishNode(node, \"InterfaceExtends\");\n }\n\n flowParseInterface(node) {\n this.flowParseInterfaceish(node);\n return this.finishNode(node, \"InterfaceDeclaration\");\n }\n\n checkNotUnderscore(word) {\n if (word === \"_\") {\n this.raise(FlowErrors.UnexpectedReservedUnderscore, {\n at: this.state.startLoc\n });\n }\n }\n\n checkReservedType(word, startLoc, declaration) {\n if (!reservedTypes.has(word)) return;\n this.raise(declaration ? FlowErrors.AssignReservedType : FlowErrors.UnexpectedReservedType, {\n at: startLoc,\n reservedType: word\n });\n }\n\n flowParseRestrictedIdentifier(liberal, declaration) {\n this.checkReservedType(this.state.value, this.state.startLoc, declaration);\n return this.parseIdentifier(liberal);\n }\n\n flowParseTypeAlias(node) {\n node.id = this.flowParseRestrictedIdentifier(false, true);\n this.scope.declareName(node.id.name, BIND_LEXICAL, node.id.loc.start);\n\n if (this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n\n node.right = this.flowParseTypeInitialiser(29);\n this.semicolon();\n return this.finishNode(node, \"TypeAlias\");\n }\n\n flowParseOpaqueType(node, declare) {\n this.expectContextual(126);\n node.id = this.flowParseRestrictedIdentifier(true, true);\n this.scope.declareName(node.id.name, BIND_LEXICAL, node.id.loc.start);\n\n if (this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n\n node.supertype = null;\n\n if (this.match(14)) {\n node.supertype = this.flowParseTypeInitialiser(14);\n }\n\n node.impltype = null;\n\n if (!declare) {\n node.impltype = this.flowParseTypeInitialiser(29);\n }\n\n this.semicolon();\n return this.finishNode(node, \"OpaqueType\");\n }\n\n flowParseTypeParameter(requireDefault = false) {\n const nodeStartLoc = this.state.startLoc;\n const node = this.startNode();\n const variance = this.flowParseVariance();\n const ident = this.flowParseTypeAnnotatableIdentifier();\n node.name = ident.name;\n node.variance = variance;\n node.bound = ident.typeAnnotation;\n\n if (this.match(29)) {\n this.eat(29);\n node.default = this.flowParseType();\n } else {\n if (requireDefault) {\n this.raise(FlowErrors.MissingTypeParamDefault, {\n at: nodeStartLoc\n });\n }\n }\n\n return this.finishNode(node, \"TypeParameter\");\n }\n\n flowParseTypeParameterDeclaration() {\n const oldInType = this.state.inType;\n const node = this.startNode();\n node.params = [];\n this.state.inType = true;\n\n if (this.match(47) || this.match(138)) {\n this.next();\n } else {\n this.unexpected();\n }\n\n let defaultRequired = false;\n\n do {\n const typeParameter = this.flowParseTypeParameter(defaultRequired);\n node.params.push(typeParameter);\n\n if (typeParameter.default) {\n defaultRequired = true;\n }\n\n if (!this.match(48)) {\n this.expect(12);\n }\n } while (!this.match(48));\n\n this.expect(48);\n this.state.inType = oldInType;\n return this.finishNode(node, \"TypeParameterDeclaration\");\n }\n\n flowParseTypeParameterInstantiation() {\n const node = this.startNode();\n const oldInType = this.state.inType;\n node.params = [];\n this.state.inType = true;\n this.expect(47);\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = false;\n\n while (!this.match(48)) {\n node.params.push(this.flowParseType());\n\n if (!this.match(48)) {\n this.expect(12);\n }\n }\n\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n this.expect(48);\n this.state.inType = oldInType;\n return this.finishNode(node, \"TypeParameterInstantiation\");\n }\n\n flowParseTypeParameterInstantiationCallOrNew() {\n const node = this.startNode();\n const oldInType = this.state.inType;\n node.params = [];\n this.state.inType = true;\n this.expect(47);\n\n while (!this.match(48)) {\n node.params.push(this.flowParseTypeOrImplicitInstantiation());\n\n if (!this.match(48)) {\n this.expect(12);\n }\n }\n\n this.expect(48);\n this.state.inType = oldInType;\n return this.finishNode(node, \"TypeParameterInstantiation\");\n }\n\n flowParseInterfaceType() {\n const node = this.startNode();\n this.expectContextual(125);\n node.extends = [];\n\n if (this.eat(81)) {\n do {\n node.extends.push(this.flowParseInterfaceExtends());\n } while (this.eat(12));\n }\n\n node.body = this.flowParseObjectType({\n allowStatic: false,\n allowExact: false,\n allowSpread: false,\n allowProto: false,\n allowInexact: false\n });\n return this.finishNode(node, \"InterfaceTypeAnnotation\");\n }\n\n flowParseObjectPropertyKey() {\n return this.match(130) || this.match(129) ? this.parseExprAtom() : this.parseIdentifier(true);\n }\n\n flowParseObjectTypeIndexer(node, isStatic, variance) {\n node.static = isStatic;\n\n if (this.lookahead().type === 14) {\n node.id = this.flowParseObjectPropertyKey();\n node.key = this.flowParseTypeInitialiser();\n } else {\n node.id = null;\n node.key = this.flowParseType();\n }\n\n this.expect(3);\n node.value = this.flowParseTypeInitialiser();\n node.variance = variance;\n return this.finishNode(node, \"ObjectTypeIndexer\");\n }\n\n flowParseObjectTypeInternalSlot(node, isStatic) {\n node.static = isStatic;\n node.id = this.flowParseObjectPropertyKey();\n this.expect(3);\n this.expect(3);\n\n if (this.match(47) || this.match(10)) {\n node.method = true;\n node.optional = false;\n node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.start, node.loc.start));\n } else {\n node.method = false;\n\n if (this.eat(17)) {\n node.optional = true;\n }\n\n node.value = this.flowParseTypeInitialiser();\n }\n\n return this.finishNode(node, \"ObjectTypeInternalSlot\");\n }\n\n flowParseObjectTypeMethodish(node) {\n node.params = [];\n node.rest = null;\n node.typeParameters = null;\n node.this = null;\n\n if (this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n\n this.expect(10);\n\n if (this.match(78)) {\n node.this = this.flowParseFunctionTypeParam(true);\n node.this.name = null;\n\n if (!this.match(11)) {\n this.expect(12);\n }\n }\n\n while (!this.match(11) && !this.match(21)) {\n node.params.push(this.flowParseFunctionTypeParam(false));\n\n if (!this.match(11)) {\n this.expect(12);\n }\n }\n\n if (this.eat(21)) {\n node.rest = this.flowParseFunctionTypeParam(false);\n }\n\n this.expect(11);\n node.returnType = this.flowParseTypeInitialiser();\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n\n flowParseObjectTypeCallProperty(node, isStatic) {\n const valueNode = this.startNode();\n node.static = isStatic;\n node.value = this.flowParseObjectTypeMethodish(valueNode);\n return this.finishNode(node, \"ObjectTypeCallProperty\");\n }\n\n flowParseObjectType({\n allowStatic,\n allowExact,\n allowSpread,\n allowProto,\n allowInexact\n }) {\n const oldInType = this.state.inType;\n this.state.inType = true;\n const nodeStart = this.startNode();\n nodeStart.callProperties = [];\n nodeStart.properties = [];\n nodeStart.indexers = [];\n nodeStart.internalSlots = [];\n let endDelim;\n let exact;\n let inexact = false;\n\n if (allowExact && this.match(6)) {\n this.expect(6);\n endDelim = 9;\n exact = true;\n } else {\n this.expect(5);\n endDelim = 8;\n exact = false;\n }\n\n nodeStart.exact = exact;\n\n while (!this.match(endDelim)) {\n let isStatic = false;\n let protoStartLoc = null;\n let inexactStartLoc = null;\n const node = this.startNode();\n\n if (allowProto && this.isContextual(115)) {\n const lookahead = this.lookahead();\n\n if (lookahead.type !== 14 && lookahead.type !== 17) {\n this.next();\n protoStartLoc = this.state.startLoc;\n allowStatic = false;\n }\n }\n\n if (allowStatic && this.isContextual(104)) {\n const lookahead = this.lookahead();\n\n if (lookahead.type !== 14 && lookahead.type !== 17) {\n this.next();\n isStatic = true;\n }\n }\n\n const variance = this.flowParseVariance();\n\n if (this.eat(0)) {\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n\n if (this.eat(0)) {\n if (variance) {\n this.unexpected(variance.loc.start);\n }\n\n nodeStart.internalSlots.push(this.flowParseObjectTypeInternalSlot(node, isStatic));\n } else {\n nodeStart.indexers.push(this.flowParseObjectTypeIndexer(node, isStatic, variance));\n }\n } else if (this.match(10) || this.match(47)) {\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n\n if (variance) {\n this.unexpected(variance.loc.start);\n }\n\n nodeStart.callProperties.push(this.flowParseObjectTypeCallProperty(node, isStatic));\n } else {\n let kind = \"init\";\n\n if (this.isContextual(98) || this.isContextual(103)) {\n const lookahead = this.lookahead();\n\n if (tokenIsLiteralPropertyName(lookahead.type)) {\n kind = this.state.value;\n this.next();\n }\n }\n\n const propOrInexact = this.flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact != null ? allowInexact : !exact);\n\n if (propOrInexact === null) {\n inexact = true;\n inexactStartLoc = this.state.lastTokStartLoc;\n } else {\n nodeStart.properties.push(propOrInexact);\n }\n }\n\n this.flowObjectTypeSemicolon();\n\n if (inexactStartLoc && !this.match(8) && !this.match(9)) {\n this.raise(FlowErrors.UnexpectedExplicitInexactInObject, {\n at: inexactStartLoc\n });\n }\n }\n\n this.expect(endDelim);\n\n if (allowSpread) {\n nodeStart.inexact = inexact;\n }\n\n const out = this.finishNode(nodeStart, \"ObjectTypeAnnotation\");\n this.state.inType = oldInType;\n return out;\n }\n\n flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact) {\n if (this.eat(21)) {\n const isInexactToken = this.match(12) || this.match(13) || this.match(8) || this.match(9);\n\n if (isInexactToken) {\n if (!allowSpread) {\n this.raise(FlowErrors.InexactInsideNonObject, {\n at: this.state.lastTokStartLoc\n });\n } else if (!allowInexact) {\n this.raise(FlowErrors.InexactInsideExact, {\n at: this.state.lastTokStartLoc\n });\n }\n\n if (variance) {\n this.raise(FlowErrors.InexactVariance, {\n at: variance\n });\n }\n\n return null;\n }\n\n if (!allowSpread) {\n this.raise(FlowErrors.UnexpectedSpreadType, {\n at: this.state.lastTokStartLoc\n });\n }\n\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n\n if (variance) {\n this.raise(FlowErrors.SpreadVariance, {\n at: variance\n });\n }\n\n node.argument = this.flowParseType();\n return this.finishNode(node, \"ObjectTypeSpreadProperty\");\n } else {\n node.key = this.flowParseObjectPropertyKey();\n node.static = isStatic;\n node.proto = protoStartLoc != null;\n node.kind = kind;\n let optional = false;\n\n if (this.match(47) || this.match(10)) {\n node.method = true;\n\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n\n if (variance) {\n this.unexpected(variance.loc.start);\n }\n\n node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.start, node.loc.start));\n\n if (kind === \"get\" || kind === \"set\") {\n this.flowCheckGetterSetterParams(node);\n }\n\n if (!allowSpread && node.key.name === \"constructor\" && node.value.this) {\n this.raise(FlowErrors.ThisParamBannedInConstructor, {\n at: node.value.this\n });\n }\n } else {\n if (kind !== \"init\") this.unexpected();\n node.method = false;\n\n if (this.eat(17)) {\n optional = true;\n }\n\n node.value = this.flowParseTypeInitialiser();\n node.variance = variance;\n }\n\n node.optional = optional;\n return this.finishNode(node, \"ObjectTypeProperty\");\n }\n }\n\n flowCheckGetterSetterParams(property) {\n const paramCount = property.kind === \"get\" ? 0 : 1;\n const length = property.value.params.length + (property.value.rest ? 1 : 0);\n\n if (property.value.this) {\n this.raise(property.kind === \"get\" ? FlowErrors.GetterMayNotHaveThisParam : FlowErrors.SetterMayNotHaveThisParam, {\n at: property.value.this\n });\n }\n\n if (length !== paramCount) {\n this.raise(property.kind === \"get\" ? Errors.BadGetterArity : Errors.BadSetterArity, {\n at: property\n });\n }\n\n if (property.kind === \"set\" && property.value.rest) {\n this.raise(Errors.BadSetterRestParameter, {\n at: property\n });\n }\n }\n\n flowObjectTypeSemicolon() {\n if (!this.eat(13) && !this.eat(12) && !this.match(8) && !this.match(9)) {\n this.unexpected();\n }\n }\n\n flowParseQualifiedTypeIdentifier(startPos, startLoc, id) {\n startPos = startPos || this.state.start;\n startLoc = startLoc || this.state.startLoc;\n let node = id || this.flowParseRestrictedIdentifier(true);\n\n while (this.eat(16)) {\n const node2 = this.startNodeAt(startPos, startLoc);\n node2.qualification = node;\n node2.id = this.flowParseRestrictedIdentifier(true);\n node = this.finishNode(node2, \"QualifiedTypeIdentifier\");\n }\n\n return node;\n }\n\n flowParseGenericType(startPos, startLoc, id) {\n const node = this.startNodeAt(startPos, startLoc);\n node.typeParameters = null;\n node.id = this.flowParseQualifiedTypeIdentifier(startPos, startLoc, id);\n\n if (this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n }\n\n return this.finishNode(node, \"GenericTypeAnnotation\");\n }\n\n flowParseTypeofType() {\n const node = this.startNode();\n this.expect(87);\n node.argument = this.flowParsePrimaryType();\n return this.finishNode(node, \"TypeofTypeAnnotation\");\n }\n\n flowParseTupleType() {\n const node = this.startNode();\n node.types = [];\n this.expect(0);\n\n while (this.state.pos < this.length && !this.match(3)) {\n node.types.push(this.flowParseType());\n if (this.match(3)) break;\n this.expect(12);\n }\n\n this.expect(3);\n return this.finishNode(node, \"TupleTypeAnnotation\");\n }\n\n flowParseFunctionTypeParam(first) {\n let name = null;\n let optional = false;\n let typeAnnotation = null;\n const node = this.startNode();\n const lh = this.lookahead();\n const isThis = this.state.type === 78;\n\n if (lh.type === 14 || lh.type === 17) {\n if (isThis && !first) {\n this.raise(FlowErrors.ThisParamMustBeFirst, {\n at: node\n });\n }\n\n name = this.parseIdentifier(isThis);\n\n if (this.eat(17)) {\n optional = true;\n\n if (isThis) {\n this.raise(FlowErrors.ThisParamMayNotBeOptional, {\n at: node\n });\n }\n }\n\n typeAnnotation = this.flowParseTypeInitialiser();\n } else {\n typeAnnotation = this.flowParseType();\n }\n\n node.name = name;\n node.optional = optional;\n node.typeAnnotation = typeAnnotation;\n return this.finishNode(node, \"FunctionTypeParam\");\n }\n\n reinterpretTypeAsFunctionTypeParam(type) {\n const node = this.startNodeAt(type.start, type.loc.start);\n node.name = null;\n node.optional = false;\n node.typeAnnotation = type;\n return this.finishNode(node, \"FunctionTypeParam\");\n }\n\n flowParseFunctionTypeParams(params = []) {\n let rest = null;\n let _this = null;\n\n if (this.match(78)) {\n _this = this.flowParseFunctionTypeParam(true);\n _this.name = null;\n\n if (!this.match(11)) {\n this.expect(12);\n }\n }\n\n while (!this.match(11) && !this.match(21)) {\n params.push(this.flowParseFunctionTypeParam(false));\n\n if (!this.match(11)) {\n this.expect(12);\n }\n }\n\n if (this.eat(21)) {\n rest = this.flowParseFunctionTypeParam(false);\n }\n\n return {\n params,\n rest,\n _this\n };\n }\n\n flowIdentToTypeAnnotation(startPos, startLoc, node, id) {\n switch (id.name) {\n case \"any\":\n return this.finishNode(node, \"AnyTypeAnnotation\");\n\n case \"bool\":\n case \"boolean\":\n return this.finishNode(node, \"BooleanTypeAnnotation\");\n\n case \"mixed\":\n return this.finishNode(node, \"MixedTypeAnnotation\");\n\n case \"empty\":\n return this.finishNode(node, \"EmptyTypeAnnotation\");\n\n case \"number\":\n return this.finishNode(node, \"NumberTypeAnnotation\");\n\n case \"string\":\n return this.finishNode(node, \"StringTypeAnnotation\");\n\n case \"symbol\":\n return this.finishNode(node, \"SymbolTypeAnnotation\");\n\n default:\n this.checkNotUnderscore(id.name);\n return this.flowParseGenericType(startPos, startLoc, id);\n }\n }\n\n flowParsePrimaryType() {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const node = this.startNode();\n let tmp;\n let type;\n let isGroupedType = false;\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n\n switch (this.state.type) {\n case 5:\n return this.flowParseObjectType({\n allowStatic: false,\n allowExact: false,\n allowSpread: true,\n allowProto: false,\n allowInexact: true\n });\n\n case 6:\n return this.flowParseObjectType({\n allowStatic: false,\n allowExact: true,\n allowSpread: true,\n allowProto: false,\n allowInexact: false\n });\n\n case 0:\n this.state.noAnonFunctionType = false;\n type = this.flowParseTupleType();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n return type;\n\n case 47:\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n this.expect(10);\n tmp = this.flowParseFunctionTypeParams();\n node.params = tmp.params;\n node.rest = tmp.rest;\n node.this = tmp._this;\n this.expect(11);\n this.expect(19);\n node.returnType = this.flowParseType();\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n\n case 10:\n this.next();\n\n if (!this.match(11) && !this.match(21)) {\n if (tokenIsIdentifier(this.state.type) || this.match(78)) {\n const token = this.lookahead().type;\n isGroupedType = token !== 17 && token !== 14;\n } else {\n isGroupedType = true;\n }\n }\n\n if (isGroupedType) {\n this.state.noAnonFunctionType = false;\n type = this.flowParseType();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n\n if (this.state.noAnonFunctionType || !(this.match(12) || this.match(11) && this.lookahead().type === 19)) {\n this.expect(11);\n return type;\n } else {\n this.eat(12);\n }\n }\n\n if (type) {\n tmp = this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(type)]);\n } else {\n tmp = this.flowParseFunctionTypeParams();\n }\n\n node.params = tmp.params;\n node.rest = tmp.rest;\n node.this = tmp._this;\n this.expect(11);\n this.expect(19);\n node.returnType = this.flowParseType();\n node.typeParameters = null;\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n\n case 129:\n return this.parseLiteral(this.state.value, \"StringLiteralTypeAnnotation\");\n\n case 85:\n case 86:\n node.value = this.match(85);\n this.next();\n return this.finishNode(node, \"BooleanLiteralTypeAnnotation\");\n\n case 53:\n if (this.state.value === \"-\") {\n this.next();\n\n if (this.match(130)) {\n return this.parseLiteralAtNode(-this.state.value, \"NumberLiteralTypeAnnotation\", node);\n }\n\n if (this.match(131)) {\n return this.parseLiteralAtNode(-this.state.value, \"BigIntLiteralTypeAnnotation\", node);\n }\n\n throw this.raise(FlowErrors.UnexpectedSubtractionOperand, {\n at: this.state.startLoc\n });\n }\n\n throw this.unexpected();\n\n case 130:\n return this.parseLiteral(this.state.value, \"NumberLiteralTypeAnnotation\");\n\n case 131:\n return this.parseLiteral(this.state.value, \"BigIntLiteralTypeAnnotation\");\n\n case 88:\n this.next();\n return this.finishNode(node, \"VoidTypeAnnotation\");\n\n case 84:\n this.next();\n return this.finishNode(node, \"NullLiteralTypeAnnotation\");\n\n case 78:\n this.next();\n return this.finishNode(node, \"ThisTypeAnnotation\");\n\n case 55:\n this.next();\n return this.finishNode(node, \"ExistsTypeAnnotation\");\n\n case 87:\n return this.flowParseTypeofType();\n\n default:\n if (tokenIsKeyword(this.state.type)) {\n const label = tokenLabelName(this.state.type);\n this.next();\n return super.createIdentifier(node, label);\n } else if (tokenIsIdentifier(this.state.type)) {\n if (this.isContextual(125)) {\n return this.flowParseInterfaceType();\n }\n\n return this.flowIdentToTypeAnnotation(startPos, startLoc, node, this.parseIdentifier());\n }\n\n }\n\n throw this.unexpected();\n }\n\n flowParsePostfixType() {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n let type = this.flowParsePrimaryType();\n let seenOptionalIndexedAccess = false;\n\n while ((this.match(0) || this.match(18)) && !this.canInsertSemicolon()) {\n const node = this.startNodeAt(startPos, startLoc);\n const optional = this.eat(18);\n seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional;\n this.expect(0);\n\n if (!optional && this.match(3)) {\n node.elementType = type;\n this.next();\n type = this.finishNode(node, \"ArrayTypeAnnotation\");\n } else {\n node.objectType = type;\n node.indexType = this.flowParseType();\n this.expect(3);\n\n if (seenOptionalIndexedAccess) {\n node.optional = optional;\n type = this.finishNode(node, \"OptionalIndexedAccessType\");\n } else {\n type = this.finishNode(node, \"IndexedAccessType\");\n }\n }\n }\n\n return type;\n }\n\n flowParsePrefixType() {\n const node = this.startNode();\n\n if (this.eat(17)) {\n node.typeAnnotation = this.flowParsePrefixType();\n return this.finishNode(node, \"NullableTypeAnnotation\");\n } else {\n return this.flowParsePostfixType();\n }\n }\n\n flowParseAnonFunctionWithoutParens() {\n const param = this.flowParsePrefixType();\n\n if (!this.state.noAnonFunctionType && this.eat(19)) {\n const node = this.startNodeAt(param.start, param.loc.start);\n node.params = [this.reinterpretTypeAsFunctionTypeParam(param)];\n node.rest = null;\n node.this = null;\n node.returnType = this.flowParseType();\n node.typeParameters = null;\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n\n return param;\n }\n\n flowParseIntersectionType() {\n const node = this.startNode();\n this.eat(45);\n const type = this.flowParseAnonFunctionWithoutParens();\n node.types = [type];\n\n while (this.eat(45)) {\n node.types.push(this.flowParseAnonFunctionWithoutParens());\n }\n\n return node.types.length === 1 ? type : this.finishNode(node, \"IntersectionTypeAnnotation\");\n }\n\n flowParseUnionType() {\n const node = this.startNode();\n this.eat(43);\n const type = this.flowParseIntersectionType();\n node.types = [type];\n\n while (this.eat(43)) {\n node.types.push(this.flowParseIntersectionType());\n }\n\n return node.types.length === 1 ? type : this.finishNode(node, \"UnionTypeAnnotation\");\n }\n\n flowParseType() {\n const oldInType = this.state.inType;\n this.state.inType = true;\n const type = this.flowParseUnionType();\n this.state.inType = oldInType;\n return type;\n }\n\n flowParseTypeOrImplicitInstantiation() {\n if (this.state.type === 128 && this.state.value === \"_\") {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const node = this.parseIdentifier();\n return this.flowParseGenericType(startPos, startLoc, node);\n } else {\n return this.flowParseType();\n }\n }\n\n flowParseTypeAnnotation() {\n const node = this.startNode();\n node.typeAnnotation = this.flowParseTypeInitialiser();\n return this.finishNode(node, \"TypeAnnotation\");\n }\n\n flowParseTypeAnnotatableIdentifier(allowPrimitiveOverride) {\n const ident = allowPrimitiveOverride ? this.parseIdentifier() : this.flowParseRestrictedIdentifier();\n\n if (this.match(14)) {\n ident.typeAnnotation = this.flowParseTypeAnnotation();\n this.resetEndLocation(ident);\n }\n\n return ident;\n }\n\n typeCastToParameter(node) {\n node.expression.typeAnnotation = node.typeAnnotation;\n this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);\n return node.expression;\n }\n\n flowParseVariance() {\n let variance = null;\n\n if (this.match(53)) {\n variance = this.startNode();\n\n if (this.state.value === \"+\") {\n variance.kind = \"plus\";\n } else {\n variance.kind = \"minus\";\n }\n\n this.next();\n this.finishNode(variance, \"Variance\");\n }\n\n return variance;\n }\n\n parseFunctionBody(node, allowExpressionBody, isMethod = false) {\n if (allowExpressionBody) {\n return this.forwardNoArrowParamsConversionAt(node, () => super.parseFunctionBody(node, true, isMethod));\n }\n\n return super.parseFunctionBody(node, false, isMethod);\n }\n\n parseFunctionBodyAndFinish(node, type, isMethod = false) {\n if (this.match(14)) {\n const typeNode = this.startNode();\n [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser();\n node.returnType = typeNode.typeAnnotation ? this.finishNode(typeNode, \"TypeAnnotation\") : null;\n }\n\n super.parseFunctionBodyAndFinish(node, type, isMethod);\n }\n\n parseStatement(context, topLevel) {\n if (this.state.strict && this.isContextual(125)) {\n const lookahead = this.lookahead();\n\n if (tokenIsKeywordOrIdentifier(lookahead.type)) {\n const node = this.startNode();\n this.next();\n return this.flowParseInterface(node);\n }\n } else if (this.shouldParseEnums() && this.isContextual(122)) {\n const node = this.startNode();\n this.next();\n return this.flowParseEnumDeclaration(node);\n }\n\n const stmt = super.parseStatement(context, topLevel);\n\n if (this.flowPragma === undefined && !this.isValidDirective(stmt)) {\n this.flowPragma = null;\n }\n\n return stmt;\n }\n\n parseExpressionStatement(node, expr) {\n if (expr.type === \"Identifier\") {\n if (expr.name === \"declare\") {\n if (this.match(80) || tokenIsIdentifier(this.state.type) || this.match(68) || this.match(74) || this.match(82)) {\n return this.flowParseDeclare(node);\n }\n } else if (tokenIsIdentifier(this.state.type)) {\n if (expr.name === \"interface\") {\n return this.flowParseInterface(node);\n } else if (expr.name === \"type\") {\n return this.flowParseTypeAlias(node);\n } else if (expr.name === \"opaque\") {\n return this.flowParseOpaqueType(node, false);\n }\n }\n }\n\n return super.parseExpressionStatement(node, expr);\n }\n\n shouldParseExportDeclaration() {\n const {\n type\n } = this.state;\n\n if (tokenIsFlowInterfaceOrTypeOrOpaque(type) || this.shouldParseEnums() && type === 122) {\n return !this.state.containsEsc;\n }\n\n return super.shouldParseExportDeclaration();\n }\n\n isExportDefaultSpecifier() {\n const {\n type\n } = this.state;\n\n if (tokenIsFlowInterfaceOrTypeOrOpaque(type) || this.shouldParseEnums() && type === 122) {\n return this.state.containsEsc;\n }\n\n return super.isExportDefaultSpecifier();\n }\n\n parseExportDefaultExpression() {\n if (this.shouldParseEnums() && this.isContextual(122)) {\n const node = this.startNode();\n this.next();\n return this.flowParseEnumDeclaration(node);\n }\n\n return super.parseExportDefaultExpression();\n }\n\n parseConditional(expr, startPos, startLoc, refExpressionErrors) {\n if (!this.match(17)) return expr;\n\n if (this.state.maybeInArrowParameters) {\n const nextCh = this.lookaheadCharCode();\n\n if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) {\n this.setOptionalParametersError(refExpressionErrors);\n return expr;\n }\n }\n\n this.expect(17);\n const state = this.state.clone();\n const originalNoArrowAt = this.state.noArrowAt;\n const node = this.startNodeAt(startPos, startLoc);\n let {\n consequent,\n failed\n } = this.tryParseConditionalConsequent();\n let [valid, invalid] = this.getArrowLikeExpressions(consequent);\n\n if (failed || invalid.length > 0) {\n const noArrowAt = [...originalNoArrowAt];\n\n if (invalid.length > 0) {\n this.state = state;\n this.state.noArrowAt = noArrowAt;\n\n for (let i = 0; i < invalid.length; i++) {\n noArrowAt.push(invalid[i].start);\n }\n\n ({\n consequent,\n failed\n } = this.tryParseConditionalConsequent());\n [valid, invalid] = this.getArrowLikeExpressions(consequent);\n }\n\n if (failed && valid.length > 1) {\n this.raise(FlowErrors.AmbiguousConditionalArrow, {\n at: state.startLoc\n });\n }\n\n if (failed && valid.length === 1) {\n this.state = state;\n noArrowAt.push(valid[0].start);\n this.state.noArrowAt = noArrowAt;\n ({\n consequent,\n failed\n } = this.tryParseConditionalConsequent());\n }\n }\n\n this.getArrowLikeExpressions(consequent, true);\n this.state.noArrowAt = originalNoArrowAt;\n this.expect(14);\n node.test = expr;\n node.consequent = consequent;\n node.alternate = this.forwardNoArrowParamsConversionAt(node, () => this.parseMaybeAssign(undefined, undefined));\n return this.finishNode(node, \"ConditionalExpression\");\n }\n\n tryParseConditionalConsequent() {\n this.state.noArrowParamsConversionAt.push(this.state.start);\n const consequent = this.parseMaybeAssignAllowIn();\n const failed = !this.match(14);\n this.state.noArrowParamsConversionAt.pop();\n return {\n consequent,\n failed\n };\n }\n\n getArrowLikeExpressions(node, disallowInvalid) {\n const stack = [node];\n const arrows = [];\n\n while (stack.length !== 0) {\n const node = stack.pop();\n\n if (node.type === \"ArrowFunctionExpression\") {\n if (node.typeParameters || !node.returnType) {\n this.finishArrowValidation(node);\n } else {\n arrows.push(node);\n }\n\n stack.push(node.body);\n } else if (node.type === \"ConditionalExpression\") {\n stack.push(node.consequent);\n stack.push(node.alternate);\n }\n }\n\n if (disallowInvalid) {\n arrows.forEach(node => this.finishArrowValidation(node));\n return [arrows, []];\n }\n\n return partition(arrows, node => node.params.every(param => this.isAssignable(param, true)));\n }\n\n finishArrowValidation(node) {\n var _node$extra;\n\n this.toAssignableList(node.params, (_node$extra = node.extra) == null ? void 0 : _node$extra.trailingCommaLoc, false);\n this.scope.enter(SCOPE_FUNCTION | SCOPE_ARROW);\n super.checkParams(node, false, true);\n this.scope.exit();\n }\n\n forwardNoArrowParamsConversionAt(node, parse) {\n let result;\n\n if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) {\n this.state.noArrowParamsConversionAt.push(this.state.start);\n result = parse();\n this.state.noArrowParamsConversionAt.pop();\n } else {\n result = parse();\n }\n\n return result;\n }\n\n parseParenItem(node, startPos, startLoc) {\n node = super.parseParenItem(node, startPos, startLoc);\n\n if (this.eat(17)) {\n node.optional = true;\n this.resetEndLocation(node);\n }\n\n if (this.match(14)) {\n const typeCastNode = this.startNodeAt(startPos, startLoc);\n typeCastNode.expression = node;\n typeCastNode.typeAnnotation = this.flowParseTypeAnnotation();\n return this.finishNode(typeCastNode, \"TypeCastExpression\");\n }\n\n return node;\n }\n\n assertModuleNodeAllowed(node) {\n if (node.type === \"ImportDeclaration\" && (node.importKind === \"type\" || node.importKind === \"typeof\") || node.type === \"ExportNamedDeclaration\" && node.exportKind === \"type\" || node.type === \"ExportAllDeclaration\" && node.exportKind === \"type\") {\n return;\n }\n\n super.assertModuleNodeAllowed(node);\n }\n\n parseExport(node) {\n const decl = super.parseExport(node);\n\n if (decl.type === \"ExportNamedDeclaration\" || decl.type === \"ExportAllDeclaration\") {\n decl.exportKind = decl.exportKind || \"value\";\n }\n\n return decl;\n }\n\n parseExportDeclaration(node) {\n if (this.isContextual(126)) {\n node.exportKind = \"type\";\n const declarationNode = this.startNode();\n this.next();\n\n if (this.match(5)) {\n node.specifiers = this.parseExportSpecifiers(true);\n this.parseExportFrom(node);\n return null;\n } else {\n return this.flowParseTypeAlias(declarationNode);\n }\n } else if (this.isContextual(127)) {\n node.exportKind = \"type\";\n const declarationNode = this.startNode();\n this.next();\n return this.flowParseOpaqueType(declarationNode, false);\n } else if (this.isContextual(125)) {\n node.exportKind = \"type\";\n const declarationNode = this.startNode();\n this.next();\n return this.flowParseInterface(declarationNode);\n } else if (this.shouldParseEnums() && this.isContextual(122)) {\n node.exportKind = \"value\";\n const declarationNode = this.startNode();\n this.next();\n return this.flowParseEnumDeclaration(declarationNode);\n } else {\n return super.parseExportDeclaration(node);\n }\n }\n\n eatExportStar(node) {\n if (super.eatExportStar(...arguments)) return true;\n\n if (this.isContextual(126) && this.lookahead().type === 55) {\n node.exportKind = \"type\";\n this.next();\n this.next();\n return true;\n }\n\n return false;\n }\n\n maybeParseExportNamespaceSpecifier(node) {\n const {\n startLoc\n } = this.state;\n const hasNamespace = super.maybeParseExportNamespaceSpecifier(node);\n\n if (hasNamespace && node.exportKind === \"type\") {\n this.unexpected(startLoc);\n }\n\n return hasNamespace;\n }\n\n parseClassId(node, isStatement, optionalId) {\n super.parseClassId(node, isStatement, optionalId);\n\n if (this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n }\n\n parseClassMember(classBody, member, state) {\n const {\n startLoc\n } = this.state;\n\n if (this.isContextual(121)) {\n if (this.parseClassMemberFromModifier(classBody, member)) {\n return;\n }\n\n member.declare = true;\n }\n\n super.parseClassMember(classBody, member, state);\n\n if (member.declare) {\n if (member.type !== \"ClassProperty\" && member.type !== \"ClassPrivateProperty\" && member.type !== \"PropertyDefinition\") {\n this.raise(FlowErrors.DeclareClassElement, {\n at: startLoc\n });\n } else if (member.value) {\n this.raise(FlowErrors.DeclareClassFieldInitializer, {\n at: member.value\n });\n }\n }\n }\n\n isIterator(word) {\n return word === \"iterator\" || word === \"asyncIterator\";\n }\n\n readIterator() {\n const word = super.readWord1();\n const fullWord = \"@@\" + word;\n\n if (!this.isIterator(word) || !this.state.inType) {\n this.raise(Errors.InvalidIdentifier, {\n at: this.state.curPosition(),\n identifierName: fullWord\n });\n }\n\n this.finishToken(128, fullWord);\n }\n\n getTokenFromCode(code) {\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (code === 123 && next === 124) {\n return this.finishOp(6, 2);\n } else if (this.state.inType && (code === 62 || code === 60)) {\n return this.finishOp(code === 62 ? 48 : 47, 1);\n } else if (this.state.inType && code === 63) {\n if (next === 46) {\n return this.finishOp(18, 2);\n }\n\n return this.finishOp(17, 1);\n } else if (isIteratorStart(code, next, this.input.charCodeAt(this.state.pos + 2))) {\n this.state.pos += 2;\n return this.readIterator();\n } else {\n return super.getTokenFromCode(code);\n }\n }\n\n isAssignable(node, isBinding) {\n if (node.type === \"TypeCastExpression\") {\n return this.isAssignable(node.expression, isBinding);\n } else {\n return super.isAssignable(node, isBinding);\n }\n }\n\n toAssignable(node, isLHS = false) {\n if (!isLHS && node.type === \"AssignmentExpression\" && node.left.type === \"TypeCastExpression\") {\n node.left = this.typeCastToParameter(node.left);\n }\n\n super.toAssignable(...arguments);\n }\n\n toAssignableList(exprList, trailingCommaLoc, isLHS) {\n for (let i = 0; i < exprList.length; i++) {\n const expr = exprList[i];\n\n if ((expr == null ? void 0 : expr.type) === \"TypeCastExpression\") {\n exprList[i] = this.typeCastToParameter(expr);\n }\n }\n\n super.toAssignableList(exprList, trailingCommaLoc, isLHS);\n }\n\n toReferencedList(exprList, isParenthesizedExpr) {\n for (let i = 0; i < exprList.length; i++) {\n var _expr$extra;\n\n const expr = exprList[i];\n\n if (expr && expr.type === \"TypeCastExpression\" && !((_expr$extra = expr.extra) != null && _expr$extra.parenthesized) && (exprList.length > 1 || !isParenthesizedExpr)) {\n this.raise(FlowErrors.TypeCastInPattern, {\n at: expr.typeAnnotation\n });\n }\n }\n\n return exprList;\n }\n\n parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) {\n const node = super.parseArrayLike(close, canBePattern, isTuple, refExpressionErrors);\n\n if (canBePattern && !this.state.maybeInArrowParameters) {\n this.toReferencedList(node.elements);\n }\n\n return node;\n }\n\n isValidLVal(type, ...rest) {\n return type === \"TypeCastExpression\" || super.isValidLVal(type, ...rest);\n }\n\n parseClassProperty(node) {\n if (this.match(14)) {\n node.typeAnnotation = this.flowParseTypeAnnotation();\n }\n\n return super.parseClassProperty(node);\n }\n\n parseClassPrivateProperty(node) {\n if (this.match(14)) {\n node.typeAnnotation = this.flowParseTypeAnnotation();\n }\n\n return super.parseClassPrivateProperty(node);\n }\n\n isClassMethod() {\n return this.match(47) || super.isClassMethod();\n }\n\n isClassProperty() {\n return this.match(14) || super.isClassProperty();\n }\n\n isNonstaticConstructor(method) {\n return !this.match(14) && super.isNonstaticConstructor(method);\n }\n\n pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {\n if (method.variance) {\n this.unexpected(method.variance.loc.start);\n }\n\n delete method.variance;\n\n if (this.match(47)) {\n method.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n\n super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper);\n\n if (method.params && isConstructor) {\n const params = method.params;\n\n if (params.length > 0 && this.isThisParam(params[0])) {\n this.raise(FlowErrors.ThisParamBannedInConstructor, {\n at: method\n });\n }\n } else if (method.type === \"MethodDefinition\" && isConstructor && method.value.params) {\n const params = method.value.params;\n\n if (params.length > 0 && this.isThisParam(params[0])) {\n this.raise(FlowErrors.ThisParamBannedInConstructor, {\n at: method\n });\n }\n }\n }\n\n pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {\n if (method.variance) {\n this.unexpected(method.variance.loc.start);\n }\n\n delete method.variance;\n\n if (this.match(47)) {\n method.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n\n super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);\n }\n\n parseClassSuper(node) {\n super.parseClassSuper(node);\n\n if (node.superClass && this.match(47)) {\n node.superTypeParameters = this.flowParseTypeParameterInstantiation();\n }\n\n if (this.isContextual(110)) {\n this.next();\n const implemented = node.implements = [];\n\n do {\n const node = this.startNode();\n node.id = this.flowParseRestrictedIdentifier(true);\n\n if (this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n } else {\n node.typeParameters = null;\n }\n\n implemented.push(this.finishNode(node, \"ClassImplements\"));\n } while (this.eat(12));\n }\n }\n\n checkGetterSetterParams(method) {\n super.checkGetterSetterParams(method);\n const params = this.getObjectOrClassMethodParams(method);\n\n if (params.length > 0) {\n const param = params[0];\n\n if (this.isThisParam(param) && method.kind === \"get\") {\n this.raise(FlowErrors.GetterMayNotHaveThisParam, {\n at: param\n });\n } else if (this.isThisParam(param)) {\n this.raise(FlowErrors.SetterMayNotHaveThisParam, {\n at: param\n });\n }\n }\n }\n\n parsePropertyNamePrefixOperator(node) {\n node.variance = this.flowParseVariance();\n }\n\n parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {\n if (prop.variance) {\n this.unexpected(prop.variance.loc.start);\n }\n\n delete prop.variance;\n let typeParameters;\n\n if (this.match(47) && !isAccessor) {\n typeParameters = this.flowParseTypeParameterDeclaration();\n if (!this.match(10)) this.unexpected();\n }\n\n super.parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors);\n\n if (typeParameters) {\n (prop.value || prop).typeParameters = typeParameters;\n }\n }\n\n parseAssignableListItemTypes(param) {\n if (this.eat(17)) {\n if (param.type !== \"Identifier\") {\n this.raise(FlowErrors.PatternIsOptional, {\n at: param\n });\n }\n\n if (this.isThisParam(param)) {\n this.raise(FlowErrors.ThisParamMayNotBeOptional, {\n at: param\n });\n }\n\n param.optional = true;\n }\n\n if (this.match(14)) {\n param.typeAnnotation = this.flowParseTypeAnnotation();\n } else if (this.isThisParam(param)) {\n this.raise(FlowErrors.ThisParamAnnotationRequired, {\n at: param\n });\n }\n\n if (this.match(29) && this.isThisParam(param)) {\n this.raise(FlowErrors.ThisParamNoDefault, {\n at: param\n });\n }\n\n this.resetEndLocation(param);\n return param;\n }\n\n parseMaybeDefault(startPos, startLoc, left) {\n const node = super.parseMaybeDefault(startPos, startLoc, left);\n\n if (node.type === \"AssignmentPattern\" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) {\n this.raise(FlowErrors.TypeBeforeInitializer, {\n at: node.typeAnnotation\n });\n }\n\n return node;\n }\n\n shouldParseDefaultImport(node) {\n if (!hasTypeImportKind(node)) {\n return super.shouldParseDefaultImport(node);\n }\n\n return isMaybeDefaultImport(this.state.type);\n }\n\n parseImportSpecifierLocal(node, specifier, type) {\n specifier.local = hasTypeImportKind(node) ? this.flowParseRestrictedIdentifier(true, true) : this.parseIdentifier();\n node.specifiers.push(this.finishImportSpecifier(specifier, type));\n }\n\n maybeParseDefaultImportSpecifier(node) {\n node.importKind = \"value\";\n let kind = null;\n\n if (this.match(87)) {\n kind = \"typeof\";\n } else if (this.isContextual(126)) {\n kind = \"type\";\n }\n\n if (kind) {\n const lh = this.lookahead();\n const {\n type\n } = lh;\n\n if (kind === \"type\" && type === 55) {\n this.unexpected(null, lh.type);\n }\n\n if (isMaybeDefaultImport(type) || type === 5 || type === 55) {\n this.next();\n node.importKind = kind;\n }\n }\n\n return super.maybeParseDefaultImportSpecifier(node);\n }\n\n parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly) {\n const firstIdent = specifier.imported;\n let specifierTypeKind = null;\n\n if (firstIdent.type === \"Identifier\") {\n if (firstIdent.name === \"type\") {\n specifierTypeKind = \"type\";\n } else if (firstIdent.name === \"typeof\") {\n specifierTypeKind = \"typeof\";\n }\n }\n\n let isBinding = false;\n\n if (this.isContextual(93) && !this.isLookaheadContextual(\"as\")) {\n const as_ident = this.parseIdentifier(true);\n\n if (specifierTypeKind !== null && !tokenIsKeywordOrIdentifier(this.state.type)) {\n specifier.imported = as_ident;\n specifier.importKind = specifierTypeKind;\n specifier.local = cloneIdentifier(as_ident);\n } else {\n specifier.imported = firstIdent;\n specifier.importKind = null;\n specifier.local = this.parseIdentifier();\n }\n } else {\n if (specifierTypeKind !== null && tokenIsKeywordOrIdentifier(this.state.type)) {\n specifier.imported = this.parseIdentifier(true);\n specifier.importKind = specifierTypeKind;\n } else {\n if (importedIsString) {\n throw this.raise(Errors.ImportBindingIsString, {\n at: specifier,\n importName: firstIdent.value\n });\n }\n\n specifier.imported = firstIdent;\n specifier.importKind = null;\n }\n\n if (this.eatContextual(93)) {\n specifier.local = this.parseIdentifier();\n } else {\n isBinding = true;\n specifier.local = cloneIdentifier(specifier.imported);\n }\n }\n\n const specifierIsTypeImport = hasTypeImportKind(specifier);\n\n if (isInTypeOnlyImport && specifierIsTypeImport) {\n this.raise(FlowErrors.ImportTypeShorthandOnlyInPureImport, {\n at: specifier\n });\n }\n\n if (isInTypeOnlyImport || specifierIsTypeImport) {\n this.checkReservedType(specifier.local.name, specifier.local.loc.start, true);\n }\n\n if (isBinding && !isInTypeOnlyImport && !specifierIsTypeImport) {\n this.checkReservedWord(specifier.local.name, specifier.loc.start, true, true);\n }\n\n return this.finishImportSpecifier(specifier, \"ImportSpecifier\");\n }\n\n parseBindingAtom() {\n switch (this.state.type) {\n case 78:\n return this.parseIdentifier(true);\n\n default:\n return super.parseBindingAtom();\n }\n }\n\n parseFunctionParams(node, allowModifiers) {\n const kind = node.kind;\n\n if (kind !== \"get\" && kind !== \"set\" && this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n\n super.parseFunctionParams(node, allowModifiers);\n }\n\n parseVarId(decl, kind) {\n super.parseVarId(decl, kind);\n\n if (this.match(14)) {\n decl.id.typeAnnotation = this.flowParseTypeAnnotation();\n this.resetEndLocation(decl.id);\n }\n }\n\n parseAsyncArrowFromCallExpression(node, call) {\n if (this.match(14)) {\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = true;\n node.returnType = this.flowParseTypeAnnotation();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n }\n\n return super.parseAsyncArrowFromCallExpression(node, call);\n }\n\n shouldParseAsyncArrow() {\n return this.match(14) || super.shouldParseAsyncArrow();\n }\n\n parseMaybeAssign(refExpressionErrors, afterLeftParse) {\n var _jsx;\n\n let state = null;\n let jsx;\n\n if (this.hasPlugin(\"jsx\") && (this.match(138) || this.match(47))) {\n state = this.state.clone();\n jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state);\n if (!jsx.error) return jsx.node;\n const {\n context\n } = this.state;\n const currentContext = context[context.length - 1];\n\n if (currentContext === types.j_oTag || currentContext === types.j_expr) {\n context.pop();\n }\n }\n\n if ((_jsx = jsx) != null && _jsx.error || this.match(47)) {\n var _jsx2, _jsx3;\n\n state = state || this.state.clone();\n let typeParameters;\n const arrow = this.tryParse(abort => {\n var _arrowExpression$extr;\n\n typeParameters = this.flowParseTypeParameterDeclaration();\n const arrowExpression = this.forwardNoArrowParamsConversionAt(typeParameters, () => {\n const result = super.parseMaybeAssign(refExpressionErrors, afterLeftParse);\n this.resetStartLocationFromNode(result, typeParameters);\n return result;\n });\n if ((_arrowExpression$extr = arrowExpression.extra) != null && _arrowExpression$extr.parenthesized) abort();\n const expr = this.maybeUnwrapTypeCastExpression(arrowExpression);\n if (expr.type !== \"ArrowFunctionExpression\") abort();\n expr.typeParameters = typeParameters;\n this.resetStartLocationFromNode(expr, typeParameters);\n return arrowExpression;\n }, state);\n let arrowExpression = null;\n\n if (arrow.node && this.maybeUnwrapTypeCastExpression(arrow.node).type === \"ArrowFunctionExpression\") {\n if (!arrow.error && !arrow.aborted) {\n if (arrow.node.async) {\n this.raise(FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction, {\n at: typeParameters\n });\n }\n\n return arrow.node;\n }\n\n arrowExpression = arrow.node;\n }\n\n if ((_jsx2 = jsx) != null && _jsx2.node) {\n this.state = jsx.failState;\n return jsx.node;\n }\n\n if (arrowExpression) {\n this.state = arrow.failState;\n return arrowExpression;\n }\n\n if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error;\n if (arrow.thrown) throw arrow.error;\n throw this.raise(FlowErrors.UnexpectedTokenAfterTypeParameter, {\n at: typeParameters\n });\n }\n\n return super.parseMaybeAssign(refExpressionErrors, afterLeftParse);\n }\n\n parseArrow(node) {\n if (this.match(14)) {\n const result = this.tryParse(() => {\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = true;\n const typeNode = this.startNode();\n [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n if (this.canInsertSemicolon()) this.unexpected();\n if (!this.match(19)) this.unexpected();\n return typeNode;\n });\n if (result.thrown) return null;\n if (result.error) this.state = result.failState;\n node.returnType = result.node.typeAnnotation ? this.finishNode(result.node, \"TypeAnnotation\") : null;\n }\n\n return super.parseArrow(node);\n }\n\n shouldParseArrow(params) {\n return this.match(14) || super.shouldParseArrow(params);\n }\n\n setArrowFunctionParameters(node, params) {\n if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) {\n node.params = params;\n } else {\n super.setArrowFunctionParameters(node, params);\n }\n }\n\n checkParams(node, allowDuplicates, isArrowFunction) {\n if (isArrowFunction && this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) {\n return;\n }\n\n for (let i = 0; i < node.params.length; i++) {\n if (this.isThisParam(node.params[i]) && i > 0) {\n this.raise(FlowErrors.ThisParamMustBeFirst, {\n at: node.params[i]\n });\n }\n }\n\n return super.checkParams(...arguments);\n }\n\n parseParenAndDistinguishExpression(canBeArrow) {\n return super.parseParenAndDistinguishExpression(canBeArrow && this.state.noArrowAt.indexOf(this.state.start) === -1);\n }\n\n parseSubscripts(base, startPos, startLoc, noCalls) {\n if (base.type === \"Identifier\" && base.name === \"async\" && this.state.noArrowAt.indexOf(startPos) !== -1) {\n this.next();\n const node = this.startNodeAt(startPos, startLoc);\n node.callee = base;\n node.arguments = this.parseCallExpressionArguments(11, false);\n base = this.finishNode(node, \"CallExpression\");\n } else if (base.type === \"Identifier\" && base.name === \"async\" && this.match(47)) {\n const state = this.state.clone();\n const arrow = this.tryParse(abort => this.parseAsyncArrowWithTypeParameters(startPos, startLoc) || abort(), state);\n if (!arrow.error && !arrow.aborted) return arrow.node;\n const result = this.tryParse(() => super.parseSubscripts(base, startPos, startLoc, noCalls), state);\n if (result.node && !result.error) return result.node;\n\n if (arrow.node) {\n this.state = arrow.failState;\n return arrow.node;\n }\n\n if (result.node) {\n this.state = result.failState;\n return result.node;\n }\n\n throw arrow.error || result.error;\n }\n\n return super.parseSubscripts(base, startPos, startLoc, noCalls);\n }\n\n parseSubscript(base, startPos, startLoc, noCalls, subscriptState) {\n if (this.match(18) && this.isLookaheadToken_lt()) {\n subscriptState.optionalChainMember = true;\n\n if (noCalls) {\n subscriptState.stop = true;\n return base;\n }\n\n this.next();\n const node = this.startNodeAt(startPos, startLoc);\n node.callee = base;\n node.typeArguments = this.flowParseTypeParameterInstantiation();\n this.expect(10);\n node.arguments = this.parseCallExpressionArguments(11, false);\n node.optional = true;\n return this.finishCallExpression(node, true);\n } else if (!noCalls && this.shouldParseTypes() && this.match(47)) {\n const node = this.startNodeAt(startPos, startLoc);\n node.callee = base;\n const result = this.tryParse(() => {\n node.typeArguments = this.flowParseTypeParameterInstantiationCallOrNew();\n this.expect(10);\n node.arguments = this.parseCallExpressionArguments(11, false);\n if (subscriptState.optionalChainMember) node.optional = false;\n return this.finishCallExpression(node, subscriptState.optionalChainMember);\n });\n\n if (result.node) {\n if (result.error) this.state = result.failState;\n return result.node;\n }\n }\n\n return super.parseSubscript(base, startPos, startLoc, noCalls, subscriptState);\n }\n\n parseNewCallee(node) {\n super.parseNewCallee(node);\n let targs = null;\n\n if (this.shouldParseTypes() && this.match(47)) {\n targs = this.tryParse(() => this.flowParseTypeParameterInstantiationCallOrNew()).node;\n }\n\n node.typeArguments = targs;\n }\n\n parseAsyncArrowWithTypeParameters(startPos, startLoc) {\n const node = this.startNodeAt(startPos, startLoc);\n this.parseFunctionParams(node);\n if (!this.parseArrow(node)) return;\n return this.parseArrowExpression(node, undefined, true);\n }\n\n readToken_mult_modulo(code) {\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (code === 42 && next === 47 && this.state.hasFlowComment) {\n this.state.hasFlowComment = false;\n this.state.pos += 2;\n this.nextToken();\n return;\n }\n\n super.readToken_mult_modulo(code);\n }\n\n readToken_pipe_amp(code) {\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (code === 124 && next === 125) {\n this.finishOp(9, 2);\n return;\n }\n\n super.readToken_pipe_amp(code);\n }\n\n parseTopLevel(file, program) {\n const fileNode = super.parseTopLevel(file, program);\n\n if (this.state.hasFlowComment) {\n this.raise(FlowErrors.UnterminatedFlowComment, {\n at: this.state.curPosition()\n });\n }\n\n return fileNode;\n }\n\n skipBlockComment() {\n if (this.hasPlugin(\"flowComments\") && this.skipFlowComment()) {\n if (this.state.hasFlowComment) {\n throw this.raise(FlowErrors.NestedFlowComment, {\n at: this.state.startLoc\n });\n }\n\n this.hasFlowCommentCompletion();\n this.state.pos += this.skipFlowComment();\n this.state.hasFlowComment = true;\n return;\n }\n\n if (this.state.hasFlowComment) {\n const end = this.input.indexOf(\"*-/\", this.state.pos + 2);\n\n if (end === -1) {\n throw this.raise(Errors.UnterminatedComment, {\n at: this.state.curPosition()\n });\n }\n\n this.state.pos = end + 2 + 3;\n return;\n }\n\n return super.skipBlockComment();\n }\n\n skipFlowComment() {\n const {\n pos\n } = this.state;\n let shiftToFirstNonWhiteSpace = 2;\n\n while ([32, 9].includes(this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace))) {\n shiftToFirstNonWhiteSpace++;\n }\n\n const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos);\n const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1);\n\n if (ch2 === 58 && ch3 === 58) {\n return shiftToFirstNonWhiteSpace + 2;\n }\n\n if (this.input.slice(shiftToFirstNonWhiteSpace + pos, shiftToFirstNonWhiteSpace + pos + 12) === \"flow-include\") {\n return shiftToFirstNonWhiteSpace + 12;\n }\n\n if (ch2 === 58 && ch3 !== 58) {\n return shiftToFirstNonWhiteSpace;\n }\n\n return false;\n }\n\n hasFlowCommentCompletion() {\n const end = this.input.indexOf(\"*/\", this.state.pos);\n\n if (end === -1) {\n throw this.raise(Errors.UnterminatedComment, {\n at: this.state.curPosition()\n });\n }\n }\n\n flowEnumErrorBooleanMemberNotInitialized(loc, {\n enumName,\n memberName\n }) {\n this.raise(FlowErrors.EnumBooleanMemberNotInitialized, {\n at: loc,\n memberName,\n enumName\n });\n }\n\n flowEnumErrorInvalidMemberInitializer(loc, enumContext) {\n return this.raise(!enumContext.explicitType ? FlowErrors.EnumInvalidMemberInitializerUnknownType : enumContext.explicitType === \"symbol\" ? FlowErrors.EnumInvalidMemberInitializerSymbolType : FlowErrors.EnumInvalidMemberInitializerPrimaryType, Object.assign({\n at: loc\n }, enumContext));\n }\n\n flowEnumErrorNumberMemberNotInitialized(loc, {\n enumName,\n memberName\n }) {\n this.raise(FlowErrors.EnumNumberMemberNotInitialized, {\n at: loc,\n enumName,\n memberName\n });\n }\n\n flowEnumErrorStringMemberInconsistentlyInitailized(node, {\n enumName\n }) {\n this.raise(FlowErrors.EnumStringMemberInconsistentlyInitailized, {\n at: node,\n enumName\n });\n }\n\n flowEnumMemberInit() {\n const startLoc = this.state.startLoc;\n\n const endOfInit = () => this.match(12) || this.match(8);\n\n switch (this.state.type) {\n case 130:\n {\n const literal = this.parseNumericLiteral(this.state.value);\n\n if (endOfInit()) {\n return {\n type: \"number\",\n loc: literal.loc.start,\n value: literal\n };\n }\n\n return {\n type: \"invalid\",\n loc: startLoc\n };\n }\n\n case 129:\n {\n const literal = this.parseStringLiteral(this.state.value);\n\n if (endOfInit()) {\n return {\n type: \"string\",\n loc: literal.loc.start,\n value: literal\n };\n }\n\n return {\n type: \"invalid\",\n loc: startLoc\n };\n }\n\n case 85:\n case 86:\n {\n const literal = this.parseBooleanLiteral(this.match(85));\n\n if (endOfInit()) {\n return {\n type: \"boolean\",\n loc: literal.loc.start,\n value: literal\n };\n }\n\n return {\n type: \"invalid\",\n loc: startLoc\n };\n }\n\n default:\n return {\n type: \"invalid\",\n loc: startLoc\n };\n }\n }\n\n flowEnumMemberRaw() {\n const loc = this.state.startLoc;\n const id = this.parseIdentifier(true);\n const init = this.eat(29) ? this.flowEnumMemberInit() : {\n type: \"none\",\n loc\n };\n return {\n id,\n init\n };\n }\n\n flowEnumCheckExplicitTypeMismatch(loc, context, expectedType) {\n const {\n explicitType\n } = context;\n\n if (explicitType === null) {\n return;\n }\n\n if (explicitType !== expectedType) {\n this.flowEnumErrorInvalidMemberInitializer(loc, context);\n }\n }\n\n flowEnumMembers({\n enumName,\n explicitType\n }) {\n const seenNames = new Set();\n const members = {\n booleanMembers: [],\n numberMembers: [],\n stringMembers: [],\n defaultedMembers: []\n };\n let hasUnknownMembers = false;\n\n while (!this.match(8)) {\n if (this.eat(21)) {\n hasUnknownMembers = true;\n break;\n }\n\n const memberNode = this.startNode();\n const {\n id,\n init\n } = this.flowEnumMemberRaw();\n const memberName = id.name;\n\n if (memberName === \"\") {\n continue;\n }\n\n if (/^[a-z]/.test(memberName)) {\n this.raise(FlowErrors.EnumInvalidMemberName, {\n at: id,\n memberName,\n suggestion: memberName[0].toUpperCase() + memberName.slice(1),\n enumName\n });\n }\n\n if (seenNames.has(memberName)) {\n this.raise(FlowErrors.EnumDuplicateMemberName, {\n at: id,\n memberName,\n enumName\n });\n }\n\n seenNames.add(memberName);\n const context = {\n enumName,\n explicitType,\n memberName\n };\n memberNode.id = id;\n\n switch (init.type) {\n case \"boolean\":\n {\n this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"boolean\");\n memberNode.init = init.value;\n members.booleanMembers.push(this.finishNode(memberNode, \"EnumBooleanMember\"));\n break;\n }\n\n case \"number\":\n {\n this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"number\");\n memberNode.init = init.value;\n members.numberMembers.push(this.finishNode(memberNode, \"EnumNumberMember\"));\n break;\n }\n\n case \"string\":\n {\n this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"string\");\n memberNode.init = init.value;\n members.stringMembers.push(this.finishNode(memberNode, \"EnumStringMember\"));\n break;\n }\n\n case \"invalid\":\n {\n throw this.flowEnumErrorInvalidMemberInitializer(init.loc, context);\n }\n\n case \"none\":\n {\n switch (explicitType) {\n case \"boolean\":\n this.flowEnumErrorBooleanMemberNotInitialized(init.loc, context);\n break;\n\n case \"number\":\n this.flowEnumErrorNumberMemberNotInitialized(init.loc, context);\n break;\n\n default:\n members.defaultedMembers.push(this.finishNode(memberNode, \"EnumDefaultedMember\"));\n }\n }\n }\n\n if (!this.match(8)) {\n this.expect(12);\n }\n }\n\n return {\n members,\n hasUnknownMembers\n };\n }\n\n flowEnumStringMembers(initializedMembers, defaultedMembers, {\n enumName\n }) {\n if (initializedMembers.length === 0) {\n return defaultedMembers;\n } else if (defaultedMembers.length === 0) {\n return initializedMembers;\n } else if (defaultedMembers.length > initializedMembers.length) {\n for (const member of initializedMembers) {\n this.flowEnumErrorStringMemberInconsistentlyInitailized(member, {\n enumName\n });\n }\n\n return defaultedMembers;\n } else {\n for (const member of defaultedMembers) {\n this.flowEnumErrorStringMemberInconsistentlyInitailized(member, {\n enumName\n });\n }\n\n return initializedMembers;\n }\n }\n\n flowEnumParseExplicitType({\n enumName\n }) {\n if (!this.eatContextual(101)) return null;\n\n if (!tokenIsIdentifier(this.state.type)) {\n throw this.raise(FlowErrors.EnumInvalidExplicitTypeUnknownSupplied, {\n at: this.state.startLoc,\n enumName\n });\n }\n\n const {\n value\n } = this.state;\n this.next();\n\n if (value !== \"boolean\" && value !== \"number\" && value !== \"string\" && value !== \"symbol\") {\n this.raise(FlowErrors.EnumInvalidExplicitType, {\n at: this.state.startLoc,\n enumName,\n invalidEnumType: value\n });\n }\n\n return value;\n }\n\n flowEnumBody(node, id) {\n const enumName = id.name;\n const nameLoc = id.loc.start;\n const explicitType = this.flowEnumParseExplicitType({\n enumName\n });\n this.expect(5);\n const {\n members,\n hasUnknownMembers\n } = this.flowEnumMembers({\n enumName,\n explicitType\n });\n node.hasUnknownMembers = hasUnknownMembers;\n\n switch (explicitType) {\n case \"boolean\":\n node.explicitType = true;\n node.members = members.booleanMembers;\n this.expect(8);\n return this.finishNode(node, \"EnumBooleanBody\");\n\n case \"number\":\n node.explicitType = true;\n node.members = members.numberMembers;\n this.expect(8);\n return this.finishNode(node, \"EnumNumberBody\");\n\n case \"string\":\n node.explicitType = true;\n node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, {\n enumName\n });\n this.expect(8);\n return this.finishNode(node, \"EnumStringBody\");\n\n case \"symbol\":\n node.members = members.defaultedMembers;\n this.expect(8);\n return this.finishNode(node, \"EnumSymbolBody\");\n\n default:\n {\n const empty = () => {\n node.members = [];\n this.expect(8);\n return this.finishNode(node, \"EnumStringBody\");\n };\n\n node.explicitType = false;\n const boolsLen = members.booleanMembers.length;\n const numsLen = members.numberMembers.length;\n const strsLen = members.stringMembers.length;\n const defaultedLen = members.defaultedMembers.length;\n\n if (!boolsLen && !numsLen && !strsLen && !defaultedLen) {\n return empty();\n } else if (!boolsLen && !numsLen) {\n node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, {\n enumName\n });\n this.expect(8);\n return this.finishNode(node, \"EnumStringBody\");\n } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) {\n for (const member of members.defaultedMembers) {\n this.flowEnumErrorBooleanMemberNotInitialized(member.loc.start, {\n enumName,\n memberName: member.id.name\n });\n }\n\n node.members = members.booleanMembers;\n this.expect(8);\n return this.finishNode(node, \"EnumBooleanBody\");\n } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) {\n for (const member of members.defaultedMembers) {\n this.flowEnumErrorNumberMemberNotInitialized(member.loc.start, {\n enumName,\n memberName: member.id.name\n });\n }\n\n node.members = members.numberMembers;\n this.expect(8);\n return this.finishNode(node, \"EnumNumberBody\");\n } else {\n this.raise(FlowErrors.EnumInconsistentMemberValues, {\n at: nameLoc,\n enumName\n });\n return empty();\n }\n }\n }\n }\n\n flowParseEnumDeclaration(node) {\n const id = this.parseIdentifier();\n node.id = id;\n node.body = this.flowEnumBody(this.startNode(), id);\n return this.finishNode(node, \"EnumDeclaration\");\n }\n\n isLookaheadToken_lt() {\n const next = this.nextTokenStart();\n\n if (this.input.charCodeAt(next) === 60) {\n const afterNext = this.input.charCodeAt(next + 1);\n return afterNext !== 60 && afterNext !== 61;\n }\n\n return false;\n }\n\n maybeUnwrapTypeCastExpression(node) {\n return node.type === \"TypeCastExpression\" ? node.expression : node;\n }\n\n});\n\nconst entities = {\n __proto__: null,\n quot: \"\\u0022\",\n amp: \"&\",\n apos: \"\\u0027\",\n lt: \"<\",\n gt: \">\",\n nbsp: \"\\u00A0\",\n iexcl: \"\\u00A1\",\n cent: \"\\u00A2\",\n pound: \"\\u00A3\",\n curren: \"\\u00A4\",\n yen: \"\\u00A5\",\n brvbar: \"\\u00A6\",\n sect: \"\\u00A7\",\n uml: \"\\u00A8\",\n copy: \"\\u00A9\",\n ordf: \"\\u00AA\",\n laquo: \"\\u00AB\",\n not: \"\\u00AC\",\n shy: \"\\u00AD\",\n reg: \"\\u00AE\",\n macr: \"\\u00AF\",\n deg: \"\\u00B0\",\n plusmn: \"\\u00B1\",\n sup2: \"\\u00B2\",\n sup3: \"\\u00B3\",\n acute: \"\\u00B4\",\n micro: \"\\u00B5\",\n para: \"\\u00B6\",\n middot: \"\\u00B7\",\n cedil: \"\\u00B8\",\n sup1: \"\\u00B9\",\n ordm: \"\\u00BA\",\n raquo: \"\\u00BB\",\n frac14: \"\\u00BC\",\n frac12: \"\\u00BD\",\n frac34: \"\\u00BE\",\n iquest: \"\\u00BF\",\n Agrave: \"\\u00C0\",\n Aacute: \"\\u00C1\",\n Acirc: \"\\u00C2\",\n Atilde: \"\\u00C3\",\n Auml: \"\\u00C4\",\n Aring: \"\\u00C5\",\n AElig: \"\\u00C6\",\n Ccedil: \"\\u00C7\",\n Egrave: \"\\u00C8\",\n Eacute: \"\\u00C9\",\n Ecirc: \"\\u00CA\",\n Euml: \"\\u00CB\",\n Igrave: \"\\u00CC\",\n Iacute: \"\\u00CD\",\n Icirc: \"\\u00CE\",\n Iuml: \"\\u00CF\",\n ETH: \"\\u00D0\",\n Ntilde: \"\\u00D1\",\n Ograve: \"\\u00D2\",\n Oacute: \"\\u00D3\",\n Ocirc: \"\\u00D4\",\n Otilde: \"\\u00D5\",\n Ouml: \"\\u00D6\",\n times: \"\\u00D7\",\n Oslash: \"\\u00D8\",\n Ugrave: \"\\u00D9\",\n Uacute: \"\\u00DA\",\n Ucirc: \"\\u00DB\",\n Uuml: \"\\u00DC\",\n Yacute: \"\\u00DD\",\n THORN: \"\\u00DE\",\n szlig: \"\\u00DF\",\n agrave: \"\\u00E0\",\n aacute: \"\\u00E1\",\n acirc: \"\\u00E2\",\n atilde: \"\\u00E3\",\n auml: \"\\u00E4\",\n aring: \"\\u00E5\",\n aelig: \"\\u00E6\",\n ccedil: \"\\u00E7\",\n egrave: \"\\u00E8\",\n eacute: \"\\u00E9\",\n ecirc: \"\\u00EA\",\n euml: \"\\u00EB\",\n igrave: \"\\u00EC\",\n iacute: \"\\u00ED\",\n icirc: \"\\u00EE\",\n iuml: \"\\u00EF\",\n eth: \"\\u00F0\",\n ntilde: \"\\u00F1\",\n ograve: \"\\u00F2\",\n oacute: \"\\u00F3\",\n ocirc: \"\\u00F4\",\n otilde: \"\\u00F5\",\n ouml: \"\\u00F6\",\n divide: \"\\u00F7\",\n oslash: \"\\u00F8\",\n ugrave: \"\\u00F9\",\n uacute: \"\\u00FA\",\n ucirc: \"\\u00FB\",\n uuml: \"\\u00FC\",\n yacute: \"\\u00FD\",\n thorn: \"\\u00FE\",\n yuml: \"\\u00FF\",\n OElig: \"\\u0152\",\n oelig: \"\\u0153\",\n Scaron: \"\\u0160\",\n scaron: \"\\u0161\",\n Yuml: \"\\u0178\",\n fnof: \"\\u0192\",\n circ: \"\\u02C6\",\n tilde: \"\\u02DC\",\n Alpha: \"\\u0391\",\n Beta: \"\\u0392\",\n Gamma: \"\\u0393\",\n Delta: \"\\u0394\",\n Epsilon: \"\\u0395\",\n Zeta: \"\\u0396\",\n Eta: \"\\u0397\",\n Theta: \"\\u0398\",\n Iota: \"\\u0399\",\n Kappa: \"\\u039A\",\n Lambda: \"\\u039B\",\n Mu: \"\\u039C\",\n Nu: \"\\u039D\",\n Xi: \"\\u039E\",\n Omicron: \"\\u039F\",\n Pi: \"\\u03A0\",\n Rho: \"\\u03A1\",\n Sigma: \"\\u03A3\",\n Tau: \"\\u03A4\",\n Upsilon: \"\\u03A5\",\n Phi: \"\\u03A6\",\n Chi: \"\\u03A7\",\n Psi: \"\\u03A8\",\n Omega: \"\\u03A9\",\n alpha: \"\\u03B1\",\n beta: \"\\u03B2\",\n gamma: \"\\u03B3\",\n delta: \"\\u03B4\",\n epsilon: \"\\u03B5\",\n zeta: \"\\u03B6\",\n eta: \"\\u03B7\",\n theta: \"\\u03B8\",\n iota: \"\\u03B9\",\n kappa: \"\\u03BA\",\n lambda: \"\\u03BB\",\n mu: \"\\u03BC\",\n nu: \"\\u03BD\",\n xi: \"\\u03BE\",\n omicron: \"\\u03BF\",\n pi: \"\\u03C0\",\n rho: \"\\u03C1\",\n sigmaf: \"\\u03C2\",\n sigma: \"\\u03C3\",\n tau: \"\\u03C4\",\n upsilon: \"\\u03C5\",\n phi: \"\\u03C6\",\n chi: \"\\u03C7\",\n psi: \"\\u03C8\",\n omega: \"\\u03C9\",\n thetasym: \"\\u03D1\",\n upsih: \"\\u03D2\",\n piv: \"\\u03D6\",\n ensp: \"\\u2002\",\n emsp: \"\\u2003\",\n thinsp: \"\\u2009\",\n zwnj: \"\\u200C\",\n zwj: \"\\u200D\",\n lrm: \"\\u200E\",\n rlm: \"\\u200F\",\n ndash: \"\\u2013\",\n mdash: \"\\u2014\",\n lsquo: \"\\u2018\",\n rsquo: \"\\u2019\",\n sbquo: \"\\u201A\",\n ldquo: \"\\u201C\",\n rdquo: \"\\u201D\",\n bdquo: \"\\u201E\",\n dagger: \"\\u2020\",\n Dagger: \"\\u2021\",\n bull: \"\\u2022\",\n hellip: \"\\u2026\",\n permil: \"\\u2030\",\n prime: \"\\u2032\",\n Prime: \"\\u2033\",\n lsaquo: \"\\u2039\",\n rsaquo: \"\\u203A\",\n oline: \"\\u203E\",\n frasl: \"\\u2044\",\n euro: \"\\u20AC\",\n image: \"\\u2111\",\n weierp: \"\\u2118\",\n real: \"\\u211C\",\n trade: \"\\u2122\",\n alefsym: \"\\u2135\",\n larr: \"\\u2190\",\n uarr: \"\\u2191\",\n rarr: \"\\u2192\",\n darr: \"\\u2193\",\n harr: \"\\u2194\",\n crarr: \"\\u21B5\",\n lArr: \"\\u21D0\",\n uArr: \"\\u21D1\",\n rArr: \"\\u21D2\",\n dArr: \"\\u21D3\",\n hArr: \"\\u21D4\",\n forall: \"\\u2200\",\n part: \"\\u2202\",\n exist: \"\\u2203\",\n empty: \"\\u2205\",\n nabla: \"\\u2207\",\n isin: \"\\u2208\",\n notin: \"\\u2209\",\n ni: \"\\u220B\",\n prod: \"\\u220F\",\n sum: \"\\u2211\",\n minus: \"\\u2212\",\n lowast: \"\\u2217\",\n radic: \"\\u221A\",\n prop: \"\\u221D\",\n infin: \"\\u221E\",\n ang: \"\\u2220\",\n and: \"\\u2227\",\n or: \"\\u2228\",\n cap: \"\\u2229\",\n cup: \"\\u222A\",\n int: \"\\u222B\",\n there4: \"\\u2234\",\n sim: \"\\u223C\",\n cong: \"\\u2245\",\n asymp: \"\\u2248\",\n ne: \"\\u2260\",\n equiv: \"\\u2261\",\n le: \"\\u2264\",\n ge: \"\\u2265\",\n sub: \"\\u2282\",\n sup: \"\\u2283\",\n nsub: \"\\u2284\",\n sube: \"\\u2286\",\n supe: \"\\u2287\",\n oplus: \"\\u2295\",\n otimes: \"\\u2297\",\n perp: \"\\u22A5\",\n sdot: \"\\u22C5\",\n lceil: \"\\u2308\",\n rceil: \"\\u2309\",\n lfloor: \"\\u230A\",\n rfloor: \"\\u230B\",\n lang: \"\\u2329\",\n rang: \"\\u232A\",\n loz: \"\\u25CA\",\n spades: \"\\u2660\",\n clubs: \"\\u2663\",\n hearts: \"\\u2665\",\n diams: \"\\u2666\"\n};\n\nconst JsxErrors = ParseErrorEnum`jsx`(_ => ({\n AttributeIsEmpty: _(\"JSX attributes must only be assigned a non-empty expression.\"),\n MissingClosingTagElement: _(({\n openingTagName\n }) => `Expected corresponding JSX closing tag for <${openingTagName}>.`),\n MissingClosingTagFragment: _(\"Expected corresponding JSX closing tag for <>.\"),\n UnexpectedSequenceExpression: _(\"Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?\"),\n UnexpectedToken: _(({\n unexpected,\n HTMLEntity\n }) => `Unexpected token \\`${unexpected}\\`. Did you mean \\`${HTMLEntity}\\` or \\`{'${unexpected}'}\\`?`),\n UnsupportedJsxValue: _(\"JSX value should be either an expression or a quoted JSX text.\"),\n UnterminatedJsxContent: _(\"Unterminated JSX contents.\"),\n UnwrappedAdjacentJSXElements: _(\"Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...?\")\n}));\n\nfunction isFragment(object) {\n return object ? object.type === \"JSXOpeningFragment\" || object.type === \"JSXClosingFragment\" : false;\n}\n\nfunction getQualifiedJSXName(object) {\n if (object.type === \"JSXIdentifier\") {\n return object.name;\n }\n\n if (object.type === \"JSXNamespacedName\") {\n return object.namespace.name + \":\" + object.name.name;\n }\n\n if (object.type === \"JSXMemberExpression\") {\n return getQualifiedJSXName(object.object) + \".\" + getQualifiedJSXName(object.property);\n }\n\n throw new Error(\"Node had unexpected type: \" + object.type);\n}\n\nvar jsx = (superClass => class extends superClass {\n jsxReadToken() {\n let out = \"\";\n let chunkStart = this.state.pos;\n\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(JsxErrors.UnterminatedJsxContent, {\n at: this.state.startLoc\n });\n }\n\n const ch = this.input.charCodeAt(this.state.pos);\n\n switch (ch) {\n case 60:\n case 123:\n if (this.state.pos === this.state.start) {\n if (ch === 60 && this.state.canStartJSXElement) {\n ++this.state.pos;\n return this.finishToken(138);\n }\n\n return super.getTokenFromCode(ch);\n }\n\n out += this.input.slice(chunkStart, this.state.pos);\n return this.finishToken(137, out);\n\n case 38:\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadEntity();\n chunkStart = this.state.pos;\n break;\n\n case 62:\n case 125:\n\n default:\n if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadNewLine(true);\n chunkStart = this.state.pos;\n } else {\n ++this.state.pos;\n }\n\n }\n }\n }\n\n jsxReadNewLine(normalizeCRLF) {\n const ch = this.input.charCodeAt(this.state.pos);\n let out;\n ++this.state.pos;\n\n if (ch === 13 && this.input.charCodeAt(this.state.pos) === 10) {\n ++this.state.pos;\n out = normalizeCRLF ? \"\\n\" : \"\\r\\n\";\n } else {\n out = String.fromCharCode(ch);\n }\n\n ++this.state.curLine;\n this.state.lineStart = this.state.pos;\n return out;\n }\n\n jsxReadString(quote) {\n let out = \"\";\n let chunkStart = ++this.state.pos;\n\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(Errors.UnterminatedString, {\n at: this.state.startLoc\n });\n }\n\n const ch = this.input.charCodeAt(this.state.pos);\n if (ch === quote) break;\n\n if (ch === 38) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadEntity();\n chunkStart = this.state.pos;\n } else if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadNewLine(false);\n chunkStart = this.state.pos;\n } else {\n ++this.state.pos;\n }\n }\n\n out += this.input.slice(chunkStart, this.state.pos++);\n return this.finishToken(129, out);\n }\n\n jsxReadEntity() {\n const startPos = ++this.state.pos;\n\n if (this.codePointAtPos(this.state.pos) === 35) {\n ++this.state.pos;\n let radix = 10;\n\n if (this.codePointAtPos(this.state.pos) === 120) {\n radix = 16;\n ++this.state.pos;\n }\n\n const codePoint = this.readInt(radix, undefined, false, \"bail\");\n\n if (codePoint !== null && this.codePointAtPos(this.state.pos) === 59) {\n ++this.state.pos;\n return String.fromCodePoint(codePoint);\n }\n } else {\n let count = 0;\n let semi = false;\n\n while (count++ < 10 && this.state.pos < this.length && !(semi = this.codePointAtPos(this.state.pos) == 59)) {\n ++this.state.pos;\n }\n\n if (semi) {\n const desc = this.input.slice(startPos, this.state.pos);\n const entity = entities[desc];\n ++this.state.pos;\n\n if (entity) {\n return entity;\n }\n }\n }\n\n this.state.pos = startPos;\n return \"&\";\n }\n\n jsxReadWord() {\n let ch;\n const start = this.state.pos;\n\n do {\n ch = this.input.charCodeAt(++this.state.pos);\n } while (isIdentifierChar(ch) || ch === 45);\n\n return this.finishToken(136, this.input.slice(start, this.state.pos));\n }\n\n jsxParseIdentifier() {\n const node = this.startNode();\n\n if (this.match(136)) {\n node.name = this.state.value;\n } else if (tokenIsKeyword(this.state.type)) {\n node.name = tokenLabelName(this.state.type);\n } else {\n this.unexpected();\n }\n\n this.next();\n return this.finishNode(node, \"JSXIdentifier\");\n }\n\n jsxParseNamespacedName() {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const name = this.jsxParseIdentifier();\n if (!this.eat(14)) return name;\n const node = this.startNodeAt(startPos, startLoc);\n node.namespace = name;\n node.name = this.jsxParseIdentifier();\n return this.finishNode(node, \"JSXNamespacedName\");\n }\n\n jsxParseElementName() {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n let node = this.jsxParseNamespacedName();\n\n if (node.type === \"JSXNamespacedName\") {\n return node;\n }\n\n while (this.eat(16)) {\n const newNode = this.startNodeAt(startPos, startLoc);\n newNode.object = node;\n newNode.property = this.jsxParseIdentifier();\n node = this.finishNode(newNode, \"JSXMemberExpression\");\n }\n\n return node;\n }\n\n jsxParseAttributeValue() {\n let node;\n\n switch (this.state.type) {\n case 5:\n node = this.startNode();\n this.setContext(types.brace);\n this.next();\n node = this.jsxParseExpressionContainer(node, types.j_oTag);\n\n if (node.expression.type === \"JSXEmptyExpression\") {\n this.raise(JsxErrors.AttributeIsEmpty, {\n at: node\n });\n }\n\n return node;\n\n case 138:\n case 129:\n return this.parseExprAtom();\n\n default:\n throw this.raise(JsxErrors.UnsupportedJsxValue, {\n at: this.state.startLoc\n });\n }\n }\n\n jsxParseEmptyExpression() {\n const node = this.startNodeAt(this.state.lastTokEndLoc.index, this.state.lastTokEndLoc);\n return this.finishNodeAt(node, \"JSXEmptyExpression\", this.state.startLoc);\n }\n\n jsxParseSpreadChild(node) {\n this.next();\n node.expression = this.parseExpression();\n this.setContext(types.j_oTag);\n this.state.canStartJSXElement = true;\n this.expect(8);\n return this.finishNode(node, \"JSXSpreadChild\");\n }\n\n jsxParseExpressionContainer(node, previousContext) {\n if (this.match(8)) {\n node.expression = this.jsxParseEmptyExpression();\n } else {\n const expression = this.parseExpression();\n node.expression = expression;\n }\n\n this.setContext(previousContext);\n this.state.canStartJSXElement = true;\n this.expect(8);\n return this.finishNode(node, \"JSXExpressionContainer\");\n }\n\n jsxParseAttribute() {\n const node = this.startNode();\n\n if (this.match(5)) {\n this.setContext(types.brace);\n this.next();\n this.expect(21);\n node.argument = this.parseMaybeAssignAllowIn();\n this.setContext(types.j_oTag);\n this.state.canStartJSXElement = true;\n this.expect(8);\n return this.finishNode(node, \"JSXSpreadAttribute\");\n }\n\n node.name = this.jsxParseNamespacedName();\n node.value = this.eat(29) ? this.jsxParseAttributeValue() : null;\n return this.finishNode(node, \"JSXAttribute\");\n }\n\n jsxParseOpeningElementAt(startPos, startLoc) {\n const node = this.startNodeAt(startPos, startLoc);\n\n if (this.eat(139)) {\n return this.finishNode(node, \"JSXOpeningFragment\");\n }\n\n node.name = this.jsxParseElementName();\n return this.jsxParseOpeningElementAfterName(node);\n }\n\n jsxParseOpeningElementAfterName(node) {\n const attributes = [];\n\n while (!this.match(56) && !this.match(139)) {\n attributes.push(this.jsxParseAttribute());\n }\n\n node.attributes = attributes;\n node.selfClosing = this.eat(56);\n this.expect(139);\n return this.finishNode(node, \"JSXOpeningElement\");\n }\n\n jsxParseClosingElementAt(startPos, startLoc) {\n const node = this.startNodeAt(startPos, startLoc);\n\n if (this.eat(139)) {\n return this.finishNode(node, \"JSXClosingFragment\");\n }\n\n node.name = this.jsxParseElementName();\n this.expect(139);\n return this.finishNode(node, \"JSXClosingElement\");\n }\n\n jsxParseElementAt(startPos, startLoc) {\n const node = this.startNodeAt(startPos, startLoc);\n const children = [];\n const openingElement = this.jsxParseOpeningElementAt(startPos, startLoc);\n let closingElement = null;\n\n if (!openingElement.selfClosing) {\n contents: for (;;) {\n switch (this.state.type) {\n case 138:\n startPos = this.state.start;\n startLoc = this.state.startLoc;\n this.next();\n\n if (this.eat(56)) {\n closingElement = this.jsxParseClosingElementAt(startPos, startLoc);\n break contents;\n }\n\n children.push(this.jsxParseElementAt(startPos, startLoc));\n break;\n\n case 137:\n children.push(this.parseExprAtom());\n break;\n\n case 5:\n {\n const node = this.startNode();\n this.setContext(types.brace);\n this.next();\n\n if (this.match(21)) {\n children.push(this.jsxParseSpreadChild(node));\n } else {\n children.push(this.jsxParseExpressionContainer(node, types.j_expr));\n }\n\n break;\n }\n\n default:\n throw this.unexpected();\n }\n }\n\n if (isFragment(openingElement) && !isFragment(closingElement) && closingElement !== null) {\n this.raise(JsxErrors.MissingClosingTagFragment, {\n at: closingElement\n });\n } else if (!isFragment(openingElement) && isFragment(closingElement)) {\n this.raise(JsxErrors.MissingClosingTagElement, {\n at: closingElement,\n openingTagName: getQualifiedJSXName(openingElement.name)\n });\n } else if (!isFragment(openingElement) && !isFragment(closingElement)) {\n if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) {\n this.raise(JsxErrors.MissingClosingTagElement, {\n at: closingElement,\n openingTagName: getQualifiedJSXName(openingElement.name)\n });\n }\n }\n }\n\n if (isFragment(openingElement)) {\n node.openingFragment = openingElement;\n node.closingFragment = closingElement;\n } else {\n node.openingElement = openingElement;\n node.closingElement = closingElement;\n }\n\n node.children = children;\n\n if (this.match(47)) {\n throw this.raise(JsxErrors.UnwrappedAdjacentJSXElements, {\n at: this.state.startLoc\n });\n }\n\n return isFragment(openingElement) ? this.finishNode(node, \"JSXFragment\") : this.finishNode(node, \"JSXElement\");\n }\n\n jsxParseElement() {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n this.next();\n return this.jsxParseElementAt(startPos, startLoc);\n }\n\n setContext(newContext) {\n const {\n context\n } = this.state;\n context[context.length - 1] = newContext;\n }\n\n parseExprAtom(refExpressionErrors) {\n if (this.match(137)) {\n return this.parseLiteral(this.state.value, \"JSXText\");\n } else if (this.match(138)) {\n return this.jsxParseElement();\n } else if (this.match(47) && this.input.charCodeAt(this.state.pos) !== 33) {\n this.replaceToken(138);\n return this.jsxParseElement();\n } else {\n return super.parseExprAtom(refExpressionErrors);\n }\n }\n\n skipSpace() {\n const curContext = this.curContext();\n if (!curContext.preserveSpace) super.skipSpace();\n }\n\n getTokenFromCode(code) {\n const context = this.curContext();\n\n if (context === types.j_expr) {\n return this.jsxReadToken();\n }\n\n if (context === types.j_oTag || context === types.j_cTag) {\n if (isIdentifierStart(code)) {\n return this.jsxReadWord();\n }\n\n if (code === 62) {\n ++this.state.pos;\n return this.finishToken(139);\n }\n\n if ((code === 34 || code === 39) && context === types.j_oTag) {\n return this.jsxReadString(code);\n }\n }\n\n if (code === 60 && this.state.canStartJSXElement && this.input.charCodeAt(this.state.pos + 1) !== 33) {\n ++this.state.pos;\n return this.finishToken(138);\n }\n\n return super.getTokenFromCode(code);\n }\n\n updateContext(prevType) {\n const {\n context,\n type\n } = this.state;\n\n if (type === 56 && prevType === 138) {\n context.splice(-2, 2, types.j_cTag);\n this.state.canStartJSXElement = false;\n } else if (type === 138) {\n context.push(types.j_oTag);\n } else if (type === 139) {\n const out = context[context.length - 1];\n\n if (out === types.j_oTag && prevType === 56 || out === types.j_cTag) {\n context.pop();\n this.state.canStartJSXElement = context[context.length - 1] === types.j_expr;\n } else {\n this.setContext(types.j_expr);\n this.state.canStartJSXElement = true;\n }\n } else {\n this.state.canStartJSXElement = tokenComesBeforeExpression(type);\n }\n }\n\n});\n\nclass TypeScriptScope extends Scope {\n constructor(...args) {\n super(...args);\n this.types = new Set();\n this.enums = new Set();\n this.constEnums = new Set();\n this.classes = new Set();\n this.exportOnlyBindings = new Set();\n }\n\n}\n\nclass TypeScriptScopeHandler extends ScopeHandler {\n createScope(flags) {\n return new TypeScriptScope(flags);\n }\n\n declareName(name, bindingType, loc) {\n const scope = this.currentScope();\n\n if (bindingType & BIND_FLAGS_TS_EXPORT_ONLY) {\n this.maybeExportDefined(scope, name);\n scope.exportOnlyBindings.add(name);\n return;\n }\n\n super.declareName(...arguments);\n\n if (bindingType & BIND_KIND_TYPE) {\n if (!(bindingType & BIND_KIND_VALUE)) {\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n this.maybeExportDefined(scope, name);\n }\n\n scope.types.add(name);\n }\n\n if (bindingType & BIND_FLAGS_TS_ENUM) scope.enums.add(name);\n if (bindingType & BIND_FLAGS_TS_CONST_ENUM) scope.constEnums.add(name);\n if (bindingType & BIND_FLAGS_CLASS) scope.classes.add(name);\n }\n\n isRedeclaredInScope(scope, name, bindingType) {\n if (scope.enums.has(name)) {\n if (bindingType & BIND_FLAGS_TS_ENUM) {\n const isConst = !!(bindingType & BIND_FLAGS_TS_CONST_ENUM);\n const wasConst = scope.constEnums.has(name);\n return isConst !== wasConst;\n }\n\n return true;\n }\n\n if (bindingType & BIND_FLAGS_CLASS && scope.classes.has(name)) {\n if (scope.lexical.has(name)) {\n return !!(bindingType & BIND_KIND_VALUE);\n } else {\n return false;\n }\n }\n\n if (bindingType & BIND_KIND_TYPE && scope.types.has(name)) {\n return true;\n }\n\n return super.isRedeclaredInScope(...arguments);\n }\n\n checkLocalExport(id) {\n const topLevelScope = this.scopeStack[0];\n const {\n name\n } = id;\n\n if (!topLevelScope.types.has(name) && !topLevelScope.exportOnlyBindings.has(name)) {\n super.checkLocalExport(id);\n }\n }\n\n}\n\nconst getOwn$1 = (object, key) => Object.hasOwnProperty.call(object, key) && object[key];\n\nfunction nonNull(x) {\n if (x == null) {\n throw new Error(`Unexpected ${x} value.`);\n }\n\n return x;\n}\n\nfunction assert(x) {\n if (!x) {\n throw new Error(\"Assert fail\");\n }\n}\n\nfunction tsTokenCanStartExpression(token) {\n return tokenCanStartExpression(token) || tokenIsBinaryOperator(token);\n}\n\nconst TSErrors = ParseErrorEnum`typescript`(_ => ({\n AbstractMethodHasImplementation: _(({\n methodName\n }) => `Method '${methodName}' cannot have an implementation because it is marked abstract.`),\n AbstractPropertyHasInitializer: _(({\n propertyName\n }) => `Property '${propertyName}' cannot have an initializer because it is marked abstract.`),\n AccesorCannotDeclareThisParameter: _(\"'get' and 'set' accessors cannot declare 'this' parameters.\"),\n AccesorCannotHaveTypeParameters: _(\"An accessor cannot have type parameters.\"),\n CannotFindName: _(({\n name\n }) => `Cannot find name '${name}'.`),\n ClassMethodHasDeclare: _(\"Class methods cannot have the 'declare' modifier.\"),\n ClassMethodHasReadonly: _(\"Class methods cannot have the 'readonly' modifier.\"),\n ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference: _(\"A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.\"),\n ConstructorHasTypeParameters: _(\"Type parameters cannot appear on a constructor declaration.\"),\n DeclareAccessor: _(({\n kind\n }) => `'declare' is not allowed in ${kind}ters.`),\n DeclareClassFieldHasInitializer: _(\"Initializers are not allowed in ambient contexts.\"),\n DeclareFunctionHasImplementation: _(\"An implementation cannot be declared in ambient contexts.\"),\n DuplicateAccessibilityModifier: _(({\n modifier\n }) => `Accessibility modifier already seen.`),\n DuplicateModifier: _(({\n modifier\n }) => `Duplicate modifier: '${modifier}'.`),\n EmptyHeritageClauseType: _(({\n token\n }) => `'${token}' list cannot be empty.`),\n EmptyTypeArguments: _(\"Type argument list cannot be empty.\"),\n EmptyTypeParameters: _(\"Type parameter list cannot be empty.\"),\n ExpectedAmbientAfterExportDeclare: _(\"'export declare' must be followed by an ambient declaration.\"),\n ImportAliasHasImportType: _(\"An import alias can not use 'import type'.\"),\n IncompatibleModifiers: _(({\n modifiers\n }) => `'${modifiers[0]}' modifier cannot be used with '${modifiers[1]}' modifier.`),\n IndexSignatureHasAbstract: _(\"Index signatures cannot have the 'abstract' modifier.\"),\n IndexSignatureHasAccessibility: _(({\n modifier\n }) => `Index signatures cannot have an accessibility modifier ('${modifier}').`),\n IndexSignatureHasDeclare: _(\"Index signatures cannot have the 'declare' modifier.\"),\n IndexSignatureHasOverride: _(\"'override' modifier cannot appear on an index signature.\"),\n IndexSignatureHasStatic: _(\"Index signatures cannot have the 'static' modifier.\"),\n InitializerNotAllowedInAmbientContext: _(\"Initializers are not allowed in ambient contexts.\"),\n InvalidModifierOnTypeMember: _(({\n modifier\n }) => `'${modifier}' modifier cannot appear on a type member.`),\n InvalidModifierOnTypeParameter: _(({\n modifier\n }) => `'${modifier}' modifier cannot appear on a type parameter.`),\n InvalidModifierOnTypeParameterPositions: _(({\n modifier\n }) => `'${modifier}' modifier can only appear on a type parameter of a class, interface or type alias.`),\n InvalidModifiersOrder: _(({\n orderedModifiers\n }) => `'${orderedModifiers[0]}' modifier must precede '${orderedModifiers[1]}' modifier.`),\n InvalidTupleMemberLabel: _(\"Tuple members must be labeled with a simple identifier.\"),\n MissingInterfaceName: _(\"'interface' declarations must be followed by an identifier.\"),\n MixedLabeledAndUnlabeledElements: _(\"Tuple members must all have names or all not have names.\"),\n NonAbstractClassHasAbstractMethod: _(\"Abstract methods can only appear within an abstract class.\"),\n NonClassMethodPropertyHasAbstractModifer: _(\"'abstract' modifier can only appear on a class, method, or property declaration.\"),\n OptionalTypeBeforeRequired: _(\"A required element cannot follow an optional element.\"),\n OverrideNotInSubClass: _(\"This member cannot have an 'override' modifier because its containing class does not extend another class.\"),\n PatternIsOptional: _(\"A binding pattern parameter cannot be optional in an implementation signature.\"),\n PrivateElementHasAbstract: _(\"Private elements cannot have the 'abstract' modifier.\"),\n PrivateElementHasAccessibility: _(({\n modifier\n }) => `Private elements cannot have an accessibility modifier ('${modifier}').`),\n ReadonlyForMethodSignature: _(\"'readonly' modifier can only appear on a property declaration or index signature.\"),\n ReservedArrowTypeParam: _(\"This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `() => ...`.\"),\n ReservedTypeAssertion: _(\"This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.\"),\n SetAccesorCannotHaveOptionalParameter: _(\"A 'set' accessor cannot have an optional parameter.\"),\n SetAccesorCannotHaveRestParameter: _(\"A 'set' accessor cannot have rest parameter.\"),\n SetAccesorCannotHaveReturnType: _(\"A 'set' accessor cannot have a return type annotation.\"),\n SingleTypeParameterWithoutTrailingComma: _(({\n typeParameterName\n }) => `Single type parameter ${typeParameterName} should have a trailing comma. Example usage: <${typeParameterName},>.`),\n StaticBlockCannotHaveModifier: _(\"Static class blocks cannot have any modifier.\"),\n TypeAnnotationAfterAssign: _(\"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.\"),\n TypeImportCannotSpecifyDefaultAndNamed: _(\"A type-only import can specify a default import or named bindings, but not both.\"),\n TypeModifierIsUsedInTypeExports: _(\"The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.\"),\n TypeModifierIsUsedInTypeImports: _(\"The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.\"),\n UnexpectedParameterModifier: _(\"A parameter property is only allowed in a constructor implementation.\"),\n UnexpectedReadonly: _(\"'readonly' type modifier is only permitted on array and tuple literal types.\"),\n UnexpectedTypeAnnotation: _(\"Did not expect a type annotation here.\"),\n UnexpectedTypeCastInParameter: _(\"Unexpected type cast in parameter position.\"),\n UnsupportedImportTypeArgument: _(\"Argument in a type import must be a string literal.\"),\n UnsupportedParameterPropertyKind: _(\"A parameter property may not be declared using a binding pattern.\"),\n UnsupportedSignatureParameterKind: _(({\n type\n }) => `Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got ${type}.`)\n}));\n\nfunction keywordTypeFromName(value) {\n switch (value) {\n case \"any\":\n return \"TSAnyKeyword\";\n\n case \"boolean\":\n return \"TSBooleanKeyword\";\n\n case \"bigint\":\n return \"TSBigIntKeyword\";\n\n case \"never\":\n return \"TSNeverKeyword\";\n\n case \"number\":\n return \"TSNumberKeyword\";\n\n case \"object\":\n return \"TSObjectKeyword\";\n\n case \"string\":\n return \"TSStringKeyword\";\n\n case \"symbol\":\n return \"TSSymbolKeyword\";\n\n case \"undefined\":\n return \"TSUndefinedKeyword\";\n\n case \"unknown\":\n return \"TSUnknownKeyword\";\n\n default:\n return undefined;\n }\n}\n\nfunction tsIsAccessModifier(modifier) {\n return modifier === \"private\" || modifier === \"public\" || modifier === \"protected\";\n}\n\nfunction tsIsVarianceAnnotations(modifier) {\n return modifier === \"in\" || modifier === \"out\";\n}\n\nvar typescript = (superClass => class extends superClass {\n getScopeHandler() {\n return TypeScriptScopeHandler;\n }\n\n tsIsIdentifier() {\n return tokenIsIdentifier(this.state.type);\n }\n\n tsTokenCanFollowModifier() {\n return (this.match(0) || this.match(5) || this.match(55) || this.match(21) || this.match(134) || this.isLiteralPropertyName()) && !this.hasPrecedingLineBreak();\n }\n\n tsNextTokenCanFollowModifier() {\n this.next();\n return this.tsTokenCanFollowModifier();\n }\n\n tsParseModifier(allowedModifiers, stopOnStartOfClassStaticBlock) {\n if (!tokenIsIdentifier(this.state.type) && this.state.type !== 58) {\n return undefined;\n }\n\n const modifier = this.state.value;\n\n if (allowedModifiers.indexOf(modifier) !== -1) {\n if (stopOnStartOfClassStaticBlock && this.tsIsStartOfStaticBlocks()) {\n return undefined;\n }\n\n if (this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) {\n return modifier;\n }\n }\n\n return undefined;\n }\n\n tsParseModifiers({\n modified,\n allowedModifiers,\n disallowedModifiers,\n stopOnStartOfClassStaticBlock,\n errorTemplate = TSErrors.InvalidModifierOnTypeMember\n }) {\n const enforceOrder = (loc, modifier, before, after) => {\n if (modifier === before && modified[after]) {\n this.raise(TSErrors.InvalidModifiersOrder, {\n at: loc,\n orderedModifiers: [before, after]\n });\n }\n };\n\n const incompatible = (loc, modifier, mod1, mod2) => {\n if (modified[mod1] && modifier === mod2 || modified[mod2] && modifier === mod1) {\n this.raise(TSErrors.IncompatibleModifiers, {\n at: loc,\n modifiers: [mod1, mod2]\n });\n }\n };\n\n for (;;) {\n const {\n startLoc\n } = this.state;\n const modifier = this.tsParseModifier(allowedModifiers.concat(disallowedModifiers != null ? disallowedModifiers : []), stopOnStartOfClassStaticBlock);\n if (!modifier) break;\n\n if (tsIsAccessModifier(modifier)) {\n if (modified.accessibility) {\n this.raise(TSErrors.DuplicateAccessibilityModifier, {\n at: startLoc,\n modifier\n });\n } else {\n enforceOrder(startLoc, modifier, modifier, \"override\");\n enforceOrder(startLoc, modifier, modifier, \"static\");\n enforceOrder(startLoc, modifier, modifier, \"readonly\");\n modified.accessibility = modifier;\n }\n } else if (tsIsVarianceAnnotations(modifier)) {\n if (modified[modifier]) {\n this.raise(TSErrors.DuplicateModifier, {\n at: startLoc,\n modifier\n });\n }\n\n modified[modifier] = true;\n enforceOrder(startLoc, modifier, \"in\", \"out\");\n } else {\n if (Object.hasOwnProperty.call(modified, modifier)) {\n this.raise(TSErrors.DuplicateModifier, {\n at: startLoc,\n modifier\n });\n } else {\n enforceOrder(startLoc, modifier, \"static\", \"readonly\");\n enforceOrder(startLoc, modifier, \"static\", \"override\");\n enforceOrder(startLoc, modifier, \"override\", \"readonly\");\n enforceOrder(startLoc, modifier, \"abstract\", \"override\");\n incompatible(startLoc, modifier, \"declare\", \"override\");\n incompatible(startLoc, modifier, \"static\", \"abstract\");\n }\n\n modified[modifier] = true;\n }\n\n if (disallowedModifiers != null && disallowedModifiers.includes(modifier)) {\n this.raise(errorTemplate, {\n at: startLoc,\n modifier\n });\n }\n }\n }\n\n tsIsListTerminator(kind) {\n switch (kind) {\n case \"EnumMembers\":\n case \"TypeMembers\":\n return this.match(8);\n\n case \"HeritageClauseElement\":\n return this.match(5);\n\n case \"TupleElementTypes\":\n return this.match(3);\n\n case \"TypeParametersOrArguments\":\n return this.match(48);\n }\n\n throw new Error(\"Unreachable\");\n }\n\n tsParseList(kind, parseElement) {\n const result = [];\n\n while (!this.tsIsListTerminator(kind)) {\n result.push(parseElement());\n }\n\n return result;\n }\n\n tsParseDelimitedList(kind, parseElement, refTrailingCommaPos) {\n return nonNull(this.tsParseDelimitedListWorker(kind, parseElement, true, refTrailingCommaPos));\n }\n\n tsParseDelimitedListWorker(kind, parseElement, expectSuccess, refTrailingCommaPos) {\n const result = [];\n let trailingCommaPos = -1;\n\n for (;;) {\n if (this.tsIsListTerminator(kind)) {\n break;\n }\n\n trailingCommaPos = -1;\n const element = parseElement();\n\n if (element == null) {\n return undefined;\n }\n\n result.push(element);\n\n if (this.eat(12)) {\n trailingCommaPos = this.state.lastTokStart;\n continue;\n }\n\n if (this.tsIsListTerminator(kind)) {\n break;\n }\n\n if (expectSuccess) {\n this.expect(12);\n }\n\n return undefined;\n }\n\n if (refTrailingCommaPos) {\n refTrailingCommaPos.value = trailingCommaPos;\n }\n\n return result;\n }\n\n tsParseBracketedList(kind, parseElement, bracket, skipFirstToken, refTrailingCommaPos) {\n if (!skipFirstToken) {\n if (bracket) {\n this.expect(0);\n } else {\n this.expect(47);\n }\n }\n\n const result = this.tsParseDelimitedList(kind, parseElement, refTrailingCommaPos);\n\n if (bracket) {\n this.expect(3);\n } else {\n this.expect(48);\n }\n\n return result;\n }\n\n tsParseImportType() {\n const node = this.startNode();\n this.expect(83);\n this.expect(10);\n\n if (!this.match(129)) {\n this.raise(TSErrors.UnsupportedImportTypeArgument, {\n at: this.state.startLoc\n });\n }\n\n node.argument = this.parseExprAtom();\n this.expect(11);\n\n if (this.eat(16)) {\n node.qualifier = this.tsParseEntityName();\n }\n\n if (this.match(47)) {\n node.typeParameters = this.tsParseTypeArguments();\n }\n\n return this.finishNode(node, \"TSImportType\");\n }\n\n tsParseEntityName(allowReservedWords = true) {\n let entity = this.parseIdentifier(allowReservedWords);\n\n while (this.eat(16)) {\n const node = this.startNodeAtNode(entity);\n node.left = entity;\n node.right = this.parseIdentifier(allowReservedWords);\n entity = this.finishNode(node, \"TSQualifiedName\");\n }\n\n return entity;\n }\n\n tsParseTypeReference() {\n const node = this.startNode();\n node.typeName = this.tsParseEntityName();\n\n if (!this.hasPrecedingLineBreak() && this.match(47)) {\n node.typeParameters = this.tsParseTypeArguments();\n }\n\n return this.finishNode(node, \"TSTypeReference\");\n }\n\n tsParseThisTypePredicate(lhs) {\n this.next();\n const node = this.startNodeAtNode(lhs);\n node.parameterName = lhs;\n node.typeAnnotation = this.tsParseTypeAnnotation(false);\n node.asserts = false;\n return this.finishNode(node, \"TSTypePredicate\");\n }\n\n tsParseThisTypeNode() {\n const node = this.startNode();\n this.next();\n return this.finishNode(node, \"TSThisType\");\n }\n\n tsParseTypeQuery() {\n const node = this.startNode();\n this.expect(87);\n\n if (this.match(83)) {\n node.exprName = this.tsParseImportType();\n } else {\n node.exprName = this.tsParseEntityName();\n }\n\n if (!this.hasPrecedingLineBreak() && this.match(47)) {\n node.typeParameters = this.tsParseTypeArguments();\n }\n\n return this.finishNode(node, \"TSTypeQuery\");\n }\n\n tsParseInOutModifiers(node) {\n this.tsParseModifiers({\n modified: node,\n allowedModifiers: [\"in\", \"out\"],\n disallowedModifiers: [\"public\", \"private\", \"protected\", \"readonly\", \"declare\", \"abstract\", \"override\"],\n errorTemplate: TSErrors.InvalidModifierOnTypeParameter\n });\n }\n\n tsParseNoneModifiers(node) {\n this.tsParseModifiers({\n modified: node,\n allowedModifiers: [],\n disallowedModifiers: [\"in\", \"out\"],\n errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions\n });\n }\n\n tsParseTypeParameter(parseModifiers = this.tsParseNoneModifiers.bind(this)) {\n const node = this.startNode();\n parseModifiers(node);\n node.name = this.tsParseTypeParameterName();\n node.constraint = this.tsEatThenParseType(81);\n node.default = this.tsEatThenParseType(29);\n return this.finishNode(node, \"TSTypeParameter\");\n }\n\n tsTryParseTypeParameters(parseModifiers) {\n if (this.match(47)) {\n return this.tsParseTypeParameters(parseModifiers);\n }\n }\n\n tsParseTypeParameters(parseModifiers) {\n const node = this.startNode();\n\n if (this.match(47) || this.match(138)) {\n this.next();\n } else {\n this.unexpected();\n }\n\n const refTrailingCommaPos = {\n value: -1\n };\n node.params = this.tsParseBracketedList(\"TypeParametersOrArguments\", this.tsParseTypeParameter.bind(this, parseModifiers), false, true, refTrailingCommaPos);\n\n if (node.params.length === 0) {\n this.raise(TSErrors.EmptyTypeParameters, {\n at: node\n });\n }\n\n if (refTrailingCommaPos.value !== -1) {\n this.addExtra(node, \"trailingComma\", refTrailingCommaPos.value);\n }\n\n return this.finishNode(node, \"TSTypeParameterDeclaration\");\n }\n\n tsTryNextParseConstantContext() {\n if (this.lookahead().type !== 75) return null;\n this.next();\n const typeReference = this.tsParseTypeReference();\n\n if (typeReference.typeParameters) {\n this.raise(TSErrors.CannotFindName, {\n at: typeReference.typeName,\n name: \"const\"\n });\n }\n\n return typeReference;\n }\n\n tsFillSignature(returnToken, signature) {\n const returnTokenRequired = returnToken === 19;\n const paramsKey = \"parameters\";\n const returnTypeKey = \"typeAnnotation\";\n signature.typeParameters = this.tsTryParseTypeParameters();\n this.expect(10);\n signature[paramsKey] = this.tsParseBindingListForSignature();\n\n if (returnTokenRequired) {\n signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken);\n } else if (this.match(returnToken)) {\n signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken);\n }\n }\n\n tsParseBindingListForSignature() {\n return this.parseBindingList(11, 41).map(pattern => {\n if (pattern.type !== \"Identifier\" && pattern.type !== \"RestElement\" && pattern.type !== \"ObjectPattern\" && pattern.type !== \"ArrayPattern\") {\n this.raise(TSErrors.UnsupportedSignatureParameterKind, {\n at: pattern,\n type: pattern.type\n });\n }\n\n return pattern;\n });\n }\n\n tsParseTypeMemberSemicolon() {\n if (!this.eat(12) && !this.isLineTerminator()) {\n this.expect(13);\n }\n }\n\n tsParseSignatureMember(kind, node) {\n this.tsFillSignature(14, node);\n this.tsParseTypeMemberSemicolon();\n return this.finishNode(node, kind);\n }\n\n tsIsUnambiguouslyIndexSignature() {\n this.next();\n\n if (tokenIsIdentifier(this.state.type)) {\n this.next();\n return this.match(14);\n }\n\n return false;\n }\n\n tsTryParseIndexSignature(node) {\n if (!(this.match(0) && this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this)))) {\n return undefined;\n }\n\n this.expect(0);\n const id = this.parseIdentifier();\n id.typeAnnotation = this.tsParseTypeAnnotation();\n this.resetEndLocation(id);\n this.expect(3);\n node.parameters = [id];\n const type = this.tsTryParseTypeAnnotation();\n if (type) node.typeAnnotation = type;\n this.tsParseTypeMemberSemicolon();\n return this.finishNode(node, \"TSIndexSignature\");\n }\n\n tsParsePropertyOrMethodSignature(node, readonly) {\n if (this.eat(17)) node.optional = true;\n const nodeAny = node;\n\n if (this.match(10) || this.match(47)) {\n if (readonly) {\n this.raise(TSErrors.ReadonlyForMethodSignature, {\n at: node\n });\n }\n\n const method = nodeAny;\n\n if (method.kind && this.match(47)) {\n this.raise(TSErrors.AccesorCannotHaveTypeParameters, {\n at: this.state.curPosition()\n });\n }\n\n this.tsFillSignature(14, method);\n this.tsParseTypeMemberSemicolon();\n const paramsKey = \"parameters\";\n const returnTypeKey = \"typeAnnotation\";\n\n if (method.kind === \"get\") {\n if (method[paramsKey].length > 0) {\n this.raise(Errors.BadGetterArity, {\n at: this.state.curPosition()\n });\n\n if (this.isThisParam(method[paramsKey][0])) {\n this.raise(TSErrors.AccesorCannotDeclareThisParameter, {\n at: this.state.curPosition()\n });\n }\n }\n } else if (method.kind === \"set\") {\n if (method[paramsKey].length !== 1) {\n this.raise(Errors.BadSetterArity, {\n at: this.state.curPosition()\n });\n } else {\n const firstParameter = method[paramsKey][0];\n\n if (this.isThisParam(firstParameter)) {\n this.raise(TSErrors.AccesorCannotDeclareThisParameter, {\n at: this.state.curPosition()\n });\n }\n\n if (firstParameter.type === \"Identifier\" && firstParameter.optional) {\n this.raise(TSErrors.SetAccesorCannotHaveOptionalParameter, {\n at: this.state.curPosition()\n });\n }\n\n if (firstParameter.type === \"RestElement\") {\n this.raise(TSErrors.SetAccesorCannotHaveRestParameter, {\n at: this.state.curPosition()\n });\n }\n }\n\n if (method[returnTypeKey]) {\n this.raise(TSErrors.SetAccesorCannotHaveReturnType, {\n at: method[returnTypeKey]\n });\n }\n } else {\n method.kind = \"method\";\n }\n\n return this.finishNode(method, \"TSMethodSignature\");\n } else {\n const property = nodeAny;\n if (readonly) property.readonly = true;\n const type = this.tsTryParseTypeAnnotation();\n if (type) property.typeAnnotation = type;\n this.tsParseTypeMemberSemicolon();\n return this.finishNode(property, \"TSPropertySignature\");\n }\n }\n\n tsParseTypeMember() {\n const node = this.startNode();\n\n if (this.match(10) || this.match(47)) {\n return this.tsParseSignatureMember(\"TSCallSignatureDeclaration\", node);\n }\n\n if (this.match(77)) {\n const id = this.startNode();\n this.next();\n\n if (this.match(10) || this.match(47)) {\n return this.tsParseSignatureMember(\"TSConstructSignatureDeclaration\", node);\n } else {\n node.key = this.createIdentifier(id, \"new\");\n return this.tsParsePropertyOrMethodSignature(node, false);\n }\n }\n\n this.tsParseModifiers({\n modified: node,\n allowedModifiers: [\"readonly\"],\n disallowedModifiers: [\"declare\", \"abstract\", \"private\", \"protected\", \"public\", \"static\", \"override\"]\n });\n const idx = this.tsTryParseIndexSignature(node);\n\n if (idx) {\n return idx;\n }\n\n this.parsePropertyName(node);\n\n if (!node.computed && node.key.type === \"Identifier\" && (node.key.name === \"get\" || node.key.name === \"set\") && this.tsTokenCanFollowModifier()) {\n node.kind = node.key.name;\n this.parsePropertyName(node);\n }\n\n return this.tsParsePropertyOrMethodSignature(node, !!node.readonly);\n }\n\n tsParseTypeLiteral() {\n const node = this.startNode();\n node.members = this.tsParseObjectTypeMembers();\n return this.finishNode(node, \"TSTypeLiteral\");\n }\n\n tsParseObjectTypeMembers() {\n this.expect(5);\n const members = this.tsParseList(\"TypeMembers\", this.tsParseTypeMember.bind(this));\n this.expect(8);\n return members;\n }\n\n tsIsStartOfMappedType() {\n this.next();\n\n if (this.eat(53)) {\n return this.isContextual(118);\n }\n\n if (this.isContextual(118)) {\n this.next();\n }\n\n if (!this.match(0)) {\n return false;\n }\n\n this.next();\n\n if (!this.tsIsIdentifier()) {\n return false;\n }\n\n this.next();\n return this.match(58);\n }\n\n tsParseMappedTypeParameter() {\n const node = this.startNode();\n node.name = this.tsParseTypeParameterName();\n node.constraint = this.tsExpectThenParseType(58);\n return this.finishNode(node, \"TSTypeParameter\");\n }\n\n tsParseMappedType() {\n const node = this.startNode();\n this.expect(5);\n\n if (this.match(53)) {\n node.readonly = this.state.value;\n this.next();\n this.expectContextual(118);\n } else if (this.eatContextual(118)) {\n node.readonly = true;\n }\n\n this.expect(0);\n node.typeParameter = this.tsParseMappedTypeParameter();\n node.nameType = this.eatContextual(93) ? this.tsParseType() : null;\n this.expect(3);\n\n if (this.match(53)) {\n node.optional = this.state.value;\n this.next();\n this.expect(17);\n } else if (this.eat(17)) {\n node.optional = true;\n }\n\n node.typeAnnotation = this.tsTryParseType();\n this.semicolon();\n this.expect(8);\n return this.finishNode(node, \"TSMappedType\");\n }\n\n tsParseTupleType() {\n const node = this.startNode();\n node.elementTypes = this.tsParseBracketedList(\"TupleElementTypes\", this.tsParseTupleElementType.bind(this), true, false);\n let seenOptionalElement = false;\n let labeledElements = null;\n node.elementTypes.forEach(elementNode => {\n var _labeledElements;\n\n let {\n type\n } = elementNode;\n\n if (seenOptionalElement && type !== \"TSRestType\" && type !== \"TSOptionalType\" && !(type === \"TSNamedTupleMember\" && elementNode.optional)) {\n this.raise(TSErrors.OptionalTypeBeforeRequired, {\n at: elementNode\n });\n }\n\n seenOptionalElement = seenOptionalElement || type === \"TSNamedTupleMember\" && elementNode.optional || type === \"TSOptionalType\";\n\n if (type === \"TSRestType\") {\n elementNode = elementNode.typeAnnotation;\n type = elementNode.type;\n }\n\n const isLabeled = type === \"TSNamedTupleMember\";\n labeledElements = (_labeledElements = labeledElements) != null ? _labeledElements : isLabeled;\n\n if (labeledElements !== isLabeled) {\n this.raise(TSErrors.MixedLabeledAndUnlabeledElements, {\n at: elementNode\n });\n }\n });\n return this.finishNode(node, \"TSTupleType\");\n }\n\n tsParseTupleElementType() {\n const {\n start: startPos,\n startLoc\n } = this.state;\n const rest = this.eat(21);\n let type = this.tsParseType();\n const optional = this.eat(17);\n const labeled = this.eat(14);\n\n if (labeled) {\n const labeledNode = this.startNodeAtNode(type);\n labeledNode.optional = optional;\n\n if (type.type === \"TSTypeReference\" && !type.typeParameters && type.typeName.type === \"Identifier\") {\n labeledNode.label = type.typeName;\n } else {\n this.raise(TSErrors.InvalidTupleMemberLabel, {\n at: type\n });\n labeledNode.label = type;\n }\n\n labeledNode.elementType = this.tsParseType();\n type = this.finishNode(labeledNode, \"TSNamedTupleMember\");\n } else if (optional) {\n const optionalTypeNode = this.startNodeAtNode(type);\n optionalTypeNode.typeAnnotation = type;\n type = this.finishNode(optionalTypeNode, \"TSOptionalType\");\n }\n\n if (rest) {\n const restNode = this.startNodeAt(startPos, startLoc);\n restNode.typeAnnotation = type;\n type = this.finishNode(restNode, \"TSRestType\");\n }\n\n return type;\n }\n\n tsParseParenthesizedType() {\n const node = this.startNode();\n this.expect(10);\n node.typeAnnotation = this.tsParseType();\n this.expect(11);\n return this.finishNode(node, \"TSParenthesizedType\");\n }\n\n tsParseFunctionOrConstructorType(type, abstract) {\n const node = this.startNode();\n\n if (type === \"TSConstructorType\") {\n node.abstract = !!abstract;\n if (abstract) this.next();\n this.next();\n }\n\n this.tsInAllowConditionalTypesContext(() => this.tsFillSignature(19, node));\n return this.finishNode(node, type);\n }\n\n tsParseLiteralTypeNode() {\n const node = this.startNode();\n\n node.literal = (() => {\n switch (this.state.type) {\n case 130:\n case 131:\n case 129:\n case 85:\n case 86:\n return this.parseExprAtom();\n\n default:\n throw this.unexpected();\n }\n })();\n\n return this.finishNode(node, \"TSLiteralType\");\n }\n\n tsParseTemplateLiteralType() {\n const node = this.startNode();\n node.literal = this.parseTemplate(false);\n return this.finishNode(node, \"TSLiteralType\");\n }\n\n parseTemplateSubstitution() {\n if (this.state.inType) return this.tsParseType();\n return super.parseTemplateSubstitution();\n }\n\n tsParseThisTypeOrThisTypePredicate() {\n const thisKeyword = this.tsParseThisTypeNode();\n\n if (this.isContextual(113) && !this.hasPrecedingLineBreak()) {\n return this.tsParseThisTypePredicate(thisKeyword);\n } else {\n return thisKeyword;\n }\n }\n\n tsParseNonArrayType() {\n switch (this.state.type) {\n case 129:\n case 130:\n case 131:\n case 85:\n case 86:\n return this.tsParseLiteralTypeNode();\n\n case 53:\n if (this.state.value === \"-\") {\n const node = this.startNode();\n const nextToken = this.lookahead();\n\n if (nextToken.type !== 130 && nextToken.type !== 131) {\n throw this.unexpected();\n }\n\n node.literal = this.parseMaybeUnary();\n return this.finishNode(node, \"TSLiteralType\");\n }\n\n break;\n\n case 78:\n return this.tsParseThisTypeOrThisTypePredicate();\n\n case 87:\n return this.tsParseTypeQuery();\n\n case 83:\n return this.tsParseImportType();\n\n case 5:\n return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this)) ? this.tsParseMappedType() : this.tsParseTypeLiteral();\n\n case 0:\n return this.tsParseTupleType();\n\n case 10:\n return this.tsParseParenthesizedType();\n\n case 25:\n case 24:\n return this.tsParseTemplateLiteralType();\n\n default:\n {\n const {\n type\n } = this.state;\n\n if (tokenIsIdentifier(type) || type === 88 || type === 84) {\n const nodeType = type === 88 ? \"TSVoidKeyword\" : type === 84 ? \"TSNullKeyword\" : keywordTypeFromName(this.state.value);\n\n if (nodeType !== undefined && this.lookaheadCharCode() !== 46) {\n const node = this.startNode();\n this.next();\n return this.finishNode(node, nodeType);\n }\n\n return this.tsParseTypeReference();\n }\n }\n }\n\n throw this.unexpected();\n }\n\n tsParseArrayTypeOrHigher() {\n let type = this.tsParseNonArrayType();\n\n while (!this.hasPrecedingLineBreak() && this.eat(0)) {\n if (this.match(3)) {\n const node = this.startNodeAtNode(type);\n node.elementType = type;\n this.expect(3);\n type = this.finishNode(node, \"TSArrayType\");\n } else {\n const node = this.startNodeAtNode(type);\n node.objectType = type;\n node.indexType = this.tsParseType();\n this.expect(3);\n type = this.finishNode(node, \"TSIndexedAccessType\");\n }\n }\n\n return type;\n }\n\n tsParseTypeOperator() {\n const node = this.startNode();\n const operator = this.state.value;\n this.next();\n node.operator = operator;\n node.typeAnnotation = this.tsParseTypeOperatorOrHigher();\n\n if (operator === \"readonly\") {\n this.tsCheckTypeAnnotationForReadOnly(node);\n }\n\n return this.finishNode(node, \"TSTypeOperator\");\n }\n\n tsCheckTypeAnnotationForReadOnly(node) {\n switch (node.typeAnnotation.type) {\n case \"TSTupleType\":\n case \"TSArrayType\":\n return;\n\n default:\n this.raise(TSErrors.UnexpectedReadonly, {\n at: node\n });\n }\n }\n\n tsParseInferType() {\n const node = this.startNode();\n this.expectContextual(112);\n const typeParameter = this.startNode();\n typeParameter.name = this.tsParseTypeParameterName();\n typeParameter.constraint = this.tsTryParse(() => this.tsParseConstraintForInferType());\n node.typeParameter = this.finishNode(typeParameter, \"TSTypeParameter\");\n return this.finishNode(node, \"TSInferType\");\n }\n\n tsParseConstraintForInferType() {\n if (this.eat(81)) {\n const constraint = this.tsInDisallowConditionalTypesContext(() => this.tsParseType());\n\n if (this.state.inDisallowConditionalTypesContext || !this.match(17)) {\n return constraint;\n }\n }\n }\n\n tsParseTypeOperatorOrHigher() {\n const isTypeOperator = tokenIsTSTypeOperator(this.state.type) && !this.state.containsEsc;\n return isTypeOperator ? this.tsParseTypeOperator() : this.isContextual(112) ? this.tsParseInferType() : this.tsInAllowConditionalTypesContext(() => this.tsParseArrayTypeOrHigher());\n }\n\n tsParseUnionOrIntersectionType(kind, parseConstituentType, operator) {\n const node = this.startNode();\n const hasLeadingOperator = this.eat(operator);\n const types = [];\n\n do {\n types.push(parseConstituentType());\n } while (this.eat(operator));\n\n if (types.length === 1 && !hasLeadingOperator) {\n return types[0];\n }\n\n node.types = types;\n return this.finishNode(node, kind);\n }\n\n tsParseIntersectionTypeOrHigher() {\n return this.tsParseUnionOrIntersectionType(\"TSIntersectionType\", this.tsParseTypeOperatorOrHigher.bind(this), 45);\n }\n\n tsParseUnionTypeOrHigher() {\n return this.tsParseUnionOrIntersectionType(\"TSUnionType\", this.tsParseIntersectionTypeOrHigher.bind(this), 43);\n }\n\n tsIsStartOfFunctionType() {\n if (this.match(47)) {\n return true;\n }\n\n return this.match(10) && this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this));\n }\n\n tsSkipParameterStart() {\n if (tokenIsIdentifier(this.state.type) || this.match(78)) {\n this.next();\n return true;\n }\n\n if (this.match(5)) {\n const {\n errors\n } = this.state;\n const previousErrorCount = errors.length;\n\n try {\n this.parseObjectLike(8, true);\n return errors.length === previousErrorCount;\n } catch (_unused) {\n return false;\n }\n }\n\n if (this.match(0)) {\n this.next();\n const {\n errors\n } = this.state;\n const previousErrorCount = errors.length;\n\n try {\n this.parseBindingList(3, 93, true);\n return errors.length === previousErrorCount;\n } catch (_unused2) {\n return false;\n }\n }\n\n return false;\n }\n\n tsIsUnambiguouslyStartOfFunctionType() {\n this.next();\n\n if (this.match(11) || this.match(21)) {\n return true;\n }\n\n if (this.tsSkipParameterStart()) {\n if (this.match(14) || this.match(12) || this.match(17) || this.match(29)) {\n return true;\n }\n\n if (this.match(11)) {\n this.next();\n\n if (this.match(19)) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n tsParseTypeOrTypePredicateAnnotation(returnToken) {\n return this.tsInType(() => {\n const t = this.startNode();\n this.expect(returnToken);\n const node = this.startNode();\n const asserts = !!this.tsTryParse(this.tsParseTypePredicateAsserts.bind(this));\n\n if (asserts && this.match(78)) {\n let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate();\n\n if (thisTypePredicate.type === \"TSThisType\") {\n node.parameterName = thisTypePredicate;\n node.asserts = true;\n node.typeAnnotation = null;\n thisTypePredicate = this.finishNode(node, \"TSTypePredicate\");\n } else {\n this.resetStartLocationFromNode(thisTypePredicate, node);\n thisTypePredicate.asserts = true;\n }\n\n t.typeAnnotation = thisTypePredicate;\n return this.finishNode(t, \"TSTypeAnnotation\");\n }\n\n const typePredicateVariable = this.tsIsIdentifier() && this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this));\n\n if (!typePredicateVariable) {\n if (!asserts) {\n return this.tsParseTypeAnnotation(false, t);\n }\n\n node.parameterName = this.parseIdentifier();\n node.asserts = asserts;\n node.typeAnnotation = null;\n t.typeAnnotation = this.finishNode(node, \"TSTypePredicate\");\n return this.finishNode(t, \"TSTypeAnnotation\");\n }\n\n const type = this.tsParseTypeAnnotation(false);\n node.parameterName = typePredicateVariable;\n node.typeAnnotation = type;\n node.asserts = asserts;\n t.typeAnnotation = this.finishNode(node, \"TSTypePredicate\");\n return this.finishNode(t, \"TSTypeAnnotation\");\n });\n }\n\n tsTryParseTypeOrTypePredicateAnnotation() {\n return this.match(14) ? this.tsParseTypeOrTypePredicateAnnotation(14) : undefined;\n }\n\n tsTryParseTypeAnnotation() {\n return this.match(14) ? this.tsParseTypeAnnotation() : undefined;\n }\n\n tsTryParseType() {\n return this.tsEatThenParseType(14);\n }\n\n tsParseTypePredicatePrefix() {\n const id = this.parseIdentifier();\n\n if (this.isContextual(113) && !this.hasPrecedingLineBreak()) {\n this.next();\n return id;\n }\n }\n\n tsParseTypePredicateAsserts() {\n if (this.state.type !== 106) {\n return false;\n }\n\n const containsEsc = this.state.containsEsc;\n this.next();\n\n if (!tokenIsIdentifier(this.state.type) && !this.match(78)) {\n return false;\n }\n\n if (containsEsc) {\n this.raise(Errors.InvalidEscapedReservedWord, {\n at: this.state.lastTokStartLoc,\n reservedWord: \"asserts\"\n });\n }\n\n return true;\n }\n\n tsParseTypeAnnotation(eatColon = true, t = this.startNode()) {\n this.tsInType(() => {\n if (eatColon) this.expect(14);\n t.typeAnnotation = this.tsParseType();\n });\n return this.finishNode(t, \"TSTypeAnnotation\");\n }\n\n tsParseType() {\n assert(this.state.inType);\n const type = this.tsParseNonConditionalType();\n\n if (this.state.inDisallowConditionalTypesContext || this.hasPrecedingLineBreak() || !this.eat(81)) {\n return type;\n }\n\n const node = this.startNodeAtNode(type);\n node.checkType = type;\n node.extendsType = this.tsInDisallowConditionalTypesContext(() => this.tsParseNonConditionalType());\n this.expect(17);\n node.trueType = this.tsInAllowConditionalTypesContext(() => this.tsParseType());\n this.expect(14);\n node.falseType = this.tsInAllowConditionalTypesContext(() => this.tsParseType());\n return this.finishNode(node, \"TSConditionalType\");\n }\n\n isAbstractConstructorSignature() {\n return this.isContextual(120) && this.lookahead().type === 77;\n }\n\n tsParseNonConditionalType() {\n if (this.tsIsStartOfFunctionType()) {\n return this.tsParseFunctionOrConstructorType(\"TSFunctionType\");\n }\n\n if (this.match(77)) {\n return this.tsParseFunctionOrConstructorType(\"TSConstructorType\");\n } else if (this.isAbstractConstructorSignature()) {\n return this.tsParseFunctionOrConstructorType(\"TSConstructorType\", true);\n }\n\n return this.tsParseUnionTypeOrHigher();\n }\n\n tsParseTypeAssertion() {\n if (this.getPluginOption(\"typescript\", \"disallowAmbiguousJSXLike\")) {\n this.raise(TSErrors.ReservedTypeAssertion, {\n at: this.state.startLoc\n });\n }\n\n const node = this.startNode();\n\n const _const = this.tsTryNextParseConstantContext();\n\n node.typeAnnotation = _const || this.tsNextThenParseType();\n this.expect(48);\n node.expression = this.parseMaybeUnary();\n return this.finishNode(node, \"TSTypeAssertion\");\n }\n\n tsParseHeritageClause(token) {\n const originalStartLoc = this.state.startLoc;\n const delimitedList = this.tsParseDelimitedList(\"HeritageClauseElement\", () => {\n const node = this.startNode();\n node.expression = this.tsParseEntityName();\n\n if (this.match(47)) {\n node.typeParameters = this.tsParseTypeArguments();\n }\n\n return this.finishNode(node, \"TSExpressionWithTypeArguments\");\n });\n\n if (!delimitedList.length) {\n this.raise(TSErrors.EmptyHeritageClauseType, {\n at: originalStartLoc,\n token\n });\n }\n\n return delimitedList;\n }\n\n tsParseInterfaceDeclaration(node, properties = {}) {\n if (this.hasFollowingLineBreak()) return null;\n this.expectContextual(125);\n if (properties.declare) node.declare = true;\n\n if (tokenIsIdentifier(this.state.type)) {\n node.id = this.parseIdentifier();\n this.checkIdentifier(node.id, BIND_TS_INTERFACE);\n } else {\n node.id = null;\n this.raise(TSErrors.MissingInterfaceName, {\n at: this.state.startLoc\n });\n }\n\n node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutModifiers.bind(this));\n\n if (this.eat(81)) {\n node.extends = this.tsParseHeritageClause(\"extends\");\n }\n\n const body = this.startNode();\n body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this));\n node.body = this.finishNode(body, \"TSInterfaceBody\");\n return this.finishNode(node, \"TSInterfaceDeclaration\");\n }\n\n tsParseTypeAliasDeclaration(node) {\n node.id = this.parseIdentifier();\n this.checkIdentifier(node.id, BIND_TS_TYPE);\n node.typeAnnotation = this.tsInType(() => {\n node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutModifiers.bind(this));\n this.expect(29);\n\n if (this.isContextual(111) && this.lookahead().type !== 16) {\n const node = this.startNode();\n this.next();\n return this.finishNode(node, \"TSIntrinsicKeyword\");\n }\n\n return this.tsParseType();\n });\n this.semicolon();\n return this.finishNode(node, \"TSTypeAliasDeclaration\");\n }\n\n tsInNoContext(cb) {\n const oldContext = this.state.context;\n this.state.context = [oldContext[0]];\n\n try {\n return cb();\n } finally {\n this.state.context = oldContext;\n }\n }\n\n tsInType(cb) {\n const oldInType = this.state.inType;\n this.state.inType = true;\n\n try {\n return cb();\n } finally {\n this.state.inType = oldInType;\n }\n }\n\n tsInDisallowConditionalTypesContext(cb) {\n const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext;\n this.state.inDisallowConditionalTypesContext = true;\n\n try {\n return cb();\n } finally {\n this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext;\n }\n }\n\n tsInAllowConditionalTypesContext(cb) {\n const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext;\n this.state.inDisallowConditionalTypesContext = false;\n\n try {\n return cb();\n } finally {\n this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext;\n }\n }\n\n tsEatThenParseType(token) {\n return !this.match(token) ? undefined : this.tsNextThenParseType();\n }\n\n tsExpectThenParseType(token) {\n return this.tsDoThenParseType(() => this.expect(token));\n }\n\n tsNextThenParseType() {\n return this.tsDoThenParseType(() => this.next());\n }\n\n tsDoThenParseType(cb) {\n return this.tsInType(() => {\n cb();\n return this.tsParseType();\n });\n }\n\n tsParseEnumMember() {\n const node = this.startNode();\n node.id = this.match(129) ? this.parseExprAtom() : this.parseIdentifier(true);\n\n if (this.eat(29)) {\n node.initializer = this.parseMaybeAssignAllowIn();\n }\n\n return this.finishNode(node, \"TSEnumMember\");\n }\n\n tsParseEnumDeclaration(node, properties = {}) {\n if (properties.const) node.const = true;\n if (properties.declare) node.declare = true;\n this.expectContextual(122);\n node.id = this.parseIdentifier();\n this.checkIdentifier(node.id, node.const ? BIND_TS_CONST_ENUM : BIND_TS_ENUM);\n this.expect(5);\n node.members = this.tsParseDelimitedList(\"EnumMembers\", this.tsParseEnumMember.bind(this));\n this.expect(8);\n return this.finishNode(node, \"TSEnumDeclaration\");\n }\n\n tsParseModuleBlock() {\n const node = this.startNode();\n this.scope.enter(SCOPE_OTHER);\n this.expect(5);\n this.parseBlockOrModuleBlockBody(node.body = [], undefined, true, 8);\n this.scope.exit();\n return this.finishNode(node, \"TSModuleBlock\");\n }\n\n tsParseModuleOrNamespaceDeclaration(node, nested = false) {\n node.id = this.parseIdentifier();\n\n if (!nested) {\n this.checkIdentifier(node.id, BIND_TS_NAMESPACE);\n }\n\n if (this.eat(16)) {\n const inner = this.startNode();\n this.tsParseModuleOrNamespaceDeclaration(inner, true);\n node.body = inner;\n } else {\n this.scope.enter(SCOPE_TS_MODULE);\n this.prodParam.enter(PARAM);\n node.body = this.tsParseModuleBlock();\n this.prodParam.exit();\n this.scope.exit();\n }\n\n return this.finishNode(node, \"TSModuleDeclaration\");\n }\n\n tsParseAmbientExternalModuleDeclaration(node) {\n if (this.isContextual(109)) {\n node.global = true;\n node.id = this.parseIdentifier();\n } else if (this.match(129)) {\n node.id = this.parseExprAtom();\n } else {\n this.unexpected();\n }\n\n if (this.match(5)) {\n this.scope.enter(SCOPE_TS_MODULE);\n this.prodParam.enter(PARAM);\n node.body = this.tsParseModuleBlock();\n this.prodParam.exit();\n this.scope.exit();\n } else {\n this.semicolon();\n }\n\n return this.finishNode(node, \"TSModuleDeclaration\");\n }\n\n tsParseImportEqualsDeclaration(node, isExport) {\n node.isExport = isExport || false;\n node.id = this.parseIdentifier();\n this.checkIdentifier(node.id, BIND_LEXICAL);\n this.expect(29);\n const moduleReference = this.tsParseModuleReference();\n\n if (node.importKind === \"type\" && moduleReference.type !== \"TSExternalModuleReference\") {\n this.raise(TSErrors.ImportAliasHasImportType, {\n at: moduleReference\n });\n }\n\n node.moduleReference = moduleReference;\n this.semicolon();\n return this.finishNode(node, \"TSImportEqualsDeclaration\");\n }\n\n tsIsExternalModuleReference() {\n return this.isContextual(116) && this.lookaheadCharCode() === 40;\n }\n\n tsParseModuleReference() {\n return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(false);\n }\n\n tsParseExternalModuleReference() {\n const node = this.startNode();\n this.expectContextual(116);\n this.expect(10);\n\n if (!this.match(129)) {\n throw this.unexpected();\n }\n\n node.expression = this.parseExprAtom();\n this.expect(11);\n return this.finishNode(node, \"TSExternalModuleReference\");\n }\n\n tsLookAhead(f) {\n const state = this.state.clone();\n const res = f();\n this.state = state;\n return res;\n }\n\n tsTryParseAndCatch(f) {\n const result = this.tryParse(abort => f() || abort());\n if (result.aborted || !result.node) return undefined;\n if (result.error) this.state = result.failState;\n return result.node;\n }\n\n tsTryParse(f) {\n const state = this.state.clone();\n const result = f();\n\n if (result !== undefined && result !== false) {\n return result;\n } else {\n this.state = state;\n return undefined;\n }\n }\n\n tsTryParseDeclare(nany) {\n if (this.isLineTerminator()) {\n return;\n }\n\n let starttype = this.state.type;\n let kind;\n\n if (this.isContextual(99)) {\n starttype = 74;\n kind = \"let\";\n }\n\n return this.tsInAmbientContext(() => {\n if (starttype === 68) {\n nany.declare = true;\n return this.parseFunctionStatement(nany, false, true);\n }\n\n if (starttype === 80) {\n nany.declare = true;\n return this.parseClass(nany, true, false);\n }\n\n if (starttype === 122) {\n return this.tsParseEnumDeclaration(nany, {\n declare: true\n });\n }\n\n if (starttype === 109) {\n return this.tsParseAmbientExternalModuleDeclaration(nany);\n }\n\n if (starttype === 75 || starttype === 74) {\n if (!this.match(75) || !this.isLookaheadContextual(\"enum\")) {\n nany.declare = true;\n return this.parseVarStatement(nany, kind || this.state.value, true);\n }\n\n this.expect(75);\n return this.tsParseEnumDeclaration(nany, {\n const: true,\n declare: true\n });\n }\n\n if (starttype === 125) {\n const result = this.tsParseInterfaceDeclaration(nany, {\n declare: true\n });\n if (result) return result;\n }\n\n if (tokenIsIdentifier(starttype)) {\n return this.tsParseDeclaration(nany, this.state.value, true);\n }\n });\n }\n\n tsTryParseExportDeclaration() {\n return this.tsParseDeclaration(this.startNode(), this.state.value, true);\n }\n\n tsParseExpressionStatement(node, expr) {\n switch (expr.name) {\n case \"declare\":\n {\n const declaration = this.tsTryParseDeclare(node);\n\n if (declaration) {\n declaration.declare = true;\n return declaration;\n }\n\n break;\n }\n\n case \"global\":\n if (this.match(5)) {\n this.scope.enter(SCOPE_TS_MODULE);\n this.prodParam.enter(PARAM);\n const mod = node;\n mod.global = true;\n mod.id = expr;\n mod.body = this.tsParseModuleBlock();\n this.scope.exit();\n this.prodParam.exit();\n return this.finishNode(mod, \"TSModuleDeclaration\");\n }\n\n break;\n\n default:\n return this.tsParseDeclaration(node, expr.name, false);\n }\n }\n\n tsParseDeclaration(node, value, next) {\n switch (value) {\n case \"abstract\":\n if (this.tsCheckLineTerminator(next) && (this.match(80) || tokenIsIdentifier(this.state.type))) {\n return this.tsParseAbstractDeclaration(node);\n }\n\n break;\n\n case \"module\":\n if (this.tsCheckLineTerminator(next)) {\n if (this.match(129)) {\n return this.tsParseAmbientExternalModuleDeclaration(node);\n } else if (tokenIsIdentifier(this.state.type)) {\n return this.tsParseModuleOrNamespaceDeclaration(node);\n }\n }\n\n break;\n\n case \"namespace\":\n if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) {\n return this.tsParseModuleOrNamespaceDeclaration(node);\n }\n\n break;\n\n case \"type\":\n if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) {\n return this.tsParseTypeAliasDeclaration(node);\n }\n\n break;\n }\n }\n\n tsCheckLineTerminator(next) {\n if (next) {\n if (this.hasFollowingLineBreak()) return false;\n this.next();\n return true;\n }\n\n return !this.isLineTerminator();\n }\n\n tsTryParseGenericAsyncArrowFunction(startPos, startLoc) {\n if (!this.match(47)) {\n return undefined;\n }\n\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n this.state.maybeInArrowParameters = true;\n const res = this.tsTryParseAndCatch(() => {\n const node = this.startNodeAt(startPos, startLoc);\n node.typeParameters = this.tsParseTypeParameters();\n super.parseFunctionParams(node);\n node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation();\n this.expect(19);\n return node;\n });\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n\n if (!res) {\n return undefined;\n }\n\n return this.parseArrowExpression(res, null, true);\n }\n\n tsParseTypeArgumentsInExpression() {\n if (this.reScan_lt() !== 47) {\n return undefined;\n }\n\n return this.tsParseTypeArguments();\n }\n\n tsParseTypeArguments() {\n const node = this.startNode();\n node.params = this.tsInType(() => this.tsInNoContext(() => {\n this.expect(47);\n return this.tsParseDelimitedList(\"TypeParametersOrArguments\", this.tsParseType.bind(this));\n }));\n\n if (node.params.length === 0) {\n this.raise(TSErrors.EmptyTypeArguments, {\n at: node\n });\n }\n\n this.expect(48);\n return this.finishNode(node, \"TSTypeParameterInstantiation\");\n }\n\n tsIsDeclarationStart() {\n return tokenIsTSDeclarationStart(this.state.type);\n }\n\n isExportDefaultSpecifier() {\n if (this.tsIsDeclarationStart()) return false;\n return super.isExportDefaultSpecifier();\n }\n\n parseAssignableListItem(allowModifiers, decorators) {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n let accessibility;\n let readonly = false;\n let override = false;\n\n if (allowModifiers !== undefined) {\n const modified = {};\n this.tsParseModifiers({\n modified,\n allowedModifiers: [\"public\", \"private\", \"protected\", \"override\", \"readonly\"]\n });\n accessibility = modified.accessibility;\n override = modified.override;\n readonly = modified.readonly;\n\n if (allowModifiers === false && (accessibility || readonly || override)) {\n this.raise(TSErrors.UnexpectedParameterModifier, {\n at: startLoc\n });\n }\n }\n\n const left = this.parseMaybeDefault();\n this.parseAssignableListItemTypes(left);\n const elt = this.parseMaybeDefault(left.start, left.loc.start, left);\n\n if (accessibility || readonly || override) {\n const pp = this.startNodeAt(startPos, startLoc);\n\n if (decorators.length) {\n pp.decorators = decorators;\n }\n\n if (accessibility) pp.accessibility = accessibility;\n if (readonly) pp.readonly = readonly;\n if (override) pp.override = override;\n\n if (elt.type !== \"Identifier\" && elt.type !== \"AssignmentPattern\") {\n this.raise(TSErrors.UnsupportedParameterPropertyKind, {\n at: pp\n });\n }\n\n pp.parameter = elt;\n return this.finishNode(pp, \"TSParameterProperty\");\n }\n\n if (decorators.length) {\n left.decorators = decorators;\n }\n\n return elt;\n }\n\n isSimpleParameter(node) {\n return node.type === \"TSParameterProperty\" && super.isSimpleParameter(node.parameter) || super.isSimpleParameter(node);\n }\n\n parseFunctionBodyAndFinish(node, type, isMethod = false) {\n if (this.match(14)) {\n node.returnType = this.tsParseTypeOrTypePredicateAnnotation(14);\n }\n\n const bodilessType = type === \"FunctionDeclaration\" ? \"TSDeclareFunction\" : type === \"ClassMethod\" || type === \"ClassPrivateMethod\" ? \"TSDeclareMethod\" : undefined;\n\n if (bodilessType && !this.match(5) && this.isLineTerminator()) {\n this.finishNode(node, bodilessType);\n return;\n }\n\n if (bodilessType === \"TSDeclareFunction\" && this.state.isAmbientContext) {\n this.raise(TSErrors.DeclareFunctionHasImplementation, {\n at: node\n });\n\n if (node.declare) {\n super.parseFunctionBodyAndFinish(node, bodilessType, isMethod);\n return;\n }\n }\n\n super.parseFunctionBodyAndFinish(node, type, isMethod);\n }\n\n registerFunctionStatementId(node) {\n if (!node.body && node.id) {\n this.checkIdentifier(node.id, BIND_TS_AMBIENT);\n } else {\n super.registerFunctionStatementId(...arguments);\n }\n }\n\n tsCheckForInvalidTypeCasts(items) {\n items.forEach(node => {\n if ((node == null ? void 0 : node.type) === \"TSTypeCastExpression\") {\n this.raise(TSErrors.UnexpectedTypeAnnotation, {\n at: node.typeAnnotation\n });\n }\n });\n }\n\n toReferencedList(exprList, isInParens) {\n this.tsCheckForInvalidTypeCasts(exprList);\n return exprList;\n }\n\n parseArrayLike(...args) {\n const node = super.parseArrayLike(...args);\n\n if (node.type === \"ArrayExpression\") {\n this.tsCheckForInvalidTypeCasts(node.elements);\n }\n\n return node;\n }\n\n parseSubscript(base, startPos, startLoc, noCalls, state) {\n if (!this.hasPrecedingLineBreak() && this.match(35)) {\n this.state.canStartJSXElement = false;\n this.next();\n const nonNullExpression = this.startNodeAt(startPos, startLoc);\n nonNullExpression.expression = base;\n return this.finishNode(nonNullExpression, \"TSNonNullExpression\");\n }\n\n let isOptionalCall = false;\n\n if (this.match(18) && this.lookaheadCharCode() === 60) {\n if (noCalls) {\n state.stop = true;\n return base;\n }\n\n state.optionalChainMember = isOptionalCall = true;\n this.next();\n }\n\n if (this.match(47) || this.match(51)) {\n let missingParenErrorLoc;\n const result = this.tsTryParseAndCatch(() => {\n if (!noCalls && this.atPossibleAsyncArrow(base)) {\n const asyncArrowFn = this.tsTryParseGenericAsyncArrowFunction(startPos, startLoc);\n\n if (asyncArrowFn) {\n return asyncArrowFn;\n }\n }\n\n const typeArguments = this.tsParseTypeArgumentsInExpression();\n if (!typeArguments) throw this.unexpected();\n\n if (isOptionalCall && !this.match(10)) {\n missingParenErrorLoc = this.state.curPosition();\n throw this.unexpected();\n }\n\n if (tokenIsTemplate(this.state.type)) {\n const result = this.parseTaggedTemplateExpression(base, startPos, startLoc, state);\n result.typeParameters = typeArguments;\n return result;\n }\n\n if (!noCalls && this.eat(10)) {\n const node = this.startNodeAt(startPos, startLoc);\n node.callee = base;\n node.arguments = this.parseCallExpressionArguments(11, false);\n this.tsCheckForInvalidTypeCasts(node.arguments);\n node.typeParameters = typeArguments;\n\n if (state.optionalChainMember) {\n node.optional = isOptionalCall;\n }\n\n return this.finishCallExpression(node, state.optionalChainMember);\n }\n\n if (tsTokenCanStartExpression(this.state.type) && this.state.type !== 10) {\n throw this.unexpected();\n }\n\n const node = this.startNodeAt(startPos, startLoc);\n node.expression = base;\n node.typeParameters = typeArguments;\n return this.finishNode(node, \"TSInstantiationExpression\");\n });\n\n if (missingParenErrorLoc) {\n this.unexpected(missingParenErrorLoc, 10);\n }\n\n if (result) return result;\n }\n\n return super.parseSubscript(base, startPos, startLoc, noCalls, state);\n }\n\n parseNewCallee(node) {\n var _callee$extra;\n\n super.parseNewCallee(node);\n const {\n callee\n } = node;\n\n if (callee.type === \"TSInstantiationExpression\" && !((_callee$extra = callee.extra) != null && _callee$extra.parenthesized)) {\n node.typeParameters = callee.typeParameters;\n node.callee = callee.expression;\n }\n }\n\n parseExprOp(left, leftStartPos, leftStartLoc, minPrec) {\n if (tokenOperatorPrecedence(58) > minPrec && !this.hasPrecedingLineBreak() && this.isContextual(93)) {\n const node = this.startNodeAt(leftStartPos, leftStartLoc);\n node.expression = left;\n\n const _const = this.tsTryNextParseConstantContext();\n\n if (_const) {\n node.typeAnnotation = _const;\n } else {\n node.typeAnnotation = this.tsNextThenParseType();\n }\n\n this.finishNode(node, \"TSAsExpression\");\n this.reScan_lt_gt();\n return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec);\n }\n\n return super.parseExprOp(left, leftStartPos, leftStartLoc, minPrec);\n }\n\n checkReservedWord(word, startLoc, checkKeywords, isBinding) {\n if (!this.state.isAmbientContext) {\n super.checkReservedWord(word, startLoc, checkKeywords, isBinding);\n }\n }\n\n checkDuplicateExports() {}\n\n parseImport(node) {\n node.importKind = \"value\";\n\n if (tokenIsIdentifier(this.state.type) || this.match(55) || this.match(5)) {\n let ahead = this.lookahead();\n\n if (this.isContextual(126) && ahead.type !== 12 && ahead.type !== 97 && ahead.type !== 29) {\n node.importKind = \"type\";\n this.next();\n ahead = this.lookahead();\n }\n\n if (tokenIsIdentifier(this.state.type) && ahead.type === 29) {\n return this.tsParseImportEqualsDeclaration(node);\n }\n }\n\n const importNode = super.parseImport(node);\n\n if (importNode.importKind === \"type\" && importNode.specifiers.length > 1 && importNode.specifiers[0].type === \"ImportDefaultSpecifier\") {\n this.raise(TSErrors.TypeImportCannotSpecifyDefaultAndNamed, {\n at: importNode\n });\n }\n\n return importNode;\n }\n\n parseExport(node) {\n if (this.match(83)) {\n this.next();\n\n if (this.isContextual(126) && this.lookaheadCharCode() !== 61) {\n node.importKind = \"type\";\n this.next();\n } else {\n node.importKind = \"value\";\n }\n\n return this.tsParseImportEqualsDeclaration(node, true);\n } else if (this.eat(29)) {\n const assign = node;\n assign.expression = this.parseExpression();\n this.semicolon();\n return this.finishNode(assign, \"TSExportAssignment\");\n } else if (this.eatContextual(93)) {\n const decl = node;\n this.expectContextual(124);\n decl.id = this.parseIdentifier();\n this.semicolon();\n return this.finishNode(decl, \"TSNamespaceExportDeclaration\");\n } else {\n if (this.isContextual(126) && this.lookahead().type === 5) {\n this.next();\n node.exportKind = \"type\";\n } else {\n node.exportKind = \"value\";\n }\n\n return super.parseExport(node);\n }\n }\n\n isAbstractClass() {\n return this.isContextual(120) && this.lookahead().type === 80;\n }\n\n parseExportDefaultExpression() {\n if (this.isAbstractClass()) {\n const cls = this.startNode();\n this.next();\n cls.abstract = true;\n this.parseClass(cls, true, true);\n return cls;\n }\n\n if (this.match(125)) {\n const result = this.tsParseInterfaceDeclaration(this.startNode());\n if (result) return result;\n }\n\n return super.parseExportDefaultExpression();\n }\n\n parseVarStatement(node, kind, allowMissingInitializer = false) {\n const {\n isAmbientContext\n } = this.state;\n const declaration = super.parseVarStatement(node, kind, allowMissingInitializer || isAmbientContext);\n if (!isAmbientContext) return declaration;\n\n for (const {\n id,\n init\n } of declaration.declarations) {\n if (!init) continue;\n\n if (kind !== \"const\" || !!id.typeAnnotation) {\n this.raise(TSErrors.InitializerNotAllowedInAmbientContext, {\n at: init\n });\n } else if (init.type !== \"StringLiteral\" && init.type !== \"BooleanLiteral\" && init.type !== \"NumericLiteral\" && init.type !== \"BigIntLiteral\" && (init.type !== \"TemplateLiteral\" || init.expressions.length > 0) && !isPossiblyLiteralEnum(init)) {\n this.raise(TSErrors.ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference, {\n at: init\n });\n }\n }\n\n return declaration;\n }\n\n parseStatementContent(context, topLevel) {\n if (this.match(75) && this.isLookaheadContextual(\"enum\")) {\n const node = this.startNode();\n this.expect(75);\n return this.tsParseEnumDeclaration(node, {\n const: true\n });\n }\n\n if (this.isContextual(122)) {\n return this.tsParseEnumDeclaration(this.startNode());\n }\n\n if (this.isContextual(125)) {\n const result = this.tsParseInterfaceDeclaration(this.startNode());\n if (result) return result;\n }\n\n return super.parseStatementContent(context, topLevel);\n }\n\n parseAccessModifier() {\n return this.tsParseModifier([\"public\", \"protected\", \"private\"]);\n }\n\n tsHasSomeModifiers(member, modifiers) {\n return modifiers.some(modifier => {\n if (tsIsAccessModifier(modifier)) {\n return member.accessibility === modifier;\n }\n\n return !!member[modifier];\n });\n }\n\n tsIsStartOfStaticBlocks() {\n return this.isContextual(104) && this.lookaheadCharCode() === 123;\n }\n\n parseClassMember(classBody, member, state) {\n const modifiers = [\"declare\", \"private\", \"public\", \"protected\", \"override\", \"abstract\", \"readonly\", \"static\"];\n this.tsParseModifiers({\n modified: member,\n allowedModifiers: modifiers,\n disallowedModifiers: [\"in\", \"out\"],\n stopOnStartOfClassStaticBlock: true,\n errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions\n });\n\n const callParseClassMemberWithIsStatic = () => {\n if (this.tsIsStartOfStaticBlocks()) {\n this.next();\n this.next();\n\n if (this.tsHasSomeModifiers(member, modifiers)) {\n this.raise(TSErrors.StaticBlockCannotHaveModifier, {\n at: this.state.curPosition()\n });\n }\n\n this.parseClassStaticBlock(classBody, member);\n } else {\n this.parseClassMemberWithIsStatic(classBody, member, state, !!member.static);\n }\n };\n\n if (member.declare) {\n this.tsInAmbientContext(callParseClassMemberWithIsStatic);\n } else {\n callParseClassMemberWithIsStatic();\n }\n }\n\n parseClassMemberWithIsStatic(classBody, member, state, isStatic) {\n const idx = this.tsTryParseIndexSignature(member);\n\n if (idx) {\n classBody.body.push(idx);\n\n if (member.abstract) {\n this.raise(TSErrors.IndexSignatureHasAbstract, {\n at: member\n });\n }\n\n if (member.accessibility) {\n this.raise(TSErrors.IndexSignatureHasAccessibility, {\n at: member,\n modifier: member.accessibility\n });\n }\n\n if (member.declare) {\n this.raise(TSErrors.IndexSignatureHasDeclare, {\n at: member\n });\n }\n\n if (member.override) {\n this.raise(TSErrors.IndexSignatureHasOverride, {\n at: member\n });\n }\n\n return;\n }\n\n if (!this.state.inAbstractClass && member.abstract) {\n this.raise(TSErrors.NonAbstractClassHasAbstractMethod, {\n at: member\n });\n }\n\n if (member.override) {\n if (!state.hadSuperClass) {\n this.raise(TSErrors.OverrideNotInSubClass, {\n at: member\n });\n }\n }\n\n super.parseClassMemberWithIsStatic(classBody, member, state, isStatic);\n }\n\n parsePostMemberNameModifiers(methodOrProp) {\n const optional = this.eat(17);\n if (optional) methodOrProp.optional = true;\n\n if (methodOrProp.readonly && this.match(10)) {\n this.raise(TSErrors.ClassMethodHasReadonly, {\n at: methodOrProp\n });\n }\n\n if (methodOrProp.declare && this.match(10)) {\n this.raise(TSErrors.ClassMethodHasDeclare, {\n at: methodOrProp\n });\n }\n }\n\n parseExpressionStatement(node, expr) {\n const decl = expr.type === \"Identifier\" ? this.tsParseExpressionStatement(node, expr) : undefined;\n return decl || super.parseExpressionStatement(node, expr);\n }\n\n shouldParseExportDeclaration() {\n if (this.tsIsDeclarationStart()) return true;\n return super.shouldParseExportDeclaration();\n }\n\n parseConditional(expr, startPos, startLoc, refExpressionErrors) {\n if (!this.state.maybeInArrowParameters || !this.match(17)) {\n return super.parseConditional(expr, startPos, startLoc, refExpressionErrors);\n }\n\n const result = this.tryParse(() => super.parseConditional(expr, startPos, startLoc));\n\n if (!result.node) {\n if (result.error) {\n super.setOptionalParametersError(refExpressionErrors, result.error);\n }\n\n return expr;\n }\n\n if (result.error) this.state = result.failState;\n return result.node;\n }\n\n parseParenItem(node, startPos, startLoc) {\n node = super.parseParenItem(node, startPos, startLoc);\n\n if (this.eat(17)) {\n node.optional = true;\n this.resetEndLocation(node);\n }\n\n if (this.match(14)) {\n const typeCastNode = this.startNodeAt(startPos, startLoc);\n typeCastNode.expression = node;\n typeCastNode.typeAnnotation = this.tsParseTypeAnnotation();\n return this.finishNode(typeCastNode, \"TSTypeCastExpression\");\n }\n\n return node;\n }\n\n parseExportDeclaration(node) {\n if (!this.state.isAmbientContext && this.isContextual(121)) {\n return this.tsInAmbientContext(() => this.parseExportDeclaration(node));\n }\n\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const isDeclare = this.eatContextual(121);\n\n if (isDeclare && (this.isContextual(121) || !this.shouldParseExportDeclaration())) {\n throw this.raise(TSErrors.ExpectedAmbientAfterExportDeclare, {\n at: this.state.startLoc\n });\n }\n\n const isIdentifier = tokenIsIdentifier(this.state.type);\n const declaration = isIdentifier && this.tsTryParseExportDeclaration() || super.parseExportDeclaration(node);\n if (!declaration) return null;\n\n if (declaration.type === \"TSInterfaceDeclaration\" || declaration.type === \"TSTypeAliasDeclaration\" || isDeclare) {\n node.exportKind = \"type\";\n }\n\n if (isDeclare) {\n this.resetStartLocation(declaration, startPos, startLoc);\n declaration.declare = true;\n }\n\n return declaration;\n }\n\n parseClassId(node, isStatement, optionalId) {\n if ((!isStatement || optionalId) && this.isContextual(110)) {\n return;\n }\n\n super.parseClassId(node, isStatement, optionalId, node.declare ? BIND_TS_AMBIENT : BIND_CLASS);\n const typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutModifiers.bind(this));\n if (typeParameters) node.typeParameters = typeParameters;\n }\n\n parseClassPropertyAnnotation(node) {\n if (!node.optional && this.eat(35)) {\n node.definite = true;\n }\n\n const type = this.tsTryParseTypeAnnotation();\n if (type) node.typeAnnotation = type;\n }\n\n parseClassProperty(node) {\n this.parseClassPropertyAnnotation(node);\n\n if (this.state.isAmbientContext && this.match(29)) {\n this.raise(TSErrors.DeclareClassFieldHasInitializer, {\n at: this.state.startLoc\n });\n }\n\n if (node.abstract && this.match(29)) {\n const {\n key\n } = node;\n this.raise(TSErrors.AbstractPropertyHasInitializer, {\n at: this.state.startLoc,\n propertyName: key.type === \"Identifier\" && !node.computed ? key.name : `[${this.input.slice(key.start, key.end)}]`\n });\n }\n\n return super.parseClassProperty(node);\n }\n\n parseClassPrivateProperty(node) {\n if (node.abstract) {\n this.raise(TSErrors.PrivateElementHasAbstract, {\n at: node\n });\n }\n\n if (node.accessibility) {\n this.raise(TSErrors.PrivateElementHasAccessibility, {\n at: node,\n modifier: node.accessibility\n });\n }\n\n this.parseClassPropertyAnnotation(node);\n return super.parseClassPrivateProperty(node);\n }\n\n pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {\n const typeParameters = this.tsTryParseTypeParameters();\n\n if (typeParameters && isConstructor) {\n this.raise(TSErrors.ConstructorHasTypeParameters, {\n at: typeParameters\n });\n }\n\n const {\n declare = false,\n kind\n } = method;\n\n if (declare && (kind === \"get\" || kind === \"set\")) {\n this.raise(TSErrors.DeclareAccessor, {\n at: method,\n kind\n });\n }\n\n if (typeParameters) method.typeParameters = typeParameters;\n super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper);\n }\n\n pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {\n const typeParameters = this.tsTryParseTypeParameters();\n if (typeParameters) method.typeParameters = typeParameters;\n super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);\n }\n\n declareClassPrivateMethodInScope(node, kind) {\n if (node.type === \"TSDeclareMethod\") return;\n if (node.type === \"MethodDefinition\" && !node.value.body) return;\n super.declareClassPrivateMethodInScope(node, kind);\n }\n\n parseClassSuper(node) {\n super.parseClassSuper(node);\n\n if (node.superClass && (this.match(47) || this.match(51))) {\n node.superTypeParameters = this.tsParseTypeArgumentsInExpression();\n }\n\n if (this.eatContextual(110)) {\n node.implements = this.tsParseHeritageClause(\"implements\");\n }\n }\n\n parseObjPropValue(prop, ...args) {\n const typeParameters = this.tsTryParseTypeParameters();\n if (typeParameters) prop.typeParameters = typeParameters;\n super.parseObjPropValue(prop, ...args);\n }\n\n parseFunctionParams(node, allowModifiers) {\n const typeParameters = this.tsTryParseTypeParameters();\n if (typeParameters) node.typeParameters = typeParameters;\n super.parseFunctionParams(node, allowModifiers);\n }\n\n parseVarId(decl, kind) {\n super.parseVarId(decl, kind);\n\n if (decl.id.type === \"Identifier\" && !this.hasPrecedingLineBreak() && this.eat(35)) {\n decl.definite = true;\n }\n\n const type = this.tsTryParseTypeAnnotation();\n\n if (type) {\n decl.id.typeAnnotation = type;\n this.resetEndLocation(decl.id);\n }\n }\n\n parseAsyncArrowFromCallExpression(node, call) {\n if (this.match(14)) {\n node.returnType = this.tsParseTypeAnnotation();\n }\n\n return super.parseAsyncArrowFromCallExpression(node, call);\n }\n\n parseMaybeAssign(...args) {\n var _jsx, _jsx2, _typeCast, _jsx3, _typeCast2, _jsx4, _typeCast3;\n\n let state;\n let jsx;\n let typeCast;\n\n if (this.hasPlugin(\"jsx\") && (this.match(138) || this.match(47))) {\n state = this.state.clone();\n jsx = this.tryParse(() => super.parseMaybeAssign(...args), state);\n if (!jsx.error) return jsx.node;\n const {\n context\n } = this.state;\n const currentContext = context[context.length - 1];\n\n if (currentContext === types.j_oTag || currentContext === types.j_expr) {\n context.pop();\n }\n }\n\n if (!((_jsx = jsx) != null && _jsx.error) && !this.match(47)) {\n return super.parseMaybeAssign(...args);\n }\n\n let typeParameters;\n state = state || this.state.clone();\n const arrow = this.tryParse(abort => {\n var _expr$extra, _typeParameters, _expr$typeParameters$;\n\n typeParameters = this.tsParseTypeParameters();\n const expr = super.parseMaybeAssign(...args);\n\n if (expr.type !== \"ArrowFunctionExpression\" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) {\n abort();\n }\n\n if (((_typeParameters = typeParameters) == null ? void 0 : _typeParameters.params.length) !== 0) {\n this.resetStartLocationFromNode(expr, typeParameters);\n }\n\n expr.typeParameters = typeParameters;\n\n if (this.hasPlugin(\"jsx\") && expr.typeParameters.params.length === 1 && !((_expr$typeParameters$ = expr.typeParameters.extra) != null && _expr$typeParameters$.trailingComma)) {\n const parameter = expr.typeParameters.params[0];\n\n if (!parameter.constraint) ;\n }\n\n return expr;\n }, state);\n\n if (!arrow.error && !arrow.aborted) {\n if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);\n return arrow.node;\n }\n\n if (!jsx) {\n assert(!this.hasPlugin(\"jsx\"));\n typeCast = this.tryParse(() => super.parseMaybeAssign(...args), state);\n if (!typeCast.error) return typeCast.node;\n }\n\n if ((_jsx2 = jsx) != null && _jsx2.node) {\n this.state = jsx.failState;\n return jsx.node;\n }\n\n if (arrow.node) {\n this.state = arrow.failState;\n if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);\n return arrow.node;\n }\n\n if ((_typeCast = typeCast) != null && _typeCast.node) {\n this.state = typeCast.failState;\n return typeCast.node;\n }\n\n if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error;\n if (arrow.thrown) throw arrow.error;\n if ((_typeCast2 = typeCast) != null && _typeCast2.thrown) throw typeCast.error;\n throw ((_jsx4 = jsx) == null ? void 0 : _jsx4.error) || arrow.error || ((_typeCast3 = typeCast) == null ? void 0 : _typeCast3.error);\n }\n\n reportReservedArrowTypeParam(node) {\n var _node$extra;\n\n if (node.params.length === 1 && !((_node$extra = node.extra) != null && _node$extra.trailingComma) && this.getPluginOption(\"typescript\", \"disallowAmbiguousJSXLike\")) {\n this.raise(TSErrors.ReservedArrowTypeParam, {\n at: node\n });\n }\n }\n\n parseMaybeUnary(refExpressionErrors) {\n if (!this.hasPlugin(\"jsx\") && this.match(47)) {\n return this.tsParseTypeAssertion();\n } else {\n return super.parseMaybeUnary(refExpressionErrors);\n }\n }\n\n parseArrow(node) {\n if (this.match(14)) {\n const result = this.tryParse(abort => {\n const returnType = this.tsParseTypeOrTypePredicateAnnotation(14);\n if (this.canInsertSemicolon() || !this.match(19)) abort();\n return returnType;\n });\n if (result.aborted) return;\n\n if (!result.thrown) {\n if (result.error) this.state = result.failState;\n node.returnType = result.node;\n }\n }\n\n return super.parseArrow(node);\n }\n\n parseAssignableListItemTypes(param) {\n if (this.eat(17)) {\n if (param.type !== \"Identifier\" && !this.state.isAmbientContext && !this.state.inType) {\n this.raise(TSErrors.PatternIsOptional, {\n at: param\n });\n }\n\n param.optional = true;\n }\n\n const type = this.tsTryParseTypeAnnotation();\n if (type) param.typeAnnotation = type;\n this.resetEndLocation(param);\n return param;\n }\n\n isAssignable(node, isBinding) {\n switch (node.type) {\n case \"TSTypeCastExpression\":\n return this.isAssignable(node.expression, isBinding);\n\n case \"TSParameterProperty\":\n return true;\n\n default:\n return super.isAssignable(node, isBinding);\n }\n }\n\n toAssignable(node, isLHS = false) {\n switch (node.type) {\n case \"ParenthesizedExpression\":\n this.toAssignableParenthesizedExpression(node, isLHS);\n break;\n\n case \"TSAsExpression\":\n case \"TSNonNullExpression\":\n case \"TSTypeAssertion\":\n if (isLHS) {\n this.expressionScope.recordArrowParemeterBindingError(TSErrors.UnexpectedTypeCastInParameter, {\n at: node\n });\n } else {\n this.raise(TSErrors.UnexpectedTypeCastInParameter, {\n at: node\n });\n }\n\n this.toAssignable(node.expression, isLHS);\n break;\n\n case \"AssignmentExpression\":\n if (!isLHS && node.left.type === \"TSTypeCastExpression\") {\n node.left = this.typeCastToParameter(node.left);\n }\n\n default:\n super.toAssignable(node, isLHS);\n }\n }\n\n toAssignableParenthesizedExpression(node, isLHS) {\n switch (node.expression.type) {\n case \"TSAsExpression\":\n case \"TSNonNullExpression\":\n case \"TSTypeAssertion\":\n case \"ParenthesizedExpression\":\n this.toAssignable(node.expression, isLHS);\n break;\n\n default:\n super.toAssignable(node, isLHS);\n }\n }\n\n checkToRestConversion(node, allowPattern) {\n switch (node.type) {\n case \"TSAsExpression\":\n case \"TSTypeAssertion\":\n case \"TSNonNullExpression\":\n this.checkToRestConversion(node.expression, false);\n break;\n\n default:\n super.checkToRestConversion(node, allowPattern);\n }\n }\n\n isValidLVal(type, isUnparenthesizedInAssign, binding) {\n return getOwn$1({\n TSTypeCastExpression: true,\n TSParameterProperty: \"parameter\",\n TSNonNullExpression: \"expression\",\n TSAsExpression: (binding !== BIND_NONE || !isUnparenthesizedInAssign) && [\"expression\", true],\n TSTypeAssertion: (binding !== BIND_NONE || !isUnparenthesizedInAssign) && [\"expression\", true]\n }, type) || super.isValidLVal(type, isUnparenthesizedInAssign, binding);\n }\n\n parseBindingAtom() {\n switch (this.state.type) {\n case 78:\n return this.parseIdentifier(true);\n\n default:\n return super.parseBindingAtom();\n }\n }\n\n parseMaybeDecoratorArguments(expr) {\n if (this.match(47) || this.match(51)) {\n const typeArguments = this.tsParseTypeArgumentsInExpression();\n\n if (this.match(10)) {\n const call = super.parseMaybeDecoratorArguments(expr);\n call.typeParameters = typeArguments;\n return call;\n }\n\n this.unexpected(null, 10);\n }\n\n return super.parseMaybeDecoratorArguments(expr);\n }\n\n checkCommaAfterRest(close) {\n if (this.state.isAmbientContext && this.match(12) && this.lookaheadCharCode() === close) {\n this.next();\n return false;\n } else {\n return super.checkCommaAfterRest(close);\n }\n }\n\n isClassMethod() {\n return this.match(47) || super.isClassMethod();\n }\n\n isClassProperty() {\n return this.match(35) || this.match(14) || super.isClassProperty();\n }\n\n parseMaybeDefault(...args) {\n const node = super.parseMaybeDefault(...args);\n\n if (node.type === \"AssignmentPattern\" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) {\n this.raise(TSErrors.TypeAnnotationAfterAssign, {\n at: node.typeAnnotation\n });\n }\n\n return node;\n }\n\n getTokenFromCode(code) {\n if (this.state.inType) {\n if (code === 62) {\n return this.finishOp(48, 1);\n }\n\n if (code === 60) {\n return this.finishOp(47, 1);\n }\n }\n\n return super.getTokenFromCode(code);\n }\n\n reScan_lt_gt() {\n const {\n type\n } = this.state;\n\n if (type === 47) {\n this.state.pos -= 1;\n this.readToken_lt();\n } else if (type === 48) {\n this.state.pos -= 1;\n this.readToken_gt();\n }\n }\n\n reScan_lt() {\n const {\n type\n } = this.state;\n\n if (type === 51) {\n this.state.pos -= 2;\n this.finishOp(47, 1);\n return 47;\n }\n\n return type;\n }\n\n toAssignableList(exprList) {\n for (let i = 0; i < exprList.length; i++) {\n const expr = exprList[i];\n\n if ((expr == null ? void 0 : expr.type) === \"TSTypeCastExpression\") {\n exprList[i] = this.typeCastToParameter(expr);\n }\n }\n\n super.toAssignableList(...arguments);\n }\n\n typeCastToParameter(node) {\n node.expression.typeAnnotation = node.typeAnnotation;\n this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);\n return node.expression;\n }\n\n shouldParseArrow(params) {\n if (this.match(14)) {\n return params.every(expr => this.isAssignable(expr, true));\n }\n\n return super.shouldParseArrow(params);\n }\n\n shouldParseAsyncArrow() {\n return this.match(14) || super.shouldParseAsyncArrow();\n }\n\n canHaveLeadingDecorator() {\n return super.canHaveLeadingDecorator() || this.isAbstractClass();\n }\n\n jsxParseOpeningElementAfterName(node) {\n if (this.match(47) || this.match(51)) {\n const typeArguments = this.tsTryParseAndCatch(() => this.tsParseTypeArgumentsInExpression());\n if (typeArguments) node.typeParameters = typeArguments;\n }\n\n return super.jsxParseOpeningElementAfterName(node);\n }\n\n getGetterSetterExpectedParamCount(method) {\n const baseCount = super.getGetterSetterExpectedParamCount(method);\n const params = this.getObjectOrClassMethodParams(method);\n const firstParam = params[0];\n const hasContextParam = firstParam && this.isThisParam(firstParam);\n return hasContextParam ? baseCount + 1 : baseCount;\n }\n\n parseCatchClauseParam() {\n const param = super.parseCatchClauseParam();\n const type = this.tsTryParseTypeAnnotation();\n\n if (type) {\n param.typeAnnotation = type;\n this.resetEndLocation(param);\n }\n\n return param;\n }\n\n tsInAmbientContext(cb) {\n const oldIsAmbientContext = this.state.isAmbientContext;\n this.state.isAmbientContext = true;\n\n try {\n return cb();\n } finally {\n this.state.isAmbientContext = oldIsAmbientContext;\n }\n }\n\n parseClass(node, ...args) {\n const oldInAbstractClass = this.state.inAbstractClass;\n this.state.inAbstractClass = !!node.abstract;\n\n try {\n return super.parseClass(node, ...args);\n } finally {\n this.state.inAbstractClass = oldInAbstractClass;\n }\n }\n\n tsParseAbstractDeclaration(node) {\n if (this.match(80)) {\n node.abstract = true;\n return this.parseClass(node, true, false);\n } else if (this.isContextual(125)) {\n if (!this.hasFollowingLineBreak()) {\n node.abstract = true;\n this.raise(TSErrors.NonClassMethodPropertyHasAbstractModifer, {\n at: node\n });\n return this.tsParseInterfaceDeclaration(node);\n }\n } else {\n this.unexpected(null, 80);\n }\n }\n\n parseMethod(...args) {\n const method = super.parseMethod(...args);\n\n if (method.abstract) {\n const hasBody = this.hasPlugin(\"estree\") ? !!method.value.body : !!method.body;\n\n if (hasBody) {\n const {\n key\n } = method;\n this.raise(TSErrors.AbstractMethodHasImplementation, {\n at: method,\n methodName: key.type === \"Identifier\" && !method.computed ? key.name : `[${this.input.slice(key.start, key.end)}]`\n });\n }\n }\n\n return method;\n }\n\n tsParseTypeParameterName() {\n const typeName = this.parseIdentifier();\n return typeName.name;\n }\n\n shouldParseAsAmbientContext() {\n return !!this.getPluginOption(\"typescript\", \"dts\");\n }\n\n parse() {\n if (this.shouldParseAsAmbientContext()) {\n this.state.isAmbientContext = true;\n }\n\n return super.parse();\n }\n\n getExpression() {\n if (this.shouldParseAsAmbientContext()) {\n this.state.isAmbientContext = true;\n }\n\n return super.getExpression();\n }\n\n parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) {\n if (!isString && isMaybeTypeOnly) {\n this.parseTypeOnlyImportExportSpecifier(node, false, isInTypeExport);\n return this.finishNode(node, \"ExportSpecifier\");\n }\n\n node.exportKind = \"value\";\n return super.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly);\n }\n\n parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly) {\n if (!importedIsString && isMaybeTypeOnly) {\n this.parseTypeOnlyImportExportSpecifier(specifier, true, isInTypeOnlyImport);\n return this.finishNode(specifier, \"ImportSpecifier\");\n }\n\n specifier.importKind = \"value\";\n return super.parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly);\n }\n\n parseTypeOnlyImportExportSpecifier(node, isImport, isInTypeOnlyImportExport) {\n const leftOfAsKey = isImport ? \"imported\" : \"local\";\n const rightOfAsKey = isImport ? \"local\" : \"exported\";\n let leftOfAs = node[leftOfAsKey];\n let rightOfAs;\n let hasTypeSpecifier = false;\n let canParseAsKeyword = true;\n const loc = leftOfAs.loc.start;\n\n if (this.isContextual(93)) {\n const firstAs = this.parseIdentifier();\n\n if (this.isContextual(93)) {\n const secondAs = this.parseIdentifier();\n\n if (tokenIsKeywordOrIdentifier(this.state.type)) {\n hasTypeSpecifier = true;\n leftOfAs = firstAs;\n rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName();\n canParseAsKeyword = false;\n } else {\n rightOfAs = secondAs;\n canParseAsKeyword = false;\n }\n } else if (tokenIsKeywordOrIdentifier(this.state.type)) {\n canParseAsKeyword = false;\n rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName();\n } else {\n hasTypeSpecifier = true;\n leftOfAs = firstAs;\n }\n } else if (tokenIsKeywordOrIdentifier(this.state.type)) {\n hasTypeSpecifier = true;\n\n if (isImport) {\n leftOfAs = this.parseIdentifier(true);\n\n if (!this.isContextual(93)) {\n this.checkReservedWord(leftOfAs.name, leftOfAs.loc.start, true, true);\n }\n } else {\n leftOfAs = this.parseModuleExportName();\n }\n }\n\n if (hasTypeSpecifier && isInTypeOnlyImportExport) {\n this.raise(isImport ? TSErrors.TypeModifierIsUsedInTypeImports : TSErrors.TypeModifierIsUsedInTypeExports, {\n at: loc\n });\n }\n\n node[leftOfAsKey] = leftOfAs;\n node[rightOfAsKey] = rightOfAs;\n const kindKey = isImport ? \"importKind\" : \"exportKind\";\n node[kindKey] = hasTypeSpecifier ? \"type\" : \"value\";\n\n if (canParseAsKeyword && this.eatContextual(93)) {\n node[rightOfAsKey] = isImport ? this.parseIdentifier() : this.parseModuleExportName();\n }\n\n if (!node[rightOfAsKey]) {\n node[rightOfAsKey] = cloneIdentifier(node[leftOfAsKey]);\n }\n\n if (isImport) {\n this.checkIdentifier(node[rightOfAsKey], BIND_LEXICAL);\n }\n }\n\n});\n\nfunction isPossiblyLiteralEnum(expression) {\n if (expression.type !== \"MemberExpression\") return false;\n const {\n computed,\n property\n } = expression;\n\n if (computed && property.type !== \"StringLiteral\" && (property.type !== \"TemplateLiteral\" || property.expressions.length > 0)) {\n return false;\n }\n\n return isUncomputedMemberExpressionChain(expression.object);\n}\n\nfunction isUncomputedMemberExpressionChain(expression) {\n if (expression.type === \"Identifier\") return true;\n if (expression.type !== \"MemberExpression\") return false;\n if (expression.computed) return false;\n return isUncomputedMemberExpressionChain(expression.object);\n}\n\nconst PlaceholderErrors = ParseErrorEnum`placeholders`(_ => ({\n ClassNameIsRequired: _(\"A class name is required.\"),\n UnexpectedSpace: _(\"Unexpected space in placeholder.\")\n}));\nvar placeholders = (superClass => class extends superClass {\n parsePlaceholder(expectedNode) {\n if (this.match(140)) {\n const node = this.startNode();\n this.next();\n this.assertNoSpace();\n node.name = super.parseIdentifier(true);\n this.assertNoSpace();\n this.expect(140);\n return this.finishPlaceholder(node, expectedNode);\n }\n }\n\n finishPlaceholder(node, expectedNode) {\n const isFinished = !!(node.expectedNode && node.type === \"Placeholder\");\n node.expectedNode = expectedNode;\n return isFinished ? node : this.finishNode(node, \"Placeholder\");\n }\n\n getTokenFromCode(code) {\n if (code === 37 && this.input.charCodeAt(this.state.pos + 1) === 37) {\n return this.finishOp(140, 2);\n }\n\n return super.getTokenFromCode(...arguments);\n }\n\n parseExprAtom() {\n return this.parsePlaceholder(\"Expression\") || super.parseExprAtom(...arguments);\n }\n\n parseIdentifier() {\n return this.parsePlaceholder(\"Identifier\") || super.parseIdentifier(...arguments);\n }\n\n checkReservedWord(word) {\n if (word !== undefined) super.checkReservedWord(...arguments);\n }\n\n parseBindingAtom() {\n return this.parsePlaceholder(\"Pattern\") || super.parseBindingAtom(...arguments);\n }\n\n isValidLVal(type, ...rest) {\n return type === \"Placeholder\" || super.isValidLVal(type, ...rest);\n }\n\n toAssignable(node) {\n if (node && node.type === \"Placeholder\" && node.expectedNode === \"Expression\") {\n node.expectedNode = \"Pattern\";\n } else {\n super.toAssignable(...arguments);\n }\n }\n\n isLet(context) {\n if (super.isLet(context)) {\n return true;\n }\n\n if (!this.isContextual(99)) {\n return false;\n }\n\n if (context) return false;\n const nextToken = this.lookahead();\n\n if (nextToken.type === 140) {\n return true;\n }\n\n return false;\n }\n\n verifyBreakContinue(node) {\n if (node.label && node.label.type === \"Placeholder\") return;\n super.verifyBreakContinue(...arguments);\n }\n\n parseExpressionStatement(node, expr) {\n if (expr.type !== \"Placeholder\" || expr.extra && expr.extra.parenthesized) {\n return super.parseExpressionStatement(...arguments);\n }\n\n if (this.match(14)) {\n const stmt = node;\n stmt.label = this.finishPlaceholder(expr, \"Identifier\");\n this.next();\n stmt.body = this.parseStatement(\"label\");\n return this.finishNode(stmt, \"LabeledStatement\");\n }\n\n this.semicolon();\n node.name = expr.name;\n return this.finishPlaceholder(node, \"Statement\");\n }\n\n parseBlock() {\n return this.parsePlaceholder(\"BlockStatement\") || super.parseBlock(...arguments);\n }\n\n parseFunctionId() {\n return this.parsePlaceholder(\"Identifier\") || super.parseFunctionId(...arguments);\n }\n\n parseClass(node, isStatement, optionalId) {\n const type = isStatement ? \"ClassDeclaration\" : \"ClassExpression\";\n this.next();\n this.takeDecorators(node);\n const oldStrict = this.state.strict;\n const placeholder = this.parsePlaceholder(\"Identifier\");\n\n if (placeholder) {\n if (this.match(81) || this.match(140) || this.match(5)) {\n node.id = placeholder;\n } else if (optionalId || !isStatement) {\n node.id = null;\n node.body = this.finishPlaceholder(placeholder, \"ClassBody\");\n return this.finishNode(node, type);\n } else {\n throw this.raise(PlaceholderErrors.ClassNameIsRequired, {\n at: this.state.startLoc\n });\n }\n } else {\n this.parseClassId(node, isStatement, optionalId);\n }\n\n this.parseClassSuper(node);\n node.body = this.parsePlaceholder(\"ClassBody\") || this.parseClassBody(!!node.superClass, oldStrict);\n return this.finishNode(node, type);\n }\n\n parseExport(node) {\n const placeholder = this.parsePlaceholder(\"Identifier\");\n if (!placeholder) return super.parseExport(...arguments);\n\n if (!this.isContextual(97) && !this.match(12)) {\n node.specifiers = [];\n node.source = null;\n node.declaration = this.finishPlaceholder(placeholder, \"Declaration\");\n return this.finishNode(node, \"ExportNamedDeclaration\");\n }\n\n this.expectPlugin(\"exportDefaultFrom\");\n const specifier = this.startNode();\n specifier.exported = placeholder;\n node.specifiers = [this.finishNode(specifier, \"ExportDefaultSpecifier\")];\n return super.parseExport(node);\n }\n\n isExportDefaultSpecifier() {\n if (this.match(65)) {\n const next = this.nextTokenStart();\n\n if (this.isUnparsedContextual(next, \"from\")) {\n if (this.input.startsWith(tokenLabelName(140), this.nextTokenStartSince(next + 4))) {\n return true;\n }\n }\n }\n\n return super.isExportDefaultSpecifier();\n }\n\n maybeParseExportDefaultSpecifier(node) {\n if (node.specifiers && node.specifiers.length > 0) {\n return true;\n }\n\n return super.maybeParseExportDefaultSpecifier(...arguments);\n }\n\n checkExport(node) {\n const {\n specifiers\n } = node;\n\n if (specifiers != null && specifiers.length) {\n node.specifiers = specifiers.filter(node => node.exported.type === \"Placeholder\");\n }\n\n super.checkExport(node);\n node.specifiers = specifiers;\n }\n\n parseImport(node) {\n const placeholder = this.parsePlaceholder(\"Identifier\");\n if (!placeholder) return super.parseImport(...arguments);\n node.specifiers = [];\n\n if (!this.isContextual(97) && !this.match(12)) {\n node.source = this.finishPlaceholder(placeholder, \"StringLiteral\");\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\");\n }\n\n const specifier = this.startNodeAtNode(placeholder);\n specifier.local = placeholder;\n this.finishNode(specifier, \"ImportDefaultSpecifier\");\n node.specifiers.push(specifier);\n\n if (this.eat(12)) {\n const hasStarImport = this.maybeParseStarImportSpecifier(node);\n if (!hasStarImport) this.parseNamedImportSpecifiers(node);\n }\n\n this.expectContextual(97);\n node.source = this.parseImportSource();\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\");\n }\n\n parseImportSource() {\n return this.parsePlaceholder(\"StringLiteral\") || super.parseImportSource(...arguments);\n }\n\n assertNoSpace() {\n if (this.state.start > this.state.lastTokEndLoc.index) {\n this.raise(PlaceholderErrors.UnexpectedSpace, {\n at: this.state.lastTokEndLoc\n });\n }\n }\n\n});\n\nvar v8intrinsic = (superClass => class extends superClass {\n parseV8Intrinsic() {\n if (this.match(54)) {\n const v8IntrinsicStartLoc = this.state.startLoc;\n const node = this.startNode();\n this.next();\n\n if (tokenIsIdentifier(this.state.type)) {\n const name = this.parseIdentifierName(this.state.start);\n const identifier = this.createIdentifier(node, name);\n identifier.type = \"V8IntrinsicIdentifier\";\n\n if (this.match(10)) {\n return identifier;\n }\n }\n\n this.unexpected(v8IntrinsicStartLoc);\n }\n }\n\n parseExprAtom() {\n return this.parseV8Intrinsic() || super.parseExprAtom(...arguments);\n }\n\n});\n\nfunction hasPlugin(plugins, expectedConfig) {\n const [expectedName, expectedOptions] = typeof expectedConfig === \"string\" ? [expectedConfig, {}] : expectedConfig;\n const expectedKeys = Object.keys(expectedOptions);\n const expectedOptionsIsEmpty = expectedKeys.length === 0;\n return plugins.some(p => {\n if (typeof p === \"string\") {\n return expectedOptionsIsEmpty && p === expectedName;\n } else {\n const [pluginName, pluginOptions] = p;\n\n if (pluginName !== expectedName) {\n return false;\n }\n\n for (const key of expectedKeys) {\n if (pluginOptions[key] !== expectedOptions[key]) {\n return false;\n }\n }\n\n return true;\n }\n });\n}\nfunction getPluginOption(plugins, name, option) {\n const plugin = plugins.find(plugin => {\n if (Array.isArray(plugin)) {\n return plugin[0] === name;\n } else {\n return plugin === name;\n }\n });\n\n if (plugin && Array.isArray(plugin)) {\n return plugin[1][option];\n }\n\n return null;\n}\nconst PIPELINE_PROPOSALS = [\"minimal\", \"fsharp\", \"hack\", \"smart\"];\nconst TOPIC_TOKENS = [\"^^\", \"@@\", \"^\", \"%\", \"#\"];\nconst RECORD_AND_TUPLE_SYNTAX_TYPES = [\"hash\", \"bar\"];\nfunction validatePlugins(plugins) {\n if (hasPlugin(plugins, \"decorators\")) {\n if (hasPlugin(plugins, \"decorators-legacy\")) {\n throw new Error(\"Cannot use the decorators and decorators-legacy plugin together\");\n }\n\n const decoratorsBeforeExport = getPluginOption(plugins, \"decorators\", \"decoratorsBeforeExport\");\n\n if (decoratorsBeforeExport == null) {\n throw new Error(\"The 'decorators' plugin requires a 'decoratorsBeforeExport' option,\" + \" whose value must be a boolean. If you are migrating from\" + \" Babylon/Babel 6 or want to use the old decorators proposal, you\" + \" should use the 'decorators-legacy' plugin instead of 'decorators'.\");\n } else if (typeof decoratorsBeforeExport !== \"boolean\") {\n throw new Error(\"'decoratorsBeforeExport' must be a boolean.\");\n }\n }\n\n if (hasPlugin(plugins, \"flow\") && hasPlugin(plugins, \"typescript\")) {\n throw new Error(\"Cannot combine flow and typescript plugins.\");\n }\n\n if (hasPlugin(plugins, \"placeholders\") && hasPlugin(plugins, \"v8intrinsic\")) {\n throw new Error(\"Cannot combine placeholders and v8intrinsic plugins.\");\n }\n\n if (hasPlugin(plugins, \"pipelineOperator\")) {\n const proposal = getPluginOption(plugins, \"pipelineOperator\", \"proposal\");\n\n if (!PIPELINE_PROPOSALS.includes(proposal)) {\n const proposalList = PIPELINE_PROPOSALS.map(p => `\"${p}\"`).join(\", \");\n throw new Error(`\"pipelineOperator\" requires \"proposal\" option whose value must be one of: ${proposalList}.`);\n }\n\n const tupleSyntaxIsHash = hasPlugin(plugins, [\"recordAndTuple\", {\n syntaxType: \"hash\"\n }]);\n\n if (proposal === \"hack\") {\n if (hasPlugin(plugins, \"placeholders\")) {\n throw new Error(\"Cannot combine placeholders plugin and Hack-style pipes.\");\n }\n\n if (hasPlugin(plugins, \"v8intrinsic\")) {\n throw new Error(\"Cannot combine v8intrinsic plugin and Hack-style pipes.\");\n }\n\n const topicToken = getPluginOption(plugins, \"pipelineOperator\", \"topicToken\");\n\n if (!TOPIC_TOKENS.includes(topicToken)) {\n const tokenList = TOPIC_TOKENS.map(t => `\"${t}\"`).join(\", \");\n throw new Error(`\"pipelineOperator\" in \"proposal\": \"hack\" mode also requires a \"topicToken\" option whose value must be one of: ${tokenList}.`);\n }\n\n if (topicToken === \"#\" && tupleSyntaxIsHash) {\n throw new Error('Plugin conflict between `[\"pipelineOperator\", { proposal: \"hack\", topicToken: \"#\" }]` and `[\"recordAndtuple\", { syntaxType: \"hash\"}]`.');\n }\n } else if (proposal === \"smart\" && tupleSyntaxIsHash) {\n throw new Error('Plugin conflict between `[\"pipelineOperator\", { proposal: \"smart\" }]` and `[\"recordAndtuple\", { syntaxType: \"hash\"}]`.');\n }\n }\n\n if (hasPlugin(plugins, \"moduleAttributes\")) {\n {\n if (hasPlugin(plugins, \"importAssertions\")) {\n throw new Error(\"Cannot combine importAssertions and moduleAttributes plugins.\");\n }\n\n const moduleAttributesVersionPluginOption = getPluginOption(plugins, \"moduleAttributes\", \"version\");\n\n if (moduleAttributesVersionPluginOption !== \"may-2020\") {\n throw new Error(\"The 'moduleAttributes' plugin requires a 'version' option,\" + \" representing the last proposal update. Currently, the\" + \" only supported value is 'may-2020'.\");\n }\n }\n }\n\n if (hasPlugin(plugins, \"recordAndTuple\") && !RECORD_AND_TUPLE_SYNTAX_TYPES.includes(getPluginOption(plugins, \"recordAndTuple\", \"syntaxType\"))) {\n throw new Error(\"'recordAndTuple' requires 'syntaxType' option whose value should be one of: \" + RECORD_AND_TUPLE_SYNTAX_TYPES.map(p => `'${p}'`).join(\", \"));\n }\n\n if (hasPlugin(plugins, \"asyncDoExpressions\") && !hasPlugin(plugins, \"doExpressions\")) {\n const error = new Error(\"'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins.\");\n error.missingPlugins = \"doExpressions\";\n throw error;\n }\n}\nconst mixinPlugins = {\n estree,\n jsx,\n flow,\n typescript,\n v8intrinsic,\n placeholders\n};\nconst mixinPluginNames = Object.keys(mixinPlugins);\n\nconst defaultOptions = {\n sourceType: \"script\",\n sourceFilename: undefined,\n startColumn: 0,\n startLine: 1,\n allowAwaitOutsideFunction: false,\n allowReturnOutsideFunction: false,\n allowImportExportEverywhere: false,\n allowSuperOutsideMethod: false,\n allowUndeclaredExports: false,\n plugins: [],\n strictMode: null,\n ranges: false,\n tokens: false,\n createParenthesizedExpressions: false,\n errorRecovery: false,\n attachComment: true\n};\nfunction getOptions(opts) {\n const options = {};\n\n for (const key of Object.keys(defaultOptions)) {\n options[key] = opts && opts[key] != null ? opts[key] : defaultOptions[key];\n }\n\n return options;\n}\n\nconst getOwn = (object, key) => Object.hasOwnProperty.call(object, key) && object[key];\n\nconst unwrapParenthesizedExpression = node => {\n return node.type === \"ParenthesizedExpression\" ? unwrapParenthesizedExpression(node.expression) : node;\n};\n\nclass LValParser extends NodeUtils {\n toAssignable(node, isLHS = false) {\n var _node$extra, _node$extra3;\n\n let parenthesized = undefined;\n\n if (node.type === \"ParenthesizedExpression\" || (_node$extra = node.extra) != null && _node$extra.parenthesized) {\n parenthesized = unwrapParenthesizedExpression(node);\n\n if (isLHS) {\n if (parenthesized.type === \"Identifier\") {\n this.expressionScope.recordArrowParemeterBindingError(Errors.InvalidParenthesizedAssignment, {\n at: node\n });\n } else if (parenthesized.type !== \"MemberExpression\") {\n this.raise(Errors.InvalidParenthesizedAssignment, {\n at: node\n });\n }\n } else {\n this.raise(Errors.InvalidParenthesizedAssignment, {\n at: node\n });\n }\n }\n\n switch (node.type) {\n case \"Identifier\":\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"AssignmentPattern\":\n case \"RestElement\":\n break;\n\n case \"ObjectExpression\":\n node.type = \"ObjectPattern\";\n\n for (let i = 0, length = node.properties.length, last = length - 1; i < length; i++) {\n var _node$extra2;\n\n const prop = node.properties[i];\n const isLast = i === last;\n this.toAssignableObjectExpressionProp(prop, isLast, isLHS);\n\n if (isLast && prop.type === \"RestElement\" && (_node$extra2 = node.extra) != null && _node$extra2.trailingCommaLoc) {\n this.raise(Errors.RestTrailingComma, {\n at: node.extra.trailingCommaLoc\n });\n }\n }\n\n break;\n\n case \"ObjectProperty\":\n {\n const {\n key,\n value\n } = node;\n\n if (this.isPrivateName(key)) {\n this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start);\n }\n\n this.toAssignable(value, isLHS);\n break;\n }\n\n case \"SpreadElement\":\n {\n throw new Error(\"Internal @babel/parser error (this is a bug, please report it).\" + \" SpreadElement should be converted by .toAssignable's caller.\");\n }\n\n case \"ArrayExpression\":\n node.type = \"ArrayPattern\";\n this.toAssignableList(node.elements, (_node$extra3 = node.extra) == null ? void 0 : _node$extra3.trailingCommaLoc, isLHS);\n break;\n\n case \"AssignmentExpression\":\n if (node.operator !== \"=\") {\n this.raise(Errors.MissingEqInAssignment, {\n at: node.left.loc.end\n });\n }\n\n node.type = \"AssignmentPattern\";\n delete node.operator;\n this.toAssignable(node.left, isLHS);\n break;\n\n case \"ParenthesizedExpression\":\n this.toAssignable(parenthesized, isLHS);\n break;\n }\n }\n\n toAssignableObjectExpressionProp(prop, isLast, isLHS) {\n if (prop.type === \"ObjectMethod\") {\n this.raise(prop.kind === \"get\" || prop.kind === \"set\" ? Errors.PatternHasAccessor : Errors.PatternHasMethod, {\n at: prop.key\n });\n } else if (prop.type === \"SpreadElement\") {\n prop.type = \"RestElement\";\n const arg = prop.argument;\n this.checkToRestConversion(arg, false);\n this.toAssignable(arg, isLHS);\n\n if (!isLast) {\n this.raise(Errors.RestTrailingComma, {\n at: prop\n });\n }\n } else {\n this.toAssignable(prop, isLHS);\n }\n }\n\n toAssignableList(exprList, trailingCommaLoc, isLHS) {\n const end = exprList.length - 1;\n\n for (let i = 0; i <= end; i++) {\n const elt = exprList[i];\n if (!elt) continue;\n\n if (elt.type === \"SpreadElement\") {\n elt.type = \"RestElement\";\n const arg = elt.argument;\n this.checkToRestConversion(arg, true);\n this.toAssignable(arg, isLHS);\n } else {\n this.toAssignable(elt, isLHS);\n }\n\n if (elt.type === \"RestElement\") {\n if (i < end) {\n this.raise(Errors.RestTrailingComma, {\n at: elt\n });\n } else if (trailingCommaLoc) {\n this.raise(Errors.RestTrailingComma, {\n at: trailingCommaLoc\n });\n }\n }\n }\n }\n\n isAssignable(node, isBinding) {\n switch (node.type) {\n case \"Identifier\":\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"AssignmentPattern\":\n case \"RestElement\":\n return true;\n\n case \"ObjectExpression\":\n {\n const last = node.properties.length - 1;\n return node.properties.every((prop, i) => {\n return prop.type !== \"ObjectMethod\" && (i === last || prop.type !== \"SpreadElement\") && this.isAssignable(prop);\n });\n }\n\n case \"ObjectProperty\":\n return this.isAssignable(node.value);\n\n case \"SpreadElement\":\n return this.isAssignable(node.argument);\n\n case \"ArrayExpression\":\n return node.elements.every(element => element === null || this.isAssignable(element));\n\n case \"AssignmentExpression\":\n return node.operator === \"=\";\n\n case \"ParenthesizedExpression\":\n return this.isAssignable(node.expression);\n\n case \"MemberExpression\":\n case \"OptionalMemberExpression\":\n return !isBinding;\n\n default:\n return false;\n }\n }\n\n toReferencedList(exprList, isParenthesizedExpr) {\n return exprList;\n }\n\n toReferencedListDeep(exprList, isParenthesizedExpr) {\n this.toReferencedList(exprList, isParenthesizedExpr);\n\n for (const expr of exprList) {\n if ((expr == null ? void 0 : expr.type) === \"ArrayExpression\") {\n this.toReferencedListDeep(expr.elements);\n }\n }\n }\n\n parseSpread(refExpressionErrors, refNeedsArrowPos) {\n const node = this.startNode();\n this.next();\n node.argument = this.parseMaybeAssignAllowIn(refExpressionErrors, undefined, refNeedsArrowPos);\n return this.finishNode(node, \"SpreadElement\");\n }\n\n parseRestBinding() {\n const node = this.startNode();\n this.next();\n node.argument = this.parseBindingAtom();\n return this.finishNode(node, \"RestElement\");\n }\n\n parseBindingAtom() {\n switch (this.state.type) {\n case 0:\n {\n const node = this.startNode();\n this.next();\n node.elements = this.parseBindingList(3, 93, true);\n return this.finishNode(node, \"ArrayPattern\");\n }\n\n case 5:\n return this.parseObjectLike(8, true);\n }\n\n return this.parseIdentifier();\n }\n\n parseBindingList(close, closeCharCode, allowEmpty, allowModifiers) {\n const elts = [];\n let first = true;\n\n while (!this.eat(close)) {\n if (first) {\n first = false;\n } else {\n this.expect(12);\n }\n\n if (allowEmpty && this.match(12)) {\n elts.push(null);\n } else if (this.eat(close)) {\n break;\n } else if (this.match(21)) {\n elts.push(this.parseAssignableListItemTypes(this.parseRestBinding()));\n\n if (!this.checkCommaAfterRest(closeCharCode)) {\n this.expect(close);\n break;\n }\n } else {\n const decorators = [];\n\n if (this.match(26) && this.hasPlugin(\"decorators\")) {\n this.raise(Errors.UnsupportedParameterDecorator, {\n at: this.state.startLoc\n });\n }\n\n while (this.match(26)) {\n decorators.push(this.parseDecorator());\n }\n\n elts.push(this.parseAssignableListItem(allowModifiers, decorators));\n }\n }\n\n return elts;\n }\n\n parseBindingRestProperty(prop) {\n this.next();\n prop.argument = this.parseIdentifier();\n this.checkCommaAfterRest(125);\n return this.finishNode(prop, \"RestElement\");\n }\n\n parseBindingProperty() {\n const prop = this.startNode();\n const {\n type,\n start: startPos,\n startLoc\n } = this.state;\n\n if (type === 21) {\n return this.parseBindingRestProperty(prop);\n } else if (type === 134) {\n this.expectPlugin(\"destructuringPrivate\", startLoc);\n this.classScope.usePrivateName(this.state.value, startLoc);\n prop.key = this.parsePrivateName();\n } else {\n this.parsePropertyName(prop);\n }\n\n prop.method = false;\n this.parseObjPropValue(prop, startPos, startLoc, false, false, true, false);\n return prop;\n }\n\n parseAssignableListItem(allowModifiers, decorators) {\n const left = this.parseMaybeDefault();\n this.parseAssignableListItemTypes(left);\n const elt = this.parseMaybeDefault(left.start, left.loc.start, left);\n\n if (decorators.length) {\n left.decorators = decorators;\n }\n\n return elt;\n }\n\n parseAssignableListItemTypes(param) {\n return param;\n }\n\n parseMaybeDefault(startPos, startLoc, left) {\n var _startLoc, _startPos, _left;\n\n startLoc = (_startLoc = startLoc) != null ? _startLoc : this.state.startLoc;\n startPos = (_startPos = startPos) != null ? _startPos : this.state.start;\n left = (_left = left) != null ? _left : this.parseBindingAtom();\n if (!this.eat(29)) return left;\n const node = this.startNodeAt(startPos, startLoc);\n node.left = left;\n node.right = this.parseMaybeAssignAllowIn();\n return this.finishNode(node, \"AssignmentPattern\");\n }\n\n isValidLVal(type, isUnparenthesizedInAssign, binding) {\n return getOwn({\n AssignmentPattern: \"left\",\n RestElement: \"argument\",\n ObjectProperty: \"value\",\n ParenthesizedExpression: \"expression\",\n ArrayPattern: \"elements\",\n ObjectPattern: \"properties\"\n }, type);\n }\n\n checkLVal(expression, {\n in: ancestor,\n binding = BIND_NONE,\n checkClashes = false,\n strictModeChanged = false,\n allowingSloppyLetBinding = !(binding & BIND_SCOPE_LEXICAL),\n hasParenthesizedAncestor = false\n }) {\n var _expression$extra;\n\n const type = expression.type;\n if (this.isObjectMethod(expression)) return;\n\n if (type === \"MemberExpression\") {\n if (binding !== BIND_NONE) {\n this.raise(Errors.InvalidPropertyBindingPattern, {\n at: expression\n });\n }\n\n return;\n }\n\n if (expression.type === \"Identifier\") {\n this.checkIdentifier(expression, binding, strictModeChanged, allowingSloppyLetBinding);\n const {\n name\n } = expression;\n\n if (checkClashes) {\n if (checkClashes.has(name)) {\n this.raise(Errors.ParamDupe, {\n at: expression\n });\n } else {\n checkClashes.add(name);\n }\n }\n\n return;\n }\n\n const validity = this.isValidLVal(expression.type, !(hasParenthesizedAncestor || (_expression$extra = expression.extra) != null && _expression$extra.parenthesized) && ancestor.type === \"AssignmentExpression\", binding);\n if (validity === true) return;\n\n if (validity === false) {\n const ParseErrorClass = binding === BIND_NONE ? Errors.InvalidLhs : Errors.InvalidLhsBinding;\n this.raise(ParseErrorClass, {\n at: expression,\n ancestor: ancestor.type === \"UpdateExpression\" ? {\n type: \"UpdateExpression\",\n prefix: ancestor.prefix\n } : {\n type: ancestor.type\n }\n });\n return;\n }\n\n const [key, isParenthesizedExpression] = Array.isArray(validity) ? validity : [validity, type === \"ParenthesizedExpression\"];\n const nextAncestor = expression.type === \"ArrayPattern\" || expression.type === \"ObjectPattern\" || expression.type === \"ParenthesizedExpression\" ? expression : ancestor;\n\n for (const child of [].concat(expression[key])) {\n if (child) {\n this.checkLVal(child, {\n in: nextAncestor,\n binding,\n checkClashes,\n allowingSloppyLetBinding,\n strictModeChanged,\n hasParenthesizedAncestor: isParenthesizedExpression\n });\n }\n }\n }\n\n checkIdentifier(at, bindingType, strictModeChanged = false, allowLetBinding = !(bindingType & BIND_SCOPE_LEXICAL)) {\n if (this.state.strict && (strictModeChanged ? isStrictBindReservedWord(at.name, this.inModule) : isStrictBindOnlyReservedWord(at.name))) {\n if (bindingType === BIND_NONE) {\n this.raise(Errors.StrictEvalArguments, {\n at,\n referenceName: at.name\n });\n } else {\n this.raise(Errors.StrictEvalArgumentsBinding, {\n at,\n bindingName: at.name\n });\n }\n }\n\n if (!allowLetBinding && at.name === \"let\") {\n this.raise(Errors.LetInLexicalBinding, {\n at\n });\n }\n\n if (!(bindingType & BIND_NONE)) {\n this.declareNameFromIdentifier(at, bindingType);\n }\n }\n\n declareNameFromIdentifier(identifier, binding) {\n this.scope.declareName(identifier.name, binding, identifier.loc.start);\n }\n\n checkToRestConversion(node, allowPattern) {\n switch (node.type) {\n case \"ParenthesizedExpression\":\n this.checkToRestConversion(node.expression, allowPattern);\n break;\n\n case \"Identifier\":\n case \"MemberExpression\":\n break;\n\n case \"ArrayExpression\":\n case \"ObjectExpression\":\n if (allowPattern) break;\n\n default:\n this.raise(Errors.InvalidRestAssignmentPattern, {\n at: node\n });\n }\n }\n\n checkCommaAfterRest(close) {\n if (!this.match(12)) {\n return false;\n }\n\n this.raise(this.lookaheadCharCode() === close ? Errors.RestTrailingComma : Errors.ElementAfterRest, {\n at: this.state.startLoc\n });\n return true;\n }\n\n}\n\nclass ExpressionParser extends LValParser {\n checkProto(prop, isRecord, protoRef, refExpressionErrors) {\n if (prop.type === \"SpreadElement\" || this.isObjectMethod(prop) || prop.computed || prop.shorthand) {\n return;\n }\n\n const key = prop.key;\n const name = key.type === \"Identifier\" ? key.name : key.value;\n\n if (name === \"__proto__\") {\n if (isRecord) {\n this.raise(Errors.RecordNoProto, {\n at: key\n });\n return;\n }\n\n if (protoRef.used) {\n if (refExpressionErrors) {\n if (refExpressionErrors.doubleProtoLoc === null) {\n refExpressionErrors.doubleProtoLoc = key.loc.start;\n }\n } else {\n this.raise(Errors.DuplicateProto, {\n at: key\n });\n }\n }\n\n protoRef.used = true;\n }\n }\n\n shouldExitDescending(expr, potentialArrowAt) {\n return expr.type === \"ArrowFunctionExpression\" && expr.start === potentialArrowAt;\n }\n\n getExpression() {\n this.enterInitialScopes();\n this.nextToken();\n const expr = this.parseExpression();\n\n if (!this.match(135)) {\n this.unexpected();\n }\n\n this.finalizeRemainingComments();\n expr.comments = this.state.comments;\n expr.errors = this.state.errors;\n\n if (this.options.tokens) {\n expr.tokens = this.tokens;\n }\n\n return expr;\n }\n\n parseExpression(disallowIn, refExpressionErrors) {\n if (disallowIn) {\n return this.disallowInAnd(() => this.parseExpressionBase(refExpressionErrors));\n }\n\n return this.allowInAnd(() => this.parseExpressionBase(refExpressionErrors));\n }\n\n parseExpressionBase(refExpressionErrors) {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const expr = this.parseMaybeAssign(refExpressionErrors);\n\n if (this.match(12)) {\n const node = this.startNodeAt(startPos, startLoc);\n node.expressions = [expr];\n\n while (this.eat(12)) {\n node.expressions.push(this.parseMaybeAssign(refExpressionErrors));\n }\n\n this.toReferencedList(node.expressions);\n return this.finishNode(node, \"SequenceExpression\");\n }\n\n return expr;\n }\n\n parseMaybeAssignDisallowIn(refExpressionErrors, afterLeftParse) {\n return this.disallowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse));\n }\n\n parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse) {\n return this.allowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse));\n }\n\n setOptionalParametersError(refExpressionErrors, resultError) {\n var _resultError$loc;\n\n refExpressionErrors.optionalParametersLoc = (_resultError$loc = resultError == null ? void 0 : resultError.loc) != null ? _resultError$loc : this.state.startLoc;\n }\n\n parseMaybeAssign(refExpressionErrors, afterLeftParse) {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n\n if (this.isContextual(105)) {\n if (this.prodParam.hasYield) {\n let left = this.parseYield();\n\n if (afterLeftParse) {\n left = afterLeftParse.call(this, left, startPos, startLoc);\n }\n\n return left;\n }\n }\n\n let ownExpressionErrors;\n\n if (refExpressionErrors) {\n ownExpressionErrors = false;\n } else {\n refExpressionErrors = new ExpressionErrors();\n ownExpressionErrors = true;\n }\n\n const {\n type\n } = this.state;\n\n if (type === 10 || tokenIsIdentifier(type)) {\n this.state.potentialArrowAt = this.state.start;\n }\n\n let left = this.parseMaybeConditional(refExpressionErrors);\n\n if (afterLeftParse) {\n left = afterLeftParse.call(this, left, startPos, startLoc);\n }\n\n if (tokenIsAssignment(this.state.type)) {\n const node = this.startNodeAt(startPos, startLoc);\n const operator = this.state.value;\n node.operator = operator;\n\n if (this.match(29)) {\n this.toAssignable(left, true);\n node.left = left;\n\n if (refExpressionErrors.doubleProtoLoc != null && refExpressionErrors.doubleProtoLoc.index >= startPos) {\n refExpressionErrors.doubleProtoLoc = null;\n }\n\n if (refExpressionErrors.shorthandAssignLoc != null && refExpressionErrors.shorthandAssignLoc.index >= startPos) {\n refExpressionErrors.shorthandAssignLoc = null;\n }\n\n if (refExpressionErrors.privateKeyLoc != null && refExpressionErrors.privateKeyLoc.index >= startPos) {\n this.checkDestructuringPrivate(refExpressionErrors);\n refExpressionErrors.privateKeyLoc = null;\n }\n } else {\n node.left = left;\n }\n\n this.next();\n node.right = this.parseMaybeAssign();\n this.checkLVal(left, {\n in: this.finishNode(node, \"AssignmentExpression\")\n });\n return node;\n } else if (ownExpressionErrors) {\n this.checkExpressionErrors(refExpressionErrors, true);\n }\n\n return left;\n }\n\n parseMaybeConditional(refExpressionErrors) {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const potentialArrowAt = this.state.potentialArrowAt;\n const expr = this.parseExprOps(refExpressionErrors);\n\n if (this.shouldExitDescending(expr, potentialArrowAt)) {\n return expr;\n }\n\n return this.parseConditional(expr, startPos, startLoc, refExpressionErrors);\n }\n\n parseConditional(expr, startPos, startLoc, refExpressionErrors) {\n if (this.eat(17)) {\n const node = this.startNodeAt(startPos, startLoc);\n node.test = expr;\n node.consequent = this.parseMaybeAssignAllowIn();\n this.expect(14);\n node.alternate = this.parseMaybeAssign();\n return this.finishNode(node, \"ConditionalExpression\");\n }\n\n return expr;\n }\n\n parseMaybeUnaryOrPrivate(refExpressionErrors) {\n return this.match(134) ? this.parsePrivateName() : this.parseMaybeUnary(refExpressionErrors);\n }\n\n parseExprOps(refExpressionErrors) {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const potentialArrowAt = this.state.potentialArrowAt;\n const expr = this.parseMaybeUnaryOrPrivate(refExpressionErrors);\n\n if (this.shouldExitDescending(expr, potentialArrowAt)) {\n return expr;\n }\n\n return this.parseExprOp(expr, startPos, startLoc, -1);\n }\n\n parseExprOp(left, leftStartPos, leftStartLoc, minPrec) {\n if (this.isPrivateName(left)) {\n const value = this.getPrivateNameSV(left);\n\n if (minPrec >= tokenOperatorPrecedence(58) || !this.prodParam.hasIn || !this.match(58)) {\n this.raise(Errors.PrivateInExpectedIn, {\n at: left,\n identifierName: value\n });\n }\n\n this.classScope.usePrivateName(value, left.loc.start);\n }\n\n const op = this.state.type;\n\n if (tokenIsOperator(op) && (this.prodParam.hasIn || !this.match(58))) {\n let prec = tokenOperatorPrecedence(op);\n\n if (prec > minPrec) {\n if (op === 39) {\n this.expectPlugin(\"pipelineOperator\");\n\n if (this.state.inFSharpPipelineDirectBody) {\n return left;\n }\n\n this.checkPipelineAtInfixOperator(left, leftStartLoc);\n }\n\n const node = this.startNodeAt(leftStartPos, leftStartLoc);\n node.left = left;\n node.operator = this.state.value;\n const logical = op === 41 || op === 42;\n const coalesce = op === 40;\n\n if (coalesce) {\n prec = tokenOperatorPrecedence(42);\n }\n\n this.next();\n\n if (op === 39 && this.hasPlugin([\"pipelineOperator\", {\n proposal: \"minimal\"\n }])) {\n if (this.state.type === 96 && this.prodParam.hasAwait) {\n throw this.raise(Errors.UnexpectedAwaitAfterPipelineBody, {\n at: this.state.startLoc\n });\n }\n }\n\n node.right = this.parseExprOpRightExpr(op, prec);\n this.finishNode(node, logical || coalesce ? \"LogicalExpression\" : \"BinaryExpression\");\n const nextOp = this.state.type;\n\n if (coalesce && (nextOp === 41 || nextOp === 42) || logical && nextOp === 40) {\n throw this.raise(Errors.MixingCoalesceWithLogical, {\n at: this.state.startLoc\n });\n }\n\n return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec);\n }\n }\n\n return left;\n }\n\n parseExprOpRightExpr(op, prec) {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n\n switch (op) {\n case 39:\n switch (this.getPluginOption(\"pipelineOperator\", \"proposal\")) {\n case \"hack\":\n return this.withTopicBindingContext(() => {\n return this.parseHackPipeBody();\n });\n\n case \"smart\":\n return this.withTopicBindingContext(() => {\n if (this.prodParam.hasYield && this.isContextual(105)) {\n throw this.raise(Errors.PipeBodyIsTighter, {\n at: this.state.startLoc\n });\n }\n\n return this.parseSmartPipelineBodyInStyle(this.parseExprOpBaseRightExpr(op, prec), startPos, startLoc);\n });\n\n case \"fsharp\":\n return this.withSoloAwaitPermittingContext(() => {\n return this.parseFSharpPipelineBody(prec);\n });\n }\n\n default:\n return this.parseExprOpBaseRightExpr(op, prec);\n }\n }\n\n parseExprOpBaseRightExpr(op, prec) {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n return this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startPos, startLoc, tokenIsRightAssociative(op) ? prec - 1 : prec);\n }\n\n parseHackPipeBody() {\n var _body$extra;\n\n const {\n startLoc\n } = this.state;\n const body = this.parseMaybeAssign();\n const requiredParentheses = UnparenthesizedPipeBodyDescriptions.has(body.type);\n\n if (requiredParentheses && !((_body$extra = body.extra) != null && _body$extra.parenthesized)) {\n this.raise(Errors.PipeUnparenthesizedBody, {\n at: startLoc,\n type: body.type\n });\n }\n\n if (!this.topicReferenceWasUsedInCurrentContext()) {\n this.raise(Errors.PipeTopicUnused, {\n at: startLoc\n });\n }\n\n return body;\n }\n\n checkExponentialAfterUnary(node) {\n if (this.match(57)) {\n this.raise(Errors.UnexpectedTokenUnaryExponentiation, {\n at: node.argument\n });\n }\n }\n\n parseMaybeUnary(refExpressionErrors, sawUnary) {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const isAwait = this.isContextual(96);\n\n if (isAwait && this.isAwaitAllowed()) {\n this.next();\n const expr = this.parseAwait(startPos, startLoc);\n if (!sawUnary) this.checkExponentialAfterUnary(expr);\n return expr;\n }\n\n const update = this.match(34);\n const node = this.startNode();\n\n if (tokenIsPrefix(this.state.type)) {\n node.operator = this.state.value;\n node.prefix = true;\n\n if (this.match(72)) {\n this.expectPlugin(\"throwExpressions\");\n }\n\n const isDelete = this.match(89);\n this.next();\n node.argument = this.parseMaybeUnary(null, true);\n this.checkExpressionErrors(refExpressionErrors, true);\n\n if (this.state.strict && isDelete) {\n const arg = node.argument;\n\n if (arg.type === \"Identifier\") {\n this.raise(Errors.StrictDelete, {\n at: node\n });\n } else if (this.hasPropertyAsPrivateName(arg)) {\n this.raise(Errors.DeletePrivateField, {\n at: node\n });\n }\n }\n\n if (!update) {\n if (!sawUnary) this.checkExponentialAfterUnary(node);\n return this.finishNode(node, \"UnaryExpression\");\n }\n }\n\n const expr = this.parseUpdate(node, update, refExpressionErrors);\n\n if (isAwait) {\n const {\n type\n } = this.state;\n const startsExpr = this.hasPlugin(\"v8intrinsic\") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(54);\n\n if (startsExpr && !this.isAmbiguousAwait()) {\n this.raiseOverwrite(Errors.AwaitNotInAsyncContext, {\n at: startLoc\n });\n return this.parseAwait(startPos, startLoc);\n }\n }\n\n return expr;\n }\n\n parseUpdate(node, update, refExpressionErrors) {\n if (update) {\n this.checkLVal(node.argument, {\n in: this.finishNode(node, \"UpdateExpression\")\n });\n return node;\n }\n\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n let expr = this.parseExprSubscripts(refExpressionErrors);\n if (this.checkExpressionErrors(refExpressionErrors, false)) return expr;\n\n while (tokenIsPostfix(this.state.type) && !this.canInsertSemicolon()) {\n const node = this.startNodeAt(startPos, startLoc);\n node.operator = this.state.value;\n node.prefix = false;\n node.argument = expr;\n this.next();\n this.checkLVal(expr, {\n in: expr = this.finishNode(node, \"UpdateExpression\")\n });\n }\n\n return expr;\n }\n\n parseExprSubscripts(refExpressionErrors) {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const potentialArrowAt = this.state.potentialArrowAt;\n const expr = this.parseExprAtom(refExpressionErrors);\n\n if (this.shouldExitDescending(expr, potentialArrowAt)) {\n return expr;\n }\n\n return this.parseSubscripts(expr, startPos, startLoc);\n }\n\n parseSubscripts(base, startPos, startLoc, noCalls) {\n const state = {\n optionalChainMember: false,\n maybeAsyncArrow: this.atPossibleAsyncArrow(base),\n stop: false\n };\n\n do {\n base = this.parseSubscript(base, startPos, startLoc, noCalls, state);\n state.maybeAsyncArrow = false;\n } while (!state.stop);\n\n return base;\n }\n\n parseSubscript(base, startPos, startLoc, noCalls, state) {\n const {\n type\n } = this.state;\n\n if (!noCalls && type === 15) {\n return this.parseBind(base, startPos, startLoc, noCalls, state);\n } else if (tokenIsTemplate(type)) {\n return this.parseTaggedTemplateExpression(base, startPos, startLoc, state);\n }\n\n let optional = false;\n\n if (type === 18) {\n if (noCalls && this.lookaheadCharCode() === 40) {\n state.stop = true;\n return base;\n }\n\n state.optionalChainMember = optional = true;\n this.next();\n }\n\n if (!noCalls && this.match(10)) {\n return this.parseCoverCallAndAsyncArrowHead(base, startPos, startLoc, state, optional);\n } else {\n const computed = this.eat(0);\n\n if (computed || optional || this.eat(16)) {\n return this.parseMember(base, startPos, startLoc, state, computed, optional);\n } else {\n state.stop = true;\n return base;\n }\n }\n }\n\n parseMember(base, startPos, startLoc, state, computed, optional) {\n const node = this.startNodeAt(startPos, startLoc);\n node.object = base;\n node.computed = computed;\n\n if (computed) {\n node.property = this.parseExpression();\n this.expect(3);\n } else if (this.match(134)) {\n if (base.type === \"Super\") {\n this.raise(Errors.SuperPrivateField, {\n at: startLoc\n });\n }\n\n this.classScope.usePrivateName(this.state.value, this.state.startLoc);\n node.property = this.parsePrivateName();\n } else {\n node.property = this.parseIdentifier(true);\n }\n\n if (state.optionalChainMember) {\n node.optional = optional;\n return this.finishNode(node, \"OptionalMemberExpression\");\n } else {\n return this.finishNode(node, \"MemberExpression\");\n }\n }\n\n parseBind(base, startPos, startLoc, noCalls, state) {\n const node = this.startNodeAt(startPos, startLoc);\n node.object = base;\n this.next();\n node.callee = this.parseNoCallExpr();\n state.stop = true;\n return this.parseSubscripts(this.finishNode(node, \"BindExpression\"), startPos, startLoc, noCalls);\n }\n\n parseCoverCallAndAsyncArrowHead(base, startPos, startLoc, state, optional) {\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n let refExpressionErrors = null;\n this.state.maybeInArrowParameters = true;\n this.next();\n let node = this.startNodeAt(startPos, startLoc);\n node.callee = base;\n const {\n maybeAsyncArrow,\n optionalChainMember\n } = state;\n\n if (maybeAsyncArrow) {\n this.expressionScope.enter(newAsyncArrowScope());\n refExpressionErrors = new ExpressionErrors();\n }\n\n if (optionalChainMember) {\n node.optional = optional;\n }\n\n if (optional) {\n node.arguments = this.parseCallExpressionArguments(11);\n } else {\n node.arguments = this.parseCallExpressionArguments(11, base.type === \"Import\", base.type !== \"Super\", node, refExpressionErrors);\n }\n\n this.finishCallExpression(node, optionalChainMember);\n\n if (maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) {\n state.stop = true;\n this.checkDestructuringPrivate(refExpressionErrors);\n this.expressionScope.validateAsPattern();\n this.expressionScope.exit();\n node = this.parseAsyncArrowFromCallExpression(this.startNodeAt(startPos, startLoc), node);\n } else {\n if (maybeAsyncArrow) {\n this.checkExpressionErrors(refExpressionErrors, true);\n this.expressionScope.exit();\n }\n\n this.toReferencedArguments(node);\n }\n\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n return node;\n }\n\n toReferencedArguments(node, isParenthesizedExpr) {\n this.toReferencedListDeep(node.arguments, isParenthesizedExpr);\n }\n\n parseTaggedTemplateExpression(base, startPos, startLoc, state) {\n const node = this.startNodeAt(startPos, startLoc);\n node.tag = base;\n node.quasi = this.parseTemplate(true);\n\n if (state.optionalChainMember) {\n this.raise(Errors.OptionalChainingNoTemplate, {\n at: startLoc\n });\n }\n\n return this.finishNode(node, \"TaggedTemplateExpression\");\n }\n\n atPossibleAsyncArrow(base) {\n return base.type === \"Identifier\" && base.name === \"async\" && this.state.lastTokEndLoc.index === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && base.start === this.state.potentialArrowAt;\n }\n\n finishCallExpression(node, optional) {\n if (node.callee.type === \"Import\") {\n if (node.arguments.length === 2) {\n {\n if (!this.hasPlugin(\"moduleAttributes\")) {\n this.expectPlugin(\"importAssertions\");\n }\n }\n }\n\n if (node.arguments.length === 0 || node.arguments.length > 2) {\n this.raise(Errors.ImportCallArity, {\n at: node,\n maxArgumentCount: this.hasPlugin(\"importAssertions\") || this.hasPlugin(\"moduleAttributes\") ? 2 : 1\n });\n } else {\n for (const arg of node.arguments) {\n if (arg.type === \"SpreadElement\") {\n this.raise(Errors.ImportCallSpreadArgument, {\n at: arg\n });\n }\n }\n }\n }\n\n return this.finishNode(node, optional ? \"OptionalCallExpression\" : \"CallExpression\");\n }\n\n parseCallExpressionArguments(close, dynamicImport, allowPlaceholder, nodeForExtra, refExpressionErrors) {\n const elts = [];\n let first = true;\n const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n this.state.inFSharpPipelineDirectBody = false;\n\n while (!this.eat(close)) {\n if (first) {\n first = false;\n } else {\n this.expect(12);\n\n if (this.match(close)) {\n if (dynamicImport && !this.hasPlugin(\"importAssertions\") && !this.hasPlugin(\"moduleAttributes\")) {\n this.raise(Errors.ImportCallArgumentTrailingComma, {\n at: this.state.lastTokStartLoc\n });\n }\n\n if (nodeForExtra) {\n this.addTrailingCommaExtraToNode(nodeForExtra);\n }\n\n this.next();\n break;\n }\n }\n\n elts.push(this.parseExprListItem(false, refExpressionErrors, allowPlaceholder));\n }\n\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n return elts;\n }\n\n shouldParseAsyncArrow() {\n return this.match(19) && !this.canInsertSemicolon();\n }\n\n parseAsyncArrowFromCallExpression(node, call) {\n var _call$extra;\n\n this.resetPreviousNodeTrailingComments(call);\n this.expect(19);\n this.parseArrowExpression(node, call.arguments, true, (_call$extra = call.extra) == null ? void 0 : _call$extra.trailingCommaLoc);\n\n if (call.innerComments) {\n setInnerComments(node, call.innerComments);\n }\n\n if (call.callee.trailingComments) {\n setInnerComments(node, call.callee.trailingComments);\n }\n\n return node;\n }\n\n parseNoCallExpr() {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n return this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true);\n }\n\n parseExprAtom(refExpressionErrors) {\n let node;\n const {\n type\n } = this.state;\n\n switch (type) {\n case 79:\n return this.parseSuper();\n\n case 83:\n node = this.startNode();\n this.next();\n\n if (this.match(16)) {\n return this.parseImportMetaProperty(node);\n }\n\n if (!this.match(10)) {\n this.raise(Errors.UnsupportedImport, {\n at: this.state.lastTokStartLoc\n });\n }\n\n return this.finishNode(node, \"Import\");\n\n case 78:\n node = this.startNode();\n this.next();\n return this.finishNode(node, \"ThisExpression\");\n\n case 90:\n {\n return this.parseDo(this.startNode(), false);\n }\n\n case 56:\n case 31:\n {\n this.readRegexp();\n return this.parseRegExpLiteral(this.state.value);\n }\n\n case 130:\n return this.parseNumericLiteral(this.state.value);\n\n case 131:\n return this.parseBigIntLiteral(this.state.value);\n\n case 132:\n return this.parseDecimalLiteral(this.state.value);\n\n case 129:\n return this.parseStringLiteral(this.state.value);\n\n case 84:\n return this.parseNullLiteral();\n\n case 85:\n return this.parseBooleanLiteral(true);\n\n case 86:\n return this.parseBooleanLiteral(false);\n\n case 10:\n {\n const canBeArrow = this.state.potentialArrowAt === this.state.start;\n return this.parseParenAndDistinguishExpression(canBeArrow);\n }\n\n case 2:\n case 1:\n {\n return this.parseArrayLike(this.state.type === 2 ? 4 : 3, false, true);\n }\n\n case 0:\n {\n return this.parseArrayLike(3, true, false, refExpressionErrors);\n }\n\n case 6:\n case 7:\n {\n return this.parseObjectLike(this.state.type === 6 ? 9 : 8, false, true);\n }\n\n case 5:\n {\n return this.parseObjectLike(8, false, false, refExpressionErrors);\n }\n\n case 68:\n return this.parseFunctionOrFunctionSent();\n\n case 26:\n this.parseDecorators();\n\n case 80:\n node = this.startNode();\n this.takeDecorators(node);\n return this.parseClass(node, false);\n\n case 77:\n return this.parseNewOrNewTarget();\n\n case 25:\n case 24:\n return this.parseTemplate(false);\n\n case 15:\n {\n node = this.startNode();\n this.next();\n node.object = null;\n const callee = node.callee = this.parseNoCallExpr();\n\n if (callee.type === \"MemberExpression\") {\n return this.finishNode(node, \"BindExpression\");\n } else {\n throw this.raise(Errors.UnsupportedBind, {\n at: callee\n });\n }\n }\n\n case 134:\n {\n this.raise(Errors.PrivateInExpectedIn, {\n at: this.state.startLoc,\n identifierName: this.state.value\n });\n return this.parsePrivateName();\n }\n\n case 33:\n {\n return this.parseTopicReferenceThenEqualsSign(54, \"%\");\n }\n\n case 32:\n {\n return this.parseTopicReferenceThenEqualsSign(44, \"^\");\n }\n\n case 37:\n case 38:\n {\n return this.parseTopicReference(\"hack\");\n }\n\n case 44:\n case 54:\n case 27:\n {\n const pipeProposal = this.getPluginOption(\"pipelineOperator\", \"proposal\");\n\n if (pipeProposal) {\n return this.parseTopicReference(pipeProposal);\n } else {\n throw this.unexpected();\n }\n }\n\n case 47:\n {\n const lookaheadCh = this.input.codePointAt(this.nextTokenStart());\n\n if (isIdentifierStart(lookaheadCh) || lookaheadCh === 62) {\n this.expectOnePlugin([\"jsx\", \"flow\", \"typescript\"]);\n break;\n } else {\n throw this.unexpected();\n }\n }\n\n default:\n if (tokenIsIdentifier(type)) {\n if (this.isContextual(123) && this.lookaheadCharCode() === 123 && !this.hasFollowingLineBreak()) {\n return this.parseModuleExpression();\n }\n\n const canBeArrow = this.state.potentialArrowAt === this.state.start;\n const containsEsc = this.state.containsEsc;\n const id = this.parseIdentifier();\n\n if (!containsEsc && id.name === \"async\" && !this.canInsertSemicolon()) {\n const {\n type\n } = this.state;\n\n if (type === 68) {\n this.resetPreviousNodeTrailingComments(id);\n this.next();\n return this.parseFunction(this.startNodeAtNode(id), undefined, true);\n } else if (tokenIsIdentifier(type)) {\n if (this.lookaheadCharCode() === 61) {\n return this.parseAsyncArrowUnaryFunction(this.startNodeAtNode(id));\n } else {\n return id;\n }\n } else if (type === 90) {\n this.resetPreviousNodeTrailingComments(id);\n return this.parseDo(this.startNodeAtNode(id), true);\n }\n }\n\n if (canBeArrow && this.match(19) && !this.canInsertSemicolon()) {\n this.next();\n return this.parseArrowExpression(this.startNodeAtNode(id), [id], false);\n }\n\n return id;\n } else {\n throw this.unexpected();\n }\n\n }\n }\n\n parseTopicReferenceThenEqualsSign(topicTokenType, topicTokenValue) {\n const pipeProposal = this.getPluginOption(\"pipelineOperator\", \"proposal\");\n\n if (pipeProposal) {\n this.state.type = topicTokenType;\n this.state.value = topicTokenValue;\n this.state.pos--;\n this.state.end--;\n this.state.endLoc = createPositionWithColumnOffset(this.state.endLoc, -1);\n return this.parseTopicReference(pipeProposal);\n } else {\n throw this.unexpected();\n }\n }\n\n parseTopicReference(pipeProposal) {\n const node = this.startNode();\n const startLoc = this.state.startLoc;\n const tokenType = this.state.type;\n this.next();\n return this.finishTopicReference(node, startLoc, pipeProposal, tokenType);\n }\n\n finishTopicReference(node, startLoc, pipeProposal, tokenType) {\n if (this.testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType)) {\n const nodeType = pipeProposal === \"smart\" ? \"PipelinePrimaryTopicReference\" : \"TopicReference\";\n\n if (!this.topicReferenceIsAllowedInCurrentContext()) {\n this.raise(pipeProposal === \"smart\" ? Errors.PrimaryTopicNotAllowed : Errors.PipeTopicUnbound, {\n at: startLoc\n });\n }\n\n this.registerTopicReference();\n return this.finishNode(node, nodeType);\n } else {\n throw this.raise(Errors.PipeTopicUnconfiguredToken, {\n at: startLoc,\n token: tokenLabelName(tokenType)\n });\n }\n }\n\n testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType) {\n switch (pipeProposal) {\n case \"hack\":\n {\n return this.hasPlugin([\"pipelineOperator\", {\n topicToken: tokenLabelName(tokenType)\n }]);\n }\n\n case \"smart\":\n return tokenType === 27;\n\n default:\n throw this.raise(Errors.PipeTopicRequiresHackPipes, {\n at: startLoc\n });\n }\n }\n\n parseAsyncArrowUnaryFunction(node) {\n this.prodParam.enter(functionFlags(true, this.prodParam.hasYield));\n const params = [this.parseIdentifier()];\n this.prodParam.exit();\n\n if (this.hasPrecedingLineBreak()) {\n this.raise(Errors.LineTerminatorBeforeArrow, {\n at: this.state.curPosition()\n });\n }\n\n this.expect(19);\n this.parseArrowExpression(node, params, true);\n return node;\n }\n\n parseDo(node, isAsync) {\n this.expectPlugin(\"doExpressions\");\n\n if (isAsync) {\n this.expectPlugin(\"asyncDoExpressions\");\n }\n\n node.async = isAsync;\n this.next();\n const oldLabels = this.state.labels;\n this.state.labels = [];\n\n if (isAsync) {\n this.prodParam.enter(PARAM_AWAIT);\n node.body = this.parseBlock();\n this.prodParam.exit();\n } else {\n node.body = this.parseBlock();\n }\n\n this.state.labels = oldLabels;\n return this.finishNode(node, \"DoExpression\");\n }\n\n parseSuper() {\n const node = this.startNode();\n this.next();\n\n if (this.match(10) && !this.scope.allowDirectSuper && !this.options.allowSuperOutsideMethod) {\n this.raise(Errors.SuperNotAllowed, {\n at: node\n });\n } else if (!this.scope.allowSuper && !this.options.allowSuperOutsideMethod) {\n this.raise(Errors.UnexpectedSuper, {\n at: node\n });\n }\n\n if (!this.match(10) && !this.match(0) && !this.match(16)) {\n this.raise(Errors.UnsupportedSuper, {\n at: node\n });\n }\n\n return this.finishNode(node, \"Super\");\n }\n\n parsePrivateName() {\n const node = this.startNode();\n const id = this.startNodeAt(this.state.start + 1, new Position(this.state.curLine, this.state.start + 1 - this.state.lineStart, this.state.start + 1));\n const name = this.state.value;\n this.next();\n node.id = this.createIdentifier(id, name);\n return this.finishNode(node, \"PrivateName\");\n }\n\n parseFunctionOrFunctionSent() {\n const node = this.startNode();\n this.next();\n\n if (this.prodParam.hasYield && this.match(16)) {\n const meta = this.createIdentifier(this.startNodeAtNode(node), \"function\");\n this.next();\n\n if (this.match(102)) {\n this.expectPlugin(\"functionSent\");\n } else if (!this.hasPlugin(\"functionSent\")) {\n this.unexpected();\n }\n\n return this.parseMetaProperty(node, meta, \"sent\");\n }\n\n return this.parseFunction(node);\n }\n\n parseMetaProperty(node, meta, propertyName) {\n node.meta = meta;\n const containsEsc = this.state.containsEsc;\n node.property = this.parseIdentifier(true);\n\n if (node.property.name !== propertyName || containsEsc) {\n this.raise(Errors.UnsupportedMetaProperty, {\n at: node.property,\n target: meta.name,\n onlyValidPropertyName: propertyName\n });\n }\n\n return this.finishNode(node, \"MetaProperty\");\n }\n\n parseImportMetaProperty(node) {\n const id = this.createIdentifier(this.startNodeAtNode(node), \"import\");\n this.next();\n\n if (this.isContextual(100)) {\n if (!this.inModule) {\n this.raise(Errors.ImportMetaOutsideModule, {\n at: id\n });\n }\n\n this.sawUnambiguousESM = true;\n }\n\n return this.parseMetaProperty(node, id, \"meta\");\n }\n\n parseLiteralAtNode(value, type, node) {\n this.addExtra(node, \"rawValue\", value);\n this.addExtra(node, \"raw\", this.input.slice(node.start, this.state.end));\n node.value = value;\n this.next();\n return this.finishNode(node, type);\n }\n\n parseLiteral(value, type) {\n const node = this.startNode();\n return this.parseLiteralAtNode(value, type, node);\n }\n\n parseStringLiteral(value) {\n return this.parseLiteral(value, \"StringLiteral\");\n }\n\n parseNumericLiteral(value) {\n return this.parseLiteral(value, \"NumericLiteral\");\n }\n\n parseBigIntLiteral(value) {\n return this.parseLiteral(value, \"BigIntLiteral\");\n }\n\n parseDecimalLiteral(value) {\n return this.parseLiteral(value, \"DecimalLiteral\");\n }\n\n parseRegExpLiteral(value) {\n const node = this.parseLiteral(value.value, \"RegExpLiteral\");\n node.pattern = value.pattern;\n node.flags = value.flags;\n return node;\n }\n\n parseBooleanLiteral(value) {\n const node = this.startNode();\n node.value = value;\n this.next();\n return this.finishNode(node, \"BooleanLiteral\");\n }\n\n parseNullLiteral() {\n const node = this.startNode();\n this.next();\n return this.finishNode(node, \"NullLiteral\");\n }\n\n parseParenAndDistinguishExpression(canBeArrow) {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n let val;\n this.next();\n this.expressionScope.enter(newArrowHeadScope());\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n this.state.maybeInArrowParameters = true;\n this.state.inFSharpPipelineDirectBody = false;\n const innerStartPos = this.state.start;\n const innerStartLoc = this.state.startLoc;\n const exprList = [];\n const refExpressionErrors = new ExpressionErrors();\n let first = true;\n let spreadStartLoc;\n let optionalCommaStartLoc;\n\n while (!this.match(11)) {\n if (first) {\n first = false;\n } else {\n this.expect(12, refExpressionErrors.optionalParametersLoc === null ? null : refExpressionErrors.optionalParametersLoc);\n\n if (this.match(11)) {\n optionalCommaStartLoc = this.state.startLoc;\n break;\n }\n }\n\n if (this.match(21)) {\n const spreadNodeStartPos = this.state.start;\n const spreadNodeStartLoc = this.state.startLoc;\n spreadStartLoc = this.state.startLoc;\n exprList.push(this.parseParenItem(this.parseRestBinding(), spreadNodeStartPos, spreadNodeStartLoc));\n\n if (!this.checkCommaAfterRest(41)) {\n break;\n }\n } else {\n exprList.push(this.parseMaybeAssignAllowIn(refExpressionErrors, this.parseParenItem));\n }\n }\n\n const innerEndLoc = this.state.lastTokEndLoc;\n this.expect(11);\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n let arrowNode = this.startNodeAt(startPos, startLoc);\n\n if (canBeArrow && this.shouldParseArrow(exprList) && (arrowNode = this.parseArrow(arrowNode))) {\n this.checkDestructuringPrivate(refExpressionErrors);\n this.expressionScope.validateAsPattern();\n this.expressionScope.exit();\n this.parseArrowExpression(arrowNode, exprList, false);\n return arrowNode;\n }\n\n this.expressionScope.exit();\n\n if (!exprList.length) {\n this.unexpected(this.state.lastTokStartLoc);\n }\n\n if (optionalCommaStartLoc) this.unexpected(optionalCommaStartLoc);\n if (spreadStartLoc) this.unexpected(spreadStartLoc);\n this.checkExpressionErrors(refExpressionErrors, true);\n this.toReferencedListDeep(exprList, true);\n\n if (exprList.length > 1) {\n val = this.startNodeAt(innerStartPos, innerStartLoc);\n val.expressions = exprList;\n this.finishNode(val, \"SequenceExpression\");\n this.resetEndLocation(val, innerEndLoc);\n } else {\n val = exprList[0];\n }\n\n return this.wrapParenthesis(startPos, startLoc, val);\n }\n\n wrapParenthesis(startPos, startLoc, expression) {\n if (!this.options.createParenthesizedExpressions) {\n this.addExtra(expression, \"parenthesized\", true);\n this.addExtra(expression, \"parenStart\", startPos);\n this.takeSurroundingComments(expression, startPos, this.state.lastTokEndLoc.index);\n return expression;\n }\n\n const parenExpression = this.startNodeAt(startPos, startLoc);\n parenExpression.expression = expression;\n this.finishNode(parenExpression, \"ParenthesizedExpression\");\n return parenExpression;\n }\n\n shouldParseArrow(params) {\n return !this.canInsertSemicolon();\n }\n\n parseArrow(node) {\n if (this.eat(19)) {\n return node;\n }\n }\n\n parseParenItem(node, startPos, startLoc) {\n return node;\n }\n\n parseNewOrNewTarget() {\n const node = this.startNode();\n this.next();\n\n if (this.match(16)) {\n const meta = this.createIdentifier(this.startNodeAtNode(node), \"new\");\n this.next();\n const metaProp = this.parseMetaProperty(node, meta, \"target\");\n\n if (!this.scope.inNonArrowFunction && !this.scope.inClass) {\n this.raise(Errors.UnexpectedNewTarget, {\n at: metaProp\n });\n }\n\n return metaProp;\n }\n\n return this.parseNew(node);\n }\n\n parseNew(node) {\n this.parseNewCallee(node);\n\n if (this.eat(10)) {\n const args = this.parseExprList(11);\n this.toReferencedList(args);\n node.arguments = args;\n } else {\n node.arguments = [];\n }\n\n return this.finishNode(node, \"NewExpression\");\n }\n\n parseNewCallee(node) {\n node.callee = this.parseNoCallExpr();\n\n if (node.callee.type === \"Import\") {\n this.raise(Errors.ImportCallNotNewExpression, {\n at: node.callee\n });\n } else if (this.isOptionalChain(node.callee)) {\n this.raise(Errors.OptionalChainingNoNew, {\n at: this.state.lastTokEndLoc\n });\n } else if (this.eat(18)) {\n this.raise(Errors.OptionalChainingNoNew, {\n at: this.state.startLoc\n });\n }\n }\n\n parseTemplateElement(isTagged) {\n const {\n start,\n startLoc,\n end,\n value\n } = this.state;\n const elemStart = start + 1;\n const elem = this.startNodeAt(elemStart, createPositionWithColumnOffset(startLoc, 1));\n\n if (value === null) {\n if (!isTagged) {\n this.raise(Errors.InvalidEscapeSequenceTemplate, {\n at: createPositionWithColumnOffset(startLoc, 2)\n });\n }\n }\n\n const isTail = this.match(24);\n const endOffset = isTail ? -1 : -2;\n const elemEnd = end + endOffset;\n elem.value = {\n raw: this.input.slice(elemStart, elemEnd).replace(/\\r\\n?/g, \"\\n\"),\n cooked: value === null ? null : value.slice(1, endOffset)\n };\n elem.tail = isTail;\n this.next();\n this.finishNode(elem, \"TemplateElement\");\n this.resetEndLocation(elem, createPositionWithColumnOffset(this.state.lastTokEndLoc, endOffset));\n return elem;\n }\n\n parseTemplate(isTagged) {\n const node = this.startNode();\n node.expressions = [];\n let curElt = this.parseTemplateElement(isTagged);\n node.quasis = [curElt];\n\n while (!curElt.tail) {\n node.expressions.push(this.parseTemplateSubstitution());\n this.readTemplateContinuation();\n node.quasis.push(curElt = this.parseTemplateElement(isTagged));\n }\n\n return this.finishNode(node, \"TemplateLiteral\");\n }\n\n parseTemplateSubstitution() {\n return this.parseExpression();\n }\n\n parseObjectLike(close, isPattern, isRecord, refExpressionErrors) {\n if (isRecord) {\n this.expectPlugin(\"recordAndTuple\");\n }\n\n const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n this.state.inFSharpPipelineDirectBody = false;\n const propHash = Object.create(null);\n let first = true;\n const node = this.startNode();\n node.properties = [];\n this.next();\n\n while (!this.match(close)) {\n if (first) {\n first = false;\n } else {\n this.expect(12);\n\n if (this.match(close)) {\n this.addTrailingCommaExtraToNode(node);\n break;\n }\n }\n\n let prop;\n\n if (isPattern) {\n prop = this.parseBindingProperty();\n } else {\n prop = this.parsePropertyDefinition(refExpressionErrors);\n this.checkProto(prop, isRecord, propHash, refExpressionErrors);\n }\n\n if (isRecord && !this.isObjectProperty(prop) && prop.type !== \"SpreadElement\") {\n this.raise(Errors.InvalidRecordProperty, {\n at: prop\n });\n }\n\n if (prop.shorthand) {\n this.addExtra(prop, \"shorthand\", true);\n }\n\n node.properties.push(prop);\n }\n\n this.next();\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n let type = \"ObjectExpression\";\n\n if (isPattern) {\n type = \"ObjectPattern\";\n } else if (isRecord) {\n type = \"RecordExpression\";\n }\n\n return this.finishNode(node, type);\n }\n\n addTrailingCommaExtraToNode(node) {\n this.addExtra(node, \"trailingComma\", this.state.lastTokStart);\n this.addExtra(node, \"trailingCommaLoc\", this.state.lastTokStartLoc, false);\n }\n\n maybeAsyncOrAccessorProp(prop) {\n return !prop.computed && prop.key.type === \"Identifier\" && (this.isLiteralPropertyName() || this.match(0) || this.match(55));\n }\n\n parsePropertyDefinition(refExpressionErrors) {\n let decorators = [];\n\n if (this.match(26)) {\n if (this.hasPlugin(\"decorators\")) {\n this.raise(Errors.UnsupportedPropertyDecorator, {\n at: this.state.startLoc\n });\n }\n\n while (this.match(26)) {\n decorators.push(this.parseDecorator());\n }\n }\n\n const prop = this.startNode();\n let isAsync = false;\n let isAccessor = false;\n let startPos;\n let startLoc;\n\n if (this.match(21)) {\n if (decorators.length) this.unexpected();\n return this.parseSpread();\n }\n\n if (decorators.length) {\n prop.decorators = decorators;\n decorators = [];\n }\n\n prop.method = false;\n\n if (refExpressionErrors) {\n startPos = this.state.start;\n startLoc = this.state.startLoc;\n }\n\n let isGenerator = this.eat(55);\n this.parsePropertyNamePrefixOperator(prop);\n const containsEsc = this.state.containsEsc;\n const key = this.parsePropertyName(prop, refExpressionErrors);\n\n if (!isGenerator && !containsEsc && this.maybeAsyncOrAccessorProp(prop)) {\n const keyName = key.name;\n\n if (keyName === \"async\" && !this.hasPrecedingLineBreak()) {\n isAsync = true;\n this.resetPreviousNodeTrailingComments(key);\n isGenerator = this.eat(55);\n this.parsePropertyName(prop);\n }\n\n if (keyName === \"get\" || keyName === \"set\") {\n isAccessor = true;\n this.resetPreviousNodeTrailingComments(key);\n prop.kind = keyName;\n\n if (this.match(55)) {\n isGenerator = true;\n this.raise(Errors.AccessorIsGenerator, {\n at: this.state.curPosition(),\n kind: keyName\n });\n this.next();\n }\n\n this.parsePropertyName(prop);\n }\n }\n\n this.parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, false, isAccessor, refExpressionErrors);\n return prop;\n }\n\n getGetterSetterExpectedParamCount(method) {\n return method.kind === \"get\" ? 0 : 1;\n }\n\n getObjectOrClassMethodParams(method) {\n return method.params;\n }\n\n checkGetterSetterParams(method) {\n var _params;\n\n const paramCount = this.getGetterSetterExpectedParamCount(method);\n const params = this.getObjectOrClassMethodParams(method);\n\n if (params.length !== paramCount) {\n this.raise(method.kind === \"get\" ? Errors.BadGetterArity : Errors.BadSetterArity, {\n at: method\n });\n }\n\n if (method.kind === \"set\" && ((_params = params[params.length - 1]) == null ? void 0 : _params.type) === \"RestElement\") {\n this.raise(Errors.BadSetterRestParameter, {\n at: method\n });\n }\n }\n\n parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) {\n if (isAccessor) {\n this.parseMethod(prop, isGenerator, false, false, false, \"ObjectMethod\");\n this.checkGetterSetterParams(prop);\n return prop;\n }\n\n if (isAsync || isGenerator || this.match(10)) {\n if (isPattern) this.unexpected();\n prop.kind = \"method\";\n prop.method = true;\n return this.parseMethod(prop, isGenerator, isAsync, false, false, \"ObjectMethod\");\n }\n }\n\n parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors) {\n prop.shorthand = false;\n\n if (this.eat(14)) {\n prop.value = isPattern ? this.parseMaybeDefault(this.state.start, this.state.startLoc) : this.parseMaybeAssignAllowIn(refExpressionErrors);\n return this.finishNode(prop, \"ObjectProperty\");\n }\n\n if (!prop.computed && prop.key.type === \"Identifier\") {\n this.checkReservedWord(prop.key.name, prop.key.loc.start, true, false);\n\n if (isPattern) {\n prop.value = this.parseMaybeDefault(startPos, startLoc, cloneIdentifier(prop.key));\n } else if (this.match(29)) {\n const shorthandAssignLoc = this.state.startLoc;\n\n if (refExpressionErrors != null) {\n if (refExpressionErrors.shorthandAssignLoc === null) {\n refExpressionErrors.shorthandAssignLoc = shorthandAssignLoc;\n }\n } else {\n this.raise(Errors.InvalidCoverInitializedName, {\n at: shorthandAssignLoc\n });\n }\n\n prop.value = this.parseMaybeDefault(startPos, startLoc, cloneIdentifier(prop.key));\n } else {\n prop.value = cloneIdentifier(prop.key);\n }\n\n prop.shorthand = true;\n return this.finishNode(prop, \"ObjectProperty\");\n }\n }\n\n parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {\n const node = this.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) || this.parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors);\n if (!node) this.unexpected();\n return node;\n }\n\n parsePropertyName(prop, refExpressionErrors) {\n if (this.eat(0)) {\n prop.computed = true;\n prop.key = this.parseMaybeAssignAllowIn();\n this.expect(3);\n } else {\n const {\n type,\n value\n } = this.state;\n let key;\n\n if (tokenIsKeywordOrIdentifier(type)) {\n key = this.parseIdentifier(true);\n } else {\n switch (type) {\n case 130:\n key = this.parseNumericLiteral(value);\n break;\n\n case 129:\n key = this.parseStringLiteral(value);\n break;\n\n case 131:\n key = this.parseBigIntLiteral(value);\n break;\n\n case 132:\n key = this.parseDecimalLiteral(value);\n break;\n\n case 134:\n {\n const privateKeyLoc = this.state.startLoc;\n\n if (refExpressionErrors != null) {\n if (refExpressionErrors.privateKeyLoc === null) {\n refExpressionErrors.privateKeyLoc = privateKeyLoc;\n }\n } else {\n this.raise(Errors.UnexpectedPrivateField, {\n at: privateKeyLoc\n });\n }\n\n key = this.parsePrivateName();\n break;\n }\n\n default:\n throw this.unexpected();\n }\n }\n\n prop.key = key;\n\n if (type !== 134) {\n prop.computed = false;\n }\n }\n\n return prop.key;\n }\n\n initFunction(node, isAsync) {\n node.id = null;\n node.generator = false;\n node.async = !!isAsync;\n }\n\n parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) {\n this.initFunction(node, isAsync);\n node.generator = !!isGenerator;\n const allowModifiers = isConstructor;\n this.scope.enter(SCOPE_FUNCTION | SCOPE_SUPER | (inClassScope ? SCOPE_CLASS : 0) | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0));\n this.prodParam.enter(functionFlags(isAsync, node.generator));\n this.parseFunctionParams(node, allowModifiers);\n this.parseFunctionBodyAndFinish(node, type, true);\n this.prodParam.exit();\n this.scope.exit();\n return node;\n }\n\n parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) {\n if (isTuple) {\n this.expectPlugin(\"recordAndTuple\");\n }\n\n const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n this.state.inFSharpPipelineDirectBody = false;\n const node = this.startNode();\n this.next();\n node.elements = this.parseExprList(close, !isTuple, refExpressionErrors, node);\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n return this.finishNode(node, isTuple ? \"TupleExpression\" : \"ArrayExpression\");\n }\n\n parseArrowExpression(node, params, isAsync, trailingCommaLoc) {\n this.scope.enter(SCOPE_FUNCTION | SCOPE_ARROW);\n let flags = functionFlags(isAsync, false);\n\n if (!this.match(5) && this.prodParam.hasIn) {\n flags |= PARAM_IN;\n }\n\n this.prodParam.enter(flags);\n this.initFunction(node, isAsync);\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n\n if (params) {\n this.state.maybeInArrowParameters = true;\n this.setArrowFunctionParameters(node, params, trailingCommaLoc);\n }\n\n this.state.maybeInArrowParameters = false;\n this.parseFunctionBody(node, true);\n this.prodParam.exit();\n this.scope.exit();\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n return this.finishNode(node, \"ArrowFunctionExpression\");\n }\n\n setArrowFunctionParameters(node, params, trailingCommaLoc) {\n this.toAssignableList(params, trailingCommaLoc, false);\n node.params = params;\n }\n\n parseFunctionBodyAndFinish(node, type, isMethod = false) {\n this.parseFunctionBody(node, false, isMethod);\n this.finishNode(node, type);\n }\n\n parseFunctionBody(node, allowExpression, isMethod = false) {\n const isExpression = allowExpression && !this.match(5);\n this.expressionScope.enter(newExpressionScope());\n\n if (isExpression) {\n node.body = this.parseMaybeAssign();\n this.checkParams(node, false, allowExpression, false);\n } else {\n const oldStrict = this.state.strict;\n const oldLabels = this.state.labels;\n this.state.labels = [];\n this.prodParam.enter(this.prodParam.currentFlags() | PARAM_RETURN);\n node.body = this.parseBlock(true, false, hasStrictModeDirective => {\n const nonSimple = !this.isSimpleParamList(node.params);\n\n if (hasStrictModeDirective && nonSimple) {\n this.raise(Errors.IllegalLanguageModeDirective, {\n at: (node.kind === \"method\" || node.kind === \"constructor\") && !!node.key ? node.key.loc.end : node\n });\n }\n\n const strictModeChanged = !oldStrict && this.state.strict;\n this.checkParams(node, !this.state.strict && !allowExpression && !isMethod && !nonSimple, allowExpression, strictModeChanged);\n\n if (this.state.strict && node.id) {\n this.checkIdentifier(node.id, BIND_OUTSIDE, strictModeChanged);\n }\n });\n this.prodParam.exit();\n this.state.labels = oldLabels;\n }\n\n this.expressionScope.exit();\n }\n\n isSimpleParameter(node) {\n return node.type === \"Identifier\";\n }\n\n isSimpleParamList(params) {\n for (let i = 0, len = params.length; i < len; i++) {\n if (!this.isSimpleParameter(params[i])) return false;\n }\n\n return true;\n }\n\n checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) {\n const checkClashes = !allowDuplicates && new Set();\n const formalParameters = {\n type: \"FormalParameters\"\n };\n\n for (const param of node.params) {\n this.checkLVal(param, {\n in: formalParameters,\n binding: BIND_VAR,\n checkClashes,\n strictModeChanged\n });\n }\n }\n\n parseExprList(close, allowEmpty, refExpressionErrors, nodeForExtra) {\n const elts = [];\n let first = true;\n\n while (!this.eat(close)) {\n if (first) {\n first = false;\n } else {\n this.expect(12);\n\n if (this.match(close)) {\n if (nodeForExtra) {\n this.addTrailingCommaExtraToNode(nodeForExtra);\n }\n\n this.next();\n break;\n }\n }\n\n elts.push(this.parseExprListItem(allowEmpty, refExpressionErrors));\n }\n\n return elts;\n }\n\n parseExprListItem(allowEmpty, refExpressionErrors, allowPlaceholder) {\n let elt;\n\n if (this.match(12)) {\n if (!allowEmpty) {\n this.raise(Errors.UnexpectedToken, {\n at: this.state.curPosition(),\n unexpected: \",\"\n });\n }\n\n elt = null;\n } else if (this.match(21)) {\n const spreadNodeStartPos = this.state.start;\n const spreadNodeStartLoc = this.state.startLoc;\n elt = this.parseParenItem(this.parseSpread(refExpressionErrors), spreadNodeStartPos, spreadNodeStartLoc);\n } else if (this.match(17)) {\n this.expectPlugin(\"partialApplication\");\n\n if (!allowPlaceholder) {\n this.raise(Errors.UnexpectedArgumentPlaceholder, {\n at: this.state.startLoc\n });\n }\n\n const node = this.startNode();\n this.next();\n elt = this.finishNode(node, \"ArgumentPlaceholder\");\n } else {\n elt = this.parseMaybeAssignAllowIn(refExpressionErrors, this.parseParenItem);\n }\n\n return elt;\n }\n\n parseIdentifier(liberal) {\n const node = this.startNode();\n const name = this.parseIdentifierName(node.start, liberal);\n return this.createIdentifier(node, name);\n }\n\n createIdentifier(node, name) {\n node.name = name;\n node.loc.identifierName = name;\n return this.finishNode(node, \"Identifier\");\n }\n\n parseIdentifierName(pos, liberal) {\n let name;\n const {\n startLoc,\n type\n } = this.state;\n\n if (tokenIsKeywordOrIdentifier(type)) {\n name = this.state.value;\n } else {\n throw this.unexpected();\n }\n\n const tokenIsKeyword = tokenKeywordOrIdentifierIsKeyword(type);\n\n if (liberal) {\n if (tokenIsKeyword) {\n this.replaceToken(128);\n }\n } else {\n this.checkReservedWord(name, startLoc, tokenIsKeyword, false);\n }\n\n this.next();\n return name;\n }\n\n checkReservedWord(word, startLoc, checkKeywords, isBinding) {\n if (word.length > 10) {\n return;\n }\n\n if (!canBeReservedWord(word)) {\n return;\n }\n\n if (word === \"yield\") {\n if (this.prodParam.hasYield) {\n this.raise(Errors.YieldBindingIdentifier, {\n at: startLoc\n });\n return;\n }\n } else if (word === \"await\") {\n if (this.prodParam.hasAwait) {\n this.raise(Errors.AwaitBindingIdentifier, {\n at: startLoc\n });\n return;\n }\n\n if (this.scope.inStaticBlock) {\n this.raise(Errors.AwaitBindingIdentifierInStaticBlock, {\n at: startLoc\n });\n return;\n }\n\n this.expressionScope.recordAsyncArrowParametersError({\n at: startLoc\n });\n } else if (word === \"arguments\") {\n if (this.scope.inClassAndNotInNonArrowFunction) {\n this.raise(Errors.ArgumentsInClass, {\n at: startLoc\n });\n return;\n }\n }\n\n if (checkKeywords && isKeyword(word)) {\n this.raise(Errors.UnexpectedKeyword, {\n at: startLoc,\n keyword: word\n });\n return;\n }\n\n const reservedTest = !this.state.strict ? isReservedWord : isBinding ? isStrictBindReservedWord : isStrictReservedWord;\n\n if (reservedTest(word, this.inModule)) {\n this.raise(Errors.UnexpectedReservedWord, {\n at: startLoc,\n reservedWord: word\n });\n }\n }\n\n isAwaitAllowed() {\n if (this.prodParam.hasAwait) return true;\n\n if (this.options.allowAwaitOutsideFunction && !this.scope.inFunction) {\n return true;\n }\n\n return false;\n }\n\n parseAwait(startPos, startLoc) {\n const node = this.startNodeAt(startPos, startLoc);\n this.expressionScope.recordParameterInitializerError(Errors.AwaitExpressionFormalParameter, {\n at: node\n });\n\n if (this.eat(55)) {\n this.raise(Errors.ObsoleteAwaitStar, {\n at: node\n });\n }\n\n if (!this.scope.inFunction && !this.options.allowAwaitOutsideFunction) {\n if (this.isAmbiguousAwait()) {\n this.ambiguousScriptDifferentAst = true;\n } else {\n this.sawUnambiguousESM = true;\n }\n }\n\n if (!this.state.soloAwait) {\n node.argument = this.parseMaybeUnary(null, true);\n }\n\n return this.finishNode(node, \"AwaitExpression\");\n }\n\n isAmbiguousAwait() {\n if (this.hasPrecedingLineBreak()) return true;\n const {\n type\n } = this.state;\n return type === 53 || type === 10 || type === 0 || tokenIsTemplate(type) || type === 133 || type === 56 || this.hasPlugin(\"v8intrinsic\") && type === 54;\n }\n\n parseYield() {\n const node = this.startNode();\n this.expressionScope.recordParameterInitializerError(Errors.YieldInParameter, {\n at: node\n });\n this.next();\n let delegating = false;\n let argument = null;\n\n if (!this.hasPrecedingLineBreak()) {\n delegating = this.eat(55);\n\n switch (this.state.type) {\n case 13:\n case 135:\n case 8:\n case 11:\n case 3:\n case 9:\n case 14:\n case 12:\n if (!delegating) break;\n\n default:\n argument = this.parseMaybeAssign();\n }\n }\n\n node.delegate = delegating;\n node.argument = argument;\n return this.finishNode(node, \"YieldExpression\");\n }\n\n checkPipelineAtInfixOperator(left, leftStartLoc) {\n if (this.hasPlugin([\"pipelineOperator\", {\n proposal: \"smart\"\n }])) {\n if (left.type === \"SequenceExpression\") {\n this.raise(Errors.PipelineHeadSequenceExpression, {\n at: leftStartLoc\n });\n }\n }\n }\n\n parseSmartPipelineBodyInStyle(childExpr, startPos, startLoc) {\n const bodyNode = this.startNodeAt(startPos, startLoc);\n\n if (this.isSimpleReference(childExpr)) {\n bodyNode.callee = childExpr;\n return this.finishNode(bodyNode, \"PipelineBareFunction\");\n } else {\n this.checkSmartPipeTopicBodyEarlyErrors(startLoc);\n bodyNode.expression = childExpr;\n return this.finishNode(bodyNode, \"PipelineTopicExpression\");\n }\n }\n\n isSimpleReference(expression) {\n switch (expression.type) {\n case \"MemberExpression\":\n return !expression.computed && this.isSimpleReference(expression.object);\n\n case \"Identifier\":\n return true;\n\n default:\n return false;\n }\n }\n\n checkSmartPipeTopicBodyEarlyErrors(startLoc) {\n if (this.match(19)) {\n throw this.raise(Errors.PipelineBodyNoArrow, {\n at: this.state.startLoc\n });\n }\n\n if (!this.topicReferenceWasUsedInCurrentContext()) {\n this.raise(Errors.PipelineTopicUnused, {\n at: startLoc\n });\n }\n }\n\n withTopicBindingContext(callback) {\n const outerContextTopicState = this.state.topicContext;\n this.state.topicContext = {\n maxNumOfResolvableTopics: 1,\n maxTopicIndex: null\n };\n\n try {\n return callback();\n } finally {\n this.state.topicContext = outerContextTopicState;\n }\n }\n\n withSmartMixTopicForbiddingContext(callback) {\n if (this.hasPlugin([\"pipelineOperator\", {\n proposal: \"smart\"\n }])) {\n const outerContextTopicState = this.state.topicContext;\n this.state.topicContext = {\n maxNumOfResolvableTopics: 0,\n maxTopicIndex: null\n };\n\n try {\n return callback();\n } finally {\n this.state.topicContext = outerContextTopicState;\n }\n } else {\n return callback();\n }\n }\n\n withSoloAwaitPermittingContext(callback) {\n const outerContextSoloAwaitState = this.state.soloAwait;\n this.state.soloAwait = true;\n\n try {\n return callback();\n } finally {\n this.state.soloAwait = outerContextSoloAwaitState;\n }\n }\n\n allowInAnd(callback) {\n const flags = this.prodParam.currentFlags();\n const prodParamToSet = PARAM_IN & ~flags;\n\n if (prodParamToSet) {\n this.prodParam.enter(flags | PARAM_IN);\n\n try {\n return callback();\n } finally {\n this.prodParam.exit();\n }\n }\n\n return callback();\n }\n\n disallowInAnd(callback) {\n const flags = this.prodParam.currentFlags();\n const prodParamToClear = PARAM_IN & flags;\n\n if (prodParamToClear) {\n this.prodParam.enter(flags & ~PARAM_IN);\n\n try {\n return callback();\n } finally {\n this.prodParam.exit();\n }\n }\n\n return callback();\n }\n\n registerTopicReference() {\n this.state.topicContext.maxTopicIndex = 0;\n }\n\n topicReferenceIsAllowedInCurrentContext() {\n return this.state.topicContext.maxNumOfResolvableTopics >= 1;\n }\n\n topicReferenceWasUsedInCurrentContext() {\n return this.state.topicContext.maxTopicIndex != null && this.state.topicContext.maxTopicIndex >= 0;\n }\n\n parseFSharpPipelineBody(prec) {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n this.state.potentialArrowAt = this.state.start;\n const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n this.state.inFSharpPipelineDirectBody = true;\n const ret = this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startPos, startLoc, prec);\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n return ret;\n }\n\n parseModuleExpression() {\n this.expectPlugin(\"moduleBlocks\");\n const node = this.startNode();\n this.next();\n this.eat(5);\n const revertScopes = this.initializeScopes(true);\n this.enterInitialScopes();\n const program = this.startNode();\n\n try {\n node.body = this.parseProgram(program, 8, \"module\");\n } finally {\n revertScopes();\n }\n\n this.eat(8);\n return this.finishNode(node, \"ModuleExpression\");\n }\n\n parsePropertyNamePrefixOperator(prop) {}\n\n}\n\nconst loopLabel = {\n kind: \"loop\"\n},\n switchLabel = {\n kind: \"switch\"\n};\nconst FUNC_NO_FLAGS = 0b000,\n FUNC_STATEMENT = 0b001,\n FUNC_HANGING_STATEMENT = 0b010,\n FUNC_NULLABLE_ID = 0b100;\nconst loneSurrogate = /[\\uD800-\\uDFFF]/u;\nconst keywordRelationalOperator = /in(?:stanceof)?/y;\n\nfunction babel7CompatTokens(tokens, input) {\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n const {\n type\n } = token;\n\n if (typeof type === \"number\") {\n {\n if (type === 134) {\n const {\n loc,\n start,\n value,\n end\n } = token;\n const hashEndPos = start + 1;\n const hashEndLoc = createPositionWithColumnOffset(loc.start, 1);\n tokens.splice(i, 1, new Token({\n type: getExportedToken(27),\n value: \"#\",\n start: start,\n end: hashEndPos,\n startLoc: loc.start,\n endLoc: hashEndLoc\n }), new Token({\n type: getExportedToken(128),\n value: value,\n start: hashEndPos,\n end: end,\n startLoc: hashEndLoc,\n endLoc: loc.end\n }));\n i++;\n continue;\n }\n\n if (tokenIsTemplate(type)) {\n const {\n loc,\n start,\n value,\n end\n } = token;\n const backquoteEnd = start + 1;\n const backquoteEndLoc = createPositionWithColumnOffset(loc.start, 1);\n let startToken;\n\n if (input.charCodeAt(start) === 96) {\n startToken = new Token({\n type: getExportedToken(22),\n value: \"`\",\n start: start,\n end: backquoteEnd,\n startLoc: loc.start,\n endLoc: backquoteEndLoc\n });\n } else {\n startToken = new Token({\n type: getExportedToken(8),\n value: \"}\",\n start: start,\n end: backquoteEnd,\n startLoc: loc.start,\n endLoc: backquoteEndLoc\n });\n }\n\n let templateValue, templateElementEnd, templateElementEndLoc, endToken;\n\n if (type === 24) {\n templateElementEnd = end - 1;\n templateElementEndLoc = createPositionWithColumnOffset(loc.end, -1);\n templateValue = value === null ? null : value.slice(1, -1);\n endToken = new Token({\n type: getExportedToken(22),\n value: \"`\",\n start: templateElementEnd,\n end: end,\n startLoc: templateElementEndLoc,\n endLoc: loc.end\n });\n } else {\n templateElementEnd = end - 2;\n templateElementEndLoc = createPositionWithColumnOffset(loc.end, -2);\n templateValue = value === null ? null : value.slice(1, -2);\n endToken = new Token({\n type: getExportedToken(23),\n value: \"${\",\n start: templateElementEnd,\n end: end,\n startLoc: templateElementEndLoc,\n endLoc: loc.end\n });\n }\n\n tokens.splice(i, 1, startToken, new Token({\n type: getExportedToken(20),\n value: templateValue,\n start: backquoteEnd,\n end: templateElementEnd,\n startLoc: backquoteEndLoc,\n endLoc: templateElementEndLoc\n }), endToken);\n i += 2;\n continue;\n }\n }\n token.type = getExportedToken(type);\n }\n }\n\n return tokens;\n}\n\nclass StatementParser extends ExpressionParser {\n parseTopLevel(file, program) {\n file.program = this.parseProgram(program);\n file.comments = this.state.comments;\n\n if (this.options.tokens) {\n file.tokens = babel7CompatTokens(this.tokens, this.input);\n }\n\n return this.finishNode(file, \"File\");\n }\n\n parseProgram(program, end = 135, sourceType = this.options.sourceType) {\n program.sourceType = sourceType;\n program.interpreter = this.parseInterpreterDirective();\n this.parseBlockBody(program, true, true, end);\n\n if (this.inModule && !this.options.allowUndeclaredExports && this.scope.undefinedExports.size > 0) {\n for (const [localName, at] of Array.from(this.scope.undefinedExports)) {\n this.raise(Errors.ModuleExportUndefined, {\n at,\n localName\n });\n }\n }\n\n return this.finishNode(program, \"Program\");\n }\n\n stmtToDirective(stmt) {\n const directive = stmt;\n directive.type = \"Directive\";\n directive.value = directive.expression;\n delete directive.expression;\n const directiveLiteral = directive.value;\n const expressionValue = directiveLiteral.value;\n const raw = this.input.slice(directiveLiteral.start, directiveLiteral.end);\n const val = directiveLiteral.value = raw.slice(1, -1);\n this.addExtra(directiveLiteral, \"raw\", raw);\n this.addExtra(directiveLiteral, \"rawValue\", val);\n this.addExtra(directiveLiteral, \"expressionValue\", expressionValue);\n directiveLiteral.type = \"DirectiveLiteral\";\n return directive;\n }\n\n parseInterpreterDirective() {\n if (!this.match(28)) {\n return null;\n }\n\n const node = this.startNode();\n node.value = this.state.value;\n this.next();\n return this.finishNode(node, \"InterpreterDirective\");\n }\n\n isLet(context) {\n if (!this.isContextual(99)) {\n return false;\n }\n\n return this.isLetKeyword(context);\n }\n\n isLetKeyword(context) {\n const next = this.nextTokenStart();\n const nextCh = this.codePointAtPos(next);\n\n if (nextCh === 92 || nextCh === 91) {\n return true;\n }\n\n if (context) return false;\n if (nextCh === 123) return true;\n\n if (isIdentifierStart(nextCh)) {\n keywordRelationalOperator.lastIndex = next;\n\n if (keywordRelationalOperator.test(this.input)) {\n const endCh = this.codePointAtPos(keywordRelationalOperator.lastIndex);\n\n if (!isIdentifierChar(endCh) && endCh !== 92) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n }\n\n parseStatement(context, topLevel) {\n if (this.match(26)) {\n this.parseDecorators(true);\n }\n\n return this.parseStatementContent(context, topLevel);\n }\n\n parseStatementContent(context, topLevel) {\n let starttype = this.state.type;\n const node = this.startNode();\n let kind;\n\n if (this.isLet(context)) {\n starttype = 74;\n kind = \"let\";\n }\n\n switch (starttype) {\n case 60:\n return this.parseBreakContinueStatement(node, true);\n\n case 63:\n return this.parseBreakContinueStatement(node, false);\n\n case 64:\n return this.parseDebuggerStatement(node);\n\n case 90:\n return this.parseDoStatement(node);\n\n case 91:\n return this.parseForStatement(node);\n\n case 68:\n if (this.lookaheadCharCode() === 46) break;\n\n if (context) {\n if (this.state.strict) {\n this.raise(Errors.StrictFunction, {\n at: this.state.startLoc\n });\n } else if (context !== \"if\" && context !== \"label\") {\n this.raise(Errors.SloppyFunction, {\n at: this.state.startLoc\n });\n }\n }\n\n return this.parseFunctionStatement(node, false, !context);\n\n case 80:\n if (context) this.unexpected();\n return this.parseClass(node, true);\n\n case 69:\n return this.parseIfStatement(node);\n\n case 70:\n return this.parseReturnStatement(node);\n\n case 71:\n return this.parseSwitchStatement(node);\n\n case 72:\n return this.parseThrowStatement(node);\n\n case 73:\n return this.parseTryStatement(node);\n\n case 75:\n case 74:\n kind = kind || this.state.value;\n\n if (context && kind !== \"var\") {\n this.raise(Errors.UnexpectedLexicalDeclaration, {\n at: this.state.startLoc\n });\n }\n\n return this.parseVarStatement(node, kind);\n\n case 92:\n return this.parseWhileStatement(node);\n\n case 76:\n return this.parseWithStatement(node);\n\n case 5:\n return this.parseBlock();\n\n case 13:\n return this.parseEmptyStatement(node);\n\n case 83:\n {\n const nextTokenCharCode = this.lookaheadCharCode();\n\n if (nextTokenCharCode === 40 || nextTokenCharCode === 46) {\n break;\n }\n }\n\n case 82:\n {\n if (!this.options.allowImportExportEverywhere && !topLevel) {\n this.raise(Errors.UnexpectedImportExport, {\n at: this.state.startLoc\n });\n }\n\n this.next();\n let result;\n\n if (starttype === 83) {\n result = this.parseImport(node);\n\n if (result.type === \"ImportDeclaration\" && (!result.importKind || result.importKind === \"value\")) {\n this.sawUnambiguousESM = true;\n }\n } else {\n result = this.parseExport(node);\n\n if (result.type === \"ExportNamedDeclaration\" && (!result.exportKind || result.exportKind === \"value\") || result.type === \"ExportAllDeclaration\" && (!result.exportKind || result.exportKind === \"value\") || result.type === \"ExportDefaultDeclaration\") {\n this.sawUnambiguousESM = true;\n }\n }\n\n this.assertModuleNodeAllowed(node);\n return result;\n }\n\n default:\n {\n if (this.isAsyncFunction()) {\n if (context) {\n this.raise(Errors.AsyncFunctionInSingleStatementContext, {\n at: this.state.startLoc\n });\n }\n\n this.next();\n return this.parseFunctionStatement(node, true, !context);\n }\n }\n }\n\n const maybeName = this.state.value;\n const expr = this.parseExpression();\n\n if (tokenIsIdentifier(starttype) && expr.type === \"Identifier\" && this.eat(14)) {\n return this.parseLabeledStatement(node, maybeName, expr, context);\n } else {\n return this.parseExpressionStatement(node, expr);\n }\n }\n\n assertModuleNodeAllowed(node) {\n if (!this.options.allowImportExportEverywhere && !this.inModule) {\n this.raise(Errors.ImportOutsideModule, {\n at: node\n });\n }\n }\n\n takeDecorators(node) {\n const decorators = this.state.decoratorStack[this.state.decoratorStack.length - 1];\n\n if (decorators.length) {\n node.decorators = decorators;\n this.resetStartLocationFromNode(node, decorators[0]);\n this.state.decoratorStack[this.state.decoratorStack.length - 1] = [];\n }\n }\n\n canHaveLeadingDecorator() {\n return this.match(80);\n }\n\n parseDecorators(allowExport) {\n const currentContextDecorators = this.state.decoratorStack[this.state.decoratorStack.length - 1];\n\n while (this.match(26)) {\n const decorator = this.parseDecorator();\n currentContextDecorators.push(decorator);\n }\n\n if (this.match(82)) {\n if (!allowExport) {\n this.unexpected();\n }\n\n if (this.hasPlugin(\"decorators\") && !this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\")) {\n this.raise(Errors.DecoratorExportClass, {\n at: this.state.startLoc\n });\n }\n } else if (!this.canHaveLeadingDecorator()) {\n throw this.raise(Errors.UnexpectedLeadingDecorator, {\n at: this.state.startLoc\n });\n }\n }\n\n parseDecorator() {\n this.expectOnePlugin([\"decorators-legacy\", \"decorators\"]);\n const node = this.startNode();\n this.next();\n\n if (this.hasPlugin(\"decorators\")) {\n this.state.decoratorStack.push([]);\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n let expr;\n\n if (this.match(10)) {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n this.next();\n expr = this.parseExpression();\n this.expect(11);\n expr = this.wrapParenthesis(startPos, startLoc, expr);\n } else {\n expr = this.parseIdentifier(false);\n\n while (this.eat(16)) {\n const node = this.startNodeAt(startPos, startLoc);\n node.object = expr;\n node.property = this.parseIdentifier(true);\n node.computed = false;\n expr = this.finishNode(node, \"MemberExpression\");\n }\n }\n\n node.expression = this.parseMaybeDecoratorArguments(expr);\n this.state.decoratorStack.pop();\n } else {\n node.expression = this.parseExprSubscripts();\n }\n\n return this.finishNode(node, \"Decorator\");\n }\n\n parseMaybeDecoratorArguments(expr) {\n if (this.eat(10)) {\n const node = this.startNodeAtNode(expr);\n node.callee = expr;\n node.arguments = this.parseCallExpressionArguments(11, false);\n this.toReferencedList(node.arguments);\n return this.finishNode(node, \"CallExpression\");\n }\n\n return expr;\n }\n\n parseBreakContinueStatement(node, isBreak) {\n this.next();\n\n if (this.isLineTerminator()) {\n node.label = null;\n } else {\n node.label = this.parseIdentifier();\n this.semicolon();\n }\n\n this.verifyBreakContinue(node, isBreak);\n return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\");\n }\n\n verifyBreakContinue(node, isBreak) {\n let i;\n\n for (i = 0; i < this.state.labels.length; ++i) {\n const lab = this.state.labels[i];\n\n if (node.label == null || lab.name === node.label.name) {\n if (lab.kind != null && (isBreak || lab.kind === \"loop\")) break;\n if (node.label && isBreak) break;\n }\n }\n\n if (i === this.state.labels.length) {\n const type = isBreak ? \"BreakStatement\" : \"ContinueStatement\";\n this.raise(Errors.IllegalBreakContinue, {\n at: node,\n type\n });\n }\n }\n\n parseDebuggerStatement(node) {\n this.next();\n this.semicolon();\n return this.finishNode(node, \"DebuggerStatement\");\n }\n\n parseHeaderExpression() {\n this.expect(10);\n const val = this.parseExpression();\n this.expect(11);\n return val;\n }\n\n parseDoStatement(node) {\n this.next();\n this.state.labels.push(loopLabel);\n node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement(\"do\"));\n this.state.labels.pop();\n this.expect(92);\n node.test = this.parseHeaderExpression();\n this.eat(13);\n return this.finishNode(node, \"DoWhileStatement\");\n }\n\n parseForStatement(node) {\n this.next();\n this.state.labels.push(loopLabel);\n let awaitAt = null;\n\n if (this.isAwaitAllowed() && this.eatContextual(96)) {\n awaitAt = this.state.lastTokStartLoc;\n }\n\n this.scope.enter(SCOPE_OTHER);\n this.expect(10);\n\n if (this.match(13)) {\n if (awaitAt !== null) {\n this.unexpected(awaitAt);\n }\n\n return this.parseFor(node, null);\n }\n\n const startsWithLet = this.isContextual(99);\n const isLet = startsWithLet && this.isLetKeyword();\n\n if (this.match(74) || this.match(75) || isLet) {\n const init = this.startNode();\n const kind = isLet ? \"let\" : this.state.value;\n this.next();\n this.parseVar(init, true, kind);\n this.finishNode(init, \"VariableDeclaration\");\n\n if ((this.match(58) || this.isContextual(101)) && init.declarations.length === 1) {\n return this.parseForIn(node, init, awaitAt);\n }\n\n if (awaitAt !== null) {\n this.unexpected(awaitAt);\n }\n\n return this.parseFor(node, init);\n }\n\n const startsWithAsync = this.isContextual(95);\n const refExpressionErrors = new ExpressionErrors();\n const init = this.parseExpression(true, refExpressionErrors);\n const isForOf = this.isContextual(101);\n\n if (isForOf) {\n if (startsWithLet) {\n this.raise(Errors.ForOfLet, {\n at: init\n });\n }\n\n if (awaitAt === null && startsWithAsync && init.type === \"Identifier\") {\n this.raise(Errors.ForOfAsync, {\n at: init\n });\n }\n }\n\n if (isForOf || this.match(58)) {\n this.checkDestructuringPrivate(refExpressionErrors);\n this.toAssignable(init, true);\n const type = isForOf ? \"ForOfStatement\" : \"ForInStatement\";\n this.checkLVal(init, {\n in: {\n type\n }\n });\n return this.parseForIn(node, init, awaitAt);\n } else {\n this.checkExpressionErrors(refExpressionErrors, true);\n }\n\n if (awaitAt !== null) {\n this.unexpected(awaitAt);\n }\n\n return this.parseFor(node, init);\n }\n\n parseFunctionStatement(node, isAsync, declarationPosition) {\n this.next();\n return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), isAsync);\n }\n\n parseIfStatement(node) {\n this.next();\n node.test = this.parseHeaderExpression();\n node.consequent = this.parseStatement(\"if\");\n node.alternate = this.eat(66) ? this.parseStatement(\"if\") : null;\n return this.finishNode(node, \"IfStatement\");\n }\n\n parseReturnStatement(node) {\n if (!this.prodParam.hasReturn && !this.options.allowReturnOutsideFunction) {\n this.raise(Errors.IllegalReturn, {\n at: this.state.startLoc\n });\n }\n\n this.next();\n\n if (this.isLineTerminator()) {\n node.argument = null;\n } else {\n node.argument = this.parseExpression();\n this.semicolon();\n }\n\n return this.finishNode(node, \"ReturnStatement\");\n }\n\n parseSwitchStatement(node) {\n this.next();\n node.discriminant = this.parseHeaderExpression();\n const cases = node.cases = [];\n this.expect(5);\n this.state.labels.push(switchLabel);\n this.scope.enter(SCOPE_OTHER);\n let cur;\n\n for (let sawDefault; !this.match(8);) {\n if (this.match(61) || this.match(65)) {\n const isCase = this.match(61);\n if (cur) this.finishNode(cur, \"SwitchCase\");\n cases.push(cur = this.startNode());\n cur.consequent = [];\n this.next();\n\n if (isCase) {\n cur.test = this.parseExpression();\n } else {\n if (sawDefault) {\n this.raise(Errors.MultipleDefaultsInSwitch, {\n at: this.state.lastTokStartLoc\n });\n }\n\n sawDefault = true;\n cur.test = null;\n }\n\n this.expect(14);\n } else {\n if (cur) {\n cur.consequent.push(this.parseStatement(null));\n } else {\n this.unexpected();\n }\n }\n }\n\n this.scope.exit();\n if (cur) this.finishNode(cur, \"SwitchCase\");\n this.next();\n this.state.labels.pop();\n return this.finishNode(node, \"SwitchStatement\");\n }\n\n parseThrowStatement(node) {\n this.next();\n\n if (this.hasPrecedingLineBreak()) {\n this.raise(Errors.NewlineAfterThrow, {\n at: this.state.lastTokEndLoc\n });\n }\n\n node.argument = this.parseExpression();\n this.semicolon();\n return this.finishNode(node, \"ThrowStatement\");\n }\n\n parseCatchClauseParam() {\n const param = this.parseBindingAtom();\n const simple = param.type === \"Identifier\";\n this.scope.enter(simple ? SCOPE_SIMPLE_CATCH : 0);\n this.checkLVal(param, {\n in: {\n type: \"CatchClause\"\n },\n binding: BIND_LEXICAL,\n allowingSloppyLetBinding: true\n });\n return param;\n }\n\n parseTryStatement(node) {\n this.next();\n node.block = this.parseBlock();\n node.handler = null;\n\n if (this.match(62)) {\n const clause = this.startNode();\n this.next();\n\n if (this.match(10)) {\n this.expect(10);\n clause.param = this.parseCatchClauseParam();\n this.expect(11);\n } else {\n clause.param = null;\n this.scope.enter(SCOPE_OTHER);\n }\n\n clause.body = this.withSmartMixTopicForbiddingContext(() => this.parseBlock(false, false));\n this.scope.exit();\n node.handler = this.finishNode(clause, \"CatchClause\");\n }\n\n node.finalizer = this.eat(67) ? this.parseBlock() : null;\n\n if (!node.handler && !node.finalizer) {\n this.raise(Errors.NoCatchOrFinally, {\n at: node\n });\n }\n\n return this.finishNode(node, \"TryStatement\");\n }\n\n parseVarStatement(node, kind, allowMissingInitializer = false) {\n this.next();\n this.parseVar(node, false, kind, allowMissingInitializer);\n this.semicolon();\n return this.finishNode(node, \"VariableDeclaration\");\n }\n\n parseWhileStatement(node) {\n this.next();\n node.test = this.parseHeaderExpression();\n this.state.labels.push(loopLabel);\n node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement(\"while\"));\n this.state.labels.pop();\n return this.finishNode(node, \"WhileStatement\");\n }\n\n parseWithStatement(node) {\n if (this.state.strict) {\n this.raise(Errors.StrictWith, {\n at: this.state.startLoc\n });\n }\n\n this.next();\n node.object = this.parseHeaderExpression();\n node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement(\"with\"));\n return this.finishNode(node, \"WithStatement\");\n }\n\n parseEmptyStatement(node) {\n this.next();\n return this.finishNode(node, \"EmptyStatement\");\n }\n\n parseLabeledStatement(node, maybeName, expr, context) {\n for (const label of this.state.labels) {\n if (label.name === maybeName) {\n this.raise(Errors.LabelRedeclaration, {\n at: expr,\n labelName: maybeName\n });\n }\n }\n\n const kind = tokenIsLoop(this.state.type) ? \"loop\" : this.match(71) ? \"switch\" : null;\n\n for (let i = this.state.labels.length - 1; i >= 0; i--) {\n const label = this.state.labels[i];\n\n if (label.statementStart === node.start) {\n label.statementStart = this.state.start;\n label.kind = kind;\n } else {\n break;\n }\n }\n\n this.state.labels.push({\n name: maybeName,\n kind: kind,\n statementStart: this.state.start\n });\n node.body = this.parseStatement(context ? context.indexOf(\"label\") === -1 ? context + \"label\" : context : \"label\");\n this.state.labels.pop();\n node.label = expr;\n return this.finishNode(node, \"LabeledStatement\");\n }\n\n parseExpressionStatement(node, expr) {\n node.expression = expr;\n this.semicolon();\n return this.finishNode(node, \"ExpressionStatement\");\n }\n\n parseBlock(allowDirectives = false, createNewLexicalScope = true, afterBlockParse) {\n const node = this.startNode();\n\n if (allowDirectives) {\n this.state.strictErrors.clear();\n }\n\n this.expect(5);\n\n if (createNewLexicalScope) {\n this.scope.enter(SCOPE_OTHER);\n }\n\n this.parseBlockBody(node, allowDirectives, false, 8, afterBlockParse);\n\n if (createNewLexicalScope) {\n this.scope.exit();\n }\n\n return this.finishNode(node, \"BlockStatement\");\n }\n\n isValidDirective(stmt) {\n return stmt.type === \"ExpressionStatement\" && stmt.expression.type === \"StringLiteral\" && !stmt.expression.extra.parenthesized;\n }\n\n parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) {\n const body = node.body = [];\n const directives = node.directives = [];\n this.parseBlockOrModuleBlockBody(body, allowDirectives ? directives : undefined, topLevel, end, afterBlockParse);\n }\n\n parseBlockOrModuleBlockBody(body, directives, topLevel, end, afterBlockParse) {\n const oldStrict = this.state.strict;\n let hasStrictModeDirective = false;\n let parsedNonDirective = false;\n\n while (!this.match(end)) {\n const stmt = this.parseStatement(null, topLevel);\n\n if (directives && !parsedNonDirective) {\n if (this.isValidDirective(stmt)) {\n const directive = this.stmtToDirective(stmt);\n directives.push(directive);\n\n if (!hasStrictModeDirective && directive.value.value === \"use strict\") {\n hasStrictModeDirective = true;\n this.setStrict(true);\n }\n\n continue;\n }\n\n parsedNonDirective = true;\n this.state.strictErrors.clear();\n }\n\n body.push(stmt);\n }\n\n if (afterBlockParse) {\n afterBlockParse.call(this, hasStrictModeDirective);\n }\n\n if (!oldStrict) {\n this.setStrict(false);\n }\n\n this.next();\n }\n\n parseFor(node, init) {\n node.init = init;\n this.semicolon(false);\n node.test = this.match(13) ? null : this.parseExpression();\n this.semicolon(false);\n node.update = this.match(11) ? null : this.parseExpression();\n this.expect(11);\n node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement(\"for\"));\n this.scope.exit();\n this.state.labels.pop();\n return this.finishNode(node, \"ForStatement\");\n }\n\n parseForIn(node, init, awaitAt) {\n const isForIn = this.match(58);\n this.next();\n\n if (isForIn) {\n if (awaitAt !== null) this.unexpected(awaitAt);\n } else {\n node.await = awaitAt !== null;\n }\n\n if (init.type === \"VariableDeclaration\" && init.declarations[0].init != null && (!isForIn || this.state.strict || init.kind !== \"var\" || init.declarations[0].id.type !== \"Identifier\")) {\n this.raise(Errors.ForInOfLoopInitializer, {\n at: init,\n type: isForIn ? \"ForInStatement\" : \"ForOfStatement\"\n });\n }\n\n if (init.type === \"AssignmentPattern\") {\n this.raise(Errors.InvalidLhs, {\n at: init,\n ancestor: {\n type: \"ForStatement\"\n }\n });\n }\n\n node.left = init;\n node.right = isForIn ? this.parseExpression() : this.parseMaybeAssignAllowIn();\n this.expect(11);\n node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement(\"for\"));\n this.scope.exit();\n this.state.labels.pop();\n return this.finishNode(node, isForIn ? \"ForInStatement\" : \"ForOfStatement\");\n }\n\n parseVar(node, isFor, kind, allowMissingInitializer = false) {\n const declarations = node.declarations = [];\n node.kind = kind;\n\n for (;;) {\n const decl = this.startNode();\n this.parseVarId(decl, kind);\n decl.init = !this.eat(29) ? null : isFor ? this.parseMaybeAssignDisallowIn() : this.parseMaybeAssignAllowIn();\n\n if (decl.init === null && !allowMissingInitializer) {\n if (decl.id.type !== \"Identifier\" && !(isFor && (this.match(58) || this.isContextual(101)))) {\n this.raise(Errors.DeclarationMissingInitializer, {\n at: this.state.lastTokEndLoc,\n kind: \"destructuring\"\n });\n } else if (kind === \"const\" && !(this.match(58) || this.isContextual(101))) {\n this.raise(Errors.DeclarationMissingInitializer, {\n at: this.state.lastTokEndLoc,\n kind: \"const\"\n });\n }\n }\n\n declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n if (!this.eat(12)) break;\n }\n\n return node;\n }\n\n parseVarId(decl, kind) {\n decl.id = this.parseBindingAtom();\n this.checkLVal(decl.id, {\n in: {\n type: \"VariableDeclarator\"\n },\n binding: kind === \"var\" ? BIND_VAR : BIND_LEXICAL\n });\n }\n\n parseFunction(node, statement = FUNC_NO_FLAGS, isAsync = false) {\n const isStatement = statement & FUNC_STATEMENT;\n const isHangingStatement = statement & FUNC_HANGING_STATEMENT;\n const requireId = !!isStatement && !(statement & FUNC_NULLABLE_ID);\n this.initFunction(node, isAsync);\n\n if (this.match(55) && isHangingStatement) {\n this.raise(Errors.GeneratorInSingleStatementContext, {\n at: this.state.startLoc\n });\n }\n\n node.generator = this.eat(55);\n\n if (isStatement) {\n node.id = this.parseFunctionId(requireId);\n }\n\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n this.state.maybeInArrowParameters = false;\n this.scope.enter(SCOPE_FUNCTION);\n this.prodParam.enter(functionFlags(isAsync, node.generator));\n\n if (!isStatement) {\n node.id = this.parseFunctionId();\n }\n\n this.parseFunctionParams(node, false);\n this.withSmartMixTopicForbiddingContext(() => {\n this.parseFunctionBodyAndFinish(node, isStatement ? \"FunctionDeclaration\" : \"FunctionExpression\");\n });\n this.prodParam.exit();\n this.scope.exit();\n\n if (isStatement && !isHangingStatement) {\n this.registerFunctionStatementId(node);\n }\n\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n return node;\n }\n\n parseFunctionId(requireId) {\n return requireId || tokenIsIdentifier(this.state.type) ? this.parseIdentifier() : null;\n }\n\n parseFunctionParams(node, allowModifiers) {\n this.expect(10);\n this.expressionScope.enter(newParameterDeclarationScope());\n node.params = this.parseBindingList(11, 41, false, allowModifiers);\n this.expressionScope.exit();\n }\n\n registerFunctionStatementId(node) {\n if (!node.id) return;\n this.scope.declareName(node.id.name, this.state.strict || node.generator || node.async ? this.scope.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION, node.id.loc.start);\n }\n\n parseClass(node, isStatement, optionalId) {\n this.next();\n this.takeDecorators(node);\n const oldStrict = this.state.strict;\n this.state.strict = true;\n this.parseClassId(node, isStatement, optionalId);\n this.parseClassSuper(node);\n node.body = this.parseClassBody(!!node.superClass, oldStrict);\n return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\");\n }\n\n isClassProperty() {\n return this.match(29) || this.match(13) || this.match(8);\n }\n\n isClassMethod() {\n return this.match(10);\n }\n\n isNonstaticConstructor(method) {\n return !method.computed && !method.static && (method.key.name === \"constructor\" || method.key.value === \"constructor\");\n }\n\n parseClassBody(hadSuperClass, oldStrict) {\n this.classScope.enter();\n const state = {\n hadConstructor: false,\n hadSuperClass\n };\n let decorators = [];\n const classBody = this.startNode();\n classBody.body = [];\n this.expect(5);\n this.withSmartMixTopicForbiddingContext(() => {\n while (!this.match(8)) {\n if (this.eat(13)) {\n if (decorators.length > 0) {\n throw this.raise(Errors.DecoratorSemicolon, {\n at: this.state.lastTokEndLoc\n });\n }\n\n continue;\n }\n\n if (this.match(26)) {\n decorators.push(this.parseDecorator());\n continue;\n }\n\n const member = this.startNode();\n\n if (decorators.length) {\n member.decorators = decorators;\n this.resetStartLocationFromNode(member, decorators[0]);\n decorators = [];\n }\n\n this.parseClassMember(classBody, member, state);\n\n if (member.kind === \"constructor\" && member.decorators && member.decorators.length > 0) {\n this.raise(Errors.DecoratorConstructor, {\n at: member\n });\n }\n }\n });\n this.state.strict = oldStrict;\n this.next();\n\n if (decorators.length) {\n throw this.raise(Errors.TrailingDecorator, {\n at: this.state.startLoc\n });\n }\n\n this.classScope.exit();\n return this.finishNode(classBody, \"ClassBody\");\n }\n\n parseClassMemberFromModifier(classBody, member) {\n const key = this.parseIdentifier(true);\n\n if (this.isClassMethod()) {\n const method = member;\n method.kind = \"method\";\n method.computed = false;\n method.key = key;\n method.static = false;\n this.pushClassMethod(classBody, method, false, false, false, false);\n return true;\n } else if (this.isClassProperty()) {\n const prop = member;\n prop.computed = false;\n prop.key = key;\n prop.static = false;\n classBody.body.push(this.parseClassProperty(prop));\n return true;\n }\n\n this.resetPreviousNodeTrailingComments(key);\n return false;\n }\n\n parseClassMember(classBody, member, state) {\n const isStatic = this.isContextual(104);\n\n if (isStatic) {\n if (this.parseClassMemberFromModifier(classBody, member)) {\n return;\n }\n\n if (this.eat(5)) {\n this.parseClassStaticBlock(classBody, member);\n return;\n }\n }\n\n this.parseClassMemberWithIsStatic(classBody, member, state, isStatic);\n }\n\n parseClassMemberWithIsStatic(classBody, member, state, isStatic) {\n const publicMethod = member;\n const privateMethod = member;\n const publicProp = member;\n const privateProp = member;\n const accessorProp = member;\n const method = publicMethod;\n const publicMember = publicMethod;\n member.static = isStatic;\n this.parsePropertyNamePrefixOperator(member);\n\n if (this.eat(55)) {\n method.kind = \"method\";\n const isPrivateName = this.match(134);\n this.parseClassElementName(method);\n\n if (isPrivateName) {\n this.pushClassPrivateMethod(classBody, privateMethod, true, false);\n return;\n }\n\n if (this.isNonstaticConstructor(publicMethod)) {\n this.raise(Errors.ConstructorIsGenerator, {\n at: publicMethod.key\n });\n }\n\n this.pushClassMethod(classBody, publicMethod, true, false, false, false);\n return;\n }\n\n const isContextual = tokenIsIdentifier(this.state.type) && !this.state.containsEsc;\n const isPrivate = this.match(134);\n const key = this.parseClassElementName(member);\n const maybeQuestionTokenStartLoc = this.state.startLoc;\n this.parsePostMemberNameModifiers(publicMember);\n\n if (this.isClassMethod()) {\n method.kind = \"method\";\n\n if (isPrivate) {\n this.pushClassPrivateMethod(classBody, privateMethod, false, false);\n return;\n }\n\n const isConstructor = this.isNonstaticConstructor(publicMethod);\n let allowsDirectSuper = false;\n\n if (isConstructor) {\n publicMethod.kind = \"constructor\";\n\n if (state.hadConstructor && !this.hasPlugin(\"typescript\")) {\n this.raise(Errors.DuplicateConstructor, {\n at: key\n });\n }\n\n if (isConstructor && this.hasPlugin(\"typescript\") && member.override) {\n this.raise(Errors.OverrideOnConstructor, {\n at: key\n });\n }\n\n state.hadConstructor = true;\n allowsDirectSuper = state.hadSuperClass;\n }\n\n this.pushClassMethod(classBody, publicMethod, false, false, isConstructor, allowsDirectSuper);\n } else if (this.isClassProperty()) {\n if (isPrivate) {\n this.pushClassPrivateProperty(classBody, privateProp);\n } else {\n this.pushClassProperty(classBody, publicProp);\n }\n } else if (isContextual && key.name === \"async\" && !this.isLineTerminator()) {\n this.resetPreviousNodeTrailingComments(key);\n const isGenerator = this.eat(55);\n\n if (publicMember.optional) {\n this.unexpected(maybeQuestionTokenStartLoc);\n }\n\n method.kind = \"method\";\n const isPrivate = this.match(134);\n this.parseClassElementName(method);\n this.parsePostMemberNameModifiers(publicMember);\n\n if (isPrivate) {\n this.pushClassPrivateMethod(classBody, privateMethod, isGenerator, true);\n } else {\n if (this.isNonstaticConstructor(publicMethod)) {\n this.raise(Errors.ConstructorIsAsync, {\n at: publicMethod.key\n });\n }\n\n this.pushClassMethod(classBody, publicMethod, isGenerator, true, false, false);\n }\n } else if (isContextual && (key.name === \"get\" || key.name === \"set\") && !(this.match(55) && this.isLineTerminator())) {\n this.resetPreviousNodeTrailingComments(key);\n method.kind = key.name;\n const isPrivate = this.match(134);\n this.parseClassElementName(publicMethod);\n\n if (isPrivate) {\n this.pushClassPrivateMethod(classBody, privateMethod, false, false);\n } else {\n if (this.isNonstaticConstructor(publicMethod)) {\n this.raise(Errors.ConstructorIsAccessor, {\n at: publicMethod.key\n });\n }\n\n this.pushClassMethod(classBody, publicMethod, false, false, false, false);\n }\n\n this.checkGetterSetterParams(publicMethod);\n } else if (isContextual && key.name === \"accessor\" && !this.isLineTerminator()) {\n this.expectPlugin(\"decoratorAutoAccessors\");\n this.resetPreviousNodeTrailingComments(key);\n const isPrivate = this.match(134);\n this.parseClassElementName(publicProp);\n this.pushClassAccessorProperty(classBody, accessorProp, isPrivate);\n } else if (this.isLineTerminator()) {\n if (isPrivate) {\n this.pushClassPrivateProperty(classBody, privateProp);\n } else {\n this.pushClassProperty(classBody, publicProp);\n }\n } else {\n this.unexpected();\n }\n }\n\n parseClassElementName(member) {\n const {\n type,\n value\n } = this.state;\n\n if ((type === 128 || type === 129) && member.static && value === \"prototype\") {\n this.raise(Errors.StaticPrototype, {\n at: this.state.startLoc\n });\n }\n\n if (type === 134) {\n if (value === \"constructor\") {\n this.raise(Errors.ConstructorClassPrivateField, {\n at: this.state.startLoc\n });\n }\n\n const key = this.parsePrivateName();\n member.key = key;\n return key;\n }\n\n return this.parsePropertyName(member);\n }\n\n parseClassStaticBlock(classBody, member) {\n var _member$decorators;\n\n this.scope.enter(SCOPE_CLASS | SCOPE_STATIC_BLOCK | SCOPE_SUPER);\n const oldLabels = this.state.labels;\n this.state.labels = [];\n this.prodParam.enter(PARAM);\n const body = member.body = [];\n this.parseBlockOrModuleBlockBody(body, undefined, false, 8);\n this.prodParam.exit();\n this.scope.exit();\n this.state.labels = oldLabels;\n classBody.body.push(this.finishNode(member, \"StaticBlock\"));\n\n if ((_member$decorators = member.decorators) != null && _member$decorators.length) {\n this.raise(Errors.DecoratorStaticBlock, {\n at: member\n });\n }\n }\n\n pushClassProperty(classBody, prop) {\n if (!prop.computed && (prop.key.name === \"constructor\" || prop.key.value === \"constructor\")) {\n this.raise(Errors.ConstructorClassField, {\n at: prop.key\n });\n }\n\n classBody.body.push(this.parseClassProperty(prop));\n }\n\n pushClassPrivateProperty(classBody, prop) {\n const node = this.parseClassPrivateProperty(prop);\n classBody.body.push(node);\n this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), CLASS_ELEMENT_OTHER, node.key.loc.start);\n }\n\n pushClassAccessorProperty(classBody, prop, isPrivate) {\n if (!isPrivate && !prop.computed) {\n const key = prop.key;\n\n if (key.name === \"constructor\" || key.value === \"constructor\") {\n this.raise(Errors.ConstructorClassField, {\n at: key\n });\n }\n }\n\n const node = this.parseClassAccessorProperty(prop);\n classBody.body.push(node);\n\n if (isPrivate) {\n this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), CLASS_ELEMENT_OTHER, node.key.loc.start);\n }\n }\n\n pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {\n classBody.body.push(this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, \"ClassMethod\", true));\n }\n\n pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {\n const node = this.parseMethod(method, isGenerator, isAsync, false, false, \"ClassPrivateMethod\", true);\n classBody.body.push(node);\n const kind = node.kind === \"get\" ? node.static ? CLASS_ELEMENT_STATIC_GETTER : CLASS_ELEMENT_INSTANCE_GETTER : node.kind === \"set\" ? node.static ? CLASS_ELEMENT_STATIC_SETTER : CLASS_ELEMENT_INSTANCE_SETTER : CLASS_ELEMENT_OTHER;\n this.declareClassPrivateMethodInScope(node, kind);\n }\n\n declareClassPrivateMethodInScope(node, kind) {\n this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), kind, node.key.loc.start);\n }\n\n parsePostMemberNameModifiers(methodOrProp) {}\n\n parseClassPrivateProperty(node) {\n this.parseInitializer(node);\n this.semicolon();\n return this.finishNode(node, \"ClassPrivateProperty\");\n }\n\n parseClassProperty(node) {\n this.parseInitializer(node);\n this.semicolon();\n return this.finishNode(node, \"ClassProperty\");\n }\n\n parseClassAccessorProperty(node) {\n this.parseInitializer(node);\n this.semicolon();\n return this.finishNode(node, \"ClassAccessorProperty\");\n }\n\n parseInitializer(node) {\n this.scope.enter(SCOPE_CLASS | SCOPE_SUPER);\n this.expressionScope.enter(newExpressionScope());\n this.prodParam.enter(PARAM);\n node.value = this.eat(29) ? this.parseMaybeAssignAllowIn() : null;\n this.expressionScope.exit();\n this.prodParam.exit();\n this.scope.exit();\n }\n\n parseClassId(node, isStatement, optionalId, bindingType = BIND_CLASS) {\n if (tokenIsIdentifier(this.state.type)) {\n node.id = this.parseIdentifier();\n\n if (isStatement) {\n this.declareNameFromIdentifier(node.id, bindingType);\n }\n } else {\n if (optionalId || !isStatement) {\n node.id = null;\n } else {\n throw this.raise(Errors.MissingClassName, {\n at: this.state.startLoc\n });\n }\n }\n }\n\n parseClassSuper(node) {\n node.superClass = this.eat(81) ? this.parseExprSubscripts() : null;\n }\n\n parseExport(node) {\n const hasDefault = this.maybeParseExportDefaultSpecifier(node);\n const parseAfterDefault = !hasDefault || this.eat(12);\n const hasStar = parseAfterDefault && this.eatExportStar(node);\n const hasNamespace = hasStar && this.maybeParseExportNamespaceSpecifier(node);\n const parseAfterNamespace = parseAfterDefault && (!hasNamespace || this.eat(12));\n const isFromRequired = hasDefault || hasStar;\n\n if (hasStar && !hasNamespace) {\n if (hasDefault) this.unexpected();\n this.parseExportFrom(node, true);\n return this.finishNode(node, \"ExportAllDeclaration\");\n }\n\n const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node);\n\n if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers || hasNamespace && parseAfterNamespace && !hasSpecifiers) {\n throw this.unexpected(null, 5);\n }\n\n let hasDeclaration;\n\n if (isFromRequired || hasSpecifiers) {\n hasDeclaration = false;\n this.parseExportFrom(node, isFromRequired);\n } else {\n hasDeclaration = this.maybeParseExportDeclaration(node);\n }\n\n if (isFromRequired || hasSpecifiers || hasDeclaration) {\n this.checkExport(node, true, false, !!node.source);\n return this.finishNode(node, \"ExportNamedDeclaration\");\n }\n\n if (this.eat(65)) {\n node.declaration = this.parseExportDefaultExpression();\n this.checkExport(node, true, true);\n return this.finishNode(node, \"ExportDefaultDeclaration\");\n }\n\n throw this.unexpected(null, 5);\n }\n\n eatExportStar(node) {\n return this.eat(55);\n }\n\n maybeParseExportDefaultSpecifier(node) {\n if (this.isExportDefaultSpecifier()) {\n this.expectPlugin(\"exportDefaultFrom\");\n const specifier = this.startNode();\n specifier.exported = this.parseIdentifier(true);\n node.specifiers = [this.finishNode(specifier, \"ExportDefaultSpecifier\")];\n return true;\n }\n\n return false;\n }\n\n maybeParseExportNamespaceSpecifier(node) {\n if (this.isContextual(93)) {\n if (!node.specifiers) node.specifiers = [];\n const specifier = this.startNodeAt(this.state.lastTokStart, this.state.lastTokStartLoc);\n this.next();\n specifier.exported = this.parseModuleExportName();\n node.specifiers.push(this.finishNode(specifier, \"ExportNamespaceSpecifier\"));\n return true;\n }\n\n return false;\n }\n\n maybeParseExportNamedSpecifiers(node) {\n if (this.match(5)) {\n if (!node.specifiers) node.specifiers = [];\n const isTypeExport = node.exportKind === \"type\";\n node.specifiers.push(...this.parseExportSpecifiers(isTypeExport));\n node.source = null;\n node.declaration = null;\n\n if (this.hasPlugin(\"importAssertions\")) {\n node.assertions = [];\n }\n\n return true;\n }\n\n return false;\n }\n\n maybeParseExportDeclaration(node) {\n if (this.shouldParseExportDeclaration()) {\n node.specifiers = [];\n node.source = null;\n\n if (this.hasPlugin(\"importAssertions\")) {\n node.assertions = [];\n }\n\n node.declaration = this.parseExportDeclaration(node);\n return true;\n }\n\n return false;\n }\n\n isAsyncFunction() {\n if (!this.isContextual(95)) return false;\n const next = this.nextTokenStart();\n return !lineBreak.test(this.input.slice(this.state.pos, next)) && this.isUnparsedContextual(next, \"function\");\n }\n\n parseExportDefaultExpression() {\n const expr = this.startNode();\n const isAsync = this.isAsyncFunction();\n\n if (this.match(68) || isAsync) {\n this.next();\n\n if (isAsync) {\n this.next();\n }\n\n return this.parseFunction(expr, FUNC_STATEMENT | FUNC_NULLABLE_ID, isAsync);\n }\n\n if (this.match(80)) {\n return this.parseClass(expr, true, true);\n }\n\n if (this.match(26)) {\n if (this.hasPlugin(\"decorators\") && this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\")) {\n this.raise(Errors.DecoratorBeforeExport, {\n at: this.state.startLoc\n });\n }\n\n this.parseDecorators(false);\n return this.parseClass(expr, true, true);\n }\n\n if (this.match(75) || this.match(74) || this.isLet()) {\n throw this.raise(Errors.UnsupportedDefaultExport, {\n at: this.state.startLoc\n });\n }\n\n const res = this.parseMaybeAssignAllowIn();\n this.semicolon();\n return res;\n }\n\n parseExportDeclaration(node) {\n return this.parseStatement(null);\n }\n\n isExportDefaultSpecifier() {\n const {\n type\n } = this.state;\n\n if (tokenIsIdentifier(type)) {\n if (type === 95 && !this.state.containsEsc || type === 99) {\n return false;\n }\n\n if ((type === 126 || type === 125) && !this.state.containsEsc) {\n const {\n type: nextType\n } = this.lookahead();\n\n if (tokenIsIdentifier(nextType) && nextType !== 97 || nextType === 5) {\n this.expectOnePlugin([\"flow\", \"typescript\"]);\n return false;\n }\n }\n } else if (!this.match(65)) {\n return false;\n }\n\n const next = this.nextTokenStart();\n const hasFrom = this.isUnparsedContextual(next, \"from\");\n\n if (this.input.charCodeAt(next) === 44 || tokenIsIdentifier(this.state.type) && hasFrom) {\n return true;\n }\n\n if (this.match(65) && hasFrom) {\n const nextAfterFrom = this.input.charCodeAt(this.nextTokenStartSince(next + 4));\n return nextAfterFrom === 34 || nextAfterFrom === 39;\n }\n\n return false;\n }\n\n parseExportFrom(node, expect) {\n if (this.eatContextual(97)) {\n node.source = this.parseImportSource();\n this.checkExport(node);\n const assertions = this.maybeParseImportAssertions();\n\n if (assertions) {\n node.assertions = assertions;\n }\n } else if (expect) {\n this.unexpected();\n }\n\n this.semicolon();\n }\n\n shouldParseExportDeclaration() {\n const {\n type\n } = this.state;\n\n if (type === 26) {\n this.expectOnePlugin([\"decorators\", \"decorators-legacy\"]);\n\n if (this.hasPlugin(\"decorators\")) {\n if (this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\")) {\n throw this.raise(Errors.DecoratorBeforeExport, {\n at: this.state.startLoc\n });\n }\n\n return true;\n }\n }\n\n return type === 74 || type === 75 || type === 68 || type === 80 || this.isLet() || this.isAsyncFunction();\n }\n\n checkExport(node, checkNames, isDefault, isFrom) {\n if (checkNames) {\n if (isDefault) {\n this.checkDuplicateExports(node, \"default\");\n\n if (this.hasPlugin(\"exportDefaultFrom\")) {\n var _declaration$extra;\n\n const declaration = node.declaration;\n\n if (declaration.type === \"Identifier\" && declaration.name === \"from\" && declaration.end - declaration.start === 4 && !((_declaration$extra = declaration.extra) != null && _declaration$extra.parenthesized)) {\n this.raise(Errors.ExportDefaultFromAsIdentifier, {\n at: declaration\n });\n }\n }\n } else if (node.specifiers && node.specifiers.length) {\n for (const specifier of node.specifiers) {\n const {\n exported\n } = specifier;\n const exportName = exported.type === \"Identifier\" ? exported.name : exported.value;\n this.checkDuplicateExports(specifier, exportName);\n\n if (!isFrom && specifier.local) {\n const {\n local\n } = specifier;\n\n if (local.type !== \"Identifier\") {\n this.raise(Errors.ExportBindingIsString, {\n at: specifier,\n localName: local.value,\n exportName\n });\n } else {\n this.checkReservedWord(local.name, local.loc.start, true, false);\n this.scope.checkLocalExport(local);\n }\n }\n }\n } else if (node.declaration) {\n if (node.declaration.type === \"FunctionDeclaration\" || node.declaration.type === \"ClassDeclaration\") {\n const id = node.declaration.id;\n if (!id) throw new Error(\"Assertion failure\");\n this.checkDuplicateExports(node, id.name);\n } else if (node.declaration.type === \"VariableDeclaration\") {\n for (const declaration of node.declaration.declarations) {\n this.checkDeclaration(declaration.id);\n }\n }\n }\n }\n\n const currentContextDecorators = this.state.decoratorStack[this.state.decoratorStack.length - 1];\n\n if (currentContextDecorators.length) {\n throw this.raise(Errors.UnsupportedDecoratorExport, {\n at: node\n });\n }\n }\n\n checkDeclaration(node) {\n if (node.type === \"Identifier\") {\n this.checkDuplicateExports(node, node.name);\n } else if (node.type === \"ObjectPattern\") {\n for (const prop of node.properties) {\n this.checkDeclaration(prop);\n }\n } else if (node.type === \"ArrayPattern\") {\n for (const elem of node.elements) {\n if (elem) {\n this.checkDeclaration(elem);\n }\n }\n } else if (node.type === \"ObjectProperty\") {\n this.checkDeclaration(node.value);\n } else if (node.type === \"RestElement\") {\n this.checkDeclaration(node.argument);\n } else if (node.type === \"AssignmentPattern\") {\n this.checkDeclaration(node.left);\n }\n }\n\n checkDuplicateExports(node, exportName) {\n if (this.exportedIdentifiers.has(exportName)) {\n if (exportName === \"default\") {\n this.raise(Errors.DuplicateDefaultExport, {\n at: node\n });\n } else {\n this.raise(Errors.DuplicateExport, {\n at: node,\n exportName\n });\n }\n }\n\n this.exportedIdentifiers.add(exportName);\n }\n\n parseExportSpecifiers(isInTypeExport) {\n const nodes = [];\n let first = true;\n this.expect(5);\n\n while (!this.eat(8)) {\n if (first) {\n first = false;\n } else {\n this.expect(12);\n if (this.eat(8)) break;\n }\n\n const isMaybeTypeOnly = this.isContextual(126);\n const isString = this.match(129);\n const node = this.startNode();\n node.local = this.parseModuleExportName();\n nodes.push(this.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly));\n }\n\n return nodes;\n }\n\n parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) {\n if (this.eatContextual(93)) {\n node.exported = this.parseModuleExportName();\n } else if (isString) {\n node.exported = cloneStringLiteral(node.local);\n } else if (!node.exported) {\n node.exported = cloneIdentifier(node.local);\n }\n\n return this.finishNode(node, \"ExportSpecifier\");\n }\n\n parseModuleExportName() {\n if (this.match(129)) {\n const result = this.parseStringLiteral(this.state.value);\n const surrogate = result.value.match(loneSurrogate);\n\n if (surrogate) {\n this.raise(Errors.ModuleExportNameHasLoneSurrogate, {\n at: result,\n surrogateCharCode: surrogate[0].charCodeAt(0)\n });\n }\n\n return result;\n }\n\n return this.parseIdentifier(true);\n }\n\n parseImport(node) {\n node.specifiers = [];\n\n if (!this.match(129)) {\n const hasDefault = this.maybeParseDefaultImportSpecifier(node);\n const parseNext = !hasDefault || this.eat(12);\n const hasStar = parseNext && this.maybeParseStarImportSpecifier(node);\n if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node);\n this.expectContextual(97);\n }\n\n node.source = this.parseImportSource();\n const assertions = this.maybeParseImportAssertions();\n\n if (assertions) {\n node.assertions = assertions;\n } else {\n const attributes = this.maybeParseModuleAttributes();\n\n if (attributes) {\n node.attributes = attributes;\n }\n }\n\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\");\n }\n\n parseImportSource() {\n if (!this.match(129)) this.unexpected();\n return this.parseExprAtom();\n }\n\n shouldParseDefaultImport(node) {\n return tokenIsIdentifier(this.state.type);\n }\n\n parseImportSpecifierLocal(node, specifier, type) {\n specifier.local = this.parseIdentifier();\n node.specifiers.push(this.finishImportSpecifier(specifier, type));\n }\n\n finishImportSpecifier(specifier, type) {\n this.checkLVal(specifier.local, {\n in: specifier,\n binding: BIND_LEXICAL\n });\n return this.finishNode(specifier, type);\n }\n\n parseAssertEntries() {\n const attrs = [];\n const attrNames = new Set();\n\n do {\n if (this.match(8)) {\n break;\n }\n\n const node = this.startNode();\n const keyName = this.state.value;\n\n if (attrNames.has(keyName)) {\n this.raise(Errors.ModuleAttributesWithDuplicateKeys, {\n at: this.state.startLoc,\n key: keyName\n });\n }\n\n attrNames.add(keyName);\n\n if (this.match(129)) {\n node.key = this.parseStringLiteral(keyName);\n } else {\n node.key = this.parseIdentifier(true);\n }\n\n this.expect(14);\n\n if (!this.match(129)) {\n throw this.raise(Errors.ModuleAttributeInvalidValue, {\n at: this.state.startLoc\n });\n }\n\n node.value = this.parseStringLiteral(this.state.value);\n this.finishNode(node, \"ImportAttribute\");\n attrs.push(node);\n } while (this.eat(12));\n\n return attrs;\n }\n\n maybeParseModuleAttributes() {\n if (this.match(76) && !this.hasPrecedingLineBreak()) {\n this.expectPlugin(\"moduleAttributes\");\n this.next();\n } else {\n if (this.hasPlugin(\"moduleAttributes\")) return [];\n return null;\n }\n\n const attrs = [];\n const attributes = new Set();\n\n do {\n const node = this.startNode();\n node.key = this.parseIdentifier(true);\n\n if (node.key.name !== \"type\") {\n this.raise(Errors.ModuleAttributeDifferentFromType, {\n at: node.key\n });\n }\n\n if (attributes.has(node.key.name)) {\n this.raise(Errors.ModuleAttributesWithDuplicateKeys, {\n at: node.key,\n key: node.key.name\n });\n }\n\n attributes.add(node.key.name);\n this.expect(14);\n\n if (!this.match(129)) {\n throw this.raise(Errors.ModuleAttributeInvalidValue, {\n at: this.state.startLoc\n });\n }\n\n node.value = this.parseStringLiteral(this.state.value);\n this.finishNode(node, \"ImportAttribute\");\n attrs.push(node);\n } while (this.eat(12));\n\n return attrs;\n }\n\n maybeParseImportAssertions() {\n if (this.isContextual(94) && !this.hasPrecedingLineBreak()) {\n this.expectPlugin(\"importAssertions\");\n this.next();\n } else {\n if (this.hasPlugin(\"importAssertions\")) return [];\n return null;\n }\n\n this.eat(5);\n const attrs = this.parseAssertEntries();\n this.eat(8);\n return attrs;\n }\n\n maybeParseDefaultImportSpecifier(node) {\n if (this.shouldParseDefaultImport(node)) {\n this.parseImportSpecifierLocal(node, this.startNode(), \"ImportDefaultSpecifier\");\n return true;\n }\n\n return false;\n }\n\n maybeParseStarImportSpecifier(node) {\n if (this.match(55)) {\n const specifier = this.startNode();\n this.next();\n this.expectContextual(93);\n this.parseImportSpecifierLocal(node, specifier, \"ImportNamespaceSpecifier\");\n return true;\n }\n\n return false;\n }\n\n parseNamedImportSpecifiers(node) {\n let first = true;\n this.expect(5);\n\n while (!this.eat(8)) {\n if (first) {\n first = false;\n } else {\n if (this.eat(14)) {\n throw this.raise(Errors.DestructureNamedImport, {\n at: this.state.startLoc\n });\n }\n\n this.expect(12);\n if (this.eat(8)) break;\n }\n\n const specifier = this.startNode();\n const importedIsString = this.match(129);\n const isMaybeTypeOnly = this.isContextual(126);\n specifier.imported = this.parseModuleExportName();\n const importSpecifier = this.parseImportSpecifier(specifier, importedIsString, node.importKind === \"type\" || node.importKind === \"typeof\", isMaybeTypeOnly);\n node.specifiers.push(importSpecifier);\n }\n }\n\n parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly) {\n if (this.eatContextual(93)) {\n specifier.local = this.parseIdentifier();\n } else {\n const {\n imported\n } = specifier;\n\n if (importedIsString) {\n throw this.raise(Errors.ImportBindingIsString, {\n at: specifier,\n importName: imported.value\n });\n }\n\n this.checkReservedWord(imported.name, specifier.loc.start, true, true);\n\n if (!specifier.local) {\n specifier.local = cloneIdentifier(imported);\n }\n }\n\n return this.finishImportSpecifier(specifier, \"ImportSpecifier\");\n }\n\n isThisParam(param) {\n return param.type === \"Identifier\" && param.name === \"this\";\n }\n\n}\n\nclass Parser extends StatementParser {\n constructor(options, input) {\n options = getOptions(options);\n super(options, input);\n this.options = options;\n this.initializeScopes();\n this.plugins = pluginsMap(this.options.plugins);\n this.filename = options.sourceFilename;\n }\n\n getScopeHandler() {\n return ScopeHandler;\n }\n\n parse() {\n this.enterInitialScopes();\n const file = this.startNode();\n const program = this.startNode();\n this.nextToken();\n file.errors = null;\n this.parseTopLevel(file, program);\n file.errors = this.state.errors;\n return file;\n }\n\n}\n\nfunction pluginsMap(plugins) {\n const pluginMap = new Map();\n\n for (const plugin of plugins) {\n const [name, options] = Array.isArray(plugin) ? plugin : [plugin, {}];\n if (!pluginMap.has(name)) pluginMap.set(name, options || {});\n }\n\n return pluginMap;\n}\n\nfunction parse(input, options) {\n var _options;\n\n if (((_options = options) == null ? void 0 : _options.sourceType) === \"unambiguous\") {\n options = Object.assign({}, options);\n\n try {\n options.sourceType = \"module\";\n const parser = getParser(options, input);\n const ast = parser.parse();\n\n if (parser.sawUnambiguousESM) {\n return ast;\n }\n\n if (parser.ambiguousScriptDifferentAst) {\n try {\n options.sourceType = \"script\";\n return getParser(options, input).parse();\n } catch (_unused) {}\n } else {\n ast.program.sourceType = \"script\";\n }\n\n return ast;\n } catch (moduleError) {\n try {\n options.sourceType = \"script\";\n return getParser(options, input).parse();\n } catch (_unused2) {}\n\n throw moduleError;\n }\n } else {\n return getParser(options, input).parse();\n }\n}\nfunction parseExpression(input, options) {\n const parser = getParser(options, input);\n\n if (parser.options.strictMode) {\n parser.state.strict = true;\n }\n\n return parser.getExpression();\n}\n\nfunction generateExportedTokenTypes(internalTokenTypes) {\n const tokenTypes = {};\n\n for (const typeName of Object.keys(internalTokenTypes)) {\n tokenTypes[typeName] = getExportedToken(internalTokenTypes[typeName]);\n }\n\n return tokenTypes;\n}\n\nconst tokTypes = generateExportedTokenTypes(tt);\n\nfunction getParser(options, input) {\n let cls = Parser;\n\n if (options != null && options.plugins) {\n validatePlugins(options.plugins);\n cls = getParserClass(options.plugins);\n }\n\n return new cls(options, input);\n}\n\nconst parserClassCache = {};\n\nfunction getParserClass(pluginsFromOptions) {\n const pluginList = mixinPluginNames.filter(name => hasPlugin(pluginsFromOptions, name));\n const key = pluginList.join(\"/\");\n let cls = parserClassCache[key];\n\n if (!cls) {\n cls = Parser;\n\n for (const plugin of pluginList) {\n cls = mixinPlugins[plugin](cls);\n }\n\n parserClassCache[key] = cls;\n }\n\n return cls;\n}\n\nexports.parse = parse;\nexports.parseExpression = parseExpression;\nexports.tokTypes = tokTypes;\n//# sourceMappingURL=index.js.map\n\n\n//# sourceURL=webpack:///./node_modules/@babel/parser/lib/index.js?"); + +/***/ }), + +/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/form/formEditor.vue?vue&type=script&lang=js&": +/*!***********************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/bpm/form/formEditor.vue?vue&type=script&lang=js& ***! + \***********************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/helpers/typeof.js */ \"./node_modules/@babel/runtime/helpers/typeof.js\"));\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/helpers/objectSpread2.js */ \"./node_modules/@babel/runtime/helpers/objectSpread2.js\"));\n__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\n__webpack_require__(/*! core-js/modules/es.string.replace.js */ \"./node_modules/core-js/modules/es.string.replace.js\");\n__webpack_require__(/*! core-js/modules/es.function.name.js */ \"./node_modules/core-js/modules/es.function.name.js\");\n__webpack_require__(/*! core-js/modules/es.array.reduce.js */ \"./node_modules/core-js/modules/es.array.reduce.js\");\n__webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");\n__webpack_require__(/*! core-js/modules/es.array.find-index.js */ \"./node_modules/core-js/modules/es.array.find-index.js\");\n__webpack_require__(/*! core-js/modules/es.array.find.js */ \"./node_modules/core-js/modules/es.array.find.js\");\n__webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n__webpack_require__(/*! core-js/modules/es.array.concat.js */ \"./node_modules/core-js/modules/es.array.concat.js\");\n__webpack_require__(/*! core-js/modules/es.array.map.js */ \"./node_modules/core-js/modules/es.array.map.js\");\n__webpack_require__(/*! core-js/modules/es.json.stringify.js */ \"./node_modules/core-js/modules/es.json.stringify.js\");\n__webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");\n__webpack_require__(/*! core-js/modules/es.array.splice.js */ \"./node_modules/core-js/modules/es.array.splice.js\");\n__webpack_require__(/*! core-js/modules/es.object.keys.js */ \"./node_modules/core-js/modules/es.object.keys.js\");\nvar _vuedraggable = _interopRequireDefault(__webpack_require__(/*! vuedraggable */ \"./node_modules/vuedraggable/dist/vuedraggable.umd.js\"));\nvar _throttleDebounce = __webpack_require__(/*! throttle-debounce */ \"./node_modules/throttle-debounce/dist/index.esm.js\");\nvar _fileSaver = __webpack_require__(/*! file-saver */ \"./node_modules/file-saver/dist/FileSaver.min.js\");\nvar _clipboard = _interopRequireDefault(__webpack_require__(/*! clipboard */ \"./node_modules/clipboard/dist/clipboard.js\"));\nvar _render = _interopRequireDefault(__webpack_require__(/*! @/components/render/render */ \"./src/components/render/render.js\"));\nvar _FormDrawer = _interopRequireDefault(__webpack_require__(/*! @/views/infra/build/FormDrawer */ \"./src/views/infra/build/FormDrawer.vue\"));\nvar _JsonDrawer = _interopRequireDefault(__webpack_require__(/*! @/views/infra/build/JsonDrawer */ \"./src/views/infra/build/JsonDrawer.vue\"));\nvar _RightPanel = _interopRequireDefault(__webpack_require__(/*! @/views/infra/build/RightPanel */ \"./src/views/infra/build/RightPanel.vue\"));\nvar _config = __webpack_require__(/*! @/components/generator/config */ \"./src/components/generator/config.js\");\nvar _utils = __webpack_require__(/*! @/utils */ \"./src/utils/index.js\");\nvar _html = __webpack_require__(/*! @/components/generator/html */ \"./src/components/generator/html.js\");\nvar _js = __webpack_require__(/*! @/components/generator/js */ \"./src/components/generator/js.js\");\nvar _css = __webpack_require__(/*! @/components/generator/css */ \"./src/components/generator/css.js\");\nvar _drawingDefalut = _interopRequireDefault(__webpack_require__(/*! @/components/generator/drawingDefalut */ \"./src/components/generator/drawingDefalut.js\"));\nvar _logo = _interopRequireDefault(__webpack_require__(/*! @/assets/logo/logo.png */ \"./src/assets/logo/logo.png\"));\nvar _CodeTypeDialog = _interopRequireDefault(__webpack_require__(/*! @/views/infra/build/CodeTypeDialog */ \"./src/views/infra/build/CodeTypeDialog.vue\"));\nvar _DraggableItem = _interopRequireDefault(__webpack_require__(/*! @/views/infra/build/DraggableItem */ \"./src/views/infra/build/DraggableItem.vue\"));\nvar _db = __webpack_require__(/*! @/utils/db */ \"./src/utils/db.js\");\nvar _loadBeautifier = _interopRequireDefault(__webpack_require__(/*! @/utils/loadBeautifier */ \"./src/utils/loadBeautifier.js\"));\nvar _constants = __webpack_require__(/*! @/utils/constants */ \"./src/utils/constants.js\");\nvar _form = __webpack_require__(/*! @/api/bpm/form */ \"./src/api/bpm/form.js\");\nvar _formGenerator = __webpack_require__(/*! @/utils/formGenerator */ \"./src/utils/formGenerator.js\");\nvar beautifier;\nvar emptyActiveData = {\n style: {},\n autosize: {}\n};\nvar oldActiveId;\nvar tempActiveData;\nvar drawingListInDB = (0, _db.getDrawingList)();\nvar formConfInDB = (0, _db.getFormConf)();\nvar idGlobal = (0, _db.getIdGlobal)();\nvar _default = {\n components: {\n draggable: _vuedraggable.default,\n render: _render.default,\n FormDrawer: _FormDrawer.default,\n JsonDrawer: _JsonDrawer.default,\n RightPanel: _RightPanel.default,\n CodeTypeDialog: _CodeTypeDialog.default,\n DraggableItem: _DraggableItem.default\n },\n data: function data() {\n return {\n logo: _logo.default,\n idGlobal: idGlobal,\n formConf: _config.formConf,\n inputComponents: _config.inputComponents,\n selectComponents: _config.selectComponents,\n layoutComponents: _config.layoutComponents,\n labelWidth: 100,\n // drawingList: drawingDefalut,\n drawingData: {},\n // 生成后的表单数据\n activeId: _drawingDefalut.default[0].__config__.formId,\n drawingList: [],\n // 表单项的数组\n // activeId: undefined,\n // activeData: {},\n\n drawerVisible: false,\n formData: {},\n dialogVisible: false,\n jsonDrawerVisible: false,\n generateConf: null,\n showFileName: false,\n activeData: _drawingDefalut.default[0],\n // 右边编辑器激活的表单项\n saveDrawingListDebounce: (0, _throttleDebounce.debounce)(340, _db.saveDrawingList),\n saveIdGlobalDebounce: (0, _throttleDebounce.debounce)(340, _db.saveIdGlobal),\n leftComponents: [{\n title: '输入型组件',\n list: _config.inputComponents\n }, {\n title: '选择型组件',\n list: _config.selectComponents\n }, {\n title: '布局型组件',\n list: _config.layoutComponents\n }],\n // 表单参数\n form: {\n status: _constants.CommonStatusEnum.ENABLE\n },\n // 表单校验\n rules: {\n name: [{\n required: true,\n message: \"表单名不能为空\",\n trigger: \"blur\"\n }],\n status: [{\n required: true,\n message: \"开启状态不能为空\",\n trigger: \"blur\"\n }]\n }\n };\n },\n computed: {},\n watch: {\n // eslint-disable-next-line func-names\n 'activeData.__config__.label': function activeData__config__Label(val, oldVal) {\n if (this.activeData.placeholder === undefined || !this.activeData.__config__.tag || oldActiveId !== this.activeId) {\n return;\n }\n this.activeData.placeholder = this.activeData.placeholder.replace(oldVal, '') + val;\n },\n activeId: {\n handler: function handler(val) {\n oldActiveId = val;\n },\n immediate: true\n },\n drawingList: {\n handler: function handler(val) {\n this.saveDrawingListDebounce(val);\n if (val.length === 0) this.idGlobal = 100;\n },\n deep: true\n },\n idGlobal: {\n handler: function handler(val) {\n this.saveIdGlobalDebounce(val);\n },\n immediate: true\n }\n },\n mounted: function mounted() {\n var _this = this;\n // 【add by 芋道源码】不读缓存\n // if (Array.isArray(drawingListInDB) && drawingListInDB.length > 0) {\n // this.drawingList = drawingListInDB\n // } else {\n // this.drawingList = drawingDefalut\n // }\n // this.activeFormItem(this.drawingList[0])\n // if (formConfInDB) {\n // this.formConf = formConfInDB\n // }\n (0, _loadBeautifier.default)(function (btf) {\n beautifier = btf;\n });\n var clipboard = new _clipboard.default('#copyNode', {\n text: function text(trigger) {\n var codeStr = _this.generateCode();\n _this.$notify({\n title: '成功',\n message: '代码已复制到剪切板,可粘贴。',\n type: 'success'\n });\n return codeStr;\n }\n });\n clipboard.on('error', function (e) {\n _this.$message.error('代码复制失败');\n });\n },\n created: function created() {\n var _this2 = this;\n // 读取表单配置\n var formId = this.$route.query && this.$route.query.formId;\n if (formId) {\n (0, _form.getForm)(formId).then(function (response) {\n var data = response.data;\n _this2.form = {\n id: data.id,\n name: data.name,\n status: data.status,\n remark: data.remark\n };\n _this2.formConf = JSON.parse(data.conf);\n _this2.drawingList = (0, _formGenerator.decodeFields)(data.fields);\n // 设置激活的表单项\n _this2.activeData = _this2.drawingList[0];\n _this2.activeId = _this2.activeData.__config__.formId;\n // 设置 idGlobal,避免重复\n _this2.idGlobal += _this2.drawingList.length;\n });\n }\n },\n methods: {\n setObjectValueReduce: function setObjectValueReduce(obj, strKeys, data) {\n var arr = strKeys.split('.');\n arr.reduce(function (pre, item, i) {\n if (arr.length === i + 1) {\n pre[item] = data;\n } else if (!(0, _utils.isObjectObject)(pre[item])) {\n pre[item] = {};\n }\n return pre[item];\n }, obj);\n },\n setRespData: function setRespData(component, resp) {\n var _component$__config__ = component.__config__,\n dataPath = _component$__config__.dataPath,\n renderKey = _component$__config__.renderKey,\n dataConsumer = _component$__config__.dataConsumer;\n if (!dataPath || !dataConsumer) return;\n var respData = dataPath.split('.').reduce(function (pre, item) {\n return pre[item];\n }, resp);\n\n // 将请求回来的数据,赋值到指定属性。\n // 以el-tabel为例,根据Element文档,应该将数据赋值给el-tabel的data属性,所以dataConsumer的值应为'data';\n // 此时赋值代码可写成 component[dataConsumer] = respData;\n // 但为支持更深层级的赋值(如:dataConsumer的值为'options.data'),使用setObjectValueReduce\n this.setObjectValueReduce(component, dataConsumer, respData);\n var i = this.drawingList.findIndex(function (item) {\n return item.__config__.renderKey === renderKey;\n });\n if (i > -1) this.$set(this.drawingList, i, component);\n },\n fetchData: function fetchData(component) {\n var _this3 = this;\n var _component$__config__2 = component.__config__,\n dataType = _component$__config__2.dataType,\n method = _component$__config__2.method,\n url = _component$__config__2.url;\n if (dataType === 'dynamic' && method && url) {\n this.setLoading(component, true);\n this.$axios({\n method: method,\n url: url\n }).then(function (resp) {\n _this3.setLoading(component, false);\n _this3.setRespData(component, resp.data);\n });\n }\n },\n setLoading: function setLoading(component, val) {\n var directives = component.directives;\n if (Array.isArray(directives)) {\n var t = directives.find(function (d) {\n return d.name === 'loading';\n });\n if (t) t.value = val;\n }\n },\n activeFormItem: function activeFormItem(currentItem) {\n this.activeData = currentItem;\n this.activeId = currentItem.__config__.formId;\n },\n onEnd: function onEnd(obj) {\n if (obj.from !== obj.to) {\n this.fetchData(tempActiveData);\n this.activeData = tempActiveData;\n this.activeId = this.idGlobal;\n }\n },\n addComponent: function addComponent(item) {\n var clone = this.cloneComponent(item);\n this.fetchData(clone);\n this.drawingList.push(clone);\n this.activeFormItem(clone);\n },\n cloneComponent: function cloneComponent(origin) {\n var clone = (0, _utils.deepClone)(origin);\n var config = clone.__config__;\n config.span = this.formConf.span; // 生成代码时,会根据span做精简判断\n this.createIdAndKey(clone);\n clone.placeholder !== undefined && (clone.placeholder += config.label);\n tempActiveData = clone;\n return tempActiveData;\n },\n createIdAndKey: function createIdAndKey(item) {\n var _this4 = this;\n var config = item.__config__;\n config.formId = ++this.idGlobal;\n config.renderKey = \"\".concat(config.formId).concat(+new Date()); // 改变renderKey后可以实现强制更新组件\n if (config.layout === 'colFormItem') {\n item.__vModel__ = \"field\".concat(this.idGlobal);\n } else if (config.layout === 'rowFormItem') {\n config.componentName = \"row\".concat(this.idGlobal);\n !Array.isArray(config.children) && (config.children = []);\n delete config.label; // rowFormItem无需配置label属性\n }\n\n if (Array.isArray(config.children)) {\n config.children = config.children.map(function (childItem) {\n return _this4.createIdAndKey(childItem);\n });\n }\n return item;\n },\n // 获得表单数据\n AssembleFormData: function AssembleFormData() {\n this.formData = (0, _objectSpread2.default)({\n fields: (0, _utils.deepClone)(this.drawingList)\n }, this.formConf);\n },\n save: function save() {\n var _this5 = this;\n // this.AssembleFormData()\n // console.log(this.formData)\n this.$refs[\"form\"].validate(function (valid) {\n if (!valid) {\n return;\n }\n var form = (0, _objectSpread2.default)({\n conf: JSON.stringify(_this5.formConf),\n // 表单配置\n fields: _this5.encodeFields()\n }, _this5.form);\n // 修改的提交\n if (_this5.form.id != null) {\n (0, _form.updateForm)(form).then(function (response) {\n _this5.$modal.msgSuccess(\"修改成功\");\n _this5.close();\n });\n return;\n }\n // 添加的提交\n (0, _form.createForm)(form).then(function (response) {\n _this5.$modal.msgSuccess(\"新增成功\");\n _this5.close();\n });\n });\n },\n /** 关闭按钮 */close: function close() {\n this.$tab.closeOpenPage({\n path: \"/bpm/manager/form\"\n });\n },\n encodeFields: function encodeFields() {\n var fields = [];\n this.drawingList.forEach(function (item) {\n fields.push(JSON.stringify(item));\n });\n return fields;\n },\n generate: function generate(data) {\n var func = this[\"exec\".concat((0, _utils.titleCase)(this.operationType))];\n this.generateConf = data;\n func && func(data);\n },\n execRun: function execRun(data) {\n this.AssembleFormData();\n this.drawerVisible = true;\n },\n execDownload: function execDownload(data) {\n var codeStr = this.generateCode();\n var blob = new Blob([codeStr], {\n type: 'text/plain;charset=utf-8'\n });\n (0, _fileSaver.saveAs)(blob, data.fileName);\n },\n execCopy: function execCopy(data) {\n document.getElementById('copyNode').click();\n },\n empty: function empty() {\n var _this6 = this;\n this.$confirm('确定要清空所有组件吗?', '提示', {\n type: 'warning'\n }).then(function () {\n _this6.drawingList = [];\n _this6.idGlobal = 100;\n });\n },\n drawingItemCopy: function drawingItemCopy(item, list) {\n var clone = (0, _utils.deepClone)(item);\n clone = this.createIdAndKey(clone);\n list.push(clone);\n this.activeFormItem(clone);\n },\n drawingItemDelete: function drawingItemDelete(index, list) {\n var _this7 = this;\n list.splice(index, 1);\n this.$nextTick(function () {\n var len = _this7.drawingList.length;\n if (len) {\n _this7.activeFormItem(_this7.drawingList[len - 1]);\n }\n });\n },\n generateCode: function generateCode() {\n var type = this.generateConf.type;\n this.AssembleFormData();\n var script = (0, _html.vueScript)((0, _js.makeUpJs)(this.formData, type));\n var html = (0, _html.vueTemplate)((0, _html.makeUpHtml)(this.formData, type));\n var css = (0, _html.cssStyle)((0, _css.makeUpCss)(this.formData));\n return beautifier.html(html + script + css, _utils.beautifierConf.html);\n },\n showJson: function showJson() {\n this.AssembleFormData();\n this.jsonDrawerVisible = true;\n },\n download: function download() {\n this.dialogVisible = true;\n this.showFileName = true;\n this.operationType = 'download';\n },\n run: function run() {\n this.dialogVisible = true;\n this.showFileName = false;\n this.operationType = 'run';\n },\n copy: function copy() {\n this.dialogVisible = true;\n this.showFileName = false;\n this.operationType = 'copy';\n },\n tagChange: function tagChange(newTag) {\n var _this8 = this;\n newTag = this.cloneComponent(newTag);\n var config = newTag.__config__;\n newTag.__vModel__ = this.activeData.__vModel__;\n config.formId = this.activeId;\n config.span = this.activeData.__config__.span;\n this.activeData.__config__.tag = config.tag;\n this.activeData.__config__.tagIcon = config.tagIcon;\n this.activeData.__config__.document = config.document;\n if ((0, _typeof2.default)(this.activeData.__config__.defaultValue) === (0, _typeof2.default)(config.defaultValue)) {\n config.defaultValue = this.activeData.__config__.defaultValue;\n }\n Object.keys(newTag).forEach(function (key) {\n if (_this8.activeData[key] !== undefined) {\n newTag[key] = _this8.activeData[key];\n }\n });\n this.activeData = newTag;\n this.updateDrawingList(newTag, this.drawingList);\n },\n updateDrawingList: function updateDrawingList(newTag, list) {\n var _this9 = this;\n var index = list.findIndex(function (item) {\n return item.__config__.formId === _this9.activeId;\n });\n if (index > -1) {\n list.splice(index, 1, newTag);\n } else {\n list.forEach(function (item) {\n if (Array.isArray(item.__config__.children)) _this9.updateDrawingList(newTag, item.__config__.children);\n });\n }\n },\n refreshJson: function refreshJson(data) {\n this.drawingList = (0, _utils.deepClone)(data.fields);\n delete data.fields;\n this.formConf = data;\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/bpm/form/formEditor.vue?./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/CodeTypeDialog.vue?vue&type=script&lang=js&": +/*!******************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/CodeTypeDialog.vue?vue&type=script&lang=js& ***! + \******************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/helpers/objectSpread2.js */ \"./node_modules/@babel/runtime/helpers/objectSpread2.js\"));\nvar _default = {\n inheritAttrs: false,\n props: ['showFileName'],\n data: function data() {\n return {\n formData: {\n fileName: undefined,\n type: 'file'\n },\n rules: {\n fileName: [{\n required: true,\n message: '请输入文件名',\n trigger: 'blur'\n }],\n type: [{\n required: true,\n message: '生成类型不能为空',\n trigger: 'change'\n }]\n },\n typeOptions: [{\n label: '页面',\n value: 'file'\n }, {\n label: '弹窗',\n value: 'dialog'\n }]\n };\n },\n computed: {},\n watch: {},\n mounted: function mounted() {},\n methods: {\n onOpen: function onOpen() {\n if (this.showFileName) {\n this.formData.fileName = \"\".concat(+new Date(), \".vue\");\n }\n },\n onClose: function onClose() {},\n close: function close(e) {\n this.$emit('update:visible', false);\n },\n handelConfirm: function handelConfirm() {\n var _this = this;\n this.$refs.elForm.validate(function (valid) {\n if (!valid) return;\n _this.$emit('confirm', (0, _objectSpread2.default)({}, _this.formData));\n _this.close();\n });\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/infra/build/CodeTypeDialog.vue?./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/DraggableItem.vue?vue&type=script&lang=js&": /*!*****************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/system/user/profile/index.vue?vue&type=script&lang=js& ***! + !*** ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/DraggableItem.vue?vue&type=script&lang=js& ***! \*****************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _userAvatar = _interopRequireDefault(__webpack_require__(/*! ./userAvatar */ \"./src/views/system/user/profile/userAvatar.vue\"));\n\nvar _userInfo = _interopRequireDefault(__webpack_require__(/*! ./userInfo */ \"./src/views/system/user/profile/userInfo.vue\"));\n\nvar _resetPwd = _interopRequireDefault(__webpack_require__(/*! ./resetPwd */ \"./src/views/system/user/profile/resetPwd.vue\"));\n\nvar _userSocial = _interopRequireDefault(__webpack_require__(/*! ./userSocial */ \"./src/views/system/user/profile/userSocial.vue\"));\n\nvar _user = __webpack_require__(/*! @/api/system/user */ \"./src/api/system/user.js\");\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n name: \"Profile\",\n components: {\n userAvatar: _userAvatar.default,\n userInfo: _userInfo.default,\n resetPwd: _resetPwd.default,\n userSocial: _userSocial.default\n },\n data: function data() {\n return {\n user: {},\n roleGroup: {},\n postGroup: {},\n activeTab: \"userinfo\"\n };\n },\n created: function created() {\n this.getUser();\n },\n methods: {\n getUser: function getUser() {\n var _this = this;\n\n (0, _user.getUserProfile)().then(function (response) {\n _this.user = response.data;\n });\n },\n setActiveTab: function setActiveTab(activeTab) {\n this.activeTab = activeTab;\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/system/user/profile/index.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n__webpack_require__(/*! core-js/modules/es.array.map.js */ \"./node_modules/core-js/modules/es.array.map.js\");\n__webpack_require__(/*! core-js/modules/es.error.cause.js */ \"./node_modules/core-js/modules/es.error.cause.js\");\nvar _vuedraggable = _interopRequireDefault(__webpack_require__(/*! vuedraggable */ \"./node_modules/vuedraggable/dist/vuedraggable.umd.js\"));\nvar _render = _interopRequireDefault(__webpack_require__(/*! @/components/render/render */ \"./src/components/render/render.js\"));\nvar components = {\n itemBtns: function itemBtns(h, currentItem, index, list) {\n var _this$$listeners = this.$listeners,\n copyItem = _this$$listeners.copyItem,\n deleteItem = _this$$listeners.deleteItem;\n return [h(\"span\", {\n \"class\": \"drawing-item-copy\",\n \"attrs\": {\n \"title\": \"复制\"\n },\n \"on\": {\n \"click\": function click(event) {\n copyItem(currentItem, list);\n event.stopPropagation();\n }\n }\n }, [h(\"i\", {\n \"class\": \"el-icon-copy-document\"\n })]), h(\"span\", {\n \"class\": \"drawing-item-delete\",\n \"attrs\": {\n \"title\": \"删除\"\n },\n \"on\": {\n \"click\": function click(event) {\n deleteItem(index, list);\n event.stopPropagation();\n }\n }\n }, [h(\"i\", {\n \"class\": \"el-icon-delete\"\n })])];\n }\n};\nvar layouts = {\n colFormItem: function colFormItem(h, currentItem, index, list) {\n var _this = this;\n var activeItem = this.$listeners.activeItem;\n var config = currentItem.__config__;\n var child = renderChildren.apply(this, arguments);\n var className = this.activeId === config.formId ? 'drawing-item active-from-item' : 'drawing-item';\n if (this.formConf.unFocusedComponentBorder) className += ' unfocus-bordered';\n var labelWidth = config.labelWidth ? \"\".concat(config.labelWidth, \"px\") : null;\n if (config.showLabel === false) labelWidth = '0';\n return h(\"el-col\", {\n \"attrs\": {\n \"span\": config.span\n },\n \"class\": className,\n \"nativeOn\": {\n \"click\": function click(event) {\n activeItem(currentItem);\n event.stopPropagation();\n }\n }\n }, [h(\"el-form-item\", {\n \"attrs\": {\n \"label-width\": labelWidth,\n \"label\": config.showLabel ? config.label : '',\n \"required\": config.required\n }\n }, [h(_render.default, {\n \"key\": config.renderKey,\n \"attrs\": {\n \"conf\": currentItem\n },\n \"on\": {\n \"input\": function input(event) {\n _this.$set(config, 'defaultValue', event);\n }\n }\n }, [child])]), components.itemBtns.apply(this, arguments)]);\n },\n rowFormItem: function rowFormItem(h, currentItem, index, list) {\n var activeItem = this.$listeners.activeItem;\n var config = currentItem.__config__;\n var className = this.activeId === config.formId ? 'drawing-row-item active-from-item' : 'drawing-row-item';\n var child = renderChildren.apply(this, arguments);\n if (currentItem.type === 'flex') {\n child = h(\"el-row\", {\n \"attrs\": {\n \"type\": currentItem.type,\n \"justify\": currentItem.justify,\n \"align\": currentItem.align\n }\n }, [child]);\n }\n return h(\"el-col\", {\n \"attrs\": {\n \"span\": config.span\n }\n }, [h(\"el-row\", {\n \"attrs\": {\n \"gutter\": config.gutter\n },\n \"class\": className,\n \"nativeOn\": {\n \"click\": function click(event) {\n activeItem(currentItem);\n event.stopPropagation();\n }\n }\n }, [h(\"span\", {\n \"class\": \"component-name\"\n }, [config.componentName]), h(_vuedraggable.default, {\n \"attrs\": {\n \"list\": config.children || [],\n \"animation\": 340,\n \"group\": \"componentsGroup\"\n },\n \"class\": \"drag-wrapper\"\n }, [child]), components.itemBtns.apply(this, arguments)])]);\n },\n raw: function raw(h, currentItem, index, list) {\n var _this2 = this;\n var config = currentItem.__config__;\n var child = renderChildren.apply(this, arguments);\n return h(_render.default, {\n \"key\": config.renderKey,\n \"attrs\": {\n \"conf\": currentItem\n },\n \"on\": {\n \"input\": function input(event) {\n _this2.$set(config, 'defaultValue', event);\n }\n }\n }, [child]);\n }\n};\nfunction renderChildren(h, currentItem, index, list) {\n var _this3 = this;\n var config = currentItem.__config__;\n if (!Array.isArray(config.children)) return null;\n return config.children.map(function (el, i) {\n var layout = layouts[el.__config__.layout];\n if (layout) {\n return layout.call(_this3, h, el, i, config.children);\n }\n return layoutIsNotFound.call(_this3);\n });\n}\nfunction layoutIsNotFound() {\n throw new Error(\"\\u6CA1\\u6709\\u4E0E\".concat(this.currentItem.__config__.layout, \"\\u5339\\u914D\\u7684layout\"));\n}\nvar _default = {\n components: {\n render: _render.default,\n draggable: _vuedraggable.default\n },\n props: ['currentItem', 'index', 'drawingList', 'activeId', 'formConf'],\n render: function render(h) {\n var layout = layouts[this.currentItem.__config__.layout];\n if (layout) {\n return layout.call(this, h, this.currentItem, this.index, this.drawingList);\n }\n return layoutIsNotFound.call(this);\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/infra/build/DraggableItem.vue?./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/resetPwd.vue?vue&type=script&lang=js&": -/*!********************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/system/user/profile/resetPwd.vue?vue&type=script&lang=js& ***! - \********************************************************************************************************************************************************************************************************************************************************************/ +/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/FormDrawer.vue?vue&type=script&lang=js&": +/*!**************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/FormDrawer.vue?vue&type=script&lang=js& ***! + \**************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n__webpack_require__(/*! core-js/modules/es.error.cause.js */ \"./node_modules/core-js/modules/es.error.cause.js\");\n\nvar _user = __webpack_require__(/*! @/api/system/user */ \"./src/api/system/user.js\");\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n data: function data() {\n var _this = this;\n\n var equalToPassword = function equalToPassword(rule, value, callback) {\n if (_this.user.newPassword !== value) {\n callback(new Error(\"两次输入的密码不一致\"));\n } else {\n callback();\n }\n };\n\n return {\n test: \"1test\",\n user: {\n oldPassword: undefined,\n newPassword: undefined,\n confirmPassword: undefined\n },\n // 表单校验\n rules: {\n oldPassword: [{\n required: true,\n message: \"旧密码不能为空\",\n trigger: \"blur\"\n }],\n newPassword: [{\n required: true,\n message: \"新密码不能为空\",\n trigger: \"blur\"\n }, {\n min: 6,\n max: 20,\n message: \"长度在 6 到 20 个字符\",\n trigger: \"blur\"\n }],\n confirmPassword: [{\n required: true,\n message: \"确认密码不能为空\",\n trigger: \"blur\"\n }, {\n required: true,\n validator: equalToPassword,\n trigger: \"blur\"\n }]\n }\n };\n },\n methods: {\n submit: function submit() {\n var _this2 = this;\n\n this.$refs[\"form\"].validate(function (valid) {\n if (valid) {\n (0, _user.updateUserPwd)(_this2.user.oldPassword, _this2.user.newPassword).then(function (response) {\n _this2.$modal.msgSuccess(\"修改成功\");\n });\n }\n });\n },\n close: function close() {\n this.$tab.closePage();\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/system/user/profile/resetPwd.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n__webpack_require__(/*! core-js/modules/es.array.concat.js */ \"./node_modules/core-js/modules/es.array.concat.js\");\n__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\n__webpack_require__(/*! core-js/modules/es.string.replace.js */ \"./node_modules/core-js/modules/es.string.replace.js\");\n__webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");\n__webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");\n__webpack_require__(/*! core-js/modules/es.string.ends-with.js */ \"./node_modules/core-js/modules/es.string.ends-with.js\");\n__webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\nvar _parser = __webpack_require__(/*! @babel/parser */ \"./node_modules/@babel/parser/lib/index.js\");\nvar _clipboard = _interopRequireDefault(__webpack_require__(/*! clipboard */ \"./node_modules/clipboard/dist/clipboard.js\"));\nvar _fileSaver = __webpack_require__(/*! file-saver */ \"./node_modules/file-saver/dist/FileSaver.min.js\");\nvar _html = __webpack_require__(/*! @/components/generator/html */ \"./src/components/generator/html.js\");\nvar _js = __webpack_require__(/*! @/components/generator/js */ \"./src/components/generator/js.js\");\nvar _css = __webpack_require__(/*! @/components/generator/css */ \"./src/components/generator/css.js\");\nvar _utils = __webpack_require__(/*! @/utils */ \"./src/utils/index.js\");\nvar _ResourceDialog = _interopRequireDefault(__webpack_require__(/*! ./ResourceDialog */ \"./src/views/infra/build/ResourceDialog.vue\"));\nvar _loadMonaco = _interopRequireDefault(__webpack_require__(/*! @/utils/loadMonaco */ \"./src/utils/loadMonaco.js\"));\nvar _loadBeautifier = _interopRequireDefault(__webpack_require__(/*! @/utils/loadBeautifier */ \"./src/utils/loadBeautifier.js\"));\nvar editorObj = {\n html: null,\n js: null,\n css: null\n};\nvar mode = {\n html: 'html',\n js: 'javascript',\n css: 'css'\n};\nvar beautifier;\nvar monaco;\nvar _default = {\n components: {\n ResourceDialog: _ResourceDialog.default\n },\n props: ['formData', 'generateConf'],\n data: function data() {\n return {\n activeTab: 'html',\n htmlCode: '',\n jsCode: '',\n cssCode: '',\n codeFrame: '',\n isIframeLoaded: false,\n isInitcode: false,\n // 保证open后两个异步只执行一次runcode\n isRefreshCode: false,\n // 每次打开都需要重新刷新代码\n resourceVisible: false,\n scripts: [],\n links: [],\n monaco: null\n };\n },\n computed: {\n resources: function resources() {\n return this.scripts.concat(this.links);\n }\n },\n watch: {},\n created: function created() {},\n mounted: function mounted() {\n var _this = this;\n window.addEventListener('keydown', this.preventDefaultSave);\n var clipboard = new _clipboard.default('.copy-btn', {\n text: function text(trigger) {\n var codeStr = _this.generateCode();\n _this.$notify({\n title: '成功',\n message: '代码已复制到剪切板,可粘贴。',\n type: 'success'\n });\n return codeStr;\n }\n });\n clipboard.on('error', function (e) {\n _this.$message.error('代码复制失败');\n });\n },\n beforeDestroy: function beforeDestroy() {\n window.removeEventListener('keydown', this.preventDefaultSave);\n },\n methods: {\n preventDefaultSave: function preventDefaultSave(e) {\n if (e.key === 's' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n }\n },\n onOpen: function onOpen() {\n var _this2 = this;\n var type = this.generateConf.type;\n this.htmlCode = (0, _html.makeUpHtml)(this.formData, type);\n this.jsCode = (0, _js.makeUpJs)(this.formData, type);\n this.cssCode = (0, _css.makeUpCss)(this.formData);\n (0, _loadBeautifier.default)(function (btf) {\n beautifier = btf;\n _this2.htmlCode = beautifier.html(_this2.htmlCode, _utils.beautifierConf.html);\n _this2.jsCode = beautifier.js(_this2.jsCode, _utils.beautifierConf.js);\n _this2.cssCode = beautifier.css(_this2.cssCode, _utils.beautifierConf.html);\n (0, _loadMonaco.default)(function (val) {\n monaco = val;\n _this2.setEditorValue('editorHtml', 'html', _this2.htmlCode);\n _this2.setEditorValue('editorJs', 'js', _this2.jsCode);\n _this2.setEditorValue('editorCss', 'css', _this2.cssCode);\n if (!_this2.isInitcode) {\n _this2.isRefreshCode = true;\n _this2.isIframeLoaded && (_this2.isInitcode = true) && _this2.runCode();\n }\n });\n });\n },\n onClose: function onClose() {\n this.isInitcode = false;\n this.isRefreshCode = false;\n },\n iframeLoad: function iframeLoad() {\n if (!this.isInitcode) {\n this.isIframeLoaded = true;\n this.isRefreshCode && (this.isInitcode = true) && this.runCode();\n }\n },\n setEditorValue: function setEditorValue(id, type, codeStr) {\n var _this3 = this;\n if (editorObj[type]) {\n editorObj[type].setValue(codeStr);\n } else {\n editorObj[type] = monaco.editor.create(document.getElementById(id), {\n value: codeStr,\n theme: 'vs-dark',\n language: mode[type],\n automaticLayout: true\n });\n }\n // ctrl + s 刷新\n editorObj[type].onKeyDown(function (e) {\n if (e.keyCode === 49 && (e.metaKey || e.ctrlKey)) {\n _this3.runCode();\n }\n });\n },\n runCode: function runCode() {\n var jsCodeStr = editorObj.js.getValue();\n try {\n var ast = (0, _parser.parse)(jsCodeStr, {\n sourceType: 'module'\n });\n var astBody = ast.program.body;\n if (astBody.length > 1) {\n this.$confirm('js格式不能识别,仅支持修改export default的对象内容', '提示', {\n type: 'warning'\n }).catch(function () {});\n return;\n }\n if (astBody[0].type === 'ExportDefaultDeclaration') {\n var postData = {\n type: 'refreshFrame',\n data: {\n generateConf: this.generateConf,\n html: editorObj.html.getValue(),\n js: jsCodeStr.replace(_utils.exportDefault, ''),\n css: editorObj.css.getValue(),\n scripts: this.scripts,\n links: this.links\n }\n };\n this.$refs.previewPage.contentWindow.postMessage(postData, location.origin);\n } else {\n this.$message.error('请使用export default');\n }\n } catch (err) {\n this.$message.error(\"js\\u9519\\u8BEF\\uFF1A\".concat(err));\n console.error(err);\n }\n },\n generateCode: function generateCode() {\n var html = (0, _html.vueTemplate)(editorObj.html.getValue());\n var script = (0, _html.vueScript)(editorObj.js.getValue());\n var css = (0, _html.cssStyle)(editorObj.css.getValue());\n return beautifier.html(html + script + css, _utils.beautifierConf.html);\n },\n exportFile: function exportFile() {\n var _this4 = this;\n this.$prompt('文件名:', '导出文件', {\n inputValue: \"\".concat(+new Date(), \".vue\"),\n closeOnClickModal: false,\n inputPlaceholder: '请输入文件名'\n }).then(function (_ref) {\n var value = _ref.value;\n if (!value) value = \"\".concat(+new Date(), \".vue\");\n var codeStr = _this4.generateCode();\n var blob = new Blob([codeStr], {\n type: 'text/plain;charset=utf-8'\n });\n (0, _fileSaver.saveAs)(blob, value);\n });\n },\n showResource: function showResource() {\n this.resourceVisible = true;\n },\n setResource: function setResource(arr) {\n var scripts = [];\n var links = [];\n if (Array.isArray(arr)) {\n arr.forEach(function (item) {\n if (item.endsWith('.css')) {\n links.push(item);\n } else {\n scripts.push(item);\n }\n });\n this.scripts = scripts;\n this.links = links;\n } else {\n this.scripts = [];\n this.links = [];\n }\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/infra/build/FormDrawer.vue?./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/userAvatar.vue?vue&type=script&lang=js&": -/*!**********************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/system/user/profile/userAvatar.vue?vue&type=script&lang=js& ***! - \**********************************************************************************************************************************************************************************************************************************************************************/ +/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/IconsDialog.vue?vue&type=script&lang=js&": +/*!***************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/IconsDialog.vue?vue&type=script&lang=js& ***! + \***************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _store = _interopRequireDefault(__webpack_require__(/*! @/store */ \"./src/store/index.js\"));\n\nvar _vueCropper = __webpack_require__(/*! vue-cropper */ \"./node_modules/vue-cropper/dist/index.js\");\n\nvar _user = __webpack_require__(/*! @/api/system/user */ \"./src/api/system/user.js\");\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n components: {\n VueCropper: _vueCropper.VueCropper\n },\n props: {\n user: {\n type: Object\n }\n },\n data: function data() {\n return {\n // 是否显示弹出层\n open: false,\n // 是否显示cropper\n visible: false,\n // 弹出层标题\n title: \"修改头像\",\n options: {\n img: _store.default.getters.avatar,\n //裁剪图片的地址\n autoCrop: true,\n // 是否默认生成截图框\n autoCropWidth: 200,\n // 默认生成截图框宽度\n autoCropHeight: 200,\n // 默认生成截图框高度\n fixedBox: true // 固定截图框大小 不允许改变\n\n },\n previews: {}\n };\n },\n methods: {\n // 编辑头像\n editCropper: function editCropper() {\n this.open = true;\n },\n // 打开弹出层结束时的回调\n modalOpened: function modalOpened() {\n this.visible = true;\n },\n // 覆盖默认的上传行为\n requestUpload: function requestUpload() {},\n // 向左旋转\n rotateLeft: function rotateLeft() {\n this.$refs.cropper.rotateLeft();\n },\n // 向右旋转\n rotateRight: function rotateRight() {\n this.$refs.cropper.rotateRight();\n },\n // 图片缩放\n changeScale: function changeScale(num) {\n num = num || 1;\n this.$refs.cropper.changeScale(num);\n },\n // 上传预处理\n beforeUpload: function beforeUpload(file) {\n var _this = this;\n\n if (file.type.indexOf(\"image/\") == -1) {\n this.$modal.msgError(\"文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。\");\n } else {\n var reader = new FileReader();\n reader.readAsDataURL(file);\n\n reader.onload = function () {\n _this.options.img = reader.result;\n };\n }\n },\n // 上传图片\n uploadImg: function uploadImg() {\n var _this2 = this;\n\n this.$refs.cropper.getCropBlob(function (data) {\n var formData = new FormData();\n formData.append(\"avatarFile\", data);\n (0, _user.uploadAvatar)(formData).then(function (resp) {\n _this2.open = false; // this.options.img = process.env.VUE_APP_BASE_API + response.imgUrl;\n\n _store.default.commit('SET_AVATAR', resp.data);\n\n _this2.$modal.msgSuccess(\"修改成功\");\n\n _this2.visible = false;\n });\n });\n },\n // 实时预览\n realTime: function realTime(data) {\n this.previews = data;\n },\n // 取消截图,关闭对话框\n closeDialog: function closeDialog() {\n this.options.img = _store.default.getters.avatar;\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/system/user/profile/userAvatar.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n__webpack_require__(/*! core-js/modules/es.array.map.js */ \"./node_modules/core-js/modules/es.array.map.js\");\n__webpack_require__(/*! core-js/modules/es.array.filter.js */ \"./node_modules/core-js/modules/es.array.filter.js\");\n__webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");\nvar _icon = _interopRequireDefault(__webpack_require__(/*! @/utils/icon.json */ \"./src/utils/icon.json\"));\nvar originList = _icon.default.map(function (name) {\n return \"el-icon-\".concat(name);\n});\nvar _default = {\n inheritAttrs: false,\n props: ['current'],\n data: function data() {\n return {\n iconList: originList,\n active: null,\n key: ''\n };\n },\n watch: {\n key: function key(val) {\n if (val) {\n this.iconList = originList.filter(function (name) {\n return name.indexOf(val) > -1;\n });\n } else {\n this.iconList = originList;\n }\n }\n },\n methods: {\n onOpen: function onOpen() {\n this.active = this.current;\n this.key = '';\n },\n onClose: function onClose() {},\n onSelect: function onSelect(icon) {\n this.active = icon;\n this.$emit('select', icon);\n this.$emit('update:visible', false);\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/infra/build/IconsDialog.vue?./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/userInfo.vue?vue&type=script&lang=js&": -/*!********************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/system/user/profile/userInfo.vue?vue&type=script&lang=js& ***! - \********************************************************************************************************************************************************************************************************************************************************************/ +/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/JsonDrawer.vue?vue&type=script&lang=js&": +/*!**************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/JsonDrawer.vue?vue&type=script&lang=js& ***! + \**************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _user = __webpack_require__(/*! @/api/system/user */ \"./src/api/system/user.js\");\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n props: {\n user: {\n type: Object\n }\n },\n data: function data() {\n return {\n // 表单校验\n rules: {\n nickname: [{\n required: true,\n message: \"用户昵称不能为空\",\n trigger: \"blur\"\n }],\n email: [{\n required: true,\n message: \"邮箱地址不能为空\",\n trigger: \"blur\"\n }, {\n type: \"email\",\n message: \"请输入正确的邮箱地址\",\n trigger: [\"blur\", \"change\"]\n }],\n mobile: [{\n required: true,\n message: \"手机号码不能为空\",\n trigger: \"blur\"\n }, {\n pattern: /^1[3|4|5|6|7|8|9][0-9]\\d{8}$/,\n message: \"请输入正确的手机号码\",\n trigger: \"blur\"\n }]\n }\n };\n },\n methods: {\n submit: function submit() {\n var _this = this;\n\n this.$refs[\"form\"].validate(function (valid) {\n if (valid) {\n (0, _user.updateUserProfile)(_this.user).then(function (response) {\n _this.$modal.msgSuccess(\"修改成功\");\n });\n }\n });\n },\n close: function close() {\n this.$tab.closePage();\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/system/user/profile/userInfo.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _utils = __webpack_require__(/*! @/utils */ \"./src/utils/index.js\");\nvar _clipboard = _interopRequireDefault(__webpack_require__(/*! clipboard */ \"./node_modules/clipboard/dist/clipboard.js\"));\nvar _fileSaver = __webpack_require__(/*! file-saver */ \"./node_modules/file-saver/dist/FileSaver.min.js\");\nvar _loadMonaco = _interopRequireDefault(__webpack_require__(/*! @/utils/loadMonaco */ \"./src/utils/loadMonaco.js\"));\nvar _loadBeautifier = _interopRequireDefault(__webpack_require__(/*! @/utils/loadBeautifier */ \"./src/utils/loadBeautifier.js\"));\nvar beautifier;\nvar monaco;\nvar _default = {\n components: {},\n props: {\n jsonStr: {\n type: String,\n required: true\n }\n },\n data: function data() {\n return {};\n },\n computed: {},\n watch: {},\n created: function created() {},\n mounted: function mounted() {\n var _this = this;\n window.addEventListener('keydown', this.preventDefaultSave);\n var clipboard = new _clipboard.default('.copy-json-btn', {\n text: function text(trigger) {\n _this.$notify({\n title: '成功',\n message: '代码已复制到剪切板,可粘贴。',\n type: 'success'\n });\n return _this.beautifierJson;\n }\n });\n clipboard.on('error', function (e) {\n _this.$message.error('代码复制失败');\n });\n },\n beforeDestroy: function beforeDestroy() {\n window.removeEventListener('keydown', this.preventDefaultSave);\n },\n methods: {\n preventDefaultSave: function preventDefaultSave(e) {\n if (e.key === 's' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n }\n },\n onOpen: function onOpen() {\n var _this2 = this;\n (0, _loadBeautifier.default)(function (btf) {\n beautifier = btf;\n _this2.beautifierJson = beautifier.js(_this2.jsonStr, _utils.beautifierConf.js);\n (0, _loadMonaco.default)(function (val) {\n monaco = val;\n _this2.setEditorValue('editorJson', _this2.beautifierJson);\n });\n });\n },\n onClose: function onClose() {},\n setEditorValue: function setEditorValue(id, codeStr) {\n var _this3 = this;\n if (this.jsonEditor) {\n this.jsonEditor.setValue(codeStr);\n } else {\n this.jsonEditor = monaco.editor.create(document.getElementById(id), {\n value: codeStr,\n theme: 'vs-dark',\n language: 'json',\n automaticLayout: true\n });\n // ctrl + s 刷新\n this.jsonEditor.onKeyDown(function (e) {\n if (e.keyCode === 49 && (e.metaKey || e.ctrlKey)) {\n _this3.refresh();\n }\n });\n }\n },\n exportJsonFile: function exportJsonFile() {\n var _this4 = this;\n this.$prompt('文件名:', '导出文件', {\n inputValue: \"\".concat(+new Date(), \".json\"),\n closeOnClickModal: false,\n inputPlaceholder: '请输入文件名'\n }).then(function (_ref) {\n var value = _ref.value;\n if (!value) value = \"\".concat(+new Date(), \".json\");\n var codeStr = _this4.jsonEditor.getValue();\n var blob = new Blob([codeStr], {\n type: 'text/plain;charset=utf-8'\n });\n (0, _fileSaver.saveAs)(blob, value);\n });\n },\n refresh: function refresh() {\n try {\n this.$emit('refresh', JSON.parse(this.jsonEditor.getValue()));\n } catch (error) {\n this.$notify({\n title: '错误',\n message: 'JSON格式错误,请检查',\n type: 'error'\n });\n }\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/infra/build/JsonDrawer.vue?./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/userSocial.vue?vue&type=script&lang=js&": -/*!**********************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/system/user/profile/userSocial.vue?vue&type=script&lang=js& ***! - \**********************************************************************************************************************************************************************************************************************************************************************/ +/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/ResourceDialog.vue?vue&type=script&lang=js&": +/*!******************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/ResourceDialog.vue?vue&type=script&lang=js& ***! + \******************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\n\n__webpack_require__(/*! core-js/modules/es.string.replace.js */ \"./node_modules/core-js/modules/es.string.replace.js\");\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/helpers/objectSpread2.js */ \"./node_modules/@babel/runtime/helpers/objectSpread2.js\"));\n\nvar _constants = __webpack_require__(/*! @/utils/constants */ \"./src/utils/constants.js\");\n\nvar _login = __webpack_require__(/*! @/api/login */ \"./src/api/login.js\");\n\nvar _socialUser = __webpack_require__(/*! @/api/system/socialUser */ \"./src/api/system/socialUser.js\");\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n props: {\n user: {\n type: Object\n },\n getUser: {\n // 刷新用户\n type: Function\n },\n setActiveTab: {\n // 设置激活的\n type: Function\n }\n },\n data: function data() {\n return {};\n },\n computed: {\n socialUsers: function socialUsers() {\n var socialUsers = [];\n\n for (var i in _constants.SystemUserSocialTypeEnum) {\n var socialUser = (0, _objectSpread2.default)({}, _constants.SystemUserSocialTypeEnum[i]);\n socialUsers.push(socialUser);\n\n if (this.user.socialUsers) {\n for (var j in this.user.socialUsers) {\n if (socialUser.type === this.user.socialUsers[j].type) {\n socialUser.openid = this.user.socialUsers[j].openid;\n break;\n }\n }\n }\n }\n\n return socialUsers;\n }\n },\n created: function created() {\n var _this = this;\n\n // 社交绑定\n var type = this.$route.query.type;\n var code = this.$route.query.code;\n var state = this.$route.query.state;\n\n if (!code) {\n return;\n }\n\n (0, _socialUser.socialBind)(type, code, state).then(function (resp) {\n _this.$modal.msgSuccess(\"绑定成功\");\n\n _this.$router.replace('/user/profile'); // 调用父组件, 刷新\n\n\n _this.getUser();\n\n _this.setActiveTab('userSocial');\n });\n },\n methods: {\n bind: function bind(socialUser) {\n // 计算 redirectUri\n var redirectUri = location.origin + '/user/profile?type=' + socialUser.type; // 进行跳转\n\n (0, _login.socialAuthRedirect)(socialUser.type, encodeURIComponent(redirectUri)).then(function (res) {\n // console.log(res.url);\n window.location.href = res.data;\n });\n },\n unbind: function unbind(socialUser) {\n var _this2 = this;\n\n (0, _socialUser.socialUnbind)(socialUser.type, socialUser.openid).then(function (resp) {\n _this2.$modal.msgSuccess(\"解绑成功\");\n\n socialUser.openid = undefined;\n });\n },\n close: function close() {\n this.$tab.closePage();\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/system/user/profile/userSocial.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n__webpack_require__(/*! core-js/modules/es.array.filter.js */ \"./node_modules/core-js/modules/es.array.filter.js\");\n__webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");\n__webpack_require__(/*! core-js/modules/es.array.splice.js */ \"./node_modules/core-js/modules/es.array.splice.js\");\n__webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\nvar _utils = __webpack_require__(/*! @/utils */ \"./src/utils/index.js\");\nvar _default = {\n components: {},\n inheritAttrs: false,\n props: ['originResource'],\n data: function data() {\n return {\n resources: null\n };\n },\n computed: {},\n watch: {},\n created: function created() {},\n mounted: function mounted() {},\n methods: {\n onOpen: function onOpen() {\n this.resources = this.originResource.length ? (0, _utils.deepClone)(this.originResource) : [''];\n },\n onClose: function onClose() {},\n close: function close() {\n this.$emit('update:visible', false);\n },\n handelConfirm: function handelConfirm() {\n var results = this.resources.filter(function (item) {\n return !!item;\n }) || [];\n this.$emit('save', results);\n this.close();\n if (results.length) {\n this.resources = results;\n }\n },\n deleteOne: function deleteOne(index) {\n this.resources.splice(index, 1);\n },\n addOne: function addOne(url) {\n if (this.resources.indexOf(url) > -1) {\n this.$message('资源已存在');\n } else {\n this.resources.push(url);\n }\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/infra/build/ResourceDialog.vue?./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/index.vue?vue&type=template&id=03488e44&": -/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/system/user/profile/index.vue?vue&type=template&id=03488e44& ***! - \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"app-container\" },\n [\n _c(\n \"el-row\",\n { attrs: { gutter: 20 } },\n [\n _c(\n \"el-col\",\n { attrs: { span: 6, xs: 24 } },\n [\n _c(\"el-card\", { staticClass: \"box-card\" }, [\n _c(\n \"div\",\n {\n staticClass: \"clearfix\",\n attrs: { slot: \"header\" },\n slot: \"header\",\n },\n [_c(\"span\", [_vm._v(\"个人信息\")])]\n ),\n _c(\"div\", [\n _c(\n \"div\",\n { staticClass: \"text-center\" },\n [_c(\"userAvatar\", { attrs: { user: _vm.user } })],\n 1\n ),\n _c(\"ul\", { staticClass: \"list-group list-group-striped\" }, [\n _c(\n \"li\",\n { staticClass: \"list-group-item\" },\n [\n _c(\"svg-icon\", { attrs: { \"icon-class\": \"user\" } }),\n _vm._v(\"用户名称 \"),\n _c(\"div\", { staticClass: \"pull-right\" }, [\n _vm._v(_vm._s(_vm.user.username)),\n ]),\n ],\n 1\n ),\n _c(\n \"li\",\n { staticClass: \"list-group-item\" },\n [\n _c(\"svg-icon\", { attrs: { \"icon-class\": \"phone\" } }),\n _vm._v(\"手机号码 \"),\n _c(\"div\", { staticClass: \"pull-right\" }, [\n _vm._v(_vm._s(_vm.user.mobile)),\n ]),\n ],\n 1\n ),\n _c(\n \"li\",\n { staticClass: \"list-group-item\" },\n [\n _c(\"svg-icon\", { attrs: { \"icon-class\": \"email\" } }),\n _vm._v(\"用户邮箱 \"),\n _c(\"div\", { staticClass: \"pull-right\" }, [\n _vm._v(_vm._s(_vm.user.email)),\n ]),\n ],\n 1\n ),\n _c(\n \"li\",\n { staticClass: \"list-group-item\" },\n [\n _c(\"svg-icon\", { attrs: { \"icon-class\": \"tree\" } }),\n _vm._v(\"所属部门 \"),\n _vm.user.dept\n ? _c(\"div\", { staticClass: \"pull-right\" }, [\n _vm._v(_vm._s(_vm.user.dept.name)),\n ])\n : _vm._e(),\n ],\n 1\n ),\n _c(\n \"li\",\n { staticClass: \"list-group-item\" },\n [\n _c(\"svg-icon\", { attrs: { \"icon-class\": \"tree\" } }),\n _vm._v(\"所属岗位 \"),\n _vm.user.posts\n ? _c(\"div\", { staticClass: \"pull-right\" }, [\n _vm._v(\n _vm._s(\n _vm.user.posts\n .map(function (post) {\n return post.name\n })\n .join(\",\")\n )\n ),\n ])\n : _vm._e(),\n ],\n 1\n ),\n _c(\n \"li\",\n { staticClass: \"list-group-item\" },\n [\n _c(\"svg-icon\", { attrs: { \"icon-class\": \"peoples\" } }),\n _vm._v(\"所属角色 \"),\n _vm.user.roles\n ? _c(\"div\", { staticClass: \"pull-right\" }, [\n _vm._v(\n _vm._s(\n _vm.user.roles\n .map(function (role) {\n return role.name\n })\n .join(\",\")\n )\n ),\n ])\n : _vm._e(),\n ],\n 1\n ),\n _c(\n \"li\",\n { staticClass: \"list-group-item\" },\n [\n _c(\"svg-icon\", { attrs: { \"icon-class\": \"date\" } }),\n _vm._v(\"创建日期 \"),\n _c(\"div\", { staticClass: \"pull-right\" }, [\n _vm._v(_vm._s(_vm.parseTime(_vm.user.createTime))),\n ]),\n ],\n 1\n ),\n ]),\n ]),\n ]),\n ],\n 1\n ),\n _c(\n \"el-col\",\n { attrs: { span: 18, xs: 24 } },\n [\n _c(\n \"el-card\",\n [\n _c(\n \"div\",\n {\n staticClass: \"clearfix\",\n attrs: { slot: \"header\" },\n slot: \"header\",\n },\n [_c(\"span\", [_vm._v(\"基本资料\")])]\n ),\n _c(\n \"el-tabs\",\n {\n model: {\n value: _vm.activeTab,\n callback: function ($$v) {\n _vm.activeTab = $$v\n },\n expression: \"activeTab\",\n },\n },\n [\n _c(\n \"el-tab-pane\",\n { attrs: { label: \"基本资料\", name: \"userinfo\" } },\n [_c(\"userInfo\", { attrs: { user: _vm.user } })],\n 1\n ),\n _c(\n \"el-tab-pane\",\n { attrs: { label: \"修改密码\", name: \"resetPwd\" } },\n [_c(\"resetPwd\", { attrs: { user: _vm.user } })],\n 1\n ),\n _c(\n \"el-tab-pane\",\n { attrs: { label: \"社交信息\", name: \"userSocial\" } },\n [\n _c(\"userSocial\", {\n attrs: {\n user: _vm.user,\n getUser: _vm.getUser,\n setActiveTab: _vm.setActiveTab,\n },\n }),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/system/user/profile/index.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/resetPwd.vue?vue&type=template&id=95e4cfdc&": -/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/system/user/profile/resetPwd.vue?vue&type=template&id=95e4cfdc& ***! - \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"el-form\",\n {\n ref: \"form\",\n attrs: { model: _vm.user, rules: _vm.rules, \"label-width\": \"80px\" },\n },\n [\n _c(\n \"el-form-item\",\n { attrs: { label: \"旧密码\", prop: \"oldPassword\" } },\n [\n _c(\"el-input\", {\n attrs: {\n placeholder: \"请输入旧密码\",\n type: \"password\",\n \"show-password\": \"\",\n },\n model: {\n value: _vm.user.oldPassword,\n callback: function ($$v) {\n _vm.$set(_vm.user, \"oldPassword\", $$v)\n },\n expression: \"user.oldPassword\",\n },\n }),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"新密码\", prop: \"newPassword\" } },\n [\n _c(\"el-input\", {\n attrs: {\n placeholder: \"请输入新密码\",\n type: \"password\",\n \"show-password\": \"\",\n },\n model: {\n value: _vm.user.newPassword,\n callback: function ($$v) {\n _vm.$set(_vm.user, \"newPassword\", $$v)\n },\n expression: \"user.newPassword\",\n },\n }),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"确认密码\", prop: \"confirmPassword\" } },\n [\n _c(\"el-input\", {\n attrs: {\n placeholder: \"请确认密码\",\n type: \"password\",\n \"show-password\": \"\",\n },\n model: {\n value: _vm.user.confirmPassword,\n callback: function ($$v) {\n _vm.$set(_vm.user, \"confirmPassword\", $$v)\n },\n expression: \"user.confirmPassword\",\n },\n }),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n [\n _c(\n \"el-button\",\n {\n attrs: { type: \"primary\", size: \"mini\" },\n on: { click: _vm.submit },\n },\n [_vm._v(\"保存\")]\n ),\n _c(\n \"el-button\",\n {\n attrs: { type: \"danger\", size: \"mini\" },\n on: { click: _vm.close },\n },\n [_vm._v(\"关闭\")]\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/system/user/profile/resetPwd.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/userAvatar.vue?vue&type=template&id=e81d90b0&scoped=true&": -/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/system/user/profile/userAvatar.vue?vue&type=template&id=e81d90b0&scoped=true& ***! - \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\n \"div\",\n {\n staticClass: \"user-info-head\",\n on: {\n click: function ($event) {\n return _vm.editCropper()\n },\n },\n },\n [\n _c(\"img\", {\n staticClass: \"img-circle img-lg\",\n attrs: { src: _vm.options.img, title: \"点击上传头像\" },\n }),\n ]\n ),\n _c(\n \"el-dialog\",\n {\n attrs: {\n title: _vm.title,\n visible: _vm.open,\n width: \"800px\",\n \"append-to-body\": \"\",\n },\n on: {\n \"update:visible\": function ($event) {\n _vm.open = $event\n },\n opened: _vm.modalOpened,\n close: function ($event) {\n return _vm.closeDialog()\n },\n },\n },\n [\n _c(\n \"el-row\",\n [\n _c(\n \"el-col\",\n { style: { height: \"350px\" }, attrs: { xs: 24, md: 12 } },\n [\n _vm.visible\n ? _c(\"vue-cropper\", {\n ref: \"cropper\",\n attrs: {\n img: _vm.options.img,\n info: true,\n autoCrop: _vm.options.autoCrop,\n autoCropWidth: _vm.options.autoCropWidth,\n autoCropHeight: _vm.options.autoCropHeight,\n fixedBox: _vm.options.fixedBox,\n },\n on: { realTime: _vm.realTime },\n })\n : _vm._e(),\n ],\n 1\n ),\n _c(\n \"el-col\",\n { style: { height: \"350px\" }, attrs: { xs: 24, md: 12 } },\n [\n _c(\"div\", { staticClass: \"avatar-upload-preview\" }, [\n _c(\"img\", {\n style: _vm.previews.img,\n attrs: { src: _vm.previews.url },\n }),\n ]),\n ]\n ),\n ],\n 1\n ),\n _c(\"br\"),\n _c(\n \"el-row\",\n [\n _c(\n \"el-col\",\n { attrs: { lg: 2, md: 2 } },\n [\n _c(\n \"el-upload\",\n {\n attrs: {\n action: \"#\",\n \"http-request\": _vm.requestUpload,\n \"show-file-list\": false,\n \"before-upload\": _vm.beforeUpload,\n },\n },\n [\n _c(\"el-button\", { attrs: { size: \"small\" } }, [\n _vm._v(\" 选择 \"),\n _c(\"i\", {\n staticClass: \"el-icon-upload el-icon--right\",\n }),\n ]),\n ],\n 1\n ),\n ],\n 1\n ),\n _c(\n \"el-col\",\n { attrs: { lg: { span: 1, offset: 2 }, md: 2 } },\n [\n _c(\"el-button\", {\n attrs: { icon: \"el-icon-plus\", size: \"small\" },\n on: {\n click: function ($event) {\n return _vm.changeScale(1)\n },\n },\n }),\n ],\n 1\n ),\n _c(\n \"el-col\",\n { attrs: { lg: { span: 1, offset: 1 }, md: 2 } },\n [\n _c(\"el-button\", {\n attrs: { icon: \"el-icon-minus\", size: \"small\" },\n on: {\n click: function ($event) {\n return _vm.changeScale(-1)\n },\n },\n }),\n ],\n 1\n ),\n _c(\n \"el-col\",\n { attrs: { lg: { span: 1, offset: 1 }, md: 2 } },\n [\n _c(\"el-button\", {\n attrs: { icon: \"el-icon-refresh-left\", size: \"small\" },\n on: {\n click: function ($event) {\n return _vm.rotateLeft()\n },\n },\n }),\n ],\n 1\n ),\n _c(\n \"el-col\",\n { attrs: { lg: { span: 1, offset: 1 }, md: 2 } },\n [\n _c(\"el-button\", {\n attrs: { icon: \"el-icon-refresh-right\", size: \"small\" },\n on: {\n click: function ($event) {\n return _vm.rotateRight()\n },\n },\n }),\n ],\n 1\n ),\n _c(\n \"el-col\",\n { attrs: { lg: { span: 2, offset: 6 }, md: 2 } },\n [\n _c(\n \"el-button\",\n {\n attrs: { type: \"primary\", size: \"small\" },\n on: {\n click: function ($event) {\n return _vm.uploadImg()\n },\n },\n },\n [_vm._v(\"提 交\")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/system/user/profile/userAvatar.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/userInfo.vue?vue&type=template&id=804a6b86&": -/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/system/user/profile/userInfo.vue?vue&type=template&id=804a6b86& ***! - \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"el-form\",\n {\n ref: \"form\",\n attrs: { model: _vm.user, rules: _vm.rules, \"label-width\": \"80px\" },\n },\n [\n _c(\n \"el-form-item\",\n { attrs: { label: \"用户昵称\", prop: \"nickName\" } },\n [\n _c(\"el-input\", {\n model: {\n value: _vm.user.nickname,\n callback: function ($$v) {\n _vm.$set(_vm.user, \"nickname\", $$v)\n },\n expression: \"user.nickname\",\n },\n }),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"手机号码\", prop: \"mobile\" } },\n [\n _c(\"el-input\", {\n attrs: { maxlength: \"11\" },\n model: {\n value: _vm.user.mobile,\n callback: function ($$v) {\n _vm.$set(_vm.user, \"mobile\", $$v)\n },\n expression: \"user.mobile\",\n },\n }),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"邮箱\", prop: \"email\" } },\n [\n _c(\"el-input\", {\n attrs: { maxlength: \"50\" },\n model: {\n value: _vm.user.email,\n callback: function ($$v) {\n _vm.$set(_vm.user, \"email\", $$v)\n },\n expression: \"user.email\",\n },\n }),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { label: \"性别\" } },\n [\n _c(\n \"el-radio-group\",\n {\n model: {\n value: _vm.user.sex,\n callback: function ($$v) {\n _vm.$set(_vm.user, \"sex\", $$v)\n },\n expression: \"user.sex\",\n },\n },\n [\n _c(\"el-radio\", { attrs: { label: 1 } }, [_vm._v(\"男\")]),\n _c(\"el-radio\", { attrs: { label: 2 } }, [_vm._v(\"女\")]),\n ],\n 1\n ),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n [\n _c(\n \"el-button\",\n {\n attrs: { type: \"primary\", size: \"mini\" },\n on: { click: _vm.submit },\n },\n [_vm._v(\"保存\")]\n ),\n _c(\n \"el-button\",\n {\n attrs: { type: \"danger\", size: \"mini\" },\n on: { click: _vm.close },\n },\n [_vm._v(\"关闭\")]\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/system/user/profile/userInfo.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/userSocial.vue?vue&type=template&id=34c563bc&": -/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/system/user/profile/userSocial.vue?vue&type=template&id=34c563bc& ***! - \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"el-table\",\n { attrs: { data: _vm.socialUsers, \"show-header\": false } },\n [\n _c(\"el-table-column\", {\n attrs: { label: \"社交平台\", align: \"left\", width: \"120\" },\n scopedSlots: _vm._u([\n {\n key: \"default\",\n fn: function (scope) {\n return [\n _c(\"img\", {\n staticStyle: { height: \"20px\", \"vertical-align\": \"middle\" },\n attrs: { src: scope.row.img },\n }),\n _vm._v(\" \" + _vm._s(scope.row.title) + \" \"),\n ]\n },\n },\n ]),\n }),\n _c(\"el-table-column\", {\n attrs: { label: \"操作\", align: \"left\" },\n scopedSlots: _vm._u([\n {\n key: \"default\",\n fn: function (scope) {\n return [\n scope.row.openid\n ? _c(\n \"div\",\n [\n _vm._v(\" 已绑定 \"),\n _c(\n \"el-button\",\n {\n attrs: { size: \"large\", type: \"text\" },\n on: {\n click: function ($event) {\n return _vm.unbind(scope.row)\n },\n },\n },\n [_vm._v(\"(解绑)\")]\n ),\n ],\n 1\n )\n : _c(\n \"div\",\n [\n _vm._v(\" 未绑定 \"),\n _c(\n \"el-button\",\n {\n attrs: { size: \"large\", type: \"text\" },\n on: {\n click: function ($event) {\n return _vm.bind(scope.row)\n },\n },\n },\n [_vm._v(\"(绑定)\")]\n ),\n ],\n 1\n ),\n ]\n },\n },\n ]),\n }),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/system/user/profile/userSocial.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/userAvatar.vue?vue&type=style&index=0&id=e81d90b0&scoped=true&lang=scss&": -/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/system/user/profile/userAvatar.vue?vue&type=style&index=0&id=e81d90b0&scoped=true&lang=scss& ***! - \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".user-info-head[data-v-e81d90b0] {\\n position: relative;\\n display: inline-block;\\n height: 120px;\\n}\\n.user-info-head[data-v-e81d90b0]:hover:after {\\n content: \\\"+\\\";\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: 0;\\n bottom: 0;\\n color: #eee;\\n background: rgba(0, 0, 0, 0.5);\\n font-size: 24px;\\n font-style: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n cursor: pointer;\\n line-height: 110px;\\n border-radius: 50%;\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/views/system/user/profile/userAvatar.vue?./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/vue-cropper/dist/index.js": -/*!************************************************!*\ - !*** ./node_modules/vue-cropper/dist/index.js ***! - \************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("!function(t,e){ true?module.exports=e():undefined}(window,function(){return function(t){var e={};function o(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,o),r.l=!0,r.exports}return o.m=t,o.c=e,o.d=function(t,e,n){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},o.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var r in t)o.d(n,r,function(e){return t[e]}.bind(null,r));return n},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,\"a\",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p=\"\",o(o.s=6)}([function(t,e,o){var n=o(2);\"string\"==typeof n&&(n=[[t.i,n,\"\"]]);var r={hmr:!0,transform:void 0,insertInto:void 0};o(4)(n,r);n.locals&&(t.exports=n.locals)},function(t,e,o){\"use strict\";var n=o(0);o.n(n).a},function(t,e,o){(t.exports=o(3)(!1)).push([t.i,'\\n.vue-cropper[data-v-6dae58fd] {\\n position: relative;\\n width: 100%;\\n height: 100%;\\n box-sizing: border-box;\\n user-select: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n direction: ltr;\\n touch-action: none;\\n text-align: left;\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC\");\\n}\\n.cropper-box[data-v-6dae58fd],\\n.cropper-box-canvas[data-v-6dae58fd],\\n.cropper-drag-box[data-v-6dae58fd],\\n.cropper-crop-box[data-v-6dae58fd],\\n.cropper-face[data-v-6dae58fd] {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n user-select: none;\\n}\\n.cropper-box-canvas img[data-v-6dae58fd] {\\n position: relative;\\n text-align: left;\\n user-select: none;\\n transform: none;\\n max-width: none;\\n max-height: none;\\n}\\n.cropper-box[data-v-6dae58fd] {\\n overflow: hidden;\\n}\\n.cropper-move[data-v-6dae58fd] {\\n cursor: move;\\n}\\n.cropper-crop[data-v-6dae58fd] {\\n cursor: crosshair;\\n}\\n.cropper-modal[data-v-6dae58fd] {\\n background: rgba(0, 0, 0, 0.5);\\n}\\n.cropper-crop-box[data-v-6dae58fd] {\\n /*border: 2px solid #39f;*/\\n}\\n.cropper-view-box[data-v-6dae58fd] {\\n display: block;\\n overflow: hidden;\\n width: 100%;\\n height: 100%;\\n outline: 1px solid #39f;\\n outline-color: rgba(51, 153, 255, 0.75);\\n user-select: none;\\n}\\n.cropper-view-box img[data-v-6dae58fd] {\\n user-select: none;\\n text-align: left;\\n max-width: none;\\n max-height: none;\\n}\\n.cropper-face[data-v-6dae58fd] {\\n top: 0;\\n left: 0;\\n background-color: #fff;\\n opacity: 0.1;\\n}\\n.crop-info[data-v-6dae58fd] {\\n position: absolute;\\n left: 0px;\\n min-width: 65px;\\n text-align: center;\\n color: white;\\n line-height: 20px;\\n background-color: rgba(0, 0, 0, 0.8);\\n font-size: 12px;\\n}\\n.crop-line[data-v-6dae58fd] {\\n position: absolute;\\n display: block;\\n width: 100%;\\n height: 100%;\\n opacity: 0.1;\\n}\\n.line-w[data-v-6dae58fd] {\\n top: -3px;\\n left: 0;\\n height: 5px;\\n cursor: n-resize;\\n}\\n.line-a[data-v-6dae58fd] {\\n top: 0;\\n left: -3px;\\n width: 5px;\\n cursor: w-resize;\\n}\\n.line-s[data-v-6dae58fd] {\\n bottom: -3px;\\n left: 0;\\n height: 5px;\\n cursor: s-resize;\\n}\\n.line-d[data-v-6dae58fd] {\\n top: 0;\\n right: -3px;\\n width: 5px;\\n cursor: e-resize;\\n}\\n.crop-point[data-v-6dae58fd] {\\n position: absolute;\\n width: 8px;\\n height: 8px;\\n opacity: 0.75;\\n background-color: #39f;\\n border-radius: 100%;\\n}\\n.point1[data-v-6dae58fd] {\\n top: -4px;\\n left: -4px;\\n cursor: nw-resize;\\n}\\n.point2[data-v-6dae58fd] {\\n top: -5px;\\n left: 50%;\\n margin-left: -3px;\\n cursor: n-resize;\\n}\\n.point3[data-v-6dae58fd] {\\n top: -4px;\\n right: -4px;\\n cursor: ne-resize;\\n}\\n.point4[data-v-6dae58fd] {\\n top: 50%;\\n left: -4px;\\n margin-top: -3px;\\n cursor: w-resize;\\n}\\n.point5[data-v-6dae58fd] {\\n top: 50%;\\n right: -4px;\\n margin-top: -3px;\\n cursor: e-resize;\\n}\\n.point6[data-v-6dae58fd] {\\n bottom: -5px;\\n left: -4px;\\n cursor: sw-resize;\\n}\\n.point7[data-v-6dae58fd] {\\n bottom: -5px;\\n left: 50%;\\n margin-left: -3px;\\n cursor: s-resize;\\n}\\n.point8[data-v-6dae58fd] {\\n bottom: -5px;\\n right: -4px;\\n cursor: se-resize;\\n}\\n@media screen and (max-width: 500px) {\\n.crop-point[data-v-6dae58fd] {\\n position: absolute;\\n width: 20px;\\n height: 20px;\\n opacity: 0.45;\\n background-color: #39f;\\n border-radius: 100%;\\n}\\n.point1[data-v-6dae58fd] {\\n top: -10px;\\n left: -10px;\\n}\\n.point2[data-v-6dae58fd],\\n .point4[data-v-6dae58fd],\\n .point5[data-v-6dae58fd],\\n .point7[data-v-6dae58fd] {\\n display: none;\\n}\\n.point3[data-v-6dae58fd] {\\n top: -10px;\\n right: -10px;\\n}\\n.point4[data-v-6dae58fd] {\\n top: 0;\\n left: 0;\\n}\\n.point6[data-v-6dae58fd] {\\n bottom: -10px;\\n left: -10px;\\n}\\n.point8[data-v-6dae58fd] {\\n bottom: -10px;\\n right: -10px;\\n}\\n}\\n',\"\"])},function(t,e){t.exports=function(t){var e=[];return e.toString=function(){return this.map(function(e){var o=function(t,e){var o=t[1]||\"\",n=t[3];if(!n)return o;if(e&&\"function\"==typeof btoa){var r=function(t){return\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(t))))+\" */\"}(n),i=n.sources.map(function(t){return\"/*# sourceURL=\"+n.sourceRoot+t+\" */\"});return[o].concat(i).concat([r]).join(\"\\n\")}return[o].join(\"\\n\")}(e,t);return e[2]?\"@media \"+e[2]+\"{\"+o+\"}\":o}).join(\"\")},e.i=function(t,o){\"string\"==typeof t&&(t=[[null,t,\"\"]]);for(var n={},r=0;r=0&&c.splice(e,1)}function f(t){var e=document.createElement(\"style\");if(void 0===t.attrs.type&&(t.attrs.type=\"text/css\"),void 0===t.attrs.nonce){var n=function(){0;return o.nc}();n&&(t.attrs.nonce=n)}return g(e,t.attrs),d(t,e),e}function g(t,e){Object.keys(e).forEach(function(o){t.setAttribute(o,e[o])})}function v(t,e){var o,n,r,i;if(e.transform&&t.css){if(!(i=\"function\"==typeof e.transform?e.transform(t.css):e.transform.default(t.css)))return function(){};t.css=i}if(e.singleton){var c=a++;o=s||(s=f(e)),n=w.bind(null,o,c,!1),r=w.bind(null,o,c,!0)}else t.sourceMap&&\"function\"==typeof URL&&\"function\"==typeof URL.createObjectURL&&\"function\"==typeof URL.revokeObjectURL&&\"function\"==typeof Blob&&\"function\"==typeof btoa?(o=function(t){var e=document.createElement(\"link\");return void 0===t.attrs.type&&(t.attrs.type=\"text/css\"),t.attrs.rel=\"stylesheet\",g(e,t.attrs),d(t,e),e}(e),n=function(t,e,o){var n=o.css,r=o.sourceMap,i=void 0===e.convertToAbsoluteUrls&&r;(e.convertToAbsoluteUrls||i)&&(n=h(n));r&&(n+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+\" */\");var s=new Blob([n],{type:\"text/css\"}),a=t.href;t.href=URL.createObjectURL(s),a&&URL.revokeObjectURL(a)}.bind(null,o,e),r=function(){l(o),o.href&&URL.revokeObjectURL(o.href)}):(o=f(e),n=function(t,e){var o=e.css,n=e.media;n&&t.setAttribute(\"media\",n);if(t.styleSheet)t.styleSheet.cssText=o;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(o))}}.bind(null,o),r=function(){l(o)});return n(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;n(t=e)}else r()}}t.exports=function(t,e){if(\"undefined\"!=typeof DEBUG&&DEBUG&&\"object\"!=typeof document)throw new Error(\"The style-loader cannot be used in a non-browser environment\");(e=e||{}).attrs=\"object\"==typeof e.attrs?e.attrs:{},e.singleton||\"boolean\"==typeof e.singleton||(e.singleton=r()),e.insertInto||(e.insertInto=\"head\"),e.insertAt||(e.insertAt=\"bottom\");var o=u(t,e);return p(o,e),function(t){for(var r=[],i=0;i=8&&(a=o+n)));if(a)for(u=p.getUint16(a,r),h=0;h21?\"-21px\":\"0px\",t.width=this.cropW>0?this.cropW:0,t.height=this.cropH>0?this.cropH:0,this.infoTrue){var e=1;this.high&&!this.full&&(e=window.devicePixelRatio),1!==this.enlarge&!this.full&&(e=Math.abs(Number(this.enlarge))),t.width=t.width*e,t.height=t.height*e,this.full&&(t.width=t.width/this.scale,t.height=t.height/this.scale)}return t.width=t.width.toFixed(0),t.height=t.height.toFixed(0),t},isIE:function(){navigator.userAgent;var t=!!window.ActiveXObject||\"ActiveXObject\"in window;return t},passive:function(){return this.isIE?null:{passive:!1}}},watch:{img:function(){this.checkedImg()},imgs:function(t){\"\"!==t&&this.reload()},cropW:function(){this.showPreview()},cropH:function(){this.showPreview()},cropOffsertX:function(){this.showPreview()},cropOffsertY:function(){this.showPreview()},scale:function(t,e){this.showPreview()},x:function(){this.showPreview()},y:function(){this.showPreview()},autoCrop:function(t){t&&this.goAutoCrop()},autoCropWidth:function(){this.autoCrop&&this.goAutoCrop()},autoCropHeight:function(){this.autoCrop&&this.goAutoCrop()},mode:function(){this.checkedImg()},rotate:function(){this.showPreview(),this.autoCrop?this.goAutoCrop(this.cropW,this.cropH):(this.cropW>0||this.cropH>0)&&this.goAutoCrop(this.cropW,this.cropH)}},methods:{getVersion:function(t){for(var e=navigator.userAgent.split(\" \"),o=\"\",n=new RegExp(t,\"i\"),r=0;r=81)e=-1;else if(this.getVersion(\"safari\")[0]>=605){var i=this.getVersion(\"version\");i[0]>13&&i[1]>1&&(e=-1)}else{var s=navigator.userAgent.toLowerCase().match(/cpu iphone os (.*?) like mac os/);if(s){var a=s[1];((a=a.split(\"_\"))[0]>13||a[0]>=13&&a[1]>=4)&&(e=-1)}}var c=document.createElement(\"canvas\"),h=c.getContext(\"2d\");switch(h.save(),e){case 2:c.width=o,c.height=n,h.translate(o,0),h.scale(-1,1);break;case 3:c.width=o,c.height=n,h.translate(o/2,n/2),h.rotate(180*Math.PI/180),h.translate(-o/2,-n/2);break;case 4:c.width=o,c.height=n,h.translate(0,n),h.scale(1,-1);break;case 5:c.height=o,c.width=n,h.rotate(.5*Math.PI),h.scale(1,-1);break;case 6:c.width=n,c.height=o,h.translate(n/2,o/2),h.rotate(90*Math.PI/180),h.translate(-o/2,-n/2);break;case 7:c.height=o,c.width=n,h.rotate(.5*Math.PI),h.translate(o,-n),h.scale(-1,1);break;case 8:c.height=o,c.width=n,h.translate(n/2,o/2),h.rotate(-90*Math.PI/180),h.translate(-o/2,-n/2);break;default:c.width=o,c.height=n}h.drawImage(t,0,0,o,n),h.restore(),c.toBlob(function(t){var e=URL.createObjectURL(t);URL.revokeObjectURL(r.imgs),r.imgs=e},\"image/\"+this.outputType,1)},checkedImg:function(){var t=this;if(null===this.img||\"\"===this.img)return this.imgs=\"\",void this.clearCrop();this.loading=!0,this.scale=1,this.rotate=0,this.clearCrop();var e=new Image;if(e.onload=function(){if(\"\"===t.img)return t.$emit(\"imgLoad\",\"error\"),t.$emit(\"img-load\",\"error\"),!1;var o=e.width,n=e.height;i.getData(e).then(function(r){t.orientation=r.orientation||1;var i=t.maxImgSize;!t.orientation&&oi&&(n=n/o*i,o=i),n>i&&(o=o/n*i,n=i),t.checkOrientationImage(e,t.orientation,o,n))})},e.onerror=function(){t.$emit(\"imgLoad\",\"error\"),t.$emit(\"img-load\",\"error\")},\"data\"!==this.img.substr(0,4)&&(e.crossOrigin=\"\"),this.isIE){var o=new XMLHttpRequest;o.onload=function(){var t=URL.createObjectURL(this.response);e.src=t},o.open(\"GET\",this.img,!0),o.responseType=\"blob\",o.send()}else e.src=this.img},startMove:function(t){if(t.preventDefault(),this.move&&!this.crop){if(!this.canMove)return!1;this.moveX=(t.clientX?t.clientX:t.touches[0].clientX)-this.x,this.moveY=(t.clientY?t.clientY:t.touches[0].clientY)-this.y,t.touches?(window.addEventListener(\"touchmove\",this.moveImg),window.addEventListener(\"touchend\",this.leaveImg),2==t.touches.length&&(this.touches=t.touches,window.addEventListener(\"touchmove\",this.touchScale),window.addEventListener(\"touchend\",this.cancelTouchScale))):(window.addEventListener(\"mousemove\",this.moveImg),window.addEventListener(\"mouseup\",this.leaveImg)),this.$emit(\"imgMoving\",{moving:!0,axis:this.getImgAxis()}),this.$emit(\"img-moving\",{moving:!0,axis:this.getImgAxis()})}else this.cropping=!0,window.addEventListener(\"mousemove\",this.createCrop),window.addEventListener(\"mouseup\",this.endCrop),window.addEventListener(\"touchmove\",this.createCrop),window.addEventListener(\"touchend\",this.endCrop),this.cropOffsertX=t.offsetX?t.offsetX:t.touches[0].pageX-this.$refs.cropper.offsetLeft,this.cropOffsertY=t.offsetY?t.offsetY:t.touches[0].pageY-this.$refs.cropper.offsetTop,this.cropX=t.clientX?t.clientX:t.touches[0].clientX,this.cropY=t.clientY?t.clientY:t.touches[0].clientY,this.cropChangeX=this.cropOffsertX,this.cropChangeY=this.cropOffsertY,this.cropW=0,this.cropH=0},touchScale:function(t){var e=this;t.preventDefault();var o=this.scale,n=this.touches[0].clientX,r=this.touches[0].clientY,i=t.touches[0].clientX,s=t.touches[0].clientY,a=this.touches[1].clientX,c=this.touches[1].clientY,h=t.touches[1].clientX,p=t.touches[1].clientY,u=Math.sqrt(Math.pow(n-a,2)+Math.pow(r-c,2)),d=Math.sqrt(Math.pow(i-h,2)+Math.pow(s-p,2))-u,l=1,f=(l=(l=l/this.trueWidth>l/this.trueHeight?l/this.trueHeight:l/this.trueWidth)>.1?.1:l)*d;if(!this.touchNow){if(this.touchNow=!0,d>0?o+=Math.abs(f):d<0&&o>Math.abs(f)&&(o-=Math.abs(f)),this.touches=t.touches,setTimeout(function(){e.touchNow=!1},8),!this.checkoutImgAxis(this.x,this.y,o))return!1;this.scale=o}},cancelTouchScale:function(t){window.removeEventListener(\"touchmove\",this.touchScale)},moveImg:function(t){var e=this;if(t.preventDefault(),t.touches&&2===t.touches.length)return this.touches=t.touches,window.addEventListener(\"touchmove\",this.touchScale),window.addEventListener(\"touchend\",this.cancelTouchScale),window.removeEventListener(\"touchmove\",this.moveImg),!1;var o,n,r=t.clientX?t.clientX:t.touches[0].clientX,i=t.clientY?t.clientY:t.touches[0].clientY;o=r-this.moveX,n=i-this.moveY,this.$nextTick(function(){if(e.centerBox){var t,r,i,s,a=e.getImgAxis(o,n,e.scale),c=e.getCropAxis(),h=e.trueHeight*e.scale,p=e.trueWidth*e.scale;switch(e.rotate){case 1:case-1:case 3:case-3:t=e.cropOffsertX-e.trueWidth*(1-e.scale)/2+(h-p)/2,r=e.cropOffsertY-e.trueHeight*(1-e.scale)/2+(p-h)/2,i=t-h+e.cropW,s=r-p+e.cropH;break;default:t=e.cropOffsertX-e.trueWidth*(1-e.scale)/2,r=e.cropOffsertY-e.trueHeight*(1-e.scale)/2,i=t-p+e.cropW,s=r-h+e.cropH}a.x1>=c.x1&&(o=t),a.y1>=c.y1&&(n=r),a.x2<=c.x2&&(o=i),a.y2<=c.y2&&(n=s)}e.x=o,e.y=n,e.$emit(\"imgMoving\",{moving:!0,axis:e.getImgAxis()}),e.$emit(\"img-moving\",{moving:!0,axis:e.getImgAxis()})})},leaveImg:function(t){window.removeEventListener(\"mousemove\",this.moveImg),window.removeEventListener(\"touchmove\",this.moveImg),window.removeEventListener(\"mouseup\",this.leaveImg),window.removeEventListener(\"touchend\",this.leaveImg),this.$emit(\"imgMoving\",{moving:!1,axis:this.getImgAxis()}),this.$emit(\"img-moving\",{moving:!1,axis:this.getImgAxis()})},scaleImg:function(){this.canScale&&window.addEventListener(this.support,this.changeSize,this.passive)},cancelScale:function(){this.canScale&&window.removeEventListener(this.support,this.changeSize)},changeSize:function(t){var e=this;t.preventDefault();var o=this.scale,n=t.deltaY||t.wheelDelta;n=navigator.userAgent.indexOf(\"Firefox\")>0?30*n:n,this.isIE&&(n=-n);var r=this.coe,i=(r=r/this.trueWidth>r/this.trueHeight?r/this.trueHeight:r/this.trueWidth)*n;i<0?o+=Math.abs(i):o>Math.abs(i)&&(o-=Math.abs(i));var s=i<0?\"add\":\"reduce\";if(s!==this.coeStatus&&(this.coeStatus=s,this.coe=.2),this.scaling||(this.scalingSet=setTimeout(function(){e.scaling=!1,e.coe=e.coe+=.01},50)),this.scaling=!0,!this.checkoutImgAxis(this.x,this.y,o))return!1;this.scale=o},changeScale:function(t){var e=this.scale;t=t||1;var o=20;if((t*=o=o/this.trueWidth>o/this.trueHeight?o/this.trueHeight:o/this.trueWidth)>0?e+=Math.abs(t):e>Math.abs(t)&&(e-=Math.abs(t)),!this.checkoutImgAxis(this.x,this.y,e))return!1;this.scale=e},createCrop:function(t){var e=this;t.preventDefault();var o=t.clientX?t.clientX:t.touches?t.touches[0].clientX:0,n=t.clientY?t.clientY:t.touches?t.touches[0].clientY:0;this.$nextTick(function(){var t=o-e.cropX,r=n-e.cropY;if(t>0?(e.cropW=t+e.cropChangeX>e.w?e.w-e.cropChangeX:t,e.cropOffsertX=e.cropChangeX):(e.cropW=e.w-e.cropChangeX+Math.abs(t)>e.w?e.cropChangeX:Math.abs(t),e.cropOffsertX=e.cropChangeX+t>0?e.cropChangeX+t:0),e.fixed){var i=e.cropW/e.fixedNumber[0]*e.fixedNumber[1];i+e.cropOffsertY>e.h?(e.cropH=e.h-e.cropOffsertY,e.cropW=e.cropH/e.fixedNumber[1]*e.fixedNumber[0],e.cropOffsertX=t>0?e.cropChangeX:e.cropChangeX-e.cropW):e.cropH=i,e.cropOffsertY=e.cropOffsertY}else r>0?(e.cropH=r+e.cropChangeY>e.h?e.h-e.cropChangeY:r,e.cropOffsertY=e.cropChangeY):(e.cropH=e.h-e.cropChangeY+Math.abs(r)>e.h?e.cropChangeY:Math.abs(r),e.cropOffsertY=e.cropChangeY+r>0?e.cropChangeY+r:0)})},changeCropSize:function(t,e,o,n,r){t.preventDefault(),window.addEventListener(\"mousemove\",this.changeCropNow),window.addEventListener(\"mouseup\",this.changeCropEnd),window.addEventListener(\"touchmove\",this.changeCropNow),window.addEventListener(\"touchend\",this.changeCropEnd),this.canChangeX=e,this.canChangeY=o,this.changeCropTypeX=n,this.changeCropTypeY=r,this.cropX=t.clientX?t.clientX:t.touches[0].clientX,this.cropY=t.clientY?t.clientY:t.touches[0].clientY,this.cropOldW=this.cropW,this.cropOldH=this.cropH,this.cropChangeX=this.cropOffsertX,this.cropChangeY=this.cropOffsertY,this.fixed&&this.canChangeX&&this.canChangeY&&(this.canChangeY=0),this.$emit(\"change-crop-size\",{width:this.cropW,height:this.cropH})},changeCropNow:function(t){var e=this;t.preventDefault();var o=t.clientX?t.clientX:t.touches?t.touches[0].clientX:0,n=t.clientY?t.clientY:t.touches?t.touches[0].clientY:0,r=this.w,i=this.h,s=0,a=0;if(this.centerBox){var c=this.getImgAxis(),h=c.x2,p=c.y2;s=c.x1>0?c.x1:0,a=c.y1>0?c.y1:0,r>h&&(r=h),i>p&&(i=p)}this.$nextTick(function(){var t=o-e.cropX,c=n-e.cropY;if(e.canChangeX&&(1===e.changeCropTypeX?e.cropOldW-t>0?(e.cropW=r-e.cropChangeX-t<=r-s?e.cropOldW-t:e.cropOldW+e.cropChangeX-s,e.cropOffsertX=r-e.cropChangeX-t<=r-s?e.cropChangeX+t:s):(e.cropW=Math.abs(t)+e.cropChangeX<=r?Math.abs(t)-e.cropOldW:r-e.cropOldW-e.cropChangeX,e.cropOffsertX=e.cropChangeX+e.cropOldW):2===e.changeCropTypeX&&(e.cropOldW+t>0?(e.cropW=e.cropOldW+t+e.cropOffsertX<=r?e.cropOldW+t:r-e.cropOffsertX,e.cropOffsertX=e.cropChangeX):(e.cropW=r-e.cropChangeX+Math.abs(t+e.cropOldW)<=r-s?Math.abs(t+e.cropOldW):e.cropChangeX-s,e.cropOffsertX=r-e.cropChangeX+Math.abs(t+e.cropOldW)<=r-s?e.cropChangeX-Math.abs(t+e.cropOldW):s))),e.canChangeY&&(1===e.changeCropTypeY?e.cropOldH-c>0?(e.cropH=i-e.cropChangeY-c<=i-a?e.cropOldH-c:e.cropOldH+e.cropChangeY-a,e.cropOffsertY=i-e.cropChangeY-c<=i-a?e.cropChangeY+c:a):(e.cropH=Math.abs(c)+e.cropChangeY<=i?Math.abs(c)-e.cropOldH:i-e.cropOldH-e.cropChangeY,e.cropOffsertY=e.cropChangeY+e.cropOldH):2===e.changeCropTypeY&&(e.cropOldH+c>0?(e.cropH=e.cropOldH+c+e.cropOffsertY<=i?e.cropOldH+c:i-e.cropOffsertY,e.cropOffsertY=e.cropChangeY):(e.cropH=i-e.cropChangeY+Math.abs(c+e.cropOldH)<=i-a?Math.abs(c+e.cropOldH):e.cropChangeY-a,e.cropOffsertY=i-e.cropChangeY+Math.abs(c+e.cropOldH)<=i-a?e.cropChangeY-Math.abs(c+e.cropOldH):a))),e.canChangeX&&e.fixed){var h=e.cropW/e.fixedNumber[0]*e.fixedNumber[1];h+e.cropOffsertY>i?(e.cropH=i-e.cropOffsertY,e.cropW=e.cropH/e.fixedNumber[1]*e.fixedNumber[0]):e.cropH=h}if(e.canChangeY&&e.fixed){var p=e.cropH/e.fixedNumber[1]*e.fixedNumber[0];p+e.cropOffsertX>r?(e.cropW=r-e.cropOffsertX,e.cropH=e.cropW/e.fixedNumber[0]*e.fixedNumber[1]):e.cropW=p}})},checkCropLimitSize:function(){this.cropW,this.cropH;var t=this.limitMinSize,e=new Array;return e=Array.isArray[t]?t:[t,t],[parseFloat(e[0]),parseFloat(e[1])]},changeCropEnd:function(t){window.removeEventListener(\"mousemove\",this.changeCropNow),window.removeEventListener(\"mouseup\",this.changeCropEnd),window.removeEventListener(\"touchmove\",this.changeCropNow),window.removeEventListener(\"touchend\",this.changeCropEnd)},endCrop:function(){0===this.cropW&&0===this.cropH&&(this.cropping=!1),window.removeEventListener(\"mousemove\",this.createCrop),window.removeEventListener(\"mouseup\",this.endCrop),window.removeEventListener(\"touchmove\",this.createCrop),window.removeEventListener(\"touchend\",this.endCrop)},startCrop:function(){this.crop=!0},stopCrop:function(){this.crop=!1},clearCrop:function(){this.cropping=!1,this.cropW=0,this.cropH=0},cropMove:function(t){if(t.preventDefault(),!this.canMoveBox)return this.crop=!1,this.startMove(t),!1;if(t.touches&&2===t.touches.length)return this.crop=!1,this.startMove(t),this.leaveCrop(),!1;window.addEventListener(\"mousemove\",this.moveCrop),window.addEventListener(\"mouseup\",this.leaveCrop),window.addEventListener(\"touchmove\",this.moveCrop),window.addEventListener(\"touchend\",this.leaveCrop);var e,o,n=t.clientX?t.clientX:t.touches[0].clientX,r=t.clientY?t.clientY:t.touches[0].clientY;e=n-this.cropOffsertX,o=r-this.cropOffsertY,this.cropX=e,this.cropY=o,this.$emit(\"cropMoving\",{moving:!0,axis:this.getCropAxis()}),this.$emit(\"crop-moving\",{moving:!0,axis:this.getCropAxis()})},moveCrop:function(t,e){var o=this,n=0,r=0;t&&(t.preventDefault(),n=t.clientX?t.clientX:t.touches[0].clientX,r=t.clientY?t.clientY:t.touches[0].clientY),this.$nextTick(function(){var t,i,s=n-o.cropX,a=r-o.cropY;if(e&&(s=o.cropOffsertX,a=o.cropOffsertY),t=s<=0?0:s+o.cropW>o.w?o.w-o.cropW:s,i=a<=0?0:a+o.cropH>o.h?o.h-o.cropH:a,o.centerBox){var c=o.getImgAxis();t<=c.x1&&(t=c.x1),t+o.cropW>c.x2&&(t=c.x2-o.cropW),i<=c.y1&&(i=c.y1),i+o.cropH>c.y2&&(i=c.y2-o.cropH)}o.cropOffsertX=t,o.cropOffsertY=i,o.$emit(\"cropMoving\",{moving:!0,axis:o.getCropAxis()}),o.$emit(\"crop-moving\",{moving:!0,axis:o.getCropAxis()})})},getImgAxis:function(t,e,o){t=t||this.x,e=e||this.y,o=o||this.scale;var n={x1:0,x2:0,y1:0,y2:0},r=this.trueWidth*o,i=this.trueHeight*o;switch(this.rotate){case 0:n.x1=t+this.trueWidth*(1-o)/2,n.x2=n.x1+this.trueWidth*o,n.y1=e+this.trueHeight*(1-o)/2,n.y2=n.y1+this.trueHeight*o;break;case 1:case-1:case 3:case-3:n.x1=t+this.trueWidth*(1-o)/2+(r-i)/2,n.x2=n.x1+this.trueHeight*o,n.y1=e+this.trueHeight*(1-o)/2+(i-r)/2,n.y2=n.y1+this.trueWidth*o;break;default:n.x1=t+this.trueWidth*(1-o)/2,n.x2=n.x1+this.trueWidth*o,n.y1=e+this.trueHeight*(1-o)/2,n.y2=n.y1+this.trueHeight*o}return n},getCropAxis:function(){var t={x1:0,x2:0,y1:0,y2:0};return t.x1=this.cropOffsertX,t.x2=t.x1+this.cropW,t.y1=this.cropOffsertY,t.y2=t.y1+this.cropH,t},leaveCrop:function(t){window.removeEventListener(\"mousemove\",this.moveCrop),window.removeEventListener(\"mouseup\",this.leaveCrop),window.removeEventListener(\"touchmove\",this.moveCrop),window.removeEventListener(\"touchend\",this.leaveCrop),this.$emit(\"cropMoving\",{moving:!1,axis:this.getCropAxis()}),this.$emit(\"crop-moving\",{moving:!1,axis:this.getCropAxis()})},getCropChecked:function(t){var e=this,o=document.createElement(\"canvas\"),n=new Image,r=this.rotate,i=this.trueWidth,s=this.trueHeight,a=this.cropOffsertX,c=this.cropOffsertY;function h(t,e){o.width=Math.round(t),o.height=Math.round(e)}n.onload=function(){if(0!==e.cropW){var p=o.getContext(\"2d\"),u=1;e.high&!e.full&&(u=window.devicePixelRatio),1!==e.enlarge&!e.full&&(u=Math.abs(Number(e.enlarge)));var d=e.cropW*u,l=e.cropH*u,f=i*e.scale*u,g=s*e.scale*u,v=(e.x-a+e.trueWidth*(1-e.scale)/2)*u,m=(e.y-c+e.trueHeight*(1-e.scale)/2)*u;switch(h(d,l),p.save(),r){case 0:e.full?(h(d/e.scale,l/e.scale),p.drawImage(n,v/e.scale,m/e.scale,f/e.scale,g/e.scale)):p.drawImage(n,v,m,f,g);break;case 1:case-3:e.full?(h(d/e.scale,l/e.scale),v=v/e.scale+(f/e.scale-g/e.scale)/2,m=m/e.scale+(g/e.scale-f/e.scale)/2,p.rotate(90*r*Math.PI/180),p.drawImage(n,m,-v-g/e.scale,f/e.scale,g/e.scale)):(v+=(f-g)/2,m+=(g-f)/2,p.rotate(90*r*Math.PI/180),p.drawImage(n,m,-v-g,f,g));break;case 2:case-2:e.full?(h(d/e.scale,l/e.scale),p.rotate(90*r*Math.PI/180),v/=e.scale,m/=e.scale,p.drawImage(n,-v-f/e.scale,-m-g/e.scale,f/e.scale,g/e.scale)):(p.rotate(90*r*Math.PI/180),p.drawImage(n,-v-f,-m-g,f,g));break;case 3:case-1:e.full?(h(d/e.scale,l/e.scale),v=v/e.scale+(f/e.scale-g/e.scale)/2,m=m/e.scale+(g/e.scale-f/e.scale)/2,p.rotate(90*r*Math.PI/180),p.drawImage(n,-m-f/e.scale,v,f/e.scale,g/e.scale)):(v+=(f-g)/2,m+=(g-f)/2,p.rotate(90*r*Math.PI/180),p.drawImage(n,-m-f,v,f,g));break;default:e.full?(h(d/e.scale,l/e.scale),p.drawImage(n,v/e.scale,m/e.scale,f/e.scale,g/e.scale)):p.drawImage(n,v,m,f,g)}p.restore()}else{var w=i*e.scale,x=s*e.scale,C=o.getContext(\"2d\");switch(C.save(),r){case 0:h(w,x),C.drawImage(n,0,0,w,x);break;case 1:case-3:h(x,w),C.rotate(90*r*Math.PI/180),C.drawImage(n,0,-x,w,x);break;case 2:case-2:h(w,x),C.rotate(90*r*Math.PI/180),C.drawImage(n,-w,-x,w,x);break;case 3:case-1:h(x,w),C.rotate(90*r*Math.PI/180),C.drawImage(n,-w,0,w,x);break;default:h(w,x),C.drawImage(n,0,0,w,x)}C.restore()}t(o)},\"data\"!==this.img.substr(0,4)&&(n.crossOrigin=\"Anonymous\"),n.src=this.imgs},getCropData:function(t){var e=this;this.getCropChecked(function(o){t(o.toDataURL(\"image/\"+e.outputType,e.outputSize))})},getCropBlob:function(t){var e=this;this.getCropChecked(function(o){o.toBlob(function(e){return t(e)},\"image/\"+e.outputType,e.outputSize)})},showPreview:function(){var t=this;if(!this.isCanShow)return!1;this.isCanShow=!1,setTimeout(function(){t.isCanShow=!0},16);var e=this.cropW,o=this.cropH,n=this.scale,r={};r.div={width:\"\".concat(e,\"px\"),height:\"\".concat(o,\"px\")};var i=(this.x-this.cropOffsertX)/n,s=(this.y-this.cropOffsertY)/n;r.w=e,r.h=o,r.url=this.imgs,r.img={width:\"\".concat(this.trueWidth,\"px\"),height:\"\".concat(this.trueHeight,\"px\"),transform:\"scale(\".concat(n,\")translate3d(\").concat(i,\"px, \").concat(s,\"px, \").concat(0,\"px)rotateZ(\").concat(90*this.rotate,\"deg)\")},r.html='\\n

'),this.$emit(\"realTime\",r),this.$emit(\"real-time\",r)},reload:function(){var t=this,e=new Image;e.onload=function(){t.w=parseFloat(window.getComputedStyle(t.$refs.cropper).width),t.h=parseFloat(window.getComputedStyle(t.$refs.cropper).height),t.trueWidth=e.width,t.trueHeight=e.height,t.original?t.scale=1:t.scale=t.checkedMode(),t.$nextTick(function(){t.x=-(t.trueWidth-t.trueWidth*t.scale)/2+(t.w-t.trueWidth*t.scale)/2,t.y=-(t.trueHeight-t.trueHeight*t.scale)/2+(t.h-t.trueHeight*t.scale)/2,t.loading=!1,t.autoCrop&&t.goAutoCrop(),t.$emit(\"img-load\",\"success\"),t.$emit(\"imgLoad\",\"success\"),setTimeout(function(){t.showPreview()},20)})},e.onerror=function(){t.$emit(\"imgLoad\",\"error\"),t.$emit(\"img-load\",\"error\")},e.src=this.imgs},checkedMode:function(){var t=1,e=(this.trueWidth,this.trueHeight),o=this.mode.split(\" \");switch(o[0]){case\"contain\":this.trueWidth>this.w&&(t=this.w/this.trueWidth),this.trueHeight*t>this.h&&(t=this.h/this.trueHeight);break;case\"cover\":(e*=t=this.w/this.trueWidth)o?o:s,a=a>n?n:a,this.fixed&&(a=s/this.fixedNumber[0]*this.fixedNumber[1]),a>this.h&&(s=(a=this.h)/this.fixedNumber[1]*this.fixedNumber[0]),this.changeCrop(s,a)}},changeCrop:function(t,e){var o=this;if(this.centerBox){var n=this.getImgAxis();t>n.x2-n.x1&&(e=(t=n.x2-n.x1)/this.fixedNumber[0]*this.fixedNumber[1]),e>n.y2-n.y1&&(t=(e=n.y2-n.y1)/this.fixedNumber[1]*this.fixedNumber[0])}this.cropW=t,this.cropH=e,this.checkCropLimitSize(),this.$nextTick(function(){o.cropOffsertX=(o.w-o.cropW)/2,o.cropOffsertY=(o.h-o.cropH)/2,o.centerBox&&o.moveCrop(null,!0)})},refresh:function(){var t=this;this.img;this.imgs=\"\",this.scale=1,this.crop=!1,this.rotate=0,this.w=0,this.h=0,this.trueWidth=0,this.trueHeight=0,this.clearCrop(),this.$nextTick(function(){t.checkedImg()})},rotateLeft:function(){this.rotate=this.rotate<=-3?0:this.rotate-1},rotateRight:function(){this.rotate=this.rotate>=3?0:this.rotate+1},rotateClear:function(){this.rotate=0},checkoutImgAxis:function(t,e,o){t=t||this.x,e=e||this.y,o=o||this.scale;var n=!0;if(this.centerBox){var r=this.getImgAxis(t,e,o),i=this.getCropAxis();r.x1>=i.x1&&(n=!1),r.x2<=i.x2&&(n=!1),r.y1>=i.y1&&(n=!1),r.y2<=i.y2&&(n=!1)}return n}},mounted:function(){this.support=\"onwheel\"in document.createElement(\"div\")?\"wheel\":void 0!==document.onmousewheel?\"mousewheel\":\"DOMMouseScroll\";var t=this,e=navigator.userAgent;this.isIOS=!!e.match(/\\(i[^;]+;( U;)? CPU.+Mac OS X/),HTMLCanvasElement.prototype.toBlob||Object.defineProperty(HTMLCanvasElement.prototype,\"toBlob\",{value:function(e,o,n){for(var r=atob(this.toDataURL(o,n).split(\",\")[1]),i=r.length,s=new Uint8Array(i),a=0;a tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./userAvatar.vue?vue&type=style&index=0&id=e81d90b0&scoped=true&lang=scss& */ \"./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/userAvatar.vue?vue&type=style&index=0&id=e81d90b0&scoped=true&lang=scss&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../../../../node_modules/vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ba16fb20\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(false) {}\n\n//# sourceURL=webpack:///./src/views/system/user/profile/userAvatar.vue?./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./src/api/system/socialUser.js": -/*!**************************************!*\ - !*** ./src/api/system/socialUser.js ***! - \**************************************/ +/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/RightPanel.vue?vue&type=script&lang=js&": +/*!**************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/RightPanel.vue?vue&type=script&lang=js& ***! + \**************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.socialBind = socialBind;\nexports.socialUnbind = socialUnbind;\n\nvar _request = _interopRequireDefault(__webpack_require__(/*! @/utils/request */ \"./src/utils/request.js\"));\n\n// 社交绑定,使用 code 授权码\nfunction socialBind(type, code, state) {\n return (0, _request.default)({\n url: '/system/social-user/bind',\n method: 'post',\n data: {\n type: type,\n code: code,\n state: state\n }\n });\n} // 取消社交绑定\n\n\nfunction socialUnbind(type, openid) {\n return (0, _request.default)({\n url: '/system/social-user/unbind',\n method: 'delete',\n data: {\n type: type,\n openid: openid\n }\n });\n}\n\n//# sourceURL=webpack:///./src/api/system/socialUser.js?"); +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n__webpack_require__(/*! core-js/modules/es.array.concat.js */ \"./node_modules/core-js/modules/es.array.concat.js\");\n__webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n__webpack_require__(/*! core-js/modules/es.array.find-index.js */ \"./node_modules/core-js/modules/es.array.find-index.js\");\n__webpack_require__(/*! core-js/modules/es.array.splice.js */ \"./node_modules/core-js/modules/es.array.splice.js\");\n__webpack_require__(/*! core-js/modules/es.array.join.js */ \"./node_modules/core-js/modules/es.array.join.js\");\n__webpack_require__(/*! core-js/modules/es.array.map.js */ \"./node_modules/core-js/modules/es.array.map.js\");\n__webpack_require__(/*! core-js/modules/es.array.find.js */ \"./node_modules/core-js/modules/es.array.find.js\");\n__webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");\n__webpack_require__(/*! core-js/modules/es.array.includes.js */ \"./node_modules/core-js/modules/es.array.includes.js\");\nvar _util = __webpack_require__(/*! util */ \"./node_modules/util/util.js\");\nvar _TreeNodeDialog = _interopRequireDefault(__webpack_require__(/*! ./TreeNodeDialog */ \"./src/views/infra/build/TreeNodeDialog.vue\"));\nvar _utils = __webpack_require__(/*! @/utils */ \"./src/utils/index.js\");\nvar _IconsDialog = _interopRequireDefault(__webpack_require__(/*! ./IconsDialog */ \"./src/views/infra/build/IconsDialog.vue\"));\nvar _config = __webpack_require__(/*! @/components/generator/config */ \"./src/components/generator/config.js\");\nvar _db = __webpack_require__(/*! @/utils/db */ \"./src/utils/db.js\");\nvar dateTimeFormat = {\n date: 'yyyy-MM-dd',\n week: 'yyyy 第 WW 周',\n month: 'yyyy-MM',\n year: 'yyyy',\n datetime: 'yyyy-MM-dd HH:mm:ss',\n daterange: 'yyyy-MM-dd',\n monthrange: 'yyyy-MM',\n datetimerange: 'yyyy-MM-dd HH:mm:ss'\n};\n\n// 使changeRenderKey在目标组件改变时可用\nvar needRerenderList = ['tinymce'];\nvar _default = {\n components: {\n TreeNodeDialog: _TreeNodeDialog.default,\n IconsDialog: _IconsDialog.default\n },\n props: ['showField', 'activeData', 'formConf'],\n data: function data() {\n return {\n currentTab: 'field',\n currentNode: null,\n dialogVisible: false,\n iconsVisible: false,\n currentIconModel: null,\n dateTypeOptions: [{\n label: '日(date)',\n value: 'date'\n }, {\n label: '周(week)',\n value: 'week'\n }, {\n label: '月(month)',\n value: 'month'\n }, {\n label: '年(year)',\n value: 'year'\n }, {\n label: '日期时间(datetime)',\n value: 'datetime'\n }],\n dateRangeTypeOptions: [{\n label: '日期范围(daterange)',\n value: 'daterange'\n }, {\n label: '月范围(monthrange)',\n value: 'monthrange'\n }, {\n label: '日期时间范围(datetimerange)',\n value: 'datetimerange'\n }],\n colorFormatOptions: [{\n label: 'hex',\n value: 'hex'\n }, {\n label: 'rgb',\n value: 'rgb'\n }, {\n label: 'rgba',\n value: 'rgba'\n }, {\n label: 'hsv',\n value: 'hsv'\n }, {\n label: 'hsl',\n value: 'hsl'\n }],\n justifyOptions: [{\n label: 'start',\n value: 'start'\n }, {\n label: 'end',\n value: 'end'\n }, {\n label: 'center',\n value: 'center'\n }, {\n label: 'space-around',\n value: 'space-around'\n }, {\n label: 'space-between',\n value: 'space-between'\n }],\n layoutTreeProps: {\n label: function label(data, node) {\n var config = data.__config__;\n return data.componentName || \"\".concat(config.label, \": \").concat(data.__vModel__);\n }\n }\n };\n },\n computed: {\n documentLink: function documentLink() {\n return this.activeData.__config__.document || 'https://element.eleme.cn/#/zh-CN/component/installation';\n },\n dateOptions: function dateOptions() {\n if (this.activeData.type !== undefined && this.activeData.__config__.tag === 'el-date-picker') {\n if (this.activeData['start-placeholder'] === undefined) {\n return this.dateTypeOptions;\n }\n return this.dateRangeTypeOptions;\n }\n return [];\n },\n tagList: function tagList() {\n return [{\n label: '输入型组件',\n options: _config.inputComponents\n }, {\n label: '选择型组件',\n options: _config.selectComponents\n }];\n },\n activeTag: function activeTag() {\n return this.activeData.__config__.tag;\n },\n isShowMin: function isShowMin() {\n return ['el-input-number', 'el-slider'].indexOf(this.activeTag) > -1;\n },\n isShowMax: function isShowMax() {\n return ['el-input-number', 'el-slider', 'el-rate'].indexOf(this.activeTag) > -1;\n },\n isShowStep: function isShowStep() {\n return ['el-input-number', 'el-slider'].indexOf(this.activeTag) > -1;\n }\n },\n watch: {\n formConf: {\n handler: function handler(val) {\n (0, _db.saveFormConf)(val);\n },\n deep: true\n }\n },\n methods: {\n addReg: function addReg() {\n this.activeData.__config__.regList.push({\n pattern: '',\n message: ''\n });\n },\n addSelectItem: function addSelectItem() {\n this.activeData.__slot__.options.push({\n label: '',\n value: ''\n });\n },\n addTreeItem: function addTreeItem() {\n ++this.idGlobal;\n this.dialogVisible = true;\n this.currentNode = this.activeData.options;\n },\n renderContent: function renderContent(h, _ref) {\n var _this = this;\n var node = _ref.node,\n data = _ref.data,\n store = _ref.store;\n return h(\"div\", {\n \"class\": \"custom-tree-node\"\n }, [h(\"span\", [node.label]), h(\"span\", {\n \"class\": \"node-operation\"\n }, [h(\"i\", {\n \"on\": {\n \"click\": function click() {\n return _this.append(data);\n }\n },\n \"class\": \"el-icon-plus\",\n \"attrs\": {\n \"title\": \"添加\"\n }\n }), h(\"i\", {\n \"on\": {\n \"click\": function click() {\n return _this.remove(node, data);\n }\n },\n \"class\": \"el-icon-delete\",\n \"attrs\": {\n \"title\": \"删除\"\n }\n })])]);\n },\n append: function append(data) {\n if (!data.children) {\n this.$set(data, 'children', []);\n }\n this.dialogVisible = true;\n this.currentNode = data.children;\n },\n remove: function remove(node, data) {\n this.activeData.__config__.defaultValue = []; // 避免删除时报错\n var parent = node.parent;\n var children = parent.data.children || parent.data;\n var index = children.findIndex(function (d) {\n return d.id === data.id;\n });\n children.splice(index, 1);\n },\n addNode: function addNode(data) {\n this.currentNode.push(data);\n },\n setOptionValue: function setOptionValue(item, val) {\n item.value = (0, _utils.isNumberStr)(val) ? +val : val;\n },\n setDefaultValue: function setDefaultValue(val) {\n if (Array.isArray(val)) {\n return val.join(',');\n }\n // if (['string', 'number'].indexOf(typeof val) > -1) {\n // return val\n // }\n if (typeof val === 'boolean') {\n return \"\".concat(val);\n }\n return val;\n },\n onDefaultValueInput: function onDefaultValueInput(str) {\n if ((0, _util.isArray)(this.activeData.__config__.defaultValue)) {\n // 数组\n this.$set(this.activeData.__config__, 'defaultValue', str.split(',').map(function (val) {\n return (0, _utils.isNumberStr)(val) ? +val : val;\n }));\n } else if (['true', 'false'].indexOf(str) > -1) {\n // 布尔\n this.$set(this.activeData.__config__, 'defaultValue', JSON.parse(str));\n } else {\n // 字符串和数字\n this.$set(this.activeData.__config__, 'defaultValue', (0, _utils.isNumberStr)(str) ? +str : str);\n }\n },\n onSwitchValueInput: function onSwitchValueInput(val, name) {\n if (['true', 'false'].indexOf(val) > -1) {\n this.$set(this.activeData, name, JSON.parse(val));\n } else {\n this.$set(this.activeData, name, (0, _utils.isNumberStr)(val) ? +val : val);\n }\n },\n setTimeValue: function setTimeValue(val, type) {\n var valueFormat = type === 'week' ? dateTimeFormat.date : val;\n this.$set(this.activeData.__config__, 'defaultValue', null);\n this.$set(this.activeData, 'value-format', valueFormat);\n this.$set(this.activeData, 'format', val);\n },\n spanChange: function spanChange(val) {\n this.formConf.span = val;\n },\n multipleChange: function multipleChange(val) {\n this.$set(this.activeData.__config__, 'defaultValue', val ? [] : '');\n },\n dateTypeChange: function dateTypeChange(val) {\n this.setTimeValue(dateTimeFormat[val], val);\n },\n rangeChange: function rangeChange(val) {\n this.$set(this.activeData.__config__, 'defaultValue', val ? [this.activeData.min, this.activeData.max] : this.activeData.min);\n },\n rateTextChange: function rateTextChange(val) {\n if (val) this.activeData['show-score'] = false;\n },\n rateScoreChange: function rateScoreChange(val) {\n if (val) this.activeData['show-text'] = false;\n },\n colorFormatChange: function colorFormatChange(val) {\n this.activeData.__config__.defaultValue = null;\n this.activeData['show-alpha'] = val.indexOf('a') > -1;\n this.activeData.__config__.renderKey = +new Date(); // 更新renderKey,重新渲染该组件\n },\n openIconsDialog: function openIconsDialog(model) {\n this.iconsVisible = true;\n this.currentIconModel = model;\n },\n setIcon: function setIcon(val) {\n this.activeData[this.currentIconModel] = val;\n },\n tagChange: function tagChange(tagIcon) {\n var target = _config.inputComponents.find(function (item) {\n return item.__config__.tagIcon === tagIcon;\n });\n if (!target) target = _config.selectComponents.find(function (item) {\n return item.__config__.tagIcon === tagIcon;\n });\n this.$emit('tag-change', target);\n },\n changeRenderKey: function changeRenderKey() {\n if (needRerenderList.includes(this.activeData.__config__.tag)) {\n this.activeData.__config__.renderKey = +new Date();\n }\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/infra/build/RightPanel.vue?./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./src/api/system/user.js": +/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/TreeNodeDialog.vue?vue&type=script&lang=js&": +/*!******************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/TreeNodeDialog.vue?vue&type=script&lang=js& ***! + \******************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _utils = __webpack_require__(/*! @/utils */ \"./src/utils/index.js\");\nvar _db = __webpack_require__(/*! @/utils/db */ \"./src/utils/db.js\");\nvar id = (0, _db.getTreeNodeId)();\nvar _default = {\n components: {},\n inheritAttrs: false,\n props: [],\n data: function data() {\n return {\n id: id,\n formData: {\n label: undefined,\n value: undefined\n },\n rules: {\n label: [{\n required: true,\n message: '请输入选项名',\n trigger: 'blur'\n }],\n value: [{\n required: true,\n message: '请输入选项值',\n trigger: 'blur'\n }]\n },\n dataType: 'string',\n dataTypeOptions: [{\n label: '字符串',\n value: 'string'\n }, {\n label: '数字',\n value: 'number'\n }]\n };\n },\n computed: {},\n watch: {\n // eslint-disable-next-line func-names\n 'formData.value': function formDataValue(val) {\n this.dataType = (0, _utils.isNumberStr)(val) ? 'number' : 'string';\n },\n id: function id(val) {\n (0, _db.saveTreeNodeId)(val);\n }\n },\n created: function created() {},\n mounted: function mounted() {},\n methods: {\n onOpen: function onOpen() {\n this.formData = {\n label: undefined,\n value: undefined\n };\n },\n onClose: function onClose() {},\n close: function close() {\n this.$emit('update:visible', false);\n },\n handelConfirm: function handelConfirm() {\n var _this = this;\n this.$refs.elForm.validate(function (valid) {\n if (!valid) return;\n if (_this.dataType === 'number') {\n _this.formData.value = parseFloat(_this.formData.value);\n }\n _this.formData.id = _this.id++;\n _this.$emit('commit', _this.formData);\n _this.close();\n });\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/infra/build/TreeNodeDialog.vue?./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/form/formEditor.vue?vue&type=template&id=3df0b122&": +/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"b76c6300-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/bpm/form/formEditor.vue?vue&type=template&id=3df0b122& ***! + \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.staticRenderFns = exports.render = void 0;\n__webpack_require__(/*! core-js/modules/es.function.name.js */ \"./node_modules/core-js/modules/es.function.name.js\");\n__webpack_require__(/*! core-js/modules/es.json.stringify.js */ \"./node_modules/core-js/modules/es.json.stringify.js\");\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", {\n staticClass: \"container\"\n }, [_c(\"div\", {\n staticClass: \"left-board\"\n }, [_vm._m(0), _c(\"el-scrollbar\", {\n staticClass: \"left-scrollbar\"\n }, [_c(\"div\", {\n staticClass: \"components-list\"\n }, [_vm._l(_vm.leftComponents, function (item, listIndex) {\n return _c(\"div\", {\n key: listIndex\n }, [_c(\"div\", {\n staticClass: \"components-title\"\n }, [_c(\"svg-icon\", {\n attrs: {\n \"icon-class\": \"component\"\n }\n }), _vm._v(\" \" + _vm._s(item.title) + \" \")], 1), _c(\"draggable\", {\n staticClass: \"components-draggable\",\n attrs: {\n list: item.list,\n group: {\n name: \"componentsGroup\",\n pull: \"clone\",\n put: false\n },\n clone: _vm.cloneComponent,\n draggable: \".components-item\",\n sort: false\n },\n on: {\n end: _vm.onEnd\n }\n }, _vm._l(item.list, function (element, index) {\n return _c(\"div\", {\n key: index,\n staticClass: \"components-item\",\n on: {\n click: function click($event) {\n return _vm.addComponent(element);\n }\n }\n }, [_c(\"div\", {\n staticClass: \"components-body\"\n }, [_c(\"svg-icon\", {\n attrs: {\n \"icon-class\": element.__config__.tagIcon\n }\n }), _vm._v(\" \" + _vm._s(element.__config__.label) + \" \")], 1)]);\n }), 0)], 1);\n }), _c(\"el-form\", {\n ref: \"form\",\n attrs: {\n model: _vm.form,\n rules: _vm.rules,\n \"label-width\": \"80px\"\n }\n }, [_c(\"el-form-item\", {\n attrs: {\n label: \"表单名\",\n prop: \"name\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入表单名\"\n },\n model: {\n value: _vm.form.name,\n callback: function callback($$v) {\n _vm.$set(_vm.form, \"name\", $$v);\n },\n expression: \"form.name\"\n }\n })], 1), _c(\"el-form-item\", {\n attrs: {\n label: \"开启状态\",\n prop: \"status\"\n }\n }, [_c(\"el-radio-group\", {\n model: {\n value: _vm.form.status,\n callback: function callback($$v) {\n _vm.$set(_vm.form, \"status\", $$v);\n },\n expression: \"form.status\"\n }\n }, _vm._l(this.getDictDatas(_vm.DICT_TYPE.COMMON_STATUS), function (dict) {\n return _c(\"el-radio\", {\n key: dict.value,\n attrs: {\n label: parseInt(dict.value)\n }\n }, [_vm._v(_vm._s(dict.label))]);\n }), 1)], 1), _c(\"el-form-item\", {\n attrs: {\n label: \"备注\",\n prop: \"remark\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n type: \"textarea\",\n placeholder: \"请输入备注\"\n },\n model: {\n value: _vm.form.remark,\n callback: function callback($$v) {\n _vm.$set(_vm.form, \"remark\", $$v);\n },\n expression: \"form.remark\"\n }\n })], 1)], 1)], 2)])], 1), _c(\"div\", {\n staticClass: \"center-board\"\n }, [_c(\"div\", {\n staticClass: \"action-bar\"\n }, [_c(\"el-button\", {\n attrs: {\n icon: \"el-icon-check\",\n type: \"text\"\n },\n on: {\n click: _vm.save\n }\n }, [_vm._v(\"保存\")]), _c(\"el-button\", {\n attrs: {\n icon: \"el-icon-view\",\n type: \"text\"\n },\n on: {\n click: _vm.showJson\n }\n }, [_vm._v(\" 查看json \")]), _c(\"el-button\", {\n staticClass: \"delete-btn\",\n attrs: {\n icon: \"el-icon-delete\",\n type: \"text\"\n },\n on: {\n click: _vm.empty\n }\n }, [_vm._v(\" 清空 \")])], 1), _c(\"el-scrollbar\", {\n staticClass: \"center-scrollbar\"\n }, [_c(\"el-row\", {\n staticClass: \"center-board-row\",\n attrs: {\n gutter: _vm.formConf.gutter\n }\n }, [_c(\"el-form\", {\n attrs: {\n size: _vm.formConf.size,\n \"label-position\": _vm.formConf.labelPosition,\n disabled: _vm.formConf.disabled,\n \"label-width\": _vm.formConf.labelWidth + \"px\"\n }\n }, [_c(\"draggable\", {\n staticClass: \"drawing-board\",\n attrs: {\n list: _vm.drawingList,\n animation: 340,\n group: \"componentsGroup\"\n }\n }, _vm._l(_vm.drawingList, function (item, index) {\n return _c(\"draggable-item\", {\n key: item.renderKey,\n attrs: {\n \"drawing-list\": _vm.drawingList,\n \"current-item\": item,\n index: index,\n \"active-id\": _vm.activeId,\n \"form-conf\": _vm.formConf\n },\n on: {\n activeItem: _vm.activeFormItem,\n copyItem: _vm.drawingItemCopy,\n deleteItem: _vm.drawingItemDelete\n }\n });\n }), 1), _c(\"div\", {\n directives: [{\n name: \"show\",\n rawName: \"v-show\",\n value: !_vm.drawingList.length,\n expression: \"!drawingList.length\"\n }],\n staticClass: \"empty-info\"\n }, [_vm._v(\" 从左侧拖入或点选组件进行表单设计 \")])], 1)], 1)], 1)], 1), _c(\"right-panel\", {\n attrs: {\n \"active-data\": _vm.activeData,\n \"form-conf\": _vm.formConf,\n \"show-field\": !!_vm.drawingList.length\n },\n on: {\n \"tag-change\": _vm.tagChange,\n \"fetch-data\": _vm.fetchData\n }\n }), _c(\"json-drawer\", {\n attrs: {\n size: \"60%\",\n visible: _vm.jsonDrawerVisible,\n \"json-str\": JSON.stringify(_vm.formData)\n },\n on: {\n \"update:visible\": function updateVisible($event) {\n _vm.jsonDrawerVisible = $event;\n },\n refresh: _vm.refreshJson\n }\n })], 1);\n};\nexports.render = render;\nvar staticRenderFns = [function () {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", {\n staticClass: \"logo-wrapper\"\n }, [_c(\"div\", {\n staticClass: \"logo\"\n }, [_vm._v(\"流程表单\")])]);\n}];\nexports.staticRenderFns = staticRenderFns;\nrender._withStripped = true;\n\n//# sourceURL=webpack:///./src/views/bpm/form/formEditor.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22b76c6300-vue-loader-template%22%7D!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/CodeTypeDialog.vue?vue&type=template&id=ac1f446e&scoped=true&": +/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"b76c6300-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/CodeTypeDialog.vue?vue&type=template&id=ac1f446e&scoped=true& ***! + \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.staticRenderFns = exports.render = void 0;\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", [_c(\"el-dialog\", _vm._g(_vm._b({\n attrs: {\n width: \"500px\",\n \"close-on-click-modal\": false,\n \"modal-append-to-body\": false\n },\n on: {\n open: _vm.onOpen,\n close: _vm.onClose\n }\n }, \"el-dialog\", _vm.$attrs, false), _vm.$listeners), [_c(\"el-row\", {\n attrs: {\n gutter: 15\n }\n }, [_c(\"el-form\", {\n ref: \"elForm\",\n attrs: {\n model: _vm.formData,\n rules: _vm.rules,\n size: \"medium\",\n \"label-width\": \"100px\"\n }\n }, [_c(\"el-col\", {\n attrs: {\n span: 24\n }\n }, [_c(\"el-form-item\", {\n attrs: {\n label: \"生成类型\",\n prop: \"type\"\n }\n }, [_c(\"el-radio-group\", {\n model: {\n value: _vm.formData.type,\n callback: function callback($$v) {\n _vm.$set(_vm.formData, \"type\", $$v);\n },\n expression: \"formData.type\"\n }\n }, _vm._l(_vm.typeOptions, function (item, index) {\n return _c(\"el-radio-button\", {\n key: index,\n attrs: {\n label: item.value,\n disabled: item.disabled\n }\n }, [_vm._v(\" \" + _vm._s(item.label) + \" \")]);\n }), 1)], 1), _vm.showFileName ? _c(\"el-form-item\", {\n attrs: {\n label: \"文件名\",\n prop: \"fileName\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入文件名\",\n clearable: \"\"\n },\n model: {\n value: _vm.formData.fileName,\n callback: function callback($$v) {\n _vm.$set(_vm.formData, \"fileName\", $$v);\n },\n expression: \"formData.fileName\"\n }\n })], 1) : _vm._e()], 1)], 1)], 1), _c(\"div\", {\n attrs: {\n slot: \"footer\"\n },\n slot: \"footer\"\n }, [_c(\"el-button\", {\n on: {\n click: _vm.close\n }\n }, [_vm._v(\" 取消 \")]), _c(\"el-button\", {\n attrs: {\n type: \"primary\"\n },\n on: {\n click: _vm.handelConfirm\n }\n }, [_vm._v(\" 确定 \")])], 1)], 1)], 1);\n};\nexports.render = render;\nvar staticRenderFns = [];\nexports.staticRenderFns = staticRenderFns;\nrender._withStripped = true;\n\n//# sourceURL=webpack:///./src/views/infra/build/CodeTypeDialog.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22b76c6300-vue-loader-template%22%7D!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/FormDrawer.vue?vue&type=template&id=753f0faf&scoped=true&": +/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"b76c6300-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/FormDrawer.vue?vue&type=template&id=753f0faf&scoped=true& ***! + \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.staticRenderFns = exports.render = void 0;\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", [_c(\"el-drawer\", _vm._g(_vm._b({\n on: {\n opened: _vm.onOpen,\n close: _vm.onClose\n }\n }, \"el-drawer\", _vm.$attrs, false), _vm.$listeners), [_c(\"div\", {\n staticStyle: {\n height: \"100%\"\n }\n }, [_c(\"el-row\", {\n staticStyle: {\n height: \"100%\",\n overflow: \"auto\"\n }\n }, [_c(\"el-col\", {\n staticClass: \"left-editor\",\n attrs: {\n md: 24,\n lg: 12\n }\n }, [_c(\"div\", {\n staticClass: \"setting\",\n attrs: {\n title: \"资源引用\"\n },\n on: {\n click: _vm.showResource\n }\n }, [_c(\"el-badge\", {\n staticClass: \"item\",\n attrs: {\n \"is-dot\": !!_vm.resources.length\n }\n }, [_c(\"i\", {\n staticClass: \"el-icon-setting\"\n })])], 1), _c(\"el-tabs\", {\n staticClass: \"editor-tabs\",\n attrs: {\n type: \"card\"\n },\n model: {\n value: _vm.activeTab,\n callback: function callback($$v) {\n _vm.activeTab = $$v;\n },\n expression: \"activeTab\"\n }\n }, [_c(\"el-tab-pane\", {\n attrs: {\n name: \"html\"\n }\n }, [_c(\"span\", {\n attrs: {\n slot: \"label\"\n },\n slot: \"label\"\n }, [_vm.activeTab === \"html\" ? _c(\"i\", {\n staticClass: \"el-icon-edit\"\n }) : _c(\"i\", {\n staticClass: \"el-icon-document\"\n }), _vm._v(\" template \")])]), _c(\"el-tab-pane\", {\n attrs: {\n name: \"js\"\n }\n }, [_c(\"span\", {\n attrs: {\n slot: \"label\"\n },\n slot: \"label\"\n }, [_vm.activeTab === \"js\" ? _c(\"i\", {\n staticClass: \"el-icon-edit\"\n }) : _c(\"i\", {\n staticClass: \"el-icon-document\"\n }), _vm._v(\" script \")])]), _c(\"el-tab-pane\", {\n attrs: {\n name: \"css\"\n }\n }, [_c(\"span\", {\n attrs: {\n slot: \"label\"\n },\n slot: \"label\"\n }, [_vm.activeTab === \"css\" ? _c(\"i\", {\n staticClass: \"el-icon-edit\"\n }) : _c(\"i\", {\n staticClass: \"el-icon-document\"\n }), _vm._v(\" css \")])])], 1), _c(\"div\", {\n directives: [{\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.activeTab === \"html\",\n expression: \"activeTab==='html'\"\n }],\n staticClass: \"tab-editor\",\n attrs: {\n id: \"editorHtml\"\n }\n }), _c(\"div\", {\n directives: [{\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.activeTab === \"js\",\n expression: \"activeTab==='js'\"\n }],\n staticClass: \"tab-editor\",\n attrs: {\n id: \"editorJs\"\n }\n }), _c(\"div\", {\n directives: [{\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.activeTab === \"css\",\n expression: \"activeTab==='css'\"\n }],\n staticClass: \"tab-editor\",\n attrs: {\n id: \"editorCss\"\n }\n })], 1), _c(\"el-col\", {\n staticClass: \"right-preview\",\n attrs: {\n md: 24,\n lg: 12\n }\n }, [_c(\"div\", {\n staticClass: \"action-bar\",\n style: {\n \"text-align\": \"left\"\n }\n }, [_c(\"span\", {\n staticClass: \"bar-btn\",\n on: {\n click: _vm.runCode\n }\n }, [_c(\"i\", {\n staticClass: \"el-icon-refresh\"\n }), _vm._v(\" 刷新 \")]), _c(\"span\", {\n staticClass: \"bar-btn\",\n on: {\n click: _vm.exportFile\n }\n }, [_c(\"i\", {\n staticClass: \"el-icon-download\"\n }), _vm._v(\" 导出vue文件 \")]), _c(\"span\", {\n ref: \"copyBtn\",\n staticClass: \"bar-btn copy-btn\"\n }, [_c(\"i\", {\n staticClass: \"el-icon-document-copy\"\n }), _vm._v(\" 复制代码 \")]), _c(\"span\", {\n staticClass: \"bar-btn delete-btn\",\n on: {\n click: function click($event) {\n return _vm.$emit(\"update:visible\", false);\n }\n }\n }, [_c(\"i\", {\n staticClass: \"el-icon-circle-close\"\n }), _vm._v(\" 关闭 \")])]), _c(\"iframe\", {\n directives: [{\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.isIframeLoaded,\n expression: \"isIframeLoaded\"\n }],\n ref: \"previewPage\",\n staticClass: \"result-wrapper\",\n attrs: {\n frameborder: \"0\",\n src: \"preview.html\"\n },\n on: {\n load: _vm.iframeLoad\n }\n }), _c(\"div\", {\n directives: [{\n name: \"show\",\n rawName: \"v-show\",\n value: !_vm.isIframeLoaded,\n expression: \"!isIframeLoaded\"\n }, {\n name: \"loading\",\n rawName: \"v-loading\",\n value: true,\n expression: \"true\"\n }],\n staticClass: \"result-wrapper\"\n })])], 1)], 1)]), _c(\"resource-dialog\", {\n attrs: {\n visible: _vm.resourceVisible,\n \"origin-resource\": _vm.resources\n },\n on: {\n \"update:visible\": function updateVisible($event) {\n _vm.resourceVisible = $event;\n },\n save: _vm.setResource\n }\n })], 1);\n};\nexports.render = render;\nvar staticRenderFns = [];\nexports.staticRenderFns = staticRenderFns;\nrender._withStripped = true;\n\n//# sourceURL=webpack:///./src/views/infra/build/FormDrawer.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22b76c6300-vue-loader-template%22%7D!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/IconsDialog.vue?vue&type=template&id=7bbbfa18&scoped=true&": +/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"b76c6300-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/IconsDialog.vue?vue&type=template&id=7bbbfa18&scoped=true& ***! + \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.staticRenderFns = exports.render = void 0;\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", {\n staticClass: \"icon-dialog\"\n }, [_c(\"el-dialog\", _vm._g(_vm._b({\n attrs: {\n width: \"980px\",\n \"modal-append-to-body\": false\n },\n on: {\n open: _vm.onOpen,\n close: _vm.onClose\n }\n }, \"el-dialog\", _vm.$attrs, false), _vm.$listeners), [_c(\"div\", {\n attrs: {\n slot: \"title\"\n },\n slot: \"title\"\n }, [_vm._v(\" 选择图标 \"), _c(\"el-input\", {\n style: {\n width: \"260px\"\n },\n attrs: {\n size: \"mini\",\n placeholder: \"请输入图标名称\",\n \"prefix-icon\": \"el-icon-search\",\n clearable: \"\"\n },\n model: {\n value: _vm.key,\n callback: function callback($$v) {\n _vm.key = $$v;\n },\n expression: \"key\"\n }\n })], 1), _c(\"ul\", {\n staticClass: \"icon-ul\"\n }, _vm._l(_vm.iconList, function (icon) {\n return _c(\"li\", {\n key: icon,\n class: _vm.active === icon ? \"active-item\" : \"\",\n on: {\n click: function click($event) {\n return _vm.onSelect(icon);\n }\n }\n }, [_c(\"i\", {\n class: icon\n }), _c(\"div\", [_vm._v(_vm._s(icon))])]);\n }), 0)])], 1);\n};\nexports.render = render;\nvar staticRenderFns = [];\nexports.staticRenderFns = staticRenderFns;\nrender._withStripped = true;\n\n//# sourceURL=webpack:///./src/views/infra/build/IconsDialog.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22b76c6300-vue-loader-template%22%7D!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/JsonDrawer.vue?vue&type=template&id=349212d3&scoped=true&": +/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"b76c6300-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/JsonDrawer.vue?vue&type=template&id=349212d3&scoped=true& ***! + \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.staticRenderFns = exports.render = void 0;\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", [_c(\"el-drawer\", _vm._g(_vm._b({\n on: {\n opened: _vm.onOpen,\n close: _vm.onClose\n }\n }, \"el-drawer\", _vm.$attrs, false), _vm.$listeners), [_c(\"div\", {\n staticClass: \"action-bar\",\n style: {\n \"text-align\": \"left\"\n }\n }, [_c(\"span\", {\n staticClass: \"bar-btn\",\n on: {\n click: _vm.refresh\n }\n }, [_c(\"i\", {\n staticClass: \"el-icon-refresh\"\n }), _vm._v(\" 刷新 \")]), _c(\"span\", {\n ref: \"copyBtn\",\n staticClass: \"bar-btn copy-json-btn\"\n }, [_c(\"i\", {\n staticClass: \"el-icon-document-copy\"\n }), _vm._v(\" 复制JSON \")]), _c(\"span\", {\n staticClass: \"bar-btn\",\n on: {\n click: _vm.exportJsonFile\n }\n }, [_c(\"i\", {\n staticClass: \"el-icon-download\"\n }), _vm._v(\" 导出JSON文件 \")]), _c(\"span\", {\n staticClass: \"bar-btn delete-btn\",\n on: {\n click: function click($event) {\n return _vm.$emit(\"update:visible\", false);\n }\n }\n }, [_c(\"i\", {\n staticClass: \"el-icon-circle-close\"\n }), _vm._v(\" 关闭 \")])]), _c(\"div\", {\n staticClass: \"json-editor\",\n attrs: {\n id: \"editorJson\"\n }\n })])], 1);\n};\nexports.render = render;\nvar staticRenderFns = [];\nexports.staticRenderFns = staticRenderFns;\nrender._withStripped = true;\n\n//# sourceURL=webpack:///./src/views/infra/build/JsonDrawer.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22b76c6300-vue-loader-template%22%7D!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/ResourceDialog.vue?vue&type=template&id=1416fb60&scoped=true&": +/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"b76c6300-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/ResourceDialog.vue?vue&type=template&id=1416fb60&scoped=true& ***! + \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.staticRenderFns = exports.render = void 0;\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", [_c(\"el-dialog\", _vm._g(_vm._b({\n attrs: {\n title: \"外部资源引用\",\n width: \"600px\",\n \"close-on-click-modal\": false\n },\n on: {\n open: _vm.onOpen,\n close: _vm.onClose\n }\n }, \"el-dialog\", _vm.$attrs, false), _vm.$listeners), [_vm._l(_vm.resources, function (item, index) {\n return _c(\"el-input\", {\n key: index,\n staticClass: \"url-item\",\n attrs: {\n placeholder: \"请输入 css 或 js 资源路径\",\n \"prefix-icon\": \"el-icon-link\",\n clearable: \"\"\n },\n model: {\n value: _vm.resources[index],\n callback: function callback($$v) {\n _vm.$set(_vm.resources, index, $$v);\n },\n expression: \"resources[index]\"\n }\n }, [_c(\"el-button\", {\n attrs: {\n slot: \"append\",\n icon: \"el-icon-delete\"\n },\n on: {\n click: function click($event) {\n return _vm.deleteOne(index);\n }\n },\n slot: \"append\"\n })], 1);\n }), _c(\"el-button-group\", {\n staticClass: \"add-item\"\n }, [_c(\"el-button\", {\n attrs: {\n plain: \"\"\n },\n on: {\n click: function click($event) {\n return _vm.addOne(\"https://lib.baomitu.com/jquery/1.8.3/jquery.min.js\");\n }\n }\n }, [_vm._v(\" jQuery1.8.3 \")]), _c(\"el-button\", {\n attrs: {\n plain: \"\"\n },\n on: {\n click: function click($event) {\n return _vm.addOne(\"https://unpkg.com/http-vue-loader\");\n }\n }\n }, [_vm._v(\" http-vue-loader \")]), _c(\"el-button\", {\n attrs: {\n icon: \"el-icon-circle-plus-outline\",\n plain: \"\"\n },\n on: {\n click: function click($event) {\n return _vm.addOne(\"\");\n }\n }\n }, [_vm._v(\" 添加其他 \")])], 1), _c(\"div\", {\n attrs: {\n slot: \"footer\"\n },\n slot: \"footer\"\n }, [_c(\"el-button\", {\n on: {\n click: _vm.close\n }\n }, [_vm._v(\" 取消 \")]), _c(\"el-button\", {\n attrs: {\n type: \"primary\"\n },\n on: {\n click: _vm.handelConfirm\n }\n }, [_vm._v(\" 确定 \")])], 1)], 2)], 1);\n};\nexports.render = render;\nvar staticRenderFns = [];\nexports.staticRenderFns = staticRenderFns;\nrender._withStripped = true;\n\n//# sourceURL=webpack:///./src/views/infra/build/ResourceDialog.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22b76c6300-vue-loader-template%22%7D!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/RightPanel.vue?vue&type=template&id=77ba98a2&scoped=true&": +/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"b76c6300-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/RightPanel.vue?vue&type=template&id=77ba98a2&scoped=true& ***! + \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.staticRenderFns = exports.render = void 0;\n__webpack_require__(/*! core-js/modules/es.function.name.js */ \"./node_modules/core-js/modules/es.function.name.js\");\n__webpack_require__(/*! core-js/modules/es.array.splice.js */ \"./node_modules/core-js/modules/es.array.splice.js\");\n__webpack_require__(/*! core-js/modules/es.array.includes.js */ \"./node_modules/core-js/modules/es.array.includes.js\");\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", {\n staticClass: \"right-board\"\n }, [_c(\"el-tabs\", {\n staticClass: \"center-tabs\",\n model: {\n value: _vm.currentTab,\n callback: function callback($$v) {\n _vm.currentTab = $$v;\n },\n expression: \"currentTab\"\n }\n }, [_c(\"el-tab-pane\", {\n attrs: {\n label: \"组件属性\",\n name: \"field\"\n }\n }), _c(\"el-tab-pane\", {\n attrs: {\n label: \"表单属性\",\n name: \"form\"\n }\n })], 1), _c(\"div\", {\n staticClass: \"field-box\"\n }, [_c(\"a\", {\n staticClass: \"document-link\",\n attrs: {\n target: \"_blank\",\n href: _vm.documentLink,\n title: \"查看组件文档\"\n }\n }, [_c(\"i\", {\n staticClass: \"el-icon-link\"\n })]), _c(\"el-scrollbar\", {\n staticClass: \"right-scrollbar\"\n }, [_c(\"el-form\", {\n directives: [{\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.currentTab === \"field\" && _vm.showField,\n expression: \"currentTab==='field' && showField\"\n }],\n attrs: {\n size: \"small\",\n \"label-width\": \"90px\"\n }\n }, [_vm.activeData.__config__.changeTag ? _c(\"el-form-item\", {\n attrs: {\n label: \"组件类型\"\n }\n }, [_c(\"el-select\", {\n style: {\n width: \"100%\"\n },\n attrs: {\n placeholder: \"请选择组件类型\"\n },\n on: {\n change: _vm.tagChange\n },\n model: {\n value: _vm.activeData.__config__.tagIcon,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.__config__, \"tagIcon\", $$v);\n },\n expression: \"activeData.__config__.tagIcon\"\n }\n }, _vm._l(_vm.tagList, function (group) {\n return _c(\"el-option-group\", {\n key: group.label,\n attrs: {\n label: group.label\n }\n }, _vm._l(group.options, function (item) {\n return _c(\"el-option\", {\n key: item.__config__.label,\n attrs: {\n label: item.__config__.label,\n value: item.__config__.tagIcon\n }\n }, [_c(\"svg-icon\", {\n staticClass: \"node-icon\",\n attrs: {\n \"icon-class\": item.__config__.tagIcon\n }\n }), _c(\"span\", [_vm._v(\" \" + _vm._s(item.__config__.label))])], 1);\n }), 1);\n }), 1)], 1) : _vm._e(), _vm.activeData.__vModel__ !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"字段名\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入字段名(v-model)\"\n },\n model: {\n value: _vm.activeData.__vModel__,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"__vModel__\", $$v);\n },\n expression: \"activeData.__vModel__\"\n }\n })], 1) : _vm._e(), _vm.activeData.__config__.componentName !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"组件名\"\n }\n }, [_vm._v(\" \" + _vm._s(_vm.activeData.__config__.componentName) + \" \")]) : _vm._e(), _vm.activeData.__config__.label !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"标题\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入标题\"\n },\n on: {\n input: _vm.changeRenderKey\n },\n model: {\n value: _vm.activeData.__config__.label,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.__config__, \"label\", $$v);\n },\n expression: \"activeData.__config__.label\"\n }\n })], 1) : _vm._e(), _vm.activeData.placeholder !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"占位提示\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入占位提示\"\n },\n on: {\n input: _vm.changeRenderKey\n },\n model: {\n value: _vm.activeData.placeholder,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"placeholder\", $$v);\n },\n expression: \"activeData.placeholder\"\n }\n })], 1) : _vm._e(), _vm.activeData[\"start-placeholder\"] !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"开始占位\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入占位提示\"\n },\n model: {\n value: _vm.activeData[\"start-placeholder\"],\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"start-placeholder\", $$v);\n },\n expression: \"activeData['start-placeholder']\"\n }\n })], 1) : _vm._e(), _vm.activeData[\"end-placeholder\"] !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"结束占位\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入占位提示\"\n },\n model: {\n value: _vm.activeData[\"end-placeholder\"],\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"end-placeholder\", $$v);\n },\n expression: \"activeData['end-placeholder']\"\n }\n })], 1) : _vm._e(), _vm.activeData.__config__.span !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"表单栅格\"\n }\n }, [_c(\"el-slider\", {\n attrs: {\n max: 24,\n min: 1,\n marks: {\n 12: \"\"\n }\n },\n on: {\n change: _vm.spanChange\n },\n model: {\n value: _vm.activeData.__config__.span,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.__config__, \"span\", $$v);\n },\n expression: \"activeData.__config__.span\"\n }\n })], 1) : _vm._e(), _vm.activeData.__config__.layout === \"rowFormItem\" && _vm.activeData.gutter !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"栅格间隔\"\n }\n }, [_c(\"el-input-number\", {\n attrs: {\n min: 0,\n placeholder: \"栅格间隔\"\n },\n model: {\n value: _vm.activeData.gutter,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"gutter\", $$v);\n },\n expression: \"activeData.gutter\"\n }\n })], 1) : _vm._e(), _vm.activeData.__config__.layout === \"rowFormItem\" && _vm.activeData.type !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"布局模式\"\n }\n }, [_c(\"el-radio-group\", {\n model: {\n value: _vm.activeData.type,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"type\", $$v);\n },\n expression: \"activeData.type\"\n }\n }, [_c(\"el-radio-button\", {\n attrs: {\n label: \"default\"\n }\n }), _c(\"el-radio-button\", {\n attrs: {\n label: \"flex\"\n }\n })], 1)], 1) : _vm._e(), _vm.activeData.justify !== undefined && _vm.activeData.type === \"flex\" ? _c(\"el-form-item\", {\n attrs: {\n label: \"水平排列\"\n }\n }, [_c(\"el-select\", {\n style: {\n width: \"100%\"\n },\n attrs: {\n placeholder: \"请选择水平排列\"\n },\n model: {\n value: _vm.activeData.justify,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"justify\", $$v);\n },\n expression: \"activeData.justify\"\n }\n }, _vm._l(_vm.justifyOptions, function (item, index) {\n return _c(\"el-option\", {\n key: index,\n attrs: {\n label: item.label,\n value: item.value\n }\n });\n }), 1)], 1) : _vm._e(), _vm.activeData.align !== undefined && _vm.activeData.type === \"flex\" ? _c(\"el-form-item\", {\n attrs: {\n label: \"垂直排列\"\n }\n }, [_c(\"el-radio-group\", {\n model: {\n value: _vm.activeData.align,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"align\", $$v);\n },\n expression: \"activeData.align\"\n }\n }, [_c(\"el-radio-button\", {\n attrs: {\n label: \"top\"\n }\n }), _c(\"el-radio-button\", {\n attrs: {\n label: \"middle\"\n }\n }), _c(\"el-radio-button\", {\n attrs: {\n label: \"bottom\"\n }\n })], 1)], 1) : _vm._e(), _vm.activeData.__config__.labelWidth !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"标签宽度\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n type: \"number\",\n placeholder: \"请输入标签宽度\"\n },\n model: {\n value: _vm.activeData.__config__.labelWidth,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.__config__, \"labelWidth\", _vm._n($$v));\n },\n expression: \"activeData.__config__.labelWidth\"\n }\n })], 1) : _vm._e(), _vm.activeData.style && _vm.activeData.style.width !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"组件宽度\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入组件宽度\",\n clearable: \"\"\n },\n model: {\n value: _vm.activeData.style.width,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.style, \"width\", $$v);\n },\n expression: \"activeData.style.width\"\n }\n })], 1) : _vm._e(), _vm.activeData.__vModel__ !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"默认值\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n value: _vm.setDefaultValue(_vm.activeData.__config__.defaultValue),\n placeholder: \"请输入默认值\"\n },\n on: {\n input: _vm.onDefaultValueInput\n }\n })], 1) : _vm._e(), _vm.activeData.__config__.tag === \"el-checkbox-group\" ? _c(\"el-form-item\", {\n attrs: {\n label: \"至少应选\"\n }\n }, [_c(\"el-input-number\", {\n attrs: {\n value: _vm.activeData.min,\n min: 0,\n placeholder: \"至少应选\"\n },\n on: {\n input: function input($event) {\n return _vm.$set(_vm.activeData, \"min\", $event ? $event : undefined);\n }\n }\n })], 1) : _vm._e(), _vm.activeData.__config__.tag === \"el-checkbox-group\" ? _c(\"el-form-item\", {\n attrs: {\n label: \"最多可选\"\n }\n }, [_c(\"el-input-number\", {\n attrs: {\n value: _vm.activeData.max,\n min: 0,\n placeholder: \"最多可选\"\n },\n on: {\n input: function input($event) {\n return _vm.$set(_vm.activeData, \"max\", $event ? $event : undefined);\n }\n }\n })], 1) : _vm._e(), _vm.activeData.__slot__ && _vm.activeData.__slot__.prepend !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"前缀\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入前缀\"\n },\n model: {\n value: _vm.activeData.__slot__.prepend,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.__slot__, \"prepend\", $$v);\n },\n expression: \"activeData.__slot__.prepend\"\n }\n })], 1) : _vm._e(), _vm.activeData.__slot__ && _vm.activeData.__slot__.append !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"后缀\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入后缀\"\n },\n model: {\n value: _vm.activeData.__slot__.append,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.__slot__, \"append\", $$v);\n },\n expression: \"activeData.__slot__.append\"\n }\n })], 1) : _vm._e(), _vm.activeData[\"prefix-icon\"] !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"前图标\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入前图标名称\"\n },\n model: {\n value: _vm.activeData[\"prefix-icon\"],\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"prefix-icon\", $$v);\n },\n expression: \"activeData['prefix-icon']\"\n }\n }, [_c(\"el-button\", {\n attrs: {\n slot: \"append\",\n icon: \"el-icon-thumb\"\n },\n on: {\n click: function click($event) {\n return _vm.openIconsDialog(\"prefix-icon\");\n }\n },\n slot: \"append\"\n }, [_vm._v(\" 选择 \")])], 1)], 1) : _vm._e(), _vm.activeData[\"suffix-icon\"] !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"后图标\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入后图标名称\"\n },\n model: {\n value: _vm.activeData[\"suffix-icon\"],\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"suffix-icon\", $$v);\n },\n expression: \"activeData['suffix-icon']\"\n }\n }, [_c(\"el-button\", {\n attrs: {\n slot: \"append\",\n icon: \"el-icon-thumb\"\n },\n on: {\n click: function click($event) {\n return _vm.openIconsDialog(\"suffix-icon\");\n }\n },\n slot: \"append\"\n }, [_vm._v(\" 选择 \")])], 1)], 1) : _vm._e(), _vm.activeData[\"icon\"] !== undefined && _vm.activeData.__config__.tag === \"el-button\" ? _c(\"el-form-item\", {\n attrs: {\n label: \"按钮图标\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入按钮图标名称\"\n },\n model: {\n value: _vm.activeData[\"icon\"],\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"icon\", $$v);\n },\n expression: \"activeData['icon']\"\n }\n }, [_c(\"el-button\", {\n attrs: {\n slot: \"append\",\n icon: \"el-icon-thumb\"\n },\n on: {\n click: function click($event) {\n return _vm.openIconsDialog(\"icon\");\n }\n },\n slot: \"append\"\n }, [_vm._v(\" 选择 \")])], 1)], 1) : _vm._e(), _vm.activeData.__config__.tag === \"el-cascader\" ? _c(\"el-form-item\", {\n attrs: {\n label: \"选项分隔符\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入选项分隔符\"\n },\n model: {\n value: _vm.activeData.separator,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"separator\", $$v);\n },\n expression: \"activeData.separator\"\n }\n })], 1) : _vm._e(), _vm.activeData.autosize !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"最小行数\"\n }\n }, [_c(\"el-input-number\", {\n attrs: {\n min: 1,\n placeholder: \"最小行数\"\n },\n model: {\n value: _vm.activeData.autosize.minRows,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.autosize, \"minRows\", $$v);\n },\n expression: \"activeData.autosize.minRows\"\n }\n })], 1) : _vm._e(), _vm.activeData.autosize !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"最大行数\"\n }\n }, [_c(\"el-input-number\", {\n attrs: {\n min: 1,\n placeholder: \"最大行数\"\n },\n model: {\n value: _vm.activeData.autosize.maxRows,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.autosize, \"maxRows\", $$v);\n },\n expression: \"activeData.autosize.maxRows\"\n }\n })], 1) : _vm._e(), _vm.isShowMin ? _c(\"el-form-item\", {\n attrs: {\n label: \"最小值\"\n }\n }, [_c(\"el-input-number\", {\n attrs: {\n placeholder: \"最小值\"\n },\n model: {\n value: _vm.activeData.min,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"min\", $$v);\n },\n expression: \"activeData.min\"\n }\n })], 1) : _vm._e(), _vm.isShowMax ? _c(\"el-form-item\", {\n attrs: {\n label: \"最大值\"\n }\n }, [_c(\"el-input-number\", {\n attrs: {\n placeholder: \"最大值\"\n },\n model: {\n value: _vm.activeData.max,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"max\", $$v);\n },\n expression: \"activeData.max\"\n }\n })], 1) : _vm._e(), _vm.activeData.height !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"组件高度\"\n }\n }, [_c(\"el-input-number\", {\n attrs: {\n placeholder: \"高度\"\n },\n on: {\n input: _vm.changeRenderKey\n },\n model: {\n value: _vm.activeData.height,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"height\", $$v);\n },\n expression: \"activeData.height\"\n }\n })], 1) : _vm._e(), _vm.isShowStep ? _c(\"el-form-item\", {\n attrs: {\n label: \"步长\"\n }\n }, [_c(\"el-input-number\", {\n attrs: {\n placeholder: \"步数\"\n },\n model: {\n value: _vm.activeData.step,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"step\", $$v);\n },\n expression: \"activeData.step\"\n }\n })], 1) : _vm._e(), _vm.activeData.__config__.tag === \"el-input-number\" ? _c(\"el-form-item\", {\n attrs: {\n label: \"精度\"\n }\n }, [_c(\"el-input-number\", {\n attrs: {\n min: 0,\n placeholder: \"精度\"\n },\n model: {\n value: _vm.activeData.precision,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"precision\", $$v);\n },\n expression: \"activeData.precision\"\n }\n })], 1) : _vm._e(), _vm.activeData.__config__.tag === \"el-input-number\" ? _c(\"el-form-item\", {\n attrs: {\n label: \"按钮位置\"\n }\n }, [_c(\"el-radio-group\", {\n model: {\n value: _vm.activeData[\"controls-position\"],\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"controls-position\", $$v);\n },\n expression: \"activeData['controls-position']\"\n }\n }, [_c(\"el-radio-button\", {\n attrs: {\n label: \"\"\n }\n }, [_vm._v(\" 默认 \")]), _c(\"el-radio-button\", {\n attrs: {\n label: \"right\"\n }\n }, [_vm._v(\" 右侧 \")])], 1)], 1) : _vm._e(), _vm.activeData.maxlength !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"最多输入\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入字符长度\"\n },\n model: {\n value: _vm.activeData.maxlength,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"maxlength\", $$v);\n },\n expression: \"activeData.maxlength\"\n }\n }, [_c(\"template\", {\n slot: \"append\"\n }, [_vm._v(\" 个字符 \")])], 2)], 1) : _vm._e(), _vm.activeData[\"active-text\"] !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"开启提示\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入开启提示\"\n },\n model: {\n value: _vm.activeData[\"active-text\"],\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"active-text\", $$v);\n },\n expression: \"activeData['active-text']\"\n }\n })], 1) : _vm._e(), _vm.activeData[\"inactive-text\"] !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"关闭提示\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入关闭提示\"\n },\n model: {\n value: _vm.activeData[\"inactive-text\"],\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"inactive-text\", $$v);\n },\n expression: \"activeData['inactive-text']\"\n }\n })], 1) : _vm._e(), _vm.activeData[\"active-value\"] !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"开启值\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n value: _vm.setDefaultValue(_vm.activeData[\"active-value\"]),\n placeholder: \"请输入开启值\"\n },\n on: {\n input: function input($event) {\n return _vm.onSwitchValueInput($event, \"active-value\");\n }\n }\n })], 1) : _vm._e(), _vm.activeData[\"inactive-value\"] !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"关闭值\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n value: _vm.setDefaultValue(_vm.activeData[\"inactive-value\"]),\n placeholder: \"请输入关闭值\"\n },\n on: {\n input: function input($event) {\n return _vm.onSwitchValueInput($event, \"inactive-value\");\n }\n }\n })], 1) : _vm._e(), _vm.activeData.type !== undefined && \"el-date-picker\" === _vm.activeData.__config__.tag ? _c(\"el-form-item\", {\n attrs: {\n label: \"时间类型\"\n }\n }, [_c(\"el-select\", {\n style: {\n width: \"100%\"\n },\n attrs: {\n placeholder: \"请选择时间类型\"\n },\n on: {\n change: _vm.dateTypeChange\n },\n model: {\n value: _vm.activeData.type,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"type\", $$v);\n },\n expression: \"activeData.type\"\n }\n }, _vm._l(_vm.dateOptions, function (item, index) {\n return _c(\"el-option\", {\n key: index,\n attrs: {\n label: item.label,\n value: item.value\n }\n });\n }), 1)], 1) : _vm._e(), _vm.activeData.name !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"文件字段名\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入上传文件字段名\"\n },\n model: {\n value: _vm.activeData.name,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"name\", $$v);\n },\n expression: \"activeData.name\"\n }\n })], 1) : _vm._e(), _vm.activeData.accept !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"文件类型\"\n }\n }, [_c(\"el-select\", {\n style: {\n width: \"100%\"\n },\n attrs: {\n placeholder: \"请选择文件类型\",\n clearable: \"\"\n },\n model: {\n value: _vm.activeData.accept,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"accept\", $$v);\n },\n expression: \"activeData.accept\"\n }\n }, [_c(\"el-option\", {\n attrs: {\n label: \"图片\",\n value: \"image/*\"\n }\n }), _c(\"el-option\", {\n attrs: {\n label: \"视频\",\n value: \"video/*\"\n }\n }), _c(\"el-option\", {\n attrs: {\n label: \"音频\",\n value: \"audio/*\"\n }\n }), _c(\"el-option\", {\n attrs: {\n label: \"excel\",\n value: \".xls,.xlsx\"\n }\n }), _c(\"el-option\", {\n attrs: {\n label: \"word\",\n value: \".doc,.docx\"\n }\n }), _c(\"el-option\", {\n attrs: {\n label: \"pdf\",\n value: \".pdf\"\n }\n }), _c(\"el-option\", {\n attrs: {\n label: \"txt\",\n value: \".txt\"\n }\n })], 1)], 1) : _vm._e(), _vm.activeData.__config__.fileSize !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"文件大小\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入文件大小\"\n },\n model: {\n value: _vm.activeData.__config__.fileSize,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.__config__, \"fileSize\", _vm._n($$v));\n },\n expression: \"activeData.__config__.fileSize\"\n }\n }, [_c(\"el-select\", {\n style: {\n width: \"66px\"\n },\n attrs: {\n slot: \"append\"\n },\n slot: \"append\",\n model: {\n value: _vm.activeData.__config__.sizeUnit,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.__config__, \"sizeUnit\", $$v);\n },\n expression: \"activeData.__config__.sizeUnit\"\n }\n }, [_c(\"el-option\", {\n attrs: {\n label: \"KB\",\n value: \"KB\"\n }\n }), _c(\"el-option\", {\n attrs: {\n label: \"MB\",\n value: \"MB\"\n }\n }), _c(\"el-option\", {\n attrs: {\n label: \"GB\",\n value: \"GB\"\n }\n })], 1)], 1)], 1) : _vm._e(), _vm.activeData.action !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"上传地址\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入上传地址\",\n clearable: \"\"\n },\n model: {\n value: _vm.activeData.action,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"action\", $$v);\n },\n expression: \"activeData.action\"\n }\n })], 1) : _vm._e(), _vm.activeData[\"list-type\"] !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"列表类型\"\n }\n }, [_c(\"el-radio-group\", {\n attrs: {\n size: \"small\"\n },\n model: {\n value: _vm.activeData[\"list-type\"],\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"list-type\", $$v);\n },\n expression: \"activeData['list-type']\"\n }\n }, [_c(\"el-radio-button\", {\n attrs: {\n label: \"text\"\n }\n }, [_vm._v(\" text \")]), _c(\"el-radio-button\", {\n attrs: {\n label: \"picture\"\n }\n }, [_vm._v(\" picture \")]), _c(\"el-radio-button\", {\n attrs: {\n label: \"picture-card\"\n }\n }, [_vm._v(\" picture-card \")])], 1)], 1) : _vm._e(), _vm.activeData.type !== undefined && _vm.activeData.__config__.tag === \"el-button\" ? _c(\"el-form-item\", {\n attrs: {\n label: \"按钮类型\"\n }\n }, [_c(\"el-select\", {\n style: {\n width: \"100%\"\n },\n model: {\n value: _vm.activeData.type,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"type\", $$v);\n },\n expression: \"activeData.type\"\n }\n }, [_c(\"el-option\", {\n attrs: {\n label: \"primary\",\n value: \"primary\"\n }\n }), _c(\"el-option\", {\n attrs: {\n label: \"success\",\n value: \"success\"\n }\n }), _c(\"el-option\", {\n attrs: {\n label: \"warning\",\n value: \"warning\"\n }\n }), _c(\"el-option\", {\n attrs: {\n label: \"danger\",\n value: \"danger\"\n }\n }), _c(\"el-option\", {\n attrs: {\n label: \"info\",\n value: \"info\"\n }\n }), _c(\"el-option\", {\n attrs: {\n label: \"text\",\n value: \"text\"\n }\n })], 1)], 1) : _vm._e(), _vm.activeData.__config__.buttonText !== undefined ? _c(\"el-form-item\", {\n directives: [{\n name: \"show\",\n rawName: \"v-show\",\n value: \"picture-card\" !== _vm.activeData[\"list-type\"],\n expression: \"'picture-card' !== activeData['list-type']\"\n }],\n attrs: {\n label: \"按钮文字\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入按钮文字\"\n },\n model: {\n value: _vm.activeData.__config__.buttonText,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.__config__, \"buttonText\", $$v);\n },\n expression: \"activeData.__config__.buttonText\"\n }\n })], 1) : _vm._e(), _vm.activeData.__config__.tag === \"el-button\" ? _c(\"el-form-item\", {\n attrs: {\n label: \"按钮文字\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入按钮文字\"\n },\n model: {\n value: _vm.activeData.__slot__.default,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.__slot__, \"default\", $$v);\n },\n expression: \"activeData.__slot__.default\"\n }\n })], 1) : _vm._e(), _vm.activeData[\"range-separator\"] !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"分隔符\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入分隔符\"\n },\n model: {\n value: _vm.activeData[\"range-separator\"],\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"range-separator\", $$v);\n },\n expression: \"activeData['range-separator']\"\n }\n })], 1) : _vm._e(), _vm.activeData[\"picker-options\"] !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"时间段\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入时间段\"\n },\n model: {\n value: _vm.activeData[\"picker-options\"].selectableRange,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData[\"picker-options\"], \"selectableRange\", $$v);\n },\n expression: \"activeData['picker-options'].selectableRange\"\n }\n })], 1) : _vm._e(), _vm.activeData.format !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"时间格式\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n value: _vm.activeData.format,\n placeholder: \"请输入时间格式\"\n },\n on: {\n input: function input($event) {\n return _vm.setTimeValue($event);\n }\n }\n })], 1) : _vm._e(), [\"el-checkbox-group\", \"el-radio-group\", \"el-select\"].indexOf(_vm.activeData.__config__.tag) > -1 ? [_c(\"el-divider\", [_vm._v(\"选项\")]), _c(\"draggable\", {\n attrs: {\n list: _vm.activeData.__slot__.options,\n animation: 340,\n group: \"selectItem\",\n handle: \".option-drag\"\n }\n }, _vm._l(_vm.activeData.__slot__.options, function (item, index) {\n return _c(\"div\", {\n key: index,\n staticClass: \"select-item\"\n }, [_c(\"div\", {\n staticClass: \"select-line-icon option-drag\"\n }, [_c(\"i\", {\n staticClass: \"el-icon-s-operation\"\n })]), _c(\"el-input\", {\n attrs: {\n placeholder: \"选项名\",\n size: \"small\"\n },\n model: {\n value: item.label,\n callback: function callback($$v) {\n _vm.$set(item, \"label\", $$v);\n },\n expression: \"item.label\"\n }\n }), _c(\"el-input\", {\n attrs: {\n placeholder: \"选项值\",\n size: \"small\",\n value: item.value\n },\n on: {\n input: function input($event) {\n return _vm.setOptionValue(item, $event);\n }\n }\n }), _c(\"div\", {\n staticClass: \"close-btn select-line-icon\",\n on: {\n click: function click($event) {\n return _vm.activeData.__slot__.options.splice(index, 1);\n }\n }\n }, [_c(\"i\", {\n staticClass: \"el-icon-remove-outline\"\n })])], 1);\n }), 0), _c(\"div\", {\n staticStyle: {\n \"margin-left\": \"20px\"\n }\n }, [_c(\"el-button\", {\n staticStyle: {\n \"padding-bottom\": \"0\"\n },\n attrs: {\n icon: \"el-icon-circle-plus-outline\",\n type: \"text\"\n },\n on: {\n click: _vm.addSelectItem\n }\n }, [_vm._v(\" 添加选项 \")])], 1), _c(\"el-divider\")] : _vm._e(), [\"el-cascader\", \"el-table\"].includes(_vm.activeData.__config__.tag) ? [_c(\"el-divider\", [_vm._v(\"选项\")]), _vm.activeData.__config__.dataType ? _c(\"el-form-item\", {\n attrs: {\n label: \"数据类型\"\n }\n }, [_c(\"el-radio-group\", {\n attrs: {\n size: \"small\"\n },\n model: {\n value: _vm.activeData.__config__.dataType,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.__config__, \"dataType\", $$v);\n },\n expression: \"activeData.__config__.dataType\"\n }\n }, [_c(\"el-radio-button\", {\n attrs: {\n label: \"dynamic\"\n }\n }, [_vm._v(\" 动态数据 \")]), _c(\"el-radio-button\", {\n attrs: {\n label: \"static\"\n }\n }, [_vm._v(\" 静态数据 \")])], 1)], 1) : _vm._e(), _vm.activeData.__config__.dataType === \"dynamic\" ? [_c(\"el-form-item\", {\n attrs: {\n label: \"接口地址\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n title: _vm.activeData.__config__.url,\n placeholder: \"请输入接口地址\",\n clearable: \"\"\n },\n on: {\n blur: function blur($event) {\n return _vm.$emit(\"fetch-data\", _vm.activeData);\n }\n },\n model: {\n value: _vm.activeData.__config__.url,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.__config__, \"url\", $$v);\n },\n expression: \"activeData.__config__.url\"\n }\n }, [_c(\"el-select\", {\n style: {\n width: \"85px\"\n },\n attrs: {\n slot: \"prepend\"\n },\n on: {\n change: function change($event) {\n return _vm.$emit(\"fetch-data\", _vm.activeData);\n }\n },\n slot: \"prepend\",\n model: {\n value: _vm.activeData.__config__.method,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.__config__, \"method\", $$v);\n },\n expression: \"activeData.__config__.method\"\n }\n }, [_c(\"el-option\", {\n attrs: {\n label: \"get\",\n value: \"get\"\n }\n }), _c(\"el-option\", {\n attrs: {\n label: \"post\",\n value: \"post\"\n }\n }), _c(\"el-option\", {\n attrs: {\n label: \"put\",\n value: \"put\"\n }\n }), _c(\"el-option\", {\n attrs: {\n label: \"delete\",\n value: \"delete\"\n }\n })], 1)], 1)], 1), _c(\"el-form-item\", {\n attrs: {\n label: \"数据位置\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入数据位置\"\n },\n on: {\n blur: function blur($event) {\n return _vm.$emit(\"fetch-data\", _vm.activeData);\n }\n },\n model: {\n value: _vm.activeData.__config__.dataPath,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.__config__, \"dataPath\", $$v);\n },\n expression: \"activeData.__config__.dataPath\"\n }\n })], 1), _vm.activeData.props && _vm.activeData.props.props ? [_c(\"el-form-item\", {\n attrs: {\n label: \"标签键名\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入标签键名\"\n },\n model: {\n value: _vm.activeData.props.props.label,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.props.props, \"label\", $$v);\n },\n expression: \"activeData.props.props.label\"\n }\n })], 1), _c(\"el-form-item\", {\n attrs: {\n label: \"值键名\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入值键名\"\n },\n model: {\n value: _vm.activeData.props.props.value,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.props.props, \"value\", $$v);\n },\n expression: \"activeData.props.props.value\"\n }\n })], 1), _c(\"el-form-item\", {\n attrs: {\n label: \"子级键名\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入子级键名\"\n },\n model: {\n value: _vm.activeData.props.props.children,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.props.props, \"children\", $$v);\n },\n expression: \"activeData.props.props.children\"\n }\n })], 1)] : _vm._e()] : _vm._e(), _vm.activeData.__config__.dataType === \"static\" ? _c(\"el-tree\", {\n attrs: {\n draggable: \"\",\n data: _vm.activeData.options,\n \"node-key\": \"id\",\n \"expand-on-click-node\": false,\n \"render-content\": _vm.renderContent\n }\n }) : _vm._e(), _vm.activeData.__config__.dataType === \"static\" ? _c(\"div\", {\n staticStyle: {\n \"margin-left\": \"20px\"\n }\n }, [_c(\"el-button\", {\n staticStyle: {\n \"padding-bottom\": \"0\"\n },\n attrs: {\n icon: \"el-icon-circle-plus-outline\",\n type: \"text\"\n },\n on: {\n click: _vm.addTreeItem\n }\n }, [_vm._v(\" 添加父级 \")])], 1) : _vm._e(), _c(\"el-divider\")] : _vm._e(), _vm.activeData.__config__.optionType !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"选项样式\"\n }\n }, [_c(\"el-radio-group\", {\n model: {\n value: _vm.activeData.__config__.optionType,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.__config__, \"optionType\", $$v);\n },\n expression: \"activeData.__config__.optionType\"\n }\n }, [_c(\"el-radio-button\", {\n attrs: {\n label: \"default\"\n }\n }, [_vm._v(\" 默认 \")]), _c(\"el-radio-button\", {\n attrs: {\n label: \"button\"\n }\n }, [_vm._v(\" 按钮 \")])], 1)], 1) : _vm._e(), _vm.activeData[\"active-color\"] !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"开启颜色\"\n }\n }, [_c(\"el-color-picker\", {\n model: {\n value: _vm.activeData[\"active-color\"],\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"active-color\", $$v);\n },\n expression: \"activeData['active-color']\"\n }\n })], 1) : _vm._e(), _vm.activeData[\"inactive-color\"] !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"关闭颜色\"\n }\n }, [_c(\"el-color-picker\", {\n model: {\n value: _vm.activeData[\"inactive-color\"],\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"inactive-color\", $$v);\n },\n expression: \"activeData['inactive-color']\"\n }\n })], 1) : _vm._e(), _vm.activeData.__config__.showLabel !== undefined && _vm.activeData.__config__.labelWidth !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"显示标签\"\n }\n }, [_c(\"el-switch\", {\n model: {\n value: _vm.activeData.__config__.showLabel,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.__config__, \"showLabel\", $$v);\n },\n expression: \"activeData.__config__.showLabel\"\n }\n })], 1) : _vm._e(), _vm.activeData.branding !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"品牌烙印\"\n }\n }, [_c(\"el-switch\", {\n on: {\n input: _vm.changeRenderKey\n },\n model: {\n value: _vm.activeData.branding,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"branding\", $$v);\n },\n expression: \"activeData.branding\"\n }\n })], 1) : _vm._e(), _vm.activeData[\"allow-half\"] !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"允许半选\"\n }\n }, [_c(\"el-switch\", {\n model: {\n value: _vm.activeData[\"allow-half\"],\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"allow-half\", $$v);\n },\n expression: \"activeData['allow-half']\"\n }\n })], 1) : _vm._e(), _vm.activeData[\"show-text\"] !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"辅助文字\"\n }\n }, [_c(\"el-switch\", {\n on: {\n change: _vm.rateTextChange\n },\n model: {\n value: _vm.activeData[\"show-text\"],\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"show-text\", $$v);\n },\n expression: \"activeData['show-text']\"\n }\n })], 1) : _vm._e(), _vm.activeData[\"show-score\"] !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"显示分数\"\n }\n }, [_c(\"el-switch\", {\n on: {\n change: _vm.rateScoreChange\n },\n model: {\n value: _vm.activeData[\"show-score\"],\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"show-score\", $$v);\n },\n expression: \"activeData['show-score']\"\n }\n })], 1) : _vm._e(), _vm.activeData[\"show-stops\"] !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"显示间断点\"\n }\n }, [_c(\"el-switch\", {\n model: {\n value: _vm.activeData[\"show-stops\"],\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"show-stops\", $$v);\n },\n expression: \"activeData['show-stops']\"\n }\n })], 1) : _vm._e(), _vm.activeData.range !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"范围选择\"\n }\n }, [_c(\"el-switch\", {\n on: {\n change: _vm.rangeChange\n },\n model: {\n value: _vm.activeData.range,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"range\", $$v);\n },\n expression: \"activeData.range\"\n }\n })], 1) : _vm._e(), _vm.activeData.__config__.border !== undefined && _vm.activeData.__config__.optionType === \"default\" ? _c(\"el-form-item\", {\n attrs: {\n label: \"是否带边框\"\n }\n }, [_c(\"el-switch\", {\n model: {\n value: _vm.activeData.__config__.border,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.__config__, \"border\", $$v);\n },\n expression: \"activeData.__config__.border\"\n }\n })], 1) : _vm._e(), _vm.activeData.__config__.tag === \"el-color-picker\" ? _c(\"el-form-item\", {\n attrs: {\n label: \"颜色格式\"\n }\n }, [_c(\"el-select\", {\n style: {\n width: \"100%\"\n },\n attrs: {\n placeholder: \"请选择颜色格式\",\n clearable: \"\"\n },\n on: {\n change: _vm.colorFormatChange\n },\n model: {\n value: _vm.activeData[\"color-format\"],\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"color-format\", $$v);\n },\n expression: \"activeData['color-format']\"\n }\n }, _vm._l(_vm.colorFormatOptions, function (item, index) {\n return _c(\"el-option\", {\n key: index,\n attrs: {\n label: item.label,\n value: item.value\n }\n });\n }), 1)], 1) : _vm._e(), _vm.activeData.size !== undefined && (_vm.activeData.__config__.optionType === \"button\" || _vm.activeData.__config__.border || _vm.activeData.__config__.tag === \"el-color-picker\" || _vm.activeData.__config__.tag === \"el-button\") ? _c(\"el-form-item\", {\n attrs: {\n label: \"组件尺寸\"\n }\n }, [_c(\"el-radio-group\", {\n model: {\n value: _vm.activeData.size,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"size\", $$v);\n },\n expression: \"activeData.size\"\n }\n }, [_c(\"el-radio-button\", {\n attrs: {\n label: \"medium\"\n }\n }, [_vm._v(\" 中等 \")]), _c(\"el-radio-button\", {\n attrs: {\n label: \"small\"\n }\n }, [_vm._v(\" 较小 \")]), _c(\"el-radio-button\", {\n attrs: {\n label: \"mini\"\n }\n }, [_vm._v(\" 迷你 \")])], 1)], 1) : _vm._e(), _vm.activeData[\"show-word-limit\"] !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"输入统计\"\n }\n }, [_c(\"el-switch\", {\n model: {\n value: _vm.activeData[\"show-word-limit\"],\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"show-word-limit\", $$v);\n },\n expression: \"activeData['show-word-limit']\"\n }\n })], 1) : _vm._e(), _vm.activeData.__config__.tag === \"el-input-number\" ? _c(\"el-form-item\", {\n attrs: {\n label: \"严格步数\"\n }\n }, [_c(\"el-switch\", {\n model: {\n value: _vm.activeData[\"step-strictly\"],\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"step-strictly\", $$v);\n },\n expression: \"activeData['step-strictly']\"\n }\n })], 1) : _vm._e(), _vm.activeData.__config__.tag === \"el-cascader\" ? _c(\"el-form-item\", {\n attrs: {\n label: \"任选层级\"\n }\n }, [_c(\"el-switch\", {\n model: {\n value: _vm.activeData.props.props.checkStrictly,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.props.props, \"checkStrictly\", $$v);\n },\n expression: \"activeData.props.props.checkStrictly\"\n }\n })], 1) : _vm._e(), _vm.activeData.__config__.tag === \"el-cascader\" ? _c(\"el-form-item\", {\n attrs: {\n label: \"是否多选\"\n }\n }, [_c(\"el-switch\", {\n model: {\n value: _vm.activeData.props.props.multiple,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.props.props, \"multiple\", $$v);\n },\n expression: \"activeData.props.props.multiple\"\n }\n })], 1) : _vm._e(), _vm.activeData.__config__.tag === \"el-cascader\" ? _c(\"el-form-item\", {\n attrs: {\n label: \"展示全路径\"\n }\n }, [_c(\"el-switch\", {\n model: {\n value: _vm.activeData[\"show-all-levels\"],\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"show-all-levels\", $$v);\n },\n expression: \"activeData['show-all-levels']\"\n }\n })], 1) : _vm._e(), _vm.activeData.__config__.tag === \"el-cascader\" ? _c(\"el-form-item\", {\n attrs: {\n label: \"可否筛选\"\n }\n }, [_c(\"el-switch\", {\n model: {\n value: _vm.activeData.filterable,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"filterable\", $$v);\n },\n expression: \"activeData.filterable\"\n }\n })], 1) : _vm._e(), _vm.activeData.clearable !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"能否清空\"\n }\n }, [_c(\"el-switch\", {\n model: {\n value: _vm.activeData.clearable,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"clearable\", $$v);\n },\n expression: \"activeData.clearable\"\n }\n })], 1) : _vm._e(), _vm.activeData.__config__.showTip !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"显示提示\"\n }\n }, [_c(\"el-switch\", {\n model: {\n value: _vm.activeData.__config__.showTip,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.__config__, \"showTip\", $$v);\n },\n expression: \"activeData.__config__.showTip\"\n }\n })], 1) : _vm._e(), _vm.activeData.__config__.tag === \"el-upload\" ? _c(\"el-form-item\", {\n attrs: {\n label: \"多选文件\"\n }\n }, [_c(\"el-switch\", {\n model: {\n value: _vm.activeData.multiple,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"multiple\", $$v);\n },\n expression: \"activeData.multiple\"\n }\n })], 1) : _vm._e(), _vm.activeData[\"auto-upload\"] !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"自动上传\"\n }\n }, [_c(\"el-switch\", {\n model: {\n value: _vm.activeData[\"auto-upload\"],\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"auto-upload\", $$v);\n },\n expression: \"activeData['auto-upload']\"\n }\n })], 1) : _vm._e(), _vm.activeData.readonly !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"是否只读\"\n }\n }, [_c(\"el-switch\", {\n model: {\n value: _vm.activeData.readonly,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"readonly\", $$v);\n },\n expression: \"activeData.readonly\"\n }\n })], 1) : _vm._e(), _vm.activeData.disabled !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"是否禁用\"\n }\n }, [_c(\"el-switch\", {\n model: {\n value: _vm.activeData.disabled,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"disabled\", $$v);\n },\n expression: \"activeData.disabled\"\n }\n })], 1) : _vm._e(), _vm.activeData.__config__.tag === \"el-select\" ? _c(\"el-form-item\", {\n attrs: {\n label: \"能否搜索\"\n }\n }, [_c(\"el-switch\", {\n model: {\n value: _vm.activeData.filterable,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"filterable\", $$v);\n },\n expression: \"activeData.filterable\"\n }\n })], 1) : _vm._e(), _vm.activeData.__config__.tag === \"el-select\" ? _c(\"el-form-item\", {\n attrs: {\n label: \"是否多选\"\n }\n }, [_c(\"el-switch\", {\n on: {\n change: _vm.multipleChange\n },\n model: {\n value: _vm.activeData.multiple,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData, \"multiple\", $$v);\n },\n expression: \"activeData.multiple\"\n }\n })], 1) : _vm._e(), _vm.activeData.__config__.required !== undefined ? _c(\"el-form-item\", {\n attrs: {\n label: \"是否必填\"\n }\n }, [_c(\"el-switch\", {\n model: {\n value: _vm.activeData.__config__.required,\n callback: function callback($$v) {\n _vm.$set(_vm.activeData.__config__, \"required\", $$v);\n },\n expression: \"activeData.__config__.required\"\n }\n })], 1) : _vm._e(), _vm.activeData.__config__.layoutTree ? [_c(\"el-divider\", [_vm._v(\"布局结构树\")]), _c(\"el-tree\", {\n attrs: {\n data: [_vm.activeData.__config__],\n props: _vm.layoutTreeProps,\n \"node-key\": \"renderKey\",\n \"default-expand-all\": \"\",\n draggable: \"\"\n },\n scopedSlots: _vm._u([{\n key: \"default\",\n fn: function fn(_ref) {\n var node = _ref.node,\n data = _ref.data;\n return _c(\"span\", {}, [_c(\"span\", {\n staticClass: \"node-label\"\n }, [_c(\"svg-icon\", {\n staticClass: \"node-icon\",\n attrs: {\n \"icon-class\": data.__config__ ? data.__config__.tagIcon : data.tagIcon\n }\n }), _vm._v(\" \" + _vm._s(node.label) + \" \")], 1)]);\n }\n }], null, false, 3924665115)\n })] : _vm._e(), Array.isArray(_vm.activeData.__config__.regList) ? [_c(\"el-divider\", [_vm._v(\"正则校验\")]), _vm._l(_vm.activeData.__config__.regList, function (item, index) {\n return _c(\"div\", {\n key: index,\n staticClass: \"reg-item\"\n }, [_c(\"span\", {\n staticClass: \"close-btn\",\n on: {\n click: function click($event) {\n return _vm.activeData.__config__.regList.splice(index, 1);\n }\n }\n }, [_c(\"i\", {\n staticClass: \"el-icon-close\"\n })]), _c(\"el-form-item\", {\n attrs: {\n label: \"表达式\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入正则\"\n },\n model: {\n value: item.pattern,\n callback: function callback($$v) {\n _vm.$set(item, \"pattern\", $$v);\n },\n expression: \"item.pattern\"\n }\n })], 1), _c(\"el-form-item\", {\n staticStyle: {\n \"margin-bottom\": \"0\"\n },\n attrs: {\n label: \"错误提示\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入错误提示\"\n },\n model: {\n value: item.message,\n callback: function callback($$v) {\n _vm.$set(item, \"message\", $$v);\n },\n expression: \"item.message\"\n }\n })], 1)], 1);\n }), _c(\"div\", {\n staticStyle: {\n \"margin-left\": \"20px\"\n }\n }, [_c(\"el-button\", {\n attrs: {\n icon: \"el-icon-circle-plus-outline\",\n type: \"text\"\n },\n on: {\n click: _vm.addReg\n }\n }, [_vm._v(\" 添加规则 \")])], 1)] : _vm._e()], 2), _c(\"el-form\", {\n directives: [{\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.currentTab === \"form\",\n expression: \"currentTab === 'form'\"\n }],\n attrs: {\n size: \"small\",\n \"label-width\": \"90px\"\n }\n }, [_c(\"el-form-item\", {\n attrs: {\n label: \"表单名\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入表单名(ref)\"\n },\n model: {\n value: _vm.formConf.formRef,\n callback: function callback($$v) {\n _vm.$set(_vm.formConf, \"formRef\", $$v);\n },\n expression: \"formConf.formRef\"\n }\n })], 1), _c(\"el-form-item\", {\n attrs: {\n label: \"表单模型\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入数据模型\"\n },\n model: {\n value: _vm.formConf.formModel,\n callback: function callback($$v) {\n _vm.$set(_vm.formConf, \"formModel\", $$v);\n },\n expression: \"formConf.formModel\"\n }\n })], 1), _c(\"el-form-item\", {\n attrs: {\n label: \"校验模型\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入校验模型\"\n },\n model: {\n value: _vm.formConf.formRules,\n callback: function callback($$v) {\n _vm.$set(_vm.formConf, \"formRules\", $$v);\n },\n expression: \"formConf.formRules\"\n }\n })], 1), _c(\"el-form-item\", {\n attrs: {\n label: \"表单尺寸\"\n }\n }, [_c(\"el-radio-group\", {\n model: {\n value: _vm.formConf.size,\n callback: function callback($$v) {\n _vm.$set(_vm.formConf, \"size\", $$v);\n },\n expression: \"formConf.size\"\n }\n }, [_c(\"el-radio-button\", {\n attrs: {\n label: \"medium\"\n }\n }, [_vm._v(\" 中等 \")]), _c(\"el-radio-button\", {\n attrs: {\n label: \"small\"\n }\n }, [_vm._v(\" 较小 \")]), _c(\"el-radio-button\", {\n attrs: {\n label: \"mini\"\n }\n }, [_vm._v(\" 迷你 \")])], 1)], 1), _c(\"el-form-item\", {\n attrs: {\n label: \"标签对齐\"\n }\n }, [_c(\"el-radio-group\", {\n model: {\n value: _vm.formConf.labelPosition,\n callback: function callback($$v) {\n _vm.$set(_vm.formConf, \"labelPosition\", $$v);\n },\n expression: \"formConf.labelPosition\"\n }\n }, [_c(\"el-radio-button\", {\n attrs: {\n label: \"left\"\n }\n }, [_vm._v(\" 左对齐 \")]), _c(\"el-radio-button\", {\n attrs: {\n label: \"right\"\n }\n }, [_vm._v(\" 右对齐 \")]), _c(\"el-radio-button\", {\n attrs: {\n label: \"top\"\n }\n }, [_vm._v(\" 顶部对齐 \")])], 1)], 1), _c(\"el-form-item\", {\n attrs: {\n label: \"标签宽度\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n type: \"number\",\n placeholder: \"请输入标签宽度\"\n },\n model: {\n value: _vm.formConf.labelWidth,\n callback: function callback($$v) {\n _vm.$set(_vm.formConf, \"labelWidth\", _vm._n($$v));\n },\n expression: \"formConf.labelWidth\"\n }\n })], 1), _c(\"el-form-item\", {\n attrs: {\n label: \"栅格间隔\"\n }\n }, [_c(\"el-input-number\", {\n attrs: {\n min: 0,\n placeholder: \"栅格间隔\"\n },\n model: {\n value: _vm.formConf.gutter,\n callback: function callback($$v) {\n _vm.$set(_vm.formConf, \"gutter\", $$v);\n },\n expression: \"formConf.gutter\"\n }\n })], 1), _c(\"el-form-item\", {\n attrs: {\n label: \"禁用表单\"\n }\n }, [_c(\"el-switch\", {\n model: {\n value: _vm.formConf.disabled,\n callback: function callback($$v) {\n _vm.$set(_vm.formConf, \"disabled\", $$v);\n },\n expression: \"formConf.disabled\"\n }\n })], 1), _c(\"el-form-item\", {\n attrs: {\n label: \"表单按钮\"\n }\n }, [_c(\"el-switch\", {\n model: {\n value: _vm.formConf.formBtns,\n callback: function callback($$v) {\n _vm.$set(_vm.formConf, \"formBtns\", $$v);\n },\n expression: \"formConf.formBtns\"\n }\n })], 1), _c(\"el-form-item\", {\n attrs: {\n label: \"显示未选中组件边框\"\n }\n }, [_c(\"el-switch\", {\n model: {\n value: _vm.formConf.unFocusedComponentBorder,\n callback: function callback($$v) {\n _vm.$set(_vm.formConf, \"unFocusedComponentBorder\", $$v);\n },\n expression: \"formConf.unFocusedComponentBorder\"\n }\n })], 1)], 1)], 1)], 1), _c(\"treeNode-dialog\", {\n attrs: {\n visible: _vm.dialogVisible,\n title: \"添加选项\"\n },\n on: {\n \"update:visible\": function updateVisible($event) {\n _vm.dialogVisible = $event;\n },\n commit: _vm.addNode\n }\n }), _c(\"icons-dialog\", {\n attrs: {\n visible: _vm.iconsVisible,\n current: _vm.activeData[_vm.currentIconModel]\n },\n on: {\n \"update:visible\": function updateVisible($event) {\n _vm.iconsVisible = $event;\n },\n select: _vm.setIcon\n }\n })], 1);\n};\nexports.render = render;\nvar staticRenderFns = [];\nexports.staticRenderFns = staticRenderFns;\nrender._withStripped = true;\n\n//# sourceURL=webpack:///./src/views/infra/build/RightPanel.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22b76c6300-vue-loader-template%22%7D!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/TreeNodeDialog.vue?vue&type=template&id=dae9c2fc&scoped=true&": +/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"b76c6300-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/TreeNodeDialog.vue?vue&type=template&id=dae9c2fc&scoped=true& ***! + \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.staticRenderFns = exports.render = void 0;\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", [_c(\"el-dialog\", _vm._g(_vm._b({\n attrs: {\n \"close-on-click-modal\": false,\n \"modal-append-to-body\": false\n },\n on: {\n open: _vm.onOpen,\n close: _vm.onClose\n }\n }, \"el-dialog\", _vm.$attrs, false), _vm.$listeners), [_c(\"el-row\", {\n attrs: {\n gutter: 0\n }\n }, [_c(\"el-form\", {\n ref: \"elForm\",\n attrs: {\n model: _vm.formData,\n rules: _vm.rules,\n size: \"small\",\n \"label-width\": \"100px\"\n }\n }, [_c(\"el-col\", {\n attrs: {\n span: 24\n }\n }, [_c(\"el-form-item\", {\n attrs: {\n label: \"选项名\",\n prop: \"label\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入选项名\",\n clearable: \"\"\n },\n model: {\n value: _vm.formData.label,\n callback: function callback($$v) {\n _vm.$set(_vm.formData, \"label\", $$v);\n },\n expression: \"formData.label\"\n }\n })], 1)], 1), _c(\"el-col\", {\n attrs: {\n span: 24\n }\n }, [_c(\"el-form-item\", {\n attrs: {\n label: \"选项值\",\n prop: \"value\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入选项值\",\n clearable: \"\"\n },\n model: {\n value: _vm.formData.value,\n callback: function callback($$v) {\n _vm.$set(_vm.formData, \"value\", $$v);\n },\n expression: \"formData.value\"\n }\n }, [_c(\"el-select\", {\n style: {\n width: \"100px\"\n },\n attrs: {\n slot: \"append\"\n },\n slot: \"append\",\n model: {\n value: _vm.dataType,\n callback: function callback($$v) {\n _vm.dataType = $$v;\n },\n expression: \"dataType\"\n }\n }, _vm._l(_vm.dataTypeOptions, function (item, index) {\n return _c(\"el-option\", {\n key: index,\n attrs: {\n label: item.label,\n value: item.value,\n disabled: item.disabled\n }\n });\n }), 1)], 1)], 1)], 1)], 1)], 1), _c(\"div\", {\n attrs: {\n slot: \"footer\"\n },\n slot: \"footer\"\n }, [_c(\"el-button\", {\n attrs: {\n type: \"primary\"\n },\n on: {\n click: _vm.handelConfirm\n }\n }, [_vm._v(\" 确定 \")]), _c(\"el-button\", {\n on: {\n click: _vm.close\n }\n }, [_vm._v(\" 取消 \")])], 1)], 1)], 1);\n};\nexports.render = render;\nvar staticRenderFns = [];\nexports.staticRenderFns = staticRenderFns;\nrender._withStripped = true;\n\n//# sourceURL=webpack:///./src/views/infra/build/TreeNodeDialog.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22b76c6300-vue-loader-template%22%7D!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/form/formEditor.vue?vue&type=style&index=0&id=3df0b122&lang=scss&": +/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--9-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/bpm/form/formEditor.vue?vue&type=style&index=0&id=3df0b122&lang=scss& ***! + \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".container {\\n position: relative;\\n width: 100%;\\n height: 100%;\\n}\\n.components-list {\\n padding: 8px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n height: 100%;\\n}\\n.components-list .components-item {\\n display: inline-block;\\n width: 48%;\\n margin: 1%;\\n -webkit-transition: -webkit-transform 0ms !important;\\n transition: -webkit-transform 0ms !important;\\n transition: transform 0ms !important;\\n transition: transform 0ms, -webkit-transform 0ms !important;\\n}\\n.components-draggable {\\n padding-bottom: 20px;\\n}\\n.components-title {\\n font-size: 14px;\\n color: #222;\\n margin: 6px 2px;\\n}\\n.components-title .svg-icon {\\n color: #666;\\n font-size: 18px;\\n}\\n.components-body {\\n padding: 8px 10px;\\n background: #f6f7ff;\\n font-size: 12px;\\n cursor: move;\\n border: 1px dashed #f6f7ff;\\n border-radius: 3px;\\n}\\n.components-body .svg-icon {\\n color: #777;\\n font-size: 15px;\\n}\\n.components-body:hover {\\n border: 1px dashed #787be8;\\n color: #787be8;\\n}\\n.components-body:hover .svg-icon {\\n color: #787be8;\\n}\\n.left-board {\\n width: 260px;\\n position: absolute;\\n left: 0;\\n top: 0;\\n height: 100vh;\\n}\\n.left-scrollbar {\\n height: calc(100vh - 42px);\\n overflow: hidden;\\n}\\n.center-scrollbar {\\n height: calc(100vh - 42px);\\n overflow: hidden;\\n border-left: 1px solid #f1e8e8;\\n border-right: 1px solid #f1e8e8;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.center-board {\\n height: 100vh;\\n width: auto;\\n margin: 0 350px 0 260px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.empty-info {\\n position: absolute;\\n top: 46%;\\n left: 0;\\n right: 0;\\n text-align: center;\\n font-size: 18px;\\n color: #ccb1ea;\\n letter-spacing: 4px;\\n}\\n.action-bar {\\n position: relative;\\n height: 42px;\\n text-align: right;\\n padding: 0 15px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n border: 1px solid #f1e8e8;\\n border-top: none;\\n border-left: none;\\n}\\n.action-bar .delete-btn {\\n color: #F56C6C;\\n}\\n.logo-wrapper {\\n position: relative;\\n height: 42px;\\n background: #fff;\\n border-bottom: 1px solid #f1e8e8;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.logo {\\n position: absolute;\\n left: 12px;\\n top: 6px;\\n line-height: 30px;\\n color: #00afff;\\n font-weight: 600;\\n font-size: 17px;\\n white-space: nowrap;\\n}\\n.logo > img {\\n width: 30px;\\n height: 30px;\\n vertical-align: top;\\n}\\n.logo .github {\\n display: inline-block;\\n vertical-align: sub;\\n margin-left: 15px;\\n}\\n.logo .github > img {\\n height: 22px;\\n}\\n.center-board-row {\\n padding: 12px 12px 15px 12px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.center-board-row > .el-form {\\n height: calc(100vh - 69px);\\n}\\n.drawing-board {\\n height: 100%;\\n position: relative;\\n}\\n.drawing-board .components-body {\\n padding: 0;\\n margin: 0;\\n font-size: 0;\\n}\\n.drawing-board .sortable-ghost {\\n position: relative;\\n display: block;\\n overflow: hidden;\\n}\\n.drawing-board .sortable-ghost::before {\\n content: \\\" \\\";\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: 0;\\n height: 3px;\\n background: #5959df;\\n z-index: 2;\\n}\\n.drawing-board .components-item.sortable-ghost {\\n width: 100%;\\n height: 60px;\\n background-color: #f6f7ff;\\n}\\n.drawing-board .active-from-item > .el-form-item {\\n background: #f6f7ff;\\n border-radius: 6px;\\n}\\n.drawing-board .active-from-item > .drawing-item-copy, .drawing-board .active-from-item > .drawing-item-delete {\\n display: initial;\\n}\\n.drawing-board .active-from-item > .component-name {\\n color: #409EFF;\\n}\\n.drawing-board .el-form-item {\\n margin-bottom: 15px;\\n}\\n.drawing-item {\\n position: relative;\\n cursor: move;\\n}\\n.drawing-item.unfocus-bordered:not(.active-from-item) > div:first-child {\\n border: 1px dashed #ccc;\\n}\\n.drawing-item .el-form-item {\\n padding: 12px 10px;\\n}\\n.drawing-row-item {\\n position: relative;\\n cursor: move;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n border: 1px dashed #ccc;\\n border-radius: 3px;\\n padding: 0 2px;\\n margin-bottom: 15px;\\n}\\n.drawing-row-item .drawing-row-item {\\n margin-bottom: 2px;\\n}\\n.drawing-row-item .el-col {\\n margin-top: 22px;\\n}\\n.drawing-row-item .el-form-item {\\n margin-bottom: 0;\\n}\\n.drawing-row-item .drag-wrapper {\\n min-height: 80px;\\n}\\n.drawing-row-item.active-from-item {\\n border: 1px dashed #409EFF;\\n}\\n.drawing-row-item .component-name {\\n position: absolute;\\n top: 0;\\n left: 0;\\n font-size: 12px;\\n color: #bbb;\\n display: inline-block;\\n padding: 0 6px;\\n}\\n.drawing-item:hover > .el-form-item, .drawing-row-item:hover > .el-form-item {\\n background: #f6f7ff;\\n border-radius: 6px;\\n}\\n.drawing-item:hover > .drawing-item-copy, .drawing-item:hover > .drawing-item-delete, .drawing-row-item:hover > .drawing-item-copy, .drawing-row-item:hover > .drawing-item-delete {\\n display: initial;\\n}\\n.drawing-item > .drawing-item-copy, .drawing-item > .drawing-item-delete, .drawing-row-item > .drawing-item-copy, .drawing-row-item > .drawing-item-delete {\\n display: none;\\n position: absolute;\\n top: -10px;\\n width: 22px;\\n height: 22px;\\n line-height: 22px;\\n text-align: center;\\n border-radius: 50%;\\n font-size: 12px;\\n border: 1px solid;\\n cursor: pointer;\\n z-index: 1;\\n}\\n.drawing-item > .drawing-item-copy, .drawing-row-item > .drawing-item-copy {\\n right: 56px;\\n border-color: #409EFF;\\n color: #409EFF;\\n background: #fff;\\n}\\n.drawing-item > .drawing-item-copy:hover, .drawing-row-item > .drawing-item-copy:hover {\\n background: #409EFF;\\n color: #fff;\\n}\\n.drawing-item > .drawing-item-delete, .drawing-row-item > .drawing-item-delete {\\n right: 24px;\\n border-color: #F56C6C;\\n color: #F56C6C;\\n background: #fff;\\n}\\n.drawing-item > .drawing-item-delete:hover, .drawing-row-item > .drawing-item-delete:hover {\\n background: #F56C6C;\\n color: #fff;\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/views/bpm/form/formEditor.vue?./node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--9-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true&": +/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--9-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true& ***! + \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".tab-editor[data-v-753f0faf] {\\n position: absolute;\\n top: 33px;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n font-size: 14px;\\n}\\n.left-editor[data-v-753f0faf] {\\n position: relative;\\n height: 100%;\\n background: #1e1e1e;\\n overflow: hidden;\\n}\\n.setting[data-v-753f0faf] {\\n position: absolute;\\n right: 15px;\\n top: 3px;\\n color: #a9f122;\\n font-size: 18px;\\n cursor: pointer;\\n z-index: 1;\\n}\\n.right-preview[data-v-753f0faf] {\\n height: 100%;\\n}\\n.right-preview .result-wrapper[data-v-753f0faf] {\\n height: calc(100vh - 33px);\\n width: 100%;\\n overflow: auto;\\n padding: 12px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.action-bar[data-v-753f0faf] {\\n height: 33px;\\n background: #f2fafb;\\n padding: 0 15px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.action-bar .bar-btn[data-v-753f0faf] {\\n display: inline-block;\\n padding: 0 6px;\\n line-height: 32px;\\n color: #8285f5;\\n cursor: pointer;\\n font-size: 14px;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n}\\n.action-bar .bar-btn i[data-v-753f0faf] {\\n font-size: 20px;\\n}\\n.action-bar .bar-btn[data-v-753f0faf]:hover {\\n color: #4348d4;\\n}\\n.action-bar .bar-btn + .bar-btn[data-v-753f0faf] {\\n margin-left: 8px;\\n}\\n.action-bar .delete-btn[data-v-753f0faf] {\\n color: #f56c6c;\\n}\\n.action-bar .delete-btn[data-v-753f0faf]:hover {\\n color: #ea0b30;\\n}\\n[data-v-753f0faf] .el-drawer__header {\\n display: none;\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/views/infra/build/FormDrawer.vue?./node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--9-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true&": +/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--9-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true& ***! + \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".icon-ul[data-v-7bbbfa18] {\\n margin: 0;\\n padding: 0;\\n font-size: 0;\\n}\\n.icon-ul li[data-v-7bbbfa18] {\\n list-style-type: none;\\n text-align: center;\\n font-size: 14px;\\n display: inline-block;\\n width: 16.66%;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n height: 108px;\\n padding: 15px 6px 6px 6px;\\n cursor: pointer;\\n overflow: hidden;\\n}\\n.icon-ul li[data-v-7bbbfa18]:hover {\\n background: #f2f2f2;\\n}\\n.icon-ul li.active-item[data-v-7bbbfa18] {\\n background: #e1f3fb;\\n color: #7a6df0;\\n}\\n.icon-ul li > i[data-v-7bbbfa18] {\\n font-size: 30px;\\n line-height: 50px;\\n}\\n.icon-dialog[data-v-7bbbfa18] .el-dialog {\\n border-radius: 8px;\\n margin-bottom: 0;\\n margin-top: 4vh !important;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n max-height: 92vh;\\n overflow: hidden;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.icon-dialog[data-v-7bbbfa18] .el-dialog .el-dialog__header {\\n padding-top: 14px;\\n}\\n.icon-dialog[data-v-7bbbfa18] .el-dialog .el-dialog__body {\\n margin: 0 20px 20px 20px;\\n padding: 0;\\n overflow: auto;\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/views/infra/build/IconsDialog.vue?./node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--9-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true&": +/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--9-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true& ***! + \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \"[data-v-349212d3] .el-drawer__header {\\n display: none;\\n}\\n.action-bar[data-v-349212d3] {\\n height: 33px;\\n background: #f2fafb;\\n padding: 0 15px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.action-bar .bar-btn[data-v-349212d3] {\\n display: inline-block;\\n padding: 0 6px;\\n line-height: 32px;\\n color: #8285f5;\\n cursor: pointer;\\n font-size: 14px;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n}\\n.action-bar .bar-btn i[data-v-349212d3] {\\n font-size: 20px;\\n}\\n.action-bar .bar-btn[data-v-349212d3]:hover {\\n color: #4348d4;\\n}\\n.action-bar .bar-btn + .bar-btn[data-v-349212d3] {\\n margin-left: 8px;\\n}\\n.action-bar .delete-btn[data-v-349212d3] {\\n color: #f56c6c;\\n}\\n.action-bar .delete-btn[data-v-349212d3]:hover {\\n color: #ea0b30;\\n}\\n.json-editor[data-v-349212d3] {\\n height: calc(100vh - 33px);\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/views/infra/build/JsonDrawer.vue?./node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--9-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true&": +/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--9-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true& ***! + \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".add-item[data-v-1416fb60] {\\n margin-top: 8px;\\n}\\n.url-item[data-v-1416fb60] {\\n margin-bottom: 12px;\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/views/infra/build/ResourceDialog.vue?./node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--9-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true&": +/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--9-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true& ***! + \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".right-board[data-v-77ba98a2] {\\n width: 350px;\\n position: absolute;\\n right: 0;\\n top: 0;\\n padding-top: 3px;\\n}\\n.right-board .field-box[data-v-77ba98a2] {\\n position: relative;\\n height: calc(100vh - 42px);\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n overflow: hidden;\\n}\\n.right-board .el-scrollbar[data-v-77ba98a2] {\\n height: 100%;\\n}\\n.select-item[data-v-77ba98a2] {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n border: 1px dashed #fff;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.select-item .close-btn[data-v-77ba98a2] {\\n cursor: pointer;\\n color: #f56c6c;\\n}\\n.select-item .el-input + .el-input[data-v-77ba98a2] {\\n margin-left: 4px;\\n}\\n.select-item + .select-item[data-v-77ba98a2] {\\n margin-top: 4px;\\n}\\n.select-item.sortable-chosen[data-v-77ba98a2] {\\n border: 1px dashed #409eff;\\n}\\n.select-line-icon[data-v-77ba98a2] {\\n line-height: 32px;\\n font-size: 22px;\\n padding: 0 4px;\\n color: #777;\\n}\\n.option-drag[data-v-77ba98a2] {\\n cursor: move;\\n}\\n.time-range .el-date-editor[data-v-77ba98a2] {\\n width: 227px;\\n}\\n.time-range[data-v-77ba98a2] .el-icon-time {\\n display: none;\\n}\\n.document-link[data-v-77ba98a2] {\\n position: absolute;\\n display: block;\\n width: 26px;\\n height: 26px;\\n top: 0;\\n left: 0;\\n cursor: pointer;\\n background: #409eff;\\n z-index: 1;\\n border-radius: 0 0 6px 0;\\n text-align: center;\\n line-height: 26px;\\n color: #fff;\\n font-size: 18px;\\n}\\n.node-label[data-v-77ba98a2] {\\n font-size: 14px;\\n}\\n.node-icon[data-v-77ba98a2] {\\n color: #bebfc3;\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/views/infra/build/RightPanel.vue?./node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--9-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/file-saver/dist/FileSaver.min.js": +/*!*******************************************************!*\ + !*** ./node_modules/file-saver/dist/FileSaver.min.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("/* WEBPACK VAR INJECTION */(function(global) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(a,b){if(true)!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (b),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));else {}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open(\"GET\",a),d.responseType=\"blob\",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error(\"could not download file\")},d.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open(\"\",\"_blank\"),g&&(g.document.title=g.document.body.innerText=\"downloading...\"),\"string\"==typeof b)return c(b,d,e);var h=\"application/octet-stream\"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&\"undefined\"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g, true&&(module.exports=g)});\n\n//# sourceMappingURL=FileSaver.min.js.map\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack:///./node_modules/file-saver/dist/FileSaver.min.js?"); + +/***/ }), + +/***/ "./node_modules/util/node_modules/inherits/inherits_browser.js": +/*!*********************************************************************!*\ + !*** ./node_modules/util/node_modules/inherits/inherits_browser.js ***! + \*********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n\n//# sourceURL=webpack:///./node_modules/util/node_modules/inherits/inherits_browser.js?"); + +/***/ }), + +/***/ "./node_modules/util/support/isBufferBrowser.js": +/*!******************************************************!*\ + !*** ./node_modules/util/support/isBufferBrowser.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}\n\n//# sourceURL=webpack:///./node_modules/util/support/isBufferBrowser.js?"); + +/***/ }), + +/***/ "./node_modules/util/util.js": +/*!***********************************!*\ + !*** ./node_modules/util/util.js ***! + \***********************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("/* WEBPACK VAR INJECTION */(function(process) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = Object({\"NODE_ENV\":\"development\",\"VUE_APP_TITLE\":\"芋道管理系统\",\"VUE_APP_BASE_API\":\"http://127.0.0.1:48080\",\"VUE_APP_APP_NAME\":\"/admin-ui/\",\"VUE_APP_TENANT_ENABLE\":\"true\",\"VUE_APP_CAPTCHA_ENABLE\":\"true\",\"VUE_APP_DOC_ENABLE\":\"true\",\"VUE_APP_BAIDU_CODE\":\"fadc1bd5db1a1d6f581df60a1807f8ab\",\"BASE_URL\":\"/admin-ui/\"}).NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = __webpack_require__(/*! ./support/isBuffer */ \"./node_modules/util/support/isBufferBrowser.js\");\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = __webpack_require__(/*! inherits */ \"./node_modules/util/node_modules/inherits/inherits_browser.js\");\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb, null, ret) },\n function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../node-libs-browser/mock/process.js */ \"./node_modules/node-libs-browser/mock/process.js\")))\n\n//# sourceURL=webpack:///./node_modules/util/util.js?"); + +/***/ }), + +/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/form/formEditor.vue?vue&type=style&index=0&id=3df0b122&lang=scss&": +/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/vue-style-loader??ref--9-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--9-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/bpm/form/formEditor.vue?vue&type=style&index=0&id=3df0b122&lang=scss& ***! + \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// style-loader: Adds some css to the DOM by adding a \");\n}\nfunction buildFormTemplate(scheme, child, type) {\n var labelPosition = '';\n if (scheme.labelPosition !== 'right') {\n labelPosition = \"label-position=\\\"\".concat(scheme.labelPosition, \"\\\"\");\n }\n var disabled = scheme.disabled ? \":disabled=\\\"\".concat(scheme.disabled, \"\\\"\") : '';\n var str = \"\\n \").concat(child, \"\\n \").concat(buildFromBtns(scheme, type), \"\\n \");\n if (someSpanIsNot24) {\n str = \"\\n \").concat(str, \"\\n \");\n }\n return str;\n}\nfunction buildFromBtns(scheme, type) {\n var str = '';\n if (scheme.formBtns && type === 'file') {\n str = \"\\n \\u63D0\\u4EA4\\n \\u91CD\\u7F6E\\n \";\n if (someSpanIsNot24) {\n str = \"\\n \".concat(str, \"\\n \");\n }\n }\n return str;\n}\n\n// span不为24的用el-col包裹\nfunction colWrapper(scheme, str) {\n if (someSpanIsNot24 || scheme.__config__.span !== 24) {\n return \"\\n \").concat(str, \"\\n \");\n }\n return str;\n}\nvar layouts = {\n colFormItem: function colFormItem(scheme) {\n var config = scheme.__config__;\n var labelWidth = '';\n var label = \"label=\\\"\".concat(config.label, \"\\\"\");\n if (config.labelWidth && config.labelWidth !== confGlobal.labelWidth) {\n labelWidth = \"label-width=\\\"\".concat(config.labelWidth, \"px\\\"\");\n }\n if (config.showLabel === false) {\n labelWidth = 'label-width=\"0\"';\n label = '';\n }\n var required = !_ruleTrigger.default[config.tag] && config.required ? 'required' : '';\n var tagDom = tags[config.tag] ? tags[config.tag](scheme) : null;\n var str = \"\\n \").concat(tagDom, \"\\n \");\n str = colWrapper(scheme, str);\n return str;\n },\n rowFormItem: function rowFormItem(scheme) {\n var config = scheme.__config__;\n var type = scheme.type === 'default' ? '' : \"type=\\\"\".concat(scheme.type, \"\\\"\");\n var justify = scheme.type === 'default' ? '' : \"justify=\\\"\".concat(scheme.justify, \"\\\"\");\n var align = scheme.type === 'default' ? '' : \"align=\\\"\".concat(scheme.align, \"\\\"\");\n var gutter = scheme.gutter ? \":gutter=\\\"\".concat(scheme.gutter, \"\\\"\") : '';\n var children = config.children.map(function (el) {\n return layouts[el.__config__.layout](el);\n });\n var str = \"\\n \").concat(children.join('\\n'), \"\\n \");\n str = colWrapper(scheme, str);\n return str;\n }\n};\nvar tags = {\n 'el-button': function elButton(el) {\n var _attrBuilder = attrBuilder(el),\n tag = _attrBuilder.tag,\n disabled = _attrBuilder.disabled;\n var type = el.type ? \"type=\\\"\".concat(el.type, \"\\\"\") : '';\n var icon = el.icon ? \"icon=\\\"\".concat(el.icon, \"\\\"\") : '';\n var round = el.round ? 'round' : '';\n var size = el.size ? \"size=\\\"\".concat(el.size, \"\\\"\") : '';\n var plain = el.plain ? 'plain' : '';\n var circle = el.circle ? 'circle' : '';\n var child = buildElButtonChild(el);\n if (child) child = \"\\n\".concat(child, \"\\n\"); // 换行\n return \"<\".concat(tag, \" \").concat(type, \" \").concat(icon, \" \").concat(round, \" \").concat(size, \" \").concat(plain, \" \").concat(disabled, \" \").concat(circle, \">\").concat(child, \"\");\n },\n 'el-input': function elInput(el) {\n var _attrBuilder2 = attrBuilder(el),\n tag = _attrBuilder2.tag,\n disabled = _attrBuilder2.disabled,\n vModel = _attrBuilder2.vModel,\n clearable = _attrBuilder2.clearable,\n placeholder = _attrBuilder2.placeholder,\n width = _attrBuilder2.width;\n var maxlength = el.maxlength ? \":maxlength=\\\"\".concat(el.maxlength, \"\\\"\") : '';\n var showWordLimit = el['show-word-limit'] ? 'show-word-limit' : '';\n var readonly = el.readonly ? 'readonly' : '';\n var prefixIcon = el['prefix-icon'] ? \"prefix-icon='\".concat(el['prefix-icon'], \"'\") : '';\n var suffixIcon = el['suffix-icon'] ? \"suffix-icon='\".concat(el['suffix-icon'], \"'\") : '';\n var showPassword = el['show-password'] ? 'show-password' : '';\n var type = el.type ? \"type=\\\"\".concat(el.type, \"\\\"\") : '';\n var autosize = el.autosize && el.autosize.minRows ? \":autosize=\\\"{minRows: \".concat(el.autosize.minRows, \", maxRows: \").concat(el.autosize.maxRows, \"}\\\"\") : '';\n var child = buildElInputChild(el);\n if (child) child = \"\\n\".concat(child, \"\\n\"); // 换行\n return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(type, \" \").concat(placeholder, \" \").concat(maxlength, \" \").concat(showWordLimit, \" \").concat(readonly, \" \").concat(disabled, \" \").concat(clearable, \" \").concat(prefixIcon, \" \").concat(suffixIcon, \" \").concat(showPassword, \" \").concat(autosize, \" \").concat(width, \">\").concat(child, \"\");\n },\n 'el-input-number': function elInputNumber(el) {\n var _attrBuilder3 = attrBuilder(el),\n tag = _attrBuilder3.tag,\n disabled = _attrBuilder3.disabled,\n vModel = _attrBuilder3.vModel,\n placeholder = _attrBuilder3.placeholder;\n var controlsPosition = el['controls-position'] ? \"controls-position=\".concat(el['controls-position']) : '';\n var min = el.min ? \":min='\".concat(el.min, \"'\") : '';\n var max = el.max ? \":max='\".concat(el.max, \"'\") : '';\n var step = el.step ? \":step='\".concat(el.step, \"'\") : '';\n var stepStrictly = el['step-strictly'] ? 'step-strictly' : '';\n var precision = el.precision ? \":precision='\".concat(el.precision, \"'\") : '';\n return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(placeholder, \" \").concat(step, \" \").concat(stepStrictly, \" \").concat(precision, \" \").concat(controlsPosition, \" \").concat(min, \" \").concat(max, \" \").concat(disabled, \">\");\n },\n 'el-select': function elSelect(el) {\n var _attrBuilder4 = attrBuilder(el),\n tag = _attrBuilder4.tag,\n disabled = _attrBuilder4.disabled,\n vModel = _attrBuilder4.vModel,\n clearable = _attrBuilder4.clearable,\n placeholder = _attrBuilder4.placeholder,\n width = _attrBuilder4.width;\n var filterable = el.filterable ? 'filterable' : '';\n var multiple = el.multiple ? 'multiple' : '';\n var child = buildElSelectChild(el);\n if (child) child = \"\\n\".concat(child, \"\\n\"); // 换行\n return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(placeholder, \" \").concat(disabled, \" \").concat(multiple, \" \").concat(filterable, \" \").concat(clearable, \" \").concat(width, \">\").concat(child, \"\");\n },\n 'el-radio-group': function elRadioGroup(el) {\n var _attrBuilder5 = attrBuilder(el),\n tag = _attrBuilder5.tag,\n disabled = _attrBuilder5.disabled,\n vModel = _attrBuilder5.vModel;\n var size = \"size=\\\"\".concat(el.size, \"\\\"\");\n var child = buildElRadioGroupChild(el);\n if (child) child = \"\\n\".concat(child, \"\\n\"); // 换行\n return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(size, \" \").concat(disabled, \">\").concat(child, \"\");\n },\n 'el-checkbox-group': function elCheckboxGroup(el) {\n var _attrBuilder6 = attrBuilder(el),\n tag = _attrBuilder6.tag,\n disabled = _attrBuilder6.disabled,\n vModel = _attrBuilder6.vModel;\n var size = \"size=\\\"\".concat(el.size, \"\\\"\");\n var min = el.min ? \":min=\\\"\".concat(el.min, \"\\\"\") : '';\n var max = el.max ? \":max=\\\"\".concat(el.max, \"\\\"\") : '';\n var child = buildElCheckboxGroupChild(el);\n if (child) child = \"\\n\".concat(child, \"\\n\"); // 换行\n return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(min, \" \").concat(max, \" \").concat(size, \" \").concat(disabled, \">\").concat(child, \"\");\n },\n 'el-switch': function elSwitch(el) {\n var _attrBuilder7 = attrBuilder(el),\n tag = _attrBuilder7.tag,\n disabled = _attrBuilder7.disabled,\n vModel = _attrBuilder7.vModel;\n var activeText = el['active-text'] ? \"active-text=\\\"\".concat(el['active-text'], \"\\\"\") : '';\n var inactiveText = el['inactive-text'] ? \"inactive-text=\\\"\".concat(el['inactive-text'], \"\\\"\") : '';\n var activeColor = el['active-color'] ? \"active-color=\\\"\".concat(el['active-color'], \"\\\"\") : '';\n var inactiveColor = el['inactive-color'] ? \"inactive-color=\\\"\".concat(el['inactive-color'], \"\\\"\") : '';\n var activeValue = el['active-value'] !== true ? \":active-value='\".concat(JSON.stringify(el['active-value']), \"'\") : '';\n var inactiveValue = el['inactive-value'] !== false ? \":inactive-value='\".concat(JSON.stringify(el['inactive-value']), \"'\") : '';\n return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(activeText, \" \").concat(inactiveText, \" \").concat(activeColor, \" \").concat(inactiveColor, \" \").concat(activeValue, \" \").concat(inactiveValue, \" \").concat(disabled, \">\");\n },\n 'el-cascader': function elCascader(el) {\n var _attrBuilder8 = attrBuilder(el),\n tag = _attrBuilder8.tag,\n disabled = _attrBuilder8.disabled,\n vModel = _attrBuilder8.vModel,\n clearable = _attrBuilder8.clearable,\n placeholder = _attrBuilder8.placeholder,\n width = _attrBuilder8.width;\n var options = el.options ? \":options=\\\"\".concat(el.__vModel__, \"Options\\\"\") : '';\n var props = el.props ? \":props=\\\"\".concat(el.__vModel__, \"Props\\\"\") : '';\n var showAllLevels = el['show-all-levels'] ? '' : ':show-all-levels=\"false\"';\n var filterable = el.filterable ? 'filterable' : '';\n var separator = el.separator === '/' ? '' : \"separator=\\\"\".concat(el.separator, \"\\\"\");\n return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(options, \" \").concat(props, \" \").concat(width, \" \").concat(showAllLevels, \" \").concat(placeholder, \" \").concat(separator, \" \").concat(filterable, \" \").concat(clearable, \" \").concat(disabled, \">\");\n },\n 'el-slider': function elSlider(el) {\n var _attrBuilder9 = attrBuilder(el),\n tag = _attrBuilder9.tag,\n disabled = _attrBuilder9.disabled,\n vModel = _attrBuilder9.vModel;\n var min = el.min ? \":min='\".concat(el.min, \"'\") : '';\n var max = el.max ? \":max='\".concat(el.max, \"'\") : '';\n var step = el.step ? \":step='\".concat(el.step, \"'\") : '';\n var range = el.range ? 'range' : '';\n var showStops = el['show-stops'] ? \":show-stops=\\\"\".concat(el['show-stops'], \"\\\"\") : '';\n return \"<\".concat(tag, \" \").concat(min, \" \").concat(max, \" \").concat(step, \" \").concat(vModel, \" \").concat(range, \" \").concat(showStops, \" \").concat(disabled, \">\");\n },\n 'el-time-picker': function elTimePicker(el) {\n var _attrBuilder10 = attrBuilder(el),\n tag = _attrBuilder10.tag,\n disabled = _attrBuilder10.disabled,\n vModel = _attrBuilder10.vModel,\n clearable = _attrBuilder10.clearable,\n placeholder = _attrBuilder10.placeholder,\n width = _attrBuilder10.width;\n var startPlaceholder = el['start-placeholder'] ? \"start-placeholder=\\\"\".concat(el['start-placeholder'], \"\\\"\") : '';\n var endPlaceholder = el['end-placeholder'] ? \"end-placeholder=\\\"\".concat(el['end-placeholder'], \"\\\"\") : '';\n var rangeSeparator = el['range-separator'] ? \"range-separator=\\\"\".concat(el['range-separator'], \"\\\"\") : '';\n var isRange = el['is-range'] ? 'is-range' : '';\n var format = el.format ? \"format=\\\"\".concat(el.format, \"\\\"\") : '';\n var valueFormat = el['value-format'] ? \"value-format=\\\"\".concat(el['value-format'], \"\\\"\") : '';\n var pickerOptions = el['picker-options'] ? \":picker-options='\".concat(JSON.stringify(el['picker-options']), \"'\") : '';\n return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(isRange, \" \").concat(format, \" \").concat(valueFormat, \" \").concat(pickerOptions, \" \").concat(width, \" \").concat(placeholder, \" \").concat(startPlaceholder, \" \").concat(endPlaceholder, \" \").concat(rangeSeparator, \" \").concat(clearable, \" \").concat(disabled, \">\");\n },\n 'el-date-picker': function elDatePicker(el) {\n var _attrBuilder11 = attrBuilder(el),\n tag = _attrBuilder11.tag,\n disabled = _attrBuilder11.disabled,\n vModel = _attrBuilder11.vModel,\n clearable = _attrBuilder11.clearable,\n placeholder = _attrBuilder11.placeholder,\n width = _attrBuilder11.width;\n var startPlaceholder = el['start-placeholder'] ? \"start-placeholder=\\\"\".concat(el['start-placeholder'], \"\\\"\") : '';\n var endPlaceholder = el['end-placeholder'] ? \"end-placeholder=\\\"\".concat(el['end-placeholder'], \"\\\"\") : '';\n var rangeSeparator = el['range-separator'] ? \"range-separator=\\\"\".concat(el['range-separator'], \"\\\"\") : '';\n var format = el.format ? \"format=\\\"\".concat(el.format, \"\\\"\") : '';\n var valueFormat = el['value-format'] ? \"value-format=\\\"\".concat(el['value-format'], \"\\\"\") : '';\n var type = el.type === 'date' ? '' : \"type=\\\"\".concat(el.type, \"\\\"\");\n var readonly = el.readonly ? 'readonly' : '';\n return \"<\".concat(tag, \" \").concat(type, \" \").concat(vModel, \" \").concat(format, \" \").concat(valueFormat, \" \").concat(width, \" \").concat(placeholder, \" \").concat(startPlaceholder, \" \").concat(endPlaceholder, \" \").concat(rangeSeparator, \" \").concat(clearable, \" \").concat(readonly, \" \").concat(disabled, \">\");\n },\n 'el-rate': function elRate(el) {\n var _attrBuilder12 = attrBuilder(el),\n tag = _attrBuilder12.tag,\n disabled = _attrBuilder12.disabled,\n vModel = _attrBuilder12.vModel;\n var max = el.max ? \":max='\".concat(el.max, \"'\") : '';\n var allowHalf = el['allow-half'] ? 'allow-half' : '';\n var showText = el['show-text'] ? 'show-text' : '';\n var showScore = el['show-score'] ? 'show-score' : '';\n return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(max, \" \").concat(allowHalf, \" \").concat(showText, \" \").concat(showScore, \" \").concat(disabled, \">\");\n },\n 'el-color-picker': function elColorPicker(el) {\n var _attrBuilder13 = attrBuilder(el),\n tag = _attrBuilder13.tag,\n disabled = _attrBuilder13.disabled,\n vModel = _attrBuilder13.vModel;\n var size = \"size=\\\"\".concat(el.size, \"\\\"\");\n var showAlpha = el['show-alpha'] ? 'show-alpha' : '';\n var colorFormat = el['color-format'] ? \"color-format=\\\"\".concat(el['color-format'], \"\\\"\") : '';\n return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(size, \" \").concat(showAlpha, \" \").concat(colorFormat, \" \").concat(disabled, \">\");\n },\n 'el-upload': function elUpload(el) {\n var tag = el.__config__.tag;\n var disabled = el.disabled ? ':disabled=\\'true\\'' : '';\n var action = el.action ? \":action=\\\"\".concat(el.__vModel__, \"Action\\\"\") : '';\n var multiple = el.multiple ? 'multiple' : '';\n var listType = el['list-type'] !== 'text' ? \"list-type=\\\"\".concat(el['list-type'], \"\\\"\") : '';\n var accept = el.accept ? \"accept=\\\"\".concat(el.accept, \"\\\"\") : '';\n var name = el.name !== 'file' ? \"name=\\\"\".concat(el.name, \"\\\"\") : '';\n var autoUpload = el['auto-upload'] === false ? ':auto-upload=\"false\"' : '';\n var beforeUpload = \":before-upload=\\\"\".concat(el.__vModel__, \"BeforeUpload\\\"\");\n var fileList = \":file-list=\\\"\".concat(el.__vModel__, \"fileList\\\"\");\n var ref = \"ref=\\\"\".concat(el.__vModel__, \"\\\"\");\n var child = buildElUploadChild(el);\n if (child) child = \"\\n\".concat(child, \"\\n\"); // 换行\n return \"<\".concat(tag, \" \").concat(ref, \" \").concat(fileList, \" \").concat(action, \" \").concat(autoUpload, \" \").concat(multiple, \" \").concat(beforeUpload, \" \").concat(listType, \" \").concat(accept, \" \").concat(name, \" \").concat(disabled, \">\").concat(child, \"\");\n },\n tinymce: function tinymce(el) {\n var _attrBuilder14 = attrBuilder(el),\n tag = _attrBuilder14.tag,\n vModel = _attrBuilder14.vModel,\n placeholder = _attrBuilder14.placeholder;\n var height = el.height ? \":height=\\\"\".concat(el.height, \"\\\"\") : '';\n var branding = el.branding ? \":branding=\\\"\".concat(el.branding, \"\\\"\") : '';\n return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(placeholder, \" \").concat(height, \" \").concat(branding, \">\");\n }\n};\nfunction attrBuilder(el) {\n return {\n tag: el.__config__.tag,\n vModel: \"v-model=\\\"\".concat(confGlobal.formModel, \".\").concat(el.__vModel__, \"\\\"\"),\n clearable: el.clearable ? 'clearable' : '',\n placeholder: el.placeholder ? \"placeholder=\\\"\".concat(el.placeholder, \"\\\"\") : '',\n width: el.style && el.style.width ? ':style=\"{width: \\'100%\\'}\"' : '',\n disabled: el.disabled ? ':disabled=\\'true\\'' : ''\n };\n}\n\n// el-buttin 子级\nfunction buildElButtonChild(scheme) {\n var children = [];\n var slot = scheme.__slot__ || {};\n if (slot.default) {\n children.push(slot.default);\n }\n return children.join('\\n');\n}\n\n// el-input 子级\nfunction buildElInputChild(scheme) {\n var children = [];\n var slot = scheme.__slot__;\n if (slot && slot.prepend) {\n children.push(\"\"));\n }\n if (slot && slot.append) {\n children.push(\"\"));\n }\n return children.join('\\n');\n}\n\n// el-select 子级\nfunction buildElSelectChild(scheme) {\n var children = [];\n var slot = scheme.__slot__;\n if (slot && slot.options && slot.options.length) {\n children.push(\"\"));\n }\n return children.join('\\n');\n}\n\n// el-radio-group 子级\nfunction buildElRadioGroupChild(scheme) {\n var children = [];\n var slot = scheme.__slot__;\n var config = scheme.__config__;\n if (slot && slot.options && slot.options.length) {\n var tag = config.optionType === 'button' ? 'el-radio-button' : 'el-radio';\n var border = config.border ? 'border' : '';\n children.push(\"<\".concat(tag, \" v-for=\\\"(item, index) in \").concat(scheme.__vModel__, \"Options\\\" :key=\\\"index\\\" :label=\\\"item.value\\\" :disabled=\\\"item.disabled\\\" \").concat(border, \">{{item.label}}\"));\n }\n return children.join('\\n');\n}\n\n// el-checkbox-group 子级\nfunction buildElCheckboxGroupChild(scheme) {\n var children = [];\n var slot = scheme.__slot__;\n var config = scheme.__config__;\n if (slot && slot.options && slot.options.length) {\n var tag = config.optionType === 'button' ? 'el-checkbox-button' : 'el-checkbox';\n var border = config.border ? 'border' : '';\n children.push(\"<\".concat(tag, \" v-for=\\\"(item, index) in \").concat(scheme.__vModel__, \"Options\\\" :key=\\\"index\\\" :label=\\\"item.value\\\" :disabled=\\\"item.disabled\\\" \").concat(border, \">{{item.label}}\"));\n }\n return children.join('\\n');\n}\n\n// el-upload 子级\nfunction buildElUploadChild(scheme) {\n var list = [];\n var config = scheme.__config__;\n if (scheme['list-type'] === 'picture-card') list.push('');else list.push(\"\".concat(config.buttonText, \"\"));\n if (config.showTip) list.push(\"
\\u53EA\\u80FD\\u4E0A\\u4F20\\u4E0D\\u8D85\\u8FC7 \".concat(config.fileSize).concat(config.sizeUnit, \" \\u7684\").concat(scheme.accept, \"\\u6587\\u4EF6
\"));\n return list.join('\\n');\n}\n\n/**\n * 组装html代码。【入口函数】\n * @param {Object} formConfig 整个表单配置\n * @param {String} type 生成类型,文件或弹窗等\n */\nfunction makeUpHtml(formConfig, type) {\n var htmlList = [];\n confGlobal = formConfig;\n // 判断布局是否都沾满了24个栅格,以备后续简化代码结构\n someSpanIsNot24 = formConfig.fields.some(function (item) {\n return item.__config__.span !== 24;\n });\n // 遍历渲染每个组件成html\n formConfig.fields.forEach(function (el) {\n htmlList.push(layouts[el.__config__.layout](el));\n });\n var htmlStr = htmlList.join('\\n');\n // 将组件代码放进form标签\n var temp = buildFormTemplate(formConfig, htmlStr, type);\n // dialog标签包裹代码\n if (type === 'dialog') {\n temp = dialogWrapper(temp);\n }\n confGlobal = null;\n return temp;\n}\n\n//# sourceURL=webpack:///./src/components/generator/html.js?"); + +/***/ }), + +/***/ "./src/components/generator/js.js": +/*!****************************************!*\ + !*** ./src/components/generator/js.js ***! + \****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.makeUpJs = makeUpJs;\n__webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");\n__webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");\n__webpack_require__(/*! core-js/modules/es.array.join.js */ \"./node_modules/core-js/modules/es.array.join.js\");\n__webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n__webpack_require__(/*! core-js/modules/es.array.concat.js */ \"./node_modules/core-js/modules/es.array.concat.js\");\n__webpack_require__(/*! core-js/modules/es.object.keys.js */ \"./node_modules/core-js/modules/es.object.keys.js\");\n__webpack_require__(/*! core-js/modules/es.json.stringify.js */ \"./node_modules/core-js/modules/es.json.stringify.js\");\nvar _util = __webpack_require__(/*! util */ \"./node_modules/util/util.js\");\nvar _utils = __webpack_require__(/*! @/utils */ \"./src/utils/index.js\");\nvar _ruleTrigger = _interopRequireDefault(__webpack_require__(/*! ./ruleTrigger */ \"./src/components/generator/ruleTrigger.js\"));\nvar units = {\n KB: '1024',\n MB: '1024 / 1024',\n GB: '1024 / 1024 / 1024'\n};\nvar confGlobal;\nvar inheritAttrs = {\n file: '',\n dialog: 'inheritAttrs: false,'\n};\n\n/**\n * 组装js 【入口函数】\n * @param {Object} formConfig 整个表单配置\n * @param {String} type 生成类型,文件或弹窗等\n */\nfunction makeUpJs(formConfig, type) {\n confGlobal = formConfig = (0, _utils.deepClone)(formConfig);\n var dataList = [];\n var ruleList = [];\n var optionsList = [];\n var propsList = [];\n var methodList = mixinMethod(type);\n var uploadVarList = [];\n var created = [];\n formConfig.fields.forEach(function (el) {\n buildAttributes(el, dataList, ruleList, optionsList, methodList, propsList, uploadVarList, created);\n });\n var script = buildexport(formConfig, type, dataList.join('\\n'), ruleList.join('\\n'), optionsList.join('\\n'), uploadVarList.join('\\n'), propsList.join('\\n'), methodList.join('\\n'), created.join('\\n'));\n confGlobal = null;\n return script;\n}\n\n// 构建组件属性\nfunction buildAttributes(scheme, dataList, ruleList, optionsList, methodList, propsList, uploadVarList, created) {\n var config = scheme.__config__;\n var slot = scheme.__slot__;\n buildData(scheme, dataList);\n buildRules(scheme, ruleList);\n\n // 特殊处理options属性\n if (scheme.options || slot && slot.options && slot.options.length) {\n buildOptions(scheme, optionsList);\n if (config.dataType === 'dynamic') {\n var model = \"\".concat(scheme.__vModel__, \"Options\");\n var options = (0, _utils.titleCase)(model);\n var methodName = \"get\".concat(options);\n buildOptionMethod(methodName, model, methodList, scheme);\n callInCreated(methodName, created);\n }\n }\n\n // 处理props\n if (scheme.props && scheme.props.props) {\n buildProps(scheme, propsList);\n }\n\n // 处理el-upload的action\n if (scheme.action && config.tag === 'el-upload') {\n uploadVarList.push(\"\".concat(scheme.__vModel__, \"Action: '\").concat(scheme.action, \"',\\n \").concat(scheme.__vModel__, \"fileList: [],\"));\n methodList.push(buildBeforeUpload(scheme));\n // 非自动上传时,生成手动上传的函数\n if (!scheme['auto-upload']) {\n methodList.push(buildSubmitUpload(scheme));\n }\n }\n\n // 构建子级组件属性\n if (config.children) {\n config.children.forEach(function (item) {\n buildAttributes(item, dataList, ruleList, optionsList, methodList, propsList, uploadVarList, created);\n });\n }\n}\n\n// 在Created调用函数\nfunction callInCreated(methodName, created) {\n created.push(\"this.\".concat(methodName, \"()\"));\n}\n\n// 混入处理函数\nfunction mixinMethod(type) {\n var list = [];\n var minxins = {\n file: confGlobal.formBtns ? {\n submitForm: \"submitForm() {\\n this.$refs['\".concat(confGlobal.formRef, \"'].validate(valid => {\\n if(!valid) return\\n // TODO \\u63D0\\u4EA4\\u8868\\u5355\\n })\\n },\"),\n resetForm: \"resetForm() {\\n this.$refs['\".concat(confGlobal.formRef, \"'].resetFields()\\n },\")\n } : null,\n dialog: {\n onOpen: 'onOpen() {},',\n onClose: \"onClose() {\\n this.$refs['\".concat(confGlobal.formRef, \"'].resetFields()\\n },\"),\n close: \"close() {\\n this.$emit('update:visible', false)\\n },\",\n handelConfirm: \"handelConfirm() {\\n this.$refs['\".concat(confGlobal.formRef, \"'].validate(valid => {\\n if(!valid) return\\n this.close()\\n })\\n },\")\n }\n };\n var methods = minxins[type];\n if (methods) {\n Object.keys(methods).forEach(function (key) {\n list.push(methods[key]);\n });\n }\n return list;\n}\n\n// 构建data\nfunction buildData(scheme, dataList) {\n var config = scheme.__config__;\n if (scheme.__vModel__ === undefined) return;\n var defaultValue = JSON.stringify(config.defaultValue);\n dataList.push(\"\".concat(scheme.__vModel__, \": \").concat(defaultValue, \",\"));\n}\n\n// 构建校验规则\nfunction buildRules(scheme, ruleList) {\n var config = scheme.__config__;\n if (scheme.__vModel__ === undefined) return;\n var rules = [];\n if (_ruleTrigger.default[config.tag]) {\n if (config.required) {\n var type = (0, _util.isArray)(config.defaultValue) ? 'type: \\'array\\',' : '';\n var message = (0, _util.isArray)(config.defaultValue) ? \"\\u8BF7\\u81F3\\u5C11\\u9009\\u62E9\\u4E00\\u4E2A\".concat(config.label) : scheme.placeholder;\n if (message === undefined) message = \"\".concat(config.label, \"\\u4E0D\\u80FD\\u4E3A\\u7A7A\");\n rules.push(\"{ required: true, \".concat(type, \" message: '\").concat(message, \"', trigger: '\").concat(_ruleTrigger.default[config.tag], \"' }\"));\n }\n if (config.regList && (0, _util.isArray)(config.regList)) {\n config.regList.forEach(function (item) {\n if (item.pattern) {\n rules.push(\"{ pattern: \".concat(eval(item.pattern), \", message: '\").concat(item.message, \"', trigger: '\").concat(_ruleTrigger.default[config.tag], \"' }\"));\n }\n });\n }\n ruleList.push(\"\".concat(scheme.__vModel__, \": [\").concat(rules.join(','), \"],\"));\n }\n}\n\n// 构建options\nfunction buildOptions(scheme, optionsList) {\n if (scheme.__vModel__ === undefined) return;\n // el-cascader直接有options属性,其他组件都是定义在slot中,所以有两处判断\n var options = scheme.options;\n if (!options) options = scheme.__slot__.options;\n if (scheme.__config__.dataType === 'dynamic') {\n options = [];\n }\n var str = \"\".concat(scheme.__vModel__, \"Options: \").concat(JSON.stringify(options), \",\");\n optionsList.push(str);\n}\nfunction buildProps(scheme, propsList) {\n var str = \"\".concat(scheme.__vModel__, \"Props: \").concat(JSON.stringify(scheme.props.props), \",\");\n propsList.push(str);\n}\n\n// el-upload的BeforeUpload\nfunction buildBeforeUpload(scheme) {\n var config = scheme.__config__;\n var unitNum = units[config.sizeUnit];\n var rightSizeCode = '';\n var acceptCode = '';\n var returnList = [];\n if (config.fileSize) {\n rightSizeCode = \"let isRightSize = file.size / \".concat(unitNum, \" < \").concat(config.fileSize, \"\\n if(!isRightSize){\\n this.$message.error('\\u6587\\u4EF6\\u5927\\u5C0F\\u8D85\\u8FC7 \").concat(config.fileSize).concat(config.sizeUnit, \"')\\n }\");\n returnList.push('isRightSize');\n }\n if (scheme.accept) {\n acceptCode = \"let isAccept = new RegExp('\".concat(scheme.accept, \"').test(file.type)\\n if(!isAccept){\\n this.$message.error('\\u5E94\\u8BE5\\u9009\\u62E9\").concat(scheme.accept, \"\\u7C7B\\u578B\\u7684\\u6587\\u4EF6')\\n }\");\n returnList.push('isAccept');\n }\n var str = \"\".concat(scheme.__vModel__, \"BeforeUpload(file) {\\n \").concat(rightSizeCode, \"\\n \").concat(acceptCode, \"\\n return \").concat(returnList.join('&&'), \"\\n },\");\n return returnList.length ? str : '';\n}\n\n// el-upload的submit\nfunction buildSubmitUpload(scheme) {\n var str = \"submitUpload() {\\n this.$refs['\".concat(scheme.__vModel__, \"'].submit()\\n },\");\n return str;\n}\nfunction buildOptionMethod(methodName, model, methodList, scheme) {\n var config = scheme.__config__;\n var str = \"\".concat(methodName, \"() {\\n // \\u6CE8\\u610F\\uFF1Athis.$axios\\u662F\\u901A\\u8FC7Vue.prototype.$axios = axios\\u6302\\u8F7D\\u4EA7\\u751F\\u7684\\n this.$axios({\\n method: '\").concat(config.method, \"',\\n url: '\").concat(config.url, \"'\\n }).then(resp => {\\n var { data } = resp\\n this.\").concat(model, \" = data.\").concat(config.dataPath, \"\\n })\\n },\");\n methodList.push(str);\n}\n\n// js整体拼接\nfunction buildexport(conf, type, data, rules, selectOptions, uploadVar, props, methods, created) {\n var str = \"\".concat(_utils.exportDefault, \"{\\n \").concat(inheritAttrs[type], \"\\n components: {},\\n props: [],\\n data () {\\n return {\\n \").concat(conf.formModel, \": {\\n \").concat(data, \"\\n },\\n \").concat(conf.formRules, \": {\\n \").concat(rules, \"\\n },\\n \").concat(uploadVar, \"\\n \").concat(selectOptions, \"\\n \").concat(props, \"\\n }\\n },\\n computed: {},\\n watch: {},\\n created () {\\n \").concat(created, \"\\n },\\n mounted () {},\\n methods: {\\n \").concat(methods, \"\\n }\\n}\");\n return str;\n}\n\n//# sourceURL=webpack:///./src/components/generator/js.js?"); + +/***/ }), + +/***/ "./src/components/generator/ruleTrigger.js": +/*!*************************************************!*\ + !*** ./src/components/generator/ruleTrigger.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n/**\n * 用于生成表单校验,指定正则规则的触发方式。\n * 未在此处声明无触发方式的组件将不生成rule!!\n */\nvar _default = {\n 'el-input': 'blur',\n 'el-input-number': 'blur',\n 'el-select': 'change',\n 'el-radio-group': 'change',\n 'el-checkbox-group': 'change',\n 'el-cascader': 'change',\n 'el-time-picker': 'change',\n 'el-date-picker': 'change',\n 'el-rate': 'change',\n tinymce: 'blur'\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/components/generator/ruleTrigger.js?"); + +/***/ }), + +/***/ "./src/utils/constants.js": /*!********************************!*\ - !*** ./src/api/system/user.js ***! + !*** ./src/utils/constants.js ***! \********************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.addUser = addUser;\nexports.changeUserStatus = changeUserStatus;\nexports.delUser = delUser;\nexports.exportUser = exportUser;\nexports.getUser = getUser;\nexports.getUserProfile = getUserProfile;\nexports.importTemplate = importTemplate;\nexports.listSimpleUsers = listSimpleUsers;\nexports.listUser = listUser;\nexports.resetUserPwd = resetUserPwd;\nexports.updateUser = updateUser;\nexports.updateUserProfile = updateUserProfile;\nexports.updateUserPwd = updateUserPwd;\nexports.uploadAvatar = uploadAvatar;\n\nvar _request = _interopRequireDefault(__webpack_require__(/*! @/utils/request */ \"./src/utils/request.js\"));\n\nvar _ruoyi = __webpack_require__(/*! @/utils/ruoyi */ \"./src/utils/ruoyi.js\");\n\n// 查询用户列表\nfunction listUser(query) {\n return (0, _request.default)({\n url: '/system/user/page',\n method: 'get',\n params: query\n });\n} // 获取用户精简信息列表\n\n\nfunction listSimpleUsers() {\n return (0, _request.default)({\n url: '/system/user/list-all-simple',\n method: 'get'\n });\n} // 查询用户详细\n\n\nfunction getUser(userId) {\n return (0, _request.default)({\n url: '/system/user/get?id=' + (0, _ruoyi.praseStrEmpty)(userId),\n method: 'get'\n });\n} // 新增用户\n\n\nfunction addUser(data) {\n return (0, _request.default)({\n url: '/system/user/create',\n method: 'post',\n data: data\n });\n} // 修改用户\n\n\nfunction updateUser(data) {\n return (0, _request.default)({\n url: '/system/user/update',\n method: 'put',\n data: data\n });\n} // 删除用户\n\n\nfunction delUser(userId) {\n return (0, _request.default)({\n url: '/system/user/delete?id=' + userId,\n method: 'delete'\n });\n} // 导出用户\n\n\nfunction exportUser(query) {\n return (0, _request.default)({\n url: '/system/user/export',\n method: 'get',\n params: query,\n responseType: 'blob'\n });\n} // 用户密码重置\n\n\nfunction resetUserPwd(id, password) {\n var data = {\n id: id,\n password: password\n };\n return (0, _request.default)({\n url: '/system/user/update-password',\n method: 'put',\n data: data\n });\n} // 用户状态修改\n\n\nfunction changeUserStatus(id, status) {\n var data = {\n id: id,\n status: status\n };\n return (0, _request.default)({\n url: '/system/user/update-status',\n method: 'put',\n data: data\n });\n} // 查询用户个人信息\n\n\nfunction getUserProfile() {\n return (0, _request.default)({\n url: '/system/user/profile/get',\n method: 'get'\n });\n} // 修改用户个人信息\n\n\nfunction updateUserProfile(data) {\n return (0, _request.default)({\n url: '/system/user/profile/update',\n method: 'put',\n data: data\n });\n} // 用户密码重置\n\n\nfunction updateUserPwd(oldPassword, newPassword) {\n var data = {\n oldPassword: oldPassword,\n newPassword: newPassword\n };\n return (0, _request.default)({\n url: '/system/user/profile/update-password',\n method: 'put',\n data: data\n });\n} // 用户头像上传\n\n\nfunction uploadAvatar(data) {\n return (0, _request.default)({\n url: '/system/user/profile/update-avatar',\n method: 'put',\n data: data\n });\n} // 下载用户导入模板\n\n\nfunction importTemplate() {\n return (0, _request.default)({\n url: '/system/user/get-import-template',\n method: 'get',\n responseType: 'blob'\n });\n}\n\n//# sourceURL=webpack:///./src/api/system/user.js?"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SystemUserSocialTypeEnum = exports.SystemRoleTypeEnum = exports.SystemMenuTypeEnum = exports.SystemDataScopeEnum = exports.PayType = exports.PayRefundStatusEnum = exports.PayOrderStatusEnum = exports.PayOrderRefundStatusEnum = exports.PayOrderNotifyStatusEnum = exports.PayChannelEnum = exports.InfraJobStatusEnum = exports.InfraCodegenTemplateTypeEnum = exports.InfraApiErrorLogProcessStatusEnum = exports.CommonStatusEnum = void 0;\n/**\n * Created by 芋道源码\n *\n * 枚举类\n */\n\n/**\n * 全局通用状态枚举\n */\nvar CommonStatusEnum = {\n ENABLE: 0,\n // 开启\n DISABLE: 1 // 禁用\n};\n\n/**\n * 菜单的类型枚举\n */\nexports.CommonStatusEnum = CommonStatusEnum;\nvar SystemMenuTypeEnum = {\n DIR: 1,\n // 目录\n MENU: 2,\n // 菜单\n BUTTON: 3 // 按钮\n};\n\n/**\n * 角色的类型枚举\n */\nexports.SystemMenuTypeEnum = SystemMenuTypeEnum;\nvar SystemRoleTypeEnum = {\n SYSTEM: 1,\n // 内置角色\n CUSTOM: 2 // 自定义角色\n};\n\n/**\n * 数据权限的范围枚举\n */\nexports.SystemRoleTypeEnum = SystemRoleTypeEnum;\nvar SystemDataScopeEnum = {\n ALL: 1,\n // 全部数据权限\n DEPT_CUSTOM: 2,\n // 指定部门数据权限\n DEPT_ONLY: 3,\n // 部门数据权限\n DEPT_AND_CHILD: 4,\n // 部门及以下数据权限\n DEPT_SELF: 5 // 仅本人数据权限\n};\n\n/**\n * 代码生成模板类型\n */\nexports.SystemDataScopeEnum = SystemDataScopeEnum;\nvar InfraCodegenTemplateTypeEnum = {\n CRUD: 1,\n // 基础 CRUD\n TREE: 2,\n // 树形 CRUD\n SUB: 3 // 主子表 CRUD\n};\n\n/**\n * 任务状态的枚举\n */\nexports.InfraCodegenTemplateTypeEnum = InfraCodegenTemplateTypeEnum;\nvar InfraJobStatusEnum = {\n INIT: 0,\n // 初始化中\n NORMAL: 1,\n // 运行中\n STOP: 2 // 暂停运行\n};\n\n/**\n * API 异常数据的处理状态\n */\nexports.InfraJobStatusEnum = InfraJobStatusEnum;\nvar InfraApiErrorLogProcessStatusEnum = {\n INIT: 0,\n // 未处理\n DONE: 1,\n // 已处理\n IGNORE: 2 // 已忽略\n};\n\n/**\n * 用户的社交平台的类型枚举\n */\nexports.InfraApiErrorLogProcessStatusEnum = InfraApiErrorLogProcessStatusEnum;\nvar SystemUserSocialTypeEnum = {\n DINGTALK: {\n title: \"钉钉\",\n type: 20,\n source: \"dingtalk\",\n img: \"https://s1.ax1x.com/2022/05/22/OzMDRs.png\"\n },\n WECHAT_ENTERPRISE: {\n title: \"企业微信\",\n type: 30,\n source: \"wechat_enterprise\",\n img: \"https://s1.ax1x.com/2022/05/22/OzMrzn.png\"\n }\n};\n\n/**\n * 支付渠道枚举\n */\nexports.SystemUserSocialTypeEnum = SystemUserSocialTypeEnum;\nvar PayChannelEnum = {\n WX_PUB: {\n \"code\": \"wx_pub\",\n \"name\": \"微信 JSAPI 支付\"\n },\n WX_LITE: {\n \"code\": \"wx_lite\",\n \"name\": \"微信小程序支付\"\n },\n WX_APP: {\n \"code\": \"wx_app\",\n \"name\": \"微信 APP 支付\"\n },\n ALIPAY_PC: {\n \"code\": \"alipay_pc\",\n \"name\": \"支付宝 PC 网站支付\"\n },\n ALIPAY_WAP: {\n \"code\": \"alipay_wap\",\n \"name\": \"支付宝 WAP 网站支付\"\n },\n ALIPAY_APP: {\n \"code\": \"alipay_app\",\n \"name\": \"支付宝 APP 支付\"\n },\n ALIPAY_QR: {\n \"code\": \"alipay_qr\",\n \"name\": \"支付宝扫码支付\"\n }\n};\n\n/**\n * 支付类型枚举\n */\nexports.PayChannelEnum = PayChannelEnum;\nvar PayType = {\n WECHAT: \"WECHAT\",\n ALIPAY: \"ALIPAY\"\n};\n\n/**\n * 支付订单状态枚举\n */\nexports.PayType = PayType;\nvar PayOrderStatusEnum = {\n WAITING: {\n status: 0,\n name: '未支付'\n },\n SUCCESS: {\n status: 10,\n name: '已支付'\n },\n CLOSED: {\n status: 20,\n name: '未支付'\n }\n};\n\n/**\n * 支付订单回调状态枚举\n */\nexports.PayOrderStatusEnum = PayOrderStatusEnum;\nvar PayOrderNotifyStatusEnum = {\n NO: {\n status: 0,\n name: '未通知'\n },\n SUCCESS: {\n status: 10,\n name: '通知成功'\n },\n FAILURE: {\n status: 20,\n name: '通知失败'\n }\n};\n\n/**\n * 支付订单退款状态枚举\n */\nexports.PayOrderNotifyStatusEnum = PayOrderNotifyStatusEnum;\nvar PayOrderRefundStatusEnum = {\n NO: {\n status: 0,\n name: '未退款'\n },\n SOME: {\n status: 10,\n name: '部分退款'\n },\n ALL: {\n status: 20,\n name: '全部退款'\n }\n};\n\n/**\n * 支付退款订单状态枚举\n */\nexports.PayOrderRefundStatusEnum = PayOrderRefundStatusEnum;\nvar PayRefundStatusEnum = {\n CREATE: {\n status: 0,\n name: '退款订单生成'\n },\n SUCCESS: {\n status: 1,\n name: '退款成功'\n },\n FAILURE: {\n status: 2,\n name: '退款失败'\n },\n PROCESSING_NOTIFY: {\n status: 3,\n name: '退款中,渠道通知结果'\n },\n PROCESSING_QUERY: {\n status: 4,\n name: '退款中,系统查询结果'\n },\n UNKNOWN_RETRY: {\n status: 5,\n name: '状态未知,请重试'\n },\n UNKNOWN_QUERY: {\n status: 6,\n name: '状态未知,系统查询结果'\n },\n CLOSE: {\n status: 99,\n name: '退款关闭'\n }\n};\nexports.PayRefundStatusEnum = PayRefundStatusEnum;\n\n//# sourceURL=webpack:///./src/utils/constants.js?"); /***/ }), -/***/ "./src/views/system/user/profile/index.vue": -/*!*************************************************!*\ - !*** ./src/views/system/user/profile/index.vue ***! - \*************************************************/ +/***/ "./src/utils/db.js": +/*!*************************!*\ + !*** ./src/utils/db.js ***! + \*************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getDrawingList = getDrawingList;\nexports.getFormConf = getFormConf;\nexports.getIdGlobal = getIdGlobal;\nexports.getTreeNodeId = getTreeNodeId;\nexports.saveDrawingList = saveDrawingList;\nexports.saveFormConf = saveFormConf;\nexports.saveIdGlobal = saveIdGlobal;\nexports.saveTreeNodeId = saveTreeNodeId;\n__webpack_require__(/*! core-js/modules/es.json.stringify.js */ \"./node_modules/core-js/modules/es.json.stringify.js\");\nvar DRAWING_ITEMS = 'drawingItems';\nvar DRAWING_ITEMS_VERSION = '1.2';\nvar DRAWING_ITEMS_VERSION_KEY = 'DRAWING_ITEMS_VERSION';\nvar DRAWING_ID = 'idGlobal';\nvar TREE_NODE_ID = 'treeNodeId';\nvar FORM_CONF = 'formConf';\nfunction getDrawingList() {\n // 加入缓存版本的概念,保证缓存数据与程序匹配\n var version = localStorage.getItem(DRAWING_ITEMS_VERSION_KEY);\n if (version !== DRAWING_ITEMS_VERSION) {\n localStorage.setItem(DRAWING_ITEMS_VERSION_KEY, DRAWING_ITEMS_VERSION);\n saveDrawingList([]);\n return null;\n }\n var str = localStorage.getItem(DRAWING_ITEMS);\n if (str) return JSON.parse(str);\n return null;\n}\nfunction saveDrawingList(list) {\n localStorage.setItem(DRAWING_ITEMS, JSON.stringify(list));\n}\nfunction getIdGlobal() {\n var str = localStorage.getItem(DRAWING_ID);\n if (str) return parseInt(str, 10);\n return 100;\n}\nfunction saveIdGlobal(id) {\n localStorage.setItem(DRAWING_ID, \"\".concat(id));\n}\nfunction getTreeNodeId() {\n var str = localStorage.getItem(TREE_NODE_ID);\n if (str) return parseInt(str, 10);\n return 100;\n}\nfunction saveTreeNodeId(id) {\n localStorage.setItem(TREE_NODE_ID, \"\".concat(id));\n}\nfunction getFormConf() {\n var str = localStorage.getItem(FORM_CONF);\n if (str) return JSON.parse(str);\n return null;\n}\nfunction saveFormConf(obj) {\n localStorage.setItem(FORM_CONF, JSON.stringify(obj));\n}\n\n//# sourceURL=webpack:///./src/utils/db.js?"); + +/***/ }), + +/***/ "./src/utils/icon.json": +/*!*****************************!*\ + !*** ./src/utils/icon.json ***! + \*****************************/ +/*! exports provided: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, default */ +/***/ (function(module) { + +eval("module.exports = JSON.parse(\"[\\\"platform-eleme\\\",\\\"eleme\\\",\\\"delete-solid\\\",\\\"delete\\\",\\\"s-tools\\\",\\\"setting\\\",\\\"user-solid\\\",\\\"user\\\",\\\"phone\\\",\\\"phone-outline\\\",\\\"more\\\",\\\"more-outline\\\",\\\"star-on\\\",\\\"star-off\\\",\\\"s-goods\\\",\\\"goods\\\",\\\"warning\\\",\\\"warning-outline\\\",\\\"question\\\",\\\"info\\\",\\\"remove\\\",\\\"circle-plus\\\",\\\"success\\\",\\\"error\\\",\\\"zoom-in\\\",\\\"zoom-out\\\",\\\"remove-outline\\\",\\\"circle-plus-outline\\\",\\\"circle-check\\\",\\\"circle-close\\\",\\\"s-help\\\",\\\"help\\\",\\\"minus\\\",\\\"plus\\\",\\\"check\\\",\\\"close\\\",\\\"picture\\\",\\\"picture-outline\\\",\\\"picture-outline-round\\\",\\\"upload\\\",\\\"upload2\\\",\\\"download\\\",\\\"camera-solid\\\",\\\"camera\\\",\\\"video-camera-solid\\\",\\\"video-camera\\\",\\\"message-solid\\\",\\\"bell\\\",\\\"s-cooperation\\\",\\\"s-order\\\",\\\"s-platform\\\",\\\"s-fold\\\",\\\"s-unfold\\\",\\\"s-operation\\\",\\\"s-promotion\\\",\\\"s-home\\\",\\\"s-release\\\",\\\"s-ticket\\\",\\\"s-management\\\",\\\"s-open\\\",\\\"s-shop\\\",\\\"s-marketing\\\",\\\"s-flag\\\",\\\"s-comment\\\",\\\"s-finance\\\",\\\"s-claim\\\",\\\"s-custom\\\",\\\"s-opportunity\\\",\\\"s-data\\\",\\\"s-check\\\",\\\"s-grid\\\",\\\"menu\\\",\\\"share\\\",\\\"d-caret\\\",\\\"caret-left\\\",\\\"caret-right\\\",\\\"caret-bottom\\\",\\\"caret-top\\\",\\\"bottom-left\\\",\\\"bottom-right\\\",\\\"back\\\",\\\"right\\\",\\\"bottom\\\",\\\"top\\\",\\\"top-left\\\",\\\"top-right\\\",\\\"arrow-left\\\",\\\"arrow-right\\\",\\\"arrow-down\\\",\\\"arrow-up\\\",\\\"d-arrow-left\\\",\\\"d-arrow-right\\\",\\\"video-pause\\\",\\\"video-play\\\",\\\"refresh\\\",\\\"refresh-right\\\",\\\"refresh-left\\\",\\\"finished\\\",\\\"sort\\\",\\\"sort-up\\\",\\\"sort-down\\\",\\\"rank\\\",\\\"loading\\\",\\\"view\\\",\\\"c-scale-to-original\\\",\\\"date\\\",\\\"edit\\\",\\\"edit-outline\\\",\\\"folder\\\",\\\"folder-opened\\\",\\\"folder-add\\\",\\\"folder-remove\\\",\\\"folder-delete\\\",\\\"folder-checked\\\",\\\"tickets\\\",\\\"document-remove\\\",\\\"document-delete\\\",\\\"document-copy\\\",\\\"document-checked\\\",\\\"document\\\",\\\"document-add\\\",\\\"printer\\\",\\\"paperclip\\\",\\\"takeaway-box\\\",\\\"search\\\",\\\"monitor\\\",\\\"attract\\\",\\\"mobile\\\",\\\"scissors\\\",\\\"umbrella\\\",\\\"headset\\\",\\\"brush\\\",\\\"mouse\\\",\\\"coordinate\\\",\\\"magic-stick\\\",\\\"reading\\\",\\\"data-line\\\",\\\"data-board\\\",\\\"pie-chart\\\",\\\"data-analysis\\\",\\\"collection-tag\\\",\\\"film\\\",\\\"suitcase\\\",\\\"suitcase-1\\\",\\\"receiving\\\",\\\"collection\\\",\\\"files\\\",\\\"notebook-1\\\",\\\"notebook-2\\\",\\\"toilet-paper\\\",\\\"office-building\\\",\\\"school\\\",\\\"table-lamp\\\",\\\"house\\\",\\\"no-smoking\\\",\\\"smoking\\\",\\\"shopping-cart-full\\\",\\\"shopping-cart-1\\\",\\\"shopping-cart-2\\\",\\\"shopping-bag-1\\\",\\\"shopping-bag-2\\\",\\\"sold-out\\\",\\\"sell\\\",\\\"present\\\",\\\"box\\\",\\\"bank-card\\\",\\\"money\\\",\\\"coin\\\",\\\"wallet\\\",\\\"discount\\\",\\\"price-tag\\\",\\\"news\\\",\\\"guide\\\",\\\"male\\\",\\\"female\\\",\\\"thumb\\\",\\\"cpu\\\",\\\"link\\\",\\\"connection\\\",\\\"open\\\",\\\"turn-off\\\",\\\"set-up\\\",\\\"chat-round\\\",\\\"chat-line-round\\\",\\\"chat-square\\\",\\\"chat-dot-round\\\",\\\"chat-dot-square\\\",\\\"chat-line-square\\\",\\\"message\\\",\\\"postcard\\\",\\\"position\\\",\\\"turn-off-microphone\\\",\\\"microphone\\\",\\\"close-notification\\\",\\\"bangzhu\\\",\\\"time\\\",\\\"odometer\\\",\\\"crop\\\",\\\"aim\\\",\\\"switch-button\\\",\\\"full-screen\\\",\\\"copy-document\\\",\\\"mic\\\",\\\"stopwatch\\\",\\\"medal-1\\\",\\\"medal\\\",\\\"trophy\\\",\\\"trophy-1\\\",\\\"first-aid-kit\\\",\\\"discover\\\",\\\"place\\\",\\\"location\\\",\\\"location-outline\\\",\\\"location-information\\\",\\\"add-location\\\",\\\"delete-location\\\",\\\"map-location\\\",\\\"alarm-clock\\\",\\\"timer\\\",\\\"watch-1\\\",\\\"watch\\\",\\\"lock\\\",\\\"unlock\\\",\\\"key\\\",\\\"service\\\",\\\"mobile-phone\\\",\\\"bicycle\\\",\\\"truck\\\",\\\"ship\\\",\\\"basketball\\\",\\\"football\\\",\\\"soccer\\\",\\\"baseball\\\",\\\"wind-power\\\",\\\"light-rain\\\",\\\"lightning\\\",\\\"heavy-rain\\\",\\\"sunrise\\\",\\\"sunrise-1\\\",\\\"sunset\\\",\\\"sunny\\\",\\\"cloudy\\\",\\\"partly-cloudy\\\",\\\"cloudy-and-sunny\\\",\\\"moon\\\",\\\"moon-night\\\",\\\"dish\\\",\\\"dish-1\\\",\\\"food\\\",\\\"chicken\\\",\\\"fork-spoon\\\",\\\"knife-fork\\\",\\\"burger\\\",\\\"tableware\\\",\\\"sugar\\\",\\\"dessert\\\",\\\"ice-cream\\\",\\\"hot-water\\\",\\\"water-cup\\\",\\\"coffee-cup\\\",\\\"cold-drink\\\",\\\"goblet\\\",\\\"goblet-full\\\",\\\"goblet-square\\\",\\\"goblet-square-full\\\",\\\"refrigerator\\\",\\\"grape\\\",\\\"watermelon\\\",\\\"cherry\\\",\\\"apple\\\",\\\"pear\\\",\\\"orange\\\",\\\"coffee\\\",\\\"ice-tea\\\",\\\"ice-drink\\\",\\\"milk-tea\\\",\\\"potato-strips\\\",\\\"lollipop\\\",\\\"ice-cream-square\\\",\\\"ice-cream-round\\\"]\");\n\n//# sourceURL=webpack:///./src/utils/icon.json?"); + +/***/ }), + +/***/ "./src/utils/loadBeautifier.js": +/*!*************************************!*\ + !*** ./src/utils/loadBeautifier.js ***! + \*************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = loadBeautifier;\nvar _loadScript = _interopRequireDefault(__webpack_require__(/*! ./loadScript */ \"./src/utils/loadScript.js\"));\nvar _elementUi = _interopRequireDefault(__webpack_require__(/*! element-ui */ \"./node_modules/element-ui/lib/element-ui.common.js\"));\nvar _pluginsConfig = _interopRequireDefault(__webpack_require__(/*! ./pluginsConfig */ \"./src/utils/pluginsConfig.js\"));\nvar beautifierObj;\nfunction loadBeautifier(cb) {\n var beautifierUrl = _pluginsConfig.default.beautifierUrl;\n if (beautifierObj) {\n cb(beautifierObj);\n return;\n }\n var loading = _elementUi.default.Loading.service({\n fullscreen: true,\n lock: true,\n text: '格式化资源加载中...',\n spinner: 'el-icon-loading',\n background: 'rgba(255, 255, 255, 0.5)'\n });\n (0, _loadScript.default)(beautifierUrl, function () {\n loading.close();\n // eslint-disable-next-line no-undef\n beautifierObj = beautifier;\n cb(beautifierObj);\n });\n}\n\n//# sourceURL=webpack:///./src/utils/loadBeautifier.js?"); + +/***/ }), + +/***/ "./src/utils/loadMonaco.js": +/*!*********************************!*\ + !*** ./src/utils/loadMonaco.js ***! + \*********************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = loadMonaco;\nvar _loadScript = _interopRequireDefault(__webpack_require__(/*! ./loadScript */ \"./src/utils/loadScript.js\"));\nvar _elementUi = _interopRequireDefault(__webpack_require__(/*! element-ui */ \"./node_modules/element-ui/lib/element-ui.common.js\"));\nvar _pluginsConfig = _interopRequireDefault(__webpack_require__(/*! ./pluginsConfig */ \"./src/utils/pluginsConfig.js\"));\n// monaco-editor单例\nvar monacoEidtor;\n\n/**\n * 动态加载monaco-editor cdn资源\n * @param {Function} cb 回调,必填\n */\nfunction loadMonaco(cb) {\n if (monacoEidtor) {\n cb(monacoEidtor);\n return;\n }\n var vs = _pluginsConfig.default.monacoEditorUrl;\n\n // 使用element ui实现加载提示\n var loading = _elementUi.default.Loading.service({\n fullscreen: true,\n lock: true,\n text: '编辑器资源初始化中...',\n spinner: 'el-icon-loading',\n background: 'rgba(255, 255, 255, 0.5)'\n });\n !window.require && (window.require = {});\n !window.require.paths && (window.require.paths = {});\n window.require.paths.vs = vs;\n (0, _loadScript.default)(\"\".concat(vs, \"/loader.js\"), function () {\n window.require(['vs/editor/editor.main'], function () {\n loading.close();\n monacoEidtor = window.monaco;\n cb(monacoEidtor);\n });\n });\n}\n\n//# sourceURL=webpack:///./src/utils/loadMonaco.js?"); + +/***/ }), + +/***/ "./src/views/bpm/form/formEditor.vue": +/*!*******************************************!*\ + !*** ./src/views/bpm/form/formEditor.vue ***! + \*******************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index_vue_vue_type_template_id_03488e44___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.vue?vue&type=template&id=03488e44& */ \"./src/views/system/user/profile/index.vue?vue&type=template&id=03488e44&\");\n/* harmony import */ var _index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.vue?vue&type=script&lang=js& */ \"./src/views/system/user/profile/index.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _index_vue_vue_type_template_id_03488e44___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _index_vue_vue_type_template_id_03488e44___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/system/user/profile/index.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/system/user/profile/index.vue?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _formEditor_vue_vue_type_template_id_3df0b122___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formEditor.vue?vue&type=template&id=3df0b122& */ \"./src/views/bpm/form/formEditor.vue?vue&type=template&id=3df0b122&\");\n/* harmony import */ var _formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formEditor.vue?vue&type=script&lang=js& */ \"./src/views/bpm/form/formEditor.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _formEditor_vue_vue_type_style_index_0_id_3df0b122_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formEditor.vue?vue&type=style&index=0&id=3df0b122&lang=scss& */ \"./src/views/bpm/form/formEditor.vue?vue&type=style&index=0&id=3df0b122&lang=scss&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _formEditor_vue_vue_type_template_id_3df0b122___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _formEditor_vue_vue_type_template_id_3df0b122___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/bpm/form/formEditor.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/bpm/form/formEditor.vue?"); /***/ }), -/***/ "./src/views/system/user/profile/index.vue?vue&type=script&lang=js&": +/***/ "./src/views/bpm/form/formEditor.vue?vue&type=script&lang=js&": +/*!********************************************************************!*\ + !*** ./src/views/bpm/form/formEditor.vue?vue&type=script&lang=js& ***! + \********************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./formEditor.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/form/formEditor.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/bpm/form/formEditor.vue?"); + +/***/ }), + +/***/ "./src/views/bpm/form/formEditor.vue?vue&type=style&index=0&id=3df0b122&lang=scss&": +/*!*****************************************************************************************!*\ + !*** ./src/views/bpm/form/formEditor.vue?vue&type=style&index=0&id=3df0b122&lang=scss& ***! + \*****************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_style_index_0_id_3df0b122_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-style-loader??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./formEditor.vue?vue&type=style&index=0&id=3df0b122&lang=scss& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/form/formEditor.vue?vue&type=style&index=0&id=3df0b122&lang=scss&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_style_index_0_id_3df0b122_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_style_index_0_id_3df0b122_lang_scss___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_style_index_0_id_3df0b122_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_style_index_0_id_3df0b122_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/bpm/form/formEditor.vue?"); + +/***/ }), + +/***/ "./src/views/bpm/form/formEditor.vue?vue&type=template&id=3df0b122&": /*!**************************************************************************!*\ - !*** ./src/views/system/user/profile/index.vue?vue&type=script&lang=js& ***! + !*** ./src/views/bpm/form/formEditor.vue?vue&type=template&id=3df0b122& ***! \**************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/babel-loader/lib!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./index.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/index.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/system/user/profile/index.vue?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_template_id_3df0b122___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./formEditor.vue?vue&type=template&id=3df0b122& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"b76c6300-vue-loader-template\\\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/form/formEditor.vue?vue&type=template&id=3df0b122&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_template_id_3df0b122___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_template_id_3df0b122___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_template_id_3df0b122___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_template_id_3df0b122___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/bpm/form/formEditor.vue?"); /***/ }), -/***/ "./src/views/system/user/profile/index.vue?vue&type=template&id=03488e44&": -/*!********************************************************************************!*\ - !*** ./src/views/system/user/profile/index.vue?vue&type=template&id=03488e44& ***! - \********************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_03488e44___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./index.vue?vue&type=template&id=03488e44& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/index.vue?vue&type=template&id=03488e44&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_03488e44___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_03488e44___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/system/user/profile/index.vue?"); - -/***/ }), - -/***/ "./src/views/system/user/profile/resetPwd.vue": -/*!****************************************************!*\ - !*** ./src/views/system/user/profile/resetPwd.vue ***! - \****************************************************/ +/***/ "./src/views/infra/build/CodeTypeDialog.vue": +/*!**************************************************!*\ + !*** ./src/views/infra/build/CodeTypeDialog.vue ***! + \**************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _resetPwd_vue_vue_type_template_id_95e4cfdc___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./resetPwd.vue?vue&type=template&id=95e4cfdc& */ \"./src/views/system/user/profile/resetPwd.vue?vue&type=template&id=95e4cfdc&\");\n/* harmony import */ var _resetPwd_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./resetPwd.vue?vue&type=script&lang=js& */ \"./src/views/system/user/profile/resetPwd.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _resetPwd_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _resetPwd_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _resetPwd_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _resetPwd_vue_vue_type_template_id_95e4cfdc___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _resetPwd_vue_vue_type_template_id_95e4cfdc___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/system/user/profile/resetPwd.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/system/user/profile/resetPwd.vue?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _CodeTypeDialog_vue_vue_type_template_id_ac1f446e_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CodeTypeDialog.vue?vue&type=template&id=ac1f446e&scoped=true& */ \"./src/views/infra/build/CodeTypeDialog.vue?vue&type=template&id=ac1f446e&scoped=true&\");\n/* harmony import */ var _CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CodeTypeDialog.vue?vue&type=script&lang=js& */ \"./src/views/infra/build/CodeTypeDialog.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _CodeTypeDialog_vue_vue_type_template_id_ac1f446e_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _CodeTypeDialog_vue_vue_type_template_id_ac1f446e_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"ac1f446e\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/infra/build/CodeTypeDialog.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/infra/build/CodeTypeDialog.vue?"); /***/ }), -/***/ "./src/views/system/user/profile/resetPwd.vue?vue&type=script&lang=js&": -/*!*****************************************************************************!*\ - !*** ./src/views/system/user/profile/resetPwd.vue?vue&type=script&lang=js& ***! - \*****************************************************************************/ +/***/ "./src/views/infra/build/CodeTypeDialog.vue?vue&type=script&lang=js&": +/*!***************************************************************************!*\ + !*** ./src/views/infra/build/CodeTypeDialog.vue?vue&type=script&lang=js& ***! + \***************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_resetPwd_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/babel-loader/lib!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./resetPwd.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/resetPwd.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_resetPwd_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_resetPwd_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_resetPwd_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_resetPwd_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_resetPwd_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/system/user/profile/resetPwd.vue?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./CodeTypeDialog.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/CodeTypeDialog.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/infra/build/CodeTypeDialog.vue?"); /***/ }), -/***/ "./src/views/system/user/profile/resetPwd.vue?vue&type=template&id=95e4cfdc&": -/*!***********************************************************************************!*\ - !*** ./src/views/system/user/profile/resetPwd.vue?vue&type=template&id=95e4cfdc& ***! - \***********************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_resetPwd_vue_vue_type_template_id_95e4cfdc___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./resetPwd.vue?vue&type=template&id=95e4cfdc& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/resetPwd.vue?vue&type=template&id=95e4cfdc&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_resetPwd_vue_vue_type_template_id_95e4cfdc___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_resetPwd_vue_vue_type_template_id_95e4cfdc___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/system/user/profile/resetPwd.vue?"); - -/***/ }), - -/***/ "./src/views/system/user/profile/userAvatar.vue": -/*!******************************************************!*\ - !*** ./src/views/system/user/profile/userAvatar.vue ***! - \******************************************************/ +/***/ "./src/views/infra/build/CodeTypeDialog.vue?vue&type=template&id=ac1f446e&scoped=true&": +/*!*********************************************************************************************!*\ + !*** ./src/views/infra/build/CodeTypeDialog.vue?vue&type=template&id=ac1f446e&scoped=true& ***! + \*********************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _userAvatar_vue_vue_type_template_id_e81d90b0_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./userAvatar.vue?vue&type=template&id=e81d90b0&scoped=true& */ \"./src/views/system/user/profile/userAvatar.vue?vue&type=template&id=e81d90b0&scoped=true&\");\n/* harmony import */ var _userAvatar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./userAvatar.vue?vue&type=script&lang=js& */ \"./src/views/system/user/profile/userAvatar.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _userAvatar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _userAvatar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _userAvatar_vue_vue_type_style_index_0_id_e81d90b0_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./userAvatar.vue?vue&type=style&index=0&id=e81d90b0&scoped=true&lang=scss& */ \"./src/views/system/user/profile/userAvatar.vue?vue&type=style&index=0&id=e81d90b0&scoped=true&lang=scss&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _userAvatar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _userAvatar_vue_vue_type_template_id_e81d90b0_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _userAvatar_vue_vue_type_template_id_e81d90b0_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"e81d90b0\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/system/user/profile/userAvatar.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/system/user/profile/userAvatar.vue?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_template_id_ac1f446e_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./CodeTypeDialog.vue?vue&type=template&id=ac1f446e&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"b76c6300-vue-loader-template\\\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/CodeTypeDialog.vue?vue&type=template&id=ac1f446e&scoped=true&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_template_id_ac1f446e_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_template_id_ac1f446e_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_template_id_ac1f446e_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_template_id_ac1f446e_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/infra/build/CodeTypeDialog.vue?"); /***/ }), -/***/ "./src/views/system/user/profile/userAvatar.vue?vue&type=script&lang=js&": -/*!*******************************************************************************!*\ - !*** ./src/views/system/user/profile/userAvatar.vue?vue&type=script&lang=js& ***! - \*******************************************************************************/ +/***/ "./src/views/infra/build/DraggableItem.vue": +/*!*************************************************!*\ + !*** ./src/views/infra/build/DraggableItem.vue ***! + \*************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userAvatar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/babel-loader/lib!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./userAvatar.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/userAvatar.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userAvatar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userAvatar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userAvatar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userAvatar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userAvatar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/system/user/profile/userAvatar.vue?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./DraggableItem.vue?vue&type=script&lang=js& */ \"./src/views/infra/build/DraggableItem.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\nvar render, staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\n _DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/infra/build/DraggableItem.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/infra/build/DraggableItem.vue?"); /***/ }), -/***/ "./src/views/system/user/profile/userAvatar.vue?vue&type=style&index=0&id=e81d90b0&scoped=true&lang=scss&": -/*!****************************************************************************************************************!*\ - !*** ./src/views/system/user/profile/userAvatar.vue?vue&type=style&index=0&id=e81d90b0&scoped=true&lang=scss& ***! - \****************************************************************************************************************/ +/***/ "./src/views/infra/build/DraggableItem.vue?vue&type=script&lang=js&": +/*!**************************************************************************!*\ + !*** ./src/views/infra/build/DraggableItem.vue?vue&type=script&lang=js& ***! + \**************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userAvatar_vue_vue_type_style_index_0_id_e81d90b0_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../node_modules/vue-style-loader??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./userAvatar.vue?vue&type=style&index=0&id=e81d90b0&scoped=true&lang=scss& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/userAvatar.vue?vue&type=style&index=0&id=e81d90b0&scoped=true&lang=scss&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userAvatar_vue_vue_type_style_index_0_id_e81d90b0_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userAvatar_vue_vue_type_style_index_0_id_e81d90b0_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userAvatar_vue_vue_type_style_index_0_id_e81d90b0_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userAvatar_vue_vue_type_style_index_0_id_e81d90b0_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/system/user/profile/userAvatar.vue?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./DraggableItem.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/DraggableItem.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/infra/build/DraggableItem.vue?"); /***/ }), -/***/ "./src/views/system/user/profile/userAvatar.vue?vue&type=template&id=e81d90b0&scoped=true&": -/*!*************************************************************************************************!*\ - !*** ./src/views/system/user/profile/userAvatar.vue?vue&type=template&id=e81d90b0&scoped=true& ***! - \*************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userAvatar_vue_vue_type_template_id_e81d90b0_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./userAvatar.vue?vue&type=template&id=e81d90b0&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/userAvatar.vue?vue&type=template&id=e81d90b0&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userAvatar_vue_vue_type_template_id_e81d90b0_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userAvatar_vue_vue_type_template_id_e81d90b0_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/system/user/profile/userAvatar.vue?"); - -/***/ }), - -/***/ "./src/views/system/user/profile/userInfo.vue": -/*!****************************************************!*\ - !*** ./src/views/system/user/profile/userInfo.vue ***! - \****************************************************/ +/***/ "./src/views/infra/build/FormDrawer.vue": +/*!**********************************************!*\ + !*** ./src/views/infra/build/FormDrawer.vue ***! + \**********************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _userInfo_vue_vue_type_template_id_804a6b86___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./userInfo.vue?vue&type=template&id=804a6b86& */ \"./src/views/system/user/profile/userInfo.vue?vue&type=template&id=804a6b86&\");\n/* harmony import */ var _userInfo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./userInfo.vue?vue&type=script&lang=js& */ \"./src/views/system/user/profile/userInfo.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _userInfo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _userInfo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _userInfo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _userInfo_vue_vue_type_template_id_804a6b86___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _userInfo_vue_vue_type_template_id_804a6b86___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/system/user/profile/userInfo.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/system/user/profile/userInfo.vue?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _FormDrawer_vue_vue_type_template_id_753f0faf_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FormDrawer.vue?vue&type=template&id=753f0faf&scoped=true& */ \"./src/views/infra/build/FormDrawer.vue?vue&type=template&id=753f0faf&scoped=true&\");\n/* harmony import */ var _FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./FormDrawer.vue?vue&type=script&lang=js& */ \"./src/views/infra/build/FormDrawer.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _FormDrawer_vue_vue_type_style_index_0_id_753f0faf_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true& */ \"./src/views/infra/build/FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _FormDrawer_vue_vue_type_template_id_753f0faf_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _FormDrawer_vue_vue_type_template_id_753f0faf_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"753f0faf\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/infra/build/FormDrawer.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/infra/build/FormDrawer.vue?"); /***/ }), -/***/ "./src/views/system/user/profile/userInfo.vue?vue&type=script&lang=js&": -/*!*****************************************************************************!*\ - !*** ./src/views/system/user/profile/userInfo.vue?vue&type=script&lang=js& ***! - \*****************************************************************************/ +/***/ "./src/views/infra/build/FormDrawer.vue?vue&type=script&lang=js&": +/*!***********************************************************************!*\ + !*** ./src/views/infra/build/FormDrawer.vue?vue&type=script&lang=js& ***! + \***********************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userInfo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/babel-loader/lib!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./userInfo.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/userInfo.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userInfo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userInfo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userInfo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userInfo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userInfo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/system/user/profile/userInfo.vue?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./FormDrawer.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/FormDrawer.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/infra/build/FormDrawer.vue?"); /***/ }), -/***/ "./src/views/system/user/profile/userInfo.vue?vue&type=template&id=804a6b86&": -/*!***********************************************************************************!*\ - !*** ./src/views/system/user/profile/userInfo.vue?vue&type=template&id=804a6b86& ***! - \***********************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userInfo_vue_vue_type_template_id_804a6b86___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./userInfo.vue?vue&type=template&id=804a6b86& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/userInfo.vue?vue&type=template&id=804a6b86&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userInfo_vue_vue_type_template_id_804a6b86___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userInfo_vue_vue_type_template_id_804a6b86___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/system/user/profile/userInfo.vue?"); - -/***/ }), - -/***/ "./src/views/system/user/profile/userSocial.vue": -/*!******************************************************!*\ - !*** ./src/views/system/user/profile/userSocial.vue ***! - \******************************************************/ +/***/ "./src/views/infra/build/FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true&": +/*!********************************************************************************************************!*\ + !*** ./src/views/infra/build/FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true& ***! + \********************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _userSocial_vue_vue_type_template_id_34c563bc___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./userSocial.vue?vue&type=template&id=34c563bc& */ \"./src/views/system/user/profile/userSocial.vue?vue&type=template&id=34c563bc&\");\n/* harmony import */ var _userSocial_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./userSocial.vue?vue&type=script&lang=js& */ \"./src/views/system/user/profile/userSocial.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _userSocial_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _userSocial_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _userSocial_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _userSocial_vue_vue_type_template_id_34c563bc___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _userSocial_vue_vue_type_template_id_34c563bc___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/system/user/profile/userSocial.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/system/user/profile/userSocial.vue?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_style_index_0_id_753f0faf_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-style-loader??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_style_index_0_id_753f0faf_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_style_index_0_id_753f0faf_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_style_index_0_id_753f0faf_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_style_index_0_id_753f0faf_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/infra/build/FormDrawer.vue?"); /***/ }), -/***/ "./src/views/system/user/profile/userSocial.vue?vue&type=script&lang=js&": -/*!*******************************************************************************!*\ - !*** ./src/views/system/user/profile/userSocial.vue?vue&type=script&lang=js& ***! - \*******************************************************************************/ +/***/ "./src/views/infra/build/FormDrawer.vue?vue&type=template&id=753f0faf&scoped=true&": +/*!*****************************************************************************************!*\ + !*** ./src/views/infra/build/FormDrawer.vue?vue&type=template&id=753f0faf&scoped=true& ***! + \*****************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userSocial_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/babel-loader/lib!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./userSocial.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/userSocial.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userSocial_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userSocial_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userSocial_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userSocial_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userSocial_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/system/user/profile/userSocial.vue?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_template_id_753f0faf_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./FormDrawer.vue?vue&type=template&id=753f0faf&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"b76c6300-vue-loader-template\\\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/FormDrawer.vue?vue&type=template&id=753f0faf&scoped=true&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_template_id_753f0faf_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_template_id_753f0faf_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_template_id_753f0faf_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_template_id_753f0faf_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/infra/build/FormDrawer.vue?"); /***/ }), -/***/ "./src/views/system/user/profile/userSocial.vue?vue&type=template&id=34c563bc&": -/*!*************************************************************************************!*\ - !*** ./src/views/system/user/profile/userSocial.vue?vue&type=template&id=34c563bc& ***! - \*************************************************************************************/ -/*! exports provided: render, staticRenderFns */ +/***/ "./src/views/infra/build/IconsDialog.vue": +/*!***********************************************!*\ + !*** ./src/views/infra/build/IconsDialog.vue ***! + \***********************************************/ +/*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userSocial_vue_vue_type_template_id_34c563bc___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./userSocial.vue?vue&type=template&id=34c563bc& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/userSocial.vue?vue&type=template&id=34c563bc&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userSocial_vue_vue_type_template_id_34c563bc___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_userSocial_vue_vue_type_template_id_34c563bc___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/system/user/profile/userSocial.vue?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _IconsDialog_vue_vue_type_template_id_7bbbfa18_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./IconsDialog.vue?vue&type=template&id=7bbbfa18&scoped=true& */ \"./src/views/infra/build/IconsDialog.vue?vue&type=template&id=7bbbfa18&scoped=true&\");\n/* harmony import */ var _IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./IconsDialog.vue?vue&type=script&lang=js& */ \"./src/views/infra/build/IconsDialog.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IconsDialog_vue_vue_type_style_index_0_id_7bbbfa18_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true& */ \"./src/views/infra/build/IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _IconsDialog_vue_vue_type_template_id_7bbbfa18_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _IconsDialog_vue_vue_type_template_id_7bbbfa18_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"7bbbfa18\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/infra/build/IconsDialog.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/infra/build/IconsDialog.vue?"); + +/***/ }), + +/***/ "./src/views/infra/build/IconsDialog.vue?vue&type=script&lang=js&": +/*!************************************************************************!*\ + !*** ./src/views/infra/build/IconsDialog.vue?vue&type=script&lang=js& ***! + \************************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./IconsDialog.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/IconsDialog.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/infra/build/IconsDialog.vue?"); + +/***/ }), + +/***/ "./src/views/infra/build/IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true&": +/*!*********************************************************************************************************!*\ + !*** ./src/views/infra/build/IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true& ***! + \*********************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_style_index_0_id_7bbbfa18_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-style-loader??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_style_index_0_id_7bbbfa18_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_style_index_0_id_7bbbfa18_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_style_index_0_id_7bbbfa18_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_style_index_0_id_7bbbfa18_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/infra/build/IconsDialog.vue?"); + +/***/ }), + +/***/ "./src/views/infra/build/IconsDialog.vue?vue&type=template&id=7bbbfa18&scoped=true&": +/*!******************************************************************************************!*\ + !*** ./src/views/infra/build/IconsDialog.vue?vue&type=template&id=7bbbfa18&scoped=true& ***! + \******************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_template_id_7bbbfa18_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./IconsDialog.vue?vue&type=template&id=7bbbfa18&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"b76c6300-vue-loader-template\\\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/IconsDialog.vue?vue&type=template&id=7bbbfa18&scoped=true&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_template_id_7bbbfa18_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_template_id_7bbbfa18_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_template_id_7bbbfa18_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_template_id_7bbbfa18_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/infra/build/IconsDialog.vue?"); + +/***/ }), + +/***/ "./src/views/infra/build/JsonDrawer.vue": +/*!**********************************************!*\ + !*** ./src/views/infra/build/JsonDrawer.vue ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _JsonDrawer_vue_vue_type_template_id_349212d3_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./JsonDrawer.vue?vue&type=template&id=349212d3&scoped=true& */ \"./src/views/infra/build/JsonDrawer.vue?vue&type=template&id=349212d3&scoped=true&\");\n/* harmony import */ var _JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./JsonDrawer.vue?vue&type=script&lang=js& */ \"./src/views/infra/build/JsonDrawer.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _JsonDrawer_vue_vue_type_style_index_0_id_349212d3_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true& */ \"./src/views/infra/build/JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _JsonDrawer_vue_vue_type_template_id_349212d3_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _JsonDrawer_vue_vue_type_template_id_349212d3_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"349212d3\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/infra/build/JsonDrawer.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/infra/build/JsonDrawer.vue?"); + +/***/ }), + +/***/ "./src/views/infra/build/JsonDrawer.vue?vue&type=script&lang=js&": +/*!***********************************************************************!*\ + !*** ./src/views/infra/build/JsonDrawer.vue?vue&type=script&lang=js& ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./JsonDrawer.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/JsonDrawer.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/infra/build/JsonDrawer.vue?"); + +/***/ }), + +/***/ "./src/views/infra/build/JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true&": +/*!********************************************************************************************************!*\ + !*** ./src/views/infra/build/JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true& ***! + \********************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_style_index_0_id_349212d3_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-style-loader??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_style_index_0_id_349212d3_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_style_index_0_id_349212d3_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_style_index_0_id_349212d3_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_style_index_0_id_349212d3_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/infra/build/JsonDrawer.vue?"); + +/***/ }), + +/***/ "./src/views/infra/build/JsonDrawer.vue?vue&type=template&id=349212d3&scoped=true&": +/*!*****************************************************************************************!*\ + !*** ./src/views/infra/build/JsonDrawer.vue?vue&type=template&id=349212d3&scoped=true& ***! + \*****************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_template_id_349212d3_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./JsonDrawer.vue?vue&type=template&id=349212d3&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"b76c6300-vue-loader-template\\\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/JsonDrawer.vue?vue&type=template&id=349212d3&scoped=true&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_template_id_349212d3_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_template_id_349212d3_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_template_id_349212d3_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_template_id_349212d3_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/infra/build/JsonDrawer.vue?"); + +/***/ }), + +/***/ "./src/views/infra/build/ResourceDialog.vue": +/*!**************************************************!*\ + !*** ./src/views/infra/build/ResourceDialog.vue ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ResourceDialog_vue_vue_type_template_id_1416fb60_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ResourceDialog.vue?vue&type=template&id=1416fb60&scoped=true& */ \"./src/views/infra/build/ResourceDialog.vue?vue&type=template&id=1416fb60&scoped=true&\");\n/* harmony import */ var _ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ResourceDialog.vue?vue&type=script&lang=js& */ \"./src/views/infra/build/ResourceDialog.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _ResourceDialog_vue_vue_type_style_index_0_id_1416fb60_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true& */ \"./src/views/infra/build/ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _ResourceDialog_vue_vue_type_template_id_1416fb60_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _ResourceDialog_vue_vue_type_template_id_1416fb60_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"1416fb60\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/infra/build/ResourceDialog.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/infra/build/ResourceDialog.vue?"); + +/***/ }), + +/***/ "./src/views/infra/build/ResourceDialog.vue?vue&type=script&lang=js&": +/*!***************************************************************************!*\ + !*** ./src/views/infra/build/ResourceDialog.vue?vue&type=script&lang=js& ***! + \***************************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./ResourceDialog.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/ResourceDialog.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/infra/build/ResourceDialog.vue?"); + +/***/ }), + +/***/ "./src/views/infra/build/ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true&": +/*!************************************************************************************************************!*\ + !*** ./src/views/infra/build/ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true& ***! + \************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_style_index_0_id_1416fb60_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-style-loader??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_style_index_0_id_1416fb60_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_style_index_0_id_1416fb60_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_style_index_0_id_1416fb60_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_style_index_0_id_1416fb60_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/infra/build/ResourceDialog.vue?"); + +/***/ }), + +/***/ "./src/views/infra/build/ResourceDialog.vue?vue&type=template&id=1416fb60&scoped=true&": +/*!*********************************************************************************************!*\ + !*** ./src/views/infra/build/ResourceDialog.vue?vue&type=template&id=1416fb60&scoped=true& ***! + \*********************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_template_id_1416fb60_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./ResourceDialog.vue?vue&type=template&id=1416fb60&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"b76c6300-vue-loader-template\\\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/ResourceDialog.vue?vue&type=template&id=1416fb60&scoped=true&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_template_id_1416fb60_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_template_id_1416fb60_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_template_id_1416fb60_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_template_id_1416fb60_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/infra/build/ResourceDialog.vue?"); + +/***/ }), + +/***/ "./src/views/infra/build/RightPanel.vue": +/*!**********************************************!*\ + !*** ./src/views/infra/build/RightPanel.vue ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _RightPanel_vue_vue_type_template_id_77ba98a2_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RightPanel.vue?vue&type=template&id=77ba98a2&scoped=true& */ \"./src/views/infra/build/RightPanel.vue?vue&type=template&id=77ba98a2&scoped=true&\");\n/* harmony import */ var _RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RightPanel.vue?vue&type=script&lang=js& */ \"./src/views/infra/build/RightPanel.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _RightPanel_vue_vue_type_style_index_0_id_77ba98a2_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true& */ \"./src/views/infra/build/RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n _RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _RightPanel_vue_vue_type_template_id_77ba98a2_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _RightPanel_vue_vue_type_template_id_77ba98a2_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"77ba98a2\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/infra/build/RightPanel.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/infra/build/RightPanel.vue?"); + +/***/ }), + +/***/ "./src/views/infra/build/RightPanel.vue?vue&type=script&lang=js&": +/*!***********************************************************************!*\ + !*** ./src/views/infra/build/RightPanel.vue?vue&type=script&lang=js& ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./RightPanel.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/RightPanel.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/infra/build/RightPanel.vue?"); + +/***/ }), + +/***/ "./src/views/infra/build/RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true&": +/*!********************************************************************************************************!*\ + !*** ./src/views/infra/build/RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true& ***! + \********************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_style_index_0_id_77ba98a2_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-style-loader??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_style_index_0_id_77ba98a2_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_style_index_0_id_77ba98a2_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_style_index_0_id_77ba98a2_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_style_index_0_id_77ba98a2_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/infra/build/RightPanel.vue?"); + +/***/ }), + +/***/ "./src/views/infra/build/RightPanel.vue?vue&type=template&id=77ba98a2&scoped=true&": +/*!*****************************************************************************************!*\ + !*** ./src/views/infra/build/RightPanel.vue?vue&type=template&id=77ba98a2&scoped=true& ***! + \*****************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_template_id_77ba98a2_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./RightPanel.vue?vue&type=template&id=77ba98a2&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"b76c6300-vue-loader-template\\\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/RightPanel.vue?vue&type=template&id=77ba98a2&scoped=true&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_template_id_77ba98a2_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_template_id_77ba98a2_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_template_id_77ba98a2_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_template_id_77ba98a2_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/infra/build/RightPanel.vue?"); + +/***/ }), + +/***/ "./src/views/infra/build/TreeNodeDialog.vue": +/*!**************************************************!*\ + !*** ./src/views/infra/build/TreeNodeDialog.vue ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _TreeNodeDialog_vue_vue_type_template_id_dae9c2fc_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TreeNodeDialog.vue?vue&type=template&id=dae9c2fc&scoped=true& */ \"./src/views/infra/build/TreeNodeDialog.vue?vue&type=template&id=dae9c2fc&scoped=true&\");\n/* harmony import */ var _TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TreeNodeDialog.vue?vue&type=script&lang=js& */ \"./src/views/infra/build/TreeNodeDialog.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _TreeNodeDialog_vue_vue_type_template_id_dae9c2fc_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _TreeNodeDialog_vue_vue_type_template_id_dae9c2fc_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"dae9c2fc\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/infra/build/TreeNodeDialog.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/infra/build/TreeNodeDialog.vue?"); + +/***/ }), + +/***/ "./src/views/infra/build/TreeNodeDialog.vue?vue&type=script&lang=js&": +/*!***************************************************************************!*\ + !*** ./src/views/infra/build/TreeNodeDialog.vue?vue&type=script&lang=js& ***! + \***************************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./TreeNodeDialog.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/TreeNodeDialog.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/infra/build/TreeNodeDialog.vue?"); + +/***/ }), + +/***/ "./src/views/infra/build/TreeNodeDialog.vue?vue&type=template&id=dae9c2fc&scoped=true&": +/*!*********************************************************************************************!*\ + !*** ./src/views/infra/build/TreeNodeDialog.vue?vue&type=template&id=dae9c2fc&scoped=true& ***! + \*********************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_template_id_dae9c2fc_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./TreeNodeDialog.vue?vue&type=template&id=dae9c2fc&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"b76c6300-vue-loader-template\\\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/TreeNodeDialog.vue?vue&type=template&id=dae9c2fc&scoped=true&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_template_id_dae9c2fc_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_template_id_dae9c2fc_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_template_id_dae9c2fc_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_b76c6300_vue_loader_template_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_loaders_templateLoader_js_ref_6_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_template_id_dae9c2fc_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/infra/build/TreeNodeDialog.vue?"); /***/ }) diff --git a/yudao-server/src/main/resources/admin-ui/static/js/6.js.gz b/yudao-server/src/main/resources/admin-ui/static/js/6.js.gz index c0923bbe2d823616c81248a33002c564b093278f..3269ea1f78dd272a28ab195982cfa29419ca4013 100644 GIT binary patch literal 164695 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 KVk8a^@P7ebIaXBw literal 22158 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 1 && arguments[1] !== undefined ? arguments[1] : {};\n var ElementFactory = window.bpmnInstances.elementFactory;\n var create = window.bpmnInstances.modeler.get(\"create\");\n console.log(ElementFactory, create);\n var shape = ElementFactory.createShape((0, _minDash.assign)({\n type: \"bpmn:UserTask\"\n }, options));\n\n if (options) {\n shape.businessObject.di.isExpanded = options.isExpanded;\n }\n\n create.start(event, shape);\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _userAvatar = _interopRequireDefault(__webpack_require__(/*! ./userAvatar */ \"./src/views/system/user/profile/userAvatar.vue\"));\nvar _userInfo = _interopRequireDefault(__webpack_require__(/*! ./userInfo */ \"./src/views/system/user/profile/userInfo.vue\"));\nvar _resetPwd = _interopRequireDefault(__webpack_require__(/*! ./resetPwd */ \"./src/views/system/user/profile/resetPwd.vue\"));\nvar _userSocial = _interopRequireDefault(__webpack_require__(/*! ./userSocial */ \"./src/views/system/user/profile/userSocial.vue\"));\nvar _user = __webpack_require__(/*! @/api/system/user */ \"./src/api/system/user.js\");\nvar _default = {\n name: \"Profile\",\n components: {\n userAvatar: _userAvatar.default,\n userInfo: _userInfo.default,\n resetPwd: _resetPwd.default,\n userSocial: _userSocial.default\n },\n data: function data() {\n return {\n user: {},\n roleGroup: {},\n postGroup: {},\n activeTab: \"userinfo\"\n };\n },\n created: function created() {\n this.getUser();\n },\n methods: {\n getUser: function getUser() {\n var _this = this;\n (0, _user.getUserProfile)().then(function (response) {\n _this.user = response.data;\n });\n },\n setActiveTab: function setActiveTab(activeTab) {\n this.activeTab = activeTab;\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/system/user/profile/index.vue?./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/model/modelEditor.vue?vue&type=script&lang=js&": -/*!*************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/bpm/model/modelEditor.vue?vue&type=script&lang=js& ***! - \*************************************************************************************************************************************************************************************************************************************************************/ +/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/resetPwd.vue?vue&type=script&lang=js&": +/*!********************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/system/user/profile/resetPwd.vue?vue&type=script&lang=js& ***! + \********************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/helpers/objectSpread2.js */ \"./node_modules/@babel/runtime/helpers/objectSpread2.js\"));\n\nvar _translations = _interopRequireDefault(__webpack_require__(/*! @/components/bpmnProcessDesigner/src/translations */ \"./src/components/bpmnProcessDesigner/src/translations.js\"));\n\nvar _contentPad = _interopRequireDefault(__webpack_require__(/*! @/components/bpmnProcessDesigner/package/designer/plugins/content-pad */ \"./src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/index.js\"));\n\nvar _palette = _interopRequireDefault(__webpack_require__(/*! @/components/bpmnProcessDesigner/package/designer/plugins/palette */ \"./src/components/bpmnProcessDesigner/package/designer/plugins/palette/index.js\"));\n\nvar _ProcessPalette = _interopRequireDefault(__webpack_require__(/*! @/components/bpmnProcessDesigner/package/palette/ProcessPalette */ \"./src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue\"));\n\nvar _model = __webpack_require__(/*! @/api/bpm/model */ \"./src/api/bpm/model.js\");\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n// 自定义元素选中时的弹出菜单(修改 默认任务 为 用户任务)\n// 自定义左侧菜单(修改 默认任务 为 用户任务)\n// import xmlObj2json from \"./utils/xml2json\";\n// 自定义侧边栏\n// import MyProcessPanel from \"../package/process-panel/ProcessPanel\";\nvar _default = {\n name: \"App\",\n components: {\n MyProcessPalette: _ProcessPalette.default\n },\n data: function data() {\n return {\n xmlString: \"\",\n // BPMN XML\n modeler: null,\n reloadIndex: 0,\n controlDrawerVisible: false,\n translationsSelf: _translations.default,\n controlForm: {\n simulation: true,\n labelEditing: false,\n labelVisible: false,\n prefix: \"flowable\",\n headerButtonSize: \"mini\",\n additionalModel: [_contentPad.default, _palette.default]\n },\n addis: {\n CustomContentPadProvider: _contentPad.default,\n CustomPaletteProvider: _palette.default\n },\n // 流程模型的信息\n model: {}\n };\n },\n created: function created() {\n var _this = this;\n\n // 如果 modelId 非空,说明是修改流程模型\n var modelId = this.$route.query && this.$route.query.modelId;\n\n if (modelId) {\n (0, _model.getModel)(modelId).then(function (response) {\n _this.xmlString = response.data.bpmnXml;\n _this.model = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, response.data), {}, {\n bpmnXml: undefined // 清空 bpmnXml 属性\n\n }); // this.controlForm.processId = response.data.key\n });\n }\n },\n methods: {\n initModeler: function initModeler(modeler) {\n var _this2 = this;\n\n setTimeout(function () {\n _this2.modeler = modeler;\n console.log(modeler);\n }, 10);\n },\n reloadProcessDesigner: function reloadProcessDesigner(deep) {\n this.controlForm.additionalModel = [];\n\n for (var key in this.addis) {\n if (this.addis[key]) {\n this.controlForm.additionalModel.push(this.addis[key]);\n }\n }\n\n deep && (this.xmlString = undefined);\n this.reloadIndex += 1;\n this.modeler = null; // 避免 panel 异常\n // if (deep) {\n // this.xmlString = undefined;\n // this.$refs.processDesigner.processRestart();\n // }\n },\n save: function save(bpmnXml) {\n var _this3 = this;\n\n var data = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, this.model), {}, {\n bpmnXml: bpmnXml // this.bpmnXml 只是初始化流程图,后续修改无法通过它获得\n\n }); // 修改的提交\n\n if (data.id) {\n (0, _model.updateModel)(data).then(function (response) {\n _this3.$modal.msgSuccess(\"修改成功\"); // 跳转回去\n\n\n _this3.close();\n });\n return;\n } // 添加的提交\n\n\n (0, _model.createModel)(data).then(function (response) {\n _this3.$modal.msgSuccess(\"保存成功\"); // 跳转回去\n\n\n _this3.close();\n });\n },\n\n /** 关闭按钮 */\n close: function close() {\n this.$tab.closeOpenPage({\n path: \"/bpm/manager/model\"\n });\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/bpm/model/modelEditor.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n__webpack_require__(/*! core-js/modules/es.error.cause.js */ \"./node_modules/core-js/modules/es.error.cause.js\");\nvar _user = __webpack_require__(/*! @/api/system/user */ \"./src/api/system/user.js\");\nvar _default = {\n data: function data() {\n var _this = this;\n var equalToPassword = function equalToPassword(rule, value, callback) {\n if (_this.user.newPassword !== value) {\n callback(new Error(\"两次输入的密码不一致\"));\n } else {\n callback();\n }\n };\n return {\n test: \"1test\",\n user: {\n oldPassword: undefined,\n newPassword: undefined,\n confirmPassword: undefined\n },\n // 表单校验\n rules: {\n oldPassword: [{\n required: true,\n message: \"旧密码不能为空\",\n trigger: \"blur\"\n }],\n newPassword: [{\n required: true,\n message: \"新密码不能为空\",\n trigger: \"blur\"\n }, {\n min: 6,\n max: 20,\n message: \"长度在 6 到 20 个字符\",\n trigger: \"blur\"\n }],\n confirmPassword: [{\n required: true,\n message: \"确认密码不能为空\",\n trigger: \"blur\"\n }, {\n required: true,\n validator: equalToPassword,\n trigger: \"blur\"\n }]\n }\n };\n },\n methods: {\n submit: function submit() {\n var _this2 = this;\n this.$refs[\"form\"].validate(function (valid) {\n if (valid) {\n (0, _user.updateUserPwd)(_this2.user.oldPassword, _this2.user.newPassword).then(function (response) {\n _this2.$modal.msgSuccess(\"修改成功\");\n });\n }\n });\n },\n close: function close() {\n this.$tab.closePage();\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/system/user/profile/resetPwd.vue?./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue?vue&type=template&id=ad2b6d86&scoped=true&": -/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue?vue&type=template&id=ad2b6d86&scoped=true& ***! - \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ +/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/userAvatar.vue?vue&type=script&lang=js&": +/*!**********************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/system/user/profile/userAvatar.vue?vue&type=script&lang=js& ***! + \**********************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _store = _interopRequireDefault(__webpack_require__(/*! @/store */ \"./src/store/index.js\"));\nvar _vueCropper = __webpack_require__(/*! vue-cropper */ \"./node_modules/vue-cropper/dist/index.js\");\nvar _user = __webpack_require__(/*! @/api/system/user */ \"./src/api/system/user.js\");\nvar _default = {\n components: {\n VueCropper: _vueCropper.VueCropper\n },\n props: {\n user: {\n type: Object\n }\n },\n data: function data() {\n return {\n // 是否显示弹出层\n open: false,\n // 是否显示cropper\n visible: false,\n // 弹出层标题\n title: \"修改头像\",\n options: {\n img: _store.default.getters.avatar,\n //裁剪图片的地址\n autoCrop: true,\n // 是否默认生成截图框\n autoCropWidth: 200,\n // 默认生成截图框宽度\n autoCropHeight: 200,\n // 默认生成截图框高度\n fixedBox: true // 固定截图框大小 不允许改变\n },\n\n previews: {}\n };\n },\n methods: {\n // 编辑头像\n editCropper: function editCropper() {\n this.open = true;\n },\n // 打开弹出层结束时的回调\n modalOpened: function modalOpened() {\n this.visible = true;\n },\n // 覆盖默认的上传行为\n requestUpload: function requestUpload() {},\n // 向左旋转\n rotateLeft: function rotateLeft() {\n this.$refs.cropper.rotateLeft();\n },\n // 向右旋转\n rotateRight: function rotateRight() {\n this.$refs.cropper.rotateRight();\n },\n // 图片缩放\n changeScale: function changeScale(num) {\n num = num || 1;\n this.$refs.cropper.changeScale(num);\n },\n // 上传预处理\n beforeUpload: function beforeUpload(file) {\n var _this = this;\n if (file.type.indexOf(\"image/\") === -1) {\n this.$modal.msgError(\"文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。\");\n } else {\n var reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = function () {\n _this.options.img = reader.result;\n };\n }\n },\n // 上传图片\n uploadImg: function uploadImg() {\n var _this2 = this;\n this.$refs.cropper.getCropBlob(function (data) {\n var formData = new FormData();\n formData.append(\"avatarFile\", data);\n (0, _user.uploadAvatar)(formData).then(function (resp) {\n _this2.open = false;\n // this.options.img = process.env.VUE_APP_BASE_API + response.imgUrl;\n _store.default.commit('SET_AVATAR', resp.data);\n _this2.$modal.msgSuccess(\"修改成功\");\n _this2.visible = false;\n });\n });\n },\n // 实时预览\n realTime: function realTime(data) {\n this.previews = data;\n },\n // 取消截图,关闭对话框\n closeDialog: function closeDialog() {\n this.options.img = _store.default.getters.avatar;\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/system/user/profile/userAvatar.vue?./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/userInfo.vue?vue&type=script&lang=js&": +/*!********************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/system/user/profile/userInfo.vue?vue&type=script&lang=js& ***! + \********************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _user = __webpack_require__(/*! @/api/system/user */ \"./src/api/system/user.js\");\nvar _default = {\n props: {\n user: {\n type: Object\n }\n },\n data: function data() {\n return {\n // 表单校验\n rules: {\n nickname: [{\n required: true,\n message: \"用户昵称不能为空\",\n trigger: \"blur\"\n }],\n email: [{\n required: true,\n message: \"邮箱地址不能为空\",\n trigger: \"blur\"\n }, {\n type: \"email\",\n message: \"请输入正确的邮箱地址\",\n trigger: [\"blur\", \"change\"]\n }],\n mobile: [{\n required: true,\n message: \"手机号码不能为空\",\n trigger: \"blur\"\n }, {\n pattern: /^1[3|456789][0-9]\\d{8}$/,\n message: \"请输入正确的手机号码\",\n trigger: \"blur\"\n }]\n }\n };\n },\n methods: {\n submit: function submit() {\n var _this = this;\n this.$refs[\"form\"].validate(function (valid) {\n if (valid) {\n (0, _user.updateUserProfile)(_this.user).then(function (response) {\n _this.$modal.msgSuccess(\"修改成功\");\n });\n }\n });\n },\n close: function close() {\n this.$tab.closePage();\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/system/user/profile/userInfo.vue?./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/userSocial.vue?vue&type=script&lang=js&": +/*!**********************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/system/user/profile/userSocial.vue?vue&type=script&lang=js& ***! + \**********************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n__webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\n__webpack_require__(/*! core-js/modules/es.string.replace.js */ \"./node_modules/core-js/modules/es.string.replace.js\");\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/helpers/objectSpread2.js */ \"./node_modules/@babel/runtime/helpers/objectSpread2.js\"));\nvar _constants = __webpack_require__(/*! @/utils/constants */ \"./src/utils/constants.js\");\nvar _login = __webpack_require__(/*! @/api/login */ \"./src/api/login.js\");\nvar _socialUser = __webpack_require__(/*! @/api/system/socialUser */ \"./src/api/system/socialUser.js\");\nvar _default = {\n props: {\n user: {\n type: Object\n },\n getUser: {\n // 刷新用户\n type: Function\n },\n setActiveTab: {\n // 设置激活的\n type: Function\n }\n },\n data: function data() {\n return {};\n },\n computed: {\n socialUsers: function socialUsers() {\n var socialUsers = [];\n for (var i in _constants.SystemUserSocialTypeEnum) {\n var socialUser = (0, _objectSpread2.default)({}, _constants.SystemUserSocialTypeEnum[i]);\n socialUsers.push(socialUser);\n if (this.user.socialUsers) {\n for (var j in this.user.socialUsers) {\n if (socialUser.type === this.user.socialUsers[j].type) {\n socialUser.openid = this.user.socialUsers[j].openid;\n break;\n }\n }\n }\n }\n return socialUsers;\n }\n },\n created: function created() {\n var _this = this;\n // 社交绑定\n var type = this.$route.query.type;\n var code = this.$route.query.code;\n var state = this.$route.query.state;\n if (!code) {\n return;\n }\n (0, _socialUser.socialBind)(type, code, state).then(function (resp) {\n _this.$modal.msgSuccess(\"绑定成功\");\n _this.$router.replace('/user/profile');\n // 调用父组件, 刷新\n _this.getUser();\n _this.setActiveTab('userSocial');\n });\n },\n methods: {\n bind: function bind(socialUser) {\n // 计算 redirectUri\n var redirectUri = location.origin + '/user/profile?type=' + socialUser.type;\n // 进行跳转\n (0, _login.socialAuthRedirect)(socialUser.type, encodeURIComponent(redirectUri)).then(function (res) {\n // console.log(res.url);\n window.location.href = res.data;\n });\n },\n unbind: function unbind(socialUser) {\n var _this2 = this;\n (0, _socialUser.socialUnbind)(socialUser.type, socialUser.openid).then(function (resp) {\n _this2.$modal.msgSuccess(\"解绑成功\");\n socialUser.openid = undefined;\n });\n },\n close: function close() {\n this.$tab.closePage();\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/system/user/profile/userSocial.vue?./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/index.vue?vue&type=template&id=03488e44&": +/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"b76c6300-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/system/user/profile/index.vue?vue&type=template&id=03488e44& ***! + \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.staticRenderFns = exports.render = void 0;\n__webpack_require__(/*! core-js/modules/es.function.name.js */ \"./node_modules/core-js/modules/es.function.name.js\");\n__webpack_require__(/*! core-js/modules/es.array.join.js */ \"./node_modules/core-js/modules/es.array.join.js\");\n__webpack_require__(/*! core-js/modules/es.array.map.js */ \"./node_modules/core-js/modules/es.array.map.js\");\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", {\n staticClass: \"app-container\"\n }, [_c(\"el-row\", {\n attrs: {\n gutter: 20\n }\n }, [_c(\"el-col\", {\n attrs: {\n span: 6,\n xs: 24\n }\n }, [_c(\"el-card\", {\n staticClass: \"box-card\"\n }, [_c(\"div\", {\n staticClass: \"clearfix\",\n attrs: {\n slot: \"header\"\n },\n slot: \"header\"\n }, [_c(\"span\", [_vm._v(\"个人信息\")])]), _c(\"div\", [_c(\"div\", {\n staticClass: \"text-center\"\n }, [_c(\"userAvatar\", {\n attrs: {\n user: _vm.user\n }\n })], 1), _c(\"ul\", {\n staticClass: \"list-group list-group-striped\"\n }, [_c(\"li\", {\n staticClass: \"list-group-item\"\n }, [_c(\"svg-icon\", {\n attrs: {\n \"icon-class\": \"user\"\n }\n }), _vm._v(\"用户名称 \"), _c(\"div\", {\n staticClass: \"pull-right\"\n }, [_vm._v(_vm._s(_vm.user.username))])], 1), _c(\"li\", {\n staticClass: \"list-group-item\"\n }, [_c(\"svg-icon\", {\n attrs: {\n \"icon-class\": \"phone\"\n }\n }), _vm._v(\"手机号码 \"), _c(\"div\", {\n staticClass: \"pull-right\"\n }, [_vm._v(_vm._s(_vm.user.mobile))])], 1), _c(\"li\", {\n staticClass: \"list-group-item\"\n }, [_c(\"svg-icon\", {\n attrs: {\n \"icon-class\": \"email\"\n }\n }), _vm._v(\"用户邮箱 \"), _c(\"div\", {\n staticClass: \"pull-right\"\n }, [_vm._v(_vm._s(_vm.user.email))])], 1), _c(\"li\", {\n staticClass: \"list-group-item\"\n }, [_c(\"svg-icon\", {\n attrs: {\n \"icon-class\": \"tree\"\n }\n }), _vm._v(\"所属部门 \"), _vm.user.dept ? _c(\"div\", {\n staticClass: \"pull-right\"\n }, [_vm._v(_vm._s(_vm.user.dept.name))]) : _vm._e()], 1), _c(\"li\", {\n staticClass: \"list-group-item\"\n }, [_c(\"svg-icon\", {\n attrs: {\n \"icon-class\": \"tree\"\n }\n }), _vm._v(\"所属岗位 \"), _vm.user.posts ? _c(\"div\", {\n staticClass: \"pull-right\"\n }, [_vm._v(_vm._s(_vm.user.posts.map(function (post) {\n return post.name;\n }).join(\",\")))]) : _vm._e()], 1), _c(\"li\", {\n staticClass: \"list-group-item\"\n }, [_c(\"svg-icon\", {\n attrs: {\n \"icon-class\": \"peoples\"\n }\n }), _vm._v(\"所属角色 \"), _vm.user.roles ? _c(\"div\", {\n staticClass: \"pull-right\"\n }, [_vm._v(_vm._s(_vm.user.roles.map(function (role) {\n return role.name;\n }).join(\",\")))]) : _vm._e()], 1), _c(\"li\", {\n staticClass: \"list-group-item\"\n }, [_c(\"svg-icon\", {\n attrs: {\n \"icon-class\": \"date\"\n }\n }), _vm._v(\"创建日期 \"), _c(\"div\", {\n staticClass: \"pull-right\"\n }, [_vm._v(_vm._s(_vm.parseTime(_vm.user.createTime)))])], 1)])])])], 1), _c(\"el-col\", {\n attrs: {\n span: 18,\n xs: 24\n }\n }, [_c(\"el-card\", [_c(\"div\", {\n staticClass: \"clearfix\",\n attrs: {\n slot: \"header\"\n },\n slot: \"header\"\n }, [_c(\"span\", [_vm._v(\"基本资料\")])]), _c(\"el-tabs\", {\n model: {\n value: _vm.activeTab,\n callback: function callback($$v) {\n _vm.activeTab = $$v;\n },\n expression: \"activeTab\"\n }\n }, [_c(\"el-tab-pane\", {\n attrs: {\n label: \"基本资料\",\n name: \"userinfo\"\n }\n }, [_c(\"userInfo\", {\n attrs: {\n user: _vm.user\n }\n })], 1), _c(\"el-tab-pane\", {\n attrs: {\n label: \"修改密码\",\n name: \"resetPwd\"\n }\n }, [_c(\"resetPwd\", {\n attrs: {\n user: _vm.user\n }\n })], 1), _c(\"el-tab-pane\", {\n attrs: {\n label: \"社交信息\",\n name: \"userSocial\"\n }\n }, [_c(\"userSocial\", {\n attrs: {\n user: _vm.user,\n getUser: _vm.getUser,\n setActiveTab: _vm.setActiveTab\n }\n })], 1)], 1)], 1)], 1)], 1)], 1);\n};\nexports.render = render;\nvar staticRenderFns = [];\nexports.staticRenderFns = staticRenderFns;\nrender._withStripped = true;\n\n//# sourceURL=webpack:///./src/views/system/user/profile/index.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22b76c6300-vue-loader-template%22%7D!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/resetPwd.vue?vue&type=template&id=95e4cfdc&": +/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"b76c6300-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/system/user/profile/resetPwd.vue?vue&type=template&id=95e4cfdc& ***! + \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.staticRenderFns = exports.render = void 0;\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"el-form\", {\n ref: \"form\",\n attrs: {\n model: _vm.user,\n rules: _vm.rules,\n \"label-width\": \"80px\"\n }\n }, [_c(\"el-form-item\", {\n attrs: {\n label: \"旧密码\",\n prop: \"oldPassword\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入旧密码\",\n type: \"password\",\n \"show-password\": \"\"\n },\n model: {\n value: _vm.user.oldPassword,\n callback: function callback($$v) {\n _vm.$set(_vm.user, \"oldPassword\", $$v);\n },\n expression: \"user.oldPassword\"\n }\n })], 1), _c(\"el-form-item\", {\n attrs: {\n label: \"新密码\",\n prop: \"newPassword\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请输入新密码\",\n type: \"password\",\n \"show-password\": \"\"\n },\n model: {\n value: _vm.user.newPassword,\n callback: function callback($$v) {\n _vm.$set(_vm.user, \"newPassword\", $$v);\n },\n expression: \"user.newPassword\"\n }\n })], 1), _c(\"el-form-item\", {\n attrs: {\n label: \"确认密码\",\n prop: \"confirmPassword\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n placeholder: \"请确认密码\",\n type: \"password\",\n \"show-password\": \"\"\n },\n model: {\n value: _vm.user.confirmPassword,\n callback: function callback($$v) {\n _vm.$set(_vm.user, \"confirmPassword\", $$v);\n },\n expression: \"user.confirmPassword\"\n }\n })], 1), _c(\"el-form-item\", [_c(\"el-button\", {\n attrs: {\n type: \"primary\",\n size: \"mini\"\n },\n on: {\n click: _vm.submit\n }\n }, [_vm._v(\"保存\")]), _c(\"el-button\", {\n attrs: {\n type: \"danger\",\n size: \"mini\"\n },\n on: {\n click: _vm.close\n }\n }, [_vm._v(\"关闭\")])], 1)], 1);\n};\nexports.render = render;\nvar staticRenderFns = [];\nexports.staticRenderFns = staticRenderFns;\nrender._withStripped = true;\n\n//# sourceURL=webpack:///./src/views/system/user/profile/resetPwd.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22b76c6300-vue-loader-template%22%7D!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/userAvatar.vue?vue&type=template&id=e81d90b0&scoped=true&": +/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"b76c6300-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/system/user/profile/userAvatar.vue?vue&type=template&id=e81d90b0&scoped=true& ***! + \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.staticRenderFns = exports.render = void 0;\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"div\", [_c(\"div\", {\n staticClass: \"user-info-head\",\n on: {\n click: function click($event) {\n return _vm.editCropper();\n }\n }\n }, [_c(\"img\", {\n staticClass: \"img-circle img-lg\",\n attrs: {\n src: _vm.options.img,\n title: \"点击上传头像\"\n }\n })]), _c(\"el-dialog\", {\n attrs: {\n title: _vm.title,\n visible: _vm.open,\n width: \"800px\",\n \"append-to-body\": \"\"\n },\n on: {\n \"update:visible\": function updateVisible($event) {\n _vm.open = $event;\n },\n opened: _vm.modalOpened,\n close: function close($event) {\n return _vm.closeDialog();\n }\n }\n }, [_c(\"el-row\", [_c(\"el-col\", {\n style: {\n height: \"350px\"\n },\n attrs: {\n xs: 24,\n md: 12\n }\n }, [_vm.visible ? _c(\"vue-cropper\", {\n ref: \"cropper\",\n attrs: {\n img: _vm.options.img,\n info: true,\n autoCrop: _vm.options.autoCrop,\n autoCropWidth: _vm.options.autoCropWidth,\n autoCropHeight: _vm.options.autoCropHeight,\n fixedBox: _vm.options.fixedBox\n },\n on: {\n realTime: _vm.realTime\n }\n }) : _vm._e()], 1), _c(\"el-col\", {\n style: {\n height: \"350px\"\n },\n attrs: {\n xs: 24,\n md: 12\n }\n }, [_c(\"div\", {\n staticClass: \"avatar-upload-preview\"\n }, [_c(\"img\", {\n style: _vm.previews.img,\n attrs: {\n src: _vm.previews.url\n }\n })])])], 1), _c(\"br\"), _c(\"el-row\", [_c(\"el-col\", {\n attrs: {\n lg: 2,\n md: 2\n }\n }, [_c(\"el-upload\", {\n attrs: {\n action: \"#\",\n \"http-request\": _vm.requestUpload,\n \"show-file-list\": false,\n \"before-upload\": _vm.beforeUpload\n }\n }, [_c(\"el-button\", {\n attrs: {\n size: \"small\"\n }\n }, [_vm._v(\" 选择 \"), _c(\"i\", {\n staticClass: \"el-icon-upload el-icon--right\"\n })])], 1)], 1), _c(\"el-col\", {\n attrs: {\n lg: {\n span: 1,\n offset: 2\n },\n md: 2\n }\n }, [_c(\"el-button\", {\n attrs: {\n icon: \"el-icon-plus\",\n size: \"small\"\n },\n on: {\n click: function click($event) {\n return _vm.changeScale(1);\n }\n }\n })], 1), _c(\"el-col\", {\n attrs: {\n lg: {\n span: 1,\n offset: 1\n },\n md: 2\n }\n }, [_c(\"el-button\", {\n attrs: {\n icon: \"el-icon-minus\",\n size: \"small\"\n },\n on: {\n click: function click($event) {\n return _vm.changeScale(-1);\n }\n }\n })], 1), _c(\"el-col\", {\n attrs: {\n lg: {\n span: 1,\n offset: 1\n },\n md: 2\n }\n }, [_c(\"el-button\", {\n attrs: {\n icon: \"el-icon-refresh-left\",\n size: \"small\"\n },\n on: {\n click: function click($event) {\n return _vm.rotateLeft();\n }\n }\n })], 1), _c(\"el-col\", {\n attrs: {\n lg: {\n span: 1,\n offset: 1\n },\n md: 2\n }\n }, [_c(\"el-button\", {\n attrs: {\n icon: \"el-icon-refresh-right\",\n size: \"small\"\n },\n on: {\n click: function click($event) {\n return _vm.rotateRight();\n }\n }\n })], 1), _c(\"el-col\", {\n attrs: {\n lg: {\n span: 2,\n offset: 6\n },\n md: 2\n }\n }, [_c(\"el-button\", {\n attrs: {\n type: \"primary\",\n size: \"small\"\n },\n on: {\n click: function click($event) {\n return _vm.uploadImg();\n }\n }\n }, [_vm._v(\"提 交\")])], 1)], 1)], 1)], 1);\n};\nexports.render = render;\nvar staticRenderFns = [];\nexports.staticRenderFns = staticRenderFns;\nrender._withStripped = true;\n\n//# sourceURL=webpack:///./src/views/system/user/profile/userAvatar.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22b76c6300-vue-loader-template%22%7D!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/userInfo.vue?vue&type=template&id=804a6b86&": +/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"b76c6300-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/system/user/profile/userInfo.vue?vue&type=template&id=804a6b86& ***! + \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.staticRenderFns = exports.render = void 0;\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"el-form\", {\n ref: \"form\",\n attrs: {\n model: _vm.user,\n rules: _vm.rules,\n \"label-width\": \"80px\"\n }\n }, [_c(\"el-form-item\", {\n attrs: {\n label: \"用户昵称\",\n prop: \"nickName\"\n }\n }, [_c(\"el-input\", {\n model: {\n value: _vm.user.nickname,\n callback: function callback($$v) {\n _vm.$set(_vm.user, \"nickname\", $$v);\n },\n expression: \"user.nickname\"\n }\n })], 1), _c(\"el-form-item\", {\n attrs: {\n label: \"手机号码\",\n prop: \"mobile\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n maxlength: \"11\"\n },\n model: {\n value: _vm.user.mobile,\n callback: function callback($$v) {\n _vm.$set(_vm.user, \"mobile\", $$v);\n },\n expression: \"user.mobile\"\n }\n })], 1), _c(\"el-form-item\", {\n attrs: {\n label: \"邮箱\",\n prop: \"email\"\n }\n }, [_c(\"el-input\", {\n attrs: {\n maxlength: \"50\"\n },\n model: {\n value: _vm.user.email,\n callback: function callback($$v) {\n _vm.$set(_vm.user, \"email\", $$v);\n },\n expression: \"user.email\"\n }\n })], 1), _c(\"el-form-item\", {\n attrs: {\n label: \"性别\"\n }\n }, [_c(\"el-radio-group\", {\n model: {\n value: _vm.user.sex,\n callback: function callback($$v) {\n _vm.$set(_vm.user, \"sex\", $$v);\n },\n expression: \"user.sex\"\n }\n }, [_c(\"el-radio\", {\n attrs: {\n label: 1\n }\n }, [_vm._v(\"男\")]), _c(\"el-radio\", {\n attrs: {\n label: 2\n }\n }, [_vm._v(\"女\")])], 1)], 1), _c(\"el-form-item\", [_c(\"el-button\", {\n attrs: {\n type: \"primary\",\n size: \"mini\"\n },\n on: {\n click: _vm.submit\n }\n }, [_vm._v(\"保存\")]), _c(\"el-button\", {\n attrs: {\n type: \"danger\",\n size: \"mini\"\n },\n on: {\n click: _vm.close\n }\n }, [_vm._v(\"关闭\")])], 1)], 1);\n};\nexports.render = render;\nvar staticRenderFns = [];\nexports.staticRenderFns = staticRenderFns;\nrender._withStripped = true;\n\n//# sourceURL=webpack:///./src/views/system/user/profile/userInfo.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22b76c6300-vue-loader-template%22%7D!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"b76c6300-vue-loader-template\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/userSocial.vue?vue&type=template&id=34c563bc&": +/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"b76c6300-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/system/user/profile/userSocial.vue?vue&type=template&id=34c563bc& ***! + \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.staticRenderFns = exports.render = void 0;\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\"el-table\", {\n attrs: {\n data: _vm.socialUsers,\n \"show-header\": false\n }\n }, [_c(\"el-table-column\", {\n attrs: {\n label: \"社交平台\",\n align: \"left\",\n width: \"120\"\n },\n scopedSlots: _vm._u([{\n key: \"default\",\n fn: function fn(scope) {\n return [_c(\"img\", {\n staticStyle: {\n height: \"20px\",\n \"vertical-align\": \"middle\"\n },\n attrs: {\n src: scope.row.img\n }\n }), _vm._v(\" \" + _vm._s(scope.row.title) + \" \")];\n }\n }])\n }), _c(\"el-table-column\", {\n attrs: {\n label: \"操作\",\n align: \"left\"\n },\n scopedSlots: _vm._u([{\n key: \"default\",\n fn: function fn(scope) {\n return [scope.row.openid ? _c(\"div\", [_vm._v(\" 已绑定 \"), _c(\"el-button\", {\n attrs: {\n size: \"large\",\n type: \"text\"\n },\n on: {\n click: function click($event) {\n return _vm.unbind(scope.row);\n }\n }\n }, [_vm._v(\"(解绑)\")])], 1) : _c(\"div\", [_vm._v(\" 未绑定 \"), _c(\"el-button\", {\n attrs: {\n size: \"large\",\n type: \"text\"\n },\n on: {\n click: function click($event) {\n return _vm.bind(scope.row);\n }\n }\n }, [_vm._v(\"(绑定)\")])], 1)];\n }\n }])\n })], 1);\n};\nexports.render = render;\nvar staticRenderFns = [];\nexports.staticRenderFns = staticRenderFns;\nrender._withStripped = true;\n\n//# sourceURL=webpack:///./src/views/system/user/profile/userSocial.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22b76c6300-vue-loader-template%22%7D!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/userAvatar.vue?vue&type=style&index=0&id=e81d90b0&scoped=true&lang=scss&": +/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--9-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/system/user/profile/userAvatar.vue?vue&type=style&index=0&id=e81d90b0&scoped=true&lang=scss& ***! + \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".user-info-head[data-v-e81d90b0] {\\n position: relative;\\n display: inline-block;\\n height: 120px;\\n}\\n.user-info-head[data-v-e81d90b0]:hover:after {\\n content: \\\"+\\\";\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: 0;\\n bottom: 0;\\n color: #eee;\\n background: rgba(0, 0, 0, 0.5);\\n font-size: 24px;\\n font-style: normal;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n cursor: pointer;\\n line-height: 110px;\\n border-radius: 50%;\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/views/system/user/profile/userAvatar.vue?./node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--9-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./node_modules/vue-cropper/dist/index.js": +/*!************************************************!*\ + !*** ./node_modules/vue-cropper/dist/index.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("!function(t,e){ true?module.exports=e():undefined}(window,function(){return function(t){var e={};function o(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,o),r.l=!0,r.exports}return o.m=t,o.c=e,o.d=function(t,e,n){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},o.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var r in t)o.d(n,r,function(e){return t[e]}.bind(null,r));return n},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,\"a\",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p=\"\",o(o.s=6)}([function(t,e,o){var n=o(2);\"string\"==typeof n&&(n=[[t.i,n,\"\"]]);var r={hmr:!0,transform:void 0,insertInto:void 0};o(4)(n,r);n.locals&&(t.exports=n.locals)},function(t,e,o){\"use strict\";var n=o(0);o.n(n).a},function(t,e,o){(t.exports=o(3)(!1)).push([t.i,'\\n.vue-cropper[data-v-6dae58fd] {\\n position: relative;\\n width: 100%;\\n height: 100%;\\n box-sizing: border-box;\\n user-select: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n direction: ltr;\\n touch-action: none;\\n text-align: left;\\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC\");\\n}\\n.cropper-box[data-v-6dae58fd],\\n.cropper-box-canvas[data-v-6dae58fd],\\n.cropper-drag-box[data-v-6dae58fd],\\n.cropper-crop-box[data-v-6dae58fd],\\n.cropper-face[data-v-6dae58fd] {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n user-select: none;\\n}\\n.cropper-box-canvas img[data-v-6dae58fd] {\\n position: relative;\\n text-align: left;\\n user-select: none;\\n transform: none;\\n max-width: none;\\n max-height: none;\\n}\\n.cropper-box[data-v-6dae58fd] {\\n overflow: hidden;\\n}\\n.cropper-move[data-v-6dae58fd] {\\n cursor: move;\\n}\\n.cropper-crop[data-v-6dae58fd] {\\n cursor: crosshair;\\n}\\n.cropper-modal[data-v-6dae58fd] {\\n background: rgba(0, 0, 0, 0.5);\\n}\\n.cropper-crop-box[data-v-6dae58fd] {\\n /*border: 2px solid #39f;*/\\n}\\n.cropper-view-box[data-v-6dae58fd] {\\n display: block;\\n overflow: hidden;\\n width: 100%;\\n height: 100%;\\n outline: 1px solid #39f;\\n outline-color: rgba(51, 153, 255, 0.75);\\n user-select: none;\\n}\\n.cropper-view-box img[data-v-6dae58fd] {\\n user-select: none;\\n text-align: left;\\n max-width: none;\\n max-height: none;\\n}\\n.cropper-face[data-v-6dae58fd] {\\n top: 0;\\n left: 0;\\n background-color: #fff;\\n opacity: 0.1;\\n}\\n.crop-info[data-v-6dae58fd] {\\n position: absolute;\\n left: 0px;\\n min-width: 65px;\\n text-align: center;\\n color: white;\\n line-height: 20px;\\n background-color: rgba(0, 0, 0, 0.8);\\n font-size: 12px;\\n}\\n.crop-line[data-v-6dae58fd] {\\n position: absolute;\\n display: block;\\n width: 100%;\\n height: 100%;\\n opacity: 0.1;\\n}\\n.line-w[data-v-6dae58fd] {\\n top: -3px;\\n left: 0;\\n height: 5px;\\n cursor: n-resize;\\n}\\n.line-a[data-v-6dae58fd] {\\n top: 0;\\n left: -3px;\\n width: 5px;\\n cursor: w-resize;\\n}\\n.line-s[data-v-6dae58fd] {\\n bottom: -3px;\\n left: 0;\\n height: 5px;\\n cursor: s-resize;\\n}\\n.line-d[data-v-6dae58fd] {\\n top: 0;\\n right: -3px;\\n width: 5px;\\n cursor: e-resize;\\n}\\n.crop-point[data-v-6dae58fd] {\\n position: absolute;\\n width: 8px;\\n height: 8px;\\n opacity: 0.75;\\n background-color: #39f;\\n border-radius: 100%;\\n}\\n.point1[data-v-6dae58fd] {\\n top: -4px;\\n left: -4px;\\n cursor: nw-resize;\\n}\\n.point2[data-v-6dae58fd] {\\n top: -5px;\\n left: 50%;\\n margin-left: -3px;\\n cursor: n-resize;\\n}\\n.point3[data-v-6dae58fd] {\\n top: -4px;\\n right: -4px;\\n cursor: ne-resize;\\n}\\n.point4[data-v-6dae58fd] {\\n top: 50%;\\n left: -4px;\\n margin-top: -3px;\\n cursor: w-resize;\\n}\\n.point5[data-v-6dae58fd] {\\n top: 50%;\\n right: -4px;\\n margin-top: -3px;\\n cursor: e-resize;\\n}\\n.point6[data-v-6dae58fd] {\\n bottom: -5px;\\n left: -4px;\\n cursor: sw-resize;\\n}\\n.point7[data-v-6dae58fd] {\\n bottom: -5px;\\n left: 50%;\\n margin-left: -3px;\\n cursor: s-resize;\\n}\\n.point8[data-v-6dae58fd] {\\n bottom: -5px;\\n right: -4px;\\n cursor: se-resize;\\n}\\n@media screen and (max-width: 500px) {\\n.crop-point[data-v-6dae58fd] {\\n position: absolute;\\n width: 20px;\\n height: 20px;\\n opacity: 0.45;\\n background-color: #39f;\\n border-radius: 100%;\\n}\\n.point1[data-v-6dae58fd] {\\n top: -10px;\\n left: -10px;\\n}\\n.point2[data-v-6dae58fd],\\n .point4[data-v-6dae58fd],\\n .point5[data-v-6dae58fd],\\n .point7[data-v-6dae58fd] {\\n display: none;\\n}\\n.point3[data-v-6dae58fd] {\\n top: -10px;\\n right: -10px;\\n}\\n.point4[data-v-6dae58fd] {\\n top: 0;\\n left: 0;\\n}\\n.point6[data-v-6dae58fd] {\\n bottom: -10px;\\n left: -10px;\\n}\\n.point8[data-v-6dae58fd] {\\n bottom: -10px;\\n right: -10px;\\n}\\n}\\n',\"\"])},function(t,e){t.exports=function(t){var e=[];return e.toString=function(){return this.map(function(e){var o=function(t,e){var o=t[1]||\"\",n=t[3];if(!n)return o;if(e&&\"function\"==typeof btoa){var r=function(t){return\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(t))))+\" */\"}(n),i=n.sources.map(function(t){return\"/*# sourceURL=\"+n.sourceRoot+t+\" */\"});return[o].concat(i).concat([r]).join(\"\\n\")}return[o].join(\"\\n\")}(e,t);return e[2]?\"@media \"+e[2]+\"{\"+o+\"}\":o}).join(\"\")},e.i=function(t,o){\"string\"==typeof t&&(t=[[null,t,\"\"]]);for(var n={},r=0;r=0&&c.splice(e,1)}function f(t){var e=document.createElement(\"style\");if(void 0===t.attrs.type&&(t.attrs.type=\"text/css\"),void 0===t.attrs.nonce){var n=function(){0;return o.nc}();n&&(t.attrs.nonce=n)}return g(e,t.attrs),l(t,e),e}function g(t,e){Object.keys(e).forEach(function(o){t.setAttribute(o,e[o])})}function v(t,e){var o,n,r,i;if(e.transform&&t.css){if(!(i=\"function\"==typeof e.transform?e.transform(t.css):e.transform.default(t.css)))return function(){};t.css=i}if(e.singleton){var c=a++;o=s||(s=f(e)),n=w.bind(null,o,c,!1),r=w.bind(null,o,c,!0)}else t.sourceMap&&\"function\"==typeof URL&&\"function\"==typeof URL.createObjectURL&&\"function\"==typeof URL.revokeObjectURL&&\"function\"==typeof Blob&&\"function\"==typeof btoa?(o=function(t){var e=document.createElement(\"link\");return void 0===t.attrs.type&&(t.attrs.type=\"text/css\"),t.attrs.rel=\"stylesheet\",g(e,t.attrs),l(t,e),e}(e),n=function(t,e,o){var n=o.css,r=o.sourceMap,i=void 0===e.convertToAbsoluteUrls&&r;(e.convertToAbsoluteUrls||i)&&(n=h(n));r&&(n+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+\" */\");var s=new Blob([n],{type:\"text/css\"}),a=t.href;t.href=URL.createObjectURL(s),a&&URL.revokeObjectURL(a)}.bind(null,o,e),r=function(){d(o),o.href&&URL.revokeObjectURL(o.href)}):(o=f(e),n=function(t,e){var o=e.css,n=e.media;n&&t.setAttribute(\"media\",n);if(t.styleSheet)t.styleSheet.cssText=o;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(o))}}.bind(null,o),r=function(){d(o)});return n(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;n(t=e)}else r()}}t.exports=function(t,e){if(\"undefined\"!=typeof DEBUG&&DEBUG&&\"object\"!=typeof document)throw new Error(\"The style-loader cannot be used in a non-browser environment\");(e=e||{}).attrs=\"object\"==typeof e.attrs?e.attrs:{},e.singleton||\"boolean\"==typeof e.singleton||(e.singleton=r()),e.insertInto||(e.insertInto=\"head\"),e.insertAt||(e.insertAt=\"bottom\");var o=u(t,e);return p(o,e),function(t){for(var r=[],i=0;i=8&&(a=o+n)));if(a)for(u=p.getUint16(a,r),h=0;h21?\"-21px\":\"0px\",t.width=this.cropW>0?this.cropW:0,t.height=this.cropH>0?this.cropH:0,this.infoTrue){var e=1;this.high&&!this.full&&(e=window.devicePixelRatio),1!==this.enlarge&!this.full&&(e=Math.abs(Number(this.enlarge))),t.width=t.width*e,t.height=t.height*e,this.full&&(t.width=t.width/this.scale,t.height=t.height/this.scale)}return t.width=t.width.toFixed(0),t.height=t.height.toFixed(0),t},isIE:function(){navigator.userAgent;var t=!!window.ActiveXObject||\"ActiveXObject\"in window;return t},passive:function(){return this.isIE?null:{passive:!1}}},watch:{img:function(){this.checkedImg()},imgs:function(t){\"\"!==t&&this.reload()},cropW:function(){this.showPreview()},cropH:function(){this.showPreview()},cropOffsertX:function(){this.showPreview()},cropOffsertY:function(){this.showPreview()},scale:function(t,e){this.showPreview()},x:function(){this.showPreview()},y:function(){this.showPreview()},autoCrop:function(t){t&&this.goAutoCrop()},autoCropWidth:function(){this.autoCrop&&this.goAutoCrop()},autoCropHeight:function(){this.autoCrop&&this.goAutoCrop()},mode:function(){this.checkedImg()},rotate:function(){this.showPreview(),this.autoCrop?this.goAutoCrop(this.cropW,this.cropH):(this.cropW>0||this.cropH>0)&&this.goAutoCrop(this.cropW,this.cropH)}},methods:{getVersion:function(t){for(var e=navigator.userAgent.split(\" \"),o=\"\",n=new RegExp(t,\"i\"),r=0;r=81)e=-1;else if(this.getVersion(\"safari\")[0]>=605){var i=this.getVersion(\"version\");i[0]>13&&i[1]>1&&(e=-1)}else{var s=navigator.userAgent.toLowerCase().match(/cpu iphone os (.*?) like mac os/);if(s){var a=s[1];((a=a.split(\"_\"))[0]>13||a[0]>=13&&a[1]>=4)&&(e=-1)}}var c=document.createElement(\"canvas\"),h=c.getContext(\"2d\");switch(h.save(),e){case 2:c.width=o,c.height=n,h.translate(o,0),h.scale(-1,1);break;case 3:c.width=o,c.height=n,h.translate(o/2,n/2),h.rotate(180*Math.PI/180),h.translate(-o/2,-n/2);break;case 4:c.width=o,c.height=n,h.translate(0,n),h.scale(1,-1);break;case 5:c.height=o,c.width=n,h.rotate(.5*Math.PI),h.scale(1,-1);break;case 6:c.width=n,c.height=o,h.translate(n/2,o/2),h.rotate(90*Math.PI/180),h.translate(-o/2,-n/2);break;case 7:c.height=o,c.width=n,h.rotate(.5*Math.PI),h.translate(o,-n),h.scale(-1,1);break;case 8:c.height=o,c.width=n,h.translate(n/2,o/2),h.rotate(-90*Math.PI/180),h.translate(-o/2,-n/2);break;default:c.width=o,c.height=n}h.drawImage(t,0,0,o,n),h.restore(),c.toBlob(function(t){var e=URL.createObjectURL(t);URL.revokeObjectURL(r.imgs),r.imgs=e},\"image/\"+this.outputType,1)},checkedImg:function(){var t=this;if(null===this.img||\"\"===this.img)return this.imgs=\"\",void this.clearCrop();this.loading=!0,this.scale=1,this.rotate=0,this.clearCrop();var e=new Image;if(e.onload=function(){if(\"\"===t.img)return t.$emit(\"imgLoad\",\"error\"),t.$emit(\"img-load\",\"error\"),!1;var o=e.width,n=e.height;i.getData(e).then(function(r){t.orientation=r.orientation||1;var i=Number(t.maxImgSize);!t.orientation&&oi&&(n=n/o*i,o=i),n>i&&(o=o/n*i,n=i),t.checkOrientationImage(e,t.orientation,o,n))})},e.onerror=function(){t.$emit(\"imgLoad\",\"error\"),t.$emit(\"img-load\",\"error\")},\"data\"!==this.img.substr(0,4)&&(e.crossOrigin=\"\"),this.isIE){var o=new XMLHttpRequest;o.onload=function(){var t=URL.createObjectURL(this.response);e.src=t},o.open(\"GET\",this.img,!0),o.responseType=\"blob\",o.send()}else e.src=this.img},startMove:function(t){if(t.preventDefault(),this.move&&!this.crop){if(!this.canMove)return!1;this.moveX=(\"clientX\"in t?t.clientX:t.touches[0].clientX)-this.x,this.moveY=(\"clientY\"in t?t.clientY:t.touches[0].clientY)-this.y,t.touches?(window.addEventListener(\"touchmove\",this.moveImg),window.addEventListener(\"touchend\",this.leaveImg),2==t.touches.length&&(this.touches=t.touches,window.addEventListener(\"touchmove\",this.touchScale),window.addEventListener(\"touchend\",this.cancelTouchScale))):(window.addEventListener(\"mousemove\",this.moveImg),window.addEventListener(\"mouseup\",this.leaveImg)),this.$emit(\"imgMoving\",{moving:!0,axis:this.getImgAxis()}),this.$emit(\"img-moving\",{moving:!0,axis:this.getImgAxis()})}else this.cropping=!0,window.addEventListener(\"mousemove\",this.createCrop),window.addEventListener(\"mouseup\",this.endCrop),window.addEventListener(\"touchmove\",this.createCrop),window.addEventListener(\"touchend\",this.endCrop),this.cropOffsertX=t.offsetX?t.offsetX:t.touches[0].pageX-this.$refs.cropper.offsetLeft,this.cropOffsertY=t.offsetY?t.offsetY:t.touches[0].pageY-this.$refs.cropper.offsetTop,this.cropX=\"clientX\"in t?t.clientX:t.touches[0].clientX,this.cropY=\"clientY\"in t?t.clientY:t.touches[0].clientY,this.cropChangeX=this.cropOffsertX,this.cropChangeY=this.cropOffsertY,this.cropW=0,this.cropH=0},touchScale:function(t){var e=this;t.preventDefault();var o=this.scale,n=this.touches[0].clientX,r=this.touches[0].clientY,i=t.touches[0].clientX,s=t.touches[0].clientY,a=this.touches[1].clientX,c=this.touches[1].clientY,h=t.touches[1].clientX,p=t.touches[1].clientY,u=Math.sqrt(Math.pow(n-a,2)+Math.pow(r-c,2)),l=Math.sqrt(Math.pow(i-h,2)+Math.pow(s-p,2))-u,d=1,f=(d=(d=d/this.trueWidth>d/this.trueHeight?d/this.trueHeight:d/this.trueWidth)>.1?.1:d)*l;if(!this.touchNow){if(this.touchNow=!0,l>0?o+=Math.abs(f):l<0&&o>Math.abs(f)&&(o-=Math.abs(f)),this.touches=t.touches,setTimeout(function(){e.touchNow=!1},8),!this.checkoutImgAxis(this.x,this.y,o))return!1;this.scale=o}},cancelTouchScale:function(t){window.removeEventListener(\"touchmove\",this.touchScale)},moveImg:function(t){var e=this;if(t.preventDefault(),t.touches&&2===t.touches.length)return this.touches=t.touches,window.addEventListener(\"touchmove\",this.touchScale),window.addEventListener(\"touchend\",this.cancelTouchScale),window.removeEventListener(\"touchmove\",this.moveImg),!1;var o,n,r=\"clientX\"in t?t.clientX:t.touches[0].clientX,i=\"clientY\"in t?t.clientY:t.touches[0].clientY;o=r-this.moveX,n=i-this.moveY,this.$nextTick(function(){if(e.centerBox){var t,r,i,s,a=e.getImgAxis(o,n,e.scale),c=e.getCropAxis(),h=e.trueHeight*e.scale,p=e.trueWidth*e.scale;switch(e.rotate){case 1:case-1:case 3:case-3:t=e.cropOffsertX-e.trueWidth*(1-e.scale)/2+(h-p)/2,r=e.cropOffsertY-e.trueHeight*(1-e.scale)/2+(p-h)/2,i=t-h+e.cropW,s=r-p+e.cropH;break;default:t=e.cropOffsertX-e.trueWidth*(1-e.scale)/2,r=e.cropOffsertY-e.trueHeight*(1-e.scale)/2,i=t-p+e.cropW,s=r-h+e.cropH}a.x1>=c.x1&&(o=t),a.y1>=c.y1&&(n=r),a.x2<=c.x2&&(o=i),a.y2<=c.y2&&(n=s)}e.x=o,e.y=n,e.$emit(\"imgMoving\",{moving:!0,axis:e.getImgAxis()}),e.$emit(\"img-moving\",{moving:!0,axis:e.getImgAxis()})})},leaveImg:function(t){window.removeEventListener(\"mousemove\",this.moveImg),window.removeEventListener(\"touchmove\",this.moveImg),window.removeEventListener(\"mouseup\",this.leaveImg),window.removeEventListener(\"touchend\",this.leaveImg),this.$emit(\"imgMoving\",{moving:!1,axis:this.getImgAxis()}),this.$emit(\"img-moving\",{moving:!1,axis:this.getImgAxis()})},scaleImg:function(){this.canScale&&window.addEventListener(this.support,this.changeSize,this.passive)},cancelScale:function(){this.canScale&&window.removeEventListener(this.support,this.changeSize)},changeSize:function(t){var e=this;t.preventDefault();var o=this.scale,n=t.deltaY||t.wheelDelta;n=navigator.userAgent.indexOf(\"Firefox\")>0?30*n:n,this.isIE&&(n=-n);var r=this.coe,i=(r=r/this.trueWidth>r/this.trueHeight?r/this.trueHeight:r/this.trueWidth)*n;i<0?o+=Math.abs(i):o>Math.abs(i)&&(o-=Math.abs(i));var s=i<0?\"add\":\"reduce\";if(s!==this.coeStatus&&(this.coeStatus=s,this.coe=.2),this.scaling||(this.scalingSet=setTimeout(function(){e.scaling=!1,e.coe=e.coe+=.01},50)),this.scaling=!0,!this.checkoutImgAxis(this.x,this.y,o))return!1;this.scale=o},changeScale:function(t){var e=this.scale;t=t||1;var o=20;if((t*=o=o/this.trueWidth>o/this.trueHeight?o/this.trueHeight:o/this.trueWidth)>0?e+=Math.abs(t):e>Math.abs(t)&&(e-=Math.abs(t)),!this.checkoutImgAxis(this.x,this.y,e))return!1;this.scale=e},createCrop:function(t){var e=this;t.preventDefault();var o=\"clientX\"in t?t.clientX:t.touches?t.touches[0].clientX:0,n=\"clientY\"in t?t.clientY:t.touches?t.touches[0].clientY:0;this.$nextTick(function(){var t=o-e.cropX,r=n-e.cropY;if(t>0?(e.cropW=t+e.cropChangeX>e.w?e.w-e.cropChangeX:t,e.cropOffsertX=e.cropChangeX):(e.cropW=e.w-e.cropChangeX+Math.abs(t)>e.w?e.cropChangeX:Math.abs(t),e.cropOffsertX=e.cropChangeX+t>0?e.cropChangeX+t:0),e.fixed){var i=e.cropW/e.fixedNumber[0]*e.fixedNumber[1];i+e.cropOffsertY>e.h?(e.cropH=e.h-e.cropOffsertY,e.cropW=e.cropH/e.fixedNumber[1]*e.fixedNumber[0],e.cropOffsertX=t>0?e.cropChangeX:e.cropChangeX-e.cropW):e.cropH=i,e.cropOffsertY=e.cropOffsertY}else r>0?(e.cropH=r+e.cropChangeY>e.h?e.h-e.cropChangeY:r,e.cropOffsertY=e.cropChangeY):(e.cropH=e.h-e.cropChangeY+Math.abs(r)>e.h?e.cropChangeY:Math.abs(r),e.cropOffsertY=e.cropChangeY+r>0?e.cropChangeY+r:0)})},changeCropSize:function(t,e,o,n,r){t.preventDefault(),window.addEventListener(\"mousemove\",this.changeCropNow),window.addEventListener(\"mouseup\",this.changeCropEnd),window.addEventListener(\"touchmove\",this.changeCropNow),window.addEventListener(\"touchend\",this.changeCropEnd),this.canChangeX=e,this.canChangeY=o,this.changeCropTypeX=n,this.changeCropTypeY=r,this.cropX=\"clientX\"in t?t.clientX:t.touches[0].clientX,this.cropY=\"clientY\"in t?t.clientY:t.touches[0].clientY,this.cropOldW=this.cropW,this.cropOldH=this.cropH,this.cropChangeX=this.cropOffsertX,this.cropChangeY=this.cropOffsertY,this.fixed&&this.canChangeX&&this.canChangeY&&(this.canChangeY=0),this.$emit(\"change-crop-size\",{width:this.cropW,height:this.cropH})},changeCropNow:function(t){var e=this;t.preventDefault();var o=\"clientX\"in t?t.clientX:t.touches?t.touches[0].clientX:0,n=\"clientY\"in t?t.clientY:t.touches?t.touches[0].clientY:0,r=this.w,i=this.h,s=0,a=0;if(this.centerBox){var c=this.getImgAxis(),h=c.x2,p=c.y2;s=c.x1>0?c.x1:0,a=c.y1>0?c.y1:0,r>h&&(r=h),i>p&&(i=p)}this.$nextTick(function(){var t=o-e.cropX,c=n-e.cropY;if(e.canChangeX&&(1===e.changeCropTypeX?e.cropOldW-t>0?(e.cropW=r-e.cropChangeX-t<=r-s?e.cropOldW-t:e.cropOldW+e.cropChangeX-s,e.cropOffsertX=r-e.cropChangeX-t<=r-s?e.cropChangeX+t:s):(e.cropW=Math.abs(t)+e.cropChangeX<=r?Math.abs(t)-e.cropOldW:r-e.cropOldW-e.cropChangeX,e.cropOffsertX=e.cropChangeX+e.cropOldW):2===e.changeCropTypeX&&(e.cropOldW+t>0?(e.cropW=e.cropOldW+t+e.cropOffsertX<=r?e.cropOldW+t:r-e.cropOffsertX,e.cropOffsertX=e.cropChangeX):(e.cropW=r-e.cropChangeX+Math.abs(t+e.cropOldW)<=r-s?Math.abs(t+e.cropOldW):e.cropChangeX-s,e.cropOffsertX=r-e.cropChangeX+Math.abs(t+e.cropOldW)<=r-s?e.cropChangeX-Math.abs(t+e.cropOldW):s))),e.canChangeY&&(1===e.changeCropTypeY?e.cropOldH-c>0?(e.cropH=i-e.cropChangeY-c<=i-a?e.cropOldH-c:e.cropOldH+e.cropChangeY-a,e.cropOffsertY=i-e.cropChangeY-c<=i-a?e.cropChangeY+c:a):(e.cropH=Math.abs(c)+e.cropChangeY<=i?Math.abs(c)-e.cropOldH:i-e.cropOldH-e.cropChangeY,e.cropOffsertY=e.cropChangeY+e.cropOldH):2===e.changeCropTypeY&&(e.cropOldH+c>0?(e.cropH=e.cropOldH+c+e.cropOffsertY<=i?e.cropOldH+c:i-e.cropOffsertY,e.cropOffsertY=e.cropChangeY):(e.cropH=i-e.cropChangeY+Math.abs(c+e.cropOldH)<=i-a?Math.abs(c+e.cropOldH):e.cropChangeY-a,e.cropOffsertY=i-e.cropChangeY+Math.abs(c+e.cropOldH)<=i-a?e.cropChangeY-Math.abs(c+e.cropOldH):a))),e.canChangeX&&e.fixed){var h=e.cropW/e.fixedNumber[0]*e.fixedNumber[1];h+e.cropOffsertY>i?(e.cropH=i-e.cropOffsertY,e.cropW=e.cropH/e.fixedNumber[1]*e.fixedNumber[0]):e.cropH=h}if(e.canChangeY&&e.fixed){var p=e.cropH/e.fixedNumber[1]*e.fixedNumber[0];p+e.cropOffsertX>r?(e.cropW=r-e.cropOffsertX,e.cropH=e.cropW/e.fixedNumber[0]*e.fixedNumber[1]):e.cropW=p}e.$emit(\"crop-sizing\",{cropW:e.cropW,cropH:e.cropH})})},checkCropLimitSize:function(){this.cropW,this.cropH;var t=this.limitMinSize,e=new Array;return e=Array.isArray[t]?t:[t,t],[parseFloat(e[0]),parseFloat(e[1])]},changeCropEnd:function(t){window.removeEventListener(\"mousemove\",this.changeCropNow),window.removeEventListener(\"mouseup\",this.changeCropEnd),window.removeEventListener(\"touchmove\",this.changeCropNow),window.removeEventListener(\"touchend\",this.changeCropEnd)},endCrop:function(){0===this.cropW&&0===this.cropH&&(this.cropping=!1),window.removeEventListener(\"mousemove\",this.createCrop),window.removeEventListener(\"mouseup\",this.endCrop),window.removeEventListener(\"touchmove\",this.createCrop),window.removeEventListener(\"touchend\",this.endCrop)},startCrop:function(){this.crop=!0},stopCrop:function(){this.crop=!1},clearCrop:function(){this.cropping=!1,this.cropW=0,this.cropH=0},cropMove:function(t){if(t.preventDefault(),!this.canMoveBox)return this.crop=!1,this.startMove(t),!1;if(t.touches&&2===t.touches.length)return this.crop=!1,this.startMove(t),this.leaveCrop(),!1;window.addEventListener(\"mousemove\",this.moveCrop),window.addEventListener(\"mouseup\",this.leaveCrop),window.addEventListener(\"touchmove\",this.moveCrop),window.addEventListener(\"touchend\",this.leaveCrop);var e,o,n=\"clientX\"in t?t.clientX:t.touches[0].clientX,r=\"clientY\"in t?t.clientY:t.touches[0].clientY;e=n-this.cropOffsertX,o=r-this.cropOffsertY,this.cropX=e,this.cropY=o,this.$emit(\"cropMoving\",{moving:!0,axis:this.getCropAxis()}),this.$emit(\"crop-moving\",{moving:!0,axis:this.getCropAxis()})},moveCrop:function(t,e){var o=this,n=0,r=0;t&&(t.preventDefault(),n=\"clientX\"in t?t.clientX:t.touches[0].clientX,r=\"clientY\"in t?t.clientY:t.touches[0].clientY),this.$nextTick(function(){var t,i,s=n-o.cropX,a=r-o.cropY;if(e&&(s=o.cropOffsertX,a=o.cropOffsertY),t=s<=0?0:s+o.cropW>o.w?o.w-o.cropW:s,i=a<=0?0:a+o.cropH>o.h?o.h-o.cropH:a,o.centerBox){var c=o.getImgAxis();t<=c.x1&&(t=c.x1),t+o.cropW>c.x2&&(t=c.x2-o.cropW),i<=c.y1&&(i=c.y1),i+o.cropH>c.y2&&(i=c.y2-o.cropH)}o.cropOffsertX=t,o.cropOffsertY=i,o.$emit(\"cropMoving\",{moving:!0,axis:o.getCropAxis()}),o.$emit(\"crop-moving\",{moving:!0,axis:o.getCropAxis()})})},getImgAxis:function(t,e,o){t=t||this.x,e=e||this.y,o=o||this.scale;var n={x1:0,x2:0,y1:0,y2:0},r=this.trueWidth*o,i=this.trueHeight*o;switch(this.rotate){case 0:n.x1=t+this.trueWidth*(1-o)/2,n.x2=n.x1+this.trueWidth*o,n.y1=e+this.trueHeight*(1-o)/2,n.y2=n.y1+this.trueHeight*o;break;case 1:case-1:case 3:case-3:n.x1=t+this.trueWidth*(1-o)/2+(r-i)/2,n.x2=n.x1+this.trueHeight*o,n.y1=e+this.trueHeight*(1-o)/2+(i-r)/2,n.y2=n.y1+this.trueWidth*o;break;default:n.x1=t+this.trueWidth*(1-o)/2,n.x2=n.x1+this.trueWidth*o,n.y1=e+this.trueHeight*(1-o)/2,n.y2=n.y1+this.trueHeight*o}return n},getCropAxis:function(){var t={x1:0,x2:0,y1:0,y2:0};return t.x1=this.cropOffsertX,t.x2=t.x1+this.cropW,t.y1=this.cropOffsertY,t.y2=t.y1+this.cropH,t},leaveCrop:function(t){window.removeEventListener(\"mousemove\",this.moveCrop),window.removeEventListener(\"mouseup\",this.leaveCrop),window.removeEventListener(\"touchmove\",this.moveCrop),window.removeEventListener(\"touchend\",this.leaveCrop),this.$emit(\"cropMoving\",{moving:!1,axis:this.getCropAxis()}),this.$emit(\"crop-moving\",{moving:!1,axis:this.getCropAxis()})},getCropChecked:function(t){var e=this,o=document.createElement(\"canvas\"),n=new Image,r=this.rotate,i=this.trueWidth,s=this.trueHeight,a=this.cropOffsertX,c=this.cropOffsertY;function h(t,e){o.width=Math.round(t),o.height=Math.round(e)}n.onload=function(){if(0!==e.cropW){var p=o.getContext(\"2d\"),u=1;e.high&!e.full&&(u=window.devicePixelRatio),1!==e.enlarge&!e.full&&(u=Math.abs(Number(e.enlarge)));var l=e.cropW*u,d=e.cropH*u,f=i*e.scale*u,g=s*e.scale*u,v=(e.x-a+e.trueWidth*(1-e.scale)/2)*u,m=(e.y-c+e.trueHeight*(1-e.scale)/2)*u;switch(h(l,d),p.save(),r){case 0:e.full?(h(l/e.scale,d/e.scale),p.drawImage(n,v/e.scale,m/e.scale,f/e.scale,g/e.scale)):p.drawImage(n,v,m,f,g);break;case 1:case-3:e.full?(h(l/e.scale,d/e.scale),v=v/e.scale+(f/e.scale-g/e.scale)/2,m=m/e.scale+(g/e.scale-f/e.scale)/2,p.rotate(90*r*Math.PI/180),p.drawImage(n,m,-v-g/e.scale,f/e.scale,g/e.scale)):(v+=(f-g)/2,m+=(g-f)/2,p.rotate(90*r*Math.PI/180),p.drawImage(n,m,-v-g,f,g));break;case 2:case-2:e.full?(h(l/e.scale,d/e.scale),p.rotate(90*r*Math.PI/180),v/=e.scale,m/=e.scale,p.drawImage(n,-v-f/e.scale,-m-g/e.scale,f/e.scale,g/e.scale)):(p.rotate(90*r*Math.PI/180),p.drawImage(n,-v-f,-m-g,f,g));break;case 3:case-1:e.full?(h(l/e.scale,d/e.scale),v=v/e.scale+(f/e.scale-g/e.scale)/2,m=m/e.scale+(g/e.scale-f/e.scale)/2,p.rotate(90*r*Math.PI/180),p.drawImage(n,-m-f/e.scale,v,f/e.scale,g/e.scale)):(v+=(f-g)/2,m+=(g-f)/2,p.rotate(90*r*Math.PI/180),p.drawImage(n,-m-f,v,f,g));break;default:e.full?(h(l/e.scale,d/e.scale),p.drawImage(n,v/e.scale,m/e.scale,f/e.scale,g/e.scale)):p.drawImage(n,v,m,f,g)}p.restore()}else{var w=i*e.scale,x=s*e.scale,C=o.getContext(\"2d\");switch(C.save(),r){case 0:h(w,x),C.drawImage(n,0,0,w,x);break;case 1:case-3:h(x,w),C.rotate(90*r*Math.PI/180),C.drawImage(n,0,-x,w,x);break;case 2:case-2:h(w,x),C.rotate(90*r*Math.PI/180),C.drawImage(n,-w,-x,w,x);break;case 3:case-1:h(x,w),C.rotate(90*r*Math.PI/180),C.drawImage(n,-w,0,w,x);break;default:h(w,x),C.drawImage(n,0,0,w,x)}C.restore()}t(o)},\"data\"!==this.img.substr(0,4)&&(n.crossOrigin=\"Anonymous\"),n.src=this.imgs},getCropData:function(t){var e=this;this.getCropChecked(function(o){t(o.toDataURL(\"image/\"+e.outputType,e.outputSize))})},getCropBlob:function(t){var e=this;this.getCropChecked(function(o){o.toBlob(function(e){return t(e)},\"image/\"+e.outputType,e.outputSize)})},showPreview:function(){var t=this;if(!this.isCanShow)return!1;this.isCanShow=!1,setTimeout(function(){t.isCanShow=!0},16);var e=this.cropW,o=this.cropH,n=this.scale,r={};r.div={width:\"\".concat(e,\"px\"),height:\"\".concat(o,\"px\")};var i=(this.x-this.cropOffsertX)/n,s=(this.y-this.cropOffsertY)/n;r.w=e,r.h=o,r.url=this.imgs,r.img={width:\"\".concat(this.trueWidth,\"px\"),height:\"\".concat(this.trueHeight,\"px\"),transform:\"scale(\".concat(n,\")translate3d(\").concat(i,\"px, \").concat(s,\"px, \").concat(0,\"px)rotateZ(\").concat(90*this.rotate,\"deg)\")},r.html='\\n
\\n
\\n \\n
\\n
'),this.$emit(\"realTime\",r),this.$emit(\"real-time\",r)},reload:function(){var t=this,e=new Image;e.onload=function(){t.w=parseFloat(window.getComputedStyle(t.$refs.cropper).width),t.h=parseFloat(window.getComputedStyle(t.$refs.cropper).height),t.trueWidth=e.width,t.trueHeight=e.height,t.original?t.scale=1:t.scale=t.checkedMode(),t.$nextTick(function(){t.x=-(t.trueWidth-t.trueWidth*t.scale)/2+(t.w-t.trueWidth*t.scale)/2,t.y=-(t.trueHeight-t.trueHeight*t.scale)/2+(t.h-t.trueHeight*t.scale)/2,t.loading=!1,t.autoCrop&&t.goAutoCrop(),t.$emit(\"img-load\",\"success\"),t.$emit(\"imgLoad\",\"success\"),setTimeout(function(){t.showPreview()},20)})},e.onerror=function(){t.$emit(\"imgLoad\",\"error\"),t.$emit(\"img-load\",\"error\")},e.src=this.imgs},checkedMode:function(){var t=1,e=(this.trueWidth,this.trueHeight),o=this.mode.split(\" \");switch(o[0]){case\"contain\":this.trueWidth>this.w&&(t=this.w/this.trueWidth),this.trueHeight*t>this.h&&(t=this.h/this.trueHeight);break;case\"cover\":(e*=t=this.w/this.trueWidth)0,i=(r?this.trueHeight:this.trueWidth)*this.scale,s=(r?this.trueWidth:this.trueHeight)*this.scale;o=io?o:a,c=c>n?n:c,this.fixed&&(c=a/this.fixedNumber[0]*this.fixedNumber[1]),c>this.h&&(a=(c=this.h)/this.fixedNumber[1]*this.fixedNumber[0]),this.changeCrop(a,c)}},changeCrop:function(t,e){var o=this;if(this.centerBox){var n=this.getImgAxis();t>n.x2-n.x1&&(e=(t=n.x2-n.x1)/this.fixedNumber[0]*this.fixedNumber[1]),e>n.y2-n.y1&&(t=(e=n.y2-n.y1)/this.fixedNumber[1]*this.fixedNumber[0])}this.cropW=t,this.cropH=e,this.checkCropLimitSize(),this.$nextTick(function(){o.cropOffsertX=(o.w-o.cropW)/2,o.cropOffsertY=(o.h-o.cropH)/2,o.centerBox&&o.moveCrop(null,!0)})},refresh:function(){var t=this;this.img;this.imgs=\"\",this.scale=1,this.crop=!1,this.rotate=0,this.w=0,this.h=0,this.trueWidth=0,this.trueHeight=0,this.clearCrop(),this.$nextTick(function(){t.checkedImg()})},rotateLeft:function(){this.rotate=this.rotate<=-3?0:this.rotate-1},rotateRight:function(){this.rotate=this.rotate>=3?0:this.rotate+1},rotateClear:function(){this.rotate=0},checkoutImgAxis:function(t,e,o){t=t||this.x,e=e||this.y,o=o||this.scale;var n=!0;if(this.centerBox){var r=this.getImgAxis(t,e,o),i=this.getCropAxis();r.x1>=i.x1&&(n=!1),r.x2<=i.x2&&(n=!1),r.y1>=i.y1&&(n=!1),r.y2<=i.y2&&(n=!1)}return n}},mounted:function(){this.support=\"onwheel\"in document.createElement(\"div\")?\"wheel\":void 0!==document.onmousewheel?\"mousewheel\":\"DOMMouseScroll\";var t=this,e=navigator.userAgent;this.isIOS=!!e.match(/\\(i[^;]+;( U;)? CPU.+Mac OS X/),HTMLCanvasElement.prototype.toBlob||Object.defineProperty(HTMLCanvasElement.prototype,\"toBlob\",{value:function(e,o,n){for(var r=atob(this.toDataURL(o,n).split(\",\")[1]),i=r.length,s=new Uint8Array(i),a=0;a tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./userAvatar.vue?vue&type=style&index=0&id=e81d90b0&scoped=true&lang=scss& */ \"./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/userAvatar.vue?vue&type=style&index=0&id=e81d90b0&scoped=true&lang=scss&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../../../../node_modules/vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"66da0e8e\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(false) {}\n\n//# sourceURL=webpack:///./src/views/system/user/profile/userAvatar.vue?./node_modules/vue-style-loader??ref--9-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--9-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options"); + +/***/ }), + +/***/ "./src/api/system/socialUser.js": +/*!**************************************!*\ + !*** ./src/api/system/socialUser.js ***! + \**************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.socialBind = socialBind;\nexports.socialUnbind = socialUnbind;\nvar _request = _interopRequireDefault(__webpack_require__(/*! @/utils/request */ \"./src/utils/request.js\"));\n// 社交绑定,使用 code 授权码\nfunction socialBind(type, code, state) {\n return (0, _request.default)({\n url: '/system/social-user/bind',\n method: 'post',\n data: {\n type: type,\n code: code,\n state: state\n }\n });\n}\n\n// 取消社交绑定\nfunction socialUnbind(type, openid) {\n return (0, _request.default)({\n url: '/system/social-user/unbind',\n method: 'delete',\n data: {\n type: type,\n openid: openid\n }\n });\n}\n\n//# sourceURL=webpack:///./src/api/system/socialUser.js?"); + +/***/ }), + +/***/ "./src/api/system/user.js": +/*!********************************!*\ + !*** ./src/api/system/user.js ***! + \********************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.addUser = addUser;\nexports.changeUserStatus = changeUserStatus;\nexports.delUser = delUser;\nexports.exportUser = exportUser;\nexports.getUser = getUser;\nexports.getUserProfile = getUserProfile;\nexports.importTemplate = importTemplate;\nexports.listSimpleUsers = listSimpleUsers;\nexports.listUser = listUser;\nexports.resetUserPwd = resetUserPwd;\nexports.updateUser = updateUser;\nexports.updateUserProfile = updateUserProfile;\nexports.updateUserPwd = updateUserPwd;\nexports.uploadAvatar = uploadAvatar;\nvar _request = _interopRequireDefault(__webpack_require__(/*! @/utils/request */ \"./src/utils/request.js\"));\nvar _ruoyi = __webpack_require__(/*! @/utils/ruoyi */ \"./src/utils/ruoyi.js\");\n// 查询用户列表\nfunction listUser(query) {\n return (0, _request.default)({\n url: '/system/user/page',\n method: 'get',\n params: query\n });\n}\n\n// 获取用户精简信息列表\nfunction listSimpleUsers() {\n return (0, _request.default)({\n url: '/system/user/list-all-simple',\n method: 'get'\n });\n}\n\n// 查询用户详细\nfunction getUser(userId) {\n return (0, _request.default)({\n url: '/system/user/get?id=' + (0, _ruoyi.praseStrEmpty)(userId),\n method: 'get'\n });\n}\n\n// 新增用户\nfunction addUser(data) {\n return (0, _request.default)({\n url: '/system/user/create',\n method: 'post',\n data: data\n });\n}\n\n// 修改用户\nfunction updateUser(data) {\n return (0, _request.default)({\n url: '/system/user/update',\n method: 'put',\n data: data\n });\n}\n\n// 删除用户\nfunction delUser(userId) {\n return (0, _request.default)({\n url: '/system/user/delete?id=' + userId,\n method: 'delete'\n });\n}\n\n// 导出用户\nfunction exportUser(query) {\n return (0, _request.default)({\n url: '/system/user/export',\n method: 'get',\n params: query,\n responseType: 'blob'\n });\n}\n\n// 用户密码重置\nfunction resetUserPwd(id, password) {\n var data = {\n id: id,\n password: password\n };\n return (0, _request.default)({\n url: '/system/user/update-password',\n method: 'put',\n data: data\n });\n}\n\n// 用户状态修改\nfunction changeUserStatus(id, status) {\n var data = {\n id: id,\n status: status\n };\n return (0, _request.default)({\n url: '/system/user/update-status',\n method: 'put',\n data: data\n });\n}\n\n// 查询用户个人信息\nfunction getUserProfile() {\n return (0, _request.default)({\n url: '/system/user/profile/get',\n method: 'get'\n });\n}\n\n// 修改用户个人信息\nfunction updateUserProfile(data) {\n return (0, _request.default)({\n url: '/system/user/profile/update',\n method: 'put',\n data: data\n });\n}\n\n// 用户密码重置\nfunction updateUserPwd(oldPassword, newPassword) {\n var data = {\n oldPassword: oldPassword,\n newPassword: newPassword\n };\n return (0, _request.default)({\n url: '/system/user/profile/update-password',\n method: 'put',\n data: data\n });\n}\n\n// 用户头像上传\nfunction uploadAvatar(data) {\n return (0, _request.default)({\n url: '/system/user/profile/update-avatar',\n method: 'put',\n data: data\n });\n}\n\n// 下载用户导入模板\nfunction importTemplate() {\n return (0, _request.default)({\n url: '/system/user/get-import-template',\n method: 'get',\n responseType: 'blob'\n });\n}\n\n//# sourceURL=webpack:///./src/api/system/user.js?"); + +/***/ }), + +/***/ "./src/views/system/user/profile/index.vue": +/*!*************************************************!*\ + !*** ./src/views/system/user/profile/index.vue ***! + \*************************************************/ +/*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"my-process-palette\" }, [\n _c(\n \"div\",\n {\n staticClass: \"test-button\",\n on: { click: _vm.addTask, mousedown: _vm.addTask },\n },\n [_vm._v(\"测试任务\")]\n ),\n _c(\n \"div\",\n { staticClass: \"test-container\", attrs: { id: \"palette-container\" } },\n [_vm._v(\"1\")]\n ),\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index_vue_vue_type_template_id_03488e44___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.vue?vue&type=template&id=03488e44& */ \"./src/views/system/user/profile/index.vue?vue&type=template&id=03488e44&\");\n/* harmony import */ var _index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.vue?vue&type=script&lang=js& */ \"./src/views/system/user/profile/index.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _index_vue_vue_type_template_id_03488e44___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _index_vue_vue_type_template_id_03488e44___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/system/user/profile/index.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/system/user/profile/index.vue?"); /***/ }), -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/model/modelEditor.vue?vue&type=template&id=3232eb94&": -/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/bpm/model/modelEditor.vue?vue&type=template&id=3232eb94& ***! - \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ +/***/ "./src/views/system/user/profile/index.vue?vue&type=script&lang=js&": +/*!**************************************************************************!*\ + !*** ./src/views/system/user/profile/index.vue?vue&type=script&lang=js& ***! + \**************************************************************************/ +/*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"app-container\" },\n [\n _c(\n \"my-process-designer\",\n _vm._b(\n {\n key: \"designer-\" + _vm.reloadIndex,\n ref: \"processDesigner\",\n attrs: { keyboard: \"\" },\n on: { \"init-finished\": _vm.initModeler, save: _vm.save },\n model: {\n value: _vm.xmlString,\n callback: function ($$v) {\n _vm.xmlString = $$v\n },\n expression: \"xmlString\",\n },\n },\n \"my-process-designer\",\n _vm.controlForm,\n false\n )\n ),\n _c(\"my-properties-panel\", {\n key: \"penal-\" + _vm.reloadIndex,\n staticClass: \"process-panel\",\n attrs: {\n \"bpmn-modeler\": _vm.modeler,\n prefix: _vm.controlForm.prefix,\n model: _vm.model,\n },\n }),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/bpm/model/modelEditor.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib??vue-loader-options!./index.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/system/user/profile/index.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_13_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/system/user/profile/index.vue?"); /***/ }), -/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue?vue&type=style&index=0&id=ad2b6d86&scoped=true&lang=scss&": -/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue?vue&type=style&index=0&id=ad2b6d86&scoped=true&lang=scss& ***! - \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ "./src/views/system/user/profile/index.vue?vue&type=template&id=03488e44&": +/*!********************************************************************************!*\ + !*** ./src/views/system/user/profile/index.vue?vue&type=template&id=03488e44& ***! + \********************************************************************************/ /*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".my-process-palette[data-v-ad2b6d86] {\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n padding: 80px 20px 20px 20px;\\n}\\n.my-process-palette .test-button[data-v-ad2b6d86] {\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n padding: 8px 16px;\\n border-radius: 4px;\\n border: 1px solid rgba(24, 144, 255, 0.8);\\n cursor: pointer;\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue?./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/model/modelEditor.vue?vue&type=style&index=0&lang=scss&": -/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/bpm/model/modelEditor.vue?vue&type=style&index=0&lang=scss& ***! - \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".demo-control-bar {\\n position: fixed;\\n right: 8px;\\n bottom: 8px;\\n z-index: 1;\\n}\\n.demo-control-bar .open-control-dialog {\\n width: 48px;\\n height: 48px;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n border-radius: 4px;\\n font-size: 32px;\\n background: #409eff;\\n color: #ffffff;\\n cursor: pointer;\\n}\\n.control-form .el-radio {\\n width: 100%;\\n line-height: 32px;\\n}\\n.element-overlays {\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n padding: 8px;\\n background: rgba(0, 0, 0, 0.6);\\n border-radius: 4px;\\n color: #fafafa;\\n}\\n.my-process-designer {\\n height: calc(100vh - 84px);\\n}\\n.process-panel__container {\\n position: absolute;\\n right: 0;\\n top: 55px;\\n height: calc(100vh - 84px);\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/views/bpm/model/modelEditor.vue?./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); - -/***/ }), - -/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue?vue&type=style&index=0&id=ad2b6d86&scoped=true&lang=scss&": -/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue?vue&type=style&index=0&id=ad2b6d86&scoped=true&lang=scss& ***! - \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("// style-loader: Adds some css to the DOM by adding a \"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/build.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-build\",\n \"use\": \"icon-build-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/build.svg?"); /***/ }), @@ -2015,7 +2015,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-cascader\",\n \"use\": \"icon-cascader-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/cascader.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-cascader\",\n \"use\": \"icon-cascader-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/cascader.svg?"); /***/ }), @@ -2039,7 +2039,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-checkbox\",\n \"use\": \"icon-checkbox-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/checkbox.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-checkbox\",\n \"use\": \"icon-checkbox-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/checkbox.svg?"); /***/ }), @@ -2051,7 +2051,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-clipboard\",\n \"use\": \"icon-clipboard-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/clipboard.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-clipboard\",\n \"use\": \"icon-clipboard-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/clipboard.svg?"); /***/ }), @@ -2063,7 +2063,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-code\",\n \"use\": \"icon-code-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/code.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-code\",\n \"use\": \"icon-code-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/code.svg?"); /***/ }), @@ -2075,7 +2075,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-color\",\n \"use\": \"icon-color-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/color.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-color\",\n \"use\": \"icon-color-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/color.svg?"); /***/ }), @@ -2087,7 +2087,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-component\",\n \"use\": \"icon-component-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/component.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-component\",\n \"use\": \"icon-component-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/component.svg?"); /***/ }), @@ -2099,7 +2099,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-config\",\n \"use\": \"icon-config-usage\",\n \"viewBox\": \"0 0 1070 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/config.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-config\",\n \"use\": \"icon-config-usage\",\n \"viewBox\": \"0 0 1070 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/config.svg?"); /***/ }), @@ -2123,7 +2123,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-date-range\",\n \"use\": \"icon-date-range-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/date-range.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-date-range\",\n \"use\": \"icon-date-range-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/date-range.svg?"); /***/ }), @@ -2135,7 +2135,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-date\",\n \"use\": \"icon-date-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/date.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-date\",\n \"use\": \"icon-date-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/date.svg?"); /***/ }), @@ -2147,7 +2147,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-dict\",\n \"use\": \"icon-dict-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/dict.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-dict\",\n \"use\": \"icon-dict-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/dict.svg?"); /***/ }), @@ -2171,7 +2171,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-download\",\n \"use\": \"icon-download-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/download.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-download\",\n \"use\": \"icon-download-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/download.svg?"); /***/ }), @@ -2195,7 +2195,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-druid\",\n \"use\": \"icon-druid-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/druid.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-druid\",\n \"use\": \"icon-druid-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/druid.svg?"); /***/ }), @@ -2207,7 +2207,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-edit\",\n \"use\": \"icon-edit-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/edit.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-edit\",\n \"use\": \"icon-edit-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/edit.svg?"); /***/ }), @@ -2231,7 +2231,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-email\",\n \"use\": \"icon-email-usage\",\n \"viewBox\": \"0 0 128 96\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/email.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-email\",\n \"use\": \"icon-email-usage\",\n \"viewBox\": \"0 0 128 96\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/email.svg?"); /***/ }), @@ -2243,7 +2243,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-example\",\n \"use\": \"icon-example-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/example.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-example\",\n \"use\": \"icon-example-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/example.svg?"); /***/ }), @@ -2267,7 +2267,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-exit-fullscreen\",\n \"use\": \"icon-exit-fullscreen-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/exit-fullscreen.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-exit-fullscreen\",\n \"use\": \"icon-exit-fullscreen-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/exit-fullscreen.svg?"); /***/ }), @@ -2303,7 +2303,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-form\",\n \"use\": \"icon-form-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/form.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-form\",\n \"use\": \"icon-form-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/form.svg?"); /***/ }), @@ -2327,7 +2327,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-github\",\n \"use\": \"icon-github-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/github.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-github\",\n \"use\": \"icon-github-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/github.svg?"); /***/ }), @@ -2351,7 +2351,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-icon\",\n \"use\": \"icon-icon-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/icon.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-icon\",\n \"use\": \"icon-icon-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/icon.svg?"); /***/ }), @@ -2363,7 +2363,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-input\",\n \"use\": \"icon-input-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/input.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-input\",\n \"use\": \"icon-input-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/input.svg?"); /***/ }), @@ -2375,7 +2375,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-international\",\n \"use\": \"icon-international-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/international.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-international\",\n \"use\": \"icon-international-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/international.svg?"); /***/ }), @@ -2387,7 +2387,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-job\",\n \"use\": \"icon-job-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/job.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-job\",\n \"use\": \"icon-job-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/job.svg?"); /***/ }), @@ -2447,7 +2447,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-log\",\n \"use\": \"icon-log-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/log.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-log\",\n \"use\": \"icon-log-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/log.svg?"); /***/ }), @@ -2459,7 +2459,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-logininfor\",\n \"use\": \"icon-logininfor-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/logininfor.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-logininfor\",\n \"use\": \"icon-logininfor-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/logininfor.svg?"); /***/ }), @@ -2471,7 +2471,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-merchant\",\n \"use\": \"icon-merchant-usage\",\n \"viewBox\": \"0 0 1184 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/merchant.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-merchant\",\n \"use\": \"icon-merchant-usage\",\n \"viewBox\": \"0 0 1184 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/merchant.svg?"); /***/ }), @@ -2507,7 +2507,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-monitor\",\n \"use\": \"icon-monitor-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/monitor.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-monitor\",\n \"use\": \"icon-monitor-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/monitor.svg?"); /***/ }), @@ -2531,7 +2531,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-number\",\n \"use\": \"icon-number-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/number.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-number\",\n \"use\": \"icon-number-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/number.svg?"); /***/ }), @@ -2543,7 +2543,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-online\",\n \"use\": \"icon-online-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/online.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-online\",\n \"use\": \"icon-online-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/online.svg?"); /***/ }), @@ -2555,7 +2555,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-order\",\n \"use\": \"icon-order-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/order.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-order\",\n \"use\": \"icon-order-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/order.svg?"); /***/ }), @@ -2567,7 +2567,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-password\",\n \"use\": \"icon-password-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/password.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-password\",\n \"use\": \"icon-password-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/password.svg?"); /***/ }), @@ -2579,7 +2579,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-pay\",\n \"use\": \"icon-pay-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/pay.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-pay\",\n \"use\": \"icon-pay-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/pay.svg?"); /***/ }), @@ -2603,7 +2603,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-people\",\n \"use\": \"icon-people-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/people.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-people\",\n \"use\": \"icon-people-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/people.svg?"); /***/ }), @@ -2627,7 +2627,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-percentSign\",\n \"use\": \"icon-percentSign-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/percentSign.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-percentSign\",\n \"use\": \"icon-percentSign-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/percentSign.svg?"); /***/ }), @@ -2639,7 +2639,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-phone\",\n \"use\": \"icon-phone-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/phone.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-phone\",\n \"use\": \"icon-phone-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/phone.svg?"); /***/ }), @@ -2651,7 +2651,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-post\",\n \"use\": \"icon-post-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/post.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-post\",\n \"use\": \"icon-post-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/post.svg?"); /***/ }), @@ -2675,7 +2675,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-question\",\n \"use\": \"icon-question-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/question.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-question\",\n \"use\": \"icon-question-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/question.svg?"); /***/ }), @@ -2687,7 +2687,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-radio\",\n \"use\": \"icon-radio-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/radio.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-radio\",\n \"use\": \"icon-radio-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/radio.svg?"); /***/ }), @@ -2699,7 +2699,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-rate\",\n \"use\": \"icon-rate-usage\",\n \"viewBox\": \"0 0 1069 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/rate.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-rate\",\n \"use\": \"icon-rate-usage\",\n \"viewBox\": \"0 0 1069 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/rate.svg?"); /***/ }), @@ -2711,7 +2711,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-redis\",\n \"use\": \"icon-redis-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/redis.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-redis\",\n \"use\": \"icon-redis-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/redis.svg?"); /***/ }), @@ -2723,7 +2723,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-row\",\n \"use\": \"icon-row-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/row.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-row\",\n \"use\": \"icon-row-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/row.svg?"); /***/ }), @@ -2735,7 +2735,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-search\",\n \"use\": \"icon-search-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/search.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-search\",\n \"use\": \"icon-search-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/search.svg?"); /***/ }), @@ -2747,7 +2747,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-select\",\n \"use\": \"icon-select-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/select.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-select\",\n \"use\": \"icon-select-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/select.svg?"); /***/ }), @@ -2759,7 +2759,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-server\",\n \"use\": \"icon-server-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/server.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-server\",\n \"use\": \"icon-server-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/server.svg?"); /***/ }), @@ -2771,7 +2771,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-shopping\",\n \"use\": \"icon-shopping-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/shopping.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-shopping\",\n \"use\": \"icon-shopping-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/shopping.svg?"); /***/ }), @@ -2795,7 +2795,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-skill\",\n \"use\": \"icon-skill-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/skill.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-skill\",\n \"use\": \"icon-skill-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/skill.svg?"); /***/ }), @@ -2807,7 +2807,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-slider\",\n \"use\": \"icon-slider-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/slider.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-slider\",\n \"use\": \"icon-slider-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/slider.svg?"); /***/ }), @@ -2819,7 +2819,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-star\",\n \"use\": \"icon-star-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/star.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-star\",\n \"use\": \"icon-star-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/star.svg?"); /***/ }), @@ -2831,7 +2831,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-swagger\",\n \"use\": \"icon-swagger-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/swagger.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-swagger\",\n \"use\": \"icon-swagger-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/swagger.svg?"); /***/ }), @@ -2843,7 +2843,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-switch\",\n \"use\": \"icon-switch-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/switch.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-switch\",\n \"use\": \"icon-switch-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/switch.svg?"); /***/ }), @@ -2855,7 +2855,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-system\",\n \"use\": \"icon-system-usage\",\n \"viewBox\": \"0 0 1084 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/system.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-system\",\n \"use\": \"icon-system-usage\",\n \"viewBox\": \"0 0 1084 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/system.svg?"); /***/ }), @@ -2891,7 +2891,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-textarea\",\n \"use\": \"icon-textarea-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/textarea.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-textarea\",\n \"use\": \"icon-textarea-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/textarea.svg?"); /***/ }), @@ -2915,7 +2915,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-time-range\",\n \"use\": \"icon-time-range-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/time-range.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-time-range\",\n \"use\": \"icon-time-range-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/time-range.svg?"); /***/ }), @@ -2927,7 +2927,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-time\",\n \"use\": \"icon-time-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/time.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-time\",\n \"use\": \"icon-time-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/time.svg?"); /***/ }), @@ -2939,7 +2939,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-tool\",\n \"use\": \"icon-tool-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/tool.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-tool\",\n \"use\": \"icon-tool-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/tool.svg?"); /***/ }), @@ -2963,7 +2963,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-tree\",\n \"use\": \"icon-tree-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/tree.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-tree\",\n \"use\": \"icon-tree-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/tree.svg?"); /***/ }), @@ -2975,7 +2975,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-upload\",\n \"use\": \"icon-upload-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/upload.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-upload\",\n \"use\": \"icon-upload-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/upload.svg?"); /***/ }), @@ -2999,7 +2999,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-validCode\",\n \"use\": \"icon-validCode-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/validCode.svg?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/svg-baker-runtime/browser-symbol.js */ \"./node_modules/svg-baker-runtime/browser-symbol.js\");\n/* harmony import */ var _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js */ \"./node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\");\n/* harmony import */ var _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar symbol = new _node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default.a({\n \"id\": \"icon-validCode\",\n \"use\": \"icon-validCode-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = _node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default.a.add(symbol);\n/* harmony default export */ __webpack_exports__[\"default\"] = (symbol);\n\n//# sourceURL=webpack:///./src/assets/icons/svg/validCode.svg?"); /***/ }), @@ -3034,7 +3034,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("module.exports = __webpack_require__.p + \"static/img/dark.d0efa020.svg\";\n\n//# sourceURL=webpack:///./src/assets/images/dark.svg?"); +eval("module.exports = __webpack_require__.p + \"static/img/dark.16937467.svg\";\n\n//# sourceURL=webpack:///./src/assets/images/dark.svg?"); /***/ }), @@ -3045,7 +3045,7 @@ eval("module.exports = __webpack_require__.p + \"static/img/dark.d0efa020.svg\"; /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("module.exports = __webpack_require__.p + \"static/img/light.ccbb6cbd.svg\";\n\n//# sourceURL=webpack:///./src/assets/images/light.svg?"); +eval("module.exports = __webpack_require__.p + \"static/img/light.c2aad012.svg\";\n\n//# sourceURL=webpack:///./src/assets/images/light.svg?"); /***/ }), @@ -3056,7 +3056,7 @@ eval("module.exports = __webpack_require__.p + \"static/img/light.ccbb6cbd.svg\" /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("module.exports = __webpack_require__.p + \"static/img/profile.2a8ee7b7.jpg\";\n\n//# sourceURL=webpack:///./src/assets/images/profile.jpg?"); +eval("module.exports = __webpack_require__.p + \"static/img/profile.b87e3d56.jpg\";\n\n//# sourceURL=webpack:///./src/assets/images/profile.jpg?"); /***/ }), @@ -3078,7 +3078,7 @@ eval("module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyC /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("// style-loader: Adds some css to the DOM by adding a

Njz?<6J#aneU10E6(1yV_7!F_2j@sgSW) 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 literal 165161 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