qauMaWeb/node_modules/.cache/babel-loader/bbe75c38faf247d23a7619f7efa...

1 line
22 KiB
JSON

{"ast":null,"code":"import \"core-js/modules/es.array.sort.js\";\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\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 { parsePercent } from '../../util/number.js';\nimport * as zrUtil from 'zrender/lib/core/util.js'; // let PI2 = Math.PI * 2;\n\nvar RADIAN = Math.PI / 180;\nexport default function sunburstLayout(seriesType, ecModel, api) {\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n var center = seriesModel.get('center');\n var radius = seriesModel.get('radius');\n\n if (!zrUtil.isArray(radius)) {\n radius = [0, radius];\n }\n\n if (!zrUtil.isArray(center)) {\n center = [center, center];\n }\n\n var width = api.getWidth();\n var height = api.getHeight();\n var size = Math.min(width, height);\n var cx = parsePercent(center[0], width);\n var cy = parsePercent(center[1], height);\n var r0 = parsePercent(radius[0], size / 2);\n var r = parsePercent(radius[1], size / 2);\n var startAngle = -seriesModel.get('startAngle') * RADIAN;\n var minAngle = seriesModel.get('minAngle') * RADIAN;\n var virtualRoot = seriesModel.getData().tree.root;\n var treeRoot = seriesModel.getViewRoot();\n var rootDepth = treeRoot.depth;\n var sort = seriesModel.get('sort');\n\n if (sort != null) {\n initChildren(treeRoot, sort);\n }\n\n var validDataCount = 0;\n zrUtil.each(treeRoot.children, function (child) {\n !isNaN(child.getValue()) && validDataCount++;\n });\n var sum = treeRoot.getValue(); // Sum may be 0\n\n var unitRadian = Math.PI / (sum || validDataCount) * 2;\n var renderRollupNode = treeRoot.depth > 0;\n var levels = treeRoot.height - (renderRollupNode ? -1 : 1);\n var rPerLevel = (r - r0) / (levels || 1);\n var clockwise = seriesModel.get('clockwise');\n var stillShowZeroSum = seriesModel.get('stillShowZeroSum'); // In the case some sector angle is smaller than minAngle\n // let restAngle = PI2;\n // let valueSumLargerThanMinAngle = 0;\n\n var dir = clockwise ? 1 : -1;\n /**\n * Render a tree\n * @return increased angle\n */\n\n var renderNode = function renderNode(node, startAngle) {\n if (!node) {\n return;\n }\n\n var endAngle = startAngle; // Render self\n\n if (node !== virtualRoot) {\n // Tree node is virtual, so it doesn't need to be drawn\n var value = node.getValue();\n var angle = sum === 0 && stillShowZeroSum ? unitRadian : value * unitRadian;\n\n if (angle < minAngle) {\n angle = minAngle; // restAngle -= minAngle;\n } // else {\n // valueSumLargerThanMinAngle += value;\n // }\n\n\n endAngle = startAngle + dir * angle;\n var depth = node.depth - rootDepth - (renderRollupNode ? -1 : 1);\n var rStart = r0 + rPerLevel * depth;\n var rEnd = r0 + rPerLevel * (depth + 1);\n var levelModel = seriesModel.getLevelModel(node);\n\n if (levelModel) {\n var r0_1 = levelModel.get('r0', true);\n var r_1 = levelModel.get('r', true);\n var radius_1 = levelModel.get('radius', true);\n\n if (radius_1 != null) {\n r0_1 = radius_1[0];\n r_1 = radius_1[1];\n }\n\n r0_1 != null && (rStart = parsePercent(r0_1, size / 2));\n r_1 != null && (rEnd = parsePercent(r_1, size / 2));\n }\n\n node.setLayout({\n angle: angle,\n startAngle: startAngle,\n endAngle: endAngle,\n clockwise: clockwise,\n cx: cx,\n cy: cy,\n r0: rStart,\n r: rEnd\n });\n } // Render children\n\n\n if (node.children && node.children.length) {\n // currentAngle = startAngle;\n var siblingAngle_1 = 0;\n zrUtil.each(node.children, function (node) {\n siblingAngle_1 += renderNode(node, startAngle + siblingAngle_1);\n });\n }\n\n return endAngle - startAngle;\n }; // Virtual root node for roll up\n\n\n if (renderRollupNode) {\n var rStart = r0;\n var rEnd = r0 + rPerLevel;\n var angle = Math.PI * 2;\n virtualRoot.setLayout({\n angle: angle,\n startAngle: startAngle,\n endAngle: startAngle + angle,\n clockwise: clockwise,\n cx: cx,\n cy: cy,\n r0: rStart,\n r: rEnd\n });\n }\n\n renderNode(treeRoot, startAngle);\n });\n}\n/**\n * Init node children by order and update visual\n */\n\nfunction initChildren(node, sortOrder) {\n var children = node.children || [];\n node.children = sort(children, sortOrder); // Init children recursively\n\n if (children.length) {\n zrUtil.each(node.children, function (child) {\n initChildren(child, sortOrder);\n });\n }\n}\n/**\n * Sort children nodes\n *\n * @param {TreeNode[]} children children of node to be sorted\n * @param {string | function | null} sort sort method\n * See SunburstSeries.js for details.\n */\n\n\nfunction sort(children, sortOrder) {\n if (zrUtil.isFunction(sortOrder)) {\n var sortTargets = zrUtil.map(children, function (child, idx) {\n var value = child.getValue();\n return {\n params: {\n depth: child.depth,\n height: child.height,\n dataIndex: child.dataIndex,\n getValue: function getValue() {\n return value;\n }\n },\n index: idx\n };\n });\n sortTargets.sort(function (a, b) {\n return sortOrder(a.params, b.params);\n });\n return zrUtil.map(sortTargets, function (target) {\n return children[target.index];\n });\n } else {\n var isAsc_1 = sortOrder === 'asc';\n return children.sort(function (a, b) {\n var diff = (a.getValue() - b.getValue()) * (isAsc_1 ? 1 : -1);\n return diff === 0 ? (a.dataIndex - b.dataIndex) * (isAsc_1 ? -1 : 1) : diff;\n });\n }\n}","map":{"version":3,"sources":["D:/Work/WorkSpace/GitWorkSpace/TenShop/resource/ElectronicMall/src/ElectronicMallVue/node_modules/echarts/lib/chart/sunburst/sunburstLayout.js"],"names":["parsePercent","zrUtil","RADIAN","Math","PI","sunburstLayout","seriesType","ecModel","api","eachSeriesByType","seriesModel","center","get","radius","isArray","width","getWidth","height","getHeight","size","min","cx","cy","r0","r","startAngle","minAngle","virtualRoot","getData","tree","root","treeRoot","getViewRoot","rootDepth","depth","sort","initChildren","validDataCount","each","children","child","isNaN","getValue","sum","unitRadian","renderRollupNode","levels","rPerLevel","clockwise","stillShowZeroSum","dir","renderNode","node","endAngle","value","angle","rStart","rEnd","levelModel","getLevelModel","r0_1","r_1","radius_1","setLayout","length","siblingAngle_1","sortOrder","isFunction","sortTargets","map","idx","params","dataIndex","index","a","b","target","isAsc_1","diff"],"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 { parsePercent } from '../../util/number.js';\nimport * as zrUtil from 'zrender/lib/core/util.js'; // let PI2 = Math.PI * 2;\n\nvar RADIAN = Math.PI / 180;\nexport default function sunburstLayout(seriesType, ecModel, api) {\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n var center = seriesModel.get('center');\n var radius = seriesModel.get('radius');\n\n if (!zrUtil.isArray(radius)) {\n radius = [0, radius];\n }\n\n if (!zrUtil.isArray(center)) {\n center = [center, center];\n }\n\n var width = api.getWidth();\n var height = api.getHeight();\n var size = Math.min(width, height);\n var cx = parsePercent(center[0], width);\n var cy = parsePercent(center[1], height);\n var r0 = parsePercent(radius[0], size / 2);\n var r = parsePercent(radius[1], size / 2);\n var startAngle = -seriesModel.get('startAngle') * RADIAN;\n var minAngle = seriesModel.get('minAngle') * RADIAN;\n var virtualRoot = seriesModel.getData().tree.root;\n var treeRoot = seriesModel.getViewRoot();\n var rootDepth = treeRoot.depth;\n var sort = seriesModel.get('sort');\n\n if (sort != null) {\n initChildren(treeRoot, sort);\n }\n\n var validDataCount = 0;\n zrUtil.each(treeRoot.children, function (child) {\n !isNaN(child.getValue()) && validDataCount++;\n });\n var sum = treeRoot.getValue(); // Sum may be 0\n\n var unitRadian = Math.PI / (sum || validDataCount) * 2;\n var renderRollupNode = treeRoot.depth > 0;\n var levels = treeRoot.height - (renderRollupNode ? -1 : 1);\n var rPerLevel = (r - r0) / (levels || 1);\n var clockwise = seriesModel.get('clockwise');\n var stillShowZeroSum = seriesModel.get('stillShowZeroSum'); // In the case some sector angle is smaller than minAngle\n // let restAngle = PI2;\n // let valueSumLargerThanMinAngle = 0;\n\n var dir = clockwise ? 1 : -1;\n /**\n * Render a tree\n * @return increased angle\n */\n\n var renderNode = function (node, startAngle) {\n if (!node) {\n return;\n }\n\n var endAngle = startAngle; // Render self\n\n if (node !== virtualRoot) {\n // Tree node is virtual, so it doesn't need to be drawn\n var value = node.getValue();\n var angle = sum === 0 && stillShowZeroSum ? unitRadian : value * unitRadian;\n\n if (angle < minAngle) {\n angle = minAngle; // restAngle -= minAngle;\n } // else {\n // valueSumLargerThanMinAngle += value;\n // }\n\n\n endAngle = startAngle + dir * angle;\n var depth = node.depth - rootDepth - (renderRollupNode ? -1 : 1);\n var rStart = r0 + rPerLevel * depth;\n var rEnd = r0 + rPerLevel * (depth + 1);\n var levelModel = seriesModel.getLevelModel(node);\n\n if (levelModel) {\n var r0_1 = levelModel.get('r0', true);\n var r_1 = levelModel.get('r', true);\n var radius_1 = levelModel.get('radius', true);\n\n if (radius_1 != null) {\n r0_1 = radius_1[0];\n r_1 = radius_1[1];\n }\n\n r0_1 != null && (rStart = parsePercent(r0_1, size / 2));\n r_1 != null && (rEnd = parsePercent(r_1, size / 2));\n }\n\n node.setLayout({\n angle: angle,\n startAngle: startAngle,\n endAngle: endAngle,\n clockwise: clockwise,\n cx: cx,\n cy: cy,\n r0: rStart,\n r: rEnd\n });\n } // Render children\n\n\n if (node.children && node.children.length) {\n // currentAngle = startAngle;\n var siblingAngle_1 = 0;\n zrUtil.each(node.children, function (node) {\n siblingAngle_1 += renderNode(node, startAngle + siblingAngle_1);\n });\n }\n\n return endAngle - startAngle;\n }; // Virtual root node for roll up\n\n\n if (renderRollupNode) {\n var rStart = r0;\n var rEnd = r0 + rPerLevel;\n var angle = Math.PI * 2;\n virtualRoot.setLayout({\n angle: angle,\n startAngle: startAngle,\n endAngle: startAngle + angle,\n clockwise: clockwise,\n cx: cx,\n cy: cy,\n r0: rStart,\n r: rEnd\n });\n }\n\n renderNode(treeRoot, startAngle);\n });\n}\n/**\n * Init node children by order and update visual\n */\n\nfunction initChildren(node, sortOrder) {\n var children = node.children || [];\n node.children = sort(children, sortOrder); // Init children recursively\n\n if (children.length) {\n zrUtil.each(node.children, function (child) {\n initChildren(child, sortOrder);\n });\n }\n}\n/**\n * Sort children nodes\n *\n * @param {TreeNode[]} children children of node to be sorted\n * @param {string | function | null} sort sort method\n * See SunburstSeries.js for details.\n */\n\n\nfunction sort(children, sortOrder) {\n if (zrUtil.isFunction(sortOrder)) {\n var sortTargets = zrUtil.map(children, function (child, idx) {\n var value = child.getValue();\n return {\n params: {\n depth: child.depth,\n height: child.height,\n dataIndex: child.dataIndex,\n getValue: function () {\n return value;\n }\n },\n index: idx\n };\n });\n sortTargets.sort(function (a, b) {\n return sortOrder(a.params, b.params);\n });\n return zrUtil.map(sortTargets, function (target) {\n return children[target.index];\n });\n } else {\n var isAsc_1 = sortOrder === 'asc';\n return children.sort(function (a, b) {\n var diff = (a.getValue() - b.getValue()) * (isAsc_1 ? 1 : -1);\n return diff === 0 ? (a.dataIndex - b.dataIndex) * (isAsc_1 ? -1 : 1) : diff;\n });\n }\n}"]},"metadata":{},"sourceType":"module"}