@visactor/vchart 1.8.8 → 1.8.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.js +578 -400
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/animation/config.js +1 -1
  6. package/cjs/animation/config.js.map +1 -1
  7. package/cjs/chart/stack.js +2 -1
  8. package/cjs/compile/grammar-item.js +1 -2
  9. package/cjs/compile/interface/compiler.d.ts +2 -0
  10. package/cjs/compile/interface/compiler.js.map +1 -1
  11. package/cjs/component/axis/cartesian/axis.js +4 -4
  12. package/cjs/component/axis/cartesian/axis.js.map +1 -1
  13. package/cjs/component/axis/polar/axis.js +2 -2
  14. package/cjs/component/axis/polar/axis.js.map +1 -1
  15. package/cjs/component/brush/brush.js +3 -3
  16. package/cjs/component/brush/brush.js.map +1 -1
  17. package/cjs/component/crosshair/base.js +5 -4
  18. package/cjs/component/crosshair/base.js.map +1 -1
  19. package/cjs/component/data-zoom/data-filter-base-component.js +1 -1
  20. package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
  21. package/cjs/component/geo/geo-coordinate.js +1 -1
  22. package/cjs/component/geo/geo-coordinate.js.map +1 -1
  23. package/cjs/component/indicator/indicator.js +2 -2
  24. package/cjs/component/indicator/indicator.js.map +1 -1
  25. package/cjs/component/label/label.js +3 -3
  26. package/cjs/component/label/label.js.map +1 -1
  27. package/cjs/component/label/total-label.js +3 -3
  28. package/cjs/component/label/total-label.js.map +1 -1
  29. package/cjs/component/legend/base-legend.d.ts +1 -1
  30. package/cjs/component/legend/util.d.ts +1 -1
  31. package/cjs/component/map-label/component.js +1 -1
  32. package/cjs/component/map-label/component.js.map +1 -1
  33. package/cjs/component/marker/mark-line/mark-line.js +3 -3
  34. package/cjs/component/marker/mark-line/mark-line.js.map +1 -1
  35. package/cjs/component/marker/utils.js +6 -6
  36. package/cjs/component/marker/utils.js.map +1 -1
  37. package/cjs/component/tooltip/utils/show-tooltip.js +1 -1
  38. package/cjs/component/tooltip/utils/show-tooltip.js.map +1 -1
  39. package/cjs/core/index.d.ts +1 -1
  40. package/cjs/core/index.js +1 -1
  41. package/cjs/core/index.js.map +1 -1
  42. package/cjs/core/vchart.js +1 -1
  43. package/cjs/core/vchart.js.map +1 -1
  44. package/cjs/layout/base-layout.js +8 -6
  45. package/cjs/layout/base-layout.js.map +1 -1
  46. package/cjs/layout/interface.d.ts +3 -3
  47. package/cjs/layout/interface.js.map +1 -1
  48. package/cjs/layout/layout-item.d.ts +3 -6
  49. package/cjs/layout/layout-item.js +6 -25
  50. package/cjs/layout/layout-item.js.map +1 -1
  51. package/cjs/layout/layout3d/index.js.map +1 -1
  52. package/cjs/layout/util.js +90 -118
  53. package/cjs/layout/util.js.map +1 -1
  54. package/cjs/model/interface.d.ts +0 -2
  55. package/cjs/model/interface.js.map +1 -1
  56. package/cjs/model/layout-model.d.ts +0 -8
  57. package/cjs/model/layout-model.js +0 -15
  58. package/cjs/model/layout-model.js.map +1 -1
  59. package/cjs/series/bar/bar.js +1 -1
  60. package/cjs/series/bar/bar.js.map +1 -1
  61. package/cjs/series/base/base-series.js +4 -7
  62. package/cjs/series/base/base-series.js.map +1 -1
  63. package/cjs/series/correlation/correlation.js +1 -1
  64. package/cjs/series/correlation/correlation.js.map +1 -1
  65. package/cjs/series/mixin/line-mixin.js +1 -1
  66. package/cjs/series/mixin/line-mixin.js.map +1 -1
  67. package/cjs/series/pie/3d/pie-3d.js +1 -1
  68. package/cjs/series/pie/3d/pie-3d.js.map +1 -1
  69. package/cjs/series/pie/pie.js +7 -7
  70. package/cjs/series/pie/pie.js.map +1 -1
  71. package/cjs/series/polar/polar.js +1 -1
  72. package/cjs/series/polar/polar.js.map +1 -1
  73. package/cjs/series/radar/animation.js +1 -1
  74. package/cjs/series/radar/animation.js.map +1 -1
  75. package/cjs/series/sankey/sankey.js +1 -1
  76. package/cjs/series/sankey/sankey.js.map +1 -1
  77. package/cjs/series/sunburst/sunburst.js +2 -2
  78. package/cjs/series/sunburst/sunburst.js.map +1 -1
  79. package/cjs/series/word-cloud/base.js +3 -3
  80. package/cjs/series/word-cloud/base.js.map +1 -1
  81. package/cjs/typings/layout.d.ts +1 -0
  82. package/cjs/typings/layout.js.map +1 -1
  83. package/esm/animation/config.js +1 -1
  84. package/esm/animation/config.js.map +1 -1
  85. package/esm/chart/stack.js +2 -1
  86. package/esm/compile/grammar-item.js +1 -2
  87. package/esm/compile/interface/compiler.d.ts +2 -0
  88. package/esm/compile/interface/compiler.js.map +1 -1
  89. package/esm/component/axis/cartesian/axis.js +3 -3
  90. package/esm/component/axis/cartesian/axis.js.map +1 -1
  91. package/esm/component/axis/polar/axis.js +2 -2
  92. package/esm/component/axis/polar/axis.js.map +1 -1
  93. package/esm/component/brush/brush.js +3 -3
  94. package/esm/component/brush/brush.js.map +1 -1
  95. package/esm/component/crosshair/base.js +5 -4
  96. package/esm/component/crosshair/base.js.map +1 -1
  97. package/esm/component/data-zoom/data-filter-base-component.js +1 -1
  98. package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
  99. package/esm/component/geo/geo-coordinate.js +1 -1
  100. package/esm/component/geo/geo-coordinate.js.map +1 -1
  101. package/esm/component/indicator/indicator.js +2 -2
  102. package/esm/component/indicator/indicator.js.map +1 -1
  103. package/esm/component/label/label.js +3 -3
  104. package/esm/component/label/label.js.map +1 -1
  105. package/esm/component/label/total-label.js +3 -3
  106. package/esm/component/label/total-label.js.map +1 -1
  107. package/esm/component/legend/base-legend.d.ts +1 -1
  108. package/esm/component/legend/util.d.ts +1 -1
  109. package/esm/component/map-label/component.js +1 -1
  110. package/esm/component/map-label/component.js.map +1 -1
  111. package/esm/component/marker/mark-line/mark-line.js +3 -3
  112. package/esm/component/marker/mark-line/mark-line.js.map +1 -1
  113. package/esm/component/marker/utils.js +6 -6
  114. package/esm/component/marker/utils.js.map +1 -1
  115. package/esm/component/tooltip/utils/show-tooltip.js +1 -1
  116. package/esm/component/tooltip/utils/show-tooltip.js.map +1 -1
  117. package/esm/core/index.d.ts +1 -1
  118. package/esm/core/index.js +1 -1
  119. package/esm/core/index.js.map +1 -1
  120. package/esm/core/vchart.js +1 -1
  121. package/esm/core/vchart.js.map +1 -1
  122. package/esm/layout/base-layout.js +6 -6
  123. package/esm/layout/base-layout.js.map +1 -1
  124. package/esm/layout/interface.d.ts +3 -3
  125. package/esm/layout/interface.js.map +1 -1
  126. package/esm/layout/layout-item.d.ts +3 -6
  127. package/esm/layout/layout-item.js +6 -24
  128. package/esm/layout/layout-item.js.map +1 -1
  129. package/esm/layout/layout3d/index.js.map +1 -1
  130. package/esm/layout/util.js +90 -118
  131. package/esm/layout/util.js.map +1 -1
  132. package/esm/model/interface.d.ts +0 -2
  133. package/esm/model/interface.js.map +1 -1
  134. package/esm/model/layout-model.d.ts +0 -8
  135. package/esm/model/layout-model.js +0 -15
  136. package/esm/model/layout-model.js.map +1 -1
  137. package/esm/series/bar/bar.js +1 -1
  138. package/esm/series/bar/bar.js.map +1 -1
  139. package/esm/series/base/base-series.js +4 -7
  140. package/esm/series/base/base-series.js.map +1 -1
  141. package/esm/series/correlation/correlation.js +1 -1
  142. package/esm/series/correlation/correlation.js.map +1 -1
  143. package/esm/series/mixin/line-mixin.js +1 -1
  144. package/esm/series/mixin/line-mixin.js.map +1 -1
  145. package/esm/series/pie/3d/pie-3d.js +1 -1
  146. package/esm/series/pie/3d/pie-3d.js.map +1 -1
  147. package/esm/series/pie/pie.js +7 -7
  148. package/esm/series/pie/pie.js.map +1 -1
  149. package/esm/series/polar/polar.js +1 -1
  150. package/esm/series/polar/polar.js.map +1 -1
  151. package/esm/series/radar/animation.js +1 -1
  152. package/esm/series/radar/animation.js.map +1 -1
  153. package/esm/series/sankey/sankey.js +1 -1
  154. package/esm/series/sankey/sankey.js.map +1 -1
  155. package/esm/series/sunburst/sunburst.js +2 -2
  156. package/esm/series/sunburst/sunburst.js.map +1 -1
  157. package/esm/series/word-cloud/base.js +3 -3
  158. package/esm/series/word-cloud/base.js.map +1 -1
  159. package/esm/typings/layout.d.ts +1 -0
  160. package/esm/typings/layout.js.map +1 -1
  161. package/package.json +12 -12
@@ -37,182 +37,154 @@ function adjustItemsToCenter(allItems, isVertical, containerLength) {
37
37
  }));
38
38
  }
39
39
 
