@visactor/vtable 0.25.2 → 0.25.3

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 (149) hide show
  1. package/cjs/ListTable.js +5 -5
  2. package/cjs/ListTable.js.map +1 -1
  3. package/cjs/PivotChart.js +3 -3
  4. package/cjs/PivotChart.js.map +1 -1
  5. package/cjs/PivotTable.js +3 -3
  6. package/cjs/PivotTable.js.map +1 -1
  7. package/cjs/components/axis/axis.js +2 -2
  8. package/cjs/components/axis/axis.js.map +1 -1
  9. package/cjs/core/BaseTable.js +1 -1
  10. package/cjs/core/BaseTable.js.map +1 -1
  11. package/cjs/index.d.ts +1 -1
  12. package/cjs/index.js +1 -1
  13. package/cjs/index.js.map +1 -1
  14. package/cjs/layout/chart-helper/get-chart-spec.js +2 -2
  15. package/cjs/layout/chart-helper/get-chart-spec.js.map +1 -1
  16. package/cjs/vrender.js.map +1 -1
  17. package/cjs/vutil-extension-temp/algorithm/binary-search.d.ts +2 -0
  18. package/cjs/vutil-extension-temp/algorithm/binary-search.js +21 -0
  19. package/cjs/vutil-extension-temp/algorithm/binary-search.js.map +1 -0
  20. package/cjs/vutil-extension-temp/algorithm/index.d.ts +1 -0
  21. package/cjs/vutil-extension-temp/algorithm/index.js +21 -0
  22. package/cjs/vutil-extension-temp/algorithm/index.js.map +1 -0
  23. package/cjs/vutil-extension-temp/index.d.ts +4 -0
  24. package/cjs/vutil-extension-temp/index.js +22 -0
  25. package/cjs/vutil-extension-temp/index.js.map +1 -0
  26. package/cjs/vutil-extension-temp/spec/clone-deep.d.ts +1 -0
  27. package/cjs/vutil-extension-temp/spec/clone-deep.js +27 -0
  28. package/cjs/vutil-extension-temp/spec/clone-deep.js.map +1 -0
  29. package/cjs/vutil-extension-temp/spec/common.d.ts +3 -0
  30. package/cjs/vutil-extension-temp/spec/common.js +23 -0
  31. package/cjs/vutil-extension-temp/spec/common.js.map +1 -0
  32. package/cjs/vutil-extension-temp/spec/index.d.ts +3 -0
  33. package/cjs/vutil-extension-temp/spec/index.js +22 -0
  34. package/cjs/vutil-extension-temp/spec/index.js.map +1 -0
  35. package/cjs/vutil-extension-temp/spec/merge-spec.d.ts +5 -0
  36. package/cjs/vutil-extension-temp/spec/merge-spec.js +69 -0
  37. package/cjs/vutil-extension-temp/spec/merge-spec.js.map +1 -0
  38. package/cjs/vutil-extension-temp/transform/tick-data/config.d.ts +1 -0
  39. package/cjs/vutil-extension-temp/transform/tick-data/config.js +6 -0
  40. package/cjs/vutil-extension-temp/transform/tick-data/config.js.map +1 -0
  41. package/cjs/vutil-extension-temp/transform/tick-data/continuous.d.ts +3 -0
  42. package/cjs/vutil-extension-temp/transform/tick-data/continuous.js +57 -0
  43. package/cjs/vutil-extension-temp/transform/tick-data/continuous.js.map +1 -0
  44. package/cjs/vutil-extension-temp/transform/tick-data/discrete/linear.d.ts +6 -0
  45. package/cjs/vutil-extension-temp/transform/tick-data/discrete/linear.js +101 -0
  46. package/cjs/vutil-extension-temp/transform/tick-data/discrete/linear.js.map +1 -0
  47. package/cjs/vutil-extension-temp/transform/tick-data/discrete/polar-angle.d.ts +3 -0
  48. package/cjs/vutil-extension-temp/transform/tick-data/discrete/polar-angle.js +53 -0
  49. package/cjs/vutil-extension-temp/transform/tick-data/discrete/polar-angle.js.map +1 -0
  50. package/cjs/vutil-extension-temp/transform/tick-data/index.d.ts +6 -0
  51. package/cjs/vutil-extension-temp/transform/tick-data/index.js +41 -0
  52. package/cjs/vutil-extension-temp/transform/tick-data/index.js.map +1 -0
  53. package/cjs/vutil-extension-temp/transform/tick-data/interface.d.ts +38 -0
  54. package/cjs/vutil-extension-temp/transform/tick-data/interface.js +6 -0
  55. package/cjs/vutil-extension-temp/transform/tick-data/interface.js.map +1 -0
  56. package/cjs/vutil-extension-temp/transform/tick-data/util.d.ts +17 -0
  57. package/cjs/vutil-extension-temp/transform/tick-data/util.js +91 -0
  58. package/cjs/vutil-extension-temp/transform/tick-data/util.js.map +1 -0
  59. package/cjs/vutil-extension-temp/transform/tick-data/utils/polar-label-position.d.ts +8 -0
  60. package/cjs/vutil-extension-temp/transform/tick-data/utils/polar-label-position.js +20 -0
  61. package/cjs/vutil-extension-temp/transform/tick-data/utils/polar-label-position.js.map +1 -0
  62. package/cjs/vutil-extension-temp/utils/index.d.ts +3 -0
  63. package/cjs/vutil-extension-temp/utils/index.js +22 -0
  64. package/cjs/vutil-extension-temp/utils/index.js.map +1 -0
  65. package/cjs/vutil-extension-temp/utils/object.d.ts +3 -0
  66. package/cjs/vutil-extension-temp/utils/object.js +30 -0
  67. package/cjs/vutil-extension-temp/utils/object.js.map +1 -0
  68. package/cjs/vutil-extension-temp/utils/polar.d.ts +5 -0
  69. package/cjs/vutil-extension-temp/utils/polar.js +23 -0
  70. package/cjs/vutil-extension-temp/utils/polar.js.map +1 -0
  71. package/cjs/vutil-extension-temp/utils/text.d.ts +4 -0
  72. package/cjs/vutil-extension-temp/utils/text.js +17 -0
  73. package/cjs/vutil-extension-temp/utils/text.js.map +1 -0
  74. package/dist/vtable.js +513 -340
  75. package/dist/vtable.min.js +2 -2
  76. package/es/ListTable.js +1 -1
  77. package/es/ListTable.js.map +1 -1
  78. package/es/PivotChart.js +1 -1
  79. package/es/PivotChart.js.map +1 -1
  80. package/es/PivotTable.js +1 -1
  81. package/es/PivotTable.js.map +1 -1
  82. package/es/components/axis/axis.js +1 -1
  83. package/es/components/axis/axis.js.map +1 -1
  84. package/es/core/BaseTable.js +1 -1
  85. package/es/core/BaseTable.js.map +1 -1
  86. package/es/index.d.ts +1 -1
  87. package/es/index.js +1 -1
  88. package/es/index.js.map +1 -1
  89. package/es/layout/chart-helper/get-chart-spec.js +1 -1
  90. package/es/layout/chart-helper/get-chart-spec.js.map +1 -1
  91. package/es/vrender.js.map +1 -1
  92. package/es/vutil-extension-temp/algorithm/binary-search.d.ts +2 -0
  93. package/es/vutil-extension-temp/algorithm/binary-search.js +11 -0
  94. package/es/vutil-extension-temp/algorithm/binary-search.js.map +1 -0
  95. package/es/vutil-extension-temp/algorithm/index.d.ts +1 -0
  96. package/es/vutil-extension-temp/algorithm/index.js +2 -0
  97. package/es/vutil-extension-temp/algorithm/index.js.map +1 -0
  98. package/es/vutil-extension-temp/index.d.ts +4 -0
  99. package/es/vutil-extension-temp/index.js +8 -0
  100. package/es/vutil-extension-temp/index.js.map +1 -0
  101. package/es/vutil-extension-temp/spec/clone-deep.d.ts +1 -0
  102. package/es/vutil-extension-temp/spec/clone-deep.js +20 -0
  103. package/es/vutil-extension-temp/spec/clone-deep.js.map +1 -0
  104. package/es/vutil-extension-temp/spec/common.d.ts +3 -0
  105. package/es/vutil-extension-temp/spec/common.js +15 -0
  106. package/es/vutil-extension-temp/spec/common.js.map +1 -0
  107. package/es/vutil-extension-temp/spec/index.d.ts +3 -0
  108. package/es/vutil-extension-temp/spec/index.js +6 -0
  109. package/es/vutil-extension-temp/spec/index.js.map +1 -0
  110. package/es/vutil-extension-temp/spec/merge-spec.d.ts +5 -0
  111. package/es/vutil-extension-temp/spec/merge-spec.js +57 -0
  112. package/es/vutil-extension-temp/spec/merge-spec.js.map +1 -0
  113. package/es/vutil-extension-temp/transform/tick-data/config.d.ts +1 -0
  114. package/es/vutil-extension-temp/transform/tick-data/config.js +2 -0
  115. package/es/vutil-extension-temp/transform/tick-data/config.js.map +1 -0
  116. package/es/vutil-extension-temp/transform/tick-data/continuous.d.ts +3 -0
  117. package/es/vutil-extension-temp/transform/tick-data/continuous.js +56 -0
  118. package/es/vutil-extension-temp/transform/tick-data/continuous.js.map +1 -0
  119. package/es/vutil-extension-temp/transform/tick-data/discrete/linear.d.ts +6 -0
  120. package/es/vutil-extension-temp/transform/tick-data/discrete/linear.js +92 -0
  121. package/es/vutil-extension-temp/transform/tick-data/discrete/linear.js.map +1 -0
  122. package/es/vutil-extension-temp/transform/tick-data/discrete/polar-angle.d.ts +3 -0
  123. package/es/vutil-extension-temp/transform/tick-data/discrete/polar-angle.js +45 -0
  124. package/es/vutil-extension-temp/transform/tick-data/discrete/polar-angle.js.map +1 -0
  125. package/es/vutil-extension-temp/transform/tick-data/index.d.ts +6 -0
  126. package/es/vutil-extension-temp/transform/tick-data/index.js +23 -0
  127. package/es/vutil-extension-temp/transform/tick-data/index.js.map +1 -0
  128. package/es/vutil-extension-temp/transform/tick-data/interface.d.ts +38 -0
  129. package/es/vutil-extension-temp/transform/tick-data/interface.js +2 -0
  130. package/es/vutil-extension-temp/transform/tick-data/interface.js.map +1 -0
  131. package/es/vutil-extension-temp/transform/tick-data/util.d.ts +17 -0
  132. package/es/vutil-extension-temp/transform/tick-data/util.js +78 -0
  133. package/es/vutil-extension-temp/transform/tick-data/util.js.map +1 -0
  134. package/es/vutil-extension-temp/transform/tick-data/utils/polar-label-position.d.ts +8 -0
  135. package/es/vutil-extension-temp/transform/tick-data/utils/polar-label-position.js +12 -0
  136. package/es/vutil-extension-temp/transform/tick-data/utils/polar-label-position.js.map +1 -0
  137. package/es/vutil-extension-temp/utils/index.d.ts +3 -0
  138. package/es/vutil-extension-temp/utils/index.js +6 -0
  139. package/es/vutil-extension-temp/utils/index.js.map +1 -0
  140. package/es/vutil-extension-temp/utils/object.d.ts +3 -0
  141. package/es/vutil-extension-temp/utils/object.js +15 -0
  142. package/es/vutil-extension-temp/utils/object.js.map +1 -0
  143. package/es/vutil-extension-temp/utils/polar.d.ts +5 -0
  144. package/es/vutil-extension-temp/utils/polar.js +16 -0
  145. package/es/vutil-extension-temp/utils/polar.js.map +1 -0
  146. package/es/vutil-extension-temp/utils/text.d.ts +4 -0
  147. package/es/vutil-extension-temp/utils/text.js +13 -0
  148. package/es/vutil-extension-temp/utils/text.js.map +1 -0
  149. package/package.json +4 -5
