@mlightcad/cad-simple-viewer 1.7.4 → 1.7.6-preview.0

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 (190) hide show
  1. package/README.md +5 -0
  2. package/dist/cad-simple-viewer.js +11114 -8898
  3. package/dist/cad-simple-viewer.umd.cjs +432 -88
  4. package/dist/mtext-renderer-worker.js +2987 -2815
  5. package/find.ts +7 -0
  6. package/lib/app/AcApDocManager.d.ts +49 -1
  7. package/lib/app/AcApDocManager.d.ts.map +1 -1
  8. package/lib/app/AcApDocManager.js +150 -12
  9. package/lib/app/AcApDocManager.js.map +1 -1
  10. package/lib/app/AcApOpenDatabaseOptions.d.ts +33 -4
  11. package/lib/app/AcApOpenDatabaseOptions.d.ts.map +1 -1
  12. package/lib/app/AcApOpenFileDialog.d.ts +1 -1
  13. package/lib/app/AcApOpenFileDialog.d.ts.map +1 -1
  14. package/lib/app/AcApOpenFileDialog.js +22 -92
  15. package/lib/app/AcApOpenFileDialog.js.map +1 -1
  16. package/lib/app/AcApOpenFileProfiler.d.ts +14 -0
  17. package/lib/app/AcApOpenFileProfiler.d.ts.map +1 -1
  18. package/lib/app/AcApOpenFileProfiler.js +25 -3
  19. package/lib/app/AcApOpenFileProfiler.js.map +1 -1
  20. package/lib/app/AcApOpenFileProgressController.d.ts +17 -9
  21. package/lib/app/AcApOpenFileProgressController.d.ts.map +1 -1
  22. package/lib/app/AcApOpenFileProgressController.js +41 -20
  23. package/lib/app/AcApOpenFileProgressController.js.map +1 -1
  24. package/lib/app/AcApProgress.d.ts +5 -0
  25. package/lib/app/AcApProgress.d.ts.map +1 -1
  26. package/lib/app/AcApProgress.js +10 -0
  27. package/lib/app/AcApProgress.js.map +1 -1
  28. package/lib/app/dataSource/AcApDataSource.d.ts +97 -0
  29. package/lib/app/dataSource/AcApDataSource.d.ts.map +1 -0
  30. package/lib/app/dataSource/AcApDataSource.js +2 -0
  31. package/lib/app/dataSource/AcApDataSource.js.map +1 -0
  32. package/lib/app/dataSource/AcApDataSourceManager.d.ts +70 -0
  33. package/lib/app/dataSource/AcApDataSourceManager.d.ts.map +1 -0
  34. package/lib/app/dataSource/AcApDataSourceManager.js +84 -0
  35. package/lib/app/dataSource/AcApDataSourceManager.js.map +1 -0
  36. package/lib/app/dataSource/AcApLocalDataSource.d.ts +25 -0
  37. package/lib/app/dataSource/AcApLocalDataSource.d.ts.map +1 -0
  38. package/lib/app/dataSource/AcApLocalDataSource.js +153 -0
  39. package/lib/app/dataSource/AcApLocalDataSource.js.map +1 -0
  40. package/lib/app/dataSource/AcApUrlDataSource.d.ts +17 -0
  41. package/lib/app/dataSource/AcApUrlDataSource.d.ts.map +1 -0
  42. package/lib/app/dataSource/AcApUrlDataSource.js +214 -0
  43. package/lib/app/dataSource/AcApUrlDataSource.js.map +1 -0
  44. package/lib/app/dataSource/acapBuildDataSourceMenu.d.ts +42 -0
  45. package/lib/app/dataSource/acapBuildDataSourceMenu.d.ts.map +1 -0
  46. package/lib/app/dataSource/acapBuildDataSourceMenu.js +121 -0
  47. package/lib/app/dataSource/acapBuildDataSourceMenu.js.map +1 -0
  48. package/lib/app/dataSource/acapInvokeDataSourceMenuAction.d.ts +17 -0
  49. package/lib/app/dataSource/acapInvokeDataSourceMenuAction.d.ts.map +1 -0
  50. package/lib/app/dataSource/acapInvokeDataSourceMenuAction.js +74 -0
  51. package/lib/app/dataSource/acapInvokeDataSourceMenuAction.js.map +1 -0
  52. package/lib/app/dataSource/acapOpenCenteredPopup.d.ts +13 -0
  53. package/lib/app/dataSource/acapOpenCenteredPopup.d.ts.map +1 -0
  54. package/lib/app/dataSource/acapOpenCenteredPopup.js +35 -0
  55. package/lib/app/dataSource/acapOpenCenteredPopup.js.map +1 -0
  56. package/lib/app/dataSource/acapOpenDataSourceResult.d.ts +13 -0
  57. package/lib/app/dataSource/acapOpenDataSourceResult.d.ts.map +1 -0
  58. package/lib/app/dataSource/acapOpenDataSourceResult.js +90 -0
  59. package/lib/app/dataSource/acapOpenDataSourceResult.js.map +1 -0
  60. package/lib/app/dataSource/acapRunDataSourceMenuAction.d.ts +15 -0
  61. package/lib/app/dataSource/acapRunDataSourceMenuAction.d.ts.map +1 -0
  62. package/lib/app/dataSource/acapRunDataSourceMenuAction.js +74 -0
  63. package/lib/app/dataSource/acapRunDataSourceMenuAction.js.map +1 -0
  64. package/lib/app/dataSource/acapWithDataSourceBusy.d.ts +12 -0
  65. package/lib/app/dataSource/acapWithDataSourceBusy.d.ts.map +1 -0
  66. package/lib/app/dataSource/acapWithDataSourceBusy.js +88 -0
  67. package/lib/app/dataSource/acapWithDataSourceBusy.js.map +1 -0
  68. package/lib/app/dataSource/index.d.ts +11 -0
  69. package/lib/app/dataSource/index.d.ts.map +1 -0
  70. package/lib/app/dataSource/index.js +10 -0
  71. package/lib/app/dataSource/index.js.map +1 -0
  72. package/lib/app/index.d.ts +1 -0
  73. package/lib/app/index.d.ts.map +1 -1
  74. package/lib/app/index.js +1 -0
  75. package/lib/app/index.js.map +1 -1
  76. package/lib/app/openFileProgress.d.ts +8 -1
  77. package/lib/app/openFileProgress.d.ts.map +1 -1
  78. package/lib/app/openFileProgress.js +13 -2
  79. package/lib/app/openFileProgress.js.map +1 -1
  80. package/lib/app/syncCurrentSpaceFromTileMode.d.ts +25 -0
  81. package/lib/app/syncCurrentSpaceFromTileMode.d.ts.map +1 -0
  82. package/lib/app/syncCurrentSpaceFromTileMode.js +85 -0
  83. package/lib/app/syncCurrentSpaceFromTileMode.js.map +1 -0
  84. package/lib/editor/global/AcEdUiTheme.d.ts +10 -1
  85. package/lib/editor/global/AcEdUiTheme.d.ts.map +1 -1
  86. package/lib/editor/global/AcEdUiTheme.js +35 -2
  87. package/lib/editor/global/AcEdUiTheme.js.map +1 -1
  88. package/lib/editor/input/ui/AcEdCommandLine.d.ts.map +1 -1
  89. package/lib/editor/input/ui/AcEdCommandLine.js +7 -7
  90. package/lib/editor/input/ui/AcEdCommandLine.js.map +1 -1
  91. package/lib/find/AcApFindNavigator.d.ts +59 -0
  92. package/lib/find/AcApFindNavigator.d.ts.map +1 -0
  93. package/lib/find/AcApFindNavigator.js +145 -0
  94. package/lib/find/AcApFindNavigator.js.map +1 -0
  95. package/lib/find/findDrawing.d.ts +100 -0
  96. package/lib/find/findDrawing.d.ts.map +1 -0
  97. package/lib/find/findDrawing.js +183 -0
  98. package/lib/find/findDrawing.js.map +1 -0
  99. package/lib/find/findText.d.ts +147 -0
  100. package/lib/find/findText.d.ts.map +1 -0
  101. package/lib/find/findText.js +527 -0
  102. package/lib/find/findText.js.map +1 -0
  103. package/lib/find/index.d.ts +3 -0
  104. package/lib/find/index.d.ts.map +1 -0
  105. package/lib/find/index.js +3 -0
  106. package/lib/find/index.js.map +1 -0
  107. package/lib/i18n/ar/main.d.ts +26 -0
  108. package/lib/i18n/ar/main.d.ts.map +1 -1
  109. package/lib/i18n/ar/main.js +26 -0
  110. package/lib/i18n/ar/main.js.map +1 -1
  111. package/lib/i18n/cs/main.d.ts +26 -0
  112. package/lib/i18n/cs/main.d.ts.map +1 -1
  113. package/lib/i18n/cs/main.js +26 -0
  114. package/lib/i18n/cs/main.js.map +1 -1
  115. package/lib/i18n/en/main.d.ts +26 -0
  116. package/lib/i18n/en/main.d.ts.map +1 -1
  117. package/lib/i18n/en/main.js +26 -0
  118. package/lib/i18n/en/main.js.map +1 -1
  119. package/lib/i18n/tr/main.d.ts +26 -0
  120. package/lib/i18n/tr/main.d.ts.map +1 -1
  121. package/lib/i18n/tr/main.js +26 -0
  122. package/lib/i18n/tr/main.js.map +1 -1
  123. package/lib/i18n/zh/main.d.ts +26 -0
  124. package/lib/i18n/zh/main.d.ts.map +1 -1
  125. package/lib/i18n/zh/main.js +26 -0
  126. package/lib/i18n/zh/main.js.map +1 -1
  127. package/lib/index.d.ts +2 -0
  128. package/lib/index.d.ts.map +1 -1
  129. package/lib/index.js +2 -0
  130. package/lib/index.js.map +1 -1
  131. package/lib/spatialIndex/AcTrHierarchicalSpatialIndex.d.ts +29 -7
  132. package/lib/spatialIndex/AcTrHierarchicalSpatialIndex.d.ts.map +1 -1
  133. package/lib/spatialIndex/AcTrHierarchicalSpatialIndex.js +77 -38
  134. package/lib/spatialIndex/AcTrHierarchicalSpatialIndex.js.map +1 -1
  135. package/lib/ui/AcUiFileOpenPanel.d.ts +156 -0
  136. package/lib/ui/AcUiFileOpenPanel.d.ts.map +1 -0
  137. package/lib/ui/AcUiFileOpenPanel.js +695 -0
  138. package/lib/ui/AcUiFileOpenPanel.js.map +1 -0
  139. package/lib/ui/icons.d.ts +2 -0
  140. package/lib/ui/icons.d.ts.map +1 -1
  141. package/lib/ui/icons.js +2 -0
  142. package/lib/ui/icons.js.map +1 -1
  143. package/lib/ui/index.d.ts +1 -0
  144. package/lib/ui/index.d.ts.map +1 -1
  145. package/lib/ui/index.js +1 -0
  146. package/lib/ui/index.js.map +1 -1
  147. package/lib/util/AcApTextStyleFontPreload.d.ts +42 -0
  148. package/lib/util/AcApTextStyleFontPreload.d.ts.map +1 -0
  149. package/lib/util/AcApTextStyleFontPreload.js +149 -0
  150. package/lib/util/AcApTextStyleFontPreload.js.map +1 -0
  151. package/lib/util/index.d.ts +1 -0
  152. package/lib/util/index.d.ts.map +1 -1
  153. package/lib/util/index.js +1 -0
  154. package/lib/util/index.js.map +1 -1
  155. package/lib/view/AcTrConvertQueue.d.ts +78 -0
  156. package/lib/view/AcTrConvertQueue.d.ts.map +1 -0
  157. package/lib/view/AcTrConvertQueue.js +143 -0
  158. package/lib/view/AcTrConvertQueue.js.map +1 -0
  159. package/lib/view/AcTrGroupWcsBboxAssert.d.ts +9 -0
  160. package/lib/view/AcTrGroupWcsBboxAssert.d.ts.map +1 -1
  161. package/lib/view/AcTrGroupWcsBboxAssert.js +12 -0
  162. package/lib/view/AcTrGroupWcsBboxAssert.js.map +1 -1
  163. package/lib/view/AcTrLayer.d.ts.map +1 -1
  164. package/lib/view/AcTrLayer.js +5 -1
  165. package/lib/view/AcTrLayer.js.map +1 -1
  166. package/lib/view/AcTrLayout.d.ts +5 -0
  167. package/lib/view/AcTrLayout.d.ts.map +1 -1
  168. package/lib/view/AcTrLayout.js +26 -0
  169. package/lib/view/AcTrLayout.js.map +1 -1
  170. package/lib/view/AcTrLayoutView.d.ts.map +1 -1
  171. package/lib/view/AcTrLayoutView.js +3 -1
  172. package/lib/view/AcTrLayoutView.js.map +1 -1
  173. package/lib/view/AcTrProgressiveOpenFitController.d.ts +1 -0
  174. package/lib/view/AcTrProgressiveOpenFitController.d.ts.map +1 -1
  175. package/lib/view/AcTrProgressiveOpenFitController.js +2 -1
  176. package/lib/view/AcTrProgressiveOpenFitController.js.map +1 -1
  177. package/lib/view/AcTrScene.d.ts +7 -0
  178. package/lib/view/AcTrScene.d.ts.map +1 -1
  179. package/lib/view/AcTrScene.js +78 -48
  180. package/lib/view/AcTrScene.js.map +1 -1
  181. package/lib/view/AcTrView2d.d.ts +234 -18
  182. package/lib/view/AcTrView2d.d.ts.map +1 -1
  183. package/lib/view/AcTrView2d.js +1017 -296
  184. package/lib/view/AcTrView2d.js.map +1 -1
  185. package/package.json +17 -10
  186. package/src/find/AcApFindNavigator.ts +190 -0
  187. package/src/find/findDrawing.ts +211 -0
  188. package/src/find/findText.ts +595 -0
  189. package/src/find/index.ts +2 -0
  190. package/src/ui/icons.ts +4 -0
