@mlightcad/cad-simple-viewer 1.7.2 → 1.7.4

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 (183) hide show
  1. package/dist/cad-simple-viewer.js +8285 -7371
  2. package/dist/cad-simple-viewer.umd.cjs +82 -82
  3. package/dist/mtext-renderer-worker.js +2434 -2363
  4. package/lib/app/AcApDocManager.d.ts +14 -0
  5. package/lib/app/AcApDocManager.d.ts.map +1 -1
  6. package/lib/app/AcApDocManager.js +46 -9
  7. package/lib/app/AcApDocManager.js.map +1 -1
  8. package/lib/app/AcApOpenDatabaseOptions.d.ts +7 -8
  9. package/lib/app/AcApOpenDatabaseOptions.d.ts.map +1 -1
  10. package/lib/command/AcApZoomCmd.d.ts +29 -0
  11. package/lib/command/AcApZoomCmd.d.ts.map +1 -1
  12. package/lib/command/AcApZoomCmd.js +83 -3
  13. package/lib/command/AcApZoomCmd.js.map +1 -1
  14. package/lib/command/convert/AcApConvertToRasterImageCmd.d.ts +4 -2
  15. package/lib/command/convert/AcApConvertToRasterImageCmd.d.ts.map +1 -1
  16. package/lib/command/convert/AcApConvertToRasterImageCmd.js +33 -17
  17. package/lib/command/convert/AcApConvertToRasterImageCmd.js.map +1 -1
  18. package/lib/command/markup/AcApMarkupCalloutCmd.d.ts.map +1 -1
  19. package/lib/command/markup/AcApMarkupCalloutCmd.js +8 -4
  20. package/lib/command/markup/AcApMarkupCalloutCmd.js.map +1 -1
  21. package/lib/command/markup/AcApMarkupShapeCallout.d.ts.map +1 -1
  22. package/lib/command/markup/AcApMarkupShapeCallout.js +8 -4
  23. package/lib/command/markup/AcApMarkupShapeCallout.js.map +1 -1
  24. package/lib/command/markup/AcApMarkupUtil.d.ts.map +1 -1
  25. package/lib/command/markup/AcApMarkupUtil.js +6 -4
  26. package/lib/command/markup/AcApMarkupUtil.js.map +1 -1
  27. package/lib/command/measure/AcApMeasureAngleArc.d.ts +9 -2
  28. package/lib/command/measure/AcApMeasureAngleArc.d.ts.map +1 -1
  29. package/lib/command/measure/AcApMeasureAngleArc.js +9 -2
  30. package/lib/command/measure/AcApMeasureAngleArc.js.map +1 -1
  31. package/lib/command/measure/AcApMeasureAngleCmd.d.ts.map +1 -1
  32. package/lib/command/measure/AcApMeasureAngleCmd.js +17 -4
  33. package/lib/command/measure/AcApMeasureAngleCmd.js.map +1 -1
  34. package/lib/command/measure/AcApMeasureArcCmd.d.ts.map +1 -1
  35. package/lib/command/measure/AcApMeasureArcCmd.js +12 -8
  36. package/lib/command/measure/AcApMeasureArcCmd.js.map +1 -1
  37. package/lib/command/measure/AcApMeasureAreaCmd.d.ts.map +1 -1
  38. package/lib/command/measure/AcApMeasureAreaCmd.js +17 -4
  39. package/lib/command/measure/AcApMeasureAreaCmd.js.map +1 -1
  40. package/lib/command/measure/AcApMeasureContinuousCmd.d.ts.map +1 -1
  41. package/lib/command/measure/AcApMeasureContinuousCmd.js +36 -6
  42. package/lib/command/measure/AcApMeasureContinuousCmd.js.map +1 -1
  43. package/lib/command/measure/AcApMeasureDistanceCmd.d.ts.map +1 -1
  44. package/lib/command/measure/AcApMeasureDistanceCmd.js +28 -8
  45. package/lib/command/measure/AcApMeasureDistanceCmd.js.map +1 -1
  46. package/lib/command/measure/AcApMeasurementStore.d.ts.map +1 -1
  47. package/lib/command/measure/AcApMeasurementStore.js +44 -28
  48. package/lib/command/measure/AcApMeasurementStore.js.map +1 -1
  49. package/lib/command/measure/entity/AcApMeasureAngleEntity.d.ts.map +1 -1
  50. package/lib/command/measure/entity/AcApMeasureAngleEntity.js +43 -7
  51. package/lib/command/measure/entity/AcApMeasureAngleEntity.js.map +1 -1
  52. package/lib/command/measure/entity/AcApMeasureArcEntity.d.ts.map +1 -1
  53. package/lib/command/measure/entity/AcApMeasureArcEntity.js +46 -8
  54. package/lib/command/measure/entity/AcApMeasureArcEntity.js.map +1 -1
  55. package/lib/command/measure/entity/AcApMeasureAreaEntity.d.ts.map +1 -1
  56. package/lib/command/measure/entity/AcApMeasureAreaEntity.js +43 -7
  57. package/lib/command/measure/entity/AcApMeasureAreaEntity.js.map +1 -1
  58. package/lib/command/measure/entity/AcApMeasureDistanceEntity.d.ts.map +1 -1
  59. package/lib/command/measure/entity/AcApMeasureDistanceEntity.js +56 -8
  60. package/lib/command/measure/entity/AcApMeasureDistanceEntity.js.map +1 -1
  61. package/lib/command/measure/entity/AcApMeasureEntity.d.ts +8 -0
  62. package/lib/command/measure/entity/AcApMeasureEntity.d.ts.map +1 -1
  63. package/lib/command/measure/entity/AcApMeasureEntity.js +16 -1
  64. package/lib/command/measure/entity/AcApMeasureEntity.js.map +1 -1
  65. package/lib/command/measure/entity/AcApMeasureEntityGrips.d.ts.map +1 -1
  66. package/lib/command/measure/entity/AcApMeasureEntityGrips.js +2 -1
  67. package/lib/command/measure/entity/AcApMeasureEntityGrips.js.map +1 -1
  68. package/lib/command/overlay/AcApHtmlLivePreview.d.ts +6 -0
  69. package/lib/command/overlay/AcApHtmlLivePreview.d.ts.map +1 -1
  70. package/lib/command/overlay/AcApHtmlLivePreview.js +9 -2
  71. package/lib/command/overlay/AcApHtmlLivePreview.js.map +1 -1
  72. package/lib/command/overlay/AcApOverlayDrawUtil.d.ts +5 -0
  73. package/lib/command/overlay/AcApOverlayDrawUtil.d.ts.map +1 -1
  74. package/lib/command/overlay/AcApOverlayDrawUtil.js +54 -23
  75. package/lib/command/overlay/AcApOverlayDrawUtil.js.map +1 -1
  76. package/lib/editor/global/AcEdConditionWaiter.d.ts +3 -0
  77. package/lib/editor/global/AcEdConditionWaiter.d.ts.map +1 -1
  78. package/lib/editor/global/AcEdConditionWaiter.js +9 -2
  79. package/lib/editor/global/AcEdConditionWaiter.js.map +1 -1
  80. package/lib/editor/view/AcEdBaseView.d.ts +22 -0
  81. package/lib/editor/view/AcEdBaseView.d.ts.map +1 -1
  82. package/lib/editor/view/AcEdBaseView.js.map +1 -1
  83. package/lib/i18n/ar/jig.d.ts +10 -0
  84. package/lib/i18n/ar/jig.d.ts.map +1 -1
  85. package/lib/i18n/ar/jig.js +10 -2
  86. package/lib/i18n/ar/jig.js.map +1 -1
  87. package/lib/i18n/ar/main.d.ts +2 -0
  88. package/lib/i18n/ar/main.d.ts.map +1 -1
  89. package/lib/i18n/ar/main.js +2 -0
  90. package/lib/i18n/ar/main.js.map +1 -1
  91. package/lib/i18n/cs/jig.d.ts +10 -0
  92. package/lib/i18n/cs/jig.d.ts.map +1 -1
  93. package/lib/i18n/cs/jig.js +13 -3
  94. package/lib/i18n/cs/jig.js.map +1 -1
  95. package/lib/i18n/cs/main.d.ts +2 -0
  96. package/lib/i18n/cs/main.d.ts.map +1 -1
  97. package/lib/i18n/cs/main.js +2 -0
  98. package/lib/i18n/cs/main.js.map +1 -1
  99. package/lib/i18n/en/jig.d.ts +10 -0
  100. package/lib/i18n/en/jig.d.ts.map +1 -1
  101. package/lib/i18n/en/jig.js +13 -3
  102. package/lib/i18n/en/jig.js.map +1 -1
  103. package/lib/i18n/en/main.d.ts +2 -0
  104. package/lib/i18n/en/main.d.ts.map +1 -1
  105. package/lib/i18n/en/main.js +2 -0
  106. package/lib/i18n/en/main.js.map +1 -1
  107. package/lib/i18n/tr/jig.d.ts +10 -0
  108. package/lib/i18n/tr/jig.d.ts.map +1 -1
  109. package/lib/i18n/tr/jig.js +13 -3
  110. package/lib/i18n/tr/jig.js.map +1 -1
  111. package/lib/i18n/tr/main.d.ts +2 -0
  112. package/lib/i18n/tr/main.d.ts.map +1 -1
  113. package/lib/i18n/tr/main.js +2 -0
  114. package/lib/i18n/tr/main.js.map +1 -1
  115. package/lib/i18n/zh/jig.d.ts +10 -0
  116. package/lib/i18n/zh/jig.d.ts.map +1 -1
  117. package/lib/i18n/zh/jig.js +13 -3
  118. package/lib/i18n/zh/jig.js.map +1 -1
  119. package/lib/i18n/zh/main.d.ts +2 -0
  120. package/lib/i18n/zh/main.d.ts.map +1 -1
  121. package/lib/i18n/zh/main.js +2 -0
  122. package/lib/i18n/zh/main.js.map +1 -1
  123. package/lib/spatialIndex/AcTrHierarchicalSpatialIndex.d.ts +11 -0
  124. package/lib/spatialIndex/AcTrHierarchicalSpatialIndex.d.ts.map +1 -1
  125. package/lib/spatialIndex/AcTrHierarchicalSpatialIndex.js +98 -3
  126. package/lib/spatialIndex/AcTrHierarchicalSpatialIndex.js.map +1 -1
  127. package/lib/ui/icons.d.ts +2 -0
  128. package/lib/ui/icons.d.ts.map +1 -1
  129. package/lib/ui/icons.js +2 -0
  130. package/lib/ui/icons.js.map +1 -1
  131. package/lib/util/AcApDrawingExtents.d.ts +29 -0
  132. package/lib/util/AcApDrawingExtents.d.ts.map +1 -0
  133. package/lib/util/AcApDrawingExtents.js +34 -0
  134. package/lib/util/AcApDrawingExtents.js.map +1 -0
  135. package/lib/util/AcApFontUtil.d.ts +18 -0
  136. package/lib/util/AcApFontUtil.d.ts.map +1 -1
  137. package/lib/util/AcApFontUtil.js +126 -0
  138. package/lib/util/AcApFontUtil.js.map +1 -1
  139. package/lib/util/AcApMeasureBadgeFont.d.ts +99 -0
  140. package/lib/util/AcApMeasureBadgeFont.d.ts.map +1 -0
  141. package/lib/util/AcApMeasureBadgeFont.js +207 -0
  142. package/lib/util/AcApMeasureBadgeFont.js.map +1 -0
  143. package/lib/util/AcApMeasurementUnits.d.ts.map +1 -1
  144. package/lib/util/AcApMeasurementUnits.js +41 -2
  145. package/lib/util/AcApMeasurementUnits.js.map +1 -1
  146. package/lib/util/index.d.ts +2 -0
  147. package/lib/util/index.d.ts.map +1 -1
  148. package/lib/util/index.js +2 -0
  149. package/lib/util/index.js.map +1 -1
  150. package/lib/view/AcTrExtentCluster.d.ts +40 -0
  151. package/lib/view/AcTrExtentCluster.d.ts.map +1 -0
  152. package/lib/view/AcTrExtentCluster.js +209 -0
  153. package/lib/view/AcTrExtentCluster.js.map +1 -0
  154. package/lib/view/AcTrIntelligentExtents.d.ts +30 -0
  155. package/lib/view/AcTrIntelligentExtents.d.ts.map +1 -0
  156. package/lib/view/AcTrIntelligentExtents.js +328 -0
  157. package/lib/view/AcTrIntelligentExtents.js.map +1 -0
  158. package/lib/view/AcTrLayer.d.ts +4 -0
  159. package/lib/view/AcTrLayer.d.ts.map +1 -1
  160. package/lib/view/AcTrLayer.js +6 -0
  161. package/lib/view/AcTrLayer.js.map +1 -1
  162. package/lib/view/AcTrLayout.d.ts +46 -1
  163. package/lib/view/AcTrLayout.d.ts.map +1 -1
  164. package/lib/view/AcTrLayout.js +132 -0
  165. package/lib/view/AcTrLayout.js.map +1 -1
  166. package/lib/view/AcTrScene.d.ts +4 -0
  167. package/lib/view/AcTrScene.d.ts.map +1 -1
  168. package/lib/view/AcTrScene.js +6 -0
  169. package/lib/view/AcTrScene.js.map +1 -1
  170. package/lib/view/AcTrView2d.d.ts +18 -4
  171. package/lib/view/AcTrView2d.d.ts.map +1 -1
  172. package/lib/view/AcTrView2d.js +202 -43
  173. package/lib/view/AcTrView2d.js.map +1 -1
  174. package/lib/view/AcTrWorkSlice.d.ts +23 -0
  175. package/lib/view/AcTrWorkSlice.d.ts.map +1 -0
  176. package/lib/view/AcTrWorkSlice.js +92 -0
  177. package/lib/view/AcTrWorkSlice.js.map +1 -0
  178. package/lib/view/index.d.ts +2 -0
  179. package/lib/view/index.d.ts.map +1 -1
  180. package/lib/view/index.js +2 -0
  181. package/lib/view/index.js.map +1 -1
  182. package/package.json +10 -10
  183. package/src/ui/icons.ts +5 -0
