container.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. "use strict";
  2. exports.__esModule = true;
  3. exports["default"] = void 0;
  4. var _common = require("../../util/common");
  5. var _shape = _interopRequireDefault(require("./shape"));
  6. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
  7. var SHAPE_MAP = {};
  8. var INDEX = '_INDEX';
  9. function getComparer(compare) {
  10. return function (left, right) {
  11. var result = compare(left, right);
  12. return result === 0 ? left[INDEX] - right[INDEX] : result;
  13. };
  14. }
  15. var _default = {
  16. getGroupClass: function getGroupClass() {},
  17. getChildren: function getChildren() {
  18. return this.get('children');
  19. },
  20. addShape: function addShape(type, cfg) {
  21. if (cfg === void 0) {
  22. cfg = {};
  23. }
  24. var shapeType = SHAPE_MAP[type];
  25. if (!shapeType) {
  26. shapeType = (0, _common.upperFirst)(type);
  27. SHAPE_MAP[type] = shapeType;
  28. }
  29. var shape = new _shape["default"][shapeType](cfg);
  30. this.add(shape);
  31. return shape;
  32. },
  33. addGroup: function addGroup(cfg) {
  34. var groupClass = this.getGroupClass();
  35. var rst = new groupClass(cfg);
  36. this.add(rst);
  37. return rst;
  38. },
  39. contain: function contain(item) {
  40. var children = this.get('children');
  41. return children.indexOf(item) > -1;
  42. },
  43. sort: function sort() {
  44. var children = this.get('children');
  45. for (var i = 0, len = children.length; i < len; i++) {
  46. var child = children[i];
  47. child[INDEX] = i;
  48. }
  49. children.sort(getComparer(function (obj1, obj2) {
  50. return obj1.get('zIndex') - obj2.get('zIndex');
  51. }));
  52. return this;
  53. },
  54. drawChildren: function drawChildren(context) {
  55. var children = this.get('children');
  56. for (var i = 0, len = children.length; i < len; i++) {
  57. var child = children[i];
  58. child.draw(context);
  59. }
  60. return this;
  61. },
  62. clear: function clear() {
  63. var children = this.get('children');
  64. while (children.length !== 0) {
  65. children[children.length - 1].remove(true);
  66. }
  67. return this;
  68. },
  69. add: function add(items) {
  70. var self = this;
  71. var children = self.get('children');
  72. if (!(0, _common.isArray)(items)) {
  73. items = [items];
  74. }
  75. for (var i = 0, len = items.length; i < len; i++) {
  76. var item = items[i];
  77. var parent = item.get('parent');
  78. if (parent) {
  79. var descendants = parent.get('children');
  80. _common.Array.remove(descendants, item);
  81. }
  82. self._setEvn(item);
  83. children.push(item);
  84. }
  85. return self;
  86. },
  87. _setEvn: function _setEvn(item) {
  88. var self = this;
  89. var _self$_attrs = self._attrs,
  90. context = _self$_attrs.context,
  91. canvas = _self$_attrs.canvas,
  92. aria = _self$_attrs.aria;
  93. var _item$_attrs = item._attrs,
  94. isGroup = _item$_attrs.isGroup,
  95. type = _item$_attrs.type;
  96. item._attrs.parent = self;
  97. item._attrs.context = context;
  98. item._attrs.canvas = canvas; // 是否需要无障碍处理
  99. if (aria && item._attrs.aria !== false) {
  100. item._attrs.aria = aria;
  101. }
  102. if (type === 'text' && canvas && canvas.get('fontFamily')) {
  103. item._attrs.attrs.fontFamily = item._attrs.attrs.fontFamily || canvas.get('fontFamily');
  104. }
  105. var clip = item._attrs.attrs.clip;
  106. if (clip) {
  107. clip._attrs.parent = self;
  108. clip._attrs.context = context;
  109. clip._attrs.canvas = canvas;
  110. }
  111. if (isGroup) {
  112. var children = item._attrs.children;
  113. for (var i = 0, len = children.length; i < len; i++) {
  114. item._setEvn(children[i]);
  115. }
  116. }
  117. },
  118. _getAriaLabel: function _getAriaLabel() {
  119. var _this$_attrs = this._attrs,
  120. aria = _this$_attrs.aria,
  121. ariaLabel = _this$_attrs.ariaLabel,
  122. children = _this$_attrs.children; // 主动关闭
  123. if (!aria) return;
  124. var childAriaLabels = [];
  125. if (children && children.length) {
  126. for (var i = 0, len = children.length; i < len; i++) {
  127. var _childAriaLabel = children[i].getAriaLabel();
  128. if (_childAriaLabel) {
  129. childAriaLabels.push(_childAriaLabel);
  130. }
  131. }
  132. }
  133. var childAriaLabel = childAriaLabels.join(' '); // 2个都有时拼接成完整句子
  134. if (ariaLabel && childAriaLabel) {
  135. return ariaLabel + " " + childAriaLabel + " ";
  136. } // 只有1个,或者都没有
  137. return ariaLabel || childAriaLabel;
  138. }
  139. };
  140. exports["default"] = _default;