1 line
39 KiB
JSON
1 line
39 KiB
JSON
{"ast":null,"code":"import _typeof from \"D:/Work/WorkSpace/GitWorkSpace/TenShop/resource/ElectronicMall/src\\u554A/ElectronicMallVue/node_modules/@babel/runtime/helpers/esm/typeof.js\";\nimport \"core-js/modules/es.array.join.js\";\nimport \"core-js/modules/es.array.concat.js\";\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport WeakMap from 'zrender/lib/core/WeakMap.js';\nimport LRU from 'zrender/lib/core/LRU.js';\nimport { defaults, map, isArray, isString, isNumber } from 'zrender/lib/core/util.js';\nimport { getLeastCommonMultiple } from './number.js';\nimport { createSymbol } from './symbol.js';\nimport { brushSingle } from 'zrender/lib/canvas/graphic.js';\nimport { platformApi } from 'zrender/lib/core/platform.js';\nvar decalMap = new WeakMap();\nvar decalCache = new LRU(100);\nvar decalKeys = ['symbol', 'symbolSize', 'symbolKeepAspect', 'color', 'backgroundColor', 'dashArrayX', 'dashArrayY', 'maxTileWidth', 'maxTileHeight'];\n/**\n * Create or update pattern image from decal options\n *\n * @param {InnerDecalObject | 'none'} decalObject decal options, 'none' if no decal\n * @return {Pattern} pattern with generated image, null if no decal\n */\n\nexport function createOrUpdatePatternFromDecal(decalObject, api) {\n if (decalObject === 'none') {\n return null;\n }\n\n var dpr = api.getDevicePixelRatio();\n var zr = api.getZr();\n var isSVG = zr.painter.type === 'svg';\n\n if (decalObject.dirty) {\n decalMap[\"delete\"](decalObject);\n }\n\n var oldPattern = decalMap.get(decalObject);\n\n if (oldPattern) {\n return oldPattern;\n }\n\n var decalOpt = defaults(decalObject, {\n symbol: 'rect',\n symbolSize: 1,\n symbolKeepAspect: true,\n color: 'rgba(0, 0, 0, 0.2)',\n backgroundColor: null,\n dashArrayX: 5,\n dashArrayY: 5,\n rotation: 0,\n maxTileWidth: 512,\n maxTileHeight: 512\n });\n\n if (decalOpt.backgroundColor === 'none') {\n decalOpt.backgroundColor = null;\n }\n\n var pattern = {\n repeat: 'repeat'\n };\n setPatternnSource(pattern);\n pattern.rotation = decalOpt.rotation;\n pattern.scaleX = pattern.scaleY = isSVG ? 1 : 1 / dpr;\n decalMap.set(decalObject, pattern);\n decalObject.dirty = false;\n return pattern;\n\n function setPatternnSource(pattern) {\n var keys = [dpr];\n var isValidKey = true;\n\n for (var i = 0; i < decalKeys.length; ++i) {\n var value = decalOpt[decalKeys[i]];\n\n if (value != null && !isArray(value) && !isString(value) && !isNumber(value) && typeof value !== 'boolean') {\n isValidKey = false;\n break;\n }\n\n keys.push(value);\n }\n\n var cacheKey;\n\n if (isValidKey) {\n cacheKey = keys.join(',') + (isSVG ? '-svg' : '');\n var cache = decalCache.get(cacheKey);\n\n if (cache) {\n isSVG ? pattern.svgElement = cache : pattern.image = cache;\n }\n }\n\n var dashArrayX = normalizeDashArrayX(decalOpt.dashArrayX);\n var dashArrayY = normalizeDashArrayY(decalOpt.dashArrayY);\n var symbolArray = normalizeSymbolArray(decalOpt.symbol);\n var lineBlockLengthsX = getLineBlockLengthX(dashArrayX);\n var lineBlockLengthY = getLineBlockLengthY(dashArrayY);\n var canvas = !isSVG && platformApi.createCanvas();\n var svgRoot = isSVG && {\n tag: 'g',\n attrs: {},\n key: 'dcl',\n children: []\n };\n var pSize = getPatternSize();\n var ctx;\n\n if (canvas) {\n canvas.width = pSize.width * dpr;\n canvas.height = pSize.height * dpr;\n ctx = canvas.getContext('2d');\n }\n\n brushDecal();\n\n if (isValidKey) {\n decalCache.put(cacheKey, canvas || svgRoot);\n }\n\n pattern.image = canvas;\n pattern.svgElement = svgRoot;\n pattern.svgWidth = pSize.width;\n pattern.svgHeight = pSize.height;\n /**\n * Get minimum length that can make a repeatable pattern.\n *\n * @return {Object} pattern width and height\n */\n\n function getPatternSize() {\n /**\n * For example, if dash is [[3, 2], [2, 1]] for X, it looks like\n * |--- --- --- --- --- ...\n * |-- -- -- -- -- -- -- -- ...\n * |--- --- --- --- --- ...\n * |-- -- -- -- -- -- -- -- ...\n * So the minimum length of X is 15,\n * which is the least common multiple of `3 + 2` and `2 + 1`\n * |--- --- --- |--- --- ...\n * |-- -- -- -- -- |-- -- -- ...\n */\n var width = 1;\n\n for (var i = 0, xlen = lineBlockLengthsX.length; i < xlen; ++i) {\n width = getLeastCommonMultiple(width, lineBlockLengthsX[i]);\n }\n\n var symbolRepeats = 1;\n\n for (var i = 0, xlen = symbolArray.length; i < xlen; ++i) {\n symbolRepeats = getLeastCommonMultiple(symbolRepeats, symbolArray[i].length);\n }\n\n width *= symbolRepeats;\n var height = lineBlockLengthY * lineBlockLengthsX.length * symbolArray.length;\n\n if (process.env.NODE_ENV !== 'production') {\n var warn = function warn(attrName) {\n /* eslint-disable-next-line */\n console.warn(\"Calculated decal size is greater than \" + attrName + \" due to decal option settings so \" + attrName + \" is used for the decal size. Please consider changing the decal option to make a smaller decal or set \" + attrName + \" to be larger to avoid incontinuity.\");\n };\n\n if (width > decalOpt.maxTileWidth) {\n warn('maxTileWidth');\n }\n\n if (height > decalOpt.maxTileHeight) {\n warn('maxTileHeight');\n }\n }\n\n return {\n width: Math.max(1, Math.min(width, decalOpt.maxTileWidth)),\n height: Math.max(1, Math.min(height, decalOpt.maxTileHeight))\n };\n }\n\n function brushDecal() {\n if (ctx) {\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n if (decalOpt.backgroundColor) {\n ctx.fillStyle = decalOpt.backgroundColor;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n }\n }\n\n var ySum = 0;\n\n for (var i = 0; i < dashArrayY.length; ++i) {\n ySum += dashArrayY[i];\n }\n\n if (ySum <= 0) {\n // dashArrayY is 0, draw nothing\n return;\n }\n\n var y = -lineBlockLengthY;\n var yId = 0;\n var yIdTotal = 0;\n var xId0 = 0;\n\n while (y < pSize.height) {\n if (yId % 2 === 0) {\n var symbolYId = yIdTotal / 2 % symbolArray.length;\n var x = 0;\n var xId1 = 0;\n var xId1Total = 0;\n\n while (x < pSize.width * 2) {\n var xSum = 0;\n\n for (var i = 0; i < dashArrayX[xId0].length; ++i) {\n xSum += dashArrayX[xId0][i];\n }\n\n if (xSum <= 0) {\n // Skip empty line\n break;\n } // E.g., [15, 5, 20, 5] draws only for 15 and 20\n\n\n if (xId1 % 2 === 0) {\n var size = (1 - decalOpt.symbolSize) * 0.5;\n var left = x + dashArrayX[xId0][xId1] * size;\n var top_1 = y + dashArrayY[yId] * size;\n var width = dashArrayX[xId0][xId1] * decalOpt.symbolSize;\n var height = dashArrayY[yId] * decalOpt.symbolSize;\n var symbolXId = xId1Total / 2 % symbolArray[symbolYId].length;\n brushSymbol(left, top_1, width, height, symbolArray[symbolYId][symbolXId]);\n }\n\n x += dashArrayX[xId0][xId1];\n ++xId1Total;\n ++xId1;\n\n if (xId1 === dashArrayX[xId0].length) {\n xId1 = 0;\n }\n }\n\n ++xId0;\n\n if (xId0 === dashArrayX.length) {\n xId0 = 0;\n }\n }\n\n y += dashArrayY[yId];\n ++yIdTotal;\n ++yId;\n\n if (yId === dashArrayY.length) {\n yId = 0;\n }\n }\n\n function brushSymbol(x, y, width, height, symbolType) {\n var scale = isSVG ? 1 : dpr;\n var symbol = createSymbol(symbolType, x * scale, y * scale, width * scale, height * scale, decalOpt.color, decalOpt.symbolKeepAspect);\n\n if (isSVG) {\n var symbolVNode = zr.painter.renderOneToVNode(symbol);\n\n if (symbolVNode) {\n svgRoot.children.push(symbolVNode);\n }\n } else {\n // Paint to canvas for all other renderers.\n brushSingle(ctx, symbol);\n }\n }\n }\n }\n}\n/**\n * Convert symbol array into normalized array\n *\n * @param {string | (string | string[])[]} symbol symbol input\n * @return {string[][]} normolized symbol array\n */\n\nfunction normalizeSymbolArray(symbol) {\n if (!symbol || symbol.length === 0) {\n return [['rect']];\n }\n\n if (isString(symbol)) {\n return [[symbol]];\n }\n\n var isAllString = true;\n\n for (var i = 0; i < symbol.length; ++i) {\n if (!isString(symbol[i])) {\n isAllString = false;\n break;\n }\n }\n\n if (isAllString) {\n return normalizeSymbolArray([symbol]);\n }\n\n var result = [];\n\n for (var i = 0; i < symbol.length; ++i) {\n if (isString(symbol[i])) {\n result.push([symbol[i]]);\n } else {\n result.push(symbol[i]);\n }\n }\n\n return result;\n}\n/**\n * Convert dash input into dashArray\n *\n * @param {DecalDashArrayX} dash dash input\n * @return {number[][]} normolized dash array\n */\n\n\nfunction normalizeDashArrayX(dash) {\n if (!dash || dash.length === 0) {\n return [[0, 0]];\n }\n\n if (isNumber(dash)) {\n var dashValue = Math.ceil(dash);\n return [[dashValue, dashValue]];\n }\n /**\n * [20, 5] should be normalized into [[20, 5]],\n * while [20, [5, 10]] should be normalized into [[20, 20], [5, 10]]\n */\n\n\n var isAllNumber = true;\n\n for (var i = 0; i < dash.length; ++i) {\n if (!isNumber(dash[i])) {\n isAllNumber = false;\n break;\n }\n }\n\n if (isAllNumber) {\n return normalizeDashArrayX([dash]);\n }\n\n var result = [];\n\n for (var i = 0; i < dash.length; ++i) {\n if (isNumber(dash[i])) {\n var dashValue = Math.ceil(dash[i]);\n result.push([dashValue, dashValue]);\n } else {\n var dashValue = map(dash[i], function (n) {\n return Math.ceil(n);\n });\n\n if (dashValue.length % 2 === 1) {\n // [4, 2, 1] means |---- - -- |---- - -- |\n // so normalize it to be [4, 2, 1, 4, 2, 1]\n result.push(dashValue.concat(dashValue));\n } else {\n result.push(dashValue);\n }\n }\n }\n\n return result;\n}\n/**\n * Convert dash input into dashArray\n *\n * @param {DecalDashArrayY} dash dash input\n * @return {number[]} normolized dash array\n */\n\n\nfunction normalizeDashArrayY(dash) {\n if (!dash || _typeof(dash) === 'object' && dash.length === 0) {\n return [0, 0];\n }\n\n if (isNumber(dash)) {\n var dashValue_1 = Math.ceil(dash);\n return [dashValue_1, dashValue_1];\n }\n\n var dashValue = map(dash, function (n) {\n return Math.ceil(n);\n });\n return dash.length % 2 ? dashValue.concat(dashValue) : dashValue;\n}\n/**\n * Get block length of each line. A block is the length of dash line and space.\n * For example, a line with [4, 1] has a dash line of 4 and a space of 1 after\n * that, so the block length of this line is 5.\n *\n * @param {number[][]} dash dash array of X or Y\n * @return {number[]} block length of each line\n */\n\n\nfunction getLineBlockLengthX(dash) {\n return map(dash, function (line) {\n return getLineBlockLengthY(line);\n });\n}\n\nfunction getLineBlockLengthY(dash) {\n var blockLength = 0;\n\n for (var i = 0; i < dash.length; ++i) {\n blockLength += dash[i];\n }\n\n if (dash.length % 2 === 1) {\n // [4, 2, 1] means |---- - -- |---- - -- |\n // So total length is (4 + 2 + 1) * 2\n return blockLength * 2;\n }\n\n return blockLength;\n}","map":{"version":3,"sources":["D:/Work/WorkSpace/GitWorkSpace/TenShop/resource/ElectronicMall/src啊/ElectronicMallVue/node_modules/echarts/lib/util/decal.js"],"names":["WeakMap","LRU","defaults","map","isArray","isString","isNumber","getLeastCommonMultiple","createSymbol","brushSingle","platformApi","decalMap","decalCache","decalKeys","createOrUpdatePatternFromDecal","decalObject","api","dpr","getDevicePixelRatio","zr","getZr","isSVG","painter","type","dirty","oldPattern","get","decalOpt","symbol","symbolSize","symbolKeepAspect","color","backgroundColor","dashArrayX","dashArrayY","rotation","maxTileWidth","maxTileHeight","pattern","repeat","setPatternnSource","scaleX","scaleY","set","keys","isValidKey","i","length","value","push","cacheKey","join","cache","svgElement","image","normalizeDashArrayX","normalizeDashArrayY","symbolArray","normalizeSymbolArray","lineBlockLengthsX","getLineBlockLengthX","lineBlockLengthY","getLineBlockLengthY","canvas","createCanvas","svgRoot","tag","attrs","key","children","pSize","getPatternSize","ctx","width","height","getContext","brushDecal","put","svgWidth","svgHeight","xlen","symbolRepeats","process","env","NODE_ENV","warn","attrName","console","Math","max","min","clearRect","fillStyle","fillRect","ySum","y","yId","yIdTotal","xId0","symbolYId","x","xId1","xId1Total","xSum","size","left","top_1","symbolXId","brushSymbol","symbolType","scale","symbolVNode","renderOneToVNode","isAllString","result","dash","dashValue","ceil","isAllNumber","n","concat","dashValue_1","line","blockLength"],"mappings":"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","sourcesContent":["\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport WeakMap from 'zrender/lib/core/WeakMap.js';\nimport LRU from 'zrender/lib/core/LRU.js';\nimport { defaults, map, isArray, isString, isNumber } from 'zrender/lib/core/util.js';\nimport { getLeastCommonMultiple } from './number.js';\nimport { createSymbol } from './symbol.js';\nimport { brushSingle } from 'zrender/lib/canvas/graphic.js';\nimport { platformApi } from 'zrender/lib/core/platform.js';\nvar decalMap = new WeakMap();\nvar decalCache = new LRU(100);\nvar decalKeys = ['symbol', 'symbolSize', 'symbolKeepAspect', 'color', 'backgroundColor', 'dashArrayX', 'dashArrayY', 'maxTileWidth', 'maxTileHeight'];\n/**\n * Create or update pattern image from decal options\n *\n * @param {InnerDecalObject | 'none'} decalObject decal options, 'none' if no decal\n * @return {Pattern} pattern with generated image, null if no decal\n */\n\nexport function createOrUpdatePatternFromDecal(decalObject, api) {\n if (decalObject === 'none') {\n return null;\n }\n\n var dpr = api.getDevicePixelRatio();\n var zr = api.getZr();\n var isSVG = zr.painter.type === 'svg';\n\n if (decalObject.dirty) {\n decalMap[\"delete\"](decalObject);\n }\n\n var oldPattern = decalMap.get(decalObject);\n\n if (oldPattern) {\n return oldPattern;\n }\n\n var decalOpt = defaults(decalObject, {\n symbol: 'rect',\n symbolSize: 1,\n symbolKeepAspect: true,\n color: 'rgba(0, 0, 0, 0.2)',\n backgroundColor: null,\n dashArrayX: 5,\n dashArrayY: 5,\n rotation: 0,\n maxTileWidth: 512,\n maxTileHeight: 512\n });\n\n if (decalOpt.backgroundColor === 'none') {\n decalOpt.backgroundColor = null;\n }\n\n var pattern = {\n repeat: 'repeat'\n };\n setPatternnSource(pattern);\n pattern.rotation = decalOpt.rotation;\n pattern.scaleX = pattern.scaleY = isSVG ? 1 : 1 / dpr;\n decalMap.set(decalObject, pattern);\n decalObject.dirty = false;\n return pattern;\n\n function setPatternnSource(pattern) {\n var keys = [dpr];\n var isValidKey = true;\n\n for (var i = 0; i < decalKeys.length; ++i) {\n var value = decalOpt[decalKeys[i]];\n\n if (value != null && !isArray(value) && !isString(value) && !isNumber(value) && typeof value !== 'boolean') {\n isValidKey = false;\n break;\n }\n\n keys.push(value);\n }\n\n var cacheKey;\n\n if (isValidKey) {\n cacheKey = keys.join(',') + (isSVG ? '-svg' : '');\n var cache = decalCache.get(cacheKey);\n\n if (cache) {\n isSVG ? pattern.svgElement = cache : pattern.image = cache;\n }\n }\n\n var dashArrayX = normalizeDashArrayX(decalOpt.dashArrayX);\n var dashArrayY = normalizeDashArrayY(decalOpt.dashArrayY);\n var symbolArray = normalizeSymbolArray(decalOpt.symbol);\n var lineBlockLengthsX = getLineBlockLengthX(dashArrayX);\n var lineBlockLengthY = getLineBlockLengthY(dashArrayY);\n var canvas = !isSVG && platformApi.createCanvas();\n var svgRoot = isSVG && {\n tag: 'g',\n attrs: {},\n key: 'dcl',\n children: []\n };\n var pSize = getPatternSize();\n var ctx;\n\n if (canvas) {\n canvas.width = pSize.width * dpr;\n canvas.height = pSize.height * dpr;\n ctx = canvas.getContext('2d');\n }\n\n brushDecal();\n\n if (isValidKey) {\n decalCache.put(cacheKey, canvas || svgRoot);\n }\n\n pattern.image = canvas;\n pattern.svgElement = svgRoot;\n pattern.svgWidth = pSize.width;\n pattern.svgHeight = pSize.height;\n /**\n * Get minimum length that can make a repeatable pattern.\n *\n * @return {Object} pattern width and height\n */\n\n function getPatternSize() {\n /**\n * For example, if dash is [[3, 2], [2, 1]] for X, it looks like\n * |--- --- --- --- --- ...\n * |-- -- -- -- -- -- -- -- ...\n * |--- --- --- --- --- ...\n * |-- -- -- -- -- -- -- -- ...\n * So the minimum length of X is 15,\n * which is the least common multiple of `3 + 2` and `2 + 1`\n * |--- --- --- |--- --- ...\n * |-- -- -- -- -- |-- -- -- ...\n */\n var width = 1;\n\n for (var i = 0, xlen = lineBlockLengthsX.length; i < xlen; ++i) {\n width = getLeastCommonMultiple(width, lineBlockLengthsX[i]);\n }\n\n var symbolRepeats = 1;\n\n for (var i = 0, xlen = symbolArray.length; i < xlen; ++i) {\n symbolRepeats = getLeastCommonMultiple(symbolRepeats, symbolArray[i].length);\n }\n\n width *= symbolRepeats;\n var height = lineBlockLengthY * lineBlockLengthsX.length * symbolArray.length;\n\n if (process.env.NODE_ENV !== 'production') {\n var warn = function (attrName) {\n /* eslint-disable-next-line */\n console.warn(\"Calculated decal size is greater than \" + attrName + \" due to decal option settings so \" + attrName + \" is used for the decal size. Please consider changing the decal option to make a smaller decal or set \" + attrName + \" to be larger to avoid incontinuity.\");\n };\n\n if (width > decalOpt.maxTileWidth) {\n warn('maxTileWidth');\n }\n\n if (height > decalOpt.maxTileHeight) {\n warn('maxTileHeight');\n }\n }\n\n return {\n width: Math.max(1, Math.min(width, decalOpt.maxTileWidth)),\n height: Math.max(1, Math.min(height, decalOpt.maxTileHeight))\n };\n }\n\n function brushDecal() {\n if (ctx) {\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n if (decalOpt.backgroundColor) {\n ctx.fillStyle = decalOpt.backgroundColor;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n }\n }\n\n var ySum = 0;\n\n for (var i = 0; i < dashArrayY.length; ++i) {\n ySum += dashArrayY[i];\n }\n\n if (ySum <= 0) {\n // dashArrayY is 0, draw nothing\n return;\n }\n\n var y = -lineBlockLengthY;\n var yId = 0;\n var yIdTotal = 0;\n var xId0 = 0;\n\n while (y < pSize.height) {\n if (yId % 2 === 0) {\n var symbolYId = yIdTotal / 2 % symbolArray.length;\n var x = 0;\n var xId1 = 0;\n var xId1Total = 0;\n\n while (x < pSize.width * 2) {\n var xSum = 0;\n\n for (var i = 0; i < dashArrayX[xId0].length; ++i) {\n xSum += dashArrayX[xId0][i];\n }\n\n if (xSum <= 0) {\n // Skip empty line\n break;\n } // E.g., [15, 5, 20, 5] draws only for 15 and 20\n\n\n if (xId1 % 2 === 0) {\n var size = (1 - decalOpt.symbolSize) * 0.5;\n var left = x + dashArrayX[xId0][xId1] * size;\n var top_1 = y + dashArrayY[yId] * size;\n var width = dashArrayX[xId0][xId1] * decalOpt.symbolSize;\n var height = dashArrayY[yId] * decalOpt.symbolSize;\n var symbolXId = xId1Total / 2 % symbolArray[symbolYId].length;\n brushSymbol(left, top_1, width, height, symbolArray[symbolYId][symbolXId]);\n }\n\n x += dashArrayX[xId0][xId1];\n ++xId1Total;\n ++xId1;\n\n if (xId1 === dashArrayX[xId0].length) {\n xId1 = 0;\n }\n }\n\n ++xId0;\n\n if (xId0 === dashArrayX.length) {\n xId0 = 0;\n }\n }\n\n y += dashArrayY[yId];\n ++yIdTotal;\n ++yId;\n\n if (yId === dashArrayY.length) {\n yId = 0;\n }\n }\n\n function brushSymbol(x, y, width, height, symbolType) {\n var scale = isSVG ? 1 : dpr;\n var symbol = createSymbol(symbolType, x * scale, y * scale, width * scale, height * scale, decalOpt.color, decalOpt.symbolKeepAspect);\n\n if (isSVG) {\n var symbolVNode = zr.painter.renderOneToVNode(symbol);\n\n if (symbolVNode) {\n svgRoot.children.push(symbolVNode);\n }\n } else {\n // Paint to canvas for all other renderers.\n brushSingle(ctx, symbol);\n }\n }\n }\n }\n}\n/**\n * Convert symbol array into normalized array\n *\n * @param {string | (string | string[])[]} symbol symbol input\n * @return {string[][]} normolized symbol array\n */\n\nfunction normalizeSymbolArray(symbol) {\n if (!symbol || symbol.length === 0) {\n return [['rect']];\n }\n\n if (isString(symbol)) {\n return [[symbol]];\n }\n\n var isAllString = true;\n\n for (var i = 0; i < symbol.length; ++i) {\n if (!isString(symbol[i])) {\n isAllString = false;\n break;\n }\n }\n\n if (isAllString) {\n return normalizeSymbolArray([symbol]);\n }\n\n var result = [];\n\n for (var i = 0; i < symbol.length; ++i) {\n if (isString(symbol[i])) {\n result.push([symbol[i]]);\n } else {\n result.push(symbol[i]);\n }\n }\n\n return result;\n}\n/**\n * Convert dash input into dashArray\n *\n * @param {DecalDashArrayX} dash dash input\n * @return {number[][]} normolized dash array\n */\n\n\nfunction normalizeDashArrayX(dash) {\n if (!dash || dash.length === 0) {\n return [[0, 0]];\n }\n\n if (isNumber(dash)) {\n var dashValue = Math.ceil(dash);\n return [[dashValue, dashValue]];\n }\n /**\n * [20, 5] should be normalized into [[20, 5]],\n * while [20, [5, 10]] should be normalized into [[20, 20], [5, 10]]\n */\n\n\n var isAllNumber = true;\n\n for (var i = 0; i < dash.length; ++i) {\n if (!isNumber(dash[i])) {\n isAllNumber = false;\n break;\n }\n }\n\n if (isAllNumber) {\n return normalizeDashArrayX([dash]);\n }\n\n var result = [];\n\n for (var i = 0; i < dash.length; ++i) {\n if (isNumber(dash[i])) {\n var dashValue = Math.ceil(dash[i]);\n result.push([dashValue, dashValue]);\n } else {\n var dashValue = map(dash[i], function (n) {\n return Math.ceil(n);\n });\n\n if (dashValue.length % 2 === 1) {\n // [4, 2, 1] means |---- - -- |---- - -- |\n // so normalize it to be [4, 2, 1, 4, 2, 1]\n result.push(dashValue.concat(dashValue));\n } else {\n result.push(dashValue);\n }\n }\n }\n\n return result;\n}\n/**\n * Convert dash input into dashArray\n *\n * @param {DecalDashArrayY} dash dash input\n * @return {number[]} normolized dash array\n */\n\n\nfunction normalizeDashArrayY(dash) {\n if (!dash || typeof dash === 'object' && dash.length === 0) {\n return [0, 0];\n }\n\n if (isNumber(dash)) {\n var dashValue_1 = Math.ceil(dash);\n return [dashValue_1, dashValue_1];\n }\n\n var dashValue = map(dash, function (n) {\n return Math.ceil(n);\n });\n return dash.length % 2 ? dashValue.concat(dashValue) : dashValue;\n}\n/**\n * Get block length of each line. A block is the length of dash line and space.\n * For example, a line with [4, 1] has a dash line of 4 and a space of 1 after\n * that, so the block length of this line is 5.\n *\n * @param {number[][]} dash dash array of X or Y\n * @return {number[]} block length of each line\n */\n\n\nfunction getLineBlockLengthX(dash) {\n return map(dash, function (line) {\n return getLineBlockLengthY(line);\n });\n}\n\nfunction getLineBlockLengthY(dash) {\n var blockLength = 0;\n\n for (var i = 0; i < dash.length; ++i) {\n blockLength += dash[i];\n }\n\n if (dash.length % 2 === 1) {\n // [4, 2, 1] means |---- - -- |---- - -- |\n // So total length is (4 + 2 + 1) * 2\n return blockLength * 2;\n }\n\n return blockLength;\n}"]},"metadata":{},"sourceType":"module"} |