1 line
31 KiB
JSON
1 line
31 KiB
JSON
{"ast":null,"code":"import \"core-js/modules/es.array.fill.js\";\nimport { brush, setClipPath, setGradient, setPattern } from './graphic.js';\nimport { createElement, createVNode, vNodeToString, getCssString, createBrushScope, createSVGVNode } from './core.js';\nimport { normalizeColor, encodeBase64, isGradient, isPattern } from './helper.js';\nimport { extend, keys, logError, map, noop, retrieve2 } from '../core/util.js';\nimport patch, { updateAttrs } from './patch.js';\nimport { getSize } from '../canvas/helper.js';\nvar svgId = 0;\n\nvar SVGPainter = function () {\n function SVGPainter(root, storage, opts) {\n this.type = 'svg';\n this.refreshHover = createMethodNotSupport('refreshHover');\n this.configLayer = createMethodNotSupport('configLayer');\n this.storage = storage;\n this._opts = opts = extend({}, opts);\n this.root = root;\n this._id = 'zr' + svgId++;\n this._oldVNode = createSVGVNode(opts.width, opts.height);\n\n if (root && !opts.ssr) {\n var viewport = this._viewport = document.createElement('div');\n viewport.style.cssText = 'position:relative;overflow:hidden';\n var svgDom = this._svgDom = this._oldVNode.elm = createElement('svg');\n updateAttrs(null, this._oldVNode);\n viewport.appendChild(svgDom);\n root.appendChild(viewport);\n }\n\n this.resize(opts.width, opts.height);\n }\n\n SVGPainter.prototype.getType = function () {\n return this.type;\n };\n\n SVGPainter.prototype.getViewportRoot = function () {\n return this._viewport;\n };\n\n SVGPainter.prototype.getViewportRootOffset = function () {\n var viewportRoot = this.getViewportRoot();\n\n if (viewportRoot) {\n return {\n offsetLeft: viewportRoot.offsetLeft || 0,\n offsetTop: viewportRoot.offsetTop || 0\n };\n }\n };\n\n SVGPainter.prototype.getSvgDom = function () {\n return this._svgDom;\n };\n\n SVGPainter.prototype.refresh = function () {\n if (this.root) {\n var vnode = this.renderToVNode({\n willUpdate: true\n });\n vnode.attrs.style = 'position:absolute;left:0;top:0;user-select:none';\n patch(this._oldVNode, vnode);\n this._oldVNode = vnode;\n }\n };\n\n SVGPainter.prototype.renderOneToVNode = function (el) {\n return brush(el, createBrushScope(this._id));\n };\n\n SVGPainter.prototype.renderToVNode = function (opts) {\n opts = opts || {};\n var list = this.storage.getDisplayList(true);\n var width = this._width;\n var height = this._height;\n var scope = createBrushScope(this._id);\n scope.animation = opts.animation;\n scope.willUpdate = opts.willUpdate;\n scope.compress = opts.compress;\n var children = [];\n var bgVNode = this._bgVNode = createBackgroundVNode(width, height, this._backgroundColor, scope);\n bgVNode && children.push(bgVNode);\n var mainVNode = !opts.compress ? this._mainVNode = createVNode('g', 'main', {}, []) : null;\n\n this._paintList(list, scope, mainVNode ? mainVNode.children : children);\n\n mainVNode && children.push(mainVNode);\n var defs = map(keys(scope.defs), function (id) {\n return scope.defs[id];\n });\n\n if (defs.length) {\n children.push(createVNode('defs', 'defs', {}, defs));\n }\n\n if (opts.animation) {\n var animationCssStr = getCssString(scope.cssNodes, scope.cssAnims, {\n newline: true\n });\n\n if (animationCssStr) {\n var styleNode = createVNode('style', 'stl', {}, [], animationCssStr);\n children.push(styleNode);\n }\n }\n\n return createSVGVNode(width, height, children, opts.useViewBox);\n };\n\n SVGPainter.prototype.renderToString = function (opts) {\n opts = opts || {};\n return vNodeToString(this.renderToVNode({\n animation: retrieve2(opts.cssAnimation, true),\n willUpdate: false,\n compress: true,\n useViewBox: retrieve2(opts.useViewBox, true)\n }), {\n newline: true\n });\n };\n\n SVGPainter.prototype.setBackgroundColor = function (backgroundColor) {\n this._backgroundColor = backgroundColor;\n };\n\n SVGPainter.prototype.getSvgRoot = function () {\n return this._mainVNode && this._mainVNode.elm;\n };\n\n SVGPainter.prototype._paintList = function (list, scope, out) {\n var listLen = list.length;\n var clipPathsGroupsStack = [];\n var clipPathsGroupsStackDepth = 0;\n var currentClipPathGroup;\n var prevClipPaths;\n var clipGroupNodeIdx = 0;\n\n for (var i = 0; i < listLen; i++) {\n var displayable = list[i];\n\n if (!displayable.invisible) {\n var clipPaths = displayable.__clipPaths;\n var len = clipPaths && clipPaths.length || 0;\n var prevLen = prevClipPaths && prevClipPaths.length || 0;\n var lca = void 0;\n\n for (lca = Math.max(len - 1, prevLen - 1); lca >= 0; lca--) {\n if (clipPaths && prevClipPaths && clipPaths[lca] === prevClipPaths[lca]) {\n break;\n }\n }\n\n for (var i_1 = prevLen - 1; i_1 > lca; i_1--) {\n clipPathsGroupsStackDepth--;\n currentClipPathGroup = clipPathsGroupsStack[clipPathsGroupsStackDepth - 1];\n }\n\n for (var i_2 = lca + 1; i_2 < len; i_2++) {\n var groupAttrs = {};\n setClipPath(clipPaths[i_2], groupAttrs, scope);\n var g = createVNode('g', 'clip-g-' + clipGroupNodeIdx++, groupAttrs, []);\n (currentClipPathGroup ? currentClipPathGroup.children : out).push(g);\n clipPathsGroupsStack[clipPathsGroupsStackDepth++] = g;\n currentClipPathGroup = g;\n }\n\n prevClipPaths = clipPaths;\n var ret = brush(displayable, scope);\n\n if (ret) {\n (currentClipPathGroup ? currentClipPathGroup.children : out).push(ret);\n }\n }\n }\n };\n\n SVGPainter.prototype.resize = function (width, height) {\n var opts = this._opts;\n var root = this.root;\n var viewport = this._viewport;\n width != null && (opts.width = width);\n height != null && (opts.height = height);\n\n if (root && viewport) {\n viewport.style.display = 'none';\n width = getSize(root, 0, opts);\n height = getSize(root, 1, opts);\n viewport.style.display = '';\n }\n\n if (this._width !== width || this._height !== height) {\n this._width = width;\n this._height = height;\n\n if (viewport) {\n var viewportStyle = viewport.style;\n viewportStyle.width = width + 'px';\n viewportStyle.height = height + 'px';\n }\n\n if (!isPattern(this._backgroundColor)) {\n var svgDom = this._svgDom;\n\n if (svgDom) {\n svgDom.setAttribute('width', width);\n svgDom.setAttribute('height', height);\n }\n\n var bgEl = this._bgVNode && this._bgVNode.elm;\n\n if (bgEl) {\n bgEl.setAttribute('width', width);\n bgEl.setAttribute('height', height);\n }\n } else {\n this.refresh();\n }\n }\n };\n\n SVGPainter.prototype.getWidth = function () {\n return this._width;\n };\n\n SVGPainter.prototype.getHeight = function () {\n return this._height;\n };\n\n SVGPainter.prototype.dispose = function () {\n if (this.root) {\n this.root.innerHTML = '';\n }\n\n this._svgDom = this._viewport = this.storage = this._oldVNode = this._bgVNode = this._mainVNode = null;\n };\n\n SVGPainter.prototype.clear = function () {\n if (this._svgDom) {\n this._svgDom.innerHTML = null;\n }\n\n this._oldVNode = null;\n };\n\n SVGPainter.prototype.toDataURL = function (base64) {\n var str = this.renderToString();\n var prefix = 'data:image/svg+xml;';\n\n if (base64) {\n str = encodeBase64(str);\n return str && prefix + 'base64,' + str;\n }\n\n return prefix + 'charset=UTF-8,' + encodeURIComponent(str);\n };\n\n return SVGPainter;\n}();\n\nfunction createMethodNotSupport(method) {\n return function () {\n if (process.env.NODE_ENV !== 'production') {\n logError('In SVG mode painter not support method \"' + method + '\"');\n }\n };\n}\n\nfunction createBackgroundVNode(width, height, backgroundColor, scope) {\n var bgVNode;\n\n if (backgroundColor && backgroundColor !== 'none') {\n bgVNode = createVNode('rect', 'bg', {\n width: width,\n height: height,\n x: '0',\n y: '0',\n id: '0'\n });\n\n if (isGradient(backgroundColor)) {\n setGradient({\n fill: backgroundColor\n }, bgVNode.attrs, 'fill', scope);\n } else if (isPattern(backgroundColor)) {\n setPattern({\n style: {\n fill: backgroundColor\n },\n dirty: noop,\n getBoundingRect: function getBoundingRect() {\n return {\n width: width,\n height: height\n };\n }\n }, bgVNode.attrs, 'fill', scope);\n } else {\n var _a = normalizeColor(backgroundColor),\n color = _a.color,\n opacity = _a.opacity;\n\n bgVNode.attrs.fill = color;\n opacity < 1 && (bgVNode.attrs['fill-opacity'] = opacity);\n }\n }\n\n return bgVNode;\n}\n\nexport default SVGPainter;","map":{"version":3,"sources":["D:/Work/WorkSpace/GitWorkSpace/TenShop/resource/ElectronicMall/src啊/ElectronicMallVue/node_modules/zrender/lib/svg/Painter.js"],"names":["brush","setClipPath","setGradient","setPattern","createElement","createVNode","vNodeToString","getCssString","createBrushScope","createSVGVNode","normalizeColor","encodeBase64","isGradient","isPattern","extend","keys","logError","map","noop","retrieve2","patch","updateAttrs","getSize","svgId","SVGPainter","root","storage","opts","type","refreshHover","createMethodNotSupport","configLayer","_opts","_id","_oldVNode","width","height","ssr","viewport","_viewport","document","style","cssText","svgDom","_svgDom","elm","appendChild","resize","prototype","getType","getViewportRoot","getViewportRootOffset","viewportRoot","offsetLeft","offsetTop","getSvgDom","refresh","vnode","renderToVNode","willUpdate","attrs","renderOneToVNode","el","list","getDisplayList","_width","_height","scope","animation","compress","children","bgVNode","_bgVNode","createBackgroundVNode","_backgroundColor","push","mainVNode","_mainVNode","_paintList","defs","id","length","animationCssStr","cssNodes","cssAnims","newline","styleNode","useViewBox","renderToString","cssAnimation","setBackgroundColor","backgroundColor","getSvgRoot","out","listLen","clipPathsGroupsStack","clipPathsGroupsStackDepth","currentClipPathGroup","prevClipPaths","clipGroupNodeIdx","i","displayable","invisible","clipPaths","__clipPaths","len","prevLen","lca","Math","max","i_1","i_2","groupAttrs","g","ret","display","viewportStyle","setAttribute","bgEl","getWidth","getHeight","dispose","innerHTML","clear","toDataURL","base64","str","prefix","encodeURIComponent","method","process","env","NODE_ENV","x","y","fill","dirty","getBoundingRect","_a","color","opacity"],"mappings":"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","sourcesContent":["import { brush, setClipPath, setGradient, setPattern } from './graphic.js';\nimport { createElement, createVNode, vNodeToString, getCssString, createBrushScope, createSVGVNode } from './core.js';\nimport { normalizeColor, encodeBase64, isGradient, isPattern } from './helper.js';\nimport { extend, keys, logError, map, noop, retrieve2 } from '../core/util.js';\nimport patch, { updateAttrs } from './patch.js';\nimport { getSize } from '../canvas/helper.js';\nvar svgId = 0;\nvar SVGPainter = (function () {\n function SVGPainter(root, storage, opts) {\n this.type = 'svg';\n this.refreshHover = createMethodNotSupport('refreshHover');\n this.configLayer = createMethodNotSupport('configLayer');\n this.storage = storage;\n this._opts = opts = extend({}, opts);\n this.root = root;\n this._id = 'zr' + svgId++;\n this._oldVNode = createSVGVNode(opts.width, opts.height);\n if (root && !opts.ssr) {\n var viewport = this._viewport = document.createElement('div');\n viewport.style.cssText = 'position:relative;overflow:hidden';\n var svgDom = this._svgDom = this._oldVNode.elm = createElement('svg');\n updateAttrs(null, this._oldVNode);\n viewport.appendChild(svgDom);\n root.appendChild(viewport);\n }\n this.resize(opts.width, opts.height);\n }\n SVGPainter.prototype.getType = function () {\n return this.type;\n };\n SVGPainter.prototype.getViewportRoot = function () {\n return this._viewport;\n };\n SVGPainter.prototype.getViewportRootOffset = function () {\n var viewportRoot = this.getViewportRoot();\n if (viewportRoot) {\n return {\n offsetLeft: viewportRoot.offsetLeft || 0,\n offsetTop: viewportRoot.offsetTop || 0\n };\n }\n };\n SVGPainter.prototype.getSvgDom = function () {\n return this._svgDom;\n };\n SVGPainter.prototype.refresh = function () {\n if (this.root) {\n var vnode = this.renderToVNode({\n willUpdate: true\n });\n vnode.attrs.style = 'position:absolute;left:0;top:0;user-select:none';\n patch(this._oldVNode, vnode);\n this._oldVNode = vnode;\n }\n };\n SVGPainter.prototype.renderOneToVNode = function (el) {\n return brush(el, createBrushScope(this._id));\n };\n SVGPainter.prototype.renderToVNode = function (opts) {\n opts = opts || {};\n var list = this.storage.getDisplayList(true);\n var width = this._width;\n var height = this._height;\n var scope = createBrushScope(this._id);\n scope.animation = opts.animation;\n scope.willUpdate = opts.willUpdate;\n scope.compress = opts.compress;\n var children = [];\n var bgVNode = this._bgVNode = createBackgroundVNode(width, height, this._backgroundColor, scope);\n bgVNode && children.push(bgVNode);\n var mainVNode = !opts.compress\n ? (this._mainVNode = createVNode('g', 'main', {}, [])) : null;\n this._paintList(list, scope, mainVNode ? mainVNode.children : children);\n mainVNode && children.push(mainVNode);\n var defs = map(keys(scope.defs), function (id) { return scope.defs[id]; });\n if (defs.length) {\n children.push(createVNode('defs', 'defs', {}, defs));\n }\n if (opts.animation) {\n var animationCssStr = getCssString(scope.cssNodes, scope.cssAnims, { newline: true });\n if (animationCssStr) {\n var styleNode = createVNode('style', 'stl', {}, [], animationCssStr);\n children.push(styleNode);\n }\n }\n return createSVGVNode(width, height, children, opts.useViewBox);\n };\n SVGPainter.prototype.renderToString = function (opts) {\n opts = opts || {};\n return vNodeToString(this.renderToVNode({\n animation: retrieve2(opts.cssAnimation, true),\n willUpdate: false,\n compress: true,\n useViewBox: retrieve2(opts.useViewBox, true)\n }), { newline: true });\n };\n SVGPainter.prototype.setBackgroundColor = function (backgroundColor) {\n this._backgroundColor = backgroundColor;\n };\n SVGPainter.prototype.getSvgRoot = function () {\n return this._mainVNode && this._mainVNode.elm;\n };\n SVGPainter.prototype._paintList = function (list, scope, out) {\n var listLen = list.length;\n var clipPathsGroupsStack = [];\n var clipPathsGroupsStackDepth = 0;\n var currentClipPathGroup;\n var prevClipPaths;\n var clipGroupNodeIdx = 0;\n for (var i = 0; i < listLen; i++) {\n var displayable = list[i];\n if (!displayable.invisible) {\n var clipPaths = displayable.__clipPaths;\n var len = clipPaths && clipPaths.length || 0;\n var prevLen = prevClipPaths && prevClipPaths.length || 0;\n var lca = void 0;\n for (lca = Math.max(len - 1, prevLen - 1); lca >= 0; lca--) {\n if (clipPaths && prevClipPaths\n && clipPaths[lca] === prevClipPaths[lca]) {\n break;\n }\n }\n for (var i_1 = prevLen - 1; i_1 > lca; i_1--) {\n clipPathsGroupsStackDepth--;\n currentClipPathGroup = clipPathsGroupsStack[clipPathsGroupsStackDepth - 1];\n }\n for (var i_2 = lca + 1; i_2 < len; i_2++) {\n var groupAttrs = {};\n setClipPath(clipPaths[i_2], groupAttrs, scope);\n var g = createVNode('g', 'clip-g-' + clipGroupNodeIdx++, groupAttrs, []);\n (currentClipPathGroup ? currentClipPathGroup.children : out).push(g);\n clipPathsGroupsStack[clipPathsGroupsStackDepth++] = g;\n currentClipPathGroup = g;\n }\n prevClipPaths = clipPaths;\n var ret = brush(displayable, scope);\n if (ret) {\n (currentClipPathGroup ? currentClipPathGroup.children : out).push(ret);\n }\n }\n }\n };\n SVGPainter.prototype.resize = function (width, height) {\n var opts = this._opts;\n var root = this.root;\n var viewport = this._viewport;\n width != null && (opts.width = width);\n height != null && (opts.height = height);\n if (root && viewport) {\n viewport.style.display = 'none';\n width = getSize(root, 0, opts);\n height = getSize(root, 1, opts);\n viewport.style.display = '';\n }\n if (this._width !== width || this._height !== height) {\n this._width = width;\n this._height = height;\n if (viewport) {\n var viewportStyle = viewport.style;\n viewportStyle.width = width + 'px';\n viewportStyle.height = height + 'px';\n }\n if (!isPattern(this._backgroundColor)) {\n var svgDom = this._svgDom;\n if (svgDom) {\n svgDom.setAttribute('width', width);\n svgDom.setAttribute('height', height);\n }\n var bgEl = this._bgVNode && this._bgVNode.elm;\n if (bgEl) {\n bgEl.setAttribute('width', width);\n bgEl.setAttribute('height', height);\n }\n }\n else {\n this.refresh();\n }\n }\n };\n SVGPainter.prototype.getWidth = function () {\n return this._width;\n };\n SVGPainter.prototype.getHeight = function () {\n return this._height;\n };\n SVGPainter.prototype.dispose = function () {\n if (this.root) {\n this.root.innerHTML = '';\n }\n this._svgDom =\n this._viewport =\n this.storage =\n this._oldVNode =\n this._bgVNode =\n this._mainVNode = null;\n };\n SVGPainter.prototype.clear = function () {\n if (this._svgDom) {\n this._svgDom.innerHTML = null;\n }\n this._oldVNode = null;\n };\n SVGPainter.prototype.toDataURL = function (base64) {\n var str = this.renderToString();\n var prefix = 'data:image/svg+xml;';\n if (base64) {\n str = encodeBase64(str);\n return str && prefix + 'base64,' + str;\n }\n return prefix + 'charset=UTF-8,' + encodeURIComponent(str);\n };\n return SVGPainter;\n}());\nfunction createMethodNotSupport(method) {\n return function () {\n if (process.env.NODE_ENV !== 'production') {\n logError('In SVG mode painter not support method \"' + method + '\"');\n }\n };\n}\nfunction createBackgroundVNode(width, height, backgroundColor, scope) {\n var bgVNode;\n if (backgroundColor && backgroundColor !== 'none') {\n bgVNode = createVNode('rect', 'bg', {\n width: width,\n height: height,\n x: '0',\n y: '0',\n id: '0'\n });\n if (isGradient(backgroundColor)) {\n setGradient({ fill: backgroundColor }, bgVNode.attrs, 'fill', scope);\n }\n else if (isPattern(backgroundColor)) {\n setPattern({\n style: {\n fill: backgroundColor\n },\n dirty: noop,\n getBoundingRect: function () { return ({ width: width, height: height }); }\n }, bgVNode.attrs, 'fill', scope);\n }\n else {\n var _a = normalizeColor(backgroundColor), color = _a.color, opacity = _a.opacity;\n bgVNode.attrs.fill = color;\n opacity < 1 && (bgVNode.attrs['fill-opacity'] = opacity);\n }\n }\n return bgVNode;\n}\nexport default SVGPainter;\n"]},"metadata":{},"sourceType":"module"} |