package/dist/vtable.js CHANGED
@@ -32089,390 +32089,563 @@
32089
32089
 
32090
32090
  const DEFAULT_CONTINUOUS_TICK_COUNT$1 = 5;
32091
32091
 
32092
- const initTextMeasure$1 = (textSpec, option, useNaiveCanvas, defaultFontParams) => new TextMeasure(Object.assign({
32093
- defaultFontParams: Object.assign({
32094
- fontFamily: "PingFang SC,Helvetica Neue,Microsoft Yahei,system-ui,-apple-system,segoe ui,Roboto,Helvetica,Arial,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol",
32095
- fontSize: 14
32096
- }, defaultFontParams),
32097
- getTextBounds: useNaiveCanvas ? void 0 : getTextBounds,
32098
- specialCharSet: "-/: .,@%'\"~" + TextMeasure.ALPHABET_CHAR_SET + TextMeasure.ALPHABET_CHAR_SET.toUpperCase()
32099
- }, null != option ? option : {}), textSpec);
32092
+ const initTextMeasure$1 = (textSpec, option, useNaiveCanvas, defaultFontParams) => {
32093
+ return new TextMeasure({
32094
+ defaultFontParams: {
32095
+ fontFamily: 'PingFang SC,Helvetica Neue,Microsoft Yahei,system-ui,-apple-system,segoe ui,Roboto,Helvetica,Arial,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol',
32096
+ fontSize: 14,
32097
+ ...defaultFontParams
32098
+ },
32099
+ getTextBounds: useNaiveCanvas ? undefined : getTextBounds,
32100
+ specialCharSet: '-/: .,@%\'"~' + TextMeasure.ALPHABET_CHAR_SET + TextMeasure.ALPHABET_CHAR_SET.toUpperCase(),
32101
+ ...(option ?? {})
32102
+ }, textSpec);
32103
+ };
32100
32104
 
