@ecan-bi/datav 1.0.22 → 1.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/_utils/constant.d.ts +3 -7
  2. package/dist/_utils/diagramParam.d.ts +145 -0
  3. package/dist/_utils/hooks/index.d.ts +2 -0
  4. package/dist/_utils/hooks/usePageUrl.d.ts +2 -0
  5. package/dist/_utils/hooks/useRequestDiagram.d.ts +5 -0
  6. package/dist/_utils/hooks/useTransformEchartsDataset.d.ts +17 -0
  7. package/dist/_utils/hooks/useVariablesInText.d.ts +4 -0
  8. package/dist/_utils/props.d.ts +1 -1
  9. package/dist/_utils/propsDiagram.d.ts +52 -0
  10. package/dist/common/Skeleton/Skeleton.vue.d.ts +1 -0
  11. package/dist/components.d.ts +1 -0
  12. package/dist/container/border/Border.vue.d.ts +360 -0
  13. package/dist/container/border/props.d.ts +11 -10
  14. package/dist/container/card/props.d.ts +9 -9
  15. package/dist/container/modal/Modal.vue.d.ts +2 -0
  16. package/dist/control/button/Button.vue.d.ts +13 -13
  17. package/dist/control/button/props.d.ts +9 -9
  18. package/dist/control/date-picker/DatePicker.vue.d.ts +13 -13
  19. package/dist/control/date-picker/props.d.ts +9 -9
  20. package/dist/control/input/Input.vue.d.ts +13 -13
  21. package/dist/control/input/props.d.ts +9 -9
  22. package/dist/control/range-picker/RangePicker.vue.d.ts +13 -13
  23. package/dist/control/range-picker/props.d.ts +9 -9
  24. package/dist/control/select/Select.vue.d.ts +13 -13
  25. package/dist/control/select/props.d.ts +9 -9
  26. package/dist/control/tabs/Tabs.vue.d.ts +10 -10
  27. package/dist/control/tabs/props.d.ts +7 -7
  28. package/dist/graph/bar/Bar.vue.d.ts +1800 -59
  29. package/dist/graph/bar/props.d.ts +1794 -55
  30. package/dist/graph/combo-graph/ComboGraph.vue.d.ts +13 -13
  31. package/dist/graph/combo-graph/props.d.ts +9 -9
  32. package/dist/graph/custom-graph/CustomGraph.vue.d.ts +13 -13
  33. package/dist/graph/custom-graph/props.d.ts +9 -9
  34. package/dist/graph/line/Line.vue.d.ts +13 -13
  35. package/dist/graph/line/props.d.ts +9 -9
  36. package/dist/graph/pie/Pie.vue.d.ts +14 -13
  37. package/dist/graph/pie/props.d.ts +9 -9
  38. package/dist/graph/scatter/Scatter.vue.d.ts +213 -17
  39. package/dist/graph/scatter/props.d.ts +126 -9
  40. package/dist/index.esm.js +1 -16
  41. package/dist/index.umd.js +1 -16
  42. package/dist/map/index.d.ts +1 -0
  43. package/dist/map/map/Map.vue.d.ts +710 -0
  44. package/dist/map/map/index.d.ts +3 -0
  45. package/dist/map/map/props.d.ts +514 -0
  46. package/dist/media/image/Image.vue.d.ts +53 -13
  47. package/dist/media/image/props.d.ts +39 -9
  48. package/dist/setting/provider-config/props.d.ts +1 -1
  49. package/dist/table/table/Table.vue.d.ts +1401 -51
  50. package/dist/table/table/props.d.ts +1392 -45
  51. package/dist/text/index.d.ts +1 -0
  52. package/dist/text/list/List.vue.d.ts +13 -13
  53. package/dist/text/list/props.d.ts +9 -9
  54. package/dist/text/proportion/Proportion.vue.d.ts +524 -0
  55. package/dist/text/proportion/index.d.ts +3 -0
  56. package/dist/text/proportion/props.d.ts +395 -0
  57. package/dist/text/text/Text.vue.d.ts +68 -51
  58. package/dist/text/text/props.d.ts +25 -13
  59. package/dist/text/time-display/TimeDisplay.vue.d.ts +13 -13
  60. package/dist/text/time-display/props.d.ts +9 -9
  61. package/package.json +1 -1
  62. package/dist/index.esm.js.map +0 -1
  63. package/dist/index.umd.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.umd.js","sources":["../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/style-inject/dist/style-inject.es.js","../node_modules/@ctrl/tinycolor/dist/module/util.js","../node_modules/@ctrl/tinycolor/dist/module/conversion.js","../node_modules/@ctrl/tinycolor/dist/module/css-color-names.js","../node_modules/@ctrl/tinycolor/dist/module/format-input.js","../node_modules/@ant-design/colors/dist/index.esm.js","../node_modules/@ant-design/icons-vue/es/insert-css.js","../node_modules/@ant-design/icons-vue/es/utils.js","../node_modules/@ant-design/icons-vue/es/components/IconBase.js","../node_modules/@ant-design/icons-vue/es/components/twoTonePrimaryColor.js","../node_modules/@ant-design/icons-vue/es/components/AntdIcon.js","../node_modules/@ant-design/icons-svg/es/asn/LoadingOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/LoadingOutlined.js","../src/common/spin/Spin.vue?vue&type=template&id=7c28dd44&lang.js","../src/common/skeleton/Skeleton.vue?vue&type=template&id=9e2ca3b8&lang.js","../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/@vue/shared/dist/shared.esm-bundler.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/@babel/runtime/regenerator/index.js","../node_modules/@babel/runtime/helpers/typeof.js","../src/setting/page-config/PageConfig.vue?vue&type=template&id=f2b96d90&lang.js","../src/setting/provider-config/ProviderConfig.vue?vue&type=template&id=c0047108&lang.js","../src/text/text/Text.vue?vue&type=template&id=41a337b4&lang.js","../src/text/scroll-text/ScrollText.vue?vue&type=template&id=0cbdffb5&lang.js","../src/text/time-display/TimeDisplay.vue?vue&type=template&id=6cb314e1&lang.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../src/text/list/List.vue?vue&type=template&id=2d6c92c6&lang.js","../src/control/input/Input.vue?vue&type=template&id=b714c8ac&lang.js","../src/control/date-picker/DatePicker.vue?vue&type=template&id=18740e6e&lang.js","../src/control/select/Select.vue?vue&type=template&id=b6743858&lang.js","../src/control/range-picker/RangePicker.vue?vue&type=template&id=9eb3e236&lang.js","../src/control/button/Button.vue?vue&type=template&id=34f909d8&lang.js","../src/control/tabs/Tabs.vue?vue&type=template&id=28df6758&lang.js","../src/graph/pie/Pie.vue?vue&type=template&id=9a0368c2&lang.js","../src/graph/line/Line.vue?vue&type=template&id=54811405&lang.js","../src/graph/bar/Bar.vue?vue&type=template&id=fbb863a6&lang.js","../src/graph/scatter/Scatter.vue?vue&type=template&id=728fdd83&lang.js","../src/graph/custom-graph/CustomGraph.vue?vue&type=template&id=0faf24da&lang.js","../src/graph/combo-graph/ComboGraph.vue?vue&type=template&id=5a774c0c&lang.js","../src/container/border/Border.vue","../src/container/border/Border.vue?vue&type=template&id=af8a0f90&lang.js","../src/assets/border-title-decoration-left.png","../src/assets/border-title-decoration-right.png","../src/container/modal/Modal.vue?vue&type=template&id=4efa8b94&lang.js","../src/media/image/Image.vue?vue&type=template&id=5a006553&lang.js","../src/table/table/Table.vue?vue&type=template&id=21849ce3&lang.js"],"sourcesContent":["function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","/**\n * Take input from [0, n] and return it as [0, 1]\n * @hidden\n */\nexport function bound01(n, max) {\n if (isOnePointZero(n)) {\n n = '100%';\n }\n var isPercent = isPercentage(n);\n n = max === 360 ? n : Math.min(max, Math.max(0, parseFloat(n)));\n // Automatically convert percentage into number\n if (isPercent) {\n n = parseInt(String(n * max), 10) / 100;\n }\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n // Convert into [0, 1] range if it isn't already\n if (max === 360) {\n // If n is a hue given in degrees,\n // wrap around out-of-range values into [0, 360] range\n // then convert into [0, 1].\n n = (n < 0 ? (n % max) + max : n % max) / parseFloat(String(max));\n }\n else {\n // If n not a hue given in degrees\n // Convert into [0, 1] range if it isn't already.\n n = (n % max) / parseFloat(String(max));\n }\n return n;\n}\n/**\n * Force a number between 0 and 1\n * @hidden\n */\nexport function clamp01(val) {\n return Math.min(1, Math.max(0, val));\n}\n/**\n * Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n * <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\n * @hidden\n */\nexport function isOnePointZero(n) {\n return typeof n === 'string' && n.indexOf('.') !== -1 && parseFloat(n) === 1;\n}\n/**\n * Check to see if string passed in is a percentage\n * @hidden\n */\nexport function isPercentage(n) {\n return typeof n === 'string' && n.indexOf('%') !== -1;\n}\n/**\n * Return a valid alpha value [0,1] with all invalid values being set to 1\n * @hidden\n */\nexport function boundAlpha(a) {\n a = parseFloat(a);\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n return a;\n}\n/**\n * Replace a decimal with it's percentage value\n * @hidden\n */\nexport function convertToPercentage(n) {\n if (n <= 1) {\n return \"\".concat(Number(n) * 100, \"%\");\n }\n return n;\n}\n/**\n * Force a hex value to have 2 characters\n * @hidden\n */\nexport function pad2(c) {\n return c.length === 1 ? '0' + c : String(c);\n}\n","import { bound01, pad2 } from './util';\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n/**\n * Handle bounds / percentage checking to conform to CSS color spec\n * <http://www.w3.org/TR/css3-color/>\n * *Assumes:* r, g, b in [0, 255] or [0, 1]\n * *Returns:* { r, g, b } in [0, 255]\n */\nexport function rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255,\n };\n}\n/**\n * Converts an RGB color value to HSL.\n * *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n * *Returns:* { h, s, l } in [0,1]\n */\nexport function rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h = 0;\n var s = 0;\n var l = (max + min) / 2;\n if (max === min) {\n s = 0;\n h = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return { h: h, s: s, l: l };\n}\nfunction hue2rgb(p, q, t) {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * (6 * t);\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n}\n/**\n * Converts an HSL color value to RGB.\n *\n * *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n * *Returns:* { r, g, b } in the set [0, 255]\n */\nexport function hslToRgb(h, s, l) {\n var r;\n var g;\n var b;\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n if (s === 0) {\n // achromatic\n g = l;\n b = l;\n r = l;\n }\n else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n/**\n * Converts an RGB color value to HSV\n *\n * *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n * *Returns:* { h, s, v } in [0,1]\n */\nexport function rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h = 0;\n var v = max;\n var d = max - min;\n var s = max === 0 ? 0 : d / max;\n if (max === min) {\n h = 0; // achromatic\n }\n else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return { h: h, s: s, v: v };\n}\n/**\n * Converts an HSV color value to RGB.\n *\n * *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n * *Returns:* { r, g, b } in the set [0, 255]\n */\nexport function hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - f * s);\n var t = v * (1 - (1 - f) * s);\n var mod = i % 6;\n var r = [v, q, p, p, t, v][mod];\n var g = [t, v, v, q, p, p][mod];\n var b = [p, p, t, v, v, q][mod];\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n/**\n * Converts an RGB color to hex\n *\n * Assumes r, g, and b are contained in the set [0, 255]\n * Returns a 3 or 6 character hex\n */\nexport function rgbToHex(r, g, b, allow3Char) {\n var hex = [\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n ];\n // Return a 3 character hex if possible\n if (allow3Char &&\n hex[0].startsWith(hex[0].charAt(1)) &&\n hex[1].startsWith(hex[1].charAt(1)) &&\n hex[2].startsWith(hex[2].charAt(1))) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n return hex.join('');\n}\n/**\n * Converts an RGBA color plus alpha transparency to hex\n *\n * Assumes r, g, b are contained in the set [0, 255] and\n * a in [0, 1]. Returns a 4 or 8 character rgba hex\n */\n// eslint-disable-next-line max-params\nexport function rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n pad2(convertDecimalToHex(a)),\n ];\n // Return a 4 character hex if possible\n if (allow4Char &&\n hex[0].startsWith(hex[0].charAt(1)) &&\n hex[1].startsWith(hex[1].charAt(1)) &&\n hex[2].startsWith(hex[2].charAt(1)) &&\n hex[3].startsWith(hex[3].charAt(1))) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n return hex.join('');\n}\n/**\n * Converts an RGBA color to an ARGB Hex8 string\n * Rarely used, but required for \"toFilter()\"\n */\nexport function rgbaToArgbHex(r, g, b, a) {\n var hex = [\n pad2(convertDecimalToHex(a)),\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n ];\n return hex.join('');\n}\n/** Converts a decimal to a hex value */\nexport function convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n/** Converts a hex value to a decimal */\nexport function convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n}\n/** Parse a base-16 hex value into a base-10 integer */\nexport function parseIntFromHex(val) {\n return parseInt(val, 16);\n}\nexport function numberInputToObject(color) {\n return {\n r: color >> 16,\n g: (color & 0xff00) >> 8,\n b: color & 0xff,\n };\n}\n","// https://github.com/bahamas10/css-color-names/blob/master/css-color-names.json\n/**\n * @hidden\n */\nexport var names = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n goldenrod: '#daa520',\n gold: '#ffd700',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavenderblush: '#fff0f5',\n lavender: '#e6e6fa',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32',\n};\n","import { convertHexToDecimal, hslToRgb, hsvToRgb, parseIntFromHex, rgbToRgb } from './conversion';\nimport { names } from './css-color-names';\nimport { boundAlpha, convertToPercentage } from './util';\n/**\n * Given a string or object, convert that input to RGB\n *\n * Possible string inputs:\n * ```\n * \"red\"\n * \"#f00\" or \"f00\"\n * \"#ff0000\" or \"ff0000\"\n * \"#ff000000\" or \"ff000000\"\n * \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n * \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n * \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n * \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n * \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n * \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n * \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n * ```\n */\nexport function inputToRGB(color) {\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n if (typeof color === 'string') {\n color = stringInputToObject(color);\n }\n if (typeof color === 'object') {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === '%' ? 'prgb' : 'rgb';\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = 'hsv';\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = 'hsl';\n }\n if (Object.prototype.hasOwnProperty.call(color, 'a')) {\n a = color.a;\n }\n }\n a = boundAlpha(a);\n return {\n ok: ok,\n format: color.format || format,\n r: Math.min(255, Math.max(rgb.r, 0)),\n g: Math.min(255, Math.max(rgb.g, 0)),\n b: Math.min(255, Math.max(rgb.b, 0)),\n a: a,\n };\n}\n// <http://www.w3.org/TR/css3-values/#integers>\nvar CSS_INTEGER = '[-\\\\+]?\\\\d+%?';\n// <http://www.w3.org/TR/css3-values/#number-value>\nvar CSS_NUMBER = '[-\\\\+]?\\\\d*\\\\.\\\\d+%?';\n// Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\nvar CSS_UNIT = \"(?:\".concat(CSS_NUMBER, \")|(?:\").concat(CSS_INTEGER, \")\");\n// Actual matching.\n// Parentheses and commas are optional, but not required.\n// Whitespace can take the place of commas or opening paren\nvar PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\".concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")\\\\s*\\\\)?\");\nvar PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\".concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")\\\\s*\\\\)?\");\nvar matchers = {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp('rgb' + PERMISSIVE_MATCH3),\n rgba: new RegExp('rgba' + PERMISSIVE_MATCH4),\n hsl: new RegExp('hsl' + PERMISSIVE_MATCH3),\n hsla: new RegExp('hsla' + PERMISSIVE_MATCH4),\n hsv: new RegExp('hsv' + PERMISSIVE_MATCH3),\n hsva: new RegExp('hsva' + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n};\n/**\n * Permissive string parsing. Take in a number of formats, and output an object\n * based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\n */\nexport function stringInputToObject(color) {\n color = color.trim().toLowerCase();\n if (color.length === 0) {\n return false;\n }\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n }\n else if (color === 'transparent') {\n return { r: 0, g: 0, b: 0, a: 0, format: 'name' };\n }\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match = matchers.rgb.exec(color);\n if (match) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n match = matchers.rgba.exec(color);\n if (match) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n match = matchers.hsl.exec(color);\n if (match) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n match = matchers.hsla.exec(color);\n if (match) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n match = matchers.hsv.exec(color);\n if (match) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n match = matchers.hsva.exec(color);\n if (match) {\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\n }\n match = matchers.hex8.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? 'name' : 'hex8',\n };\n }\n match = matchers.hex6.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? 'name' : 'hex',\n };\n }\n match = matchers.hex4.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1] + match[1]),\n g: parseIntFromHex(match[2] + match[2]),\n b: parseIntFromHex(match[3] + match[3]),\n a: convertHexToDecimal(match[4] + match[4]),\n format: named ? 'name' : 'hex8',\n };\n }\n match = matchers.hex3.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1] + match[1]),\n g: parseIntFromHex(match[2] + match[2]),\n b: parseIntFromHex(match[3] + match[3]),\n format: named ? 'name' : 'hex',\n };\n }\n return false;\n}\n/**\n * Check to see if it looks like a CSS unit\n * (see `matchers` above for definition).\n */\nexport function isValidCSSUnit(color) {\n return Boolean(matchers.CSS_UNIT.exec(String(color)));\n}\n","import { inputToRGB, rgbToHex, rgbToHsv } from '@ctrl/tinycolor';\n\nvar hueStep = 2; // 色相阶梯\n\nvar saturationStep = 0.16; // 饱和度阶梯,浅色部分\n\nvar saturationStep2 = 0.05; // 饱和度阶梯,深色部分\n\nvar brightnessStep1 = 0.05; // 亮度阶梯,浅色部分\n\nvar brightnessStep2 = 0.15; // 亮度阶梯,深色部分\n\nvar lightColorCount = 5; // 浅色数量,主色上\n\nvar darkColorCount = 4; // 深色数量,主色下\n// 暗色主题颜色映射关系表\n\nvar darkColorMap = [{\n index: 7,\n opacity: 0.15\n}, {\n index: 6,\n opacity: 0.25\n}, {\n index: 5,\n opacity: 0.3\n}, {\n index: 5,\n opacity: 0.45\n}, {\n index: 5,\n opacity: 0.65\n}, {\n index: 5,\n opacity: 0.85\n}, {\n index: 4,\n opacity: 0.9\n}, {\n index: 3,\n opacity: 0.95\n}, {\n index: 2,\n opacity: 0.97\n}, {\n index: 1,\n opacity: 0.98\n}]; // Wrapper function ported from TinyColor.prototype.toHsv\n// Keep it here because of `hsv.h * 360`\n\nfunction toHsv(_ref) {\n var r = _ref.r,\n g = _ref.g,\n b = _ref.b;\n var hsv = rgbToHsv(r, g, b);\n return {\n h: hsv.h * 360,\n s: hsv.s,\n v: hsv.v\n };\n} // Wrapper function ported from TinyColor.prototype.toHexString\n// Keep it here because of the prefix `#`\n\n\nfunction toHex(_ref2) {\n var r = _ref2.r,\n g = _ref2.g,\n b = _ref2.b;\n return \"#\".concat(rgbToHex(r, g, b, false));\n} // Wrapper function ported from TinyColor.prototype.mix, not treeshakable.\n// Amount in range [0, 1]\n// Assume color1 & color2 has no alpha, since the following src code did so.\n\n\nfunction mix(rgb1, rgb2, amount) {\n var p = amount / 100;\n var rgb = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b\n };\n return rgb;\n}\n\nfunction getHue(hsv, i, light) {\n var hue; // 根据色相不同,色相转向不同\n\n if (Math.round(hsv.h) >= 60 && Math.round(hsv.h) <= 240) {\n hue = light ? Math.round(hsv.h) - hueStep * i : Math.round(hsv.h) + hueStep * i;\n } else {\n hue = light ? Math.round(hsv.h) + hueStep * i : Math.round(hsv.h) - hueStep * i;\n }\n\n if (hue < 0) {\n hue += 360;\n } else if (hue >= 360) {\n hue -= 360;\n }\n\n return hue;\n}\n\nfunction getSaturation(hsv, i, light) {\n // grey color don't change saturation\n if (hsv.h === 0 && hsv.s === 0) {\n return hsv.s;\n }\n\n var saturation;\n\n if (light) {\n saturation = hsv.s - saturationStep * i;\n } else if (i === darkColorCount) {\n saturation = hsv.s + saturationStep;\n } else {\n saturation = hsv.s + saturationStep2 * i;\n } // 边界值修正\n\n\n if (saturation > 1) {\n saturation = 1;\n } // 第一格的 s 限制在 0.06-0.1 之间\n\n\n if (light && i === lightColorCount && saturation > 0.1) {\n saturation = 0.1;\n }\n\n if (saturation < 0.06) {\n saturation = 0.06;\n }\n\n return Number(saturation.toFixed(2));\n}\n\nfunction getValue(hsv, i, light) {\n var value;\n\n if (light) {\n value = hsv.v + brightnessStep1 * i;\n } else {\n value = hsv.v - brightnessStep2 * i;\n }\n\n if (value > 1) {\n value = 1;\n }\n\n return Number(value.toFixed(2));\n}\n\nfunction generate(color) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var patterns = [];\n var pColor = inputToRGB(color);\n\n for (var i = lightColorCount; i > 0; i -= 1) {\n var hsv = toHsv(pColor);\n var colorString = toHex(inputToRGB({\n h: getHue(hsv, i, true),\n s: getSaturation(hsv, i, true),\n v: getValue(hsv, i, true)\n }));\n patterns.push(colorString);\n }\n\n patterns.push(toHex(pColor));\n\n for (var _i = 1; _i <= darkColorCount; _i += 1) {\n var _hsv = toHsv(pColor);\n\n var _colorString = toHex(inputToRGB({\n h: getHue(_hsv, _i),\n s: getSaturation(_hsv, _i),\n v: getValue(_hsv, _i)\n }));\n\n patterns.push(_colorString);\n } // dark theme patterns\n\n\n if (opts.theme === 'dark') {\n return darkColorMap.map(function (_ref3) {\n var index = _ref3.index,\n opacity = _ref3.opacity;\n var darkColorString = toHex(mix(inputToRGB(opts.backgroundColor || '#141414'), inputToRGB(patterns[index]), opacity * 100));\n return darkColorString;\n });\n }\n\n return patterns;\n}\n\nvar presetPrimaryColors = {\n red: '#F5222D',\n volcano: '#FA541C',\n orange: '#FA8C16',\n gold: '#FAAD14',\n yellow: '#FADB14',\n lime: '#A0D911',\n green: '#52C41A',\n cyan: '#13C2C2',\n blue: '#1890FF',\n geekblue: '#2F54EB',\n purple: '#722ED1',\n magenta: '#EB2F96',\n grey: '#666666'\n};\nvar presetPalettes = {};\nvar presetDarkPalettes = {};\nObject.keys(presetPrimaryColors).forEach(function (key) {\n presetPalettes[key] = generate(presetPrimaryColors[key]);\n presetPalettes[key].primary = presetPalettes[key][5]; // dark presetPalettes\n\n presetDarkPalettes[key] = generate(presetPrimaryColors[key], {\n theme: 'dark',\n backgroundColor: '#141414'\n });\n presetDarkPalettes[key].primary = presetDarkPalettes[key][5];\n});\nvar red = presetPalettes.red;\nvar volcano = presetPalettes.volcano;\nvar gold = presetPalettes.gold;\nvar orange = presetPalettes.orange;\nvar yellow = presetPalettes.yellow;\nvar lime = presetPalettes.lime;\nvar green = presetPalettes.green;\nvar cyan = presetPalettes.cyan;\nvar blue = presetPalettes.blue;\nvar geekblue = presetPalettes.geekblue;\nvar purple = presetPalettes.purple;\nvar magenta = presetPalettes.magenta;\nvar grey = presetPalettes.grey;\n\nexport { blue, cyan, geekblue, generate, gold, green, grey, lime, magenta, orange, presetDarkPalettes, presetPalettes, presetPrimaryColors, purple, red, volcano, yellow };\n","// https://github.com/substack/insert-css\nvar containers = []; // will store container HTMLElement references\n\nvar styleElements = []; // will store {prepend: HTMLElement, append: HTMLElement}\n\nvar usage = 'insert-css: You need to provide a CSS string. Usage: insertCss(cssString[, options]).';\n\nfunction createStyleElement() {\n var styleElement = document.createElement('style');\n styleElement.setAttribute('type', 'text/css');\n return styleElement;\n} // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\n\nfunction insertCss(css, options) {\n options = options || {};\n\n if (css === undefined) {\n throw new Error(usage);\n }\n\n var position = options.prepend === true ? 'prepend' : 'append';\n var container = options.container !== undefined ? options.container : document.querySelector('head');\n var containerId = containers.indexOf(container); // first time we see this container, create the necessary entries\n\n if (containerId === -1) {\n containerId = containers.push(container) - 1;\n styleElements[containerId] = {};\n } // try to get the correponding container + position styleElement, create it otherwise\n\n\n var styleElement;\n\n if (styleElements[containerId] !== undefined && styleElements[containerId][position] !== undefined) {\n styleElement = styleElements[containerId][position];\n } else {\n styleElement = styleElements[containerId][position] = createStyleElement();\n\n if (position === 'prepend') {\n container.insertBefore(styleElement, container.childNodes[0]);\n } else {\n container.appendChild(styleElement);\n }\n } // strip potential UTF-8 BOM if css was read from a file\n\n\n if (css.charCodeAt(0) === 0xfeff) {\n css = css.substr(1, css.length);\n } // actually add the stylesheet\n\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText += css;\n } else {\n styleElement.textContent += css;\n }\n\n return styleElement;\n}\n\nexport default insertCss;","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { nextTick, h } from 'vue';\nimport { generate as generateColor } from '@ant-design/colors';\nimport insertCss from './insert-css';\nexport function warn(valid, message) {\n // Support uglify\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n console.error(\"Warning: \".concat(message));\n }\n}\nexport function warning(valid, message) {\n warn(valid, \"[@ant-design/icons-vue] \".concat(message));\n} // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\nexport function isIconDefinition(target) {\n return typeof target === 'object' && typeof target.name === 'string' && typeof target.theme === 'string' && (typeof target.icon === 'object' || typeof target.icon === 'function');\n}\nexport function normalizeAttrs() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return Object.keys(attrs).reduce(function (acc, key) {\n var val = attrs[key];\n\n switch (key) {\n case 'class':\n acc.className = val;\n delete acc[\"class\"];\n break;\n\n default:\n acc[key] = val;\n }\n\n return acc;\n }, {});\n}\nexport function generate(node, key, rootProps) {\n if (!rootProps) {\n return h(node.tag, _objectSpread({\n key: key\n }, node.attrs), (node.children || []).map(function (child, index) {\n return generate(child, \"\".concat(key, \"-\").concat(node.tag, \"-\").concat(index));\n }));\n }\n\n return h(node.tag, _objectSpread({\n key: key\n }, rootProps, node.attrs), (node.children || []).map(function (child, index) {\n return generate(child, \"\".concat(key, \"-\").concat(node.tag, \"-\").concat(index));\n }));\n}\nexport function getSecondaryColor(primaryColor) {\n // choose the second color\n return generateColor(primaryColor)[0];\n}\nexport function normalizeTwoToneColors(twoToneColor) {\n if (!twoToneColor) {\n return [];\n }\n\n return Array.isArray(twoToneColor) ? twoToneColor : [twoToneColor];\n} // These props make sure that the SVG behaviours like general text.\n// Reference: https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4\n\nexport var svgBaseProps = {\n width: '1em',\n height: '1em',\n fill: 'currentColor',\n 'aria-hidden': 'true',\n focusable: 'false'\n};\nexport var iconStyles = \"\\n.anticon {\\n display: inline-block;\\n color: inherit;\\n font-style: normal;\\n line-height: 0;\\n text-align: center;\\n text-transform: none;\\n vertical-align: -0.125em;\\n text-rendering: optimizeLegibility;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\n.anticon > * {\\n line-height: 1;\\n}\\n\\n.anticon svg {\\n display: inline-block;\\n}\\n\\n.anticon::before {\\n display: none;\\n}\\n\\n.anticon .anticon-icon {\\n display: block;\\n}\\n\\n.anticon[tabindex] {\\n cursor: pointer;\\n}\\n\\n.anticon-spin::before,\\n.anticon-spin {\\n display: inline-block;\\n -webkit-animation: loadingCircle 1s infinite linear;\\n animation: loadingCircle 1s infinite linear;\\n}\\n\\n@-webkit-keyframes loadingCircle {\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes loadingCircle {\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\";\nvar cssInjectedFlag = false;\nexport var useInsertStyles = function useInsertStyles() {\n var styleStr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : iconStyles;\n nextTick(function () {\n if (!cssInjectedFlag) {\n if (typeof window !== 'undefined' && window.document && window.document.documentElement) {\n insertCss(styleStr, {\n prepend: true\n });\n }\n\n cssInjectedFlag = true;\n }\n });\n};","var _excluded = [\"icon\", \"primaryColor\", \"secondaryColor\"];\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { generate, getSecondaryColor, isIconDefinition, warning, useInsertStyles } from '../utils';\nvar twoToneColorPalette = {\n primaryColor: '#333',\n secondaryColor: '#E6E6E6',\n calculated: false\n};\n\nfunction setTwoToneColors(_ref) {\n var primaryColor = _ref.primaryColor,\n secondaryColor = _ref.secondaryColor;\n twoToneColorPalette.primaryColor = primaryColor;\n twoToneColorPalette.secondaryColor = secondaryColor || getSecondaryColor(primaryColor);\n twoToneColorPalette.calculated = !!secondaryColor;\n}\n\nfunction getTwoToneColors() {\n return _objectSpread({}, twoToneColorPalette);\n}\n\nvar IconBase = function IconBase(props, context) {\n var _props$context$attrs = _objectSpread({}, props, context.attrs),\n icon = _props$context$attrs.icon,\n primaryColor = _props$context$attrs.primaryColor,\n secondaryColor = _props$context$attrs.secondaryColor,\n restProps = _objectWithoutProperties(_props$context$attrs, _excluded);\n\n var colors = twoToneColorPalette;\n\n if (primaryColor) {\n colors = {\n primaryColor: primaryColor,\n secondaryColor: secondaryColor || getSecondaryColor(primaryColor)\n };\n }\n\n useInsertStyles();\n warning(isIconDefinition(icon), \"icon should be icon definiton, but got \".concat(icon));\n\n if (!isIconDefinition(icon)) {\n return null;\n }\n\n var target = icon;\n\n if (target && typeof target.icon === 'function') {\n target = _objectSpread({}, target, {\n icon: target.icon(colors.primaryColor, colors.secondaryColor)\n });\n }\n\n return generate(target.icon, \"svg-\".concat(target.name), _objectSpread({}, restProps, {\n 'data-icon': target.name,\n width: '1em',\n height: '1em',\n fill: 'currentColor',\n 'aria-hidden': 'true'\n })); // },\n};\n\nIconBase.props = {\n icon: Object,\n primaryColor: String,\n secondaryColor: String,\n focusable: String\n};\nIconBase.inheritAttrs = false;\nIconBase.displayName = 'IconBase';\nIconBase.getTwoToneColors = getTwoToneColors;\nIconBase.setTwoToneColors = setTwoToneColors;\nexport default IconBase;","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport VueIcon from './IconBase';\nimport { normalizeTwoToneColors } from '../utils';\nexport function setTwoToneColor(twoToneColor) {\n var _normalizeTwoToneColo = normalizeTwoToneColors(twoToneColor),\n _normalizeTwoToneColo2 = _slicedToArray(_normalizeTwoToneColo, 2),\n primaryColor = _normalizeTwoToneColo2[0],\n secondaryColor = _normalizeTwoToneColo2[1];\n\n return VueIcon.setTwoToneColors({\n primaryColor: primaryColor,\n secondaryColor: secondaryColor\n });\n}\nexport function getTwoToneColor() {\n var colors = VueIcon.getTwoToneColors();\n\n if (!colors.calculated) {\n return colors.primaryColor;\n }\n\n return [colors.primaryColor, colors.secondaryColor];\n}","var _excluded = [\"class\", \"icon\", \"spin\", \"rotate\", \"tabindex\", \"twoToneColor\", \"onClick\"];\nimport { createVNode as _createVNode } from \"vue\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport VueIcon from './IconBase';\nimport { getTwoToneColor, setTwoToneColor } from './twoTonePrimaryColor';\nimport { normalizeTwoToneColors } from '../utils'; // Initial setting\n\nsetTwoToneColor('#1890ff');\n\nvar Icon = function Icon(props, context) {\n var _classObj;\n\n var _props$context$attrs = _objectSpread({}, props, context.attrs),\n cls = _props$context$attrs[\"class\"],\n icon = _props$context$attrs.icon,\n spin = _props$context$attrs.spin,\n rotate = _props$context$attrs.rotate,\n tabindex = _props$context$attrs.tabindex,\n twoToneColor = _props$context$attrs.twoToneColor,\n onClick = _props$context$attrs.onClick,\n restProps = _objectWithoutProperties(_props$context$attrs, _excluded);\n\n var classObj = (_classObj = {\n anticon: true\n }, _defineProperty(_classObj, \"anticon-\".concat(icon.name), Boolean(icon.name)), _defineProperty(_classObj, cls, cls), _classObj);\n var svgClassString = spin === '' || !!spin || icon.name === 'loading' ? 'anticon-spin' : '';\n var iconTabIndex = tabindex;\n\n if (iconTabIndex === undefined && onClick) {\n iconTabIndex = -1;\n restProps.tabindex = iconTabIndex;\n }\n\n var svgStyle = rotate ? {\n msTransform: \"rotate(\".concat(rotate, \"deg)\"),\n transform: \"rotate(\".concat(rotate, \"deg)\")\n } : undefined;\n\n var _normalizeTwoToneColo = normalizeTwoToneColors(twoToneColor),\n _normalizeTwoToneColo2 = _slicedToArray(_normalizeTwoToneColo, 2),\n primaryColor = _normalizeTwoToneColo2[0],\n secondaryColor = _normalizeTwoToneColo2[1];\n\n return _createVNode(\"span\", _objectSpread({\n \"role\": \"img\",\n \"aria-label\": icon.name\n }, restProps, {\n \"onClick\": onClick,\n \"class\": classObj\n }), [_createVNode(VueIcon, {\n \"class\": svgClassString,\n \"icon\": icon,\n \"primaryColor\": primaryColor,\n \"secondaryColor\": secondaryColor,\n \"style\": svgStyle\n }, null)]);\n};\n\nIcon.props = {\n spin: Boolean,\n rotate: Number,\n icon: Object,\n twoToneColor: String\n};\nIcon.displayName = 'AntdIcon';\nIcon.inheritAttrs = false;\nIcon.getTwoToneColor = getTwoToneColor;\nIcon.setTwoToneColor = setTwoToneColor;\nexport default Icon;","// This icon file is generated automatically.\nvar LoadingOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"0 0 1024 1024\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\" } }] }, \"name\": \"loading\", \"theme\": \"outlined\" };\nexport default LoadingOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport LoadingOutlinedSvg from \"@ant-design/icons-svg/es/asn/LoadingOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar LoadingOutlined = function LoadingOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": LoadingOutlinedSvg\n }), null);\n};\n\nLoadingOutlined.displayName = 'LoadingOutlined';\nLoadingOutlined.inheritAttrs = false;\nexport default LoadingOutlined;","<template>\n <div class=\"spin-wrapper\">\n <a-spin\n class=\"spin\"\n :spinning=\"spinning\"\n v-if=\"spinning\"\n :indicator=\"indicator\"\n tip=\"加载中...\"\n >\n </a-spin>\n <slot v-else></slot>\n </div>\n</template>\n<script lang=\"ts\">\nimport { Spin as ASpin } from 'ant-design-vue'\nimport { LoadingOutlined } from '@ant-design/icons-vue'\nimport { defineComponent, h } from 'vue'\nexport default defineComponent({\n props: {\n spinning: {\n type: Boolean,\n default: false\n }\n },\n components: {\n ASpin\n },\n setup () {\n const indicator = h(LoadingOutlined, {\n style: {\n fontSize: '24px',\n color: '#1890ff'\n },\n spin: true\n })\n return {\n indicator\n }\n }\n})\n</script>\n\n<style>\n.spin-wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n}\n.spin {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n}\n</style>\n","<template>\n <a-skeleton active :loading=\"loading\">\n <slot></slot>\n </a-skeleton>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { Skeleton as ASkeleton } from 'ant-design-vue'\nexport default defineComponent({\n name: 'Skeleton',\n props: {\n loading: {\n type: Boolean,\n default: false\n }\n },\n components: {\n ASkeleton\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\r\n * Make a map and return a function for checking if a key\r\n * is in that map.\r\n * IMPORTANT: all calls of this function must be prefixed with\r\n * \\/\\*#\\_\\_PURE\\_\\_\\*\\/\r\n * So that rollup can tree-shake them if necessary.\r\n */\r\nfunction makeMap(str, expectsLowerCase) {\r\n const map = Object.create(null);\r\n const list = str.split(',');\r\n for (let i = 0; i < list.length; i++) {\r\n map[list[i]] = true;\r\n }\r\n return expectsLowerCase ? val => !!map[val.toLowerCase()] : val => !!map[val];\r\n}\n\n/**\r\n * dev only flag -> name mapping\r\n */\r\nconst PatchFlagNames = {\r\n [1 /* TEXT */]: `TEXT`,\r\n [2 /* CLASS */]: `CLASS`,\r\n [4 /* STYLE */]: `STYLE`,\r\n [8 /* PROPS */]: `PROPS`,\r\n [16 /* FULL_PROPS */]: `FULL_PROPS`,\r\n [32 /* HYDRATE_EVENTS */]: `HYDRATE_EVENTS`,\r\n [64 /* STABLE_FRAGMENT */]: `STABLE_FRAGMENT`,\r\n [128 /* KEYED_FRAGMENT */]: `KEYED_FRAGMENT`,\r\n [256 /* UNKEYED_FRAGMENT */]: `UNKEYED_FRAGMENT`,\r\n [512 /* NEED_PATCH */]: `NEED_PATCH`,\r\n [1024 /* DYNAMIC_SLOTS */]: `DYNAMIC_SLOTS`,\r\n [2048 /* DEV_ROOT_FRAGMENT */]: `DEV_ROOT_FRAGMENT`,\r\n [-1 /* HOISTED */]: `HOISTED`,\r\n [-2 /* BAIL */]: `BAIL`\r\n};\n\n/**\r\n * Dev only\r\n */\r\nconst slotFlagsText = {\r\n [1 /* STABLE */]: 'STABLE',\r\n [2 /* DYNAMIC */]: 'DYNAMIC',\r\n [3 /* FORWARDED */]: 'FORWARDED'\r\n};\n\nconst GLOBALS_WHITE_LISTED = 'Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,' +\r\n 'decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,' +\r\n 'Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt';\r\nconst isGloballyWhitelisted = /*#__PURE__*/ makeMap(GLOBALS_WHITE_LISTED);\n\nconst range = 2;\r\nfunction generateCodeFrame(source, start = 0, end = source.length) {\r\n // Split the content into individual lines but capture the newline sequence\r\n // that separated each line. This is important because the actual sequence is\r\n // needed to properly take into account the full line length for offset\r\n // comparison\r\n let lines = source.split(/(\\r?\\n)/);\r\n // Separate the lines and newline sequences into separate arrays for easier referencing\r\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\r\n lines = lines.filter((_, idx) => idx % 2 === 0);\r\n let count = 0;\r\n const res = [];\r\n for (let i = 0; i < lines.length; i++) {\r\n count +=\r\n lines[i].length +\r\n ((newlineSequences[i] && newlineSequences[i].length) || 0);\r\n if (count >= start) {\r\n for (let j = i - range; j <= i + range || end > count; j++) {\r\n if (j < 0 || j >= lines.length)\r\n continue;\r\n const line = j + 1;\r\n res.push(`${line}${' '.repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`);\r\n const lineLength = lines[j].length;\r\n const newLineSeqLength = (newlineSequences[j] && newlineSequences[j].length) || 0;\r\n if (j === i) {\r\n // push underline\r\n const pad = start - (count - (lineLength + newLineSeqLength));\r\n const length = Math.max(1, end > count ? lineLength - pad : end - start);\r\n res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length));\r\n }\r\n else if (j > i) {\r\n if (end > count) {\r\n const length = Math.max(Math.min(end - count, lineLength), 1);\r\n res.push(` | ` + '^'.repeat(length));\r\n }\r\n count += lineLength + newLineSeqLength;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n return res.join('\\n');\r\n}\n\n/**\r\n * On the client we only need to offer special cases for boolean attributes that\r\n * have different names from their corresponding dom properties:\r\n * - itemscope -> N/A\r\n * - allowfullscreen -> allowFullscreen\r\n * - formnovalidate -> formNoValidate\r\n * - ismap -> isMap\r\n * - nomodule -> noModule\r\n * - novalidate -> noValidate\r\n * - readonly -> readOnly\r\n */\r\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\r\nconst isSpecialBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs);\r\n/**\r\n * The full list is needed during SSR to produce the correct initial markup.\r\n */\r\nconst isBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs +\r\n `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,` +\r\n `loop,open,required,reversed,scoped,seamless,` +\r\n `checked,muted,multiple,selected`);\r\n/**\r\n * Boolean attributes should be included if the value is truthy or ''.\r\n * e.g. `<select multiple>` compiles to `{ multiple: '' }`\r\n */\r\nfunction includeBooleanAttr(value) {\r\n return !!value || value === '';\r\n}\r\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\r\nconst attrValidationCache = {};\r\nfunction isSSRSafeAttrName(name) {\r\n if (attrValidationCache.hasOwnProperty(name)) {\r\n return attrValidationCache[name];\r\n }\r\n const isUnsafe = unsafeAttrCharRE.test(name);\r\n if (isUnsafe) {\r\n console.error(`unsafe attribute name: ${name}`);\r\n }\r\n return (attrValidationCache[name] = !isUnsafe);\r\n}\r\nconst propsToAttrMap = {\r\n acceptCharset: 'accept-charset',\r\n className: 'class',\r\n htmlFor: 'for',\r\n httpEquiv: 'http-equiv'\r\n};\r\n/**\r\n * CSS properties that accept plain numbers\r\n */\r\nconst isNoUnitNumericStyleProp = /*#__PURE__*/ makeMap(`animation-iteration-count,border-image-outset,border-image-slice,` +\r\n `border-image-width,box-flex,box-flex-group,box-ordinal-group,column-count,` +\r\n `columns,flex,flex-grow,flex-positive,flex-shrink,flex-negative,flex-order,` +\r\n `grid-row,grid-row-end,grid-row-span,grid-row-start,grid-column,` +\r\n `grid-column-end,grid-column-span,grid-column-start,font-weight,line-clamp,` +\r\n `line-height,opacity,order,orphans,tab-size,widows,z-index,zoom,` +\r\n // SVG\r\n `fill-opacity,flood-opacity,stop-opacity,stroke-dasharray,stroke-dashoffset,` +\r\n `stroke-miterlimit,stroke-opacity,stroke-width`);\r\n/**\r\n * Known attributes, this is used for stringification of runtime static nodes\r\n * so that we don't stringify bindings that cannot be set from HTML.\r\n * Don't also forget to allow `data-*` and `aria-*`!\r\n * Generated from https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes\r\n */\r\nconst isKnownHtmlAttr = /*#__PURE__*/ makeMap(`accept,accept-charset,accesskey,action,align,allow,alt,async,` +\r\n `autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,` +\r\n `border,buffered,capture,challenge,charset,checked,cite,class,code,` +\r\n `codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,` +\r\n `coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,` +\r\n `disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,` +\r\n `formaction,formenctype,formmethod,formnovalidate,formtarget,headers,` +\r\n `height,hidden,high,href,hreflang,http-equiv,icon,id,importance,integrity,` +\r\n `ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,` +\r\n `manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,` +\r\n `open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,` +\r\n `referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,` +\r\n `selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,` +\r\n `start,step,style,summary,tabindex,target,title,translate,type,usemap,` +\r\n `value,width,wrap`);\r\n/**\r\n * Generated from https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute\r\n */\r\nconst isKnownSvgAttr = /*#__PURE__*/ makeMap(`xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,` +\r\n `arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,` +\r\n `baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,` +\r\n `clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,` +\r\n `color-interpolation-filters,color-profile,color-rendering,` +\r\n `contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,` +\r\n `descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,` +\r\n `dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,` +\r\n `fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,` +\r\n `font-family,font-size,font-size-adjust,font-stretch,font-style,` +\r\n `font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,` +\r\n `glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,` +\r\n `gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,` +\r\n `horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,` +\r\n `k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,` +\r\n `lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,` +\r\n `marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,` +\r\n `mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,` +\r\n `name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,` +\r\n `overflow,overline-position,overline-thickness,panose-1,paint-order,path,` +\r\n `pathLength,patternContentUnits,patternTransform,patternUnits,ping,` +\r\n `pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,` +\r\n `preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,` +\r\n `rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,` +\r\n `restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,` +\r\n `specularConstant,specularExponent,speed,spreadMethod,startOffset,` +\r\n `stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,` +\r\n `strikethrough-position,strikethrough-thickness,string,stroke,` +\r\n `stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,` +\r\n `stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,` +\r\n `systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,` +\r\n `text-decoration,text-rendering,textLength,to,transform,transform-origin,` +\r\n `type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,` +\r\n `unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,` +\r\n `v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,` +\r\n `vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,` +\r\n `writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,` +\r\n `xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,` +\r\n `xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`);\n\nfunction normalizeStyle(value) {\r\n if (isArray(value)) {\r\n const res = {};\r\n for (let i = 0; i < value.length; i++) {\r\n const item = value[i];\r\n const normalized = isString(item)\r\n ? parseStringStyle(item)\r\n : normalizeStyle(item);\r\n if (normalized) {\r\n for (const key in normalized) {\r\n res[key] = normalized[key];\r\n }\r\n }\r\n }\r\n return res;\r\n }\r\n else if (isString(value)) {\r\n return value;\r\n }\r\n else if (isObject(value)) {\r\n return value;\r\n }\r\n}\r\nconst listDelimiterRE = /;(?![^(]*\\))/g;\r\nconst propertyDelimiterRE = /:(.+)/;\r\nfunction parseStringStyle(cssText) {\r\n const ret = {};\r\n cssText.split(listDelimiterRE).forEach(item => {\r\n if (item) {\r\n const tmp = item.split(propertyDelimiterRE);\r\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\r\n }\r\n });\r\n return ret;\r\n}\r\nfunction stringifyStyle(styles) {\r\n let ret = '';\r\n if (!styles || isString(styles)) {\r\n return ret;\r\n }\r\n for (const key in styles) {\r\n const value = styles[key];\r\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\r\n if (isString(value) ||\r\n (typeof value === 'number' && isNoUnitNumericStyleProp(normalizedKey))) {\r\n // only render valid values\r\n ret += `${normalizedKey}:${value};`;\r\n }\r\n }\r\n return ret;\r\n}\r\nfunction normalizeClass(value) {\r\n let res = '';\r\n if (isString(value)) {\r\n res = value;\r\n }\r\n else if (isArray(value)) {\r\n for (let i = 0; i < value.length; i++) {\r\n const normalized = normalizeClass(value[i]);\r\n if (normalized) {\r\n res += normalized + ' ';\r\n }\r\n }\r\n }\r\n else if (isObject(value)) {\r\n for (const name in value) {\r\n if (value[name]) {\r\n res += name + ' ';\r\n }\r\n }\r\n }\r\n return res.trim();\r\n}\r\nfunction normalizeProps(props) {\r\n if (!props)\r\n return null;\r\n let { class: klass, style } = props;\r\n if (klass && !isString(klass)) {\r\n props.class = normalizeClass(klass);\r\n }\r\n if (style) {\r\n props.style = normalizeStyle(style);\r\n }\r\n return props;\r\n}\n\n// These tag configs are shared between compiler-dom and runtime-dom, so they\r\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Element\r\nconst HTML_TAGS = 'html,body,base,head,link,meta,style,title,address,article,aside,footer,' +\r\n 'header,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,' +\r\n 'figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,' +\r\n 'data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,' +\r\n 'time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,' +\r\n 'canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,' +\r\n 'th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,' +\r\n 'option,output,progress,select,textarea,details,dialog,menu,' +\r\n 'summary,template,blockquote,iframe,tfoot';\r\n// https://developer.mozilla.org/en-US/docs/Web/SVG/Element\r\nconst SVG_TAGS = 'svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,' +\r\n 'defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,' +\r\n 'feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,' +\r\n 'feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,' +\r\n 'feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,' +\r\n 'fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,' +\r\n 'foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,' +\r\n 'mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,' +\r\n 'polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,' +\r\n 'text,textPath,title,tspan,unknown,use,view';\r\nconst VOID_TAGS = 'area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr';\r\nconst isHTMLTag = /*#__PURE__*/ makeMap(HTML_TAGS);\r\nconst isSVGTag = /*#__PURE__*/ makeMap(SVG_TAGS);\r\nconst isVoidTag = /*#__PURE__*/ makeMap(VOID_TAGS);\n\nconst escapeRE = /[\"'&<>]/;\r\nfunction escapeHtml(string) {\r\n const str = '' + string;\r\n const match = escapeRE.exec(str);\r\n if (!match) {\r\n return str;\r\n }\r\n let html = '';\r\n let escaped;\r\n let index;\r\n let lastIndex = 0;\r\n for (index = match.index; index < str.length; index++) {\r\n switch (str.charCodeAt(index)) {\r\n case 34: // \"\r\n escaped = '&quot;';\r\n break;\r\n case 38: // &\r\n escaped = '&amp;';\r\n break;\r\n case 39: // '\r\n escaped = '&#39;';\r\n break;\r\n case 60: // <\r\n escaped = '&lt;';\r\n break;\r\n case 62: // >\r\n escaped = '&gt;';\r\n break;\r\n default:\r\n continue;\r\n }\r\n if (lastIndex !== index) {\r\n html += str.slice(lastIndex, index);\r\n }\r\n lastIndex = index + 1;\r\n html += escaped;\r\n }\r\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\r\n}\r\n// https://www.w3.org/TR/html52/syntax.html#comments\r\nconst commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g;\r\nfunction escapeHtmlComment(src) {\r\n return src.replace(commentStripRE, '');\r\n}\n\nfunction looseCompareArrays(a, b) {\r\n if (a.length !== b.length)\r\n return false;\r\n let equal = true;\r\n for (let i = 0; equal && i < a.length; i++) {\r\n equal = looseEqual(a[i], b[i]);\r\n }\r\n return equal;\r\n}\r\nfunction looseEqual(a, b) {\r\n if (a === b)\r\n return true;\r\n let aValidType = isDate(a);\r\n let bValidType = isDate(b);\r\n if (aValidType || bValidType) {\r\n return aValidType && bValidType ? a.getTime() === b.getTime() : false;\r\n }\r\n aValidType = isArray(a);\r\n bValidType = isArray(b);\r\n if (aValidType || bValidType) {\r\n return aValidType && bValidType ? looseCompareArrays(a, b) : false;\r\n }\r\n aValidType = isObject(a);\r\n bValidType = isObject(b);\r\n if (aValidType || bValidType) {\r\n /* istanbul ignore if: this if will probably never be called */\r\n if (!aValidType || !bValidType) {\r\n return false;\r\n }\r\n const aKeysCount = Object.keys(a).length;\r\n const bKeysCount = Object.keys(b).length;\r\n if (aKeysCount !== bKeysCount) {\r\n return false;\r\n }\r\n for (const key in a) {\r\n const aHasKey = a.hasOwnProperty(key);\r\n const bHasKey = b.hasOwnProperty(key);\r\n if ((aHasKey && !bHasKey) ||\r\n (!aHasKey && bHasKey) ||\r\n !looseEqual(a[key], b[key])) {\r\n return false;\r\n }\r\n }\r\n }\r\n return String(a) === String(b);\r\n}\r\nfunction looseIndexOf(arr, val) {\r\n return arr.findIndex(item => looseEqual(item, val));\r\n}\n\n/**\r\n * For converting {{ interpolation }} values to displayed strings.\r\n * @private\r\n */\r\nconst toDisplayString = (val) => {\r\n return val == null\r\n ? ''\r\n : isArray(val) ||\r\n (isObject(val) &&\r\n (val.toString === objectToString || !isFunction(val.toString)))\r\n ? JSON.stringify(val, replacer, 2)\r\n : String(val);\r\n};\r\nconst replacer = (_key, val) => {\r\n // can't use isRef here since @vue/shared has no deps\r\n if (val && val.__v_isRef) {\r\n return replacer(_key, val.value);\r\n }\r\n else if (isMap(val)) {\r\n return {\r\n [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val]) => {\r\n entries[`${key} =>`] = val;\r\n return entries;\r\n }, {})\r\n };\r\n }\r\n else if (isSet(val)) {\r\n return {\r\n [`Set(${val.size})`]: [...val.values()]\r\n };\r\n }\r\n else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\r\n return String(val);\r\n }\r\n return val;\r\n};\n\nconst EMPTY_OBJ = (process.env.NODE_ENV !== 'production')\r\n ? Object.freeze({})\r\n : {};\r\nconst EMPTY_ARR = (process.env.NODE_ENV !== 'production') ? Object.freeze([]) : [];\r\nconst NOOP = () => { };\r\n/**\r\n * Always return false.\r\n */\r\nconst NO = () => false;\r\nconst onRE = /^on[^a-z]/;\r\nconst isOn = (key) => onRE.test(key);\r\nconst isModelListener = (key) => key.startsWith('onUpdate:');\r\nconst extend = Object.assign;\r\nconst remove = (arr, el) => {\r\n const i = arr.indexOf(el);\r\n if (i > -1) {\r\n arr.splice(i, 1);\r\n }\r\n};\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\r\nconst isArray = Array.isArray;\r\nconst isMap = (val) => toTypeString(val) === '[object Map]';\r\nconst isSet = (val) => toTypeString(val) === '[object Set]';\r\nconst isDate = (val) => val instanceof Date;\r\nconst isFunction = (val) => typeof val === 'function';\r\nconst isString = (val) => typeof val === 'string';\r\nconst isSymbol = (val) => typeof val === 'symbol';\r\nconst isObject = (val) => val !== null && typeof val === 'object';\r\nconst isPromise = (val) => {\r\n return isObject(val) && isFunction(val.then) && isFunction(val.catch);\r\n};\r\nconst objectToString = Object.prototype.toString;\r\nconst toTypeString = (value) => objectToString.call(value);\r\nconst toRawType = (value) => {\r\n // extract \"RawType\" from strings like \"[object RawType]\"\r\n return toTypeString(value).slice(8, -1);\r\n};\r\nconst isPlainObject = (val) => toTypeString(val) === '[object Object]';\r\nconst isIntegerKey = (key) => isString(key) &&\r\n key !== 'NaN' &&\r\n key[0] !== '-' &&\r\n '' + parseInt(key, 10) === key;\r\nconst isReservedProp = /*#__PURE__*/ makeMap(\r\n// the leading comma is intentional so empty string \"\" is also included\r\n',key,ref,ref_for,ref_key,' +\r\n 'onVnodeBeforeMount,onVnodeMounted,' +\r\n 'onVnodeBeforeUpdate,onVnodeUpdated,' +\r\n 'onVnodeBeforeUnmount,onVnodeUnmounted');\r\nconst cacheStringFunction = (fn) => {\r\n const cache = Object.create(null);\r\n return ((str) => {\r\n const hit = cache[str];\r\n return hit || (cache[str] = fn(str));\r\n });\r\n};\r\nconst camelizeRE = /-(\\w)/g;\r\n/**\r\n * @private\r\n */\r\nconst camelize = cacheStringFunction((str) => {\r\n return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : ''));\r\n});\r\nconst hyphenateRE = /\\B([A-Z])/g;\r\n/**\r\n * @private\r\n */\r\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, '-$1').toLowerCase());\r\n/**\r\n * @private\r\n */\r\nconst capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));\r\n/**\r\n * @private\r\n */\r\nconst toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``);\r\n// compare whether a value has changed, accounting for NaN.\r\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\r\nconst invokeArrayFns = (fns, arg) => {\r\n for (let i = 0; i < fns.length; i++) {\r\n fns[i](arg);\r\n }\r\n};\r\nconst def = (obj, key, value) => {\r\n Object.defineProperty(obj, key, {\r\n configurable: true,\r\n enumerable: false,\r\n value\r\n });\r\n};\r\nconst toNumber = (val) => {\r\n const n = parseFloat(val);\r\n return isNaN(n) ? val : n;\r\n};\r\nlet _globalThis;\r\nconst getGlobalThis = () => {\r\n return (_globalThis ||\r\n (_globalThis =\r\n typeof globalThis !== 'undefined'\r\n ? globalThis\r\n : typeof self !== 'undefined'\r\n ? self\r\n : typeof window !== 'undefined'\r\n ? window\r\n : typeof global !== 'undefined'\r\n ? global\r\n : {}));\r\n};\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, camelize, capitalize, def, escapeHtml, escapeHtmlComment, extend, generateCodeFrame, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isDate, isFunction, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownSvgAttr, isMap, isModelListener, isNoUnitNumericStyleProp, isObject, isOn, isPlainObject, isPromise, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","module.exports = require(\"regenerator-runtime\");\n","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","<template>\n <div id=\"container\" ref=\"container\">\n <template v-if=\"ready\">\n <div\n class=\"page-config\"\n :style=\"style\"\n >\n <slot></slot>\n </div>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, nextTick, computed, ref, onMounted, onUnmounted } from 'vue'\nimport { debounce } from 'lodash-es'\nimport { pageConfigComponentProps } from './props'\nimport { useImagePath } from '../../_utils/hooks'\nexport default defineComponent({\n name: 'EcanPageConfig',\n props: {\n ...pageConfigComponentProps\n },\n setup (props) {\n // 大屏设计容器\n const style = computed(() => ({\n width: props.width,\n height: props.height,\n backgroundColor: props.backgroundColor,\n backgroundImage: useImagePath(props.backgroundImage as string),\n backgroundSize: props.backgroundSize\n }))\n const width = ref(0)\n const height = ref(0)\n const originalWidth = ref(0)\n const originalHeight = ref(0)\n const ready = ref(false)\n const container = ref()\n let observer: MutationObserver | null\n const initSize = () => {\n return new Promise<void>((resolve) => {\n nextTick(() => {\n // 获取大屏的真实尺寸\n if (props.width && props.height) {\n width.value = parseFloat(props.width)\n height.value = parseFloat(props.height)\n } else {\n width.value = container.value.clientWidth\n height.value = container.value.clientHeight\n }\n // 获取画布尺寸\n if (!originalWidth.value || !originalHeight.value) {\n originalWidth.value = window.screen.width\n originalHeight.value = window.screen.height\n }\n resolve()\n })\n })\n }\n const updateSize = () => {\n if (width.value && height.value) {\n container.value.style.width = `${width.value}px`\n container.value.style.height = `${height.value}px`\n } else {\n container.value.style.width = `${originalWidth.value}px`\n container.value.style.height = `${originalHeight.value}px`\n }\n }\n const updateScale = () => {\n // 获取真实的视口尺寸\n const currentWidth = document.body.clientWidth\n const currentHeight = document.body.clientHeight\n // 获取大屏最终的宽高\n const realWidth = width.value || originalWidth.value\n const realHeight = height.value || originalHeight.value\n const widthScale = currentWidth / realWidth\n const heightScale = currentHeight / realHeight\n container.value && (container.value.style.transform = `scale(${widthScale}, ${heightScale})`)\n }\n const onResize = async () => {\n await initSize()\n updateScale()\n }\n const initMutationObserver = () => {\n const MutationObserver = window.MutationObserver\n observer = new MutationObserver(onResize)\n observer.observe(container.value, {\n attributes: true,\n attributeFilter: ['style'],\n attributeOldValue: true\n })\n }\n const removeMutationObserver = () => {\n if (observer) {\n observer.disconnect()\n observer.takeRecords()\n observer = null\n }\n }\n onMounted(async () => {\n ready.value = false\n await initSize()\n updateSize()\n updateScale()\n window.addEventListener('resize', debounce(onResize, 100))\n initMutationObserver()\n ready.value = true\n })\n onUnmounted(() => {\n window.removeEventListener('resize', onResize)\n removeMutationObserver()\n })\n return {\n style,\n container,\n ready\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n#container {\n position: fixed;\n top: 0;\n left: 0;\n overflow: hidden;\n transform-origin: left top;\n z-index: 999;\n}\n.page-config {\n position: relative;\n overflow: hidden;\n background-size: cover;\n}\n</style>\n","<template>\n <!-- 请勿去除属性id -->\n <div id=\"ProviderConfig\" ref=\"providerConfig\">\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, provide, onUnmounted, ref, onMounted, watch, computed } from 'vue'\nimport mitt from 'mitt'\nimport { EVENT_BUS, GLOBAL_CONFIG, GLOBAL_MODEL, REQUEST_MODEL } from '../../_utils/constant'\nimport { providerConfigComponentProps } from './props'\nexport default defineComponent({\n name: 'EcanProviderConfig',\n props: {\n ...providerConfigComponentProps\n },\n setup (props, { expose }) {\n const providerConfig = ref<HTMLElement>()\n const setTheme = () => {\n providerConfig.value.setAttribute('datav-theme', props.theme)\n }\n watch(() => props.theme, () => {\n setTheme()\n })\n onMounted(() => {\n setTheme()\n })\n const contextRequestUrl = computed(() => props.contextRequestUrl)\n const pageMode = computed(() => props.pageMode)\n const theme = computed(() => props.theme)\n // 提供全局设置\n provide(GLOBAL_CONFIG, {\n // 请求地址\n contextRequestUrl,\n // 模式(普通、预览):目前主要配置初始化是否发起请求\n pageMode,\n // 主题\n theme\n })\n\n // 提供全局变量\n const globalModel = new Map()\n const getGlobalModel = (key: string) => {\n return globalModel.get(key)\n }\n const setGlobalModel = (key: string, value: any) => {\n globalModel.set(key, value)\n }\n provide(GLOBAL_MODEL, {\n getGlobalModel,\n setGlobalModel\n })\n\n // 提供事件\n const eventBus = mitt()\n const onEvent = (key: string, events: { [key:string]: any }) => {\n eventBus.on(key, (k: string) => {\n return Object.prototype.toString.call(events[k]) === '[object Function]' && events[k]()\n })\n onUnmounted(() => {\n eventBus.off(key)\n })\n }\n const offEvent = (key) => {\n eventBus.off(key)\n }\n const emitEvent = (key, eventName) => {\n eventBus.emit(key, eventName)\n }\n provide(EVENT_BUS, {\n onEvent,\n offEvent,\n emitEvent\n })\n\n // 请求排序\n const requestModel = new Map()\n const setRequestSort = (requestFn: Function = () => {}, sortNum: number = 0) => {\n if (requestModel.has(sortNum)) {\n const requestFnList = requestModel.get(sortNum)\n requestFnList?.push(requestFn)\n } else {\n requestModel.set(sortNum, [requestFn])\n }\n }\n provide(REQUEST_MODEL, {\n setRequestSort\n })\n\n const handleRequestFnList = (requestFnList: Array<Function>) => {\n return new Promise((resolve, reject) => {\n const resultList = requestFnList.map(requestFn => requestFn())\n Promise.all(resultList)\n .then(list => {\n resolve(list)\n })\n .catch(err => {\n reject(err)\n })\n })\n }\n\n const handleRequestList = async () => {\n const requestModelArr = Array.from(requestModel)\n // 排序\n requestModelArr.sort((a, b) => b[0] - a[0])\n const len = requestModelArr.length\n try {\n for (let i = 0; i < len; i++) {\n const requestFnList = requestModelArr[i][1]\n await handleRequestFnList(requestFnList)\n }\n } catch (e) {\n console.error(e)\n }\n }\n\n expose({\n touchRequest: handleRequestList\n })\n\n return {\n providerConfig\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <div class=\"skeleton-wrapper\" :style=\"style\" v-if=\"loading\">\n <skeleton :loading=\"loading\"/>\n </div>\n <div class=\"ecan-text\" :style=\"style\" v-html=\"myText\" v-else/>\n</template>\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, ref, unref } from 'vue'\nimport { textComponentProps } from './props'\nimport { usePickComponentStyle, useRequestData, useOnEvent } from '../../_utils/hooks'\nimport { GLOBAL_CONFIG, REQUEST_MODEL } from '../../_utils/constant'\nimport Skeleton from '../../common/skeleton/Skeleton.vue'\nexport default defineComponent({\n name: 'EcanText',\n components: { Skeleton },\n props: {\n ...textComponentProps\n },\n setup (props) {\n const style = usePickComponentStyle(props)\n const myData = ref<{ [key:string]: any }>(props.data as { [key:string]: any })\n const myText = computed(() => {\n let text = props.text as string\n const data = unref(myData)\n const variables = (text).match(/\\{.*?\\}/g)\n if (variables == null || variables.length === 0) return text\n for (let i = 0; i < variables.length; i++) {\n const variable = variables[i]\n const v = variable.slice(1, variable.length - 1)\n const usedVariables = data[v] || ''\n if (usedVariables != null) {\n // 过滤未使用的变量\n text = text.replace(variable, `<span style=\"color:${props.variableColor}\">${usedVariables}</span>`)\n } else {\n // 过滤未使用的变量\n text = text.replace(variable, '')\n }\n }\n return text\n })\n const { pageMode } = inject(GLOBAL_CONFIG, {\n pageMode: 'normal'\n })\n const requestData = useRequestData(props)\n const loading = ref(false)\n const handleRequestData = async () => {\n if (!props.isRequestData || unref(pageMode) === 'preview') return\n try {\n loading.value = true\n const res = await requestData()\n myData.value = res?.data?.data\n } catch (e) {\n console.error(e)\n } finally {\n loading.value = false\n }\n }\n const refreshData = () => {\n handleRequestData()\n }\n useOnEvent(props, {\n refreshData\n })\n\n const { setRequestSort } = inject(REQUEST_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n setRequestSort: (requestFn: Function, sortNum: number) => void 0\n })\n\n setRequestSort(handleRequestData, props.requestSort as number)\n\n return {\n style,\n myText,\n loading\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.skeleton-wrapper {\n overflow: hidden;\n}\n\n.ecan-text {\n overflow: hidden;\n display: table-cell;\n}\n</style>\n","<template>\n <div class=\"red\">\n {{ text }}\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref } from 'vue'\nexport default defineComponent({\n name: 'EcanScrollText',\n setup () {\n const text = ref('基础文本')\n return {\n text\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.red {\n color: red;\n}\n</style>\n","<template>\n <div class=\"time-display\" :style=\"style\">\n {{ time }}\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, onMounted, onUnmounted, ref } from 'vue'\nimport { timeDisplayComponentProps } from './props'\nimport dayjs from 'dayjs'\nimport { usePickComponentStyle } from '../../_utils/hooks'\nexport default defineComponent({\n name: 'EcanTimeDisplay',\n props: {\n ...timeDisplayComponentProps\n },\n setup (props) {\n const style = usePickComponentStyle(props)\n const time = ref(dayjs().format(props.format as string))\n let timer = null\n const clearTimer = () => {\n clearInterval(timer)\n timer = null\n }\n const setTimer = () => {\n if (timer) {\n clearTimer()\n }\n timer = setInterval(() => {\n time.value = dayjs().add(1, 's').format(props.format as string)\n }, 1000)\n }\n onMounted(() => {\n setTimer()\n })\n onUnmounted(() => {\n clearTimer()\n })\n return {\n style,\n time\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.time-display {\n overflow: hidden;\n display: table-cell;\n}\n</style>\n","export default function _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}","<template>\n <div class=\"ecan-list\" :style=\"style\">\n <skeleton :loading=\"loading\">\n <template v-if=\"dataSource.length > 0\">\n <div\n class=\"item\"\n :style=\"{\n backgroundColor: backgroundColor\n }\"\n v-if=\"useTitle\"\n >\n <div class=\"ranking\" v-if=\"useRanking\" />\n <div\n class=\"column\"\n v-for=\"(column, i) in columns\"\n :key=\"column.key || i\"\n :style=\"{\n color: column.titleColor,\n ...columnStyle\n }\"\n >\n {{ column.title }}\n </div>\n </div>\n <div\n class=\"item\"\n :style=\"{\n backgroundColor: backgroundColor\n }\"\n v-for=\"(item, i) in dataSource.slice(0, sliceCount)\"\n :key=\"item.id || i\"\n >\n <div class=\"ranking\" v-if=\"useRanking\">\n <div class=\"icon\"/>\n <div class=\"sort\">\n Top {{ i + 1 }}\n </div>\n </div>\n <div\n :class=\"['column', contrastClass(item[column.key], column.format)]\"\n v-for=\"column in columns\"\n :key=\"column.key\"\n :style=\"{\n fontSize: column.fontSize,\n color: contrastClass(item[column.key], column.format) === '' ? column.color : '',\n fontWeight: column.fontWeight,\n ...columnStyle\n }\"\n >\n {{ (column.format != null || column.format !== '') && formatFn(item[column.key], column.format) }}\n </div>\n </div>\n </template>\n <div class=\"empty\" v-else>\n 暂无数据\n </div>\n </skeleton>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, ref, unref } from 'vue'\nimport { listComponentProps, ListEvents } from './props'\nimport { useOnEvent, usePickComponentStyle, useRequestData } from 'src/_utils/hooks'\nimport { formatMoney, formatPercentage } from 'src/_utils/util'\nimport { GLOBAL_CONFIG, REQUEST_MODEL } from 'src/_utils/constant'\nimport Skeleton from 'src/common/skeleton'\nexport default defineComponent({\n name: 'EcanList',\n components: { Skeleton },\n props: {\n ...listComponentProps\n },\n setup (props) {\n const dataSource = ref<{[key:string]: any} []>(props.data as {[key:string]: any} [])\n const style = usePickComponentStyle(props, ['backgroundColor'])\n const columnStyle = computed(() => {\n if (props.useRanking) {\n return {\n textAlign: 'center'\n }\n } else {\n return {\n textAlign: 'left'\n }\n }\n })\n type Format = 'money' | 'percentage' | 'contrast' | ''\n const formatFn = (value: string | number, format?: Format) => {\n if (format == null || format === '') return value\n const map = {\n money: formatMoney,\n percentage: formatPercentage,\n contrast: formatPercentage\n }\n return map[format](value) || ''\n }\n const contrastClass = (value: string | number, format: Format) => {\n const _value = parseFloat(value + '')\n if (format !== 'contrast') {\n return ''\n }\n switch (true) {\n case _value >= 0:\n return 'goUp'\n case _value < 0:\n return 'goDown'\n }\n }\n const requestData = useRequestData(props)\n const { pageMode } = inject(GLOBAL_CONFIG, {\n pageMode: 'normal'\n })\n const loading = ref(false)\n const handleRequestData = async () => {\n if (!props.isRequestData || unref(pageMode) === 'preview') return\n\n try {\n loading.value = true\n const res = await requestData()\n dataSource.value = res?.data?.data.rows || []\n } catch (e) {\n console.error(e)\n } finally {\n loading.value = false\n }\n }\n\n const refreshData = () => {\n handleRequestData()\n }\n\n useOnEvent(props, {\n refreshData\n } as ListEvents)\n\n const { setRequestSort } = inject(REQUEST_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n setRequestSort: (requestFn: Function, sortNum: number) => void 0\n })\n setRequestSort(handleRequestData, props.requestSort as number)\n\n return {\n style,\n formatFn,\n columnStyle,\n contrastClass,\n dataSource,\n loading\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n .ecan-list {\n overflow: hidden;\n }\n .item {\n display: flex;\n align-items: center;\n height: 32px;\n padding-left: 28px;\n padding-right: 20px;\n width: 100%;\n margin-bottom: 11px;\n font-size: 16px;\n color: #ffffff;\n }\n .column {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .ranking {\n flex: 1;\n display: flex;\n align-items: center;\n flex-shrink: 0;\n }\n\n .item:last-child {\n margin-bottom: 0;\n }\n .icon {\n width: 12px;\n height: 8px;\n background: #21BEF7;\n margin-right: 17px;\n opacity: .6;\n }\n .item:nth-child(2) .icon {\n opacity: .8;\n }\n .item:first-child .icon{\n opacity: 1;\n }\n .sort {\n font-weight: 600;\n }\n .goUp {\n color: #FF512E;\n display: flex;\n align-items: center;\n &:before {\n content: '';\n display: block;\n background: url(\"../../assets/go-up.png\");\n width: 12px;\n height: 12px;\n background-repeat: no-repeat;\n background-size: cover;\n margin-right: 2px;\n }\n }\n\n .goDown {\n color: #00F7B4;\n display: flex;\n align-items: center;\n &:before {\n content: '';\n display: block;\n background: url(\"../../assets/go-down.png\");\n width: 12px;\n height: 12px;\n background-repeat: no-repeat;\n background-size: cover;\n margin-right: 2px;\n }\n }\n .empty {\n text-align: center;\n margin-top: 15%;\n }\n [datav-theme='darkBlue'] .empty {\n color: #ffffff;\n }\n</style>\n","<template>\n <div\n class=\"ecan-input\"\n :style=\"style\"\n >\n <a-input\n class=\"input\"\n :value=\"value\"\n :placeholder=\"placeholder\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { usePickComponentStyle } from 'src/_utils/hooks'\nimport { Input as AInput } from 'ant-design-vue'\nimport 'ant-design-vue/es/input/style/index'\nimport { inputComponentProps } from './props'\nexport default defineComponent({\n name: 'EcanInput',\n components: {\n AInput\n },\n props: {\n ...inputComponentProps\n },\n setup (props) {\n const style = usePickComponentStyle(props)\n return {\n style\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.input {\n width: 100%;\n height: 100%;\n}\n</style>\n","<template>\n <div\n class=\"ecan-date-picker\"\n :style=\"style\"\n >\n <!-- 宽度style有效,class无效 -->\n <a-date-picker\n class=\"date-picker\"\n v-model:value=\"myValue\"\n :format=\"format\"\n :picker=\"picker\"\n :showTime=\"showTime\"\n :locale=\"locale\"\n @change=\"dateChange\"\n :getPopupContainer=\"getPopupContainer\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject, ref } from 'vue'\nimport { Events } from '../../_utils/props'\nimport { datePickerComponentProps } from './props'\nimport { DatePicker as ADatePicker } from 'ant-design-vue'\nimport 'ant-design-vue/es/date-picker/style/index'\nimport { usePickComponentStyle, useOnEvent, useEmitEvent } from '../../_utils/hooks'\nimport locale from 'ant-design-vue/es/date-picker/locale/zh_CN'\nimport dayjs, { Dayjs } from 'dayjs'\nimport { GLOBAL_MODEL } from 'src/_utils/constant'\nexport default defineComponent({\n name: 'EcanDatePicker',\n props: {\n ...datePickerComponentProps\n },\n components: {\n ADatePicker\n },\n setup (props) {\n const style = usePickComponentStyle(props)\n const getPopupContainer = () => document.getElementById('ProviderConfig') || document.body\n const myValue = ref<Dayjs>(dayjs(props.value as string))\n const { setGlobalModel } = inject(GLOBAL_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n setGlobalModel: (key: string, value: any) => void 0\n })\n // 初始化设置值\n setGlobalModel(props.id as string, {\n type: props.type,\n format: props.format,\n value: myValue\n })\n // 注册函数触发事件拦截器\n const events = props.events as Events\n const emitEvent = useEmitEvent(events)\n const dateChange = emitEvent('dateChange', () => {\n })\n // TODO 传入需要注册的参数\n useOnEvent(props, {\n dateChange\n })\n return {\n style,\n getPopupContainer,\n myValue,\n locale,\n dateChange\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.date-picker {\n width: 100%;\n height: 100%\n}\n</style>\n\n<style lang=\"less\">\n[datav-theme='light'] {\n .ant-picker {\n color: rgba(0, 0, 0, 0.85);\n border: 1px solid #d9d9d9;\n }\n .ant-picker-input > input {\n color: rgba(0, 0, 0, 0.85);\n }\n .anticon-calendar {\n color: #333;\n }\n .anticon-close-circle {\n color: #333;\n }\n}\n\n[datav-theme='darkBlue'] {\n .ant-picker {\n background-color: #05164c;\n border: 1px solid #1f63a3;\n color: #fff;\n box-shadow: inset 0 0 10px #005efe;\n }\n .ant-picker-input > input {\n color: #ffffff;\n }\n .anticon-calendar {\n color: #ffffff;\n }\n .anticon-close-circle {\n color: #333;\n }\n .ant-picker-panel {\n background: #05174e;\n border-bottom: 1px solid #69befa;\n }\n .ant-picker-header {\n color: #69befa;\n border-bottom: 1px solid #69befa;\n }\n .ant-picker-panel .ant-picker-footer {\n border-top: 1px solid #69befa;\n }\n .ant-picker-header button {\n color: #69befa;\n }\n .ant-picker-content th {\n color: #69befa;\n }\n .ant-picker-content td {\n color: #69befa;\n }\n .ant-picker-today-btn {\n color: #69befa;\n }\n .ant-picker-cell:hover:not(.ant-picker-cell-in-view) .ant-picker-cell-inner, .ant-picker-cell:hover:not(.ant-picker-cell-selected):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end):not(.ant-picker-cell-range-hover-start):not(.ant-picker-cell-range-hover-end) .ant-picker-cell-inner {\n background: #1890ff;\n }\n}\n</style>\n","<template>\n <div\n class=\"ecan-select\"\n :style=\"style\"\n >\n <a-select\n class=\"select\"\n v-model:value=\"myValue\"\n :options=\"options\"\n :getPopupContainer=\"getPopupContainer\"\n :field-names=\"dataFieldNames\"\n @change=\"selectChange\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject, ref, unref } from 'vue'\nimport { Select as ASelect } from 'ant-design-vue'\nimport 'ant-design-vue/es/select/style/index'\nimport { useEmitEvent, useOnEvent, usePickComponentStyle, useRequestData } from '../../_utils/hooks'\nimport { selectComponentProps } from './props'\nimport { GLOBAL_CONFIG, GLOBAL_MODEL, REQUEST_MODEL } from '../../_utils/constant'\nimport { Events } from '../../_utils/props'\nexport default defineComponent({\n name: 'EcanSelect',\n components: {\n ASelect\n },\n props: {\n ...selectComponentProps\n },\n setup (props) {\n const style = usePickComponentStyle(props)\n // 挂在在 ProviderConfig 或者 body 下\n const getPopupContainer = () => document.getElementById('ProviderConfig') || document.body\n const requestData = useRequestData(props)\n const { pageMode } = inject(GLOBAL_CONFIG, {\n pageMode: 'normal'\n })\n const options = ref(props.data as { [key:string]:any } [])\n const myValue = ref(props.value || props.data[0])\n const handleRequestData = async () => {\n if (!props.isRequestData || unref(pageMode) === 'preview') return\n const res = await requestData()\n options.value = res?.data?.data?.rows || []\n const firstOption = unref(options)[0]\n if (props.value === '' && firstOption != null) {\n myValue.value = firstOption[(props.dataFieldNames as { label: string, value: string }).value]\n }\n }\n const { setGlobalModel } = inject(GLOBAL_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n setGlobalModel: (key: string, value: any) => void 0\n })\n // 初始化设置值\n setGlobalModel(props.id as string, {\n type: props.type,\n value: myValue\n })\n // 注册函数触发事件拦截器\n const events = props.events as Events\n const emitEvent = useEmitEvent(events)\n const selectChange = emitEvent('selectChange')\n // TODO 传入需要注册的参数\n useOnEvent(props, {\n selectChange\n })\n const { setRequestSort } = inject(REQUEST_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n setRequestSort: (requestFn: Function, sortNum: number) => void 0\n })\n setRequestSort(handleRequestData, props.requestSort as number)\n return {\n style,\n getPopupContainer,\n myValue,\n selectChange,\n options\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.ecan-select {\n :deep(.ant-select-selector) {\n height: 100% !important;\n }\n}\n\n.select {\n width: 100%;\n height: 100%;\n}\n</style>\n\n<style lang=\"less\">\n[datav-theme='light'] {\n .ant-select:not(.ant-select-customize-input) .ant-select-selector {\n border: 1px solid #d9d9d9;\n }\n .ant-select-dropdown {\n color: rgba(0, 0, 0, 0.85);\n background: #ffffff;\n box-shadow: 0 2px 8px rgb(0 0 0 / 15%);\n }\n .ant-empty-img-simple-g {\n stroke: #d9d9d9;\n }\n .ant-empty-img-simple-ellipse {\n fill: #f5f5f5;\n }\n .ant-empty-img-simple-path {\n fill: #f5f5f5;\n stroke: #d9d9d9;\n }\n .ant-empty-description {\n color: rgba(0, 0, 0, 0.25);\n }\n .anticon-down {\n color: #333;\n }\n}\n\n[datav-theme='darkBlue'] {\n .ant-select:not(.ant-select-customize-input) .ant-select-selector {\n border: 1px solid #1f63a3;\n background-color: #05164c;\n box-shadow: inset 0 0 10px #005efe;\n color: #ffffff;\n }\n .ant-select-dropdown {\n box-shadow: inset 0 0 10px #005efe;\n color: #fff;\n background-color: #05164c;\n }\n .ant-empty-img-simple-g {\n stroke: #69befa;\n }\n .ant-empty-img-simple-ellipse {\n fill-opacity: 0;\n }\n .ant-empty-img-simple-path {\n fill: #69befa;\n stroke: #69befa;\n }\n .ant-empty-description {\n color: #69befa;\n }\n .anticon-down {\n color: #ffffff;\n }\n .ant-select-item {\n color: #ffffff;\n }\n .ant-select-item-option-active {\n background: #1f63a3;\n }\n .ant-select-item-option-selected:not(.ant-select-item-option-disabled) {\n background: #1f63a3;\n }\n}\n</style>\n","<template>\n <div\n class=\"ecan-range-picker\"\n :style=\"style\"\n >\n <a-range-picker\n class=\"range-picker\"\n v-model:value=\"myValue\"\n :format=\"format\"\n :picker=\"picker\"\n :locale=\"locale\"\n :getPopupContainer=\"getPopupContainer\"\n @change=\"dateChange\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, unref, ref, watch } from 'vue'\nimport { rangePickerComponentProps } from './props'\nimport { useEmitEvent, useOnEvent, usePickComponentStyle } from 'src/_utils/hooks'\nimport { RangePicker as ARangePicker } from 'ant-design-vue'\n// import RangePicker as ARangePicker from 'ant-design-vue/es/da'\nimport locale from 'ant-design-vue/es/date-picker/locale/zh_CN'\n// antdv 中 range-picker 组件与 date-picker 共用一个样式\nimport 'ant-design-vue/es/date-picker/style/index'\nimport { GLOBAL_MODEL } from '../../_utils/constant'\nimport { Events } from '../../_utils/props'\nimport dayjs, { Dayjs } from 'dayjs'\nexport default defineComponent({\n name: 'EcanRangePicker',\n components: {\n ARangePicker\n },\n props: {\n ...rangePickerComponentProps\n },\n setup (props) {\n const style = usePickComponentStyle(props)\n const getPopupContainer = () => document.getElementById('ProviderConfig') || document.body\n const startTime = props.startTime as string\n const endTime = props.endTime as string\n const myValue = ref<[Dayjs, Dayjs]>([null, null])\n watch(() => [startTime, endTime], () => {\n myValue.value = startTime && endTime ? [dayjs(startTime), dayjs(endTime)] : [null, null]\n }, {\n immediate: true\n })\n const { setGlobalModel } = inject(GLOBAL_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n setGlobalModel: (key: string, value: any) => void 0\n })\n const myStartTime = computed(() => unref(myValue)[0])\n const myEndTime = computed(() => unref(myValue)[1])\n // 初始化设置值\n setGlobalModel(props.id as string, {\n type: props.type,\n format: props.format,\n startTime: myStartTime,\n endTime: myEndTime\n })\n // 注册函数触发事件拦截器\n const events = props.events as Events\n const emitEvent = useEmitEvent(events)\n const dateChange = emitEvent('dateChange', () => {})\n // TODO 传入需要注册的参数\n useOnEvent(props, {\n dateChange\n })\n return {\n style,\n getPopupContainer,\n locale,\n dateChange,\n myValue\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.range-picker {\n width: 100%;\n height: 100%;\n}\n</style>\n\n<style lang=\"less\">\n[datav-theme='light'] {\n .ant-picker {\n color: rgba(0, 0, 0, 0.85);\n border: 1px solid #d9d9d9;\n }\n .ant-picker-input > input {\n color: rgba(0, 0, 0, 0.85);\n }\n}\n\n[datav-theme='darkBlue'] {\n .ant-picker {\n background-color: #05164c;\n border: 1px solid #1f63a3;\n color: #fff;\n box-shadow: inset 0 0 10px #005efe;\n }\n .ant-picker-range-arrow::after {\n border-color: #05164c #05164c transparent transparent;\n }\n .ant-picker-input > input {\n color: #ffffff;\n }\n .anticon-calendar {\n color: #ffffff;\n }\n .anticon-close-circle {\n color: #333;\n }\n .ant-picker-panel {\n background-color: #05164c;\n border-bottom: 1px solid #69befa;\n }\n .ant-picker-header {\n color: #69befa;\n border-bottom: 1px solid #69befa;\n }\n .ant-picker-panel .ant-picker-footer {\n border-top: 1px solid #69befa;\n }\n .ant-picker-header button {\n color: #69befa;\n }\n .ant-picker-content th {\n color: #69befa;\n }\n .ant-picker-content td {\n color: #69befa;\n }\n .ant-picker-today-btn {\n color: #69befa;\n }\n .ant-picker-cell:hover:not(.ant-picker-cell-in-view) .ant-picker-cell-inner, .ant-picker-cell:hover:not(.ant-picker-cell-selected):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end):not(.ant-picker-cell-range-hover-start):not(.ant-picker-cell-range-hover-end) .ant-picker-cell-inner {\n background: #1890ff;\n }\n .anticon-swap-right {\n color: #ffffff;\n }\n /*.ant-picker-cell-in-view.ant-picker-cell-in-range::before {\n background: none;\n }\n\n .ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single)::before, .ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single)::before {\n background: none;\n }*/\n}\n</style>\n","<template>\n <div\n class=\"ecan-input\"\n :style=\"style\"\n >\n <a-button\n class=\"button\"\n block\n @click=\"click\"\n >\n 测试\n </a-button>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { usePickComponentStyle, useEmitEvent } from 'src/_utils/hooks'\nimport { Button as AButton } from 'ant-design-vue'\nimport 'ant-design-vue/es/button/style/index'\nimport { buttonComponentProps } from './props'\nimport { Events } from 'src/_utils/props'\nexport default defineComponent({\n name: 'EcanButton',\n components: {\n AButton\n },\n props: {\n ...buttonComponentProps\n },\n setup (props) {\n const style = usePickComponentStyle(props)\n const events = props.events as Events\n // 拦截触发事件\n const emitEvent = useEmitEvent(events)\n // click 是 event 名称\n const click = emitEvent('click')\n return {\n style,\n click\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.button {\n width: 100%;\n height: 100%;\n}\n</style>\n","<template>\n <div class=\"ecan-tabs\" :style=\"style\">\n <div\n :class=\"['tab']\"\n :style=\"{\n color: isActive(index) ? activeTabColor : tabColor,\n backgroundImage: isActive(index) ? useImagePath(activeTabBackgroundImage, true) : useImagePath(tabBackgroundImage, true),\n marginRight: tabBarGutter,\n fontSize: tabFontSize\n }\"\n v-for=\"(tab, index) in myData\"\n :key=\"index\"\n @click=\"tabChange(tab, index)\"\n >\n {{tab.title}}\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject, ref, unref } from 'vue'\nimport { tabsComponentProps } from './props'\nimport { useEmitEvent, useOnEvent, usePickComponentStyle, useImagePath } from '../../_utils/hooks'\nimport { GLOBAL_MODEL } from '../../_utils/constant'\nimport { Events } from '../../_utils/props'\nexport default defineComponent({\n name: 'EcanTabs',\n props: {\n ...tabsComponentProps\n },\n setup (props) {\n const style = usePickComponentStyle(props)\n const activeKey = ref(0)\n const myData = ref(props.data as { [key:string]: any } [])\n const isActive = (index: number) => activeKey.value === index\n const myValue = ref(props.value || (unref(myData)[0] && unref(myData)[0]?.value) || '')\n // 注册函数触发事件拦截器\n const events = props.events as Events\n const emitEvent = useEmitEvent(events)\n const tabChange = emitEvent('tabChange', (tab:{ [key:string]:any }, index: number) => {\n myValue.value = tab?.value || ''\n activeKey.value = index\n })\n const { setGlobalModel } = inject(GLOBAL_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n setGlobalModel: (key: string, value: any) => void 0\n })\n // 初始化设置值\n setGlobalModel(props.id as string, {\n value: myValue\n })\n useOnEvent(props, {\n tabChange\n })\n return {\n style,\n activeKey,\n isActive,\n tabChange,\n myData,\n useImagePath\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.ecan-tabs {\n box-sizing: border-box;\n color: #333333;\n display: flex;\n}\n\n.tab {\n flex: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n background-size: 100% 100%;\n background-repeat: no-repeat;\n}\n\n.tab:last-child {\n margin-right: 0 !important;\n}\n</style>\n","<template>\n <div :style=\"style\">\n <spin :spinning=\"loading\">\n <echarts\n :option=\"option\"\n autoresize\n @click=\"click\"\n />\n </spin>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, watch, inject, ref, unref } from 'vue'\nimport { useEmitEvent, usePickComponentStyle, useRequestData, useTransformChartDataByAttrValue, useOnEvent } from 'src/_utils/hooks'\nimport Echarts from 'src/common/echarts'\nimport { pieComponentProps } from './props'\nimport { use } from 'echarts/core'\nimport { CanvasRenderer } from 'echarts/renderers'\nimport { PieChart } from 'echarts/charts'\nimport {\n TitleComponent,\n TooltipComponent,\n LegendComponent\n} from 'echarts/components'\nimport { handleFormatter } from 'src/_utils/util'\nimport { GLOBAL_CONFIG, GLOBAL_MODEL, REQUEST_MODEL } from 'src/_utils/constant'\nimport { ValueTypeDataFieldNames, Events } from 'src/_utils/props'\nimport Spin from 'src/common/spin'\nuse([\n CanvasRenderer,\n PieChart,\n TitleComponent,\n TooltipComponent,\n LegendComponent\n])\nexport default defineComponent({\n name: 'EcanPie',\n props: {\n ...pieComponentProps\n },\n components: {\n Spin,\n Echarts\n },\n setup (props) {\n const style = usePickComponentStyle(props)\n const dataset = ref<{ [key: string]: any }[]>([])\n // const data = computed(() => {\n // if (Array.isArray(props.colors)) {\n // const isUseLabelColors = props.isUseLabelColors\n // const colors = props.colors\n // return (props.data as { [key: string]: any } []).map((item, index) => ({\n // label: isUseLabelColors ? { color: colors[index] } : {},\n // ...item\n // }))\n // }\n // return props.data\n // })\n\n const option = computed(() => ({\n title: {\n text: props.titleText,\n subtext: props.titleSubtext,\n left: 'center'\n },\n // 提示\n tooltip: {\n show: props.tooltipShow,\n trigger: props.tooltipTrigger,\n formatter: handleFormatter(props.tooltipFormatter as string),\n // formatter: function (params) {\n // console.log(params)\n // },\n textStyle: {\n color: props.tooltipTextStyleColor\n }\n },\n // 图例\n legend: {\n show: props.legendShow,\n orient: props.legendOrient,\n top: props.legendTop,\n left: props.legendLeft,\n textStyle: {\n color: props.legendTextStyleColor\n }\n },\n color: props.colors,\n series: [\n {\n ...unref(dataset)[0],\n type: 'pie',\n radius: [props.innerRadius, props.outerRadius],\n center: [props.centerLeft, props.centerTop],\n roseType: props.roseType,\n avoidLabelOverlap: false,\n // data: data.value,\n // data: props.data,\n // dimensions: ['name', 'count'],\n label: {\n show: props.labelPosition !== 'center' && props.labelShow,\n color: props.labelColor,\n fontSize: props.labelFontSize,\n position: props.labelPosition,\n formatter: handleFormatter(props.labelFormatter as string)\n },\n labelLine: {\n show: props.labelLineShow,\n length: props.labelLineLength,\n length2: props.labelLineLength2\n },\n emphasis: {\n itemStyle: {\n shadowBlur: 10,\n shadowOffsetX: 0,\n shadowColor: 'rgba(0, 0, 0, 0.5)'\n },\n label: {\n // show: props.labelPosition === 'center'\n }\n }\n }\n ]\n }))\n\n const { getGlobalModel, setGlobalModel } = inject(GLOBAL_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n getGlobalModel: (key: string) => void 0,\n // @ts-ignore\n // eslint-disable-next-line no-void\n setGlobalModel: (key: string, value: any) => void 0\n })\n\n const { pageMode } = inject(GLOBAL_CONFIG, {\n pageMode: 'normal'\n })\n\n const handleDataset = (data: any = [], dataFieldNames?: ValueTypeDataFieldNames) => {\n const { dataset: d } = useTransformChartDataByAttrValue(data, dataFieldNames)\n dataset.value = d\n }\n\n // 静态数据\n watch(() => props.data, (value: any) => {\n if (!props.isRequestData || unref(pageMode) === 'preview') {\n handleDataset(value)\n }\n }, {\n immediate: true,\n deep: true\n })\n\n const loading = ref(false)\n const requestData = useRequestData(props)\n // 动态数据\n const handleRequestData = async () => {\n if (!props.isRequestData || unref(pageMode) === 'preview') return\n try {\n loading.value = true\n const res = await requestData()\n handleDataset(res?.data?.data?.rows, props.valueTypeDataFieldNames as ValueTypeDataFieldNames)\n } catch (e) {\n console.error(e)\n } finally {\n loading.value = false\n }\n }\n\n const emitEvent = useEmitEvent(props.events as Events)\n\n const click = emitEvent('click', (e) => {\n const id = props.id as string\n const modal = getGlobalModel(id)\n // 约定获取数据\n setGlobalModel(id, { ...modal, RECORD: e?.data })\n })\n\n const refreshData = () => {\n handleRequestData()\n }\n\n useOnEvent(props, {\n refreshData,\n click\n })\n\n const { setRequestSort } = inject(REQUEST_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n setRequestSort: (requestFn: Function, sortNum: number) => void 0\n })\n setRequestSort(handleRequestData, props.requestSort as number)\n\n return {\n option,\n style,\n click,\n loading\n }\n }\n})\n</script>\n","<template>\n <div :style=\"style\">\n <spin :spinning=\"loading\">\n <echarts\n :option=\"option\"\n autoresize\n @click=\"click\"\n />\n </spin>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, ref, unref, watch } from 'vue'\nimport {\n useEmitEvent, useOnEvent,\n usePickComponentStyle,\n useRequestData,\n useTransformChartDataByAttrKey,\n useTransformChartDataByAttrValue\n} from 'src/_utils/hooks'\nimport Echarts from 'src/common/echarts'\nimport { lineComponentProps } from './props'\nimport { use } from 'echarts/core'\nimport { CanvasRenderer } from 'echarts/renderers'\nimport { LineChart } from 'echarts/charts'\nimport {\n TitleComponent,\n LegendComponent\n} from 'echarts/components'\nimport { GLOBAL_CONFIG, GLOBAL_MODEL, REQUEST_MODEL } from 'src/_utils/constant'\nimport { Events, KeyTypeDataFieldNames, ValueTypeDataFieldNames } from 'src/_utils/props'\nimport Spin from '../../common/spin/Spin.vue'\nuse([\n CanvasRenderer,\n LineChart,\n TitleComponent,\n LegendComponent\n])\nexport default defineComponent({\n name: 'EcanLine',\n props: {\n ...lineComponentProps\n },\n components: {\n Spin,\n Echarts\n },\n setup (props) {\n const style = usePickComponentStyle(props)\n const series = ref<{ [key: string]: any }[]>([])\n const dimensions = ref<{ [key: string]: any }[]>([])\n // watch(() => props.data, (value: any) => {\n // if (Array.isArray(value)) {\n // data.value = value.map((item) => [item.name, item.value])\n // }\n // }, {\n // immediate: true\n // })\n const option = computed(() => ({\n title: {\n text: props.titleText,\n subText: props.titleSubtext,\n left: 'center'\n },\n color: props.colors,\n xAxis: {\n type: 'category',\n data: unref(dimensions),\n splitLine: {\n show: props.xAxisSplitLineShow,\n lineStyle: {\n color: props.xAxisSplitLineStyleColor\n }\n },\n axisLabel: {\n color: props.xAxisLabelColor\n },\n axisLine: {\n lineStyle: {\n color: props.xAxisLineStyleColor\n }\n },\n axisTick: {\n show: props.xAxisTickShow\n }\n },\n yAxis: {\n type: 'value',\n splitLine: {\n show: props.yAxisSplitLineShow,\n lineStyle: {\n color: props.yAxisSplitLineStyleColor\n }\n },\n axisLabel: {\n color: props.yAxisLabelColor\n },\n axisLine: {\n lineStyle: {\n color: props.yAxisLineStyleColor\n }\n }\n },\n tooltip: {\n trigger: 'axis'\n },\n // 图例\n legend: {\n show: props.legendShow,\n orient: props.legendOrient,\n top: props.legendTop,\n left: props.legendLeft\n },\n series: unref(series)\n }))\n\n const { getGlobalModel, setGlobalModel } = inject(GLOBAL_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n getGlobalModel: (key: string) => void 0,\n // @ts-ignore\n // eslint-disable-next-line no-void\n setGlobalModel: (key: string, value: any) => void 0\n })\n\n const { pageMode } = inject(GLOBAL_CONFIG, {\n pageMode: 'normal'\n })\n\n const handleDataset = (data: any = [], useDataFieldNames: boolean = false) => {\n // dataFieldNames 字段映射\n let chartData\n if (props.dataFieldConfigType === 'key') {\n const dataFieldNames = useDataFieldNames ? props.keyTypeDataFieldNames as KeyTypeDataFieldNames : null\n chartData = useTransformChartDataByAttrKey(data, dataFieldNames)\n } else if (props.dataFieldConfigType === 'value') {\n const dataFieldNames = useDataFieldNames ? props.valueTypeDataFieldNames as ValueTypeDataFieldNames : null\n chartData = useTransformChartDataByAttrValue(data, dataFieldNames)\n }\n dimensions.value = chartData.dimensions\n const dataset = chartData.dataset\n const temp = [] as {[key: string]: any} []\n const len = dataset.length\n for (let i = 0; i < len; i++) {\n temp.push({\n type: 'line',\n ...dataset[i],\n symbolSize: props.symbolSize,\n smooth: props.smooth,\n lineStyle: {\n width: props.lineStyleWidth\n }\n })\n }\n series.value = temp\n }\n\n // 静态数据\n watch(() => [props.data, props.symbolSize, props.smooth, props.lineStyleWidth], () => {\n if (!props.isRequestData || unref(pageMode) === 'preview') {\n handleDataset(props.data as { [key: string]:any }[])\n }\n }, {\n immediate: true,\n deep: true\n })\n\n const loading = ref(false)\n const requestData = useRequestData(props)\n // 动态数据\n const handleRequestData = async () => {\n if (!props.isRequestData || unref(pageMode) === 'preview') return\n loading.value = true\n const res = await requestData()\n handleDataset(res?.data?.data?.rows, true)\n loading.value = true\n }\n\n const emitEvent = useEmitEvent(props.events as Events)\n\n const click = emitEvent('click', (e) => {\n // TODO 设置是否保存钻取数据\n const id = props.id as string\n const modal = getGlobalModel(id)\n // 约定获取数据\n setGlobalModel(id, { ...modal, RECORD: e?.data })\n })\n\n const refreshData = () => {\n handleRequestData()\n }\n\n useOnEvent(props, {\n refreshData,\n click\n })\n\n const { setRequestSort } = inject(REQUEST_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n setRequestSort: (requestFn: Function, sortNum: number) => void 0\n })\n\n setRequestSort(handleRequestData, props.requestSort as number)\n\n return {\n option,\n style,\n click,\n loading\n }\n }\n})\n</script>\n","<template>\n <div :style=\"style\">\n <spin :spinning=\"loading\">\n <echarts\n :option=\"option\"\n :update-options=\"{ notMerge: true }\"\n autoresize\n @click=\"click\"\n />\n </spin>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, ref, watch, inject, unref } from 'vue'\nimport { usePickComponentStyle, useOnEvent, useTransformChartDataByAttrValue, useTransformChartDataByAttrKey, useEmitEvent, useRequestData } from 'src/_utils/hooks'\nimport { GLOBAL_CONFIG, GLOBAL_MODEL, REQUEST_MODEL } from 'src/_utils/constant'\nimport { ValueTypeDataFieldNames, KeyTypeDataFieldNames, Events } from 'src/_utils/props'\nimport Echarts from 'src/common/echarts'\nimport { barComponentProps, BarEvents } from './props'\nimport { use } from 'echarts/core'\nimport { CanvasRenderer } from 'echarts/renderers'\nimport { BarChart } from 'echarts/charts'\nimport Spin from 'src/common/spin'\nimport {\n TitleComponent,\n LegendComponent,\n DatasetComponent\n} from 'echarts/components'\nimport { handleFormatter } from 'src/_utils/util'\nuse([\n CanvasRenderer,\n BarChart,\n TitleComponent,\n LegendComponent,\n DatasetComponent\n])\nexport default defineComponent({\n name: 'EcanBar',\n props: {\n ...barComponentProps\n },\n components: {\n Spin,\n Echarts\n },\n setup (props) {\n const style = usePickComponentStyle(props)\n const series = ref<{ [key: string]: any }[]>([])\n const dimensions = ref<{ [key: string]: any }[]>([])\n const loading = ref(false)\n const option = computed(() => ({\n title: {\n text: props.titleText,\n subtext: props.titleSubtext,\n left: 'center'\n },\n color: props.colors,\n tooltip: {\n trigger: 'axis',\n show: props.tooltipShow,\n formatter: handleFormatter(props.tooltipFormatter as string),\n textStyle: {\n color: props.tooltipTextStyleColor\n }\n },\n legend: {\n show: props.legendShow,\n orient: props.legendOrient,\n top: props.legendTop,\n left: props.legendLeft,\n textStyle: {\n color: props.legendTextStyleColor\n }\n },\n xAxis: {\n type: 'category',\n data: unref(dimensions),\n splitLine: {\n show: props.xAxisSplitLineShow,\n lineStyle: {\n color: props.xAxisSplitLineStyleColor\n }\n },\n axisLabel: {\n color: props.xAxisLabelColor\n },\n axisLine: {\n lineStyle: {\n color: props.xAxisLineStyleColor\n }\n },\n axisTick: {\n show: props.xAxisTickShow\n }\n },\n yAxis: {\n type: 'value',\n splitLine: {\n show: props.yAxisSplitLineShow,\n lineStyle: {\n color: props.yAxisSplitLineStyleColor\n }\n },\n axisLabel: {\n color: props.yAxisLabelColor\n },\n axisLine: {\n lineStyle: {\n color: props.yAxisLineStyleColor\n }\n }\n },\n series: unref(series)\n }))\n\n const { pageMode } = inject(GLOBAL_CONFIG, {\n pageMode: 'normal'\n })\n\n const handleDataset = (data: any = [], useDataFieldNames: boolean = false) => {\n let chartData\n if (props.dataFieldConfigType === 'key') {\n const dataFieldNames = useDataFieldNames ? props.keyTypeDataFieldNames as KeyTypeDataFieldNames : null\n chartData = useTransformChartDataByAttrKey(data, dataFieldNames)\n } else if (props.dataFieldConfigType === 'value') {\n const dataFieldNames = useDataFieldNames ? props.valueTypeDataFieldNames as ValueTypeDataFieldNames : null\n chartData = useTransformChartDataByAttrValue(data, dataFieldNames)\n }\n const dataSource = chartData.dataset\n // dataFieldNames 字段映射\n dimensions.value = chartData.dimensions\n const temp = [] as {[key: string]: any} []\n const len = dataSource.length\n for (let i = 0; i < len; i++) {\n temp.push({ type: 'bar', ...dataSource[i] })\n }\n series.value = temp\n }\n\n // 静态数据\n watch(() => props.data, (value: any) => {\n if (!props.isRequestData || unref(pageMode) === 'preview') {\n handleDataset(value)\n }\n }, {\n immediate: true,\n deep: true\n })\n\n const requestData = useRequestData(props)\n // 动态数据\n const handleRequestData = async () => {\n if (!props.isRequestData || unref(pageMode) === 'preview') return\n try {\n loading.value = true\n const res = await requestData()\n handleDataset(res?.data?.data?.rows, true)\n } catch (e) {\n console.error(e)\n } finally {\n loading.value = false\n }\n }\n\n const refreshData = () => {\n handleRequestData()\n }\n\n const emitEvent = useEmitEvent(props.events as Events)\n\n const { getGlobalModel, setGlobalModel } = inject(GLOBAL_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n getGlobalModel: (key: string) => void 0,\n // @ts-ignore\n // eslint-disable-next-line no-void\n setGlobalModel: (key: string, value: any) => void 0\n })\n const click = emitEvent('click', (e) => {\n // TODO 设置是否保存钻取数据\n const id = props.id as string\n const modal = getGlobalModel(id)\n // 约定获取数据\n setGlobalModel(id, { ...modal, RECORD: e?.data })\n })\n\n const { setRequestSort } = inject(REQUEST_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n setRequestSort: (requestFn: Function, sortNum: number) => void 0\n })\n\n setRequestSort(handleRequestData, props.requestSort as number)\n\n useOnEvent(props, {\n refreshData,\n click\n } as BarEvents)\n\n return {\n option,\n style,\n refreshData,\n click,\n loading\n }\n }\n})\n</script>\n","<template>\n <div :style=\"style\">\n <spin :spinning=\"loading\">\n <echarts\n :option=\"option\"\n autoresize\n @click=\"click\"\n />\n </spin>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, ref, watch, inject, unref } from 'vue'\nimport { useEmitEvent, useOnEvent, usePickComponentStyle, useRequestData } from 'src/_utils/hooks'\nimport Echarts from 'src/common/echarts'\nimport { scatterComponentProps } from './props'\nimport { use } from 'echarts/core'\nimport { CanvasRenderer } from 'echarts/renderers'\nimport { ScatterChart } from 'echarts/charts'\nimport {\n TitleComponent,\n TooltipComponent,\n LegendComponent\n} from 'echarts/components'\nimport { GLOBAL_CONFIG, GLOBAL_MODEL, REQUEST_MODEL } from '../../_utils/constant'\nimport { Events } from '../../_utils/props'\nimport Spin from '../../common/spin/Spin.vue'\nuse([\n CanvasRenderer,\n ScatterChart,\n TitleComponent,\n TooltipComponent,\n LegendComponent\n])\nexport default defineComponent({\n name: 'EcanScatter',\n props: {\n ...scatterComponentProps\n },\n components: {\n Spin,\n Echarts\n },\n setup (props) {\n const style = usePickComponentStyle(props)\n const dataset = ref<{ [key: string]: any }[]>([])\n const option = computed(() => ({\n title: {\n text: props.titleText,\n subtext: props.titleSubtext,\n left: 'center'\n },\n color: props.colors,\n xAxis: {\n // type: 'value'\n // splitLine: {\n // show: props.xAxisSplitLineShow,\n // lineStyle: {\n // color: props.xAxisSplitLineStyleColor\n // }\n // },\n // axisLabel: {\n // color: props.xAxisLabelColor\n // },\n // axisLine: {\n // lineStyle: {\n // color: props.xAxisLineStyleColor\n // }\n // },\n // axisTick: {\n // show: props.xAxisTickShow\n // }\n },\n yAxis: {\n // splitLine: {\n // show: props.yAxisSplitLineShow,\n // lineStyle: {\n // color: props.yAxisSplitLineStyleColor\n // }\n // },\n // axisLabel: {\n // color: props.yAxisLabelColor\n // },\n // axisLine: {\n // lineStyle: {\n // color: props.yAxisLineStyleColor\n // }\n // }\n },\n // 提示\n tooltip: {\n show: props.tooltipShow,\n trigger: props.tooltipTrigger,\n formatter: props.tooltipFormatter\n },\n // 图例\n legend: {\n show: props.legendShow,\n orient: props.legendOrient,\n top: props.legendTop,\n left: props.legendLeft\n },\n series: [\n {\n data: unref(dataset),\n type: 'scatter',\n symbolSize: props.symbolSize\n }\n ]\n }))\n\n const { getGlobalModel, setGlobalModel } = inject(GLOBAL_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n getGlobalModel: (key: string) => void 0,\n // @ts-ignore\n // eslint-disable-next-line no-void\n setGlobalModel: (key: string, value: any) => void 0\n })\n\n const { pageMode } = inject(GLOBAL_CONFIG, {\n pageMode: 'normal'\n })\n\n const handleDataset = (data: any = [], dataFieldNames?: { name: string, value:string }) => {\n const { name: x = 'name', value: y = 'value' } = dataFieldNames || {}\n dataset.value = data.map(item => [item[x], item[y]])\n }\n\n // 静态数据\n watch(() => props.data, (value: any) => {\n if (!props.isRequestData || unref(pageMode) === 'preview') {\n handleDataset(value)\n }\n }, {\n immediate: true,\n deep: true\n })\n\n const loading = ref(false)\n\n const requestData = useRequestData(props)\n // 动态数据\n const handleRequestData = async () => {\n if (!props.isRequestData || unref(pageMode) === 'preview') return\n loading.value = true\n try {\n const res = await requestData()\n handleDataset(res?.data?.data?.rows, props.dataFieldNames as { name: string, value:string })\n } catch (e) {\n console.error(e)\n } finally {\n loading.value = false\n }\n }\n\n const emitEvent = useEmitEvent(props.events as Events)\n\n const click = emitEvent('click', (e) => {\n const id = props.id as string\n const modal = getGlobalModel(id)\n // 约定获取数据\n setGlobalModel(id, { ...modal, RECORD: e?.data })\n })\n\n const refreshData = () => {\n handleRequestData()\n }\n\n useOnEvent(props, {\n refreshData,\n click\n })\n\n const { setRequestSort } = inject(REQUEST_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n setRequestSort: (requestFn: Function, sortNum: number) => void 0\n })\n\n setRequestSort(handleRequestData, props.requestSort as number)\n\n return {\n option,\n style,\n click,\n loading\n }\n }\n})\n</script>\n","<template>\n <div :style=\"style\">\n <echarts\n :option=\"myOption\"\n :update-options=\"{ notMerge: true }\"\n autoresize\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, watch, ref } from 'vue'\nimport Echarts from '../../common/echarts'\nimport { customGraphComponentProps } from './props'\nimport { usePickComponentStyle } from '../../_utils/hooks'\nimport * as echarts from 'echarts'\n// import 'echarts/components'\nexport default defineComponent({\n name: 'EcanCustomGraph',\n props: {\n ...customGraphComponentProps\n },\n components: {\n Echarts\n },\n setup (props) {\n const style = usePickComponentStyle(props)\n const myOption = ref()\n watch(() => props.optionCode, (optionCode: string) => {\n /* // eslint-disable-next-line\n let option = {}\n // eslint-disable-next-line\n eval(props.optionCode as string)\n myOption.value = option */\n try {\n // eslint-disable-next-line\n const evalCopy = eval\n myOption.value = evalCopy(optionCode)\n } catch (e) {\n console.error(e)\n }\n }, {\n immediate: true\n })\n return {\n style,\n myOption,\n echarts\n }\n }\n})\n</script>\n","<template>\n <div :style=\"style\">\n <spin :spinning=\"loading\">\n <echarts\n :option=\"option\"\n :update-options=\"{ notMerge: true }\"\n autoresize\n @click=\"click\"\n />\n </spin>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, ref, unref, watch } from 'vue'\nimport {\n useEmitEvent,\n useOnEvent,\n usePickComponentStyle,\n useRequestData, useTransformChartDataByAttrKey,\n useTransformChartDataByAttrValue\n} from 'src/_utils/hooks'\nimport { comboGraphComponentProps } from './props'\nimport { handleFormatter } from 'src/_utils/util'\nimport { GLOBAL_CONFIG, GLOBAL_MODEL, REQUEST_MODEL } from 'src/_utils/constant'\nimport { Events, KeyTypeDataFieldNames, ValueTypeDataFieldNames } from 'src/_utils/props'\nimport { BarEvents } from '../bar'\nimport { use } from 'echarts/core'\nimport { CanvasRenderer } from 'echarts/renderers'\nimport { BarChart, LineChart } from 'echarts/charts'\nimport { DatasetComponent, LegendComponent, TitleComponent } from 'echarts/components'\nimport Echarts from 'src/common/echarts'\nimport Spin from 'src/common/spin/'\nuse([\n CanvasRenderer,\n BarChart,\n LineChart,\n TitleComponent,\n LegendComponent,\n DatasetComponent\n])\nexport default defineComponent({\n name: 'EcanComboGraph',\n props: {\n ...comboGraphComponentProps\n },\n components: {\n Spin,\n Echarts\n },\n setup (props) {\n const style = usePickComponentStyle(props)\n const series = ref<{ [key: string]: any }[]>([])\n const dimensions = ref<{ [key: string]: any }[]>([])\n\n const option = computed(() => ({\n title: {\n text: props.titleText,\n subtext: props.titleSubtext,\n left: 'center'\n },\n color: props.colors,\n tooltip: {\n trigger: 'axis',\n show: props.tooltipShow,\n formatter: handleFormatter(props.tooltipFormatter as string),\n textStyle: {\n color: props.tooltipTextStyleColor\n }\n },\n legend: {\n show: props.legendShow,\n orient: props.legendOrient,\n top: props.legendTop,\n left: props.legendLeft,\n textStyle: {\n color: props.legendTextStyleColor\n }\n },\n xAxis: {\n type: 'category',\n data: unref(dimensions),\n splitLine: {\n show: props.xAxisSplitLineShow,\n lineStyle: {\n color: props.xAxisSplitLineStyleColor\n }\n },\n axisLabel: {\n color: props.xAxisLabelColor\n },\n axisLine: {\n lineStyle: {\n color: props.xAxisLineStyleColor\n }\n },\n axisTick: {\n show: props.xAxisTickShow\n }\n },\n yAxis: {\n type: 'value',\n splitLine: {\n show: props.yAxisSplitLineShow,\n lineStyle: {\n color: props.yAxisSplitLineStyleColor\n }\n },\n axisLabel: {\n color: props.yAxisLabelColor\n },\n axisLine: {\n lineStyle: {\n color: props.yAxisLineStyleColor\n }\n }\n },\n series: unref(series)\n }))\n\n const { pageMode } = inject(GLOBAL_CONFIG, {\n pageMode: 'normal'\n })\n\n const handleDataset = (data: any = [], useDataFieldNames: boolean = false) => {\n // dataFieldNames 字段映射\n let chartData\n if (props.dataFieldConfigType === 'key') {\n const dataFieldNames = useDataFieldNames ? props.keyTypeDataFieldNames as KeyTypeDataFieldNames : null\n chartData = useTransformChartDataByAttrKey(data, dataFieldNames)\n } else if (props.dataFieldConfigType === 'value') {\n const dataFieldNames = useDataFieldNames ? props.valueTypeDataFieldNames as ValueTypeDataFieldNames : null\n chartData = useTransformChartDataByAttrValue(data, dataFieldNames)\n }\n // dataFieldNames 字段映射\n dimensions.value = chartData.dimensions\n const dataset = chartData.dataset\n const temp = [] as {[key: string]: any} []\n const len = dataset.length\n const seriesTypes = props.seriesTypes as string []\n for (let i = 0; i < len; i++) {\n temp.push({\n type: seriesTypes[i],\n ...dataset[i]\n })\n }\n series.value = temp\n }\n\n // 静态数据\n watch(() => [props.data, props.seriesTypes], ([value]) => {\n if (!props.isRequestData || unref(pageMode) === 'preview') {\n handleDataset(value)\n }\n }, {\n immediate: true,\n deep: true\n })\n\n const loading = ref(false)\n const requestData = useRequestData(props)\n // 动态数据\n const handleRequestData = async () => {\n if (!props.isRequestData || unref(pageMode) === 'preview') return\n try {\n loading.value = true\n const res = await requestData()\n handleDataset(res?.data?.data?.rows, true)\n } catch (e) {\n console.error(e)\n } finally {\n loading.value = false\n }\n }\n\n const refreshData = () => {\n handleRequestData()\n }\n\n const emitEvent = useEmitEvent(props.events as Events)\n\n const { getGlobalModel, setGlobalModel } = inject(GLOBAL_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n getGlobalModel: (key: string) => void 0,\n // @ts-ignore\n // eslint-disable-next-line no-void\n setGlobalModel: (key: string, value: any) => void 0\n })\n const click = emitEvent('click', (e) => {\n // TODO 设置是否保存钻取数据\n const id = props.id as string\n const modal = getGlobalModel(id)\n // 约定获取数据\n setGlobalModel(id, { ...modal, RECORD: e?.data })\n })\n\n const { setRequestSort } = inject(REQUEST_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n setRequestSort: (requestFn: Function, sortNum: number) => void 0\n })\n setRequestSort(handleRequestData, props.requestSort as number)\n\n useOnEvent(props, {\n refreshData,\n click\n } as BarEvents)\n\n return {\n style,\n option,\n click,\n loading\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <div class=\"ecan-border\" :style=\"style\">\n <div class=\"top-title\" v-if=\"mode === 'top-title'\">\n <div class=\"title-item-wrapper\">\n <div class=\"title-item\">\n <img\n class=\"title-decoration-left\"\n src=\"../../assets/border-title-decoration-left.png\"\n >\n <div class=\"title\">{{ title }}</div>\n <img\n class=\"title-decoration-right\"\n src=\"../../assets/border-title-decoration-right.png\"\n >\n </div>\n </div>\n <div class=\"top-left border-item\"/>\n <div class=\"top-right border-item\"/>\n <div class=\"bottom-left border-item\"/>\n <div class=\"bottom-right border-item\"/>\n </div>\n <div class=\"no-title\" v-if=\"mode === 'no-title'\">\n </div>\n <div class=\"left-title\" v-if=\"mode === 'left-title'\">\n <div class=\"title\">\n <span>{{ title }}</span>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { defineComponent } from 'vue'\nimport { cardComponentProps } from './props'\nimport { usePickComponentStyle } from '../../_utils/hooks'\nexport default defineComponent({\n name: 'EcanBorder',\n props: {\n ...cardComponentProps\n },\n setup (props) {\n const style = usePickComponentStyle(props)\n return {\n style\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.top-title {\n border: 1px solid rgba(55,85,218,.3);\n background: rgba(7,22,85,.8);\n position: relative;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n .border-item {\n position: absolute;\n z-index: 2;\n border-color: #50FCFC;\n border-style: solid;\n width: 13px;\n height: 11px;\n }\n .top-left {\n top: 0;\n left: 0;\n border-top-width: 1px;\n border-right-width: 0;\n border-bottom-width: 0;\n border-left-width: 1px;\n }\n .top-right {\n top: 0;\n right: -2px;\n border-top-width: 1px;\n border-right-width: 1px;\n border-bottom-width: 0;\n border-left-width: 0;\n }\n .bottom-left {\n bottom: -2px;\n left: 0;\n border-top-width: 0;\n border-right-width: 0;\n border-bottom-width: 1px;\n border-left-width: 1px;\n }\n .bottom-right {\n bottom: -2px;\n right: -2px;\n border-top-width: 0;\n border-right-width: 1px;\n border-bottom-width: 1px;\n border-left-width: 0;\n }\n .title-item-wrapper {\n width: 100%;\n padding: 5px 0;\n background-image: url(\"../../assets/border-title-background.png\");\n background-size: cover;\n display: grid;\n place-content: center;\n }\n .title-item {\n display: flex;\n align-items: center;\n }\n .title {\n padding: 0 17px;\n color: #d5fdfd;\n background: linear-gradient(0deg,#01aaff,#00eaff);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n .title-decoration-left {\n width: 58px;\n height: 14px;\n }\n .title-decoration-right {\n width: 58px;\n height: 14px;\n }\n}\n\n.no-title {\n border: 2px solid #375A8899;\n border-radius: 8px;\n width: 100%;\n height: 100%;\n}\n\n.left-title {\n position: relative;\n width: 100%;\n height: 100%;\n border: 2px solid #375A8899;\n border-radius: 8px;\n .title {\n position: absolute;\n left: -33px;\n top: -14px;\n width: 33px;\n min-height: 194px;\n padding-top: 33px;\n padding-bottom: 31px;\n background-image: url(\"../../assets/border-left-title.png\");\n background-repeat: no-repeat;\n background-size: 100% 100%;\n color: #fff;\n font-weight: 500;\n text-align: center;\n span {\n writing-mode: vertical-lr;\n }\n }\n}\n</style>\n","<template>\n <div class=\"ecan-border\" :style=\"style\">\n <div class=\"top-title\" v-if=\"mode === 'top-title'\">\n <div class=\"title-item-wrapper\">\n <div class=\"title-item\">\n <img\n class=\"title-decoration-left\"\n src=\"../../assets/border-title-decoration-left.png\"\n >\n <div class=\"title\">{{ title }}</div>\n <img\n class=\"title-decoration-right\"\n src=\"../../assets/border-title-decoration-right.png\"\n >\n </div>\n </div>\n <div class=\"top-left border-item\"/>\n <div class=\"top-right border-item\"/>\n <div class=\"bottom-left border-item\"/>\n <div class=\"bottom-right border-item\"/>\n </div>\n <div class=\"no-title\" v-if=\"mode === 'no-title'\">\n </div>\n <div class=\"left-title\" v-if=\"mode === 'left-title'\">\n <div class=\"title\">\n <span>{{ title }}</span>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { defineComponent } from 'vue'\nimport { cardComponentProps } from './props'\nimport { usePickComponentStyle } from '../../_utils/hooks'\nexport default defineComponent({\n name: 'EcanBorder',\n props: {\n ...cardComponentProps\n },\n setup (props) {\n const style = usePickComponentStyle(props)\n return {\n style\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.top-title {\n border: 1px solid rgba(55,85,218,.3);\n background: rgba(7,22,85,.8);\n position: relative;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n .border-item {\n position: absolute;\n z-index: 2;\n border-color: #50FCFC;\n border-style: solid;\n width: 13px;\n height: 11px;\n }\n .top-left {\n top: 0;\n left: 0;\n border-top-width: 1px;\n border-right-width: 0;\n border-bottom-width: 0;\n border-left-width: 1px;\n }\n .top-right {\n top: 0;\n right: -2px;\n border-top-width: 1px;\n border-right-width: 1px;\n border-bottom-width: 0;\n border-left-width: 0;\n }\n .bottom-left {\n bottom: -2px;\n left: 0;\n border-top-width: 0;\n border-right-width: 0;\n border-bottom-width: 1px;\n border-left-width: 1px;\n }\n .bottom-right {\n bottom: -2px;\n right: -2px;\n border-top-width: 0;\n border-right-width: 1px;\n border-bottom-width: 1px;\n border-left-width: 0;\n }\n .title-item-wrapper {\n width: 100%;\n padding: 5px 0;\n background-image: url(\"../../assets/border-title-background.png\");\n background-size: cover;\n display: grid;\n place-content: center;\n }\n .title-item {\n display: flex;\n align-items: center;\n }\n .title {\n padding: 0 17px;\n color: #d5fdfd;\n background: linear-gradient(0deg,#01aaff,#00eaff);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n .title-decoration-left {\n width: 58px;\n height: 14px;\n }\n .title-decoration-right {\n width: 58px;\n height: 14px;\n }\n}\n\n.no-title {\n border: 2px solid #375A8899;\n border-radius: 8px;\n width: 100%;\n height: 100%;\n}\n\n.left-title {\n position: relative;\n width: 100%;\n height: 100%;\n border: 2px solid #375A8899;\n border-radius: 8px;\n .title {\n position: absolute;\n left: -33px;\n top: -14px;\n width: 33px;\n min-height: 194px;\n padding-top: 33px;\n padding-bottom: 31px;\n background-image: url(\"../../assets/border-left-title.png\");\n background-repeat: no-repeat;\n background-size: 100% 100%;\n color: #fff;\n font-weight: 500;\n text-align: center;\n span {\n writing-mode: vertical-lr;\n }\n }\n}\n</style>\n","var img = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHQAAAAcCAMAAACH42siAAAAZlBMVEUAAABBltJCldJCldFEk89BltJCltFBldI/lMBKndtmb9pCltNDldFAkclAldNBldJBltM/lM5AltNCldJBldJBlNJBltVBldJBlNJBlNI/lNNBldJBldNAldJBldJBldJBldNBldIiNK7WAAAAInRSTlMAM4BNGmaz5gQGbiAPCV1WQxUpOCY9EmxQSC2jdoacqZK8uPo7tAAAAZ9JREFUSMe90NmOwjAMheGka0J3SulCy/L+Lzk4I+HYhckEKs7dr1x8kQVM5YJMZ7SLiXVHOw817Z72cSns3BmziY7EnGRGjDqUpKt4pEZQKruvyaJt85YmBUebKLJVNUlpq6oOQ1tVVRzbqu6DwFb1NUlsVd3SNL0UDM0jqkaSqoeQqjKmahtQNUzuC1AtU1sF9KHmnmrtrSK6idqBWqE6GFVxFdGvqDGoJ01Qt7rfTEV0e7V6qSK6VjNPtTaqoOq8Ugnqr7aeav+rAuqrTh+qZw3o1urAVcFVQD3U6ZnaYY9MLZk6G5WhDaDFI9UeUPyE7gCNsAdAD9gxoBJ7ARRPUVwALXdu8/h/s3xmjtwUu0/M0M/UJzBjAei3TUTdpmKmcpkBmOHKBNTPzJi59zYJys3DO2aL78YcmNkLgrrM9m9TucwzmoBy08xlju+bgL42G4c5OcxqZSLqbwqXOVNTGXMWFD0ak6KN1ZKaojYmbribndW9MXELNQEFFUyiNqQlmEQ1JqpgErUifUUTUVEIupx1wzpjvWfdsh4FQX8ANe4nnpsb9NEAAAAASUVORK5CYII=\";\n export default img;","var img = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHQAAAAcCAMAAACH42siAAAAaVBMVEUAAABElM9BltJCldJCldFBltJBldJCltFNmrNCmNNFldNAldJBldNBldRBldNBldNBldJCoNFBldJBltNBldJBldJAldJAltJBldJBldJBldNAlNFAldJBlNJAldJBldNBldJBldJBldLfIVowAAAAI3RSTlMAGjJNgGbmswMSCScgDTs/ZAVRK0eYj2s3r3AWveHEhXjeXb5rzlgAAAFqSURBVEjH1dbJVsJAEIXhHjJ05tlEooK8/0NKsbDrFjmHiBD0Lvqcf9PfthRM7xvoZMQuLHZaOejGYLtcdEItzI9oaLg5xIHj5hgcG262oXXcrGzJ23Umg5717C7NKBrAjOMDM8YgCI5ghmEPprUTmMZkrBOtdbJgfpZovho0gwzNOkfTam9k5jSGkKlTMOezWT3VLH5qlg8wQzSbO5jJ28l8Z+YLmZMwuz9lupvNXpjlFTMTZv7vzFSatTDtGnNeYdpNzZTMSJhx5f84m8Y3mSEzJzTVolko3J7Qve+a0J3vntDWffdEaMUQQo1vTWjuuyA0UWvUUarqzuqLUMPt1MD3uKTaTdRwvdrdorpFtfZtH6eyK2F3RS23U3uhlr9VB1TdE1V2h7Vr1O4mdbdera6o+Wq1Vqi2rEktFapGoZopVLVCtVCXag19IBPUiiWpBrojE1QNXZAp1/TYbhKdKVwuWotORKfn9wu/DSc/X9T6qgAAAABJRU5ErkJggg==\";\n export default img;","<template>\n <!-- centered + style 中的 verticalAlign 调整弹窗位置 -->\n <a-modal\n :getContainer=\"getContainer\"\n :wrapClassName=\"isFullModal ? 'ecan-modal ecan-full-modal' : 'ecan-modal'\"\n centered\n :visible=\"visible\"\n :footer=\"null\"\n :width=\"isFullModal ? '100%' : modalWith\"\n :destroyOnClose=\"destroyOnClose\"\n :style=\"modalStyle\"\n @ok=\"onOk\"\n @cancel=\"onCancel\"\n >\n <div class=\"contain\" ref=\"contain\" :style=\"containStyle\">\n <div class=\"content\" :style=\"contentStyle\">\n <component\n v-for=\"(component, index) in componentList\"\n :key=\"(component.id) + index\"\n :is=\"component.type\"\n v-bind=\"component\"\n />\n </div>\n </div>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref } from 'vue'\nimport { modalComponentProps, ModalPosition } from './props'\nimport { Modal as AModal } from 'ant-design-vue'\nimport 'ant-design-vue/es/modal/style/index'\nimport { useOnEvent, usePickComponentStyle, useImagePath } from 'src/_utils/hooks'\nexport default defineComponent({\n name: 'EcanModal',\n components: {\n AModal\n },\n props: {\n ...modalComponentProps\n },\n setup (props) {\n const getContainer = () => document.getElementById('ProviderConfig') || document.body\n const modalStyle = computed(() => {\n const position = props.position as ModalPosition\n const map = {\n default: '',\n top: 'top',\n center: 'middle',\n bottom: 'bottom'\n }\n return {\n verticalAlign: map[position]\n }\n })\n const width = props.width as string\n const height = props.height as string\n const originalWidth = props.originalWidth as string\n const originalHeight = props.originalHeight as string\n const scaleWidth = computed(() => parseFloat(width) / parseFloat(originalWidth))\n const scaleHeight = computed(() => parseFloat(height) / parseFloat(originalHeight))\n // 弹窗适配\n const modalWith = computed(() => `${unref(scaleWidth) * 100}%`)\n // const modalHeight = computed(() => `${scaleHeight.value * 100}%`)\n const screenWidth = computed(() => document.body.offsetWidth)\n const screenHeight = computed(() => document.body.offsetHeight)\n const containWidth = computed(() => unref(screenWidth) * unref(scaleWidth))\n const containHeight = computed(() => unref(screenHeight) * unref(scaleHeight))\n const containStyle = computed(() => ({\n width: `${unref(containWidth)}px`,\n height: `${unref(containHeight)}px`\n }))\n const style = usePickComponentStyle(props)\n const contentStyle = computed(() => ({\n ...unref(style),\n backgroundImage: useImagePath(props.backgroundImage as string, true),\n transform: `scale(${unref(containWidth) / parseFloat(width)},${unref(containHeight) / parseFloat(height)})`\n }))\n // const isFullModal = computed(() => props.fullModal || modalWith.value === '100%')\n const isFullModal = computed(() => props.fullModal)\n const visible = ref(false)\n const contain = ref<HTMLElement>()\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const onOk = () => {\n hideModal()\n }\n const onCancel = () => {\n hideModal()\n }\n // 注册\n useOnEvent(props, {\n showModal\n })\n\n return {\n contain,\n containStyle,\n contentStyle,\n getContainer,\n modalStyle,\n modalWith,\n isFullModal,\n style,\n visible,\n showModal,\n onOk,\n onCancel\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.contain {\n position: relative;\n overflow: hidden;\n}\n.content {\n transform-origin: left top;\n z-index: 999;\n}\n</style>\n\n<style lang=\"less\">\n.ecan-modal {\n .ant-modal-body {\n padding: 0;\n }\n}\n\n.ecan-full-modal {\n .ant-modal {\n max-width: 100%;\n top: 0;\n padding-bottom: 0;\n margin: 0;\n }\n .ant-modal-content {\n display: flex;\n flex-direction: column;\n height: calc(100vh);\n }\n .ant-modal-body {\n flex: 1;\n }\n}\n\n[datav-theme='darkBlue'] .ecan-modal {\n .anticon-close > svg > path {\n fill: #fff;\n }\n}\n</style>\n","<template>\n <img\n :style=\"style\"\n :src=\"myImgUrl\"\n v-if=\"myImgUrl !== ''\"\n />\n <div\n class=\"image-placeholder\"\n :style=\"style\"\n v-else\n >\n 请上传图片\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent } from 'vue'\nimport { imageComponentProps } from './props'\nimport { useImagePath, usePickComponentStyle } from '../../_utils/hooks'\nexport default defineComponent({\n name: 'EcanImage',\n props: {\n ...imageComponentProps\n },\n setup (props) {\n const style = usePickComponentStyle(props)\n const myImgUrl = computed(() => useImagePath(props.imgUrl as string))\n return {\n style,\n myImgUrl\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.image-placeholder {\n display: grid;\n place-content: center;\n border: 1px solid #d9d9d9;\n font-size: 16px;\n color: #333;\n}\n</style>\n","<template>\n <div class=\"ecan-table\" :style=\"style\">\n <skeleton :loading=\"loading\">\n <a-table\n class=\"table\"\n :columns=\"myColumns\"\n :data-source=\"dataSource\"\n :bordered=\"bordered\"\n :size=\"size\"\n :customRow=\"customRow\"\n :scroll=\"{ x, y }\"\n :pagination=\"pagination\"\n @change=\"tableChange\"\n >\n <template v-slot:bodyCell=\"{ column, index, text }\">\n <!-- 序列配置 -->\n <template v-if=\"column.dataIndex === 'SEQ'\">\n {{ index + 1 }}\n </template>\n <template v-else>\n <div :class=\"[contrastClass(text, column.format)]\">\n {{ (column.format != null || column.format !== '') && formatFn(text, column.format) }}\n </div>\n </template>\n </template>\n <template v-slot:summary>\n <a-table-summary v-if=\"summaryList.length > 0\">\n <a-table-summary-row>\n <a-table-summary-cell\n v-for=\"(summary, index) in summaryList\"\n :key=\"summary.dataIndex + index\"\n :index=\"summary.index\"\n :style=\"{\n backgroundColor: cellBackgroundColor,\n textAlign: summary.cellAlign || 'center',\n color: summary.cellColor,\n borderBottomColor: borderColor\n }\"\n >\n <div :class=\"[contrastClass(summary.total, summary.format)]\">\n {{ (summary.format != null || summary.format !== '') && formatFn(summary.total, summary.format) }}\n </div>\n </a-table-summary-cell>\n </a-table-summary-row>\n </a-table-summary>\n </template>\n </a-table>\n </skeleton>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, ref, watch, inject } from 'vue'\nimport { Table as ATable, TableSummary as ATableSummary, TableSummaryRow as ATableSummaryRow, TableSummaryCell as ATableSummaryCell } from 'ant-design-vue'\nimport 'ant-design-vue/es/table/style/index'\nimport { usePickComponentStyle, useEmitEvent, useRequestData, useOnEvent } from 'src/_utils/hooks'\nimport { tableComponentProps } from './props'\nimport { Events } from 'src/_utils/props'\nimport { formatMoney, formatPercentage } from 'src/_utils/util'\nimport { GLOBAL_MODEL, REQUEST_MODEL } from '../../_utils/constant'\nimport Skeleton from '../../common/skeleton/Skeleton.vue'\nexport default defineComponent({\n name: 'EcanTable',\n components: {\n Skeleton,\n ATable,\n ATableSummary,\n ATableSummaryRow,\n ATableSummaryCell\n },\n props: {\n ...tableComponentProps\n },\n setup (props) {\n const style = usePickComponentStyle(props)\n const splitY = computed(() => {\n if (props.paginationShow) {\n switch (props.size) {\n case 'small':\n return 90\n case 'middle':\n return 100\n default:\n return 120\n }\n } else {\n switch (props.size) {\n case 'small':\n return 40\n case 'middle':\n return 47\n default:\n return 55\n }\n }\n })\n const x = computed(() => props.scrollX)\n const y = computed(() => parseFloat(props.height as string) - unref(splitY))\n const myColumns = computed(() => {\n // 复制表头数据\n let columns = [] as {[key:string]: any} []\n const isUseSeq = props.isUseSeq as boolean\n if (isUseSeq) {\n // 添加序号\n columns.push({\n title: '序号',\n dataIndex: 'SEQ'\n })\n }\n columns = columns.concat(props.columns as {[key:string]: any} [])\n const len = columns.length\n const columnsFixedNum = props.columnsFixedNum as number\n // 这里的循环为了 props 是引用类型,会造成脏数据(上次修改后,还会存在上次的数据)\n // 如果使用深拷贝会造成性能的浪费,循环来说相对更快\n for (let i = 0; i < len; i++) {\n const column = columns[i]\n if (i < columnsFixedNum) {\n column.fixed = 'left'\n } else {\n column.fixed = false\n }\n const {\n headerCellAlign = 'center',\n headerCellColor,\n cellAlign = 'center',\n cellColor\n } = column\n // 通用配置\n column.customHeaderCell = () => ({\n style: {\n textAlign: headerCellAlign,\n color: headerCellColor,\n backgroundColor: props.headerCellBackgroundColor,\n borderBottomColor: props.borderColor\n }\n })\n column.customCell = () => ({\n style: {\n textAlign: cellAlign,\n color: cellColor,\n backgroundColor: props.cellBackgroundColor,\n borderBottomColor: props.borderColor\n }\n })\n }\n return columns\n })\n const total = ref(0)\n const pageNum = ref(1)\n const pageSize = computed(() => props.paginationPageSize as number)\n const dataSource = ref<{[key:string]: any} []>([])\n watch(() => [props.data, props.isRequestData], ([data, isRequestData]) => {\n if (!isRequestData) {\n dataSource.value = data as {[key:string]: any} []\n }\n }, {\n immediate: true\n })\n const requestData = useRequestData(props)\n const loading = ref(false)\n const handleRequestData = async () => {\n if (props.isRequestData) {\n try {\n loading.value = true\n const res = await requestData({\n pageNum: unref(pageNum),\n pageSize: unref(pageSize)\n })\n const { rows = [], total: tableTotal = 0 } = res?.data?.data || {}\n total.value = tableTotal\n dataSource.value = rows\n } catch (e) {\n console.error(e)\n } finally {\n loading.value = false\n }\n }\n }\n const tableChange = ({ current }: { current: number}, _filters, _sorter) => {\n pageNum.value = current\n handleRequestData()\n }\n const pagination = computed(() => {\n const simple = props.simple\n const position = [props.paginationPosition]\n return props.paginationShow && {\n simple,\n position,\n total: unref(total),\n current: unref(pageNum),\n pageSize: unref(pageSize)\n }\n })\n type Format = 'money' | 'percentage' | 'contrast' | ''\n const formatFn = (value: string | number, format?: Format) => {\n if (format == null || format === '') return value\n const map = {\n money: formatMoney,\n percentage: formatPercentage,\n contrast: formatPercentage\n }\n return map[format](value) || ''\n }\n const contrastClass = (value: string | number, format: Format) => {\n const _value = parseFloat(value + '')\n if (format !== 'contrast') {\n return ''\n }\n switch (true) {\n case _value >= 0:\n return 'goUp'\n case _value < 0:\n return 'goDown'\n }\n }\n const emitEvent = useEmitEvent(props.events as Events)\n // const click = emitEvent('click', (e) => {\n // console.log(e)\n // })\n\n const { getGlobalModel, setGlobalModel } = inject(GLOBAL_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n getGlobalModel: (key: string) => void 0,\n // @ts-ignore\n // eslint-disable-next-line no-void\n setGlobalModel: (key: string, value: any) => void 0\n })\n\n const customRow = (record) => ({\n onClick: emitEvent('click', () => {\n const id = props.id as string\n const modal = getGlobalModel(id)\n // 约定获取数据\n setGlobalModel(id, { ...modal, RECORD: record })\n })\n })\n const refreshData = () => {\n handleRequestData()\n }\n useOnEvent(props, {\n refreshData\n })\n const summaryList = computed(() => {\n const columns = props.columns as { [key:string]: any } []\n const summaryList = (props.isUseSeq ? [{ total: '小计' }] : []) as { [key:string]: any } []\n let calcTotalCount = 0\n for (let i = 0; i < columns.length; i++) {\n const column = columns[i]\n const { isCalcTotal } = column\n if (isCalcTotal) {\n summaryList.push({\n ...column,\n index: i,\n total: 0\n })\n calcTotalCount++\n } else {\n summaryList.push({\n ...column\n })\n }\n }\n // 为空直接返回\n if (calcTotalCount === 0) return []\n const start = (unref(pageNum) - 1) * unref(pageSize)\n const end = start + unref(pageSize)\n const records = unref(dataSource).slice(start, end)\n for (let i = 0; i < records.length; i++) {\n const record = records[i]\n for (let j = 0; j < summaryList.length; j++) {\n const summary = summaryList[j]\n const { dataIndex, total } = summary\n const num = +record[dataIndex]\n if (!Number.isNaN(num) && total != null) {\n summary.total = num + total\n }\n }\n }\n return summaryList\n })\n\n const { setRequestSort } = inject(REQUEST_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n setRequestSort: (requestFn: Function, sortNum: number) => void 0\n })\n\n setRequestSort(handleRequestData, props.requestSort as number)\n\n return {\n x,\n y,\n myColumns,\n style,\n customRow,\n pagination,\n formatFn,\n contrastClass,\n tableChange,\n dataSource,\n summaryList,\n loading\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.table {\n width: 100%;\n height: 100%;\n}\n.goUp {\n color: #FF512E;\n display: flex;\n align-items: center;\n &:before {\n content: '';\n display: block;\n background: url(\"../../assets/go-up.png\");\n width: 12px;\n height: 12px;\n background-repeat: no-repeat;\n background-size: cover;\n margin-right: 2px;\n }\n}\n\n.goDown {\n color: #00F7B4;\n display: flex;\n align-items: center;\n &:before {\n content: '';\n display: block;\n background: url(\"../../assets/go-down.png\");\n width: 12px;\n height: 12px;\n background-repeat: no-repeat;\n background-size: cover;\n margin-right: 2px;\n }\n}\n</style>\n\n<style lang=\"less\">\n\n.ecan-table {\n .ant-table {\n color: rgba(0, 0, 0, .65);\n background: #ffffff;\n }\n .ant-table-thead > tr > th {\n color: rgba(0, 0, 0, .85);\n background: #fafafa;\n border-bottom: 1px solid #f0f0f0;\n }\n .ant-table-tbody > tr > td {\n border-bottom: 1px solid #f0f0f0;\n }\n .ant-table-bordered {\n .ant-table-container {\n border: 1px solid #f0f0f0 !important;\n }\n .ant-table-cell {\n border-right: 1px solid #f0f0f0 !important;\n }\n }\n .ant-pagination-item-link {\n border: 1px solid #d9d9d9 !important;\n }\n\n .anticon {\n color: rgba(0, 0, 0, .65) !important;\n }\n}\n\n[datav-theme='darkBlue'] {\n .ecan-table {\n .ant-table {\n color: #e8e8e8;\n background: #071655;\n }\n\n .ant-table-thead > tr > th {\n color: #cdd0f7;\n background: #17338c;\n border-bottom: 1px solid #3e8ee3;\n }\n\n .ant-table-tbody > tr > td {\n border-bottom: 1px solid #3e8ee3;\n }\n\n .ant-table-bordered {\n .ant-table-container {\n border: 1px solid #3e8ee3 !important;\n }\n\n .ant-table-cell {\n border-right: 1px solid #3e8ee3 !important;\n }\n }\n\n .ant-pagination-item-link {\n background: #17338c !important;\n border: 1px solid #243c8e !important;\n }\n\n .ant-pagination-item {\n background: #17338c !important;\n }\n\n .anticon {\n color: rgba(255, 255, 255, .65) !important;\n }\n\n .ant-table-tbody > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td {\n background: #225b98;\n }\n }\n}\n</style>\n"],"names":["module","exports","arr","Array","isArray","__esModule","i","_i","Symbol","iterator","_s","_e","_arr","_n","_d","call","next","done","push","value","length","err","len","arr2","arrayLikeToArray","require$$0","o","minLen","n","Object","prototype","toString","slice","constructor","name","from","test","TypeError","arrayWithHoles","iterableToArrayLimit","require$$1","unsupportedIterableToArray","require$$2","nonIterableRest","require$$3","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","bound01","max","indexOf","parseFloat","isOnePointZero","isPercent","isPercentage","Math","min","parseInt","String","abs","convertToPercentage","concat","Number","pad2","c","hue2rgb","p","q","t","convertHexToDecimal","h","parseIntFromHex","val","names","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","goldenrod","gold","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavenderblush","lavender","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","inputToRGB","color","r","g","b","rgb","a","s","v","l","ok","format","trim","toLowerCase","named","match","matchers","exec","rgba","hsl","hsla","hsv","hsva","hex8","hex6","hex4","hex3","stringInputToObject","isValidCSSUnit","substr","floor","f","mod","hsvToRgb","hslToRgb","hasOwnProperty","isNaN","boundAlpha","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","RegExp","Boolean","darkColorMap","index","opacity","toHsv","_ref","d","rgbToHsv","toHex","_ref2","allow3Char","hex","round","startsWith","charAt","join","rgbToHex","mix","rgb1","rgb2","amount","getHue","light","hue","getSaturation","saturation","toFixed","getValue","generate","opts","arguments","undefined","patterns","pColor","colorString","_hsv","_colorString","theme","map","_ref3","backgroundColor","presetPrimaryColors","volcano","geekblue","presetPalettes","presetDarkPalettes","keys","forEach","key","primary","containers","styleElements","insertCss","options","Error","styleElement","position","prepend","container","querySelector","containerId","setAttribute","createStyleElement","childNodes","charCodeAt","textContent","_objectSpread","target","source","ownKeys","getOwnPropertySymbols","filter","sym","getOwnPropertyDescriptor","enumerable","_defineProperty","obj","defineProperty","configurable","writable","warning","valid","message","process","env","NODE_ENV","console","error","warn","isIconDefinition","icon","node","rootProps","tag","attrs","children","child","getSecondaryColor","primaryColor","generateColor","normalizeTwoToneColors","twoToneColor","iconStyles","cssInjectedFlag","_excluded","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","twoToneColorPalette","secondaryColor","calculated","IconBase","props","context","_props$context$attrs","restProps","colors","styleStr","nextTick","window","documentElement","useInsertStyles","width","height","fill","focusable","inheritAttrs","displayName","getTwoToneColors","setTwoToneColors","VueIcon","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","setTwoToneColor","_normalizeTwoToneColo2","Icon","_classObj","cls","spin","rotate","tabindex","onClick","classObj","anticon","svgClassString","iconTabIndex","svgStyle","msTransform","transform","_createVNode","createVNode","role","class","getTwoToneColor","AntdIcon","LoadingOutlinedSvg","viewBox","LoadingOutlined","LoadingOutlined$1","_hoisted_1","_openBlock","_createElementBlock","_ctx","spinning","_createBlock","_component_a_spin","indicator","tip","_renderSlot","renderSlot","$slots","createBlock","_component_a_skeleton","active","loading","iter","arrayWithoutHoles","iterableToArray","nonIterableSpread","freeze","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","Context","_invoke","state","GenStateSuspendedStart","method","arg","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","fn","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","this","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","resolve","reject","result","__await","then","unwrapped","previousPromise","callInvokeWithMethodAndArg","info","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","async","Promise","object","reverse","pop","skipTempReset","prev","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","catch","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","Function","regenerator","_typeof","id","ready","_createCommentVNode","createCommentVNode","_createElementVNode","createElementVNode","_component_skeleton","createElementBlock","innerHTML","myText","_toDisplayString","_hoisted_4","dataSource","_Fragment","useTitle","_normalizeStyle","useRanking","openBlock","_renderList","columns","column","normalizeStyle","titleColor","columnStyle","title","renderList","sliceCount","item","_hoisted_2","_hoisted_3","_normalizeClass","normalizeClass","contrastClass","fontSize","fontWeight","formatFn","_hoisted_5","_component_a_input","placeholder","_component_a_date_picker","myValue","$event","picker","showTime","locale","onChange","dateChange","getPopupContainer","_component_a_select","dataFieldNames","selectChange","_component_a_range_picker","_component_a_button","block","click","Fragment","myData","tab","isActive","activeTabColor","tabColor","useImagePath","activeTabBackgroundImage","tabBackgroundImage","tabBarGutter","tabFontSize","tabChange","_component_spin","_component_echarts","option","autoresize","notMerge","myOption","script$3","defineComponent","cardComponentProps","setup","usePickComponentStyle","src","_hoisted_13","mode","toDisplayString","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_component_a_modal","getContainer","wrapClassName","isFullModal","centered","visible","footer","modalWith","destroyOnClose","modalStyle","onOk","onCancel","containStyle","contentStyle","componentList","component","_resolveDynamicComponent","_mergeProps","myImgUrl","_component_a_table","myColumns","bordered","size","customRow","scroll","x","y","pagination","tableChange","bodyCell","text","dataIndex","summary","summaryList","_component_a_table_summary","_component_a_table_summary_row","_component_a_table_summary_cell","cellBackgroundColor","textAlign","cellAlign","cellColor","borderColor","total"],"mappings":"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"}