@@ -0,0 +1,207 @@
1
+ /**
2
+ * Fit-to-screen measure badges must not swallow the segment they label.
3
+ * Capsule width is limited to a fraction of the segment's screen length.
4
+ *
5
+ * Capsule padding and border are authored in `em` (see {@link AcTrHtmlBadge}),
6
+ * so horizontal chrome scales with font size.
7
+ */
8
+ var __values = (this && this.__values) || function(o) {
9
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
10
+ if (m) return m.call(o);
11
+ if (o && typeof o.length === "number") return {
12
+ next: function () {
13
+ if (o && i >= o.length) o = void 0;
14
+ return { value: o && o[i++], done: !o };
15
+ }
16
+ };
17
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
18
+ };
19
+ /** Reference font size matching {@link AcTrHtmlBadge} authoring. */
20
+ export var ACAP_MEASURE_BADGE_REF_FONT_PX = 13;
21
+ /** Horizontal padding at {@link ACAP_MEASURE_BADGE_REF_FONT_PX} (each side). */
22
+ export var ACAP_MEASURE_BADGE_PAD_X_PX = 14;
23
+ /** Border width at {@link ACAP_MEASURE_BADGE_REF_FONT_PX} (each side). */
24
+ export var ACAP_MEASURE_BADGE_BORDER_PX = 1;
25
+ /**
26
+ * Horizontal pad+border at the reference font size (legacy constant).
27
+ * Prefer {@link acapMeasureBadgeChromePx} when font size varies.
28
+ */
29
+ export var ACAP_MEASURE_BADGE_H_CHROME_PX = ACAP_MEASURE_BADGE_PAD_X_PX * 2 + ACAP_MEASURE_BADGE_BORDER_PX * 2;
30
+ /** Max fraction of the measured segment a mid-line badge may occupy. */
31
+ export var ACAP_MEASURE_BADGE_MAX_LINE_FRACTION = 0.5;
32
+ /**
33
+ * Angle badge reference uses this fraction of the shorter arm (screen),
34
+ * matching the dimension-arc radius so the capsule stays near the wedge.
35
+ */
36
+ export var ACAP_MEASURE_ANGLE_BADGE_REF_ARM_FRACTION = 0.5;
37
+ var measureCtx;
38
+ function textMeasureContext() {
39
+ if (measureCtx !== undefined)
40
+ return measureCtx;
41
+ if (typeof document === 'undefined') {
42
+ measureCtx = null;
43
+ return null;
44
+ }
45
+ try {
46
+ measureCtx = document.createElement('canvas').getContext('2d');
47
+ }
48
+ catch (_a) {
49
+ measureCtx = null;
50
+ }
51
+ return measureCtx;
52
+ }
53
+ function padXEm(options) {
54
+ var _a;
55
+ return ((_a = options === null || options === void 0 ? void 0 : options.padXEm) !== null && _a !== void 0 ? _a : ACAP_MEASURE_BADGE_PAD_X_PX / ACAP_MEASURE_BADGE_REF_FONT_PX);
56
+ }
57
+ function borderEm(options) {
58
+ var _a;
59
+ var b = (_a = options === null || options === void 0 ? void 0 : options.borderEm) !== null && _a !== void 0 ? _a : ACAP_MEASURE_BADGE_BORDER_PX / ACAP_MEASURE_BADGE_REF_FONT_PX;
60
+ return b > 0 ? b : 0;
61
+ }
62
+ /** Horizontal capsule chrome (pad + border) at a given font size. */
63
+ export function acapMeasureBadgeChromePx(fontSizePx, options) {
64
+ if (!(fontSizePx > 0))
65
+ return 0;
66
+ return 2 * (padXEm(options) + borderEm(options)) * fontSizePx;
67
+ }
68
+ /** Estimates the rendered width of a measure value capsule at `fontSizePx`. */
69
+ export function acapEstimateMeasureBadgeWidthPx(text, fontSizePx, options) {
70
+ var _a, _b;
71
+ var chrome = acapMeasureBadgeChromePx(fontSizePx, options);
72
+ if (!(fontSizePx > 0))
73
+ return chrome;
74
+ var ctx = textMeasureContext();
75
+ if (!ctx) {
76
+ // Headless / no canvas: rough CJK-aware fallback (~0.6em average).
77
+ return text.length * fontSizePx * 0.6 + chrome;
78
+ }
79
+ var weight = (_a = options === null || options === void 0 ? void 0 : options.fontWeight) !== null && _a !== void 0 ? _a : '500';
80
+ var family = (_b = options === null || options === void 0 ? void 0 : options.fontFamily) !== null && _b !== void 0 ? _b : 'sans-serif';
81
+ ctx.font = "".concat(weight, " ").concat(fontSizePx, "px ").concat(family);
82
+ return ctx.measureText(text).width + chrome;
83
+ }
84
+ /**
85
+ * Returns `preferredFontSizePx`, or a smaller size so the capsule width is at
86
+ * most {@link ACAP_MEASURE_BADGE_MAX_LINE_FRACTION} of `lineLengthScreenPx`.
87
+ *
88
+ * Assumes em-based horizontal padding and border so chrome shrinks with the font.
89
+ */
90
+ export function acapClampMeasureBadgeFontSize(text, preferredFontSizePx, lineLengthScreenPx, options) {
91
+ var _a;
92
+ if (!(preferredFontSizePx > 0) || !(lineLengthScreenPx > 0)) {
93
+ return preferredFontSizePx;
94
+ }
95
+ var fraction = (_a = options === null || options === void 0 ? void 0 : options.maxLineFraction) !== null && _a !== void 0 ? _a : ACAP_MEASURE_BADGE_MAX_LINE_FRACTION;
96
+ var maxWidth = lineLengthScreenPx * fraction;
97
+ var preferredWidth = acapEstimateMeasureBadgeWidthPx(text, preferredFontSizePx, options);
98
+ if (preferredWidth <= maxWidth)
99
+ return preferredFontSizePx;
100
+ if (!(maxWidth > 0))
101
+ return 1;
102
+ var textWidth = Math.max(0, preferredWidth - acapMeasureBadgeChromePx(preferredFontSizePx, options));
103
+ var kText = textWidth / preferredFontSizePx;
104
+ var kChrome = 2 * (padXEm(options) + borderEm(options));
105
+ var denom = kText + kChrome;
106
+ if (!(denom > 0))
107
+ return preferredFontSizePx;
108
+ return Math.max(1, maxWidth / denom);
109
+ }
110
+ /**
111
+ * Fit-to-screen only: clamp badge font so the capsule stays within half the
112
+ * segment. Custom (WCS) heights are left unchanged.
113
+ */
114
+ export function acapAdaptiveMeasureBadgeFontSize(text, style, lineLengthScreenPx, options) {
115
+ if (style.textHeightMode === 'custom')
116
+ return style.fontSize;
117
+ return acapClampMeasureBadgeFontSize(text, style.fontSize, lineLengthScreenPx, options);
118
+ }
119
+ /** Screen-space length of a world-space segment. */
120
+ export function acapScreenSegmentLengthPx(worldToScreen, a, b) {
121
+ var sa = worldToScreen(a);
122
+ var sb = worldToScreen(b);
123
+ return Math.hypot(sb.x - sa.x, sb.y - sa.y);
124
+ }
125
+ /**
126
+ * Scales a Fit-to-screen overlay length (arrow head, etc.) with the badge font
127
+ * clamp so endpoint arrows shrink when the capsule is forced smaller.
128
+ */
129
+ export function acapScaleMeasureOverlayPx(preferredPx, preferredFontSizePx, clampedFontSizePx) {
130
+ if (!(preferredPx > 0) || !(preferredFontSizePx > 0))
131
+ return preferredPx;
132
+ if (!(clampedFontSizePx > 0) || clampedFontSizePx >= preferredFontSizePx) {
133
+ return preferredPx;
134
+ }
135
+ return Math.max(1, preferredPx * (clampedFontSizePx / preferredFontSizePx));
136
+ }
137
+ /** Screen length of the angle dimension arc radius (shorter arm × fraction). */
138
+ export function acapScreenAngleBadgeRefLengthPx(worldToScreen, vertex, arm1, arm2) {
139
+ return (Math.min(acapScreenSegmentLengthPx(worldToScreen, vertex, arm1), acapScreenSegmentLengthPx(worldToScreen, vertex, arm2)) * ACAP_MEASURE_ANGLE_BADGE_REF_ARM_FRACTION);
140
+ }
141
+ /**
142
+ * Screen length of a measured arc, via uniform scale `screenR / radiusWcs`.
143
+ */
144
+ export function acapScreenArcLengthPx(worldToScreen, center, radiusWcs, arcLengthWcs) {
145
+ if (!(radiusWcs > 0) || !(arcLengthWcs > 0))
146
+ return 0;
147
+ var a = worldToScreen(center);
148
+ var b = worldToScreen({ x: center.x + radiusWcs, y: center.y });
149
+ var screenR = Math.hypot(b.x - a.x, b.y - a.y);
150
+ return (screenR / radiusWcs) * arcLengthWcs;
151
+ }
152
+ /** Distance from point `p` to segment `a`→`b` in the same coordinate space. */
153
+ function distPointToSegment2d(p, a, b) {
154
+ var dx = b.x - a.x;
155
+ var dy = b.y - a.y;
156
+ var len2 = dx * dx + dy * dy;
157
+ if (!(len2 > 0))
158
+ return Math.hypot(p.x - a.x, p.y - a.y);
159
+ var t = ((p.x - a.x) * dx + (p.y - a.y) * dy) / len2;
160
+ t = Math.max(0, Math.min(1, t));
161
+ return Math.hypot(p.x - (a.x + t * dx), p.y - (a.y + t * dy));
162
+ }
163
+ /**
164
+ * Reference screen length for an area badge at the vertex centroid.
165
+ *
166
+ * Uses the shorter of: minimum polygon edge, and twice the screen distance
167
+ * from the centroid to the nearest edge (local “width” around the label).
168
+ */
169
+ export function acapScreenAreaBadgeRefLengthPx(worldToScreen, points) {
170
+ var e_1, _a;
171
+ var n = points.length;
172
+ if (n < 3)
173
+ return 0;
174
+ var minEdge = Infinity;
175
+ for (var i = 0; i < n; i++) {
176
+ var a = points[i];
177
+ var b = points[(i + 1) % n];
178
+ minEdge = Math.min(minEdge, acapScreenSegmentLengthPx(worldToScreen, a, b));
179
+ }
180
+ var cx = 0;
181
+ var cy = 0;
182
+ try {
183
+ for (var points_1 = __values(points), points_1_1 = points_1.next(); !points_1_1.done; points_1_1 = points_1.next()) {
184
+ var p = points_1_1.value;
185
+ cx += p.x;
186
+ cy += p.y;
187
+ }
188
+ }
189
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
190
+ finally {
191
+ try {
192
+ if (points_1_1 && !points_1_1.done && (_a = points_1.return)) _a.call(points_1);
193
+ }
194
+ finally { if (e_1) throw e_1.error; }
195
+ }
196
+ cx /= n;
197
+ cy /= n;
198
+ var sc = worldToScreen({ x: cx, y: cy });
199
+ var minToEdge = Infinity;
200
+ for (var i = 0; i < n; i++) {
201
+ var a = worldToScreen(points[i]);
202
+ var b = worldToScreen(points[(i + 1) % n]);
203
+ minToEdge = Math.min(minToEdge, distPointToSegment2d(sc, a, b));
204
+ }
205
+ return Math.min(minEdge, 2 * minToEdge);
206
+ }
207
+ //# sourceMappingURL=AcApMeasureBadgeFont.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcApMeasureBadgeFont.js","sourceRoot":"","sources":["../../src/util/AcApMeasureBadgeFont.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AcApMeasurementUnits.d.ts","sourceRoot":"","sources":["../../src/util/AcApMeasurementUnits.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,oBAAoB,EAE1B,MAAM,uBAAuB,CAAA;AAE9B,4EAA4E;AAC5E,MAAM,WAAW,oBAAoB;IACnC,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAA;IACd,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAA;IACd,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAA;IACd,6FAA6F;IAC7F,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,+EAA+E;AAC/E,eAAO,MAAM,sCAAsC,KAAK,CAAA;AA+CxD,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,MAAM,CAIR;AAED,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,MAAM,CAGR;AAED,mFAAmF;AACnF,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,uFAAuF;AACvF,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhD,uEAAuE;AACvE,eAAO,MAAM,iCAAiC,EAAE,oBAG/C,CAAA;AAYD,2DAA2D;AAC3D,eAAO,MAAM,gCAAgC,EAAE,oBAI9C,CAAA;AAoBD;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,EAAE,EAAE,YAAY,GACf,oBAAoB,CAUtB;AAED,4EAA4E;AAC5E,wBAAgB,0BAA0B,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAE1E;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACnC,IAAI,CAON;AAED,wEAAwE;AACxE,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD;AA+GD,kEAAkE;AAClE,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,oBAAwD,GAChE,MAAM,CAgBR;AAED,8EAA8E;AAC9E,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,oBAAwD,GAChE,MAAM,CAgBR;AAED,oEAAoE;AACpE,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,YAAY,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,oBAAuD,GAC/D,MAAM,CAIR;AAED,2DAA2D;AAC3D,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,oBAAoB,GAC1B,MAAM,CAcR"}
1
+ {"version":3,"file":"AcApMeasurementUnits.d.ts","sourceRoot":"","sources":["../../src/util/AcApMeasurementUnits.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,oBAAoB,EAE1B,MAAM,uBAAuB,CAAA;AAE9B,4EAA4E;AAC5E,MAAM,WAAW,oBAAoB;IACnC,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAA;IACd,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAA;IACd,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAA;IACd,6FAA6F;IAC7F,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,+EAA+E;AAC/E,eAAO,MAAM,sCAAsC,KAAK,CAAA;AA+CxD,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,MAAM,CAIR;AAED,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,MAAM,CAGR;AAED,mFAAmF;AACnF,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,uFAAuF;AACvF,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhD,uEAAuE;AACvE,eAAO,MAAM,iCAAiC,EAAE,oBAG/C,CAAA;AAYD,2DAA2D;AAC3D,eAAO,MAAM,gCAAgC,EAAE,oBAI9C,CAAA;AAoBD;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,EAAE,EAAE,YAAY,GACf,oBAAoB,CAUtB;AAED,4EAA4E;AAC5E,wBAAgB,0BAA0B,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAE1E;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACnC,IAAI,CAON;AAED,wEAAwE;AACxE,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD;AA+GD,kEAAkE;AAClE,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,oBAAwD,GAChE,MAAM,CAgBR;AAED,8EAA8E;AAC9E,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,oBAAwD,GAChE,MAAM,CAgBR;AA4CD,oEAAoE;AACpE,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,YAAY,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,oBAAuD,GAC/D,MAAM,CAUR;AAED,2DAA2D;AAC3D,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,oBAAoB,GAC1B,MAAM,CAcR"}
@@ -9,7 +9,7 @@ var __assign = (this && this.__assign) || function () {
9
9
  };
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
- import { AcDbLinearUnits } from '@mlightcad/data-model';
12
+ import { AcDbAngleUnits, AcDbLinearUnits } from '@mlightcad/data-model';
13
13
  /** Sentinel length unit meaning "follow the drawing units" (no conversion). */
14
14
  export var MEASUREMENT_LENGTH_UNIT_FOLLOW_DRAWING = -1;
15
15
  /** AutoCAD INSUNITS code → scale factor expressed in millimeters. */
@@ -245,11 +245,50 @@ export function formatMeasurementArea(db, value, options) {
245
245
  var symbol = measurementLengthUnitSymbol(target);
246
246
  return symbol ? "".concat(text, " ").concat(symbol, "\u00B2") : "".concat(text, "\u00B2");
247
247
  }
248
+ /**
249
+ * Rounds `value` to `precision` decimal places.
250
+ *
251
+ * Used to work around {@link AcDbFormatter} `formatDecimal`: for non-integers it
252
+ * runs `toFixed(precision)` then strips with `/\.?0+$/`, which turns `"90"` into
253
+ * `"9"` (and `"100"` into `"1"`). Pre-rounding lets whole numbers hit the
254
+ * `Number.isInteger` fast path that returns the full digit string.
255
+ */
256
+ function quantizeDecimal(value, precision) {
257
+ if (!Number.isFinite(value))
258
+ return value;
259
+ var p = Math.max(0, Math.floor(precision));
260
+ var factor = Math.pow(10, p);
261
+ var quantized = Math.round(value * factor) / factor;
262
+ return Object.is(quantized, -0) ? 0 : quantized;
263
+ }
264
+ /**
265
+ * Pre-round an included angle so {@link AcDbFormatter.formatAngle} cannot drop
266
+ * trailing zeros from the decimal-degree (or similar) display string.
267
+ */
268
+ function radiansForMeasurementFormat(radians, aunits, auprec) {
269
+ switch (aunits) {
270
+ case AcDbAngleUnits.DecimalDegrees: {
271
+ var deg = quantizeDecimal((radians * 180) / Math.PI, auprec);
272
+ return (deg * Math.PI) / 180;
273
+ }
274
+ case AcDbAngleUnits.Gradians: {
275
+ // π rad = 200 gon
276
+ var grads = quantizeDecimal(radians * (200 / Math.PI), auprec);
277
+ return grads * (Math.PI / 200);
278
+ }
279
+ case AcDbAngleUnits.Radians:
280
+ return quantizeDecimal(radians, auprec);
281
+ default:
282
+ return radians;
283
+ }
284
+ }
248
285
  /** Format an angle in radians using effective measurement units. */
249
286
  export function formatMeasurementAngle(db, radians, options) {
250
287
  if (options === void 0) { options = MEASUREMENT_ANGLE_FORMAT_OPTIONS; }
251
288
  return withMeasurementFormatContext(db, function () {
252
- return db.formatter.formatAngle(radians, options);
289
+ var _a = getEffectiveMeasurementUnits(db), aunits = _a.aunits, auprec = _a.auprec;
290
+ var value = radiansForMeasurementFormat(radians, aunits, auprec);
291
+ return db.formatter.formatAngle(value, __assign(__assign(__assign({}, MEASUREMENT_ANGLE_FORMAT_OPTIONS), options), { applyAngbaseAngdir: false }));
253
292
  });
254
293
  }
255
294
  /** Format a stored measurement value for a badge label. */
@@ -1 +1 @@
1
- {"version":3,"file":"AcApMeasurementUnits.js","sourceRoot":"","sources":["../../src/util/AcApMeasurementUnits.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AcApMeasurementUnits.js","sourceRoot":"","sources":["../../src/util/AcApMeasurementUnits.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,12 @@ export * from './AcApAciPalette';
2
2
  export * from './AcApCommandUtil';
3
3
  export * from './AcApCssColor';
4
4
  export * from './AcApDatabaseEdit';
5
+ export * from './AcApDrawingExtents';
5
6
  export * from './AcApGeTransform';
6
7
  export * from './AcApExportFileNameUtil';
7
8
  export * from './AcApFontUtil';
8
9
  export * from './AcApMeasurementUtil';
10
+ export * from './AcApMeasureBadgeFont';
9
11
  export * from './AcApMeasurementUnits';
10
12
  export * from './AcApOpenFileErrorMessage';
11
13
  export * from './AcApMessageLink';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,mBAAmB,CAAA;AACjC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,wCAAwC,CAAA;AACtD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,mBAAmB,CAAA;AACjC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,wCAAwC,CAAA;AACtD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,oBAAoB,CAAA"}
package/lib/util/index.js CHANGED
@@ -2,10 +2,12 @@ export * from './AcApAciPalette';
2
2
  export * from './AcApCommandUtil';
3
3
  export * from './AcApCssColor';
4
4
  export * from './AcApDatabaseEdit';
5
+ export * from './AcApDrawingExtents';
5
6
  export * from './AcApGeTransform';
6
7
  export * from './AcApExportFileNameUtil';
7
8
  export * from './AcApFontUtil';
8
9
  export * from './AcApMeasurementUtil';
10
+ export * from './AcApMeasureBadgeFont';
9
11
  export * from './AcApMeasurementUnits';
10
12
  export * from './AcApOpenFileErrorMessage';
11
13
  export * from './AcApMessageLink';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,mBAAmB,CAAA;AACjC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,wCAAwC,CAAA;AACtD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,mBAAmB,CAAA;AACjC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,wCAAwC,CAAA;AACtD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,oBAAoB,CAAA"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Axis-aligned box used while peeling outlier clusters for intelligent fit.
3
+ */
4
+ export interface AcTrClusterBox {
5
+ minX: number;
6
+ minY: number;
7
+ maxX: number;
8
+ maxY: number;
9
+ }
10
+ /**
11
+ * Peels far outlier boxes along one axis, keeping the denser majority side.
12
+ *
13
+ * Mirrors the PDF/HTML exporter's dominant-cluster heuristic: a gap must exceed
14
+ * both a fraction of the full span and an outlier threshold based on typical
15
+ * nearest-neighbor spacing inside the majority side. Small samples (< 8) are
16
+ * left unchanged so sparse drawings are not over-pruned.
17
+ *
18
+ * @param boxes - Candidate boxes (mutated only via returned subset).
19
+ * @param axis - Projection axis for the gap search.
20
+ * @returns Majority-side boxes, or the input when no outlier-scale gap exists.
21
+ */
22
+ export declare function splitDominantCluster(boxes: AcTrClusterBox[], axis: 'x' | 'y'): AcTrClusterBox[];
23
+ /**
24
+ * Unions boxes after iteratively peeling dominant-cluster outliers on X then Y.
25
+ *
26
+ * @param boxes - Finite, non-empty candidate boxes.
27
+ * @returns Union of the surviving cluster, or `null` when empty.
28
+ */
29
+ export declare function unionDominantCluster(boxes: AcTrClusterBox[]): AcTrClusterBox | null;
30
+ /**
31
+ * Async variant of {@link unionDominantCluster} that yields between peel
32
+ * iterations so large drawings do not freeze the UI thread.
33
+ *
34
+ * Produces the same box as the synchronous version for the same input.
35
+ */
36
+ export declare function unionDominantClusterAsync(boxes: AcTrClusterBox[], work: {
37
+ maybeYield(): Promise<void>;
38
+ yieldNow(): Promise<void>;
39
+ }): Promise<AcTrClusterBox | null>;
40
+ //# sourceMappingURL=AcTrExtentCluster.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcTrExtentCluster.d.ts","sourceRoot":"","sources":["../../src/view/AcTrExtentCluster.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,cAAc,EAAE,EACvB,IAAI,EAAE,GAAG,GAAG,GAAG,GACd,cAAc,EAAE,CAgDlB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,cAAc,EAAE,GACtB,cAAc,GAAG,IAAI,CAgBvB;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,cAAc,EAAE,EACvB,IAAI,EAAE;IAAE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,GAC/D,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAkBhC"}
@@ -0,0 +1,209 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
12
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ var __values = (this && this.__values) || function(o) {
38
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
39
+ if (m) return m.call(o);
40
+ if (o && typeof o.length === "number") return {
41
+ next: function () {
42
+ if (o && i >= o.length) o = void 0;
43
+ return { value: o && o[i++], done: !o };
44
+ }
45
+ };
46
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
47
+ };
48
+ /**
49
+ * Peels far outlier boxes along one axis, keeping the denser majority side.
50
+ *
51
+ * Mirrors the PDF/HTML exporter's dominant-cluster heuristic: a gap must exceed
52
+ * both a fraction of the full span and an outlier threshold based on typical
53
+ * nearest-neighbor spacing inside the majority side. Small samples (< 8) are
54
+ * left unchanged so sparse drawings are not over-pruned.
55
+ *
56
+ * @param boxes - Candidate boxes (mutated only via returned subset).
57
+ * @param axis - Projection axis for the gap search.
58
+ * @returns Majority-side boxes, or the input when no outlier-scale gap exists.
59
+ */
60
+ export function splitDominantCluster(boxes, axis) {
61
+ if (boxes.length < 8) {
62
+ return boxes;
63
+ }
64
+ var keyed = boxes
65
+ .map(function (box) { return ({
66
+ value: axis === 'x' ? (box.minX + box.maxX) / 2 : (box.minY + box.maxY) / 2,
67
+ box: box
68
+ }); })
69
+ .sort(function (a, b) { return a.value - b.value; });
70
+ var span = keyed[keyed.length - 1].value - keyed[0].value;
71
+ if (!(span > 0)) {
72
+ return boxes;
73
+ }
74
+ var bestGap = 0;
75
+ var bestIndex = 0;
76
+ for (var i = 1; i < keyed.length; i++) {
77
+ var gap = keyed[i].value - keyed[i - 1].value;
78
+ if (gap > bestGap) {
79
+ bestGap = gap;
80
+ bestIndex = i;
81
+ }
82
+ }
83
+ if (bestGap < span * 0.2) {
84
+ return boxes;
85
+ }
86
+ var left = keyed.slice(0, bestIndex);
87
+ var right = keyed.slice(bestIndex);
88
+ var majority = left.length >= right.length ? left : right;
89
+ var sizes = boxes.map(function (box) {
90
+ return Math.max(box.maxX - box.minX, box.maxY - box.minY, 1e-9);
91
+ });
92
+ sizes.sort(function (a, b) { return a - b; });
93
+ var medianSize = sizes[Math.floor(sizes.length / 2)] || 1;
94
+ var majNnGaps = [];
95
+ for (var i = 1; i < majority.length; i++) {
96
+ majNnGaps.push(majority[i].value - majority[i - 1].value);
97
+ }
98
+ majNnGaps.sort(function (a, b) { return a - b; });
99
+ var typicalGap = majNnGaps.length > 0
100
+ ? majNnGaps[Math.floor(majNnGaps.length / 2)] || medianSize
101
+ : medianSize;
102
+ var outlierGap = Math.max(typicalGap * 10, medianSize * 20);
103
+ if (bestGap < outlierGap) {
104
+ return boxes;
105
+ }
106
+ return majority.map(function (item) { return item.box; });
107
+ }
108
+ /**
109
+ * Unions boxes after iteratively peeling dominant-cluster outliers on X then Y.
110
+ *
111
+ * @param boxes - Finite, non-empty candidate boxes.
112
+ * @returns Union of the surviving cluster, or `null` when empty.
113
+ */
114
+ export function unionDominantCluster(boxes) {
115
+ var _a;
116
+ if (boxes.length === 0) {
117
+ return null;
118
+ }
119
+ var fallback = unionBoxes(boxes);
120
+ if (boxes.length < 8) {
121
+ return fallback;
122
+ }
123
+ var working = boxes.slice();
124
+ var previous = -1;
125
+ while (working.length !== previous) {
126
+ previous = working.length;
127
+ working = splitDominantCluster(working, 'x');
128
+ working = splitDominantCluster(working, 'y');
129
+ }
130
+ return (_a = unionBoxes(working)) !== null && _a !== void 0 ? _a : fallback;
131
+ }
132
+ /**
133
+ * Async variant of {@link unionDominantCluster} that yields between peel
134
+ * iterations so large drawings do not freeze the UI thread.
135
+ *
136
+ * Produces the same box as the synchronous version for the same input.
137
+ */
138
+ export function unionDominantClusterAsync(boxes, work) {
139
+ return __awaiter(this, void 0, void 0, function () {
140
+ var fallback, working, previous;
141
+ var _a;
142
+ return __generator(this, function (_b) {
143
+ switch (_b.label) {
144
+ case 0:
145
+ if (boxes.length === 0) {
146
+ return [2 /*return*/, null];
147
+ }
148
+ fallback = unionBoxes(boxes);
149
+ if (boxes.length < 8) {
150
+ return [2 /*return*/, fallback];
151
+ }
152
+ working = boxes.slice();
153
+ previous = -1;
154
+ _b.label = 1;
155
+ case 1:
156
+ if (!(working.length !== previous)) return [3 /*break*/, 4];
157
+ previous = working.length;
158
+ return [4 /*yield*/, work.maybeYield()];
159
+ case 2:
160
+ _b.sent();
161
+ working = splitDominantCluster(working, 'x');
162
+ return [4 /*yield*/, work.maybeYield()];
163
+ case 3:
164
+ _b.sent();
165
+ working = splitDominantCluster(working, 'y');
166
+ return [3 /*break*/, 1];
167
+ case 4: return [2 /*return*/, (_a = unionBoxes(working)) !== null && _a !== void 0 ? _a : fallback];
168
+ }
169
+ });
170
+ });
171
+ }
172
+ function unionBoxes(boxes) {
173
+ var e_1, _a;
174
+ if (boxes.length === 0) {
175
+ return null;
176
+ }
177
+ var minX = Infinity;
178
+ var minY = Infinity;
179
+ var maxX = -Infinity;
180
+ var maxY = -Infinity;
181
+ try {
182
+ for (var boxes_1 = __values(boxes), boxes_1_1 = boxes_1.next(); !boxes_1_1.done; boxes_1_1 = boxes_1.next()) {
183
+ var box = boxes_1_1.value;
184
+ if (box.minX < minX)
185
+ minX = box.minX;
186
+ if (box.minY < minY)
187
+ minY = box.minY;
188
+ if (box.maxX > maxX)
189
+ maxX = box.maxX;
190
+ if (box.maxY > maxY)
191
+ maxY = box.maxY;
192
+ }
193
+ }
194
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
195
+ finally {
196
+ try {
197
+ if (boxes_1_1 && !boxes_1_1.done && (_a = boxes_1.return)) _a.call(boxes_1);
198
+ }
199
+ finally { if (e_1) throw e_1.error; }
200
+ }
201
+ if (!Number.isFinite(minX) ||
202
+ !Number.isFinite(minY) ||
203
+ !Number.isFinite(maxX) ||
204
+ !Number.isFinite(maxY)) {
205
+ return null;
206
+ }
207
+ return { minX: minX, minY: minY, maxX: maxX, maxY: maxY };
208
+ }
209
+ //# sourceMappingURL=AcTrExtentCluster.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcTrExtentCluster.js","sourceRoot":"","sources":["../../src/view/AcTrExtentCluster.ts"],"names":[],"mappings":"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"}