You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
2.4 KiB
64 lines
2.4 KiB
import { __assign, __extends, __read } from "tslib";
|
|
import { Component } from '../../core';
|
|
import { select, subStyleProps } from '../../util';
|
|
import { Tag } from '../tag';
|
|
import { CROSSHAIR_BASE_DEFAULT_STYLE } from './constant';
|
|
var CrosshairBase = /** @class */ (function (_super) {
|
|
__extends(CrosshairBase, _super);
|
|
function CrosshairBase(options) {
|
|
// @ts-ignore
|
|
return _super.call(this, options, CROSSHAIR_BASE_DEFAULT_STYLE) || this;
|
|
}
|
|
Object.defineProperty(CrosshairBase.prototype, "localPointer", {
|
|
/**
|
|
* 获得 pointer 的相对坐标
|
|
*/
|
|
get: function () {
|
|
var _a = __read(this.getPosition(), 2), bx = _a[0], by = _a[1];
|
|
var _b = __read(this.pointer, 2), x = _b[0], y = _b[1];
|
|
return [x - bx, y - by];
|
|
},
|
|
enumerable: false,
|
|
configurable: true
|
|
});
|
|
Object.defineProperty(CrosshairBase.prototype, "tagStyle", {
|
|
get: function () {
|
|
var style = subStyleProps(this.attributes, 'tag');
|
|
return style;
|
|
},
|
|
enumerable: false,
|
|
configurable: true
|
|
});
|
|
Object.defineProperty(CrosshairBase.prototype, "crosshairStyle", {
|
|
get: function () {
|
|
var style = subStyleProps(this.attributes, 'line');
|
|
return __assign(__assign({}, style), { d: this.crosshairPath });
|
|
},
|
|
enumerable: false,
|
|
configurable: true
|
|
});
|
|
CrosshairBase.prototype.render = function (attributes, container) {
|
|
var group = select(container).maybeAppendByClassName('.crosshair-group', 'g').node();
|
|
this.shapesGroup = group;
|
|
var tagStyle = this.tagStyle;
|
|
var crosshairStyle = this.crosshairStyle;
|
|
this.tagShape = select(group)
|
|
.maybeAppendByClassName('crosshair-tag', function () { return new Tag({ style: tagStyle }); })
|
|
.styles(tagStyle)
|
|
.node();
|
|
this.crosshairShape = select(group).maybeAppendByClassName('.crosshair-path', 'path').styles(crosshairStyle).node();
|
|
this.adjustLayout();
|
|
};
|
|
/**
|
|
* 设置当前指针的位置
|
|
* 1. 线条类型 调整位置即可
|
|
* 2. circle 和 polygon 需要重新计算 path
|
|
*/
|
|
CrosshairBase.prototype.setPointer = function (pointer) {
|
|
this.pointer = pointer;
|
|
};
|
|
CrosshairBase.tag = 'crosshair-base';
|
|
return CrosshairBase;
|
|
}(Component));
|
|
export { CrosshairBase };
|
|
//# sourceMappingURL=base.js.map
|