32101
32105
  function getLabelPosition(angle, center, radius, labelOffset, inside, text, style) {
32102
- const point = polarToCartesian({
32103
- x: 0,
32104
- y: 0
32105
- }, radius, angle),
32106
- labelPoint = getVerticalCoord(point, getCircleVerticalVector(labelOffset, point, center, inside)),
32107
- vector = getCircleVerticalVector(labelOffset || 1, labelPoint, center, inside);
32108
- return getCircleLabelPosition(labelPoint, vector, text, style);
32109
- }
32110
-
32111
- const convertDomainToTickData = domain => domain.map((t, index) => ({
32112
- index: index,
32113
- value: t
32114
- }));
32115
- const labelOverlap = function (prevLabel, nextLabel) {
32116
- let gap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
32117
- const prevBounds = new AABBBounds(prevLabel).expand(gap / 2),
32118
- nextBounds = new AABBBounds(nextLabel).expand(gap / 2);
32119
- return prevBounds.intersects(nextBounds);
32106
+ const point = polarToCartesian({ x: 0, y: 0 }, radius, angle);
32107
+ const labelPoint = getVerticalCoord(point, getCircleVerticalVector(labelOffset, point, center, inside));
32108
+ const vector = getCircleVerticalVector(labelOffset || 1, labelPoint, center, inside);
32109
+ return getCircleLabelPosition(labelPoint, vector, text, style);
32110
+ }
32111
+
32112
+ const convertDomainToTickData = (domain) => {
32113
+ const ticks = domain.map((t, index) => {
32114
+ return {
32115
+ index,
32116
+ value: t
32117
+ };
32118
+ });
32119
+ return ticks;
32120
+ };
32121
+ const labelOverlap = (prevLabel, nextLabel, gap = 0) => {
32122
+ const prevBounds = new AABBBounds(prevLabel).expand(gap / 2);
32123
+ const nextBounds = new AABBBounds(nextLabel).expand(gap / 2);
32124
+ return prevBounds.intersects(nextBounds);
32120
32125
  };
32121
32126
  function intersect(a, b, sep) {
32122
- return sep > Math.max(b.x1 - a.x2, a.x1 - b.x2, b.y1 - a.y2, a.y1 - b.y2);
32127
+ return sep > Math.max(b.x1 - a.x2, a.x1 - b.x2, b.y1 - a.y2, a.y1 - b.y2);
32123
32128
  }
32124
32129
  function hasOverlap(items, pad) {
32125
- for (let b, i = 1, n = items.length, a = items[0]; i < n; a = b, ++i) if (b = items[i], intersect(a.AABBBounds, b.AABBBounds, pad)) return !0;
32126
- return !1;
32130
+ for (let i = 1, n = items.length, a = items[0], b; i < n; a = b, ++i) {
32131
+ b = items[i];
32132
+ if (intersect(a.AABBBounds, b.AABBBounds, pad)) {
32133
+ return true;
32134
+ }
32135
+ }
32136
+ return false;
32127
32137
  }