@@ -0,0 +1,527 @@
1
+ /**
2
+ * Text search over the entities of one layout (FIND).
3
+ *
4
+ * Shared by every UI (cad-simple-ui-plugin, the full Vue cad-viewer) so that
5
+ * both behave identically. Pure TypeScript with no runtime imports, published
6
+ * as the `@mlightcad/cad-simple-viewer/find` subpath.
7
+ *
8
+ * Searched fields:
9
+ * - `TEXT` — `textString`
10
+ * - `MTEXT` — `contents` with MTEXT formatting codes removed
11
+ * - `ATTRIB` — attribute value (`textString`) of every `INSERT` in the layout
12
+ * (the tag is reported for display but is not searched)
13
+ * - `TEXT` / `MTEXT` / `ATTRIB` inside the block definition of every `INSERT`
14
+ * (nested blocks included, anonymous/dynamic blocks too): title blocks,
15
+ * legends and labels are usually drawn this way
16
+ * - constant `ATTDEF` values inside block definitions (the only ATTDEFs that
17
+ * are drawn inside a block; templates get their value from an `ATTRIB`)
18
+ * - `DIMENSION` — the text of its dimension block when that block has a
19
+ * match, otherwise the override text (`dimensionText`)
20
+ * - `MULTILEADER` — its MTEXT contents
21
+ * - `ACAD_TABLE` — the cell text (from the table block when present,
22
+ * otherwise the cell strings)
23
+ *
24
+ * Every layout is visited in one synchronous pass per search. A hit inside a
25
+ * block, dimension or table selects the top-level entity of the layout that
26
+ * contains it, and carries the WCS extents of the matched text so the view
27
+ * can zoom to the text itself instead of to the whole block. Xrefs are not
28
+ * searched.
29
+ *
30
+ * The module is structural (no `instanceof`) so it can be unit tested with
31
+ * plain objects.
32
+ */
33
+ var __assign = (this && this.__assign) || function () {
34
+ __assign = Object.assign || function(t) {
35
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
36
+ s = arguments[i];
37
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
38
+ t[p] = s[p];
39
+ }
40
+ return t;
41
+ };
42
+ return __assign.apply(this, arguments);
43
+ };
44
+ var __read = (this && this.__read) || function (o, n) {
45
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
46
+ if (!m) return o;
47
+ var i = m.call(o), r, ar = [], e;
48
+ try {
49
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
50
+ }
51
+ catch (error) { e = { error: error }; }
52
+ finally {
53
+ try {
54
+ if (r && !r.done && (m = i["return"])) m.call(i);
55
+ }
56
+ finally { if (e) throw e.error; }
57
+ }
58
+ return ar;
59
+ };
60
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
61
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
62
+ if (ar || !(i in from)) {
63
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
64
+ ar[i] = from[i];
65
+ }
66
+ }
67
+ return to.concat(ar || Array.prototype.slice.call(from));
68
+ };
69
+ var __values = (this && this.__values) || function(o) {
70
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
71
+ if (m) return m.call(o);
72
+ if (o && typeof o.length === "number") return {
73
+ next: function () {
74
+ if (o && i >= o.length) o = void 0;
75
+ return { value: o && o[i++], done: !o };
76
+ }
77
+ };
78
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
79
+ };
80
+ /** Maximum number of hits returned by one search. */
81
+ export var ACAP_FIND_MAX_RESULTS = 500;
82
+ var DIACRITICS = /[̀-ͯ]/g;
83
+ var WHITESPACE = /\s+/g;
84
+ /**
85
+ * Normalizes text or a query for comparison.
86
+ *
87
+ * - always: NFKC, whitespace runs → one space, trimmed
88
+ * - unless `matchCase`: accents removed, lower-cased
89
+ */
90
+ export function acapNormalizeFindText(value, matchCase) {
91
+ if (matchCase === void 0) { matchCase = false; }
92
+ var result = value.normalize('NFKC').replace(WHITESPACE, ' ').trim();
93
+ if (!matchCase) {
94
+ result = result.normalize('NFD').replace(DIACRITICS, '').toLowerCase();
95
+ }
96
+ return result;
97
+ }
98
+ /**
99
+ * Converts MTEXT contents to plain text: removes formatting codes
100
+ * (`\f…;`, `\H…;`, `\C…;`, `\L \l \O \o \K \k`, braces), turns `\P` into a
101
+ * space, decodes `\~`, `\U+XXXX`, stacked fractions and `%%c %%d %%p`.
102
+ */
103
+ export function acapMTextToPlainText(contents) {
104
+ var text = contents.replace(/\\(U\+[0-9a-fA-F]{4}|[PX~]|S[^;]*;|[fFHWTQCcAaRrp][^;]*;|[LlOoKk]|[\\{}])|[{}]/g, function (_match, code) {
105
+ if (!code)
106
+ return ''; // bare group brace
107
+ if (code.startsWith('U+'))
108
+ return String.fromCharCode(parseInt(code.slice(2), 16));
109
+ if (code === 'P' || code === 'X' || code === '~')
110
+ return ' ';
111
+ if (code === '\\' || code === '{' || code === '}')
112
+ return code;
113
+ if (code[0] === 'S') {
114
+ var stack = /^S([^;^#/]*)[\^#/]?([^;]*);$/.exec(code);
115
+ return stack ? (stack[2] ? "".concat(stack[1], "/").concat(stack[2]) : stack[1]) : '';
116
+ }
117
+ return ''; // font, height, colour, underline… codes
118
+ });
119
+ return decodeControlCodes(text).replace(WHITESPACE, ' ').trim();
120
+ }
121
+ /** Decodes `%%c`, `%%d`, `%%p` special-character codes. */
122
+ function decodeControlCodes(value) {
123
+ return value
124
+ .replace(/%%[cC]/g, 'Ø')
125
+ .replace(/%%[dD]/g, '°')
126
+ .replace(/%%[pP]/g, '±');
127
+ }
128
+ function plainText(value) {
129
+ return typeof value === 'string'
130
+ ? decodeControlCodes(value)
131
+ .normalize('NFKC')
132
+ .replace(WHITESPACE, ' ')
133
+ .trim()
134
+ : '';
135
+ }
136
+ function isLayerSearchable(db, layerName, cache) {
137
+ var _a;
138
+ var cached = cache.get(layerName);
139
+ if (cached !== undefined)
140
+ return cached;
141
+ var layer = (_a = db.tables.layerTable) === null || _a === void 0 ? void 0 : _a.getAt(layerName);
142
+ var searchable = !((layer === null || layer === void 0 ? void 0 : layer.isOff) || (layer === null || layer === void 0 ? void 0 : layer.isFrozen));
143
+ cache.set(layerName, searchable);
144
+ return searchable;
145
+ }
146
+ function pointOf(entity) {
147
+ var _a, _b, _c, _d;
148
+ var p = (_d = (_c = (_b = (_a = entity.position) !== null && _a !== void 0 ? _a : entity.location) !== null && _b !== void 0 ? _b : entity.textLocation) !== null && _c !== void 0 ? _c : entity.textPosition) !== null && _d !== void 0 ? _d : { x: 0, y: 0 };
149
+ return { x: Number(p.x) || 0, y: Number(p.y) || 0 };
150
+ }
151
+ /** `a × b` for column-major 4x4 matrices. */
152
+ function multiply(a, b) {
153
+ var out = new Array(16);
154
+ for (var col = 0; col < 4; col++) {
155
+ for (var row = 0; row < 4; row++) {
156
+ var sum = 0;
157
+ for (var k = 0; k < 4; k++)
158
+ sum += a[k * 4 + row] * b[col * 4 + k];
159
+ out[col * 4 + row] = sum;
160
+ }
161
+ }
162
+ return out;
163
+ }
164
+ function transformPoint(m, p) {
165
+ if (!m)
166
+ return { x: p.x, y: p.y };
167
+ var z = Number(p.z) || 0;
168
+ return {
169
+ x: m[0] * p.x + m[4] * p.y + m[8] * z + m[12],
170
+ y: m[1] * p.x + m[5] * p.y + m[9] * z + m[13]
171
+ };
172
+ }
173
+ function matrixOf(entity) {
174
+ var _a;
175
+ try {
176
+ var elements = (_a = entity.blockTransform) === null || _a === void 0 ? void 0 : _a.elements;
177
+ return Array.isArray(elements) && elements.length === 16
178
+ ? elements
179
+ : undefined;
180
+ }
181
+ catch (_b) {
182
+ return undefined;
183
+ }
184
+ }
185
+ /** WCS box of a (possibly nested) entity, or undefined when unknown. */
186
+ function extentsOf(entity, m) {
187
+ var _a, _b;
188
+ var box;
189
+ try {
190
+ box = entity.geometricExtents;
191
+ }
192
+ catch (_c) {
193
+ return undefined;
194
+ }
195
+ if (!box || !isFinite((_a = box.min) === null || _a === void 0 ? void 0 : _a.x) || !isFinite((_b = box.max) === null || _b === void 0 ? void 0 : _b.x))
196
+ return undefined;
197
+ if (!m)
198
+ return { min: __assign({}, box.min), max: __assign({}, box.max) };
199
+ var corners = [
200
+ { x: box.min.x, y: box.min.y },
201
+ { x: box.max.x, y: box.min.y },
202
+ { x: box.min.x, y: box.max.y },
203
+ { x: box.max.x, y: box.max.y }
204
+ ].map(function (p) { return transformPoint(m, p); });
205
+ return {
206
+ min: {
207
+ x: Math.min.apply(Math, __spreadArray([], __read(corners.map(function (p) { return p.x; })), false)),
208
+ y: Math.min.apply(Math, __spreadArray([], __read(corners.map(function (p) { return p.y; })), false))
209
+ },
210
+ max: {
211
+ x: Math.max.apply(Math, __spreadArray([], __read(corners.map(function (p) { return p.x; })), false)),
212
+ y: Math.max.apply(Math, __spreadArray([], __read(corners.map(function (p) { return p.y; })), false))
213
+ }
214
+ };
215
+ }
216
+ /** Maximum nesting of blocks inside blocks that is searched. */
217
+ var MAX_BLOCK_DEPTH = 8;
218
+ /**
219
+ * Finds text in the entities of one block table record (a layout).
220
+ *
221
+ * Entities that are invisible or sit on an off/frozen layer are skipped so
222
+ * that results always correspond to something the user can see.
223
+ *
224
+ * @param db - Database owning the layout.
225
+ * @param layoutBtrId - Block table record id of the layout (model/paper space).
226
+ * @param query - User query; blank queries return no hits.
227
+ */
228
+ export function acapFindTextInLayout(db, layoutBtrId, query, options) {
229
+ var e_1, _a, e_2, _b, e_3, _c;
230
+ var _d, _e, _f, _g, _h, _j, _k, _l, _m;
231
+ if (options === void 0) { options = {}; }
232
+ var matchCase = options.matchCase === true;
233
+ var max = (_d = options.maxResults) !== null && _d !== void 0 ? _d : ACAP_FIND_MAX_RESULTS;
234
+ var needle = acapNormalizeFindText(query, matchCase);
235
+ var result = { hits: [], truncated: false };
236
+ if (!needle)
237
+ return result;
238
+ var btr = db.tables.blockTable.getIdAt(layoutBtrId);
239
+ if (!btr)
240
+ return result;
241
+ var layers = new Map();
242
+ var matches = function (text) {
243
+ return text !== '' && acapNormalizeFindText(text, matchCase).includes(needle);
244
+ };
245
+ /** Set once the result cap is exceeded; stops every loop. */
246
+ var full = false;
247
+ var push = function (hit) {
248
+ if (result.hits.length >= max) {
249
+ result.truncated = true;
250
+ full = true;
251
+ return;
252
+ }
253
+ result.hits.push(hit);
254
+ };
255
+ /**
256
+ * Hit for text nested in `owner` (block, dimension or table). `path` keeps
257
+ * the key unique when the same block is inserted several times.
258
+ */
259
+ var pushNested = function (owner, path, entity, kind, text, m, extra) {
260
+ if (extra === void 0) { extra = {}; }
261
+ var extents = extentsOf(entity, m);
262
+ push(__assign(__assign({ entityId: owner.entity.objectId, textEntityId: "".concat(path, "/").concat(entity.objectId), kind: kind, text: text, layer: owner.layer, position: transformPoint(m, pointOf(entity)) }, (extents ? { extents: extents } : {})), extra));
263
+ };
264
+ /** Searches the entities of a block definition drawn by `owner`. */
265
+ var visitBlock = function (entities, owner, m, path, depth, stack) {
266
+ var e_4, _a, e_5, _b;
267
+ var _c, _d, _e, _f, _g;
268
+ try {
269
+ for (var entities_1 = __values(entities), entities_1_1 = entities_1.next(); !entities_1_1.done; entities_1_1 = entities_1.next()) {
270
+ var entity = entities_1_1.value;
271
+ if (full)
272
+ return;
273
+ var type = entity.dxfTypeName;
274
+ if (type !== 'TEXT' &&
275
+ type !== 'MTEXT' &&
276
+ type !== 'INSERT' &&
277
+ type !== 'ATTRIB' &&
278
+ type !== 'ATTDEF') {
279
+ continue;
280
+ }
281
+ if (entity.visibility === false)
282
+ continue;
283
+ // Only constant ATTDEFs are drawn inside a block (their default value
284
+ // is geometry); the others get their value from an ATTRIB of the INSERT.
285
+ if (type === 'ATTDEF' &&
286
+ (entity.isInvisible ||
287
+ !(entity.isConst || entity.isConstMTextAttribute))) {
288
+ continue;
289
+ }
290
+ // Layer 0 inside a block inherits the owner's layer (already checked).
291
+ if (entity.layer &&
292
+ entity.layer !== '0' &&
293
+ !isLayerSearchable(db, entity.layer, layers)) {
294
+ continue;
295
+ }
296
+ if (type === 'INSERT') {
297
+ if (depth >= MAX_BLOCK_DEPTH)
298
+ continue;
299
+ var inner = matrixOf(entity);
300
+ var nested = m && inner ? multiply(m, inner) : (inner !== null && inner !== void 0 ? inner : m);
301
+ var nestedPath = "".concat(path, "/").concat(entity.objectId);
302
+ try {
303
+ for (var _h = (e_5 = void 0, __values((_d = (_c = entity.attributeIterator) === null || _c === void 0 ? void 0 : _c.call(entity)) !== null && _d !== void 0 ? _d : [])), _j = _h.next(); !_j.done; _j = _h.next()) {
304
+ var attribute = _j.value;
305
+ if (full)
306
+ return;
307
+ if (attribute.visibility === false || attribute.isInvisible)
308
+ continue;
309
+ var text_1 = plainText(attribute.textString);
310
+ if (!matches(text_1))
311
+ continue;
312
+ // Attributes are stored in the coordinates of the block that holds
313
+ // the nested INSERT, like the INSERT itself.
314
+ pushNested(owner, nestedPath, attribute, 'block', text_1, m, {
315
+ tag: attribute.tag,
316
+ blockName: entity.blockName
317
+ });
318
+ }
319
+ }
320
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
321
+ finally {
322
+ try {
323
+ if (_j && !_j.done && (_b = _h.return)) _b.call(_h);
324
+ }
325
+ finally { if (e_5) throw e_5.error; }
326
+ }
327
+ var name_1 = entity.blockName;
328
+ if (!name_1 || stack.has(name_1))
329
+ continue;
330
+ var def = (_f = (_e = db.tables.blockTable).getAt) === null || _f === void 0 ? void 0 : _f.call(_e, name_1);
331
+ if (!def)
332
+ continue;
333
+ stack.add(name_1);
334
+ visitBlock(def.newIterator(), owner, nested, nestedPath, depth + 1, stack);
335
+ stack.delete(name_1);
336
+ continue;
337
+ }
338
+ var isMText = type === 'MTEXT' ||
339
+ (type === 'ATTDEF' && entity.isConstMTextAttribute && entity.mtext);
340
+ var text = isMText
341
+ ? acapMTextToPlainText(String((_g = (type === 'MTEXT' ? entity : entity.mtext).contents) !== null && _g !== void 0 ? _g : ''))
342
+ : plainText(entity.textString);
343
+ if (!matches(text))
344
+ continue;
345
+ pushNested(owner, path, entity, owner.kind, text, m, type === 'ATTDEF' ? { tag: entity.tag } : {});
346
+ }
347
+ }
348
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
349
+ finally {
350
+ try {
351
+ if (entities_1_1 && !entities_1_1.done && (_a = entities_1.return)) _a.call(entities_1);
352
+ }
353
+ finally { if (e_4) throw e_4.error; }
354
+ }
355
+ };
356
+ /** Block definition drawn by a DIMENSION / ACAD_TABLE, when present. */
357
+ var ownBlock = function (entity) {
358
+ var _a, _b;
359
+ try {
360
+ // ACAD_TABLE resolves its anonymous block itself.
361
+ var table = entity.blockTableRecord;
362
+ if (table === null || table === void 0 ? void 0 : table.newIterator)
363
+ return table;
364
+ var id = entity.dimBlockId;
365
+ var byId = id ? db.tables.blockTable.getIdAt(id) : undefined;
366
+ if (byId)
367
+ return byId;
368
+ var name_2 = entity.blockName;
369
+ return name_2 ? (_b = (_a = db.tables.blockTable).getAt) === null || _b === void 0 ? void 0 : _b.call(_a, name_2) : undefined;
370
+ }
371
+ catch (_c) {
372
+ return undefined;
373
+ }
374
+ };
375
+ try {
376
+ for (var _o = __values(btr.newIterator()), _p = _o.next(); !_p.done; _p = _o.next()) {
377
+ var entity = _p.value;
378
+ if (full)
379
+ break;
380
+ var type = entity.dxfTypeName;
381
+ if (type !== 'TEXT' &&
382
+ type !== 'MTEXT' &&
383
+ type !== 'INSERT' &&
384
+ type !== 'DIMENSION' &&
385
+ type !== 'MULTILEADER' &&
386
+ type !== 'ACAD_TABLE') {
387
+ continue;
388
+ }
389
+ if (entity.visibility === false)
390
+ continue;
391
+ if (!isLayerSearchable(db, entity.layer, layers))
392
+ continue;
393
+ if (type === 'INSERT') {
394
+ try {
395
+ for (var _q = (e_2 = void 0, __values((_f = (_e = entity.attributeIterator) === null || _e === void 0 ? void 0 : _e.call(entity)) !== null && _f !== void 0 ? _f : [])), _r = _q.next(); !_r.done; _r = _q.next()) {
396
+ var attribute = _r.value;
397
+ if (full)
398
+ break;
399
+ if (attribute.visibility === false || attribute.isInvisible)
400
+ continue;
401
+ var text_2 = plainText(attribute.textString);
402
+ if (!matches(text_2))
403
+ continue;
404
+ push({
405
+ entityId: entity.objectId,
406
+ textEntityId: attribute.objectId,
407
+ kind: 'attribute',
408
+ text: text_2,
409
+ tag: attribute.tag,
410
+ blockName: entity.blockName,
411
+ layer: entity.layer,
412
+ position: pointOf(attribute)
413
+ });
414
+ }
415
+ }
416
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
417
+ finally {
418
+ try {
419
+ if (_r && !_r.done && (_b = _q.return)) _b.call(_q);
420
+ }
421
+ finally { if (e_2) throw e_2.error; }
422
+ }
423
+ var name_3 = entity.blockName;
424
+ var def = name_3 ? (_h = (_g = db.tables.blockTable).getAt) === null || _h === void 0 ? void 0 : _h.call(_g, name_3) : undefined;
425
+ if (def && !full) {
426
+ visitBlock(def.newIterator(), { entity: entity, kind: 'block', layer: entity.layer }, matrixOf(entity), String(entity.objectId), 1, new Set([name_3]));
427
+ }
428
+ continue;
429
+ }
430
+ if (type === 'DIMENSION' || type === 'ACAD_TABLE') {
431
+ var kind = type === 'DIMENSION' ? 'dimension' : 'table';
432
+ var owner = { entity: entity, kind: kind, layer: entity.layer };
433
+ var block = ownBlock(entity);
434
+ var before = result.hits.length;
435
+ if (block) {
436
+ // Dimension / table blocks are already in WCS.
437
+ visitBlock(block.newIterator(), owner, undefined, String(entity.objectId), 1, new Set());
438
+ }
439
+ if (block && result.hits.length > before)
440
+ continue;
441
+ // No block, or a block without a matching text: use the stored strings
442
+ // (a dimension override can differ from what the block text shows).
443
+ var texts = [];
444
+ if (type === 'DIMENSION') {
445
+ var override = String((_j = entity.dimensionText) !== null && _j !== void 0 ? _j : '');
446
+ if (override && override !== '<>' && override !== ' ') {
447
+ texts.push(acapMTextToPlainText(override.replace('<>', '')));
448
+ }
449
+ }
450
+ else {
451
+ var rows = Number(entity.numRows) || 0;
452
+ var cols = Number(entity.numColumns) || 0;
453
+ for (var r = 0; r < rows; r++) {
454
+ for (var c = 0; c < cols; c++) {
455
+ try {
456
+ texts.push(acapMTextToPlainText(String((_l = (_k = entity.textString) === null || _k === void 0 ? void 0 : _k.call(entity, r, c)) !== null && _l !== void 0 ? _l : '')));
457
+ }
458
+ catch (_s) {
459
+ // Cell without text content.
460
+ }
461
+ }
462
+ }
463
+ }
464
+ try {
465
+ for (var texts_1 = (e_3 = void 0, __values(texts)), texts_1_1 = texts_1.next(); !texts_1_1.done; texts_1_1 = texts_1.next()) {
466
+ var text_3 = texts_1_1.value;
467
+ if (full)
468
+ break;
469
+ if (!matches(text_3))
470
+ continue;
471
+ push({
472
+ entityId: entity.objectId,
473
+ textEntityId: "".concat(entity.objectId, "/").concat(result.hits.length),
474
+ kind: kind,
475
+ text: text_3,
476
+ layer: entity.layer,
477
+ position: pointOf(entity)
478
+ });
479
+ }
480
+ }
481
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
482
+ finally {
483
+ try {
484
+ if (texts_1_1 && !texts_1_1.done && (_c = texts_1.return)) _c.call(texts_1);
485
+ }
486
+ finally { if (e_3) throw e_3.error; }
487
+ }
488
+ continue;
489
+ }
490
+ var text = type === 'MTEXT' || type === 'MULTILEADER'
491
+ ? acapMTextToPlainText(String((_m = entity.contents) !== null && _m !== void 0 ? _m : ''))
492
+ : plainText(entity.textString);
493
+ if (!matches(text))
494
+ continue;
495
+ push({
496
+ entityId: entity.objectId,
497
+ textEntityId: entity.objectId,
498
+ kind: type === 'MTEXT' ? 'mtext' : type === 'MULTILEADER' ? 'leader' : 'text',
499
+ text: text,
500
+ layer: entity.layer,
501
+ position: pointOf(entity)
502
+ });
503
+ }
504
+ }
505
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
506
+ finally {
507
+ try {
508
+ if (_p && !_p.done && (_a = _o.return)) _a.call(_o);
509
+ }
510
+ finally { if (e_1) throw e_1.error; }
511
+ }
512
+ return result;
513
+ }
514
+ /** Returns a short excerpt of `text` centred on the first match of `query`. */
515
+ export function acapFindExcerpt(text, query, matchCase, width) {
516
+ if (matchCase === void 0) { matchCase = false; }
517
+ if (width === void 0) { width = 60; }
518
+ if (text.length <= width)
519
+ return text;
520
+ var needle = acapNormalizeFindText(query, matchCase);
521
+ // Normalization may change length (accents, NFKC); fall back to the head.
522
+ var index = acapNormalizeFindText(text, matchCase).indexOf(needle);
523
+ var start = Math.max(0, Math.min(index - 15, text.length - width));
524
+ var slice = text.slice(start, start + width);
525
+ return "".concat(start > 0 ? '…' : '').concat(slice).concat(start + width < text.length ? '…' : '');
526
+ }
527
+ //# sourceMappingURL=findText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findText.js","sourceRoot":"","sources":["../../src/find/findText.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './findDrawing';
2
+ export * from './findText';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/find/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from './findDrawing';
2
+ export * from './findText';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/find/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA"}
@@ -36,6 +36,7 @@ declare const _default: {
36
36
  fetchingDrawingFile: string;
37
37
  exportingDxf: string;
38
38
  exportingPdf: string;
39
+ exportingSvg: string;
39
40
  calculatingSmartExtents: string;
40
41
  importingPdf: string;
41
42
  exportingEntityPreview: string;
@@ -162,6 +163,31 @@ declare const _default: {
162
163
  hideForever: string;
163
164
  ok: string;
164
165
  };
166
+ dataSource: {
167
+ open: string;
168
+ local: string;
169
+ url: string;
170
+ openFrom: string;
171
+ signInTo: string;
172
+ signOutOf: string;
173
+ signOutOfAccount: string;
174
+ urlDialogTitle: string;
175
+ urlDialogHint: string;
176
+ urlPlaceholder: string;
177
+ cancel: string;
178
+ onedrive: string;
179
+ googledrive: string;
180
+ or: string;
181
+ dropFile: string;
182
+ browse: string;
183
+ dropOrBrowse: string;
184
+ newDrawing: string;
185
+ source: string;
186
+ unavailable: string;
187
+ selectFile: string;
188
+ signInRequired: string;
189
+ downloading: string;
190
+ };
165
191
  };
166
192
  export default _default;
167
193
  //# sourceMappingURL=main.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/i18n/ar/main.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBAiLC"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/i18n/ar/main.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBA2MC"}
@@ -36,6 +36,7 @@ export default {
36
36
  fetchingDrawingFile: 'جارٍ جلب ملف الرسم ...',
37
37
  exportingDxf: 'جارٍ تصدير DXF ...',
38
38
  exportingPdf: 'جارٍ تصدير PDF ...',
39
+ exportingSvg: 'جارٍ تصدير SVG ...',
39
40
  calculatingSmartExtents: 'جارٍ حساب الملاءمة الذكية ...',
40
41
  importingPdf: 'جارٍ استيراد PDF ...',
41
42
  exportingEntityPreview: 'جارٍ تصدير الصورة ...',
@@ -161,6 +162,31 @@ export default {
161
162
  snoozeToday: 'لا تذكرني اليوم',
162
163
  hideForever: 'لا تذكرني مرة أخرى',
163
164
  ok: 'فهمت'
165
+ },
166
+ dataSource: {
167
+ open: 'فتح',
168
+ local: 'ملف محلي',
169
+ url: 'من عنوان URL',
170
+ openFrom: 'فتح من {name}',
171
+ signInTo: 'تسجيل الدخول إلى {name}',
172
+ signOutOf: 'تسجيل الخروج من {name}',
173
+ signOutOfAccount: 'تسجيل الخروج من {name} ({account})',
174
+ urlDialogTitle: 'فتح من عنوان URL',
175
+ urlDialogHint: 'أدخل عنوان URL لملف .dwg أو .dxf.',
176
+ urlPlaceholder: 'https://example.com/drawing.dwg',
177
+ cancel: 'إلغاء',
178
+ onedrive: 'OneDrive',
179
+ googledrive: 'Google Drive',
180
+ or: 'أو',
181
+ dropFile: 'أسقط ملفًا هنا أو',
182
+ browse: 'تصفح',
183
+ dropOrBrowse: 'أسقط ملف DWG أو DXF هنا، أو تصفح',
184
+ newDrawing: 'رسم جديد',
185
+ source: 'المصدر',
186
+ unavailable: 'هذا المصدر غير متاح حاليًا.',
187
+ selectFile: 'اختيار ملف',
188
+ signInRequired: 'سجّل الدخول أولاً لاختيار ملف.',
189
+ downloading: 'جارٍ تنزيل الملف ...'
164
190
  }
165
191
  };
166
192
  //# sourceMappingURL=main.js.map