UNPKG

@weoil/datav-vue3

Version:
1,233 lines 519 kB
import './style.css'; var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); import { ref, nextTick, onMounted, onUnmounted, reactive, watch, openBlock, createElementBlock, unref, Fragment, renderList, createElementVNode, normalizeStyle, toDisplayString, createCommentVNode, computed, onBeforeUnmount, renderSlot, createStaticVNode, getCurrentInstance, createVNode, defineComponent, normalizeClass } from "vue"; function randomExtend(minNum, maxNum) { if (arguments.length === 1) return parseInt((Math.random() * minNum + 1).toString(), 10); else return parseInt((Math.random() * (maxNum - minNum + 1) + minNum).toString(), 10); } function debounce(delay, callback, vm) { let lastTime; return function() { clearTimeout(lastTime); lastTime = setTimeout(() => { callback.call(vm, ...arguments); }, delay); }; } function observerDomResize(dom, callback) { const MutationObserver = window.MutationObserver; const observer = new MutationObserver(callback); observer.observe(dom, { attributes: true, attributeFilter: ["style"], attributeOldValue: true }); return observer; } function getPointDistance(pointOne, pointTwo) { const minusX = Math.abs(pointOne[0] - pointTwo[0]); const minusY = Math.abs(pointOne[1] - pointTwo[1]); return Math.sqrt(minusX * minusX + minusY * minusY); } function getCircleRadianPoint(x, y, radius, radian) { return [x + Math.cos(radian) * radius, y + Math.sin(radian) * radius]; } function filterNonNumber$1(array) { return array.filter((n) => { return typeof n === "number"; }); } function mulAdd$1(nums) { nums = filterNonNumber$1(nums); return nums.reduce((all, num) => { return all + num; }, 0); } function getTwoPointDistance$1(pointOne, pointTwo) { const minusX = Math.abs(pointOne.x - pointTwo.x); const minusY = Math.abs(pointOne.y - pointTwo.y); return Math.sqrt(minusX * minusX + minusY * minusY); } function getPolylineLength$1(points) { const lineSegments = new Array(points.length - 1).fill(0).map((foo, i) => { return [points[i], points[i + 1]]; }); const lengths = lineSegments.map((item) => { return getTwoPointDistance$1(item[0], item[1]); }); return mulAdd$1(lengths); } function PointToString(point) { return `${point.x},${point.y}`; } function PointsToString(points) { return points.map(PointToString).join(" "); } function uuid(hasHyphen) { return (hasHyphen ? "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx" : "xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx").replace(/[xy]/g, (c) => { const r = Math.random() * 16 | 0; const v = c === "x" ? r : r & 3 | 8; return v.toString(16); }); } function deepMerge$1(target, merged) { for (const key in merged) { if (target[key] && typeof target[key] === "object") { deepMerge$1(target[key], merged[key]); continue; } if (typeof merged[key] === "object") { target[key] = deepClone(merged[key], true); continue; } target[key] = merged[key]; } return target; } function deepClone(object, recursion) { if (!object) return object; const { parse, stringify } = JSON; if (!recursion) return parse(stringify(object)); const clonedObj = object instanceof Array ? [] : {}; if (object && typeof object === "object") { for (const key in object) { if (Object.prototype.hasOwnProperty.call(object, key)) { if (object[key] && typeof object[key] === "object") clonedObj[key] = deepClone(object[key], true); else clonedObj[key] = object[key]; } } } return clonedObj; } const autoResize = (dom, onResize, afterAutoResizeMixinInit) => { const width = ref(0); const height = ref(0); let debounceInitWHFun; let domObserver = null; let domHtml = null; const initWH = (resize = true) => { return new Promise((resolve) => { nextTick(() => { domHtml = dom.value; width.value = dom.value ? dom.value.clientWidth : 0; height.value = dom.value ? dom.value.clientHeight : 0; if (!dom.value) console.warn("DataV: Failed to get dom node, component rendering may be abnormal!"); else if (!width.value || !height.value) console.warn("DataV: Component width or height is 0px, rendering abnormality may occur!"); if (typeof onResize === "function" && resize) onResize(); resolve(true); }); }); }; const getDebounceInitWHFun = () => { debounceInitWHFun = debounce(100, initWH, globalThis); }; const bindDomResizeCallback = () => { domObserver = observerDomResize(domHtml, debounceInitWHFun); window.addEventListener("resize", debounceInitWHFun); }; const unbindDomResizeCallback = () => { if (!domObserver) return; domObserver.disconnect(); domObserver.takeRecords(); domObserver = null; window.removeEventListener("resize", debounceInitWHFun); }; const autoResizeMixinInit = async () => { await initWH(false); getDebounceInitWHFun(); bindDomResizeCallback(); if (typeof afterAutoResizeMixinInit === "function") afterAutoResizeMixinInit(); }; onMounted(() => { autoResizeMixinInit(); }); onUnmounted(() => { unbindDomResizeCallback(); }); return { width, height, initWH }; }; var index_vue_vue_type_style_index_0_lang$B = /* @__PURE__ */ (() => ".dv-conical-column-chart{width:100%;height:100%}.dv-conical-column-chart text{text-anchor:middle}\n")(); const _hoisted_1$z = ["width", "height"]; const _hoisted_2$y = ["d", "fill"]; const _hoisted_3$w = ["fill", "x", "y"]; const _hoisted_4$t = ["xlink:href", "width", "height", "x", "y"]; const _hoisted_5$q = ["fill", "x", "y"]; const _sfc_main$B = { __name: "index", props: { config: { type: Object, default: () => ({}) } }, setup(__props) { const props = __props; const conicalColumnChart = ref(null); const { width, height } = autoResize(conicalColumnChart, onResize, afterAutoResizeMixinInit); const state = reactive({ defaultConfig: { data: [], img: [], fontSize: 12, imgSideLength: 30, columnColor: "rgba(0, 194, 255, 0.4)", textColor: "#fff", showValue: false }, mergedConfig: null, column: [] }); watch(() => props.config, () => { calcData(); }, { deep: true }); function afterAutoResizeMixinInit() { calcData(); } function onResize() { calcData(); } function calcData() { mergeConfig(); initData(); calcSVGPath(); } function mergeConfig() { state.mergedConfig = deepMerge$1(deepClone(state.defaultConfig, true), props.config || {}); } function initData() { let { data } = state.mergedConfig; data = deepClone(data, true); data.sort(({ value: a }, { value: b }) => { if (a > b) return -1; else if (a < b) return 1; else return 0; }); const max = data[0] ? data[0].value : 10; data = data.map((item) => __spreadProps(__spreadValues({}, item), { percent: item.value / max })); state.mergedConfig.data = data; } function calcSVGPath() { const { imgSideLength, fontSize, data } = state.mergedConfig; const itemNum = data.length; const gap = width.value / (itemNum + 1); const useAbleHeight = height.value - imgSideLength - fontSize - 5; const svgBottom = height.value - fontSize - 5; state.column = data.map((item, i) => { const { percent } = item; const middleXPos = gap * (i + 1); const leftXPos = gap * i; const rightXpos = gap * (i + 2); const middleYPos = svgBottom - useAbleHeight * percent; const controlYPos = useAbleHeight * percent * 0.6 + middleYPos; const d = ` M${leftXPos}, ${svgBottom} Q${middleXPos}, ${controlYPos} ${middleXPos},${middleYPos} M${middleXPos},${middleYPos} Q${middleXPos}, ${controlYPos} ${rightXpos},${svgBottom} L${leftXPos}, ${svgBottom} Z `; const textY = (svgBottom + middleYPos) / 2 + fontSize / 2; return __spreadProps(__spreadValues({}, item), { d, x: middleXPos, y: middleYPos, textY }); }); } return (_ctx, _cache) => { return openBlock(), createElementBlock("div", { ref_key: "conicalColumnChart", ref: conicalColumnChart, class: "dv-conical-column-chart" }, [ (openBlock(), createElementBlock("svg", { width: unref(width), height: unref(height) }, [ (openBlock(true), createElementBlock(Fragment, null, renderList(state.column, (item, i) => { return openBlock(), createElementBlock("g", { key: i }, [ createElementVNode("path", { d: item.d, fill: state.mergedConfig.columnColor }, null, 8, _hoisted_2$y), createElementVNode("text", { style: normalizeStyle(`fontSize:${state.mergedConfig.fontSize}px`), fill: state.mergedConfig.textColor, x: item.x, y: unref(height) - 4 }, toDisplayString(item.name), 13, _hoisted_3$w), state.mergedConfig.img.length ? (openBlock(), createElementBlock("image", { key: 0, "xlink:href": state.mergedConfig.img[i % state.mergedConfig.img.length], width: state.mergedConfig.imgSideLength, height: state.mergedConfig.imgSideLength, x: item.x - state.mergedConfig.imgSideLength / 2, y: item.y - state.mergedConfig.imgSideLength }, null, 8, _hoisted_4$t)) : createCommentVNode("", true), state.mergedConfig.showValue ? (openBlock(), createElementBlock("text", { key: 1, style: normalizeStyle(`fontSize:${state.mergedConfig.fontSize}px`), fill: state.mergedConfig.textColor, x: item.x, y: item.textY }, toDisplayString(item.value), 13, _hoisted_5$q)) : createCommentVNode("", true) ]); }), 128)) ], 8, _hoisted_1$z)) ], 512); }; } }; const ConicalColumnChartPlugin = { install(app) { app.component("DvConicalColumnChart", _sfc_main$B); } }; var index_vue_vue_type_style_index_0_lang$A = /* @__PURE__ */ (() => ".dv-percent-pond{position:relative;display:flex;flex-direction:column}.dv-percent-pond svg{position:absolute;left:0px;top:0px;width:100%;height:100%}.dv-percent-pond polyline{transition:all .3s}.dv-percent-pond text{font-size:25px;font-weight:700;text-anchor:middle;dominant-baseline:middle}\n")(); const _hoisted_1$y = ["id"]; const _hoisted_2$x = ["offset", "stop-color"]; const _hoisted_3$v = ["id", "x2"]; const _hoisted_4$s = ["offset", "stop-color"]; const _hoisted_5$p = ["x", "y", "rx", "ry", "stroke-width", "stroke", "width", "height"]; const _hoisted_6$n = ["stroke-width", "stroke-dasharray", "stroke", "points"]; const _hoisted_7$m = ["stroke", "fill", "x", "y"]; const _sfc_main$A = { __name: "index", props: { config: { type: Object, default: () => ({}) } }, setup(__props) { const props = __props; const id = uuid(); const percentPond = ref(null); const state = reactive({ gradientId1: `percent-pond-gradientId1-${id}`, gradientId2: `percent-pond-gradientId2-${id}`, width: 0, height: 0, defaultConfig: { value: 0, colors: ["#3DE7C9", "#00BAFF"], borderWidth: 3, borderGap: 3, lineDash: [5, 1], textColor: "#fff", borderRadius: 5, localGradient: false, formatter: "{value}%" }, mergedConfig: null }); const rectWidth = computed(() => { if (!state.mergedConfig) return 0; const { borderWidth } = state.mergedConfig; return state.width - borderWidth; }); const rectHeight = computed(() => { if (!state.mergedConfig) return 0; const { borderWidth } = state.mergedConfig; return state.height - borderWidth; }); const points = computed(() => { const halfHeight = state.height / 2; if (!state.mergedConfig) return `0, ${halfHeight} 0, ${halfHeight}`; const { borderWidth, borderGap, value } = state.mergedConfig; const polylineLength = (state.width - (borderWidth + borderGap) * 2) / 100 * value; return ` ${borderWidth + borderGap}, ${halfHeight} ${borderWidth + borderGap + polylineLength}, ${halfHeight + 1e-3} `; }); const polylineWidth = computed(() => { if (!state.mergedConfig) return 0; const { borderWidth, borderGap } = state.mergedConfig; return state.height - (borderWidth + borderGap) * 2; }); const linearGradient = computed(() => { if (!state.mergedConfig) return []; const { colors } = state.mergedConfig; const colorNum = colors.length; const colorOffsetGap = 100 / (colorNum - 1); return colors.map((c, i) => [colorOffsetGap * i, c]); }); const polylineGradient = computed(() => { if (!state.mergedConfig) return state.gradientId2; if (state.mergedConfig.localGradient) return state.gradientId1; return state.gradientId2; }); const gradient2XPos = computed(() => { if (!state.mergedConfig) return "100%"; const { value } = state.mergedConfig; return `${200 - value}%`; }); const details = computed(() => { if (!state.mergedConfig) return ""; const { value, formatter } = state.mergedConfig; return formatter.replace("{value}", value); }); watch(() => props.config, () => { mergeConfig(); }, { deep: true }); onMounted(() => { init(); }); async function init() { await initWH(); if (!props.config) return; mergeConfig(); } async function initWH() { await nextTick(); const { clientWidth, clientHeight } = percentPond.value; state.width = clientWidth; state.height = clientHeight; } function mergeConfig() { state.mergedConfig = deepMerge$1(deepClone(state.defaultConfig, true), props.config || {}); } return (_ctx, _cache) => { return openBlock(), createElementBlock("div", { ref_key: "percentPond", ref: percentPond, class: "dv-percent-pond" }, [ (openBlock(), createElementBlock("svg", null, [ createElementVNode("defs", null, [ createElementVNode("linearGradient", { id: state.gradientId1, x1: "0%", y1: "0%", x2: "100%", y2: "0%" }, [ (openBlock(true), createElementBlock(Fragment, null, renderList(unref(linearGradient), (lc) => { return openBlock(), createElementBlock("stop", { key: lc[0], offset: `${lc[0]}%`, "stop-color": lc[1] }, null, 8, _hoisted_2$x); }), 128)) ], 8, _hoisted_1$y), createElementVNode("linearGradient", { id: state.gradientId2, x1: "0%", y1: "0%", x2: unref(gradient2XPos), y2: "0%" }, [ (openBlock(true), createElementBlock(Fragment, null, renderList(unref(linearGradient), (lc) => { return openBlock(), createElementBlock("stop", { key: lc[0], offset: `${lc[0]}%`, "stop-color": lc[1] }, null, 8, _hoisted_4$s); }), 128)) ], 8, _hoisted_3$v) ]), createElementVNode("rect", { x: state.mergedConfig ? state.mergedConfig.borderWidth / 2 : "0", y: state.mergedConfig ? state.mergedConfig.borderWidth / 2 : "0", rx: state.mergedConfig ? state.mergedConfig.borderRadius : "0", ry: state.mergedConfig ? state.mergedConfig.borderRadius : "0", fill: "transparent", "stroke-width": state.mergedConfig ? state.mergedConfig.borderWidth : "0", stroke: `url(#${state.gradientId1})`, width: unref(rectWidth) > 0 ? unref(rectWidth) : 0, height: unref(rectHeight) > 0 ? unref(rectHeight) : 0 }, null, 8, _hoisted_5$p), createElementVNode("polyline", { "stroke-width": unref(polylineWidth), "stroke-dasharray": state.mergedConfig ? state.mergedConfig.lineDash.join(",") : "0", stroke: `url(#${unref(polylineGradient)})`, points: unref(points) }, null, 8, _hoisted_6$n), createElementVNode("text", { stroke: state.mergedConfig ? state.mergedConfig.textColor : "#fff", fill: state.mergedConfig ? state.mergedConfig.textColor : "#fff", x: state.width / 2, y: state.height / 2 }, toDisplayString(unref(details)), 9, _hoisted_7$m) ])) ], 512); }; } }; const PercentPondPlugin = { install(app) { app.component("DvPercentPond", _sfc_main$A); } }; function getDefaultExportFromCjs(x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x; } var lib$4 = {}; var interopRequireDefault = { exports: {} }; (function(module) { function _interopRequireDefault2(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } module.exports = _interopRequireDefault2, module.exports.__esModule = true, module.exports["default"] = module.exports; })(interopRequireDefault); var crender_class = {}; var defineProperty = { exports: {} }; (function(module) { function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports; })(defineProperty); var toConsumableArray = { exports: {} }; var arrayWithoutHoles = { exports: {} }; var arrayLikeToArray = { exports: {} }; (function(module) { function _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; } module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; })(arrayLikeToArray); (function(module) { var arrayLikeToArray$1 = arrayLikeToArray.exports; function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return arrayLikeToArray$1(arr); } module.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports["default"] = module.exports; })(arrayWithoutHoles); var iterableToArray = { exports: {} }; (function(module) { function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } module.exports = _iterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; })(iterableToArray); var unsupportedIterableToArray = { exports: {} }; (function(module) { var arrayLikeToArray$1 = arrayLikeToArray.exports; function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return arrayLikeToArray$1(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$1(o, minLen); } module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; })(unsupportedIterableToArray); var nonIterableSpread = { exports: {} }; (function(module) { function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } module.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports["default"] = module.exports; })(nonIterableSpread); (function(module) { var arrayWithoutHoles$1 = arrayWithoutHoles.exports; var iterableToArray$1 = iterableToArray.exports; var unsupportedIterableToArray$1 = unsupportedIterableToArray.exports; var nonIterableSpread$1 = nonIterableSpread.exports; function _toConsumableArray(arr) { return arrayWithoutHoles$1(arr) || iterableToArray$1(arr) || unsupportedIterableToArray$1(arr) || nonIterableSpread$1(); } module.exports = _toConsumableArray, module.exports.__esModule = true, module.exports["default"] = module.exports; })(toConsumableArray); var classCallCheck = { exports: {} }; (function(module) { function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } module.exports = _classCallCheck, module.exports.__esModule = true, module.exports["default"] = module.exports; })(classCallCheck); var lib$3 = {}; var keywords = {}; (function(exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _default = /* @__PURE__ */ new Map([["transparent", "rgba(0,0,0,0)"], ["black", "#000000"], ["silver", "#C0C0C0"], ["gray", "#808080"], ["white", "#FFFFFF"], ["maroon", "#800000"], ["red", "#FF0000"], ["purple", "#800080"], ["fuchsia", "#FF00FF"], ["green", "#008000"], ["lime", "#00FF00"], ["olive", "#808000"], ["yellow", "#FFFF00"], ["navy", "#000080"], ["blue", "#0000FF"], ["teal", "#008080"], ["aqua", "#00FFFF"], ["aliceblue", "#f0f8ff"], ["antiquewhite", "#faebd7"], ["aquamarine", "#7fffd4"], ["azure", "#f0ffff"], ["beige", "#f5f5dc"], ["bisque", "#ffe4c4"], ["blanchedalmond", "#ffebcd"], ["blueviolet", "#8a2be2"], ["brown", "#a52a2a"], ["burlywood", "#deb887"], ["cadetblue", "#5f9ea0"], ["chartreuse", "#7fff00"], ["chocolate", "#d2691e"], ["coral", "#ff7f50"], ["cornflowerblue", "#6495ed"], ["cornsilk", "#fff8dc"], ["crimson", "#dc143c"], ["cyan", "#00ffff"], ["darkblue", "#00008b"], ["darkcyan", "#008b8b"], ["darkgoldenrod", "#b8860b"], ["darkgray", "#a9a9a9"], ["darkgreen", "#006400"], ["darkgrey", "#a9a9a9"], ["darkkhaki", "#bdb76b"], ["darkmagenta", "#8b008b"], ["darkolivegreen", "#556b2f"], ["darkorange", "#ff8c00"], ["darkorchid", "#9932cc"], ["darkred", "#8b0000"], ["darksalmon", "#e9967a"], ["darkseagreen", "#8fbc8f"], ["darkslateblue", "#483d8b"], ["darkslategray", "#2f4f4f"], ["darkslategrey", "#2f4f4f"], ["darkturquoise", "#00ced1"], ["darkviolet", "#9400d3"], ["deeppink", "#ff1493"], ["deepskyblue", "#00bfff"], ["dimgray", "#696969"], ["dimgrey", "#696969"], ["dodgerblue", "#1e90ff"], ["firebrick", "#b22222"], ["floralwhite", "#fffaf0"], ["forestgreen", "#228b22"], ["gainsboro", "#dcdcdc"], ["ghostwhite", "#f8f8ff"], ["gold", "#ffd700"], ["goldenrod", "#daa520"], ["greenyellow", "#adff2f"], ["grey", "#808080"], ["honeydew", "#f0fff0"], ["hotpink", "#ff69b4"], ["indianred", "#cd5c5c"], ["indigo", "#4b0082"], ["ivory", "#fffff0"], ["khaki", "#f0e68c"], ["lavender", "#e6e6fa"], ["lavenderblush", "#fff0f5"], ["lawngreen", "#7cfc00"], ["lemonchiffon", "#fffacd"], ["lightblue", "#add8e6"], ["lightcoral", "#f08080"], ["lightcyan", "#e0ffff"], ["lightgoldenrodyellow", "#fafad2"], ["lightgray", "#d3d3d3"], ["lightgreen", "#90ee90"], ["lightgrey", "#d3d3d3"], ["lightpink", "#ffb6c1"], ["lightsalmon", "#ffa07a"], ["lightseagreen", "#20b2aa"], ["lightskyblue", "#87cefa"], ["lightslategray", "#778899"], ["lightslategrey", "#778899"], ["lightsteelblue", "#b0c4de"], ["lightyellow", "#ffffe0"], ["limegreen", "#32cd32"], ["linen", "#faf0e6"], ["magenta", "#ff00ff"], ["mediumaquamarine", "#66cdaa"], ["mediumblue", "#0000cd"], ["mediumorchid", "#ba55d3"], ["mediumpurple", "#9370db"], ["mediumseagreen", "#3cb371"], ["mediumslateblue", "#7b68ee"], ["mediumspringgreen", "#00fa9a"], ["mediumturquoise", "#48d1cc"], ["mediumvioletred", "#c71585"], ["midnightblue", "#191970"], ["mintcream", "#f5fffa"], ["mistyrose", "#ffe4e1"], ["moccasin", "#ffe4b5"], ["navajowhite", "#ffdead"], ["oldlace", "#fdf5e6"], ["olivedrab", "#6b8e23"], ["orange", "#ffa500"], ["orangered", "#ff4500"], ["orchid", "#da70d6"], ["palegoldenrod", "#eee8aa"], ["palegreen", "#98fb98"], ["paleturquoise", "#afeeee"], ["palevioletred", "#db7093"], ["papayawhip", "#ffefd5"], ["peachpuff", "#ffdab9"], ["peru", "#cd853f"], ["pink", "#ffc0cb"], ["plum", "#dda0dd"], ["powderblue", "#b0e0e6"], ["rosybrown", "#bc8f8f"], ["royalblue", "#4169e1"], ["saddlebrown", "#8b4513"], ["salmon", "#fa8072"], ["sandybrown", "#f4a460"], ["seagreen", "#2e8b57"], ["seashell", "#fff5ee"], ["sienna", "#a0522d"], ["skyblue", "#87ceeb"], ["slateblue", "#6a5acd"], ["slategray", "#708090"], ["slategrey", "#708090"], ["snow", "#fffafa"], ["springgreen", "#00ff7f"], ["steelblue", "#4682b4"], ["tan", "#d2b48c"], ["thistle", "#d8bfd8"], ["tomato", "#ff6347"], ["turquoise", "#40e0d0"], ["violet", "#ee82ee"], ["wheat", "#f5deb3"], ["whitesmoke", "#f5f5f5"], ["yellowgreen", "#9acd32"]]); exports["default"] = _default; })(keywords); (function(exports) { var _interopRequireDefault2 = interopRequireDefault.exports; Object.defineProperty(exports, "__esModule", { value: true }); exports.getRgbValue = getRgbValue; exports.getRgbaValue = getRgbaValue; exports.getOpacity = getOpacity; exports.toRgb = toRgb; exports.toHex = toHex; exports.getColorFromRgbValue = getColorFromRgbValue; exports.darken = darken; exports.lighten = lighten; exports.fade = fade; exports["default"] = void 0; var _toConsumableArray22 = _interopRequireDefault2(toConsumableArray.exports); var _keywords = _interopRequireDefault2(keywords); var hexReg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; var rgbReg = /^(rgb|rgba|RGB|RGBA)/; var rgbaReg = /^(rgba|RGBA)/; function validator5(color2) { var isHex = hexReg.test(color2); var isRgb = rgbReg.test(color2); if (isHex || isRgb) return color2; color2 = getColorByKeyword(color2); if (!color2) { console.error("Color: Invalid color!"); return false; } return color2; } function getColorByKeyword(keyword) { if (!keyword) { console.error("getColorByKeywords: Missing parameters!"); return false; } if (!_keywords["default"].has(keyword)) return false; return _keywords["default"].get(keyword); } function getRgbValue(color2) { if (!color2) { console.error("getRgbValue: Missing parameters!"); return false; } color2 = validator5(color2); if (!color2) return false; var isHex = hexReg.test(color2); var isRgb = rgbReg.test(color2); var lowerColor = color2.toLowerCase(); if (isHex) return getRgbValueFromHex(lowerColor); if (isRgb) return getRgbValueFromRgb(lowerColor); } function getRgbValueFromHex(color2) { color2 = color2.replace("#", ""); if (color2.length === 3) color2 = Array.from(color2).map(function(hexNum) { return hexNum + hexNum; }).join(""); color2 = color2.split(""); return new Array(3).fill(0).map(function(t, i) { return parseInt("0x".concat(color2[i * 2]).concat(color2[i * 2 + 1])); }); } function getRgbValueFromRgb(color2) { return color2.replace(/rgb\(|rgba\(|\)/g, "").split(",").slice(0, 3).map(function(n) { return parseInt(n); }); } function getRgbaValue(color2) { if (!color2) { console.error("getRgbaValue: Missing parameters!"); return false; } var colorValue = getRgbValue(color2); if (!colorValue) return false; colorValue.push(getOpacity(color2)); return colorValue; } function getOpacity(color2) { if (!color2) { console.error("getOpacity: Missing parameters!"); return false; } color2 = validator5(color2); if (!color2) return false; var isRgba = rgbaReg.test(color2); if (!isRgba) return 1; color2 = color2.toLowerCase(); return Number(color2.split(",").slice(-1)[0].replace(/[)|\s]/g, "")); } function toRgb(color2, opacity) { if (!color2) { console.error("toRgb: Missing parameters!"); return false; } var rgbValue = getRgbValue(color2); if (!rgbValue) return false; var addOpacity = typeof opacity === "number"; if (addOpacity) return "rgba(" + rgbValue.join(",") + ",".concat(opacity, ")"); return "rgb(" + rgbValue.join(",") + ")"; } function toHex(color2) { if (!color2) { console.error("toHex: Missing parameters!"); return false; } if (hexReg.test(color2)) return color2; color2 = getRgbValue(color2); if (!color2) return false; return "#" + color2.map(function(n) { return Number(n).toString(16); }).map(function(n) { return n === "0" ? "00" : n; }).join(""); } function getColorFromRgbValue(value) { if (!value) { console.error("getColorFromRgbValue: Missing parameters!"); return false; } var valueLength = value.length; if (valueLength !== 3 && valueLength !== 4) { console.error("getColorFromRgbValue: Value is illegal!"); return false; } var color2 = valueLength === 3 ? "rgb(" : "rgba("; color2 += value.join(",") + ")"; return color2; } function darken(color2) { var percent = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; if (!color2) { console.error("darken: Missing parameters!"); return false; } var rgbaValue = getRgbaValue(color2); if (!rgbaValue) return false; rgbaValue = rgbaValue.map(function(v, i) { return i === 3 ? v : v - Math.ceil(2.55 * percent); }).map(function(v) { return v < 0 ? 0 : v; }); return getColorFromRgbValue(rgbaValue); } function lighten(color2) { var percent = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; if (!color2) { console.error("lighten: Missing parameters!"); return false; } var rgbaValue = getRgbaValue(color2); if (!rgbaValue) return false; rgbaValue = rgbaValue.map(function(v, i) { return i === 3 ? v : v + Math.ceil(2.55 * percent); }).map(function(v) { return v > 255 ? 255 : v; }); return getColorFromRgbValue(rgbaValue); } function fade(color2) { var percent = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 100; if (!color2) { console.error("fade: Missing parameters!"); return false; } var rgbValue = getRgbValue(color2); if (!rgbValue) return false; var rgbaValue = [].concat((0, _toConsumableArray22["default"])(rgbValue), [percent / 100]); return getColorFromRgbValue(rgbaValue); } var _default = { fade, toHex, toRgb, darken, lighten, getOpacity, getRgbValue, getRgbaValue, getColorFromRgbValue }; exports["default"] = _default; })(lib$3); var lib$2 = {}; var bezierCurveToPolyline = {}; var slicedToArray = { exports: {} }; var arrayWithHoles = { exports: {} }; (function(module) { function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports; })(arrayWithHoles); var iterableToArrayLimit = { exports: {} }; (function(module) { function _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; } module.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports["default"] = module.exports; })(iterableToArrayLimit); var nonIterableRest = { exports: {} }; (function(module) { function _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."); } module.exports = _nonIterableRest, module.exports.__esModule = true, module.exports["default"] = module.exports; })(nonIterableRest); (function(module) { var arrayWithHoles$1 = arrayWithHoles.exports; var iterableToArrayLimit$1 = iterableToArrayLimit.exports; var unsupportedIterableToArray$1 = unsupportedIterableToArray.exports; var nonIterableRest$1 = nonIterableRest.exports; function _slicedToArray(arr, i) { return arrayWithHoles$1(arr) || iterableToArrayLimit$1(arr, i) || unsupportedIterableToArray$1(arr, i) || nonIterableRest$1(); } module.exports = _slicedToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; })(slicedToArray); (function(exports) { var _interopRequireDefault2 = interopRequireDefault.exports; Object.defineProperty(exports, "__esModule", { value: true }); exports.bezierCurveToPolyline = bezierCurveToPolyline2; exports.getBezierCurveLength = getBezierCurveLength2; exports["default"] = void 0; var _slicedToArray22 = _interopRequireDefault2(slicedToArray.exports); var _toConsumableArray22 = _interopRequireDefault2(toConsumableArray.exports); var sqrt = Math.sqrt, pow2 = Math.pow, ceil = Math.ceil, abs2 = Math.abs; var defaultSegmentPointsNum = 50; function abstractBezierCurveToPolyline(bezierCurve) { var precision = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 5; var segmentsNum = bezierCurve.length - 1; var startPoint = bezierCurve[0]; var endPoint = bezierCurve[segmentsNum][2]; var segments = bezierCurve.slice(1); var getSegmentTPointFuns = segments.map(function(seg, i) { var beginPoint = i === 0 ? startPoint : segments[i - 1][2]; return createGetBezierCurveTPointFun.apply(void 0, [beginPoint].concat((0, _toConsumableArray22["default"])(seg))); }); var segmentPointsNum = new Array(segmentsNum).fill(defaultSegmentPointsNum); var segmentPoints = getSegmentPointsByNum(getSegmentTPointFuns, segmentPointsNum); var result = calcUniformPointsByIteration(segmentPoints, getSegmentTPointFuns, segments, precision); result.segmentPoints.push(endPoint); return result; } function createGetBezierCurveTPointFun(beginPoint, controlPoint1, controlPoint2, endPoint) { return function(t) { var tSubed1 = 1 - t; var tSubed1Pow3 = pow2(tSubed1, 3); var tSubed1Pow2 = pow2(tSubed1, 2); var tPow3 = pow2(t, 3); var tPow2 = pow2(t, 2); return [beginPoint[0] * tSubed1Pow3 + 3 * controlPoint1[0] * t * tSubed1Pow2 + 3 * controlPoint2[0] * tPow2 * tSubed1 + endPoint[0] * tPow3, beginPoint[1] * tSubed1Pow3 + 3 * controlPoint1[1] * t * tSubed1Pow2 + 3 * controlPoint2[1] * tPow2 * tSubed1 + endPoint[1] * tPow3]; }; } function getTwoPointDistance2(_ref, _ref2) { var _ref3 = (0, _slicedToArray22["default"])(_ref, 2), ax = _ref3[0], ay = _ref3[1]; var _ref4 = (0, _slicedToArray22["default"])(_ref2, 2), bx = _ref4[0], by = _ref4[1]; return sqrt(pow2(ax - bx, 2) + pow2(ay - by, 2)); } function getNumsSum(nums) { return nums.reduce(function(sum, num) { return sum + num; }, 0); } function getSegmentPointsDistance(segmentPoints) { return segmentPoints.map(function(points, i) { return new Array(points.length - 1).fill(0).map(function(temp, j) { return getTwoPointDistance2(points[j], points[j + 1]); }); }); } function getSegmentPointsByNum(getSegmentTPointFuns, segmentPointsNum) { return getSegmentTPointFuns.map(function(getSegmentTPointFun, i) { var tGap = 1 / segmentPointsNum[i]; return new Array(segmentPointsNum[i]).fill("").map(function(foo, j) { return getSegmentTPointFun(j * tGap); }); }); } function getAllDeviations(segmentPointsDistance, avgLength) { return segmentPointsDistance.map(function(seg) { return seg.map(function(s) { return abs2(s - avgLength); }); }).map(function(seg) { return getNumsSum(seg); }).reduce(function(total, v) { return total + v; }, 0); } function calcUniformPointsByIteration(segmentPoints, getSegmentTPointFuns, segments, precision) { var rounds = 4; var cycles = 1; var _loop = function _loop2() { var totalPointsNum = segmentPoints.reduce(function(total, seg) { return total + seg.length; }, 0); segmentPoints.forEach(function(seg, i) { return seg.push(segments[i][2]); }); var segmentPointsDistance = getSegmentPointsDistance(segmentPoints); var lineSegmentNum = segmentPointsDistance.reduce(function(total, seg) { return total + seg.length; }, 0); var segmentlength = segmentPointsDistance.map(function(seg) { return getNumsSum(seg); }); var totalLength = getNumsSum(segmentlength); var avgLength = totalLength / lineSegmentNum; var allDeviations = getAllDeviations(segmentPointsDistance, avgLength); if (allDeviations <= precision) return "break"; totalPointsNum = ceil(avgLength / precision * totalPointsNum * 1.1); var segmentPointsNum = segmentlength.map(function(length) { return ceil(length / totalLength * totalPointsNum); }); segmentPoints = getSegmentPointsByNum(getSegmentTPointFuns, segmentPointsNum); totalPointsNum = segmentPoints.reduce(function(total, seg) { return total + seg.length; }, 0); var segmentPointsForLength = JSON.parse(JSON.stringify(segmentPoints)); segmentPointsForLength.forEach(function(seg, i) { return seg.push(segments[i][2]); }); segmentPointsDistance = getSegmentPointsDistance(segmentPointsForLength); lineSegmentNum = segmentPointsDistance.reduce(function(total, seg) { return total + seg.length; }, 0); segmentlength = segmentPointsDistance.map(function(seg) { return getNumsSum(seg); }); totalLength = getNumsSum(segmentlength); avgLength = totalLength / lineSegmentNum; var stepSize = 1 / totalPointsNum / 10; getSegmentTPointFuns.forEach(function(getSegmentTPointFun, i) { var currentSegmentPointsNum = segmentPointsNum[i]; var t = new Array(currentSegmentPointsNum).fill("").map(function(foo, j2) { return j2 / segmentPointsNum[i]; }); for (var r = 0; r < rounds; r++) { var distance = getSegmentPointsDistance([segmentPoints[i]])[0]; var deviations = distance.map(function(d) { return d - avgLength; }); var offset = 0; for (var j = 0; j < currentSegmentPointsNum; j++) { if (j === 0) return; offset += deviations[j - 1]; t[j] -= stepSize * offset; if (t[j] > 1) t[j] = 1; if (t[j] < 0) t[j] = 0; segmentPoints[i][j] = getSegmentTPointFun(t[j]); } } }); rounds *= 4; cycles++; }; do { var _ret = _loop(); if (_ret === "break") break; } while (rounds <= 1025); segmentPoints = segmentPoints.reduce(function(all, seg) { return all.concat(seg); }, []); return { segmentPoints, cycles, rounds }; } function bezierCurveToPolyline2(bezierCurve) { var precision = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 5; if (!bezierCurve) { console.error("bezierCurveToPolyline: Missing parameters!"); return false; } if (!(bezierCurve instanceof Array)) { console.error("bezierCurveToPolyline: Parameter bezierCurve must be an array!"); return false; } if (typeof precision !== "number") { console.error("bezierCurveToPolyline: Parameter precision must be a number!"); return false; } var _abstractBezierCurveT = abstractBezierCurveToPolyline(bezierCurve, precision), segmentPoints = _abstractBezierCurveT.segmentPoints; return segmentPoints; } function getBezierCurveLength2(bezierCurve) { var precision = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 5; if (!bezierCurve) { console.error("getBezierCurveLength: Missing parameters!"); return false; } if (!(bezierCurve instanceof Array)) { console.error("getBezierCurveLength: Parameter bezierCurve must be an array!"); return false; } if (typeof precision !== "number") { console.error("getBezierCurveLength: Parameter precision must be a number!"); return false; } var _abstractBezierCurveT2 = abstractBezierCurveToPolyline(bezierCurve, precision), segmentPoints = _abstractBezierCurveT2.segmentPoints; var pointsDistance = getSegmentPointsDistance([segmentPoints])[0]; var length = getNumsSum(pointsDistance); return length; } var _default = bezierCurveToPolyline2; exports["default"] = _default; })(bezierCurveToPolyline); var polylineToBezierCurve$1 = {}; (function(exports) { var _interopRequireDefault2 = interopRequireDefault.exports; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _slicedToArray22 = _interopRequireDefault2(slicedToArray.exports); var _toConsumableArray22 = _interopRequireDefault2(toConsumableArray.exports); function polylineToBezierCurve2(polyline) { var close = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; var offsetA = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0.25; var offsetB = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 0.25; if (!(polyline instanceof Array)) { console.error("polylineToBezierCurve: Parameter polyline must be an array!"); return false; } if (polyline.length <= 2) { console.error("polylineToBezierCurve: Converting to a curve requires at least 3 points!"); return false; } var startPoint = polyline[0]; var bezierCurveLineNum = polyline.length - 1; var bezierCurvePoints = new Array(bezierCurveLineNum).fill(0).map(function(foo, i) { return [].concat((0, _toConsumableArray22["default"])(getBezierCurveLineControlPoints(polyline, i, close, offsetA, offsetB)), [polyline[i + 1]]); }); if (close) closeBezierCurve(bezierCurvePoints, startPoint); bezierCurvePoints.unshift(polyline[0]); return bezierCurvePoints; } function getBezierCurveLineControlPoints(polyline, index) { var close = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; var offsetA = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 0.25; var offsetB = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : 0.25; var pointNum = polyline.length; if (pointNum < 3 || index >= pointNum) return; var beforePointIndex = index - 1; if (beforePointIndex < 0) beforePointIndex = close ? pointNum + beforePointIndex : 0; var afterPointIndex = index + 1; if (afterPointIndex >= pointNum) afterPointIndex = close ? afterPointIndex - pointNum : pointNum - 1; var afterNextPointIndex = index + 2; if (afterNextPointIndex >= pointNum) afterNextPointIndex = close ? afterNextPointIndex - pointNum : pointNum - 1; var pointBefore = polyline[beforePointIndex]; var pointMiddle = polyline[index]; var pointAfter = polyline[afterPointIndex]; var pointAfterNext = polyline[afterNextPointIndex]; return [[pointMiddle[0] + offsetA * (pointAfter[0] - pointBefore[0]), pointMiddle[1] + offsetA * (pointAfter[1] - pointBefore[1])], [pointAfter[0] - offsetB * (pointAfterNext[0] - pointMiddle[0]), pointAfter[1] - offsetB * (pointAfterNext[1] - pointMiddle[1])]]; } function closeBezierCurve(bezierCurve, startPoint) { var firstSubCurve = bezierCurve[0]; var lastSubCurve = bezierCurve.slice(-1)[0]; bezierCurve.push([getSymmetryPoint(lastSubCurve[1], lastSubCurve[2]), getSymmetryPoint(firstSubCurve[0], startPoint), startPoint]); return bezierCurve; } function getSymmetryPoint(point, centerPoint) { var _point = (0, _slicedToArray22["default"])(point, 2), px = _point[0], py = _point[1]; var _centerPoint = (0, _slicedToArray22["default"])(centerPoint, 2), cx = _centerPoint[0], cy = _centerPoint[1]; var minusX = cx - px; var minusY = cy - py; return [cx + minusX, cy + minusY]; } var _default = polylineToBezierCurve2; exports["default"] = _default; })(polylineToBezierCurve$1); (function(exports) { var _interopRequireDefault2 = interopRequireDefault.exports; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "bezierCurveToPolyline", { enumerable: true, get: function get() { return _bezierCurveToPolyline.bezierCurveToPolyline; } }); Object.defineProperty(exports, "getBezierCurveLength", { enumerable: true, get: function get() { return _bezierCurveToPolyline.getBezierCurveLength; } }); Object.defineProperty(exports, "polylineToBezierCurve", { enumerable: true, get: function get() { return _polylineToBezierCurve["default"]; } }); exports["default"] = void 0; var _bezierCurveToPolyline = bezierCurveToPolyline; var _polylineToBezierCurve = _interopRequireDefault2(polylineToBezierCurve$1); var _default = { bezierCurveToPolyline: _bezierCurveToPolyline.bezierCurveToPolyline, getBezierCurveLength: _bezierCurveToPolyline.getBezierCurveLength, polylineToBezierCurve: _polylineToBezierCurve["default"] }; exports["default"] = _default; })(lib$2); var util$1 = {}; var _typeof = { exports: {} }; (function(module) { function _typeof3(obj) { "@babel/helpers - typeof"; return module.exports = _typeof3 = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(obj2) { return typeof obj2; } : function(obj2) { return obj2 && typeof Symbol == "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; }, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof3(obj); } module.exports = _typeof3, module.exports.__esModule = true, module.exports["default"] = module.exports; })(_typeof); (function(exports) { var _interopRequireDefault2 = interopRequireDefault.exports; Object.defineProperty(exports, "__esModule", { value: true }); exports.deepClone = deepClone2; exports.eliminateBlur = eliminateBlur; exports.checkPointIsInCircle = checkPointIsInCircle; exports.getTwoPointDistance = getTwoPointDistance2; exports.checkPointIsInPolygon = checkPointIsInPolygon; exports.checkPointIsInSector = checkPointIsInSector; exports.checkPointIsNearPolyline = checkPointIsNearPolyline; exports.checkPointIsInRect = checkPointIsInRect; exports.getRotatePointPos = getRotatePointPos; exports.getScalePointPos = getScalePointPos; exports.getTranslatePointPos = getTranslatePointPos; exports.getDistanceBetweenPointAndLine = getDistanceBetweenPointAndLine; exports.getCircleRadianPoint = getCircleRadianPoint2; exports.getRegularPolygonPoints = getRegularPolygonPoints; exports["default"] = void 0; var _toConsumableArray22 = _interopRequireDefault2(toConsumableArray.exports); var _slicedToArray22 = _interopRequireDefault2(slicedToArray.exports); var _typeof22 = _interopRequireDefault2(_typeof.exports); var abs2 = Math.abs, sqrt = Math.sqrt, sin = Math.sin, cos = Math.cos, max = Math.max, min = Math.min, PI = Math.PI; function deepClone2(object) { var recursion = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; if (!object) return object; var parse = JSON.parse, stringify = JSON.stringify; if (!recursion) return parse(stringify(object)); var clonedObj = object instanceof Array ? [] : {}; if (object && (0, _typeof22["default"])(object) === "object") { for (var key in object) { if (object.hasOwnProperty(key))