40
- function layoutRightStartOrMiddleItems(items, layout, limitHeight, isMiddle) {
40
+ function alignSelfOfItems(allItems, isVertical, maxSizes, sign) {
41
+ let maxSize;
42
+ allItems.forEach(((lineItems, index) => {
43
+ lineItems.length > 1 && (maxSize = maxSizes[index], lineItems.forEach((item => {
44
+ if (!item.alignSelf || "start" === item.alignSelf) return;
45
+ const pos = item.getLayoutStartPoint(), ratio = "middle" === item.alignSelf ? .5 : 1, delta = isVertical ? maxSize - (item.getLayoutRect().width + item.layoutPaddingLeft + item.layoutPaddingRight) : maxSize - (item.getLayoutRect().height + item.layoutPaddingTop + item.layoutPaddingBottom);
46
+ isVertical ? item.setLayoutStartPosition({
47
+ x: pos.x + sign * delta * ratio,
48
+ y: pos.y
49
+ }) : item.setLayoutStartPosition({
50
+ x: pos.x,
51
+ y: pos.y + sign * delta * ratio
52
+ });
53
+ })));
54
+ }));
55
+ }
56
+
57
+ function layoutLeftRightStartOrMiddleItems(items, layout, limitHeight, isMiddle, position) {
41
58
  if (items.length) {
42
- let maxWidth = 0, preRight = layout.rightCurrent, preTop = layout.topCurrent;
59
+ let maxWidth = 0;
60
+ const isRight = "right" === position, xSign = isRight ? -1 : 1;
61
+ let preX = isRight ? layout.rightCurrent : layout.leftCurrent, preTop = layout.topCurrent;
43
62
  const allItems = [];
44
63
  let singleLineItems = [];
64
+ const maxWidths = [];
45
65
  items.forEach((item => {
46
66
  const layoutRect = layout.getItemComputeLayoutRect(item), rect = item.computeBoundsInRect(layoutRect);
47
67
  item.setLayoutRect(rect);
48
- const itemTotalHeight = rect.height + item.layoutPaddingTop + item.layoutPaddingBottom, itemTotalWidth = rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;
68
+ const itemTotalHeight = rect.height + item.layoutPaddingTop + item.layoutPaddingBottom, itemTotalWidth = rect.width + item.layoutPaddingLeft + item.layoutPaddingRight, itemOffsetX = isRight ? -rect.width - item.layoutPaddingRight : item.layoutPaddingLeft;
49
69
  item.setLayoutStartPosition({
50
- x: preRight + item.layoutOffsetX - rect.width - item.layoutPaddingRight,
70
+ x: preX + item.layoutOffsetX + itemOffsetX,
51
71
  y: preTop + item.layoutOffsetY + item.layoutPaddingTop
52
- }), maxWidth = Math.max(maxWidth, itemTotalWidth), preTop += itemTotalHeight, preTop > limitHeight ? (preRight -= maxWidth,
53
- maxWidth = itemTotalWidth, preTop = layout.topCurrent + itemTotalHeight, item.setLayoutStartPosition({
54
- x: preRight + item.layoutOffsetX - rect.width - item.layoutPaddingRight,
72
+ }), preTop += itemTotalHeight, preTop > limitHeight && singleLineItems.length ? (maxWidths.push(maxWidth),
73
+ preX += xSign * maxWidth, maxWidth = itemTotalWidth, preTop = layout.topCurrent + itemTotalHeight,
74
+ item.setLayoutStartPosition({
75
+ x: preX + item.layoutOffsetX + itemOffsetX,
55
76
  y: layout.topCurrent + item.layoutOffsetY + item.layoutPaddingTop
56
- }), allItems.push(singleLineItems), singleLineItems = [ item ]) : singleLineItems.push(item);
57
- })), allItems.push(singleLineItems), isMiddle && adjustItemsToCenter(allItems, !0, limitHeight),
58
- layout.rightCurrent = preRight - maxWidth;
77
+ }), allItems.push(singleLineItems), singleLineItems = [ item ]) : (maxWidth = Math.max(maxWidth, itemTotalWidth),
78
+ singleLineItems.push(item));
79
+ })), maxWidths.push(maxWidth), allItems.push(singleLineItems), alignSelfOfItems(allItems, !0, maxWidths, xSign),
80
+ isMiddle && adjustItemsToCenter(allItems, !0, limitHeight), isRight ? layout.rightCurrent = preX + xSign * maxWidth : layout.leftCurrent = preX + xSign * maxWidth;
59
81
  }
60
82
  }
61
83
 
62
- function layoutLeftStartOrMiddleItems(items, layout, limitHeight, isMiddle) {
84
+ function layoutLeftRightEndItems(items, layout, limitWidth, position) {
63
85
  if (items.length) {
64
- let maxWidth = 0, preLeft = layout.leftCurrent, preTop = layout.topCurrent;
86
+ let maxWidth = 0;
87
+ const isRight = "right" === position, xSign = isRight ? -1 : 1;
88
+ let preX = isRight ? layout.rightCurrent : layout.leftCurrent, preBottom = layout.bottomCurrent;
65
89
  const allItems = [];
66
90
  let singleLineItems = [];
91
+ const maxWidths = [];
67
92
  items.forEach((item => {
68
93
  const layoutRect = layout.getItemComputeLayoutRect(item), rect = item.computeBoundsInRect(layoutRect);
69
94
  item.setLayoutRect(rect);
70
- const itemTotalHeight = rect.height + item.layoutPaddingTop + item.layoutPaddingBottom, itemTotalWidth = rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;
95
+ const itemTotalHeight = rect.height + item.layoutPaddingTop + item.layoutPaddingBottom, itemTotalWidth = rect.width + item.layoutPaddingLeft + item.layoutPaddingRight, itemOffsetX = isRight ? -rect.width - item.layoutPaddingRight : item.layoutPaddingLeft;
96
+ preBottom < itemTotalHeight && singleLineItems.length ? (maxWidths.push(maxWidth),
97
+ preX += xSign * maxWidth, maxWidth = itemTotalWidth, preBottom = layout.bottomCurrent,
71
98
  item.setLayoutStartPosition({
72
- x: preLeft + item.layoutOffsetX + item.layoutPaddingLeft,
73
- y: preTop + item.layoutOffsetY + item.layoutPaddingTop
74
- }), maxWidth = Math.max(maxWidth, itemTotalWidth), preTop += itemTotalHeight, preTop > limitHeight ? (preLeft += maxWidth,
75
- maxWidth = itemTotalWidth, preTop = layout.topCurrent + itemTotalHeight, item.setLayoutStartPosition({
76
- x: preLeft + item.layoutOffsetX + item.layoutPaddingLeft,
77
- y: layout.topCurrent + item.layoutOffsetY + item.layoutPaddingTop
78
- }), allItems.push(singleLineItems), singleLineItems = [ item ]) : singleLineItems.push(item);
79
- })), allItems.push(singleLineItems), isMiddle && adjustItemsToCenter(allItems, !0, limitHeight),
80
- layout.leftCurrent = preLeft + maxWidth;
99
+ x: preX + item.layoutOffsetX + itemOffsetX,
100
+ y: preBottom + item.layoutOffsetY - rect.height - item.layoutPaddingBottom
101
+ }), allItems.push(singleLineItems), singleLineItems = [ item ]) : (item.setLayoutStartPosition({
102
+ x: preX + item.layoutOffsetX + itemOffsetX,
103
+ y: preBottom + item.layoutOffsetY - rect.height - item.layoutPaddingBottom
104
+ }), maxWidth = Math.max(maxWidth, itemTotalWidth), preBottom -= itemTotalHeight,
105
+ singleLineItems.push(item));
106
+ })), maxWidths.push(maxWidth), allItems.push(singleLineItems), alignSelfOfItems(allItems, !0, maxWidths, xSign),
107
+ isRight ? layout.rightCurrent = preX + xSign * maxWidth : layout.leftCurrent = preX + xSign * maxWidth;
81
108
  }
82
109
  }
83
110
 
84
- function layoutTopStartOrMiddleItems(items, layout, limitWidth, isMiddle) {
111
+ function layoutTopBottomStartOrMiddleItems(items, layout, limitWidth, isMiddle, position) {
85
112
  if (items.length) {
86
- let maxHeight = 0, preLeft = layout.leftCurrent, preTop = layout.topCurrent;
113
+ const isTop = "top" === position, ySign = isTop ? 1 : -1;
114
+ let maxHeight = 0, preLeft = layout.leftCurrent, preY = isTop ? layout.topCurrent : layout.bottomCurrent;
87
115
  const allItems = [];
88
116
  let singleLineItems = [];
117
+ const maxHeights = [];
89
118
  items.forEach((item => {
90
119
  const layoutRect = layout.getItemComputeLayoutRect(item), rect = item.computeBoundsInRect(layoutRect);
91
120
  item.setLayoutRect(rect);
92
- const itemTotalHeight = rect.height + item.layoutPaddingTop + item.layoutPaddingBottom, itemTotalWidth = rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;
121
+ const itemTotalHeight = rect.height + item.layoutPaddingTop + item.layoutPaddingBottom, itemTotalWidth = rect.width + item.layoutPaddingLeft + item.layoutPaddingRight, itemOffsetY = isTop ? item.layoutPaddingTop : -rect.height - item.layoutPaddingBottom;
93
122
  item.setLayoutStartPosition({
94
123
  x: preLeft + item.layoutOffsetX + item.layoutPaddingLeft,
95
- y: preTop + item.layoutOffsetY + item.layoutPaddingTop
96
- }), maxHeight = Math.max(maxHeight, itemTotalHeight), preLeft += itemTotalWidth,
97
- preLeft > limitWidth ? (preLeft = layout.leftCurrent + itemTotalWidth, preTop += maxHeight,
98
- maxHeight = itemTotalHeight, item.setLayoutStartPosition({
124
+ y: preY + item.layoutOffsetY + itemOffsetY
125
+ }), preLeft += itemTotalWidth, preLeft > limitWidth && singleLineItems.length ? (maxHeights.push(maxHeight),
126
+ preLeft = layout.leftCurrent + itemTotalWidth, preY += ySign * maxHeight, maxHeight = itemTotalHeight,
127
+ item.setLayoutStartPosition({
99
128
  x: layout.leftCurrent + item.layoutOffsetX + item.layoutPaddingLeft,
100
- y: preTop + item.layoutOffsetY + item.layoutPaddingTop
101
- }), allItems.push(singleLineItems), singleLineItems = [ item ]) : singleLineItems.push(item);
102
- })), allItems.push(singleLineItems), isMiddle && adjustItemsToCenter(allItems, !1, limitWidth),
103
- layout.topCurrent = preTop + maxHeight;
129
+ y: preY + item.layoutOffsetY + itemOffsetY
130
+ }), allItems.push(singleLineItems), singleLineItems = [ item ]) : (maxHeight = Math.max(maxHeight, itemTotalHeight),
131
+ singleLineItems.push(item));
132
+ })), maxHeights.push(maxHeight), allItems.push(singleLineItems), alignSelfOfItems(allItems, !1, maxHeights, ySign),
133
+ isMiddle && adjustItemsToCenter(allItems, !1, limitWidth), isTop ? layout.topCurrent = preY + ySign * maxHeight : layout.bottomCurrent = preY + ySign * maxHeight;
104
134
  }
105
135
  }
106
136
 
107
- function layoutBottomStartOrMiddleItems(items, layout, limitWidth, isMiddle) {
137
+ function layoutTopBottomEndItems(items, layout, limitWidth, position) {
108
138
  if (items.length) {
109
- let maxHeight = 0, preLeft = layout.leftCurrent, preBottom = layout.bottomCurrent;
139
+ const isTop = "top" === position, ySign = isTop ? 1 : -1;
140
+ let maxHeight = 0, preRight = layout.rightCurrent, preY = isTop ? layout.topCurrent : layout.bottomCurrent;
110
141
  const allItems = [];
111
142
  let singleLineItems = [];
143
+ const maxHeights = [];
112
144
  items.forEach((item => {
113
145
  const layoutRect = layout.getItemComputeLayoutRect(item), rect = item.computeBoundsInRect(layoutRect);
114
146
  item.setLayoutRect(rect);
115
- const itemTotalHeight = rect.height + item.layoutPaddingTop + item.layoutPaddingBottom, itemTotalWidth = rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;
147
+ const itemTotalHeight = rect.height + item.layoutPaddingTop + item.layoutPaddingBottom, itemTotalWidth = rect.width + item.layoutPaddingLeft + item.layoutPaddingRight, itemOffsetY = isTop ? item.layoutPaddingTop : -rect.height - item.layoutPaddingBottom;
148
+ preRight < itemTotalWidth && singleLineItems.length ? (preRight = layout.rightCurrent,
149
+ preY += ySign * maxHeight, maxHeight = itemTotalHeight, item.setLayoutStartPosition({
150
+ x: layout.rightCurrent + item.layoutOffsetX - rect.width - item.layoutPaddingRight,
151
+ y: preY + item.layoutOffsetY + itemOffsetY
152
+ }), allItems.push(singleLineItems), singleLineItems = [ item ]) : (singleLineItems.push(item),
116
153
  item.setLayoutStartPosition({
117
- x: preLeft + item.layoutOffsetX + item.layoutPaddingLeft,
118
- y: preBottom + item.layoutOffsetY - rect.height - item.layoutPaddingBottom
119
- }), maxHeight = Math.max(maxHeight, itemTotalHeight), preLeft += itemTotalWidth,
120
- preLeft > limitWidth ? (allItems.push(singleLineItems), preLeft = layout.leftCurrent + itemTotalWidth,
121
- preBottom -= maxHeight, maxHeight = itemTotalHeight, item.setLayoutStartPosition({
122
- x: layout.leftCurrent + item.layoutOffsetX + item.layoutPaddingLeft,
123
- y: preBottom + item.layoutOffsetY - rect.height - item.layoutPaddingBottom
124
- }), singleLineItems = [ item ]) : singleLineItems.push(item);
125
- })), allItems.push(singleLineItems), isMiddle && adjustItemsToCenter(allItems, !1, limitWidth),
126
- layout.bottomCurrent = preBottom - maxHeight;
154
+ x: preRight + item.layoutOffsetX - rect.width - item.layoutPaddingRight,
155
+ y: preY + item.layoutOffsetY + itemOffsetY
156
+ }), maxHeight = Math.max(maxHeight, itemTotalHeight), preRight -= itemTotalWidth);
157
+ })), maxHeights.push(maxHeight), allItems.push(singleLineItems), alignSelfOfItems(allItems, !1, maxHeights, ySign),
158
+ isTop ? layout.topCurrent = preY + ySign * maxHeight : layout.bottomCurrent = preY + ySign * maxHeight;
127
159
  }
