/** * Created by Elaine on 2018/5/9. */ var Util = require('../../util/index'); var Gradient = require('./defs/gradient'); var Shadow = require('./defs/shadow'); var Arrow = require('./defs/arrow'); var Clip = require('./defs/clip'); var Pattern = require('./defs/pattern'); var Defs = /*#__PURE__*/function () { function Defs(canvas) { var el = document.createElementNS('http://www.w3.org/2000/svg', 'defs'); var id = Util.uniqueId('defs_'); el.id = id; canvas.appendChild(el); this.children = []; this.defaultArrow = {}; this.el = el; this.canvas = canvas; } var _proto = Defs.prototype; _proto.find = function find(type, attr) { var children = this.children; var result = null; for (var i = 0; i < children.length; i++) { if (children[i].match(type, attr)) { result = children[i].id; break; } } return result; }; _proto.findById = function findById(id) { var children = this.children; var flag = null; for (var i = 0; i < children.length; i++) { if (children[i].id === id) { flag = children[i]; break; } } return flag; }; _proto.add = function add(item) { this.children.push(item); item.canvas = this.canvas; item.parent = this; }; _proto.getDefaultArrow = function getDefaultArrow(attrs, name) { var stroke = attrs.stroke || attrs.strokeStyle; if (this.defaultArrow[stroke]) { return this.defaultArrow[stroke].id; } var arrow = new Arrow(attrs, name); this.defaultArrow[stroke] = arrow; this.el.appendChild(arrow.el); return arrow.id; }; _proto.addGradient = function addGradient(cfg) { var gradient = new Gradient(cfg); this.el.appendChild(gradient.el); this.add(gradient); return gradient.id; }; _proto.addArrow = function addArrow(attrs, name) { var arrow = new Arrow(attrs, name); this.el.appendChild(arrow.el); return arrow.id; }; _proto.addShadow = function addShadow(cfg) { var shadow = new Shadow(cfg); this.el.appendChild(shadow.el); this.add(shadow); return shadow.id; }; _proto.addPattern = function addPattern(cfg) { var pattern = new Pattern(cfg); this.el.appendChild(pattern.el); this.add(pattern); return pattern.id; }; _proto.addClip = function addClip(cfg) { var clip = new Clip(cfg); this.el.appendChild(clip.el); this.add(clip); return clip.id; }; return Defs; }(); module.exports = Defs;