- Go backend (server/)
- Frontend (web/, server/static/)
- Database and deployment files
- Scripts and docs
Co-Authored-By: 狸花猫/Claude-Qwen3.6-Plus 🐾
88 lines
3.2 KiB
JavaScript
88 lines
3.2 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var tslib_1 = require("tslib");
|
|
var util_1 = require("@antv/util");
|
|
var constant_1 = require("../constant");
|
|
var base_1 = require("./base");
|
|
var Path = /** @class */ (function (_super) {
|
|
tslib_1.__extends(Path, _super);
|
|
function Path() {
|
|
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
_this.type = 'path';
|
|
_this.canFill = true;
|
|
_this.canStroke = true;
|
|
return _this;
|
|
}
|
|
Path.prototype.getDefaultAttrs = function () {
|
|
var attrs = _super.prototype.getDefaultAttrs.call(this);
|
|
return tslib_1.__assign(tslib_1.__assign({}, attrs), { startArrow: false, endArrow: false });
|
|
};
|
|
Path.prototype.createPath = function (context, targetAttrs) {
|
|
var _this = this;
|
|
var attrs = this.attr();
|
|
var el = this.get('el');
|
|
util_1.each(targetAttrs || attrs, function (value, attr) {
|
|
if (attr === 'path' && util_1.isArray(value)) {
|
|
el.setAttribute('d', _this._formatPath(value));
|
|
}
|
|
else if (attr === 'startArrow' || attr === 'endArrow') {
|
|
if (value) {
|
|
var id = util_1.isObject(value)
|
|
? context.addArrow(attrs, constant_1.SVG_ATTR_MAP[attr])
|
|
: context.getDefaultArrow(attrs, constant_1.SVG_ATTR_MAP[attr]);
|
|
el.setAttribute(constant_1.SVG_ATTR_MAP[attr], "url(#" + id + ")");
|
|
}
|
|
else {
|
|
el.removeAttribute(constant_1.SVG_ATTR_MAP[attr]);
|
|
}
|
|
}
|
|
else if (constant_1.SVG_ATTR_MAP[attr]) {
|
|
el.setAttribute(constant_1.SVG_ATTR_MAP[attr], value);
|
|
}
|
|
});
|
|
};
|
|
Path.prototype._formatPath = function (value) {
|
|
var newValue = value
|
|
.map(function (path) {
|
|
return path.join(' ');
|
|
})
|
|
.join('');
|
|
if (~newValue.indexOf('NaN')) {
|
|
return '';
|
|
}
|
|
return newValue;
|
|
};
|
|
/**
|
|
* Get total length of path
|
|
* 尽管通过浏览器的 SVGPathElement.getTotalLength() 接口获取的 path 长度,
|
|
* 与 Canvas 版本通过数学计算的方式得到的长度有一些细微差异,但最大误差在个位数像素,精度上可以能接受
|
|
* @return {number} length
|
|
*/
|
|
Path.prototype.getTotalLength = function () {
|
|
var el = this.get('el');
|
|
return el ? el.getTotalLength() : null;
|
|
};
|
|
/**
|
|
* Get point according to ratio
|
|
* @param {number} ratio
|
|
* @return {Point} point
|
|
*/
|
|
Path.prototype.getPoint = function (ratio) {
|
|
var el = this.get('el');
|
|
var totalLength = this.getTotalLength();
|
|
// @see https://github.com/antvis/g/issues/634
|
|
if (totalLength === 0) {
|
|
return null;
|
|
}
|
|
var point = el ? el.getPointAtLength(ratio * totalLength) : null;
|
|
return point
|
|
? {
|
|
x: point.x,
|
|
y: point.y,
|
|
}
|
|
: null;
|
|
};
|
|
return Path;
|
|
}(base_1.default));
|
|
exports.default = Path;
|
|
//# sourceMappingURL=path.js.map
|