handle.js 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.Handle = exports.DEFAULT_HANDLE_CFG = void 0;
  4. var tslib_1 = require("tslib");
  5. var core_1 = require("../../../core");
  6. var util_1 = require("../../../util");
  7. var marker_1 = require("../../marker");
  8. var utils_1 = require("../utils");
  9. var CLASS_NAMES = (0, util_1.classNames)({
  10. markerGroup: 'marker-group',
  11. marker: 'marker',
  12. labelGroup: 'label-group',
  13. label: 'label',
  14. }, 'handle');
  15. // todo @xiaoiver, 配置 TEXT_INHERITABLE_PROPS 后文本包围盒依旧不准确
  16. exports.DEFAULT_HANDLE_CFG = {
  17. showLabel: true,
  18. formatter: function (val) { return val.toString(); },
  19. markerSize: 25,
  20. markerStroke: '#c5c5c5',
  21. markerFill: '#fff',
  22. markerLineWidth: 1,
  23. labelFontSize: 12,
  24. labelFill: '#c5c5c5',
  25. labelText: '',
  26. orientation: 'vertical',
  27. spacing: 0,
  28. };
  29. var Handle = /** @class */ (function (_super) {
  30. tslib_1.__extends(Handle, _super);
  31. function Handle(options) {
  32. return _super.call(this, options, exports.DEFAULT_HANDLE_CFG) || this;
  33. }
  34. Handle.prototype.render = function (attributes, container) {
  35. var markerGroup = (0, util_1.select)(container).maybeAppendByClassName(CLASS_NAMES.markerGroup, 'g');
  36. this.renderMarker(markerGroup);
  37. var labelGroup = (0, util_1.select)(container).maybeAppendByClassName(CLASS_NAMES.labelGroup, 'g');
  38. this.renderLabel(labelGroup);
  39. };
  40. Handle.prototype.renderMarker = function (container) {
  41. var _this = this;
  42. var _a = this.attributes, orientation = _a.orientation, _b = _a.markerSymbol, markerSymbol = _b === void 0 ? (0, utils_1.ifHorizontal)(orientation, 'horizontalHandle', 'verticalHandle') : _b;
  43. (0, util_1.ifShow)(!!markerSymbol, container, function (group) {
  44. var handleStyle = (0, util_1.subStyleProps)(_this.attributes, 'marker');
  45. var markerStyle = tslib_1.__assign({ symbol: markerSymbol }, handleStyle);
  46. _this.marker = group
  47. .maybeAppendByClassName(CLASS_NAMES.marker, function () { return new marker_1.Marker({ style: markerStyle }); })
  48. .update(markerStyle);
  49. });
  50. };
  51. Handle.prototype.renderLabel = function (container) {
  52. var _this = this;
  53. var _a = this.attributes, showLabel = _a.showLabel, orientation = _a.orientation, _b = _a.spacing, spacing = _b === void 0 ? 0 : _b, formatter = _a.formatter;
  54. (0, util_1.ifShow)(showLabel, container, function (group) {
  55. var _a;
  56. var _b = (0, util_1.subStyleProps)(_this.attributes, 'label'), text = _b.text, labelStyle = tslib_1.__rest(_b, ["text"]);
  57. // adjust layout
  58. var _c = ((_a = group.select(CLASS_NAMES.marker.class)) === null || _a === void 0 ? void 0 : _a.node().getBBox()) || {}, _d = _c.width, width = _d === void 0 ? 0 : _d, _e = _c.height, height = _e === void 0 ? 0 : _e;
  59. var _f = tslib_1.__read((0, utils_1.ifHorizontal)(orientation, [0, height + spacing, 'center', 'top'], [width + spacing, 0, 'start', 'middle']), 4), x = _f[0], y = _f[1], textAlign = _f[2], textBaseline = _f[3];
  60. group
  61. .maybeAppendByClassName(CLASS_NAMES.label, 'text')
  62. .styles(tslib_1.__assign(tslib_1.__assign({}, labelStyle), { x: x, y: y, text: formatter(text).toString(), textAlign: textAlign, textBaseline: textBaseline }));
  63. });
  64. };
  65. return Handle;
  66. }(core_1.GUI));
  67. exports.Handle = Handle;
  68. //# sourceMappingURL=handle.js.map