32138
+ const MIN_TICK_GAP = 12;
32128
32139
  const getCartesianLabelBounds = (scale, domain, op) => {
32129
- var _a;
32130
- const {
32131
- labelStyle: labelStyle,
32132
- axisOrientType: axisOrientType,
32133
- labelFlush: labelFlush,
32134
- labelFormatter: labelFormatter,
32135
- startAngle = 0
32136
- } = op;
32137
- let labelAngle = null !== (_a = labelStyle.angle) && void 0 !== _a ? _a : 0;
32138
- "vertical" === labelStyle.direction && (labelAngle += degreeToRadian(90));
32139
- const isHorizontal = ["bottom", "top"].includes(axisOrientType),
32140
- isVertical = ["left", "right"].includes(axisOrientType);
32141
- let scaleX = 1,
32142
- scaleY = 0;
32143
- isHorizontal || (isVertical ? (scaleX = 0, scaleY = 1) : startAngle && (scaleX = Math.cos(startAngle), scaleY = -Math.sin(startAngle)));
32144
- const textMeasure = initTextMeasure$1(labelStyle),
32145
- labelBoundsList = domain.map((v, i) => {
32146
- var _a, _b;
32147
- const str = labelFormatter ? labelFormatter(v) : `${v}`,
32148
- {
32149
- width: width,
32150
- height: height
32151
- } = textMeasure.quickMeasure(str),
32152
- textWidth = Math.max(width, 12),
32153
- textHeight = Math.max(height, 12),
32154
- pos = scale.scale(v),
32155
- baseTextX = scaleX * pos,
32156
- baseTextY = scaleY * pos;
32157
- let align,
32158
- baseline,
32159
- textX = baseTextX,
32160
- textY = baseTextY;
32161
- align = labelFlush && isHorizontal && 0 === i ? "left" : labelFlush && isHorizontal && i === domain.length - 1 ? "right" : null !== (_a = labelStyle.textAlign) && void 0 !== _a ? _a : "center", "right" === align ? textX -= textWidth : "center" === align && (textX -= textWidth / 2), baseline = labelFlush && isVertical && 0 === i ? "top" : labelFlush && isVertical && i === domain.length - 1 ? "bottom" : null !== (_b = labelStyle.textBaseline) && void 0 !== _b ? _b : "middle", "bottom" === baseline ? textY -= textHeight : "middle" === baseline && (textY -= textHeight / 2);
32162
- const bounds = new AABBBounds().set(textX, textY, textX + textWidth, textY + textHeight);
32163
- return labelAngle && bounds.rotate(labelAngle, baseTextX, baseTextY), bounds;
32140
+ const { labelStyle, axisOrientType, labelFlush, labelFormatter, startAngle = 0 } = op;
32141
+ let labelAngle = labelStyle.angle ?? 0;
32142
+ if (labelStyle.direction === 'vertical') {
32143
+ labelAngle += degreeToRadian(90);
32144
+ }
32145
+ const isHorizontal = ['bottom', 'top'].includes(axisOrientType);
32146
+ const isVertical = ['left', 'right'].includes(axisOrientType);
32147
+ let scaleX = 1;
32148
+ let scaleY = 0;
32149
+ if (isHorizontal) ;
32150
+ else if (isVertical) {
32151
+ scaleX = 0;
32152
+ scaleY = 1;
32153
+ }
32154
+ else if (startAngle) {
32155
+ scaleX = Math.cos(startAngle);
32156
+ scaleY = -Math.sin(startAngle);
32157
+ }
32158
+ const textMeasure = initTextMeasure$1(labelStyle);
32159
+ const labelBoundsList = domain.map((v, i) => {
32160
+ const str = labelFormatter ? labelFormatter(v) : `${v}`;
32161
+ const { width, height } = textMeasure.quickMeasure(str);
32162
+ const textWidth = Math.max(width, MIN_TICK_GAP);
32163
+ const textHeight = Math.max(height, MIN_TICK_GAP);
32164
+ const pos = scale.scale(v);
32165
+ const baseTextX = scaleX * pos;
32166
+ const baseTextY = scaleY * pos;
32167
+ let textX = baseTextX;
32168
+ let textY = baseTextY;
32169
+ let align;
32170
+ if (labelFlush && isHorizontal && i === 0) {
32171
+ align = 'left';
32172
+ }
32173
+ else if (labelFlush && isHorizontal && i === domain.length - 1) {
32174
+ align = 'right';
32175
+ }
32176
+ else {
32177
+ align = labelStyle.textAlign ?? 'center';
32178
+ }
32179
+ if (align === 'right') {
32180
+ textX -= textWidth;
32181
+ }
32182
+ else if (align === 'center') {
32183
+ textX -= textWidth / 2;
32184
+ }
32185
+ let baseline;
32186
+ if (labelFlush && isVertical && i === 0) {
32187
+ baseline = 'top';
32188
+ }
32189
+ else if (labelFlush && isVertical && i === domain.length - 1) {
32190
+ baseline = 'bottom';
32191
+ }
32192
+ else {
32193
+ baseline = labelStyle.textBaseline ?? 'middle';
32194
+ }
32195
+ if (baseline === 'bottom') {
32196
+ textY -= textHeight;
32197
+ }
32198
+ else if (baseline === 'middle') {
32199
+ textY -= textHeight / 2;
32200
+ }
32201
+ const bounds = new AABBBounds().set(textX, textY, textX + textWidth, textY + textHeight);
32202
+ if (labelAngle) {
32203
+ bounds.rotate(labelAngle, baseTextX, baseTextY);
32204
+ }
32205
+ return bounds;
32164
32206
  });
32165
- return labelBoundsList;
32207
+ return labelBoundsList;
32166
32208
  };
32167
32209
  const getPolarAngleLabelBounds = (scale, domain, op) => {
32168
- var _a;
32169
- const {
32170
- labelStyle: labelStyle,
32171
- getRadius: getRadius,
32172
- labelOffset: labelOffset,
32173
- labelFormatter: labelFormatter,
32174
- inside: inside
32175
- } = op,
32176
- radius = null == getRadius ? void 0 : getRadius(),
32177
- labelAngle = null !== (_a = labelStyle.angle) && void 0 !== _a ? _a : 0,
32178
- textMeasure = initTextMeasure$1(labelStyle),
32179
- labelBoundsList = domain.map(v => {
32180
- var _a, _b;
32181
- const str = labelFormatter ? labelFormatter(v) : `${v}`,
32182
- {
32183
- width: width,
32184
- height: height
32185
- } = textMeasure.quickMeasure(str),
32186
- textWidth = Math.max(width, 12),
32187
- textHeight = Math.max(height, 12),
32188
- angle = scale.scale(v);
32189
- let textX = 0,
32190
- textY = 0;
32191
- const orient_align = null !== (_a = labelStyle.textAlign) && void 0 !== _a ? _a : "center",
32192
- orient_baseline = null !== (_b = labelStyle.textBaseline) && void 0 !== _b ? _b : "middle",
32193
- {
32194
- x: x,
32195
- y: y
32196
- } = getLabelPosition(angle, {
32197
- x: 0,
32198
- y: 0
32199
- }, radius, labelOffset, inside, str, labelStyle);
32200
- textX = x + ("right" === orient_align ? -textWidth : "center" === orient_align ? -textWidth / 2 : 0), textY = y + ("bottom" === orient_baseline ? -textHeight : "middle" === orient_baseline ? -textHeight / 2 : 0);
32201
- return new AABBBounds().set(textX, textY, textX + textWidth, textY + textHeight).rotate(labelAngle, textX + textWidth / 2, textY + textHeight / 2);
32210
+ const { labelStyle, getRadius, labelOffset, labelFormatter, inside } = op;
32211
+ const radius = getRadius?.();
32212
+ const labelAngle = labelStyle.angle ?? 0;
32213
+ const textMeasure = initTextMeasure$1(labelStyle);
32214
+ const labelBoundsList = domain.map((v) => {
32215
+ const str = labelFormatter ? labelFormatter(v) : `${v}`;
32216
+ const { width, height } = textMeasure.quickMeasure(str);
32217
+ const textWidth = Math.max(width, MIN_TICK_GAP);
32218
+ const textHeight = Math.max(height, MIN_TICK_GAP);
32219
+ const angle = scale.scale(v);
32220
+ let textX = 0;
32221
+ let textY = 0;
32222
+ const orient = {
32223
+ align: labelStyle.textAlign ?? 'center',
32224
+ baseline: labelStyle.textBaseline ?? 'middle'
32225
+ };
32226
+ const { x, y } = getLabelPosition(angle, { x: 0, y: 0 }, radius, labelOffset, inside, str, labelStyle);
32227
+ textX = x + (orient.align === 'right' ? -textWidth : orient.align === 'center' ? -textWidth / 2 : 0);
32228
+ textY = y + (orient.baseline === 'bottom' ? -textHeight : orient.baseline === 'middle' ? -textHeight / 2 : 0);
32229
+ const bounds = new AABBBounds()
32230
+ .set(textX, textY, textX + textWidth, textY + textHeight)
32231
+ .rotate(labelAngle, textX + textWidth / 2, textY + textHeight / 2);
32232
+ return bounds;
32202
32233
  });
32203
- return labelBoundsList;
32234
+ return labelBoundsList;
32235
+ };
32236
+ const isAxisHorizontal = (axisOrientType) => {
32237
+ return ['bottom', 'top', 'z'].includes(axisOrientType);
32204
32238
  };
32205
- const isAxisHorizontal = axisOrientType => ["bottom", "top", "z"].includes(axisOrientType);
32206
32239
 
32207
32240
  const continuousTicks = (scale, op) => {
32208
- if (!isContinuous(scale.type)) return convertDomainToTickData(scale.domain());
32209
- const range = scale.range(),
32210
- rangeSize = Math.abs(range[range.length - 1] - range[0]);
32211
- if (rangeSize < 2) return convertDomainToTickData([scale.domain()[0]]);
32212
- const {
32213
- tickCount: tickCount,
32214
- forceTickCount: forceTickCount,
32215
- tickStep: tickStep,
32216
- noDecimals = !1,
32217
- labelStyle: labelStyle
32218
- } = op;
32219
- let scaleTicks;
32220
- if (isValid$3(tickStep)) scaleTicks = scale.stepTicks(tickStep);else if (isValid$3(forceTickCount)) scaleTicks = scale.forceTicks(forceTickCount);else if ("d3" === op.tickMode) {
32221
- const count = isFunction$1(tickCount) ? tickCount({
32222
- axisLength: rangeSize,
32223
- labelStyle: labelStyle
32224
- }) : tickCount;
32225
- scaleTicks = scale.d3Ticks(null != count ? count : DEFAULT_CONTINUOUS_TICK_COUNT$1, {
32226
- noDecimals: noDecimals
32227
- });
32228
- } else {
32229
- const count = isFunction$1(tickCount) ? tickCount({
32230
- axisLength: rangeSize,
32231
- labelStyle: labelStyle
32232
- }) : tickCount;
32233
- scaleTicks = scale.ticks(null != count ? count : DEFAULT_CONTINUOUS_TICK_COUNT$1, {
32234
- noDecimals: noDecimals
32235
- });
32236
- }
32237
- if (op.sampling && ("cartesian" === op.coordinateType || "polar" === op.coordinateType && "radius" === op.axisOrientType)) {
32238
- const {
32239
- labelGap = 4,
32240
- labelFlush: labelFlush
32241
- } = op;
32242
- let items = getCartesianLabelBounds(scale, scaleTicks, op).map((bounds, i) => ({
32243
- AABBBounds: bounds,
32244
- value: scaleTicks[i]
32245
- }));
32246
- for (; items.length >= 3 && hasOverlap(items, labelGap);) items = methods.parity(items);
32247
- const ticks = items.map(item => item.value);
32248
- ticks.length < 3 && labelFlush && (ticks.length > 1 && ticks.pop(), last(ticks) !== last(scaleTicks) && ticks.push(last(scaleTicks))), scaleTicks = ticks;
32249
- }
32250
- return convertDomainToTickData(scaleTicks);
32241
+ if (!isContinuous(scale.type)) {
32242
+ return convertDomainToTickData(scale.domain());
32243
+ }
32244
+ const range = scale.range();
32245
+ const rangeSize = Math.abs(range[range.length - 1] - range[0]);
32246
+ if (rangeSize < 2) {
32247
+ return convertDomainToTickData([scale.domain()[0]]);
32248
+ }
32249
+ const { tickCount, forceTickCount, tickStep, noDecimals = false, labelStyle } = op;
32250
+ let scaleTicks;
32251
+ if (isValid$3(tickStep)) {
32252
+ scaleTicks = scale.stepTicks(tickStep);
32253
+ }
32254
+ else if (isValid$3(forceTickCount)) {
32255
+ scaleTicks = scale.forceTicks(forceTickCount);
32256
+ }
32257
+ else if (op.tickMode === 'd3') {
32258
+ const count = isFunction$1(tickCount) ? tickCount({ axisLength: rangeSize, labelStyle }) : tickCount;
32259
+ scaleTicks = scale.d3Ticks(count ?? DEFAULT_CONTINUOUS_TICK_COUNT$1, { noDecimals });
32260
+ }
32261
+ else {
32262
+ const count = isFunction$1(tickCount) ? tickCount({ axisLength: rangeSize, labelStyle }) : tickCount;
32263
+ scaleTicks = scale.ticks(count ?? DEFAULT_CONTINUOUS_TICK_COUNT$1, { noDecimals });
32264
+ }
32265
+ if (op.sampling) {
32266
+ if (op.coordinateType === 'cartesian' || (op.coordinateType === 'polar' && op.axisOrientType === 'radius')) {
32267
+ const { labelGap = 4, labelFlush } = op;
32268
+ let items = getCartesianLabelBounds(scale, scaleTicks, op).map((bounds, i) => ({
32269
+ AABBBounds: bounds,
32270
+ value: scaleTicks[i]
32271
+ }));
32272
+ while (items.length >= 3 && hasOverlap(items, labelGap)) {
32273
+ items = methods.parity(items);
32274
+ }
32275
+ const ticks = items.map(item => item.value);
32276
+ if (ticks.length < 3 && labelFlush) {
32277
+ if (ticks.length > 1) {
32278
+ ticks.pop();
32279
+ }
32280
+ if (last(ticks) !== last(scaleTicks)) {
32281
+ ticks.push(last(scaleTicks));
32282
+ }
32283
+ }
32284
+ scaleTicks = ticks;
32285
+ }
32286
+ }
32287
+ return convertDomainToTickData(scaleTicks);
32251
32288
  };
32252
32289
  const methods = {
32253
- parity: function (items) {
32254
- return items.filter((item, i) => i % 2 == 0);
32255
- },
32256
- greedy: function (items, sep) {
32257
- let a;
32258
- return items.filter((b, i) => (!i || !intersect(a.AABBBounds, b.AABBBounds, sep)) && (a = b, !0));
32259
- }
32290
+ parity: function (items) {
32291
+ return items.filter((item, i) => i % 2 === 0);
32292
+ },
32293
+ greedy: function (items, sep) {
32294
+ let a;
32295
+ return items.filter((b, i) => {
32296
+ if (!i || !intersect(a.AABBBounds, b.AABBBounds, sep)) {
32297
+ a = b;
32298
+ return true;
32299
+ }
32300
+ return false;
32301
+ });
32302
+ }
32260
32303
  };
32261
32304
 
32262
32305
  const binaryFuzzySearchInNumberRange = (x1, x2, compareFn) => {
32263
- let left = x1,
32264
- right = x2;
32265
- for (; left < right;) {
32266
- const mid = Math.floor((left + right) / 2);
32267
- compareFn(mid) >= 0 ? right = mid : left = mid + 1;
32268
- }
32269
- return left;
32306
+ let left = x1;
32307
+ let right = x2;
32308
+ while (left < right) {
32309
+ const mid = Math.floor((left + right) / 2);
32310
+ if (compareFn(mid) >= 0) {
32311
+ right = mid;
32312
+ }
32313
+ else {
32314
+ left = mid + 1;
32315
+ }
32316
+ }
32317
+ return left;
32270
32318
  };
32271
32319
 
32272
- const getOneDimensionalLabelBounds = (scale, domain, op, isHorizontal) => getCartesianLabelBounds(scale, domain, op).map(bounds => isHorizontal ? [bounds.x1, bounds.x2, bounds.width()] : [bounds.y1, bounds.y2, bounds.height()]),
32273
- boundsOverlap = function (prevBounds, nextBounds) {
32274
- let gap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
32320
+ const getOneDimensionalLabelBounds = (scale, domain, op, isHorizontal) => {
32321
+ const labelBoundsList = getCartesianLabelBounds(scale, domain, op);
32322
+ return labelBoundsList.map(bounds => {
32323
+ if (isHorizontal) {
32324
+ return [bounds.x1, bounds.x2, bounds.width()];
32325
+ }
32326
+ return [bounds.y1, bounds.y2, bounds.height()];
32327
+ });
32328
+ };
32329
+ const boundsOverlap = (prevBounds, nextBounds, gap = 0) => {
32275
32330
  return Math.max(prevBounds[0], nextBounds[0]) - gap / 2 <= Math.min(prevBounds[1], nextBounds[1]) + gap / 2;
32276
- };
32277
- const boundsDistance = (prevBounds, nextBounds) => prevBounds[1] < nextBounds[0] ? nextBounds[0] - prevBounds[1] : nextBounds[1] < prevBounds[0] ? prevBounds[0] - nextBounds[1] : 0;
32331
+ };
32332
+ const boundsDistance = (prevBounds, nextBounds) => {
32333
+ if (prevBounds[1] < nextBounds[0]) {
32334
+ return nextBounds[0] - prevBounds[1];
32335
+ }
32336
+ else if (nextBounds[1] < prevBounds[0]) {
32337
+ return prevBounds[0] - nextBounds[1];
32338
+ }
32339
+ return 0;
32340
+ };
32278
32341
  const linearDiscreteTicks = (scale, op) => {
32279
- var _a;
32280
- const domain = scale.domain();
32281
- if (!domain.length) return [];
32282
- const {
32283
- tickCount: tickCount,
32284
- forceTickCount: forceTickCount,
32285
- tickStep: tickStep,
32286
- labelGap = 4,
32287
- axisOrientType: axisOrientType,
32288
- labelStyle: labelStyle
32289
- } = op,
32290
- isHorizontal = isAxisHorizontal(axisOrientType),
32291
- range = scale.range(),
32292
- rangeSize = scale.calculateWholeRangeSize();
32293
- if (rangeSize < 2) return op.labelLastVisible ? convertDomainToTickData([domain[domain.length - 1]]) : convertDomainToTickData([domain[0]]);
32294
- let scaleTicks;
32295
- if (isValid$3(tickStep)) scaleTicks = scale.stepTicks(tickStep);else if (isValid$3(forceTickCount)) scaleTicks = scale.forceTicks(forceTickCount);else if (isValid$3(tickCount)) {
32296
- const count = isFunction$1(tickCount) ? tickCount({
32297
- axisLength: rangeSize,
32298
- labelStyle: labelStyle
32299
- }) : tickCount;
32300
- scaleTicks = scale.ticks(count);
32301
- } else if (op.sampling) {
32302
- const fontSize = (null !== (_a = op.labelStyle.fontSize) && void 0 !== _a ? _a : 12) + 2,
32303
- rangeStart = minInArray(range),
32304
- rangeEnd = maxInArray(range);
32305
- if (domain.length <= rangeSize / fontSize) {
32306
- const incrementUnit = (rangeEnd - rangeStart) / domain.length,
32307
- labelBoundsList = getOneDimensionalLabelBounds(scale, domain, op, isHorizontal),
32308
- minBoundsLength = Math.min(...labelBoundsList.map(bounds => bounds[2])),
32309
- stepResult = getStep$1(domain, labelBoundsList, labelGap, op.labelLastVisible, Math.floor(minBoundsLength / incrementUnit), !1);
32310
- scaleTicks = scale.stepTicks(stepResult.step), op.labelLastVisible && (stepResult.delCount && (scaleTicks = scaleTicks.slice(0, scaleTicks.length - stepResult.delCount)), scaleTicks.push(domain[domain.length - 1]));
32311
- } else {
32312
- const tempDomain = [domain[0], domain[Math.floor(domain.length / 2)], domain[domain.length - 1]],
32313
- tempList = getOneDimensionalLabelBounds(scale, tempDomain, op, isHorizontal);
32314
- let maxBounds = null;
32315
- tempList.forEach(current => {
32316
- maxBounds ? maxBounds[2] < current[2] && (maxBounds = current) : maxBounds = current;
32317
- });
32318
- const step = rangeEnd - rangeStart - labelGap > 0 ? Math.ceil(domain.length * (labelGap + maxBounds[2]) / (rangeEnd - rangeStart - labelGap)) : domain.length - 1;
32319
- scaleTicks = scale.stepTicks(step), !op.labelLastVisible || scaleTicks.length && scaleTicks[scaleTicks.length - 1] === domain[domain.length - 1] || (scaleTicks.length && Math.abs(scale.scale(scaleTicks[scaleTicks.length - 1]) - scale.scale(domain[domain.length - 1])) < maxBounds[2] && (scaleTicks = scaleTicks.slice(0, -1)), scaleTicks.push(domain[domain.length - 1]));
32342
+ const domain = scale.domain();
32343
+ if (!domain.length) {
32344
+ return [];
32345
+ }
32346
+ const { tickCount, forceTickCount, tickStep, labelGap = 4, axisOrientType, labelStyle } = op;
32347
+ const isHorizontal = isAxisHorizontal(axisOrientType);
32348
+ const range = scale.range();
32349
+ const rangeSize = scale.calculateWholeRangeSize();
32350
+ if (rangeSize < 2) {
32351
+ if (op.labelLastVisible) {
32352
+ return convertDomainToTickData([domain[domain.length - 1]]);
32353
+ }
32354
+ return convertDomainToTickData([domain[0]]);
32355
+ }
32356
+ let scaleTicks;
32357
+ if (isValid$3(tickStep)) {
32358
+ scaleTicks = scale.stepTicks(tickStep);
32359
+ }
32360
+ else if (isValid$3(forceTickCount)) {
32361
+ scaleTicks = scale.forceTicks(forceTickCount);
32362
+ }
32363
+ else if (isValid$3(tickCount)) {
32364
+ const count = isFunction$1(tickCount) ? tickCount({ axisLength: rangeSize, labelStyle }) : tickCount;
32365
+ scaleTicks = scale.ticks(count);
32366
+ }
32367
+ else if (op.sampling) {
32368
+ const fontSize = (op.labelStyle.fontSize ?? 12) + 2;
32369
+ const rangeStart = minInArray(range);
32370
+ const rangeEnd = maxInArray(range);
32371
+ if (domain.length <= rangeSize / fontSize) {
32372
+ const incrementUnit = (rangeEnd - rangeStart) / domain.length;
32373
+ const labelBoundsList = getOneDimensionalLabelBounds(scale, domain, op, isHorizontal);
32374
+ const minBoundsLength = Math.min(...labelBoundsList.map(bounds => bounds[2]));
32375
+ const stepResult = getStep$1(domain, labelBoundsList, labelGap, op.labelLastVisible, Math.floor(minBoundsLength / incrementUnit), false);
32376
+ scaleTicks = scale.stepTicks(stepResult.step);
32377
+ if (op.labelLastVisible) {
32378
+ if (stepResult.delCount) {
32379
+ scaleTicks = scaleTicks.slice(0, scaleTicks.length - stepResult.delCount);
32380
+ }
32381
+ scaleTicks.push(domain[domain.length - 1]);
32382
+ }
32383
+ }
32384
+ else {
32385
+ const tempDomain = [domain[0], domain[Math.floor(domain.length / 2)], domain[domain.length - 1]];
32386
+ const tempList = getOneDimensionalLabelBounds(scale, tempDomain, op, isHorizontal);
32387
+ let maxBounds = null;
32388
+ tempList.forEach(current => {
32389
+ if (!maxBounds) {
32390
+ maxBounds = current;
32391
+ return;
32392
+ }
32393
+ if (maxBounds[2] < current[2]) {
32394
+ maxBounds = current;
32395
+ }
32396
+ });
32397
+ const step = rangeEnd - rangeStart - labelGap > 0
32398
+ ? Math.ceil((domain.length * (labelGap + maxBounds[2])) / (rangeEnd - rangeStart - labelGap))
32399
+ : domain.length - 1;
32400
+ scaleTicks = scale.stepTicks(step);
32401
+ if (op.labelLastVisible &&
32402
+ (!scaleTicks.length || scaleTicks[scaleTicks.length - 1] !== domain[domain.length - 1])) {
32403
+ if (scaleTicks.length &&
32404
+ Math.abs(scale.scale(scaleTicks[scaleTicks.length - 1]) - scale.scale(domain[domain.length - 1])) <
32405
+ maxBounds[2]) {
32406
+ scaleTicks = scaleTicks.slice(0, -1);
32407
+ }
32408
+ scaleTicks.push(domain[domain.length - 1]);
32409
+ }
32410
+ }
32320
32411
  }
32321
- } else scaleTicks = scale.domain();
32322
- return convertDomainToTickData(scaleTicks);
32412
+ else {
32413
+ scaleTicks = scale.domain();
32414
+ }
32415
+ return convertDomainToTickData(scaleTicks);
32323
32416
  };
32324
32417
  const getStep$1 = (domain, labelBoundsList, labelGap, labelLastVisible, defaultStep, areAllBoundsSame) => {
32325
- let resultDelCount = 0,
32326
- resultStep = 0,
32327
- resultTickCount = -1,
32328
- minDiff = Number.MAX_VALUE;
32329
- const validateStep = step => {
32330
- let success = !0,
32331
- ptr = 0;
32332
- do {
32333
- ptr + step < domain.length && boundsOverlap(labelBoundsList[ptr], labelBoundsList[ptr + step], labelGap) && (success = !1), ptr += step;
32334
- } while (success && ptr < domain.length);
32335
- return success;
32336
- },
32337
- minValidStep = binaryFuzzySearchInNumberRange(defaultStep, domain.length, step => validateStep(step) ? 1 : -1);
32338
- let step = minValidStep;
32339
- do {
32340
- if (step > minValidStep && !areAllBoundsSame && !validateStep(step)) step++;else {
32341
- if (!labelLastVisible) {
32342
- resultStep = step;
32343
- break;
32344
- }
32345
- {
32346
- const lastIndex = domain.length - 1;
32347
- let ptr,
32348
- delCount = 0;
32349
- ptr = domain.length % step > 0 ? domain.length - domain.length % step + step : domain.length;
32418
+ let resultDelCount = 0;
32419
+ let resultStep = 0;
32420
+ let resultTickCount = -1;
32421
+ let minDiff = Number.MAX_VALUE;
32422
+ const validateStep = (step) => {
32423
+ let success = true;
32424
+ let ptr = 0;
32350
32425
  do {
32351
- if (ptr -= step, ptr !== lastIndex && !boundsOverlap(labelBoundsList[ptr], labelBoundsList[lastIndex], labelGap)) break;
32352
- delCount++;
32353
- } while (ptr > 0);
32354
- if (ptr === lastIndex) {
32355
- resultStep = step, resultDelCount = delCount;
32356
- break;
32426
+ if (ptr + step < domain.length && boundsOverlap(labelBoundsList[ptr], labelBoundsList[ptr + step], labelGap)) {
32427
+ success = false;
32428
+ }
32429
+ ptr += step;
32430
+ } while (success && ptr < domain.length);
32431
+ return success;
32432
+ };
32433
+ const minValidStep = binaryFuzzySearchInNumberRange(defaultStep, domain.length, step => validateStep(step) ? 1 : -1);
32434
+ let step = minValidStep;
32435
+ do {
32436
+ if (step > minValidStep && !areAllBoundsSame) {
32437
+ if (!validateStep(step)) {
32438
+ step++;
32439
+ continue;
32440
+ }
32357
32441
  }
32358
- {
32359
- const tickCount = Math.floor(domain.length / step) - delCount + 1;
32360
- if (tickCount < resultTickCount) break;
32361
- {
32362
- resultTickCount = tickCount;
32363
- const distance1 = boundsDistance(labelBoundsList[ptr], labelBoundsList[lastIndex]),
32364
- distance2 = ptr - step >= 0 ? boundsDistance(labelBoundsList[ptr - step], labelBoundsList[ptr]) : distance1,
32365
- diff = Math.abs(distance1 - distance2);
32366
- if (diff < minDiff && (minDiff = diff, resultStep = step, resultDelCount = delCount), distance1 <= distance2) break;
32367
- }
32442
+ if (labelLastVisible) {
32443
+ const lastIndex = domain.length - 1;
32444
+ let delCount = 0;
32445
+ let ptr;
32446
+ if (domain.length % step > 0) {
32447
+ ptr = domain.length - (domain.length % step) + step;
32448
+ }
32449
+ else {
32450
+ ptr = domain.length;
32451
+ }
32452
+ do {
32453
+ ptr -= step;
32454
+ if (ptr === lastIndex || boundsOverlap(labelBoundsList[ptr], labelBoundsList[lastIndex], labelGap)) {
32455
+ delCount++;
32456
+ }
32457
+ else {
32458
+ break;
32459
+ }
32460
+ } while (ptr > 0);
32461
+ if (ptr === lastIndex) {
32462
+ resultStep = step;
32463
+ resultDelCount = delCount;
32464
+ break;
32465
+ }
32466
+ else {
32467
+ const tickCount = Math.floor(domain.length / step) - delCount + 1;
32468
+ if (tickCount < resultTickCount) {
32469
+ break;
32470
+ }
32471
+ else {
32472
+ resultTickCount = tickCount;
32473
+ const distance1 = boundsDistance(labelBoundsList[ptr], labelBoundsList[lastIndex]);
32474
+ const distance2 = ptr - step >= 0 ? boundsDistance(labelBoundsList[ptr - step], labelBoundsList[ptr]) : distance1;
32475
+ const diff = Math.abs(distance1 - distance2);
32476
+ if (diff < minDiff) {
32477
+ minDiff = diff;
32478
+ resultStep = step;
32479
+ resultDelCount = delCount;
32480
+ }
32481
+ if (distance1 <= distance2) {
32482
+ break;
32483
+ }
32484
+ }
32485
+ }
32368
32486
  }
32369
- }
32370
- step++;
32371
- }
32372
- } while (step <= domain.length);
32373
- return {
32374
- step: resultStep,
32375
- delCount: resultDelCount
32376
- };
32487
+ else {
32488
+ resultStep = step;
32489
+ break;
32490
+ }
32491
+ step++;
32492
+ } while (step <= domain.length);
32493
+ return {
32494
+ step: resultStep,
32495
+ delCount: resultDelCount
32496
+ };
32377
32497
  };
32378
32498
 
32379
32499
  const polarAngleAxisDiscreteTicks = (scale, op) => {
32380
- const {
32381
- tickCount: tickCount,
32382
- forceTickCount: forceTickCount,
32383
- tickStep: tickStep,
32384
- getRadius: getRadius,
32385
- labelOffset: labelOffset,
32386
- labelGap = 0,
32387
- labelStyle: labelStyle
32388
- } = op,
32389
- radius = null == getRadius ? void 0 : getRadius();
32390
- if (!radius) return convertDomainToTickData(scale.domain());
32391
- let scaleTicks;
32392
- if (isValid$3(tickStep)) scaleTicks = scale.stepTicks(tickStep);else if (isValid$3(forceTickCount)) scaleTicks = scale.forceTicks(forceTickCount);else if (isValid$3(tickCount)) {
32393
- const range = scale.range(),
32394
- rangeSize = Math.abs(range[range.length - 1] - range[0]),
32395
- count = isFunction$1(tickCount) ? tickCount({
32396
- axisLength: rangeSize,
32397
- labelStyle: labelStyle
32398
- }) : tickCount;
32399
- scaleTicks = scale.ticks(count);
32400
- } else if (op.sampling) {
32401
- const domain = scale.domain(),
32402
- range = scale.range(),
32403
- labelBoundsList = getPolarAngleLabelBounds(scale, domain, op),
32404
- rangeStart = minInArray(range),
32405
- rangeEnd = maxInArray(range),
32406
- incrementUnit = Math.abs(rangeEnd - rangeStart) * (radius + labelOffset) / domain.length,
32407
- {
32408
- step: step,
32409
- delCount: delCount
32410
- } = getStep(domain, labelBoundsList, labelGap, Math.floor(labelBoundsList.reduce((min, curBounds) => Math.min(min, curBounds.width(), curBounds.height()), Number.MAX_VALUE) / incrementUnit));
32411
- scaleTicks = scale.stepTicks(step), scaleTicks = scaleTicks.slice(0, scaleTicks.length - delCount);
32412
- } else scaleTicks = scale.domain();
32413
- return convertDomainToTickData(scaleTicks);
32500
+ const { tickCount, forceTickCount, tickStep, getRadius, labelOffset, labelGap = 0, labelStyle } = op;
32501
+ const radius = getRadius?.();
32502
+ if (!radius) {
32503
+ return convertDomainToTickData(scale.domain());
32504
+ }
32505
+ let scaleTicks;
32506
+ if (isValid$3(tickStep)) {
32507
+ scaleTicks = scale.stepTicks(tickStep);
32508
+ }
32509
+ else if (isValid$3(forceTickCount)) {
32510
+ scaleTicks = scale.forceTicks(forceTickCount);
32511
+ }
32512
+ else if (isValid$3(tickCount)) {
32513
+ const range = scale.range();
32514
+ const rangeSize = Math.abs(range[range.length - 1] - range[0]);
32515
+ const count = isFunction$1(tickCount) ? tickCount({ axisLength: rangeSize, labelStyle }) : tickCount;
32516
+ scaleTicks = scale.ticks(count);
32517
+ }
32518
+ else if (op.sampling) {
32519
+ const domain = scale.domain();
32520
+ const range = scale.range();
32521
+ const labelBoundsList = getPolarAngleLabelBounds(scale, domain, op);
32522
+ const rangeStart = minInArray(range);
32523
+ const rangeEnd = maxInArray(range);
32524
+ const axisLength = Math.abs(rangeEnd - rangeStart) * (radius + labelOffset);
32525
+ const incrementUnit = axisLength / domain.length;
32526
+ const { step, delCount } = getStep(domain, labelBoundsList, labelGap, Math.floor(labelBoundsList.reduce((min, curBounds) => {
32527
+ return Math.min(min, curBounds.width(), curBounds.height());
32528
+ }, Number.MAX_VALUE) / incrementUnit));
32529
+ scaleTicks = scale.stepTicks(step);
32530
+ scaleTicks = scaleTicks.slice(0, scaleTicks.length - delCount);
32531
+ }
32532
+ else {
32533
+ scaleTicks = scale.domain();
32534
+ }
32535
+ return convertDomainToTickData(scaleTicks);
32414
32536
  };
32415
32537
  const getStep = (domain, labelBoundsList, labelGap, defaultStep) => {
32416
- let step = defaultStep;
32417
- do {
32418
- let success = !0;
32419
- step++;
32420
- let ptr = 0;
32538
+ let step = defaultStep;
32421
32539
  do {
32422
- ptr + step < domain.length && labelOverlap(labelBoundsList[ptr], labelBoundsList[ptr + step], labelGap) && (success = !1), ptr += step;
32423
- } while (success && ptr < domain.length);
32424
- if (success) break;
32425
- } while (step <= domain.length);
32426
- let delCount = 0;
32427
- if (domain.length > 2) {
32428
- let ptr = domain.length - domain.length % step;
32429
- for (ptr >= domain.length && (ptr -= step); ptr > 0 && labelOverlap(labelBoundsList[0], labelBoundsList[ptr]);) delCount++, ptr -= step;
32430
- }
32431
- return {
32432
- step: step,
32433
- delCount: delCount
32434
- };
32540
+ let success = true;
32541
+ step++;
32542
+ let ptr = 0;
32543
+ do {
32544
+ if (ptr + step < domain.length && labelOverlap(labelBoundsList[ptr], labelBoundsList[ptr + step], labelGap)) {
32545
+ success = false;
32546
+ }
32547
+ ptr += step;
32548
+ } while (success && ptr < domain.length);
32549
+ if (success) {
32550
+ break;
32551
+ }
32552
+ } while (step <= domain.length);
32553
+ let delCount = 0;
32554
+ if (domain.length > 2) {
32555
+ let ptr = domain.length - (domain.length % step);
32556
+ if (ptr >= domain.length) {
32557
+ ptr -= step;
32558
+ }
32559
+ while (ptr > 0 && labelOverlap(labelBoundsList[0], labelBoundsList[ptr])) {
32560
+ delCount++;
32561
+ ptr -= step;
32562
+ }
32563
+ }
32564
+ return {
32565
+ step,
32566
+ delCount
32567
+ };
32435
32568
  };
32436
32569
 
32437
32570
  const ticks = (scale, op) => {
32438
- if (isContinuous(scale.type)) return continuousTicks(scale, op);
32439
- if (isDiscrete(scale.type)) {
32440
- if ("cartesian" === op.coordinateType) return linearDiscreteTicks(scale, op);
32441
- if ("polar" === op.coordinateType && "angle" === op.axisOrientType) return polarAngleAxisDiscreteTicks(scale, op);
32442
- }
32443
- return convertDomainToTickData(scale.domain());
32571
+ if (isContinuous(scale.type)) {
32572
+ return continuousTicks(scale, op);
32573
+ }
32574
+ else if (isDiscrete(scale.type)) {
32575
+ if (op.coordinateType === 'cartesian') {
32576
+ return linearDiscreteTicks(scale, op);
32577
+ }
32578
+ else if (op.coordinateType === 'polar') {
32579
+ if (op.axisOrientType === 'angle') {
32580
+ return polarAngleAxisDiscreteTicks(scale, op);
32581
+ }
32582
+ }
32583
+ }
32584
+ return convertDomainToTickData(scale.domain());
32444
32585
  };
32445
32586
 
32446
32587
  function isDataView(obj) {
32447
- return obj instanceof DataView;
32588
+ return obj instanceof DataView;
32448
32589
  }
32449
32590
  function isHTMLElement(obj) {
32450
- try {
32451
- return obj instanceof Element;
32452
- } catch (_a) {
32453
- const htmlElementKeys = ["children", "innerHTML", "classList", "setAttribute", "tagName", "getBoundingClientRect"],
32454
- keys = Object.keys(obj);
32455
- return htmlElementKeys.every(key => keys.includes(key));
32456
- }
32591
+ try {
32592
+ return obj instanceof Element;
32593
+ }
32594
+ catch {
32595
+ const htmlElementKeys = [
32596
+ 'children',
32597
+ 'innerHTML',
32598
+ 'classList',
32599
+ 'setAttribute',
32600
+ 'tagName',
32601
+ 'getBoundingClientRect'
32602
+ ];
32603
+ const keys = Object.keys(obj);
32604
+ return htmlElementKeys.every(key => keys.includes(key));
32605
+ }
32457
32606
  }
32458
32607
 
32459
- function cloneDeepSpec(spec) {
32460
- let excludeKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ["data"];
32461
- const value = spec;
32462
- let result;
32463
- if (!isValid$3(value) || "object" != typeof value) return value;
32464
- if (isDataView(value) || isHTMLElement(value)) return value;
32465
- const isArr = isArray$3(value),
32466
- length = value.length;
32467
- result = isArr ? new Array(length) : "object" == typeof value ? {} : isBoolean$2(value) || isNumber$4(value) || isString$2(value) ? value : isDate$1(value) ? new Date(+value) : void 0;
32468
- const props = isArr ? void 0 : Object.keys(Object(value));
32469
- let index = -1;
32470
- if (result) for (; ++index < (props || value).length;) {
32471
- const key = props ? props[index] : index,
32472
- subValue = value[key];
32473
- (null == excludeKeys ? void 0 : excludeKeys.includes(key.toString())) ? result[key] = subValue : result[key] = cloneDeepSpec(subValue, excludeKeys);
32474
- }
32475
- return result;
32608
+ function cloneDeepSpec(spec, excludeKeys = ['data']) {
32609
+ const value = spec;
32610
+ let result;
32611
+ if (!isValid$3(value) || typeof value !== 'object') {
32612
+ return value;
32613
+ }
32614
+ if (isDataView(value) || isHTMLElement(value)) {
32615
+ return value;
32616
+ }
32617
+ const isArr = isArray$3(value);
32618
+ const length = value.length;
32619
+ if (isArr) {
32620
+ result = new Array(length);
32621
+ }
32622
+ else if (typeof value === 'object') {
32623
+ result = {};
32624
+ }
32625
+ else if (isBoolean$2(value) || isNumber$4(value) || isString$2(value)) {
32626
+ result = value;
32627
+ }
32628
+ else if (isDate$1(value)) {
32629
+ result = new Date(+value);
32630
+ }
32631
+ else {
32632
+ result = undefined;
32633
+ }
32634
+ const props = isArr ? undefined : Object.keys(Object(value));
32635
+ let index = -1;
32636
+ if (result) {
32637
+ while (++index < (props || value).length) {
32638
+ const key = props ? props[index] : index;
32639
+ const subValue = value[key];
32640
+ if (excludeKeys?.includes(key.toString())) {
32641
+ result[key] = subValue;
32642
+ }
32643
+ else {
32644
+ result[key] = cloneDeepSpec(subValue, excludeKeys);
32645
+ }
32646
+ }
32647
+ }
32648
+ return result;
32476
32649
  }
32477
32650
 
32478
32651
  const e10 = Math.sqrt(50);
@@ -58071,7 +58244,7 @@
58071
58244
  return TABLE_EVENT_TYPE;
58072
58245
  }
58073
58246
  options;
58074
- version = "0.25.2";
58247
+ version = "0.25.3";
58075
58248
  pagination;
58076
58249
  id = `VTable${Date.now()}`;
58077
58250
  headerStyleCache;
@@ -70734,7 +70907,7 @@
70734
70907
  }
70735
70908
 
70736
70909
  registerForVrender();
70737
- const version = "0.25.2";
70910
+ const version = "0.25.3";
70738
70911
  function getIcons() {
70739
70912
  return get$2();
70740
70913
  }