1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- "use strict";
- /**
- * @fileoverview arrow
- * @author dengfuping_develop@163.com
- */
- Object.defineProperty(exports, "__esModule", { value: true });
- var util_1 = require("@antv/util");
- var dom_1 = require("../util/dom");
- var Arrow = /** @class */ (function () {
- function Arrow(attrs, type) {
- this.cfg = {};
- var el = dom_1.createSVGElement('marker');
- var id = util_1.uniqueId('marker_');
- el.setAttribute('id', id);
- var shape = dom_1.createSVGElement('path');
- shape.setAttribute('stroke', attrs.stroke || 'none');
- shape.setAttribute('fill', attrs.fill || 'none');
- el.appendChild(shape);
- el.setAttribute('overflow', 'visible');
- el.setAttribute('orient', 'auto-start-reverse');
- this.el = el;
- this.child = shape;
- this.id = id;
- var cfg = attrs[type === 'marker-start' ? 'startArrow' : 'endArrow'];
- this.stroke = attrs.stroke || '#000';
- if (cfg === true) {
- this._setDefaultPath(type, shape);
- }
- else {
- this.cfg = cfg; // when arrow config exists
- this._setMarker(attrs.lineWidth, shape);
- }
- return this;
- }
- Arrow.prototype.match = function () {
- return false;
- };
- Arrow.prototype._setDefaultPath = function (type, el) {
- var parent = this.el;
- // 默认箭头的边长为 10,夹角为 60 度
- el.setAttribute('d', "M0,0 L" + 10 * Math.cos(Math.PI / 6) + ",5 L0,10");
- parent.setAttribute('refX', "" + 10 * Math.cos(Math.PI / 6));
- parent.setAttribute('refY', "" + 5);
- };
- Arrow.prototype._setMarker = function (r, el) {
- var parent = this.el;
- var path = this.cfg.path;
- var d = this.cfg.d;
- if (util_1.isArray(path)) {
- path = path
- .map(function (segment) {
- return segment.join(' ');
- })
- .join('');
- }
- el.setAttribute('d', path);
- parent.appendChild(el);
- if (d) {
- parent.setAttribute('refX', "" + d / r);
- }
- };
- Arrow.prototype.update = function (fill) {
- var child = this.child;
- if (child.attr) {
- child.attr('fill', fill);
- }
- else {
- child.setAttribute('fill', fill);
- }
- };
- return Arrow;
- }());
- exports.default = Arrow;
- //# sourceMappingURL=arrow.js.map
|