{"version":3,"sources":["jsdelivr-header.js","/npm/three.js-svg-renderer@3.1.6/index.js"],"names":[],"mappings":"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","file":"/npm/three.js-svg-renderer@3.1.6/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/three.js-svg-renderer@3.1.6/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = SVGRenderer;\n\nvar _three = require('three');\n\nvar _three2 = _interopRequireDefault(_three);\n\nvar _three3 = require('three.js-projector');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction SVGRenderer(d3, svg) {\n\n    var _this = this,\n        _renderData,\n        _elements,\n        _lights,\n        _projector = new _three3.Projector(),\n        _d3 = d3,\n        _svgWidth,\n        _svgHeight,\n        _svgWidthHalf,\n        _svgHeightHalf,\n        _v1,\n        _v2,\n        _v3,\n        _v4,\n        _clipBox = new _three2.default.Box2(),\n        _elemBox = new _three2.default.Box2(),\n        _color = new _three2.default.Color(),\n        _diffuseColor = new _three2.default.Color(),\n        _ambientLight = new _three2.default.Color(),\n        _directionalLights = new _three2.default.Color(),\n        _pointLights = new _three2.default.Color(),\n        _clearColor = new _three2.default.Color(),\n        _clearAlpha = 1,\n        _w,\n        // z-buffer to w-buffer\n    _vector3 = new _three2.default.Vector3(),\n        // Needed for PointLight\n    _centroid = new _three2.default.Vector3(),\n        _normal = new _three2.default.Vector3(),\n        _normalViewMatrix = new _three2.default.Matrix3(),\n        _viewMatrix = new _three2.default.Matrix4(),\n        _viewProjectionMatrix = new _three2.default.Matrix4(),\n        _svgPathPool = [],\n        _svgLinePool = [],\n        _svgRectPool = [],\n        _svgNode,\n        _pathCount = 0,\n        _lineCount = 0,\n        _rectCount = 0,\n        _quality = 1;\n\n    if (!svg.select) return;\n\n    // c3.main\n    svg.select('g').attr('style', 'opacity:0;');\n    var tr = svg.select('g').attr('transform');\n    _this._svg = svg.append('g').classed('c3-three-chart', true).attr('transform', tr).node();\n\n    this.autoClear = true;\n    this.sortObjects = true;\n    this.sortElements = true;\n\n    this.info = {\n\n        render: {\n\n            vertices: 0,\n            faces: 0\n\n        }\n\n    };\n\n    this.setQuality = function (quality) {\n\n        switch (quality) {\n\n            case \"high\":\n                _quality = 1;break;\n            case \"low\":\n                _quality = 0;break;\n\n        }\n    };\n\n    // WebGLRenderer compatibility\n\n    this.supportsVertexTextures = function () {};\n    this.setFaceCulling = function () {};\n\n    this.setClearColor = function (color, alpha) {\n\n        _clearColor.set(color);\n        _clearAlpha = alpha !== undefined ? alpha : 1;\n    };\n\n    this.setSize = function (width, height) {\n\n        _svgWidth = width;_svgHeight = height;\n        _svgWidthHalf = _svgWidth / 2;_svgHeightHalf = _svgHeight / 2;\n\n        var tr = _this._svg.getAttribute('transform');\n        _this._svg.setAttribute('transform', tr + ' ' + getTr(_svgWidthHalf - 50, _svgHeightHalf));\n\n        _clipBox.min.set(-_svgWidthHalf, -_svgHeightHalf);\n        _clipBox.max.set(_svgWidthHalf, _svgHeightHalf);\n    };\n\n    this.clear = function () {\n\n        _pathCount = 0;\n        _lineCount = 0;\n        _rectCount = 0;\n\n        while (_this._svg && _this._svg.childNodes.length > 0) {\n\n            _this._svg.removeChild(_svg.childNodes[0]);\n        }\n    };\n\n    this.render = function (scene, camera) {\n\n        if (camera instanceof _three2.default.Camera === false) {\n\n            logger.error('THREE.SVGRenderer.render: camera is not an instance of THREE.Camera.');\n            return;\n        }\n\n        if (this.autoClear === true) this.clear();\n\n        _this.info.render.vertices = 0;\n        _this.info.render.faces = 0;\n\n        _viewMatrix.copy(camera.matrixWorldInverse.getInverse(camera.matrixWorld));\n        _viewProjectionMatrix.multiplyMatrices(camera.projectionMatrix, _viewMatrix);\n\n        _renderData = _projector.projectScene(scene, camera, this.sortObjects, this.sortElements);\n        _elements = _renderData.elements;\n        _lights = _renderData.lights;\n\n        _normalViewMatrix.getNormalMatrix(camera.matrixWorldInverse);\n\n        calculateLights(_lights);\n\n        for (var e = 0, el = _elements.length; e < el; e++) {\n\n            var element = _elements[e];\n            var material = element.material;\n\n            if (material === undefined || material.opacity === 0) continue;\n\n            _elemBox.makeEmpty();\n\n            if (element instanceof _three2.default.RenderableSprite) {\n\n                _v1 = element;\n                _v1.x *= _svgWidthHalf;_v1.y *= -_svgHeightHalf;\n\n                renderSprite(_v1, element, material);\n            } else if (element instanceof _three2.default.RenderableLine) {\n\n                _v1 = element.v1;_v2 = element.v2;\n\n                _v1.positionScreen.x *= _svgWidthHalf;_v1.positionScreen.y *= -_svgHeightHalf;\n                _v2.positionScreen.x *= _svgWidthHalf;_v2.positionScreen.y *= -_svgHeightHalf;\n\n                _elemBox.setFromPoints([_v1.positionScreen, _v2.positionScreen]);\n\n                if (_clipBox.intersectsBox(_elemBox) === true) {\n\n                    renderLine(_v1, _v2, element, material);\n                }\n            } else if (element instanceof _three2.default.RenderableFace) {\n\n                _v1 = element.v1;_v2 = element.v2;_v3 = element.v3;\n\n                if (_v1.positionScreen.z < -1 || _v1.positionScreen.z > 1) continue;\n                if (_v2.positionScreen.z < -1 || _v2.positionScreen.z > 1) continue;\n                if (_v3.positionScreen.z < -1 || _v3.positionScreen.z > 1) continue;\n\n                _v1.positionScreen.x *= _svgWidthHalf;_v1.positionScreen.y *= -_svgHeightHalf;\n                _v2.positionScreen.x *= _svgWidthHalf;_v2.positionScreen.y *= -_svgHeightHalf;\n                _v3.positionScreen.x *= _svgWidthHalf;_v3.positionScreen.y *= -_svgHeightHalf;\n\n                _elemBox.setFromPoints([_v1.positionScreen, _v2.positionScreen, _v3.positionScreen]);\n\n                if (_clipBox.intersectsBox(_elemBox) === true) {\n\n                    renderFace3(_v1, _v2, _v3, element, material);\n                }\n            }\n        }\n\n        scene.traverseVisible(function (object) {\n\n            if (object instanceof _three2.default.SVGObject) {\n\n                _vector3.setFromMatrixPosition(object.matrixWorld);\n                _vector3.applyProjection(_viewProjectionMatrix);\n\n                var x = _vector3.x * _svgWidthHalf;\n                var y = -_vector3.y * _svgHeightHalf;\n\n                var node = object.node;\n                node.setAttribute('transform', 'translate(' + x + ',' + y + ')');\n\n                _this._svg.appendChild(node);\n            }\n        });\n    };\n\n    function getTr(x, y) {\n        return 'translate(' + x + ',' + y + ')';\n    }\n\n    function calculateLights(lights) {\n\n        _ambientLight.setRGB(0, 0, 0);\n        _directionalLights.setRGB(0, 0, 0);\n        _pointLights.setRGB(0, 0, 0);\n\n        for (var l = 0, ll = lights.length; l < ll; l++) {\n\n            var light = lights[l];\n            var lightColor = light.color;\n\n            if (light instanceof _three2.default.AmbientLight) {\n\n                _ambientLight.r += lightColor.r;\n                _ambientLight.g += lightColor.g;\n                _ambientLight.b += lightColor.b;\n            } else if (light instanceof _three2.default.DirectionalLight) {\n\n                _directionalLights.r += lightColor.r;\n                _directionalLights.g += lightColor.g;\n                _directionalLights.b += lightColor.b;\n            } else if (light instanceof _three2.default.PointLight) {\n\n                _pointLights.r += lightColor.r;\n                _pointLights.g += lightColor.g;\n                _pointLights.b += lightColor.b;\n            }\n        }\n    }\n\n    function calculateLight(lights, position, normal, color) {\n\n        for (var l = 0, ll = lights.length; l < ll; l++) {\n\n            var light = lights[l];\n            var lightColor = light.color;\n\n            if (light instanceof _three2.default.DirectionalLight) {\n\n                var lightPosition = _vector3.setFromMatrixPosition(light.matrixWorld).normalize();\n\n                var amount = normal.dot(lightPosition);\n\n                if (amount <= 0) continue;\n\n                amount *= light.intensity;\n\n                color.r += lightColor.r * amount;\n                color.g += lightColor.g * amount;\n                color.b += lightColor.b * amount;\n            } else if (light instanceof _three2.default.PointLight) {\n\n                var lightPosition = _vector3.setFromMatrixPosition(light.matrixWorld);\n\n                var amount = normal.dot(_vector3.subVectors(lightPosition, position).normalize());\n\n                if (amount <= 0) continue;\n\n                amount *= light.distance === 0 ? 1 : 1 - Math.min(position.distanceTo(lightPosition) / light.distance, 1);\n\n                if (amount === 0) continue;\n\n                amount *= light.intensity;\n\n                color.r += lightColor.r * amount;\n                color.g += lightColor.g * amount;\n                color.b += lightColor.b * amount;\n            }\n        }\n    }\n\n    function renderSprite(v1, element, material) {\n\n        var scaleX = element.scale.x * _svgWidthHalf;\n        var scaleY = element.scale.y * _svgHeightHalf;\n\n        _svgNode = getRectNode(_rectCount++);\n\n        _svgNode.setAttribute('x', v1.x - scaleX * 0.5);\n        _svgNode.setAttribute('y', v1.y - scaleY * 0.5);\n        _svgNode.setAttribute('width', scaleX);\n        _svgNode.setAttribute('height', scaleY);\n\n        if (material instanceof _three2.default.SpriteMaterial) {\n\n            _svgNode.setAttribute('style', 'fill: ' + material.color.getStyle());\n        }\n\n        _this._svg.appendChild(_svgNode);\n    }\n\n    function renderLine(v1, v2, element, material) {\n\n        _svgNode = getLineNode(_lineCount++);\n\n        _svgNode.setAttribute('x1', v1.positionScreen.x);\n        _svgNode.setAttribute('y1', v1.positionScreen.y);\n        _svgNode.setAttribute('x2', v2.positionScreen.x);\n        _svgNode.setAttribute('y2', v2.positionScreen.y);\n\n        if (material instanceof _three2.default.LineBasicMaterial) {\n\n            _svgNode.setAttribute('style', 'fill: none; stroke: ' + material.color.getStyle() + '; stroke-width: ' + material.linewidth + '; stroke-opacity: ' + material.opacity + '; stroke-linecap: ' + material.linecap + '; stroke-linejoin: ' + material.linejoin);\n\n            _this._svg.appendChild(_svgNode);\n        }\n    }\n\n    function renderFace3(v1, v2, v3, element, material) {\n\n        _this.info.render.vertices += 3;\n        _this.info.render.faces++;\n\n        _svgNode = getPathNode(_pathCount++);\n        _svgNode.setAttribute('d', 'M ' + v1.positionScreen.x + ' ' + v1.positionScreen.y + ' L ' + v2.positionScreen.x + ' ' + v2.positionScreen.y + ' L ' + v3.positionScreen.x + ',' + v3.positionScreen.y + 'z');\n\n        if (material instanceof _three2.default.MeshBasicMaterial) {\n\n            _color.copy(material.color);\n\n            if (material.vertexColors === _three2.default.FaceColors) {\n\n                _color.multiply(element.color);\n            }\n        } else if (material instanceof _three2.default.MeshLambertMaterial || material instanceof _three2.default.MeshPhongMaterial) {\n\n            _diffuseColor.copy(material.color);\n\n            if (material.vertexColors === _three2.default.FaceColors) {\n\n                _diffuseColor.multiply(element.color);\n            }\n\n            _color.copy(_ambientLight);\n\n            _centroid.copy(v1.positionWorld).add(v2.positionWorld).add(v3.positionWorld).divideScalar(3);\n\n            calculateLight(_lights, _centroid, element.normalModel, _color);\n\n            _color.multiply(_diffuseColor).add(material.emissive);\n        } else if (material instanceof _three2.default.MeshDepthMaterial) {\n\n            _w = 1 - material.__2near / (material.__farPlusNear - element.z * material.__farMinusNear);\n            _color.setRGB(_w, _w, _w);\n        } else if (material instanceof _three2.default.MeshNormalMaterial) {\n\n            _normal.copy(element.normalModel).applyMatrix3(_normalViewMatrix);\n\n            _color.setRGB(_normal.x, _normal.y, _normal.z).multiplyScalar(0.5).addScalar(0.5);\n        }\n\n        if (material.wireframe) {\n\n            _svgNode.setAttribute('style', 'fill: none; stroke: ' + _color.getStyle() + '; stroke-width: ' + material.wireframeLinewidth + '; stroke-opacity: ' + material.opacity + '; stroke-linecap: ' + material.wireframeLinecap + '; stroke-linejoin: ' + material.wireframeLinejoin);\n        } else {\n\n            _svgNode.setAttribute('style', 'fill: ' + _color.getStyle() + '; stroke:none; fill-opacity: ' + material.opacity);\n        }\n\n        _this._svg.appendChild(_svgNode);\n    }\n\n    function getLineNode(id) {\n\n        if (!_svgLinePool[id]) {\n\n            _svgLinePool[id] = document.createElementNS('http://www.w3.org/2000/svg', 'line');\n\n            if (_quality === 0) {\n\n                _svgLinePool[id].setAttribute('shape-rendering', 'crispEdges'); //optimizeSpeed\n            }\n\n            return _svgLinePool[id];\n        }\n\n        return _svgLinePool[id];\n    }\n\n    function getPathNode(id) {\n\n        if (!_svgPathPool[id]) {\n\n            _svgPathPool[id] = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n\n            if (_quality === 0) {\n\n                _svgPathPool[id].setAttribute('shape-rendering', 'crispEdges'); //optimizeSpeed\n            }\n\n            return _svgPathPool[id];\n        }\n\n        return _svgPathPool[id];\n    }\n\n    function getRectNode(id) {\n\n        if (!_svgRectPool[id]) {\n\n            _svgRectPool[id] = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n\n            if (_quality === 0) {\n\n                _svgRectPool[id].setAttribute('shape-rendering', 'crispEdges'); //optimizeSpeed\n            }\n\n            return _svgRectPool[id];\n        }\n\n        return _svgRectPool[id];\n    }\n}\n"]}