128
160
  }
129
161
 
130
162
  function layoutLeftInlineItems(items, layout, limitHeight) {
131
163
  const {startItems: startItems, middleItems: middleItems, endItems: endItems} = getPositionItems(items);
132
- if (startItems.length && layoutLeftStartOrMiddleItems(startItems, layout, limitHeight, !1),
133
- middleItems.length && layoutLeftStartOrMiddleItems(middleItems, layout, limitHeight, !0),
134
- endItems.length) {
135
- let maxWidth = 0, preLeft = layout.leftCurrent, preBottom = layout.bottomCurrent;
136
- endItems.forEach((item => {
137
- const layoutRect = layout.getItemComputeLayoutRect(item), rect = item.computeBoundsInRect(layoutRect);
138
- item.setLayoutRect(rect);
139
- const itemTotalHeight = rect.height + item.layoutPaddingTop + item.layoutPaddingBottom, itemTotalWidth = rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;
140
- preBottom < itemTotalHeight ? (preLeft += maxWidth, maxWidth = itemTotalWidth, preBottom = layout.bottomCurrent,
141
- item.setLayoutStartPosition({
142
- x: preLeft + item.layoutOffsetX + item.layoutPaddingLeft,
143
- y: preBottom + item.layoutOffsetY - rect.height - item.layoutPaddingBottom
144
- })) : (item.setLayoutStartPosition({
145
- x: preLeft + item.layoutOffsetX + item.layoutPaddingLeft,
146
- y: preBottom + item.layoutOffsetY - rect.height - item.layoutPaddingBottom
147
- }), maxWidth = Math.max(maxWidth, itemTotalWidth), preBottom -= itemTotalHeight);
148
- })), layout.leftCurrent = preLeft + maxWidth;
149
- }
164
+ startItems.length && layoutLeftRightStartOrMiddleItems(startItems, layout, limitHeight, !1, "left"),
165
+ middleItems.length && layoutLeftRightStartOrMiddleItems(middleItems, layout, limitHeight, !0, "left"),
166
+ endItems.length && layoutLeftRightEndItems(endItems, layout, limitHeight, "left");
150
167
  }
151
168
 
152
169
  function layoutRightInlineItems(items, layout, limitHeight) {
153
170
  const {startItems: startItems, middleItems: middleItems, endItems: endItems} = getPositionItems(items);
154
- if (startItems.length && layoutRightStartOrMiddleItems(startItems, layout, limitHeight, !1),
155
- middleItems.length && layoutRightStartOrMiddleItems(middleItems, layout, limitHeight, !0),
156
- endItems.length) {
157
- let maxWidth = 0, preRight = layout.rightCurrent, preBottom = layout.bottomCurrent;
158
- endItems.forEach((item => {
159
- const layoutRect = layout.getItemComputeLayoutRect(item), rect = item.computeBoundsInRect(layoutRect);
160
- item.setLayoutRect(rect);
161
- const itemTotalHeight = rect.height + item.layoutPaddingTop + item.layoutPaddingBottom, itemTotalWidth = rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;
162
- preBottom < itemTotalHeight ? (preRight -= maxWidth, maxWidth = itemTotalWidth,
163
- preBottom = layout.bottomCurrent, item.setLayoutStartPosition({
164
- x: preRight + item.layoutOffsetX - rect.width - item.layoutPaddingRight,
165
- y: preBottom + item.layoutOffsetY - rect.height - item.layoutPaddingBottom
166
- })) : (item.setLayoutStartPosition({
167
- x: preRight + item.layoutOffsetX - rect.width - item.layoutPaddingRight,
168
- y: preBottom + item.layoutOffsetY - rect.height - item.layoutPaddingBottom
169
- }), maxWidth = Math.max(maxWidth, itemTotalWidth), preBottom -= itemTotalHeight);
170
- })), layout.rightCurrent = preRight - maxWidth;
171
- }
171
+ startItems.length && layoutLeftRightStartOrMiddleItems(startItems, layout, limitHeight, !1, "right"),
172
+ middleItems.length && layoutLeftRightStartOrMiddleItems(middleItems, layout, limitHeight, !0, "right"),
173
+ endItems.length && layoutLeftRightEndItems(endItems, layout, limitHeight, "right");
172
174
  }
173
175
 
174
176
  function layoutTopInlineItems(items, layout, limitWidth) {
175
177
  const {startItems: startItems, middleItems: middleItems, endItems: endItems} = getPositionItems(items);
176
- if (startItems.length && layoutTopStartOrMiddleItems(startItems, layout, limitWidth, !1),
177
- middleItems.length && layoutTopStartOrMiddleItems(middleItems, layout, limitWidth, !0),
178
- endItems.length) {
179
- let maxHeight = 0, preTop = layout.topCurrent, preRight = layout.rightCurrent;
180
- endItems.forEach((item => {
181
- const layoutRect = layout.getItemComputeLayoutRect(item), rect = item.computeBoundsInRect(layoutRect);
182
- item.setLayoutRect(rect);
183
- const itemTotalHeight = rect.height + item.layoutPaddingTop + item.layoutPaddingBottom, itemTotalWidth = rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;
184
- preRight < itemTotalWidth ? (preRight = layout.rightCurrent, preTop += maxHeight,
185
- maxHeight = itemTotalHeight, item.setLayoutStartPosition({
186
- x: layout.rightCurrent + item.layoutOffsetX - rect.width - item.layoutPaddingRight,
187
- y: preTop + item.layoutOffsetY + item.layoutPaddingTop
188
- })) : (item.setLayoutStartPosition({
189
- x: preRight + item.layoutOffsetX - rect.width - item.layoutPaddingRight,
190
- y: preTop + item.layoutOffsetY + item.layoutPaddingTop
191
- }), maxHeight = Math.max(maxHeight, itemTotalHeight), preRight -= itemTotalWidth);
192
- })), layout.topCurrent = preTop + maxHeight;
193
- }
178
+ startItems.length && layoutTopBottomStartOrMiddleItems(startItems, layout, limitWidth, !1, "top"),
179
+ middleItems.length && layoutTopBottomStartOrMiddleItems(middleItems, layout, limitWidth, !0, "top"),
180
+ endItems.length && layoutTopBottomEndItems(endItems, layout, limitWidth, "top");
194
181
  }
195
182
 
196
183
  function layoutBottomInlineItems(items, layout, limitWidth) {
197
184
  const {startItems: startItems, middleItems: middleItems, endItems: endItems} = getPositionItems(items);
198
- if (startItems.length && layoutBottomStartOrMiddleItems(startItems, layout, limitWidth, !1),
199
- middleItems.length && layoutBottomStartOrMiddleItems(middleItems, layout, limitWidth, !0),
200
- endItems.length) {
201
- let maxHeight = 0, preBottom = layout.bottomCurrent, preRight = layout.rightCurrent;
202
- endItems.forEach((item => {
203
- const layoutRect = layout.getItemComputeLayoutRect(item), rect = item.computeBoundsInRect(layoutRect);
204
- item.setLayoutRect(rect);
205
- const itemTotalHeight = rect.height + item.layoutPaddingTop + item.layoutPaddingBottom, itemTotalWidth = rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;
206
- preRight < itemTotalWidth ? (preRight = layout.rightCurrent, preBottom -= maxHeight,
207
- maxHeight = itemTotalHeight, item.setLayoutStartPosition({
208
- x: layout.rightCurrent + item.layoutOffsetX - rect.width - item.layoutPaddingRight,
209
- y: preBottom + item.layoutOffsetY - rect.height - item.layoutPaddingBottom
210
- })) : (item.setLayoutStartPosition({
211
- x: preRight + item.layoutOffsetX - rect.width - item.layoutPaddingRight,
212
- y: preBottom + item.layoutOffsetY - rect.height - item.layoutPaddingBottom
213
- }), maxHeight = Math.max(maxHeight, itemTotalHeight), preRight -= itemTotalWidth);
214
- })), layout.bottomCurrent = preBottom - maxHeight;
215
- }
185
+ startItems.length && layoutTopBottomStartOrMiddleItems(startItems, layout, limitWidth, !1, "bottom"),
186
+ middleItems.length && layoutTopBottomStartOrMiddleItems(middleItems, layout, limitWidth, !0, "bottom"),
187
+ endItems.length && layoutTopBottomEndItems(endItems, layout, limitWidth, "bottom");
216
188
  }
217
189
 
218
190
  exports.layoutLeftInlineItems = layoutLeftInlineItems, exports.layoutRightInlineItems = layoutRightInlineItems,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/layout/util.ts"],"names":[],"mappings":"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","file":"util.js","sourcesContent":["import { isNil, last } from '@visactor/vutils';\nimport type { Layout } from './base-layout';\nimport type { ILayoutItem } from './interface';\n\nfunction getPositionItems(items: ILayoutItem[]) {\n const startItems: ILayoutItem[] = [];\n const middleItems: ILayoutItem[] = [];\n const endItems: ILayoutItem[] = [];\n\n items.forEach(item => {\n if (isNil(item.getSpec().position) || item.getSpec().position === 'start') {\n startItems.push(item);\n } else if (item.getSpec().position === 'middle') {\n middleItems.push(item);\n } else if (item.getSpec().position === 'end') {\n endItems.push(item);\n }\n });\n\n return {\n startItems,\n endItems,\n middleItems\n };\n}\n\nfunction adjustItemsToCenter(allItems: ILayoutItem[][], isVertical: boolean, containerLength: number) {\n if (isVertical) {\n allItems.forEach(items => {\n const lastItem = last(items);\n const length =\n lastItem.getLayoutStartPoint().y + lastItem.getLayoutRect().height - items[0].getLayoutStartPoint().y;\n const centerY = (containerLength - length) / 2;\n\n items.forEach(item => {\n item.setLayoutStartPosition({\n x: item.getLayoutStartPoint().x,\n y: item.getLayoutStartPoint().y + centerY\n });\n });\n });\n } else {\n allItems.forEach(items => {\n const lastItem = last(items);\n const length =\n lastItem.getLayoutStartPoint().x + lastItem.getLayoutRect().width - items[0].getLayoutStartPoint().x;\n const centerX = (containerLength - length) / 2;\n\n items.forEach(item => {\n item.setLayoutStartPosition({\n x: item.getLayoutStartPoint().x + centerX,\n y: item.getLayoutStartPoint().y\n });\n });\n });\n }\n}\n\nfunction layoutRightStartOrMiddleItems(items: ILayoutItem[], layout: Layout, limitHeight: number, isMiddle: boolean) {\n if (items.length) {\n let maxWidth = 0;\n let preRight = layout.rightCurrent;\n let preTop = layout.topCurrent;\n\n const allItems: ILayoutItem[][] = [];\n let singleLineItems: ILayoutItem[] = [];\n items.forEach(item => {\n const layoutRect = layout.getItemComputeLayoutRect(item);\n const rect = item.computeBoundsInRect(layoutRect);\n item.setLayoutRect(rect);\n const itemTotalHeight = rect.height + item.layoutPaddingTop + item.layoutPaddingBottom;\n const itemTotalWidth = rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;\n item.setLayoutStartPosition({\n x: preRight + item.layoutOffsetX - rect.width - item.layoutPaddingRight,\n y: preTop + item.layoutOffsetY + item.layoutPaddingTop\n });\n\n maxWidth = Math.max(maxWidth, itemTotalWidth);\n preTop += itemTotalHeight;\n if (preTop > limitHeight) {\n preRight -= maxWidth;\n maxWidth = itemTotalWidth;\n preTop = layout.topCurrent + itemTotalHeight;\n\n item.setLayoutStartPosition({\n x: preRight + item.layoutOffsetX - rect.width - item.layoutPaddingRight,\n y: layout.topCurrent + item.layoutOffsetY + item.layoutPaddingTop\n });\n allItems.push(singleLineItems);\n singleLineItems = [item];\n } else {\n singleLineItems.push(item);\n }\n });\n allItems.push(singleLineItems);\n\n if (isMiddle) {\n adjustItemsToCenter(allItems, true, limitHeight);\n }\n\n layout.rightCurrent = preRight - maxWidth;\n }\n}\n\nfunction layoutLeftStartOrMiddleItems(items: ILayoutItem[], layout: Layout, limitHeight: number, isMiddle: boolean) {\n if (items.length) {\n let maxWidth = 0;\n let preLeft = layout.leftCurrent;\n let preTop = layout.topCurrent;\n const allItems: ILayoutItem[][] = [];\n let singleLineItems: ILayoutItem[] = [];\n items.forEach(item => {\n const layoutRect = layout.getItemComputeLayoutRect(item);\n const rect = item.computeBoundsInRect(layoutRect);\n item.setLayoutRect(rect);\n const itemTotalHeight = rect.height + item.layoutPaddingTop + item.layoutPaddingBottom;\n const itemTotalWidth = rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;\n item.setLayoutStartPosition({\n x: preLeft + item.layoutOffsetX + item.layoutPaddingLeft,\n y: preTop + item.layoutOffsetY + item.layoutPaddingTop\n });\n\n maxWidth = Math.max(maxWidth, itemTotalWidth);\n preTop += itemTotalHeight;\n if (preTop > limitHeight) {\n preLeft += maxWidth;\n maxWidth = itemTotalWidth;\n preTop = layout.topCurrent + itemTotalHeight;\n\n item.setLayoutStartPosition({\n x: preLeft + item.layoutOffsetX + item.layoutPaddingLeft,\n y: layout.topCurrent + item.layoutOffsetY + item.layoutPaddingTop\n });\n allItems.push(singleLineItems);\n singleLineItems = [item];\n } else {\n singleLineItems.push(item);\n }\n });\n allItems.push(singleLineItems);\n\n if (isMiddle) {\n adjustItemsToCenter(allItems, true, limitHeight);\n }\n\n layout.leftCurrent = preLeft + maxWidth;\n }\n}\n\nfunction layoutTopStartOrMiddleItems(items: ILayoutItem[], layout: Layout, limitWidth: number, isMiddle: boolean) {\n if (items.length) {\n let maxHeight = 0;\n let preLeft = layout.leftCurrent;\n let preTop = layout.topCurrent;\n const allItems: ILayoutItem[][] = [];\n let singleLineItems: ILayoutItem[] = [];\n items.forEach(item => {\n const layoutRect = layout.getItemComputeLayoutRect(item);\n const rect = item.computeBoundsInRect(layoutRect);\n item.setLayoutRect(rect);\n const itemTotalHeight = rect.height + item.layoutPaddingTop + item.layoutPaddingBottom;\n const itemTotalWidth = rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;\n item.setLayoutStartPosition({\n x: preLeft + item.layoutOffsetX + item.layoutPaddingLeft,\n y: preTop + item.layoutOffsetY + item.layoutPaddingTop\n });\n\n maxHeight = Math.max(maxHeight, itemTotalHeight);\n preLeft += itemTotalWidth;\n if (preLeft > limitWidth) {\n preLeft = layout.leftCurrent + itemTotalWidth;\n preTop += maxHeight;\n maxHeight = itemTotalHeight;\n item.setLayoutStartPosition({\n x: layout.leftCurrent + item.layoutOffsetX + item.layoutPaddingLeft,\n y: preTop + item.layoutOffsetY + item.layoutPaddingTop\n });\n allItems.push(singleLineItems);\n singleLineItems = [item];\n } else {\n singleLineItems.push(item);\n }\n });\n allItems.push(singleLineItems);\n if (isMiddle) {\n adjustItemsToCenter(allItems, false, limitWidth);\n }\n\n layout.topCurrent = preTop + maxHeight;\n }\n}\n\nfunction layoutBottomStartOrMiddleItems(items: ILayoutItem[], layout: Layout, limitWidth: number, isMiddle: boolean) {\n if (items.length) {\n let maxHeight = 0;\n let preLeft = layout.leftCurrent;\n let preBottom = layout.bottomCurrent;\n const allItems: ILayoutItem[][] = [];\n let singleLineItems: ILayoutItem[] = [];\n items.forEach(item => {\n const layoutRect = layout.getItemComputeLayoutRect(item);\n const rect = item.computeBoundsInRect(layoutRect);\n item.setLayoutRect(rect);\n const itemTotalHeight = rect.height + item.layoutPaddingTop + item.layoutPaddingBottom;\n const itemTotalWidth = rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;\n item.setLayoutStartPosition({\n x: preLeft + item.layoutOffsetX + item.layoutPaddingLeft,\n y: preBottom + item.layoutOffsetY - rect.height - item.layoutPaddingBottom\n });\n\n maxHeight = Math.max(maxHeight, itemTotalHeight);\n preLeft += itemTotalWidth;\n if (preLeft > limitWidth) {\n allItems.push(singleLineItems);\n preLeft = layout.leftCurrent + itemTotalWidth;\n preBottom -= maxHeight;\n maxHeight = itemTotalHeight;\n item.setLayoutStartPosition({\n x: layout.leftCurrent + item.layoutOffsetX + item.layoutPaddingLeft,\n y: preBottom + item.layoutOffsetY - rect.height - item.layoutPaddingBottom\n });\n singleLineItems = [item];\n } else {\n singleLineItems.push(item);\n }\n });\n allItems.push(singleLineItems);\n if (isMiddle) {\n adjustItemsToCenter(allItems, false, limitWidth);\n }\n\n layout.bottomCurrent = preBottom - maxHeight;\n }\n}\n\nexport function layoutLeftInlineItems(items: ILayoutItem[], layout: Layout, limitHeight: number) {\n const { startItems, middleItems, endItems } = getPositionItems(items);\n if (startItems.length) {\n layoutLeftStartOrMiddleItems(startItems, layout, limitHeight, false);\n }\n\n if (middleItems.length) {\n layoutLeftStartOrMiddleItems(middleItems, layout, limitHeight, true);\n }\n\n if (endItems.length) {\n let maxWidth = 0;\n let preLeft = layout.leftCurrent;\n let preBottom = layout.bottomCurrent;\n endItems.forEach(item => {\n const layoutRect = layout.getItemComputeLayoutRect(item);\n const rect = item.computeBoundsInRect(layoutRect);\n item.setLayoutRect(rect);\n const itemTotalHeight = rect.height + item.layoutPaddingTop + item.layoutPaddingBottom;\n const itemTotalWidth = rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;\n\n if (preBottom < itemTotalHeight) {\n preLeft += maxWidth;\n maxWidth = itemTotalWidth;\n preBottom = layout.bottomCurrent;\n item.setLayoutStartPosition({\n x: preLeft + item.layoutOffsetX + item.layoutPaddingLeft,\n y: preBottom + item.layoutOffsetY - rect.height - item.layoutPaddingBottom\n });\n } else {\n item.setLayoutStartPosition({\n x: preLeft + item.layoutOffsetX + item.layoutPaddingLeft,\n y: preBottom + item.layoutOffsetY - rect.height - item.layoutPaddingBottom\n });\n maxWidth = Math.max(maxWidth, itemTotalWidth);\n preBottom -= itemTotalHeight;\n }\n });\n layout.leftCurrent = preLeft + maxWidth;\n }\n}\n\nexport function layoutRightInlineItems(items: ILayoutItem[], layout: Layout, limitHeight: number) {\n const { startItems, middleItems, endItems } = getPositionItems(items);\n\n if (startItems.length) {\n layoutRightStartOrMiddleItems(startItems, layout, limitHeight, false);\n }\n\n if (middleItems.length) {\n layoutRightStartOrMiddleItems(middleItems, layout, limitHeight, true);\n }\n\n if (endItems.length) {\n let maxWidth = 0;\n let preRight = layout.rightCurrent;\n let preBottom = layout.bottomCurrent;\n endItems.forEach(item => {\n const layoutRect = layout.getItemComputeLayoutRect(item);\n const rect = item.computeBoundsInRect(layoutRect);\n item.setLayoutRect(rect);\n const itemTotalHeight = rect.height + item.layoutPaddingTop + item.layoutPaddingBottom;\n const itemTotalWidth = rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;\n if (preBottom < itemTotalHeight) {\n preRight -= maxWidth;\n maxWidth = itemTotalWidth;\n preBottom = layout.bottomCurrent;\n item.setLayoutStartPosition({\n x: preRight + item.layoutOffsetX - rect.width - item.layoutPaddingRight,\n y: preBottom + item.layoutOffsetY - rect.height - item.layoutPaddingBottom\n });\n } else {\n item.setLayoutStartPosition({\n x: preRight + item.layoutOffsetX - rect.width - item.layoutPaddingRight,\n y: preBottom + item.layoutOffsetY - rect.height - item.layoutPaddingBottom\n });\n maxWidth = Math.max(maxWidth, itemTotalWidth);\n preBottom -= itemTotalHeight;\n }\n });\n layout.rightCurrent = preRight - maxWidth;\n }\n}\n\nexport function layoutTopInlineItems(items: ILayoutItem[], layout: Layout, limitWidth: number) {\n const { startItems, middleItems, endItems } = getPositionItems(items);\n\n if (startItems.length) {\n layoutTopStartOrMiddleItems(startItems, layout, limitWidth, false);\n }\n\n if (middleItems.length) {\n layoutTopStartOrMiddleItems(middleItems, layout, limitWidth, true);\n }\n\n if (endItems.length) {\n let maxHeight = 0;\n\n let preTop = layout.topCurrent;\n let preRight = layout.rightCurrent;\n endItems.forEach(item => {\n const layoutRect = layout.getItemComputeLayoutRect(item);\n const rect = item.computeBoundsInRect(layoutRect);\n item.setLayoutRect(rect);\n const itemTotalHeight = rect.height + item.layoutPaddingTop + item.layoutPaddingBottom;\n const itemTotalWidth = rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;\n if (preRight < itemTotalWidth) {\n preRight = layout.rightCurrent;\n preTop += maxHeight;\n maxHeight = itemTotalHeight;\n\n item.setLayoutStartPosition({\n x: layout.rightCurrent + item.layoutOffsetX - rect.width - item.layoutPaddingRight,\n y: preTop + item.layoutOffsetY + item.layoutPaddingTop\n });\n } else {\n item.setLayoutStartPosition({\n x: preRight + item.layoutOffsetX - rect.width - item.layoutPaddingRight,\n y: preTop + item.layoutOffsetY + item.layoutPaddingTop\n });\n maxHeight = Math.max(maxHeight, itemTotalHeight);\n preRight -= itemTotalWidth;\n }\n });\n layout.topCurrent = preTop + maxHeight;\n }\n}\n\nexport function layoutBottomInlineItems(items: ILayoutItem[], layout: Layout, limitWidth: number) {\n const { startItems, middleItems, endItems } = getPositionItems(items);\n\n if (startItems.length) {\n layoutBottomStartOrMiddleItems(startItems, layout, limitWidth, false);\n }\n\n if (middleItems.length) {\n layoutBottomStartOrMiddleItems(middleItems, layout, limitWidth, true);\n }\n\n if (endItems.length) {\n let maxHeight = 0;\n let preBottom = layout.bottomCurrent;\n let preRight = layout.rightCurrent;\n // 末尾的,从右往左布局\n endItems.forEach(item => {\n const layoutRect = layout.getItemComputeLayoutRect(item);\n const rect = item.computeBoundsInRect(layoutRect);\n item.setLayoutRect(rect);\n const itemTotalHeight = rect.height + item.layoutPaddingTop + item.layoutPaddingBottom;\n const itemTotalWidth = rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;\n if (preRight < itemTotalWidth) {\n preRight = layout.rightCurrent;\n preBottom -= maxHeight;\n maxHeight = itemTotalHeight;\n\n item.setLayoutStartPosition({\n x: layout.rightCurrent + item.layoutOffsetX - rect.width - item.layoutPaddingRight,\n y: preBottom + item.layoutOffsetY - rect.height - item.layoutPaddingBottom\n });\n } else {\n item.setLayoutStartPosition({\n x: preRight + item.layoutOffsetX - rect.width - item.layoutPaddingRight,\n y: preBottom + item.layoutOffsetY - rect.height - item.layoutPaddingBottom\n });\n maxHeight = Math.max(maxHeight, itemTotalHeight);\n preRight -= itemTotalWidth;\n }\n });\n layout.bottomCurrent = preBottom - maxHeight;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/layout/util.ts"],"names":[],"mappings":"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","file":"util.js","sourcesContent":["import { isNil, last } from '@visactor/vutils';\nimport type { Layout } from './base-layout';\nimport type { ILayoutItem } from './interface';\n\nfunction getPositionItems(items: ILayoutItem[]) {\n const startItems: ILayoutItem[] = [];\n const middleItems: ILayoutItem[] = [];\n const endItems: ILayoutItem[] = [];\n\n items.forEach(item => {\n if (isNil(item.getSpec().position) || item.getSpec().position === 'start') {\n startItems.push(item);\n } else if (item.getSpec().position === 'middle') {\n middleItems.push(item);\n } else if (item.getSpec().position === 'end') {\n endItems.push(item);\n }\n });\n\n return {\n startItems,\n endItems,\n middleItems\n };\n}\n\nfunction adjustItemsToCenter(allItems: ILayoutItem[][], isVertical: boolean, containerLength: number) {\n if (isVertical) {\n allItems.forEach(items => {\n const lastItem = last(items);\n const length =\n lastItem.getLayoutStartPoint().y + lastItem.getLayoutRect().height - items[0].getLayoutStartPoint().y;\n const centerY = (containerLength - length) / 2;\n\n items.forEach(item => {\n item.setLayoutStartPosition({\n x: item.getLayoutStartPoint().x,\n y: item.getLayoutStartPoint().y + centerY\n });\n });\n });\n } else {\n allItems.forEach(items => {\n const lastItem = last(items);\n const length =\n lastItem.getLayoutStartPoint().x + lastItem.getLayoutRect().width - items[0].getLayoutStartPoint().x;\n const centerX = (containerLength - length) / 2;\n\n items.forEach(item => {\n item.setLayoutStartPosition({\n x: item.getLayoutStartPoint().x + centerX,\n y: item.getLayoutStartPoint().y\n });\n });\n });\n }\n}\n\nfunction alignSelfOfItems(allItems: ILayoutItem[][], isVertical: boolean, maxSizes: number[], sign: number) {\n let maxSize: number;\n\n allItems.forEach((lineItems: ILayoutItem[], index: number) => {\n if (lineItems.length > 1) {\n maxSize = maxSizes[index];\n\n lineItems.forEach(item => {\n if (!item.alignSelf || item.alignSelf === 'start') {\n return;\n }\n\n const pos = item.getLayoutStartPoint();\n const ratio = item.alignSelf === 'middle' ? 0.5 : 1;\n const delta = isVertical\n ? maxSize - (item.getLayoutRect().width + item.layoutPaddingLeft + item.layoutPaddingRight)\n : maxSize - (item.getLayoutRect().height + item.layoutPaddingTop + item.layoutPaddingBottom);\n\n if (isVertical) {\n item.setLayoutStartPosition({\n x: pos.x + sign * delta * ratio,\n y: pos.y\n });\n } else {\n item.setLayoutStartPosition({\n x: pos.x,\n y: pos.y + sign * delta * ratio\n });\n }\n });\n }\n });\n}\n\nfunction layoutLeftRightStartOrMiddleItems(\n items: ILayoutItem[],\n layout: Layout,\n limitHeight: number,\n isMiddle: boolean,\n position: 'left' | 'right'\n) {\n if (items.length) {\n let maxWidth = 0;\n const isRight = position === 'right';\n const xSign = isRight ? -1 : 1;\n let preX = isRight ? layout.rightCurrent : layout.leftCurrent;\n let preTop = layout.topCurrent;\n\n const allItems: ILayoutItem[][] = [];\n let singleLineItems: ILayoutItem[] = [];\n const maxWidths: number[] = [];\n items.forEach(item => {\n const layoutRect = layout.getItemComputeLayoutRect(item);\n const rect = item.computeBoundsInRect(layoutRect);\n item.setLayoutRect(rect);\n const itemTotalHeight = rect.height + item.layoutPaddingTop + item.layoutPaddingBottom;\n const itemTotalWidth = rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;\n const itemOffsetX = isRight ? -rect.width - item.layoutPaddingRight : item.layoutPaddingLeft;\n item.setLayoutStartPosition({\n x: preX + item.layoutOffsetX + itemOffsetX,\n y: preTop + item.layoutOffsetY + item.layoutPaddingTop\n });\n\n preTop += itemTotalHeight;\n if (preTop > limitHeight && singleLineItems.length) {\n maxWidths.push(maxWidth);\n preX += xSign * maxWidth;\n maxWidth = itemTotalWidth;\n preTop = layout.topCurrent + itemTotalHeight;\n\n item.setLayoutStartPosition({\n x: preX + item.layoutOffsetX + itemOffsetX,\n y: layout.topCurrent + item.layoutOffsetY + item.layoutPaddingTop\n });\n allItems.push(singleLineItems);\n singleLineItems = [item];\n } else {\n maxWidth = Math.max(maxWidth, itemTotalWidth);\n singleLineItems.push(item);\n }\n });\n maxWidths.push(maxWidth);\n allItems.push(singleLineItems);\n\n alignSelfOfItems(allItems, true, maxWidths, xSign);\n\n if (isMiddle) {\n adjustItemsToCenter(allItems, true, limitHeight);\n }\n\n if (isRight) {\n layout.rightCurrent = preX + xSign * maxWidth;\n } else {\n layout.leftCurrent = preX + xSign * maxWidth;\n }\n }\n}\n\nfunction layoutLeftRightEndItems(items: ILayoutItem[], layout: Layout, limitWidth: number, position: 'left' | 'right') {\n if (items.length) {\n let maxWidth = 0;\n const isRight = position === 'right';\n const xSign = isRight ? -1 : 1;\n let preX = isRight ? layout.rightCurrent : layout.leftCurrent;\n let preBottom = layout.bottomCurrent;\n\n const allItems: ILayoutItem[][] = [];\n let singleLineItems: ILayoutItem[] = [];\n const maxWidths: number[] = [];\n items.forEach(item => {\n const layoutRect = layout.getItemComputeLayoutRect(item);\n const rect = item.computeBoundsInRect(layoutRect);\n item.setLayoutRect(rect);\n const itemTotalHeight = rect.height + item.layoutPaddingTop + item.layoutPaddingBottom;\n const itemTotalWidth = rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;\n const itemOffsetX = isRight ? -rect.width - item.layoutPaddingRight : item.layoutPaddingLeft;\n\n if (preBottom < itemTotalHeight && singleLineItems.length) {\n maxWidths.push(maxWidth);\n preX += xSign * maxWidth;\n maxWidth = itemTotalWidth;\n preBottom = layout.bottomCurrent;\n\n item.setLayoutStartPosition({\n x: preX + item.layoutOffsetX + itemOffsetX,\n y: preBottom + item.layoutOffsetY - rect.height - item.layoutPaddingBottom\n });\n allItems.push(singleLineItems);\n singleLineItems = [item];\n } else {\n item.setLayoutStartPosition({\n x: preX + item.layoutOffsetX + itemOffsetX,\n y: preBottom + item.layoutOffsetY - rect.height - item.layoutPaddingBottom\n });\n maxWidth = Math.max(maxWidth, itemTotalWidth);\n preBottom -= itemTotalHeight;\n singleLineItems.push(item);\n }\n });\n maxWidths.push(maxWidth);\n allItems.push(singleLineItems);\n\n alignSelfOfItems(allItems, true, maxWidths, xSign);\n\n if (isRight) {\n layout.rightCurrent = preX + xSign * maxWidth;\n } else {\n layout.leftCurrent = preX + xSign * maxWidth;\n }\n }\n}\n\nfunction layoutTopBottomStartOrMiddleItems(\n items: ILayoutItem[],\n layout: Layout,\n limitWidth: number,\n isMiddle: boolean,\n position: 'top' | 'bottom'\n) {\n if (items.length) {\n const isTop = position === 'top';\n const ySign = isTop ? 1 : -1;\n let maxHeight = 0;\n let preLeft = layout.leftCurrent;\n let preY = isTop ? layout.topCurrent : layout.bottomCurrent;\n const allItems: ILayoutItem[][] = [];\n let singleLineItems: ILayoutItem[] = [];\n const maxHeights: number[] = [];\n\n items.forEach(item => {\n const layoutRect = layout.getItemComputeLayoutRect(item);\n const rect = item.computeBoundsInRect(layoutRect);\n item.setLayoutRect(rect);\n const itemTotalHeight = rect.height + item.layoutPaddingTop + item.layoutPaddingBottom;\n const itemTotalWidth = rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;\n const itemOffsetY = isTop ? item.layoutPaddingTop : -rect.height - item.layoutPaddingBottom;\n item.setLayoutStartPosition({\n x: preLeft + item.layoutOffsetX + item.layoutPaddingLeft,\n y: preY + item.layoutOffsetY + itemOffsetY\n });\n\n preLeft += itemTotalWidth;\n if (preLeft > limitWidth && singleLineItems.length) {\n maxHeights.push(maxHeight);\n preLeft = layout.leftCurrent + itemTotalWidth;\n preY += ySign * maxHeight;\n maxHeight = itemTotalHeight;\n item.setLayoutStartPosition({\n x: layout.leftCurrent + item.layoutOffsetX + item.layoutPaddingLeft,\n y: preY + item.layoutOffsetY + itemOffsetY\n });\n allItems.push(singleLineItems);\n singleLineItems = [item];\n } else {\n maxHeight = Math.max(maxHeight, itemTotalHeight);\n singleLineItems.push(item);\n }\n });\n maxHeights.push(maxHeight);\n allItems.push(singleLineItems);\n\n alignSelfOfItems(allItems, false, maxHeights, ySign);\n\n if (isMiddle) {\n adjustItemsToCenter(allItems, false, limitWidth);\n }\n\n if (isTop) {\n layout.topCurrent = preY + ySign * maxHeight;\n } else {\n layout.bottomCurrent = preY + ySign * maxHeight;\n }\n }\n}\n\nfunction layoutTopBottomEndItems(items: ILayoutItem[], layout: Layout, limitWidth: number, position: 'top' | 'bottom') {\n if (items.length) {\n const isTop = position === 'top';\n const ySign = isTop ? 1 : -1;\n let maxHeight = 0;\n let preRight = layout.rightCurrent;\n let preY = isTop ? layout.topCurrent : layout.bottomCurrent;\n\n const allItems: ILayoutItem[][] = [];\n let singleLineItems: ILayoutItem[] = [];\n const maxHeights: number[] = [];\n\n items.forEach(item => {\n const layoutRect = layout.getItemComputeLayoutRect(item);\n const rect = item.computeBoundsInRect(layoutRect);\n item.setLayoutRect(rect);\n const itemTotalHeight = rect.height + item.layoutPaddingTop + item.layoutPaddingBottom;\n const itemTotalWidth = rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;\n const itemOffsetY = isTop ? item.layoutPaddingTop : -rect.height - item.layoutPaddingBottom;\n\n if (preRight < itemTotalWidth && singleLineItems.length) {\n preRight = layout.rightCurrent;\n preY += ySign * maxHeight;\n maxHeight = itemTotalHeight;\n\n item.setLayoutStartPosition({\n x: layout.rightCurrent + item.layoutOffsetX - rect.width - item.layoutPaddingRight,\n y: preY + item.layoutOffsetY + itemOffsetY\n });\n allItems.push(singleLineItems);\n singleLineItems = [item];\n } else {\n singleLineItems.push(item);\n item.setLayoutStartPosition({\n x: preRight + item.layoutOffsetX - rect.width - item.layoutPaddingRight,\n y: preY + item.layoutOffsetY + itemOffsetY\n });\n maxHeight = Math.max(maxHeight, itemTotalHeight);\n preRight -= itemTotalWidth;\n }\n });\n maxHeights.push(maxHeight);\n allItems.push(singleLineItems);\n\n alignSelfOfItems(allItems, false, maxHeights, ySign);\n\n if (isTop) {\n layout.topCurrent = preY + ySign * maxHeight;\n } else {\n layout.bottomCurrent = preY + ySign * maxHeight;\n }\n }\n}\n\nexport function layoutLeftInlineItems(items: ILayoutItem[], layout: Layout, limitHeight: number) {\n const { startItems, middleItems, endItems } = getPositionItems(items);\n if (startItems.length) {\n layoutLeftRightStartOrMiddleItems(startItems, layout, limitHeight, false, 'left');\n }\n\n if (middleItems.length) {\n layoutLeftRightStartOrMiddleItems(middleItems, layout, limitHeight, true, 'left');\n }\n\n if (endItems.length) {\n layoutLeftRightEndItems(endItems, layout, limitHeight, 'left');\n }\n}\n\nexport function layoutRightInlineItems(items: ILayoutItem[], layout: Layout, limitHeight: number) {\n const { startItems, middleItems, endItems } = getPositionItems(items);\n\n if (startItems.length) {\n layoutLeftRightStartOrMiddleItems(startItems, layout, limitHeight, false, 'right');\n }\n\n if (middleItems.length) {\n layoutLeftRightStartOrMiddleItems(middleItems, layout, limitHeight, true, 'right');\n }\n\n if (endItems.length) {\n layoutLeftRightEndItems(endItems, layout, limitHeight, 'right');\n }\n}\n\nexport function layoutTopInlineItems(items: ILayoutItem[], layout: Layout, limitWidth: number) {\n const { startItems, middleItems, endItems } = getPositionItems(items);\n\n if (startItems.length) {\n layoutTopBottomStartOrMiddleItems(startItems, layout, limitWidth, false, 'top');\n }\n\n if (middleItems.length) {\n layoutTopBottomStartOrMiddleItems(middleItems, layout, limitWidth, true, 'top');\n }\n\n if (endItems.length) {\n layoutTopBottomEndItems(endItems, layout, limitWidth, 'top');\n }\n}\n\nexport function layoutBottomInlineItems(items: ILayoutItem[], layout: Layout, limitWidth: number) {\n const { startItems, middleItems, endItems } = getPositionItems(items);\n\n if (startItems.length) {\n layoutTopBottomStartOrMiddleItems(startItems, layout, limitWidth, false, 'bottom');\n }\n\n if (middleItems.length) {\n layoutTopBottomStartOrMiddleItems(middleItems, layout, limitWidth, true, 'bottom');\n }\n\n if (endItems.length) {\n layoutTopBottomEndItems(endItems, layout, limitWidth, 'bottom');\n }\n}\n"]}
@@ -89,8 +89,6 @@ export interface ILayoutModel extends IModel {
89
89
  setLayoutStartPosition: (pos: Partial<IPoint>) => void;
90
90
  getLayoutRect: () => ILayoutRect;
91
91
  setLayoutRect: (rect: Partial<ILayoutRect>, levelMap?: Partial<ILayoutRect>) => void;
92
- getLayoutPositionExcludeIndent: () => IPoint;
93
- getLayoutRectExcludeIndent: () => ILayoutRect;
94
92
  getLastComputeOutBounds: () => IBoundsLike;
95
93
  getBoundsInRect: (rect: ILayoutRect, fullRect: ILayoutRect) => IBoundsLike;
96
94
  afterSetLayoutStartPoint: (pos: ILayoutPoint) => void;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/model/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\nimport type { DataSet, DataView } from '@visactor/vdataset';\nimport type { IEvent, IEventDispatcher } from '../event/interface';\nimport type { IMark, IMarkRaw, IMarkStyle, MarkTypeEnum } from '../mark/interface';\nimport type { RenderMode } from '../typings/spec/common';\nimport type { VChart } from '../vchart-all';\nimport type { IData } from '@visactor/vgrammar-core';\nimport type { StringOrNumber } from '../typings/common';\nimport type { IGroupMarkSpec, ConvertToMarkStyleSpec, ICommonSpec } from '../typings/visual';\nimport type { IRect } from '../typings/space';\nimport type { IPoint, CoordinateType } from '../typings/coordinate';\nimport type { ITheme } from '../theme';\nimport type { StateValueType } from '../typings/spec';\nimport type { ICompilable, ICompilableInitOption } from '../compile/interface';\nimport type { ICompilableData } from '../compile/data';\nimport type { IGlobalScale } from '../scale/interface';\nimport type { IChart, IChartSpecInfo } from '../chart/interface';\nimport type { IThemeColorScheme } from '../theme/color-scheme/interface';\nimport type { ILayoutItem, ILayoutItemSpec } from '../layout/interface';\nimport type { ILayoutPoint, ILayoutRect } from '../typings/layout';\nimport type { ComponentTypeEnum } from '../component/interface';\nimport type { SeriesMarkNameEnum, SeriesTypeEnum } from '../series';\nimport type { TransformedLabelSpec } from '../component/label';\n\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelInitOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelLayoutOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelEvaluateOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelRenderOption {}\n\nexport interface IEffect {\n [key: string]: (e?: any) => any;\n}\n\nexport interface IMarkTreeGroup extends Partial<IMarkStyle<IGroupMarkSpec>> {\n // 必须要有名字\n type: 'group';\n name: string;\n marks: (IMarkTreeGroup | IMark)[];\n // TODO: 这里要不要支持复杂场景,有图形组合的场景,用自定义mark?\n // from?: IData;\n}\n\nexport type IMarkTree = IMarkTreeGroup | IMark | (IMarkTreeGroup | IMark)[];\n\nexport interface IUpdateSpecResult {\n change: boolean;\n reMake: boolean;\n reRender?: boolean;\n reSize?: boolean;\n // TODO: compile 的判断应不应该出现在这里?\n reCompile?: boolean;\n}\n\nexport interface IModelProduct {\n srData: IData;\n}\n\nexport interface IModel extends ICompilable {\n readonly modelType: string;\n readonly type: string;\n readonly specKey: string;\n readonly transformerConstructor: new (option: IBaseModelSpecTransformerOption) => IBaseModelSpecTransformer;\n\n readonly id: number;\n\n readonly userId?: StringOrNumber;\n\n // 事件\n readonly event: IEvent;\n\n // 副作用\n readonly effect: IEffect;\n\n coordinate?: CoordinateType;\n\n // 布局\n layout?: ILayoutItem;\n\n /** 是否可见 */\n getVisible: () => boolean;\n\n // 初始化参数\n getOption: () => IModelOption;\n\n getMarks: () => IMark[];\n getMarkNameMap: () => Record<string, IMark>;\n getMarkInfoList: () => IModelMarkInfo[];\n\n getData: () => ICompilableData;\n\n getChart: () => IChart;\n\n //生命周期\n // 创建模块自身内容,设置自身属性\n created: () => void;\n // 用来处理与其他图表模块的联系\n init: (option: IModelInitOption) => void;\n /** updateSpec 或者切换主题后,根据新 spec 执行的初始化过程 */\n reInit: (spec?: any) => void;\n beforeRelease: () => void;\n\n onEvaluateEnd: (ctx: IModelEvaluateOption) => void;\n onRender: (ctx: IModelRenderOption) => void;\n onDataUpdate: () => void;\n\n updateSpec: (spec: any, totalSpec?: any) => IUpdateSpecResult;\n getSpec?: () => any;\n getSpecIndex: () => number;\n getSpecPath: () => Array<string | number>;\n\n //布局周期\n onLayoutStart: (layoutRect: IRect, viewRect: ILayoutRect, ctx: IModelLayoutOption) => void;\n onLayoutEnd: (ctx: IModelLayoutOption) => void;\n\n getColorScheme: () => IThemeColorScheme | undefined;\n\n setMarkStyle: <T extends ICommonSpec>(\n mark?: IMarkRaw<T>,\n style?: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>,\n state?: StateValueType,\n level?: number\n ) => void;\n\n initMarkStyleWithSpec: (mark?: IMark, spec?: any, key?: string) => void;\n\n getSpecInfo: () => IModelSpecInfo;\n}\n\nexport interface ILayoutModel extends IModel {\n // 布局相关\n getLayoutStartPoint: () => IPoint;\n setLayoutStartPosition: (pos: Partial<IPoint>) => void;\n getLayoutRect: () => ILayoutRect;\n setLayoutRect: (rect: Partial<ILayoutRect>, levelMap?: Partial<ILayoutRect>) => void;\n\n // 得到排除锁进后的布局起点\n getLayoutPositionExcludeIndent: () => IPoint;\n // 得到排除锁进后的尺寸\n getLayoutRectExcludeIndent: () => ILayoutRect;\n\n getLastComputeOutBounds: () => IBoundsLike;\n\n getBoundsInRect: (rect: ILayoutRect, fullRect: ILayoutRect) => IBoundsLike;\n\n //布局周期\n afterSetLayoutStartPoint: (pos: ILayoutPoint) => void;\n}\n\nexport interface IModelOption extends ICompilableInitOption {\n type: string;\n eventDispatcher: IEventDispatcher;\n dataSet: DataSet;\n map: Map<StringOrNumber, IModel | IMark>;\n mode: RenderMode;\n globalInstance: VChart;\n specIndex?: number;\n specKey?: string;\n specPath?: Array<string | number>;\n specInfoPath?: Array<string | number>;\n\n getTheme?: () => ITheme;\n getSpecInfo?: () => IChartSpecInfo;\n getChartLayoutRect: () => IRect;\n getChartViewRect: () => ILayoutRect;\n\n getChart: () => IChart;\n getSeriesData: (id: StringOrNumber | undefined, index: number | undefined) => DataView | undefined;\n\n globalScale: IGlobalScale;\n animation: boolean;\n /**\n * 错误消息回调函数\n */\n onError: (...args: any[]) => void;\n\n /**\n * 是否关闭交互效果\n */\n disableTriggerEvent?: boolean;\n}\n\nexport interface IModelSpecInfo<T extends Record<string, unknown> = any> {\n /** model 具体类型 */\n type: string | ComponentTypeEnum | SeriesTypeEnum;\n /** model spec */\n spec: T;\n /** 该 spec 在图表 spec 上的路径 */\n specPath?: Array<string | number>;\n /** 该 spec 在图表 spec info 上的路径 */\n specInfoPath?: Array<string | number>;\n /** 该 spec 在父级的索引 */\n specIndex?: number;\n /** model 当前主题 */\n theme?: any;\n}\n\nexport interface IModelConstructor {\n readonly transformerConstructor: new (option: IBaseModelSpecTransformerOption) => IBaseModelSpecTransformer;\n}\n\nexport type ILayoutModelState = {\n layoutUpdateRank: number;\n [key: string]: unknown;\n};\n\n// TODO: 补充model共有配置\nexport type IModelSpec = ILayoutItemSpec & { id?: StringOrNumber };\n\nexport interface IModelMarkInfo {\n /** mark 类型 */\n type: MarkTypeEnum | string | (MarkTypeEnum | string)[];\n /** mark 名称 */\n name: string;\n}\n\nexport interface IBaseModelSpecTransformerOption {\n type: string;\n getTheme: () => ITheme;\n}\n\nexport interface IBaseModelSpecTransformerResult<T, K> {\n spec: T;\n theme: K;\n markLabelSpec?: Partial<Record<SeriesMarkNameEnum, TransformedLabelSpec[]>>;\n}\n\nexport interface IBaseModelSpecTransformer {\n getTheme: (spec: any, chartSpec: any) => any;\n transformSpec: (\n spec: any,\n chartSpec: any,\n chartSpecInfo?: IChartSpecInfo\n ) => IBaseModelSpecTransformerResult<any, any>;\n}\n"]}
1
+ {"version":3,"sources":["../src/model/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\nimport type { DataSet, DataView } from '@visactor/vdataset';\nimport type { IEvent, IEventDispatcher } from '../event/interface';\nimport type { IMark, IMarkRaw, IMarkStyle, MarkTypeEnum } from '../mark/interface';\nimport type { RenderMode } from '../typings/spec/common';\nimport type { VChart } from '../vchart-all';\nimport type { IData } from '@visactor/vgrammar-core';\nimport type { StringOrNumber } from '../typings/common';\nimport type { IGroupMarkSpec, ConvertToMarkStyleSpec, ICommonSpec } from '../typings/visual';\nimport type { IRect } from '../typings/space';\nimport type { IPoint, CoordinateType } from '../typings/coordinate';\nimport type { ITheme } from '../theme';\nimport type { StateValueType } from '../typings/spec';\nimport type { ICompilable, ICompilableInitOption } from '../compile/interface';\nimport type { ICompilableData } from '../compile/data';\nimport type { IGlobalScale } from '../scale/interface';\nimport type { IChart, IChartSpecInfo } from '../chart/interface';\nimport type { IThemeColorScheme } from '../theme/color-scheme/interface';\nimport type { ILayoutItem, ILayoutItemSpec } from '../layout/interface';\nimport type { ILayoutPoint, ILayoutRect } from '../typings/layout';\nimport type { ComponentTypeEnum } from '../component/interface';\nimport type { SeriesMarkNameEnum, SeriesTypeEnum } from '../series';\nimport type { TransformedLabelSpec } from '../component/label';\n\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelInitOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelLayoutOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelEvaluateOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelRenderOption {}\n\nexport interface IEffect {\n [key: string]: (e?: any) => any;\n}\n\nexport interface IMarkTreeGroup extends Partial<IMarkStyle<IGroupMarkSpec>> {\n // 必须要有名字\n type: 'group';\n name: string;\n marks: (IMarkTreeGroup | IMark)[];\n // TODO: 这里要不要支持复杂场景,有图形组合的场景,用自定义mark?\n // from?: IData;\n}\n\nexport type IMarkTree = IMarkTreeGroup | IMark | (IMarkTreeGroup | IMark)[];\n\nexport interface IUpdateSpecResult {\n change: boolean;\n reMake: boolean;\n reRender?: boolean;\n reSize?: boolean;\n // TODO: compile 的判断应不应该出现在这里?\n reCompile?: boolean;\n}\n\nexport interface IModelProduct {\n srData: IData;\n}\n\nexport interface IModel extends ICompilable {\n readonly modelType: string;\n readonly type: string;\n readonly specKey: string;\n readonly transformerConstructor: new (option: IBaseModelSpecTransformerOption) => IBaseModelSpecTransformer;\n\n readonly id: number;\n\n readonly userId?: StringOrNumber;\n\n // 事件\n readonly event: IEvent;\n\n // 副作用\n readonly effect: IEffect;\n\n coordinate?: CoordinateType;\n\n // 布局\n layout?: ILayoutItem;\n\n /** 是否可见 */\n getVisible: () => boolean;\n\n // 初始化参数\n getOption: () => IModelOption;\n\n getMarks: () => IMark[];\n getMarkNameMap: () => Record<string, IMark>;\n getMarkInfoList: () => IModelMarkInfo[];\n\n getData: () => ICompilableData;\n\n getChart: () => IChart;\n\n //生命周期\n // 创建模块自身内容,设置自身属性\n created: () => void;\n // 用来处理与其他图表模块的联系\n init: (option: IModelInitOption) => void;\n /** updateSpec 或者切换主题后,根据新 spec 执行的初始化过程 */\n reInit: (spec?: any) => void;\n beforeRelease: () => void;\n\n onEvaluateEnd: (ctx: IModelEvaluateOption) => void;\n onRender: (ctx: IModelRenderOption) => void;\n onDataUpdate: () => void;\n\n updateSpec: (spec: any, totalSpec?: any) => IUpdateSpecResult;\n getSpec?: () => any;\n getSpecIndex: () => number;\n getSpecPath: () => Array<string | number>;\n\n //布局周期\n onLayoutStart: (layoutRect: IRect, viewRect: ILayoutRect, ctx: IModelLayoutOption) => void;\n onLayoutEnd: (ctx: IModelLayoutOption) => void;\n\n getColorScheme: () => IThemeColorScheme | undefined;\n\n setMarkStyle: <T extends ICommonSpec>(\n mark?: IMarkRaw<T>,\n style?: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>,\n state?: StateValueType,\n level?: number\n ) => void;\n\n initMarkStyleWithSpec: (mark?: IMark, spec?: any, key?: string) => void;\n\n getSpecInfo: () => IModelSpecInfo;\n}\n\nexport interface ILayoutModel extends IModel {\n // 布局相关\n getLayoutStartPoint: () => IPoint;\n setLayoutStartPosition: (pos: Partial<IPoint>) => void;\n getLayoutRect: () => ILayoutRect;\n setLayoutRect: (rect: Partial<ILayoutRect>, levelMap?: Partial<ILayoutRect>) => void;\n\n getLastComputeOutBounds: () => IBoundsLike;\n\n getBoundsInRect: (rect: ILayoutRect, fullRect: ILayoutRect) => IBoundsLike;\n\n //布局周期\n afterSetLayoutStartPoint: (pos: ILayoutPoint) => void;\n}\n\nexport interface IModelOption extends ICompilableInitOption {\n type: string;\n eventDispatcher: IEventDispatcher;\n dataSet: DataSet;\n map: Map<StringOrNumber, IModel | IMark>;\n mode: RenderMode;\n globalInstance: VChart;\n specIndex?: number;\n specKey?: string;\n specPath?: Array<string | number>;\n specInfoPath?: Array<string | number>;\n\n getTheme?: () => ITheme;\n getSpecInfo?: () => IChartSpecInfo;\n getChartLayoutRect: () => IRect;\n getChartViewRect: () => ILayoutRect;\n\n getChart: () => IChart;\n getSeriesData: (id: StringOrNumber | undefined, index: number | undefined) => DataView | undefined;\n\n globalScale: IGlobalScale;\n animation: boolean;\n /**\n * 错误消息回调函数\n */\n onError: (...args: any[]) => void;\n\n /**\n * 是否关闭交互效果\n */\n disableTriggerEvent?: boolean;\n}\n\nexport interface IModelSpecInfo<T extends Record<string, unknown> = any> {\n /** model 具体类型 */\n type: string | ComponentTypeEnum | SeriesTypeEnum;\n /** model spec */\n spec: T;\n /** 该 spec 在图表 spec 上的路径 */\n specPath?: Array<string | number>;\n /** 该 spec 在图表 spec info 上的路径 */\n specInfoPath?: Array<string | number>;\n /** 该 spec 在父级的索引 */\n specIndex?: number;\n /** model 当前主题 */\n theme?: any;\n}\n\nexport interface IModelConstructor {\n readonly transformerConstructor: new (option: IBaseModelSpecTransformerOption) => IBaseModelSpecTransformer;\n}\n\nexport type ILayoutModelState = {\n layoutUpdateRank: number;\n [key: string]: unknown;\n};\n\n// TODO: 补充model共有配置\nexport type IModelSpec = ILayoutItemSpec & { id?: StringOrNumber };\n\nexport interface IModelMarkInfo {\n /** mark 类型 */\n type: MarkTypeEnum | string | (MarkTypeEnum | string)[];\n /** mark 名称 */\n name: string;\n}\n\nexport interface IBaseModelSpecTransformerOption {\n type: string;\n getTheme: () => ITheme;\n}\n\nexport interface IBaseModelSpecTransformerResult<T, K> {\n spec: T;\n theme: K;\n markLabelSpec?: Partial<Record<SeriesMarkNameEnum, TransformedLabelSpec[]>>;\n}\n\nexport interface IBaseModelSpecTransformer {\n getTheme: (spec: any, chartSpec: any) => any;\n transformSpec: (\n spec: any,\n chartSpec: any,\n chartSpecInfo?: IChartSpecInfo\n ) => IBaseModelSpecTransformerResult<any, any>;\n}\n"]}
@@ -23,14 +23,6 @@ export declare abstract class LayoutModel<T extends IModelSpec> extends BaseMode
23
23
  onLayoutEnd(ctx: any): void;
24
24
  afterSetLayoutStartPoint(_pos: ILayoutPoint): void;
25
25
  protected _forceLayout(): void;
26
- getLayoutPositionExcludeIndent(): {
27
- x: number;
28
- y: number;
29
- };
30
- getLayoutRectExcludeIndent(): {
31
- width: number;
32
- height: number;
33
- };
34
26
  getLayoutStartPoint(): IPoint;
35
27
  setLayoutStartPosition(pos: Partial<IPoint>): any;
36
28
  getLayoutRect(): ILayoutRect;
@@ -56,21 +56,6 @@ class LayoutModel extends base_model_1.BaseModel {
56
56
  var _a;
57
57
  this._isLayout || (this._forceLayoutTag = !0, null === (_a = this._option.globalInstance.getChart()) || void 0 === _a || _a.setLayoutTag(!0));
58
58
  }
59
- getLayoutPositionExcludeIndent() {
60
- let {x: x, y: y} = this.getLayoutStartPoint();
61
- return x += this._layout.indent.left, y += this._layout.indent.top, {
62
- x: x,
63
- y: y
64
- };
65
- }
66
- getLayoutRectExcludeIndent() {
67
- let {width: width, height: height} = this.getLayoutRect();
68
- return width -= this._layout.indent.left + this._layout.indent.right, height -= this._layout.indent.top + this._layout.indent.bottom,
69
- {
70
- width: width,
71
- height: height
72
- };
73
- }
74
59
  getLayoutStartPoint() {
75
60
  return this._layout ? this._layout.getLayoutStartPoint() : this._layoutStartPos;
76
61
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/model/layout-model.ts"],"names":[],"mappings":"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","file":"layout-model.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isEqual, merge } from '@visactor/vutils';\nimport type { ILayoutItem } from '../layout/interface';\nimport type { IOrientType, IPolarOrientType, IRect } from '../typings/space';\nimport { BaseModel } from './base-model';\nimport type { IModelSpec } from './interface';\nimport { LayoutItem } from '../layout/layout-item';\nimport type { IPoint } from '../typings/coordinate';\nimport type { ILayoutType, ILayoutPoint, ILayoutRect } from '../typings/layout';\n\nexport abstract class LayoutModel<T extends IModelSpec> extends BaseModel<T> {\n protected layoutType: ILayoutType | 'none' = 'normal';\n protected layoutLevel?: number = 0;\n protected layoutZIndex: number = 0;\n layoutClip: boolean;\n get layoutOrient() {\n return this._orient as IOrientType;\n }\n\n set layoutOrient(v: IOrientType) {\n this._orient = v;\n this._layout && (this._layout.layoutOrient = v);\n }\n\n protected _forceLayoutTag: boolean = false;\n protected _layout: ILayoutItem = null;\n protected _orient?: IPolarOrientType | IOrientType = null;\n\n protected _layoutRect: ILayoutRect = { width: 0, height: 0 };\n protected _layoutStartPos: IPoint = { x: 0, y: 0 };\n\n // TODO: 有些hack,这个tag是为了避免布局逻辑中,轴的数据变化,又由数据变化触发重新布局\n protected _isLayout: boolean = true;\n\n initLayout() {\n if (this.layoutType === 'none') {\n return;\n }\n this._layout = new LayoutItem(this, {\n layoutType: this.layoutType,\n layoutLevel: this.layoutLevel,\n layoutOrient: this._orient as IOrientType,\n transformLayoutRect: this._transformLayoutRect,\n transformLayoutPosition: this._transformLayoutPosition\n });\n if (this._orient && this._orient !== 'radius' && this._orient !== 'angle' && this.layout) {\n this._layout.layoutOrient = this._orient;\n }\n }\n\n onLayoutStart(layoutRect: IRect, viewRect: ILayoutRect, ctx: any): void {\n this._isLayout = true;\n super.onLayoutStart(layoutRect, viewRect, ctx);\n }\n onLayoutEnd(ctx: any): void {\n super.onLayoutEnd(ctx);\n // diff layoutRect\n this.updateLayoutAttribute();\n const layoutRect = this.getLayoutRect();\n if (this._forceLayoutTag || !isEqual(this._lastLayoutRect, layoutRect)) {\n this._lastLayoutRect = { ...layoutRect };\n }\n this._forceLayoutTag = false;\n this._isLayout = false;\n }\n\n afterSetLayoutStartPoint(_pos: ILayoutPoint) {\n // do nothing\n }\n\n protected _forceLayout() {\n if (this._isLayout) {\n return;\n }\n this._forceLayoutTag = true;\n this._option.globalInstance.getChart()?.setLayoutTag(true);\n }\n\n // 布局相关\n // 得到排除锁进后的布局起点\n getLayoutPositionExcludeIndent() {\n let { x, y } = this.getLayoutStartPoint();\n x += this._layout.indent.left;\n y += this._layout.indent.top;\n return { x, y };\n }\n // 得到排除锁进后的尺寸\n getLayoutRectExcludeIndent() {\n let { width, height } = this.getLayoutRect();\n width -= this._layout.indent.left + this._layout.indent.right;\n height -= this._layout.indent.top + this._layout.indent.bottom;\n return { width, height };\n }\n\n getLayoutStartPoint() {\n return this._layout ? this._layout.getLayoutStartPoint() : this._layoutStartPos;\n }\n setLayoutStartPosition(pos: Partial<IPoint>) {\n return this._layout\n ? this._layout.setLayoutStartPosition(pos)\n : (this._layoutStartPos = merge(this._layoutStartPos, pos));\n }\n getLayoutRect() {\n return this._layout ? this._layout.getLayoutRect() : this._layoutRect;\n }\n setLayoutRect(rect: Partial<ILayoutRect>, levelMap?: Partial<ILayoutRect>) {\n return this._layout ? this._layout.setLayoutRect(rect) : (this._lastLayoutRect = merge(this._layoutRect, rect));\n }\n\n getLastComputeOutBounds() {\n return this._layout?.getLastComputeOutBounds();\n }\n\n getGraphicBounds = () => {\n if (this._layout) {\n return {\n x1: this._layout.getLayoutStartPoint().x,\n y1: this._layout.getLayoutStartPoint().y,\n x2: this._layout.getLayoutStartPoint().x + this._layout.getLayoutRect().width,\n y2: this._layout.getLayoutStartPoint().y + this._layout.getLayoutRect().height\n };\n }\n return { x1: 0, x2: 0, y1: 0, y2: 0 };\n };\n\n setAttrFromSpec(): void {\n super.setAttrFromSpec();\n this.layoutClip = this._spec.clip ?? this.layoutClip;\n this.layoutZIndex = this._spec.zIndex ?? this.layoutZIndex;\n this.layoutType = this._spec.layoutType ?? this.layoutType;\n }\n\n abstract getBoundsInRect(rect: ILayoutRect, fullRect: ILayoutRect): IBoundsLike;\n\n protected _transformLayoutRect: (rect: ILayoutRect) => ILayoutRect = null;\n protected _transformLayoutPosition: (rect: Partial<IPoint>) => Partial<IPoint> = null;\n}\n"]}
1
+ {"version":3,"sources":["../src/model/layout-model.ts"],"names":[],"mappings":";;;AAEA,6CAAkD;AAGlD,6CAAyC;AAEzC,uDAAmD;AAInD,MAAsB,WAAkC,SAAQ,sBAAY;IAA5E;;QACY,eAAU,GAAyB,QAAQ,CAAC;QAC5C,gBAAW,GAAY,CAAC,CAAC;QACzB,iBAAY,GAAW,CAAC,CAAC;QAWzB,oBAAe,GAAY,KAAK,CAAC;QACjC,YAAO,GAAgB,IAAI,CAAC;QAC5B,YAAO,GAAoC,IAAI,CAAC;QAEhD,gBAAW,GAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACnD,oBAAe,GAAW,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAGzC,cAAS,GAAY,IAAI,CAAC;QAkEpC,qBAAgB,GAAG,GAAG,EAAE;YACtB,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,OAAO;oBACL,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;oBACxC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;oBACxC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,KAAK;oBAC7E,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM;iBAC/E,CAAC;aACH;YACD,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QACxC,CAAC,CAAC;QAWQ,yBAAoB,GAAuC,IAAI,CAAC;QAChE,6BAAwB,GAA+C,IAAI,CAAC;IACxF,CAAC;IA1GC,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,OAAsB,CAAC;IACrC,CAAC;IAED,IAAI,YAAY,CAAC,CAAc;QAC7B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;IAClD,CAAC;IAYD,UAAU;QACR,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,EAAE;YAC9B,OAAO;SACR;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,wBAAU,CAAC,IAAI,EAAE;YAClC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,OAAsB;YACzC,mBAAmB,EAAE,IAAI,CAAC,oBAAoB;YAC9C,uBAAuB,EAAE,IAAI,CAAC,wBAAwB;SACvD,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE;YACxF,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC;SAC1C;IACH,CAAC;IAED,aAAa,CAAC,UAAiB,EAAE,QAAqB,EAAE,GAAQ;QAC9D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IACjD,CAAC;IACD,WAAW,CAAC,GAAQ;QAClB,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAEvB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,IAAA,gBAAO,EAAC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE;YACtE,IAAI,CAAC,eAAe,qBAAQ,UAAU,CAAE,CAAC;SAC1C;QACD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,wBAAwB,CAAC,IAAkB;IAE3C,CAAC;IAES,YAAY;;QACpB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO;SACR;QACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,MAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,0CAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;IAGD,mBAAmB;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;IAClF,CAAC;IACD,sBAAsB,CAAC,GAAoB;QACzC,OAAO,IAAI,CAAC,OAAO;YACjB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,GAAG,CAAC;YAC1C,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG,IAAA,cAAK,EAAC,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC;IAChE,CAAC;IACD,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;IACxE,CAAC;IACD,aAAa,CAAC,IAA0B,EAAE,QAA+B;QACvE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG,IAAA,cAAK,EAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;IAClH,CAAC;IAED,uBAAuB;;QACrB,OAAO,MAAA,IAAI,CAAC,OAAO,0CAAE,uBAAuB,EAAE,CAAC;IACjD,CAAC;IAcD,eAAe;;QACb,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,IAAI,mCAAI,IAAI,CAAC,UAAU,CAAC;QACrD,IAAI,CAAC,YAAY,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,MAAM,mCAAI,IAAI,CAAC,YAAY,CAAC;QAC3D,IAAI,CAAC,UAAU,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,UAAU,mCAAI,IAAI,CAAC,UAAU,CAAC;IAC7D,CAAC;CAMF;AA/GD,kCA+GC","file":"layout-model.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isEqual, merge } from '@visactor/vutils';\nimport type { ILayoutItem } from '../layout/interface';\nimport type { IOrientType, IPolarOrientType, IRect } from '../typings/space';\nimport { BaseModel } from './base-model';\nimport type { IModelSpec } from './interface';\nimport { LayoutItem } from '../layout/layout-item';\nimport type { IPoint } from '../typings/coordinate';\nimport type { ILayoutType, ILayoutPoint, ILayoutRect } from '../typings/layout';\n\nexport abstract class LayoutModel<T extends IModelSpec> extends BaseModel<T> {\n protected layoutType: ILayoutType | 'none' = 'normal';\n protected layoutLevel?: number = 0;\n protected layoutZIndex: number = 0;\n layoutClip: boolean;\n get layoutOrient() {\n return this._orient as IOrientType;\n }\n\n set layoutOrient(v: IOrientType) {\n this._orient = v;\n this._layout && (this._layout.layoutOrient = v);\n }\n\n protected _forceLayoutTag: boolean = false;\n protected _layout: ILayoutItem = null;\n protected _orient?: IPolarOrientType | IOrientType = null;\n\n protected _layoutRect: ILayoutRect = { width: 0, height: 0 };\n protected _layoutStartPos: IPoint = { x: 0, y: 0 };\n\n // TODO: 有些hack,这个tag是为了避免布局逻辑中,轴的数据变化,又由数据变化触发重新布局\n protected _isLayout: boolean = true;\n\n initLayout() {\n if (this.layoutType === 'none') {\n return;\n }\n this._layout = new LayoutItem(this, {\n layoutType: this.layoutType,\n layoutLevel: this.layoutLevel,\n layoutOrient: this._orient as IOrientType,\n transformLayoutRect: this._transformLayoutRect,\n transformLayoutPosition: this._transformLayoutPosition\n });\n if (this._orient && this._orient !== 'radius' && this._orient !== 'angle' && this.layout) {\n this._layout.layoutOrient = this._orient;\n }\n }\n\n onLayoutStart(layoutRect: IRect, viewRect: ILayoutRect, ctx: any): void {\n this._isLayout = true;\n super.onLayoutStart(layoutRect, viewRect, ctx);\n }\n onLayoutEnd(ctx: any): void {\n super.onLayoutEnd(ctx);\n // diff layoutRect\n this.updateLayoutAttribute();\n const layoutRect = this.getLayoutRect();\n if (this._forceLayoutTag || !isEqual(this._lastLayoutRect, layoutRect)) {\n this._lastLayoutRect = { ...layoutRect };\n }\n this._forceLayoutTag = false;\n this._isLayout = false;\n }\n\n afterSetLayoutStartPoint(_pos: ILayoutPoint) {\n // do nothing\n }\n\n protected _forceLayout() {\n if (this._isLayout) {\n return;\n }\n this._forceLayoutTag = true;\n this._option.globalInstance.getChart()?.setLayoutTag(true);\n }\n\n // 布局相关\n getLayoutStartPoint() {\n return this._layout ? this._layout.getLayoutStartPoint() : this._layoutStartPos;\n }\n setLayoutStartPosition(pos: Partial<IPoint>) {\n return this._layout\n ? this._layout.setLayoutStartPosition(pos)\n : (this._layoutStartPos = merge(this._layoutStartPos, pos));\n }\n getLayoutRect() {\n return this._layout ? this._layout.getLayoutRect() : this._layoutRect;\n }\n setLayoutRect(rect: Partial<ILayoutRect>, levelMap?: Partial<ILayoutRect>) {\n return this._layout ? this._layout.setLayoutRect(rect) : (this._lastLayoutRect = merge(this._layoutRect, rect));\n }\n\n getLastComputeOutBounds() {\n return this._layout?.getLastComputeOutBounds();\n }\n\n getGraphicBounds = () => {\n if (this._layout) {\n return {\n x1: this._layout.getLayoutStartPoint().x,\n y1: this._layout.getLayoutStartPoint().y,\n x2: this._layout.getLayoutStartPoint().x + this._layout.getLayoutRect().width,\n y2: this._layout.getLayoutStartPoint().y + this._layout.getLayoutRect().height\n };\n }\n return { x1: 0, x2: 0, y1: 0, y2: 0 };\n };\n\n setAttrFromSpec(): void {\n super.setAttrFromSpec();\n this.layoutClip = this._spec.clip ?? this.layoutClip;\n this.layoutZIndex = this._spec.zIndex ?? this.layoutZIndex;\n this.layoutType = this._spec.layoutType ?? this.layoutType;\n }\n\n abstract getBoundsInRect(rect: ILayoutRect, fullRect: ILayoutRect): IBoundsLike;\n\n protected _transformLayoutRect: (rect: ILayoutRect) => ILayoutRect = null;\n protected _transformLayoutPosition: (rect: Partial<IPoint>) => Partial<IPoint> = null;\n}\n"]}
@@ -267,7 +267,7 @@ class BarSeries extends cartesian_1.CartesianSeries {
267
267
  }
268
268
  compile() {
269
269
  if (super.compile(), this._spec.sampling) {
270
- const {width: width, height: height} = this._region.getLayoutRectExcludeIndent(), samplingTrans = [], fieldsY = this._fieldY, fieldsX = this._fieldX;
270
+ const {width: width, height: height} = this._region.getLayoutRect(), samplingTrans = [], fieldsY = this._fieldY, fieldsX = this._fieldX;
271
271
  samplingTrans.push({
272
272
  type: "sampling",
273
273
  size: this._direction === space_1.Direction.vertical ? width : height,