@univerjs/sheets-find-replace 0.16.1 → 0.17.0-insiders.20260318-5bef180

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 (77) hide show
  1. package/lib/cjs/facade.js +1 -1
  2. package/lib/cjs/index.js +1 -1
  3. package/lib/cjs/locale/ca-ES.js +1 -1
  4. package/lib/cjs/locale/en-US.js +1 -1
  5. package/lib/cjs/locale/es-ES.js +1 -1
  6. package/lib/cjs/locale/fa-IR.js +1 -1
  7. package/lib/cjs/locale/fr-FR.js +1 -1
  8. package/lib/cjs/locale/ja-JP.js +1 -1
  9. package/lib/cjs/locale/ko-KR.js +1 -1
  10. package/lib/cjs/locale/ru-RU.js +1 -1
  11. package/lib/cjs/locale/sk-SK.js +1 -1
  12. package/lib/cjs/locale/vi-VN.js +1 -1
  13. package/lib/cjs/locale/zh-CN.js +1 -1
  14. package/lib/cjs/locale/zh-TW.js +1 -1
  15. package/lib/es/facade.js +1 -101
  16. package/lib/es/index.js +1 -629
  17. package/lib/es/locale/ca-ES.js +1 -11
  18. package/lib/es/locale/en-US.js +1 -11
  19. package/lib/es/locale/es-ES.js +1 -11
  20. package/lib/es/locale/fa-IR.js +1 -11
  21. package/lib/es/locale/fr-FR.js +1 -11
  22. package/lib/es/locale/ja-JP.js +1 -11
  23. package/lib/es/locale/ko-KR.js +1 -11
  24. package/lib/es/locale/ru-RU.js +1 -11
  25. package/lib/es/locale/sk-SK.js +1 -11
  26. package/lib/es/locale/vi-VN.js +1 -11
  27. package/lib/es/locale/zh-CN.js +1 -11
  28. package/lib/es/locale/zh-TW.js +1 -11
  29. package/lib/facade.js +1 -101
  30. package/lib/index.js +1 -629
  31. package/lib/locale/ca-ES.js +1 -11
  32. package/lib/locale/en-US.js +1 -11
  33. package/lib/locale/es-ES.js +1 -11
  34. package/lib/locale/fa-IR.js +1 -11
  35. package/lib/locale/fr-FR.js +1 -11
  36. package/lib/locale/ja-JP.js +1 -11
  37. package/lib/locale/ko-KR.js +1 -11
  38. package/lib/locale/ru-RU.js +1 -11
  39. package/lib/locale/sk-SK.js +1 -11
  40. package/lib/locale/vi-VN.js +1 -11
  41. package/lib/locale/zh-CN.js +1 -11
  42. package/lib/locale/zh-TW.js +1 -11
  43. package/lib/types/commands/commands/sheet-replace.command.d.ts +17 -2
  44. package/lib/types/controllers/sheet-find-replace.controller.d.ts +21 -4
  45. package/lib/types/controllers/utils.d.ts +17 -2
  46. package/lib/types/facade/f-text-finder.d.ts +19 -2
  47. package/lib/types/facade/f-univer.d.ts +15 -0
  48. package/lib/types/index.d.ts +1 -1
  49. package/lib/types/locale/ca-ES.d.ts +16 -1
  50. package/lib/types/locale/es-ES.d.ts +16 -1
  51. package/lib/types/locale/fa-IR.d.ts +16 -1
  52. package/lib/types/locale/fr-FR.d.ts +16 -1
  53. package/lib/types/locale/ja-JP.d.ts +16 -1
  54. package/lib/types/locale/ko-KR.d.ts +16 -1
  55. package/lib/types/locale/ru-RU.d.ts +16 -1
  56. package/lib/types/locale/sk-SK.d.ts +16 -1
  57. package/lib/types/locale/vi-VN.d.ts +16 -1
  58. package/lib/types/locale/zh-TW.d.ts +16 -1
  59. package/lib/types/plugin.d.ts +18 -1
  60. package/lib/types/views/shapes/find-replace-highlight.shape.d.ts +18 -2
  61. package/lib/umd/facade.js +1 -1
  62. package/lib/umd/index.js +1 -1
  63. package/lib/umd/locale/ca-ES.js +1 -1
  64. package/lib/umd/locale/en-US.js +1 -1
  65. package/lib/umd/locale/es-ES.js +1 -1
  66. package/lib/umd/locale/fa-IR.js +1 -1
  67. package/lib/umd/locale/fr-FR.js +1 -1
  68. package/lib/umd/locale/ja-JP.js +1 -1
  69. package/lib/umd/locale/ko-KR.js +1 -1
  70. package/lib/umd/locale/ru-RU.js +1 -1
  71. package/lib/umd/locale/sk-SK.js +1 -1
  72. package/lib/umd/locale/vi-VN.js +1 -1
  73. package/lib/umd/locale/zh-CN.js +1 -1
  74. package/lib/umd/locale/zh-TW.js +1 -1
  75. package/package.json +11 -10
  76. package/LICENSE +0 -176
  77. /package/lib/types/{controllers/config.schema.d.ts → config/config.d.ts} +0 -0
package/lib/es/index.js CHANGED
@@ -1,629 +1 @@
1
- var ge = Object.defineProperty;
2
- var fe = (h, e, t) => e in h ? ge(h, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : h[e] = t;
3
- var f = (h, e, t) => fe(h, typeof e != "symbol" ? e + "" : e, t);
4
- import { CommandType as H, IUndoRedoService as _e, ICommandService as O, Rectangle as Se, Inject as k, Injector as A, IContextService as Z, IUniverInstanceService as q, ThemeService as me, Disposable as ee, EDITOR_ACTIVATED as pe, UniverInstanceType as te, fromCallback as F, ColorKit as ve, rotate as L, groupBy as Ie, ObjectMatrix as Ce, Tools as Re, replaceInDocumentBody as ke, DependentOn as we, IConfigService as be, Plugin as Me, merge as xe } from "@univerjs/core";
5
- import { SetRangeValuesCommand as ie, SheetsSelectionsService as ye, SelectRangeCommand as Ue, SetWorksheetActiveOperation as Pe, SetSelectionsOperation as Be, SetWorksheetActivateCommand as Fe, UniverSheetsPlugin as j } from "@univerjs/sheets";
6
- import { Shape as We, Rect as He, IRenderManagerService as ne, RENDER_RAW_FORMULA_KEY as Te } from "@univerjs/engine-render";
7
- import { FindReplaceController as Ee, IFindReplaceService as Oe, FindModel as Ae, FindBy as b, FindScope as R, FindDirection as w, UniverFindReplacePlugin as Ne } from "@univerjs/find-replace";
8
- import { SheetSkeletonManagerService as De, getCoordByCell as V, getSheetObject as $e, ScrollToCellCommand as Le } from "@univerjs/sheets-ui";
9
- import { filter as M, Subject as G, throttleTime as je, merge as Ve, skip as Ge, debounceTime as Ye } from "rxjs";
10
- const se = {
11
- id: "sheet.command.replace",
12
- type: H.COMMAND,
13
- handler: async (h, e) => {
14
- const t = h.get(_e), i = h.get(O), { unitId: n, replacements: r } = e, s = t.__tempBatchingUndoRedo(n), o = await Promise.all(r.map((c) => i.executeCommand(ie.id, {
15
- unitId: n,
16
- subUnitId: c.subUnitId,
17
- value: c.value
18
- })));
19
- return s.dispose(), Ke(o, r);
20
- }
21
- };
22
- function Ke(h, e) {
23
- let t = 0, i = 0;
24
- return h.forEach((n, r) => {
25
- const s = e[r].count;
26
- n ? t += s : i += s;
27
- }), { success: t, failure: i };
28
- }
29
- class Qe extends We {
30
- constructor(t, i) {
31
- super(t, i);
32
- f(this, "_activated", !1);
33
- f(this, "_inHiddenRange", !1);
34
- f(this, "_color");
35
- i && this.setShapeProps(i);
36
- }
37
- setShapeProps(t) {
38
- this._activated = !!t.activated, typeof t.inHiddenRange < "u" && (this._inHiddenRange = t.inHiddenRange), typeof t.color < "u" && (this._color = t.color), this.transformByState({
39
- width: t.width,
40
- height: t.height
41
- });
42
- }
43
- _draw(t) {
44
- const i = this._activated, n = `rgba(${this._color.r}, ${this._color.g}, ${this._color.b}, 0.35)`, r = `rgb(${this._color.r}, ${this._color.g}, ${this._color.b})`;
45
- He.drawWith(t, {
46
- width: this.width,
47
- height: this.height,
48
- fill: n,
49
- stroke: i ? r : void 0,
50
- strokeWidth: i ? 2 : 0,
51
- evented: !1
52
- });
53
- }
54
- }
55
- function Y(h, e) {
56
- return h.startRow === e.startRow && h.startColumn === e.startColumn;
57
- }
58
- function K(h, e) {
59
- return h.startRow < e.startRow || h.startRow === e.startRow && h.startColumn <= e.startColumn;
60
- }
61
- function Q(h, e) {
62
- return h.startColumn < e.startColumn || h.startColumn === e.startColumn && h.startRow <= e.startRow;
63
- }
64
- function Xe(h, e) {
65
- return h.startRow > e.startRow || h.startRow === e.startRow && h.startColumn >= e.startColumn;
66
- }
67
- function ze(h, e) {
68
- return h.startColumn > e.startColumn || h.startColumn === e.startColumn && h.startRow >= e.startRow;
69
- }
70
- function Je(h, e) {
71
- const { range: t } = h, { startRow: i, startColumn: n } = t, r = e.getMergedCell(i, n);
72
- return r ? Se.equals(t, r) : t.endRow === t.startRow && t.endColumn === t.startColumn;
73
- }
74
- var Ze = Object.getOwnPropertyDescriptor, N = (h, e, t, i) => {
75
- for (var n = i > 1 ? void 0 : i ? Ze(e, t) : e, r = h.length - 1, s; r >= 0; r--)
76
- (s = h[r]) && (n = s(n) || n);
77
- return n;
78
- }, m = (h, e) => (t, i) => e(t, i, h);
79
- let x = class extends ee {
80
- constructor(e, t, i, n, r) {
81
- super();
82
- f(this, "_provider");
83
- this._injector = e, this._findReplaceController = t, this._contextService = i, this._findReplaceService = n, this._commandService = r, this._init(), this._initCommands();
84
- }
85
- dispose() {
86
- super.dispose(), this._findReplaceController.closePanel(), this._provider.dispose();
87
- }
88
- _init() {
89
- const e = this._injector.createInstance(E);
90
- this._provider = e, this.disposeWithMe(this._findReplaceService.registerFindReplaceProvider(e)), this.disposeWithMe(this._contextService.subscribeContextValue$(pe).pipe(M((t) => !!t)).subscribe(() => this._findReplaceController.closePanel()));
91
- }
92
- _initCommands() {
93
- [se].forEach((e) => this.disposeWithMe(this._commandService.registerCommand(e)));
94
- }
95
- };
96
- x = N([
97
- m(0, k(A)),
98
- m(1, k(Ee)),
99
- m(2, Z),
100
- m(3, Oe),
101
- m(4, O)
102
- ], x);
103
- const qe = "sheets-find-replace-provider", et = 1e4;
104
- let T = class extends Ae {
105
- constructor(e, t, i, n, r, s, o, c) {
106
- super();
107
- // We can directly inject the `FindReplaceService` here, and call its methods instead of using the observables.
108
- f(this, "_matchesUpdate$", new G());
109
- f(this, "matchesUpdate$", this._matchesUpdate$.asObservable());
110
- f(this, "_activelyChangingMatch$", new G());
111
- f(this, "activelyChangingMatch$", this._activelyChangingMatch$.asObservable());
112
- /** Hold matches by the worksheet they are in. Make it easier to track the next (or previous) match when searching in the whole workbook. */
113
- f(this, "_matchesByWorksheet", /* @__PURE__ */ new Map());
114
- /** Hold all matches in the currently searching scope. */
115
- f(this, "_matches", []);
116
- /** Position of the current focused ISheetCellMatch, starting from 1. */
117
- f(this, "_matchesPosition", 0);
118
- f(this, "_activeHighlightIndex", -1);
119
- f(this, "_highlightShapes", []);
120
- f(this, "_currentHighlightShape", null);
121
- /** This properties holds the query params during this searching session. */
122
- f(this, "_query", null);
123
- f(this, "_workbookSelections");
124
- this._workbook = e, this._sheetSkeletonManagerService = t, this._univerInstanceService = i, this._renderManagerService = n, this._commandService = r, this._contextService = s, this._themeService = o, this._workbookSelections = c.getWorkbookSelections(this.unitId);
125
- }
126
- get _matchesCount() {
127
- return this._matches.length;
128
- }
129
- get unitId() {
130
- return this._workbook.getUnitId();
131
- }
132
- get matchesCount() {
133
- return this._matchesCount;
134
- }
135
- get matchesPosition() {
136
- return this._matchesPosition;
137
- }
138
- get currentMatch() {
139
- return this._matchesPosition > 0 ? this._matches[this._matchesPosition - 1] : null;
140
- }
141
- dispose() {
142
- super.dispose(), this._disposeHighlights(), this._toggleDisplayRawFormula(!1);
143
- }
144
- getMatches() {
145
- return this._matches;
146
- }
147
- start(e) {
148
- switch (this._query = e, e.findBy === b.FORMULA ? this._toggleDisplayRawFormula(!0) : this._toggleDisplayRawFormula(!1), e.findScope) {
149
- case R.UNIT:
150
- this.findInWorkbook(e);
151
- break;
152
- case R.SUBUNIT:
153
- default:
154
- this.findInActiveWorksheet(e);
155
- break;
156
- }
157
- }
158
- focusSelection() {
159
- const e = this.currentMatch;
160
- e && this._commandService.executeCommand(Ue.id, {
161
- unitId: e.unitId,
162
- subUnit: e.range.subUnitId,
163
- range: e.range.range
164
- });
165
- }
166
- _toggleDisplayRawFormula(e) {
167
- this._contextService.setContextValue(Te, e);
168
- }
169
- /**
170
- * Find all matches in the current workbook no matter which worksheet is activated.
171
- * @param query the query object
172
- * @returns the query complete event
173
- */
174
- findInWorkbook(e) {
175
- const t = this._workbook.getUnitId();
176
- let i, n = !0;
177
- const r = () => {
178
- const s = this._workbook.getSheets().filter((o) => !o.isSheetHidden()).map((o) => {
179
- const c = this._findInWorksheet(o, e, t), l = o.getSheetId(), { results: a } = c;
180
- return a.length ? this._matchesByWorksheet.set(l, c.results) : this._matchesByWorksheet.delete(l), c;
181
- });
182
- this._matches = s.map((o) => o.results).flat(), this._updateFindHighlight(), n ? (i = { results: this._matches }, n = !1) : this._matchesUpdate$.next(this._matches);
183
- };
184
- return this.disposeWithMe(this._sheetSkeletonManagerService.currentSkeleton$.subscribe(() => {
185
- this._updateFindHighlight(), this._updateCurrentHighlightShape(this._activeHighlightIndex);
186
- })), this.disposeWithMe(
187
- F(this._commandService.onCommandExecuted.bind(this._commandService)).pipe(M(([s, o]) => s.id === Pe.id && !(o != null && o.fromFindReplace))).subscribe(() => {
188
- const s = this._workbook.getActiveSheet();
189
- if (!s)
190
- return;
191
- const o = s.getSheetId();
192
- this._matchesByWorksheet.has(o) && this._findNextMatchOnActiveSheetChange(s);
193
- })
194
- ), this.disposeWithMe(
195
- F(this._commandService.onCommandExecuted.bind(this._commandService)).pipe(
196
- M(
197
- ([s]) => s.type === H.MUTATION && s.params.unitId === this._workbook.getUnitId()
198
- ),
199
- je(600, void 0, { leading: !1, trailing: !0 })
200
- ).subscribe(() => r())
201
- ), r(), i;
202
- }
203
- /**
204
- * This method is used in `findInWorkbook`. When the active sheet changes, this method helps to find the next match
205
- * in the new worksheet.
206
- */
207
- _findNextMatchOnActiveSheetChange(e) {
208
- let t, i, n = 0;
209
- const r = this._matchesByWorksheet.get(e.getSheetId()), s = this._workbookSelections.getCurrentSelections();
210
- s != null && s.length ? ([t, n] = this._findNextMatchByRange(r, s[0].range), i = r.findIndex((o) => o === t)) : (t = r[0], i = 0, n = this._matches.findIndex((o) => o === t)), this._matchesPosition = n + 1, this._activelyChangingMatch$.next(t), this._activeHighlightIndex = i, this._updateFindHighlight(), this._updateCurrentHighlightShape(i);
211
- }
212
- /**
213
- * Find all matches (only) in the currently activated worksheet.
214
- * @param query the query object
215
- * @returns the query complete event
216
- */
217
- findInActiveWorksheet(e) {
218
- const t = this._workbook.getUnitId(), i = () => {
219
- var d;
220
- const c = this._workbook.getActiveSheet();
221
- if (!c) return !1;
222
- const l = this._workbookSelections.getCurrentSelections();
223
- return (d = l == null ? void 0 : l.some((u) => !Je(u, c))) != null ? d : !1;
224
- };
225
- let n, r = !0, s = !1;
226
- const o = () => {
227
- const c = this._workbook.getActiveSheet();
228
- if (!c) return { results: [] };
229
- const l = this.currentMatch;
230
- s = i();
231
- const a = this._workbookSelections.getCurrentSelections(), d = s ? this._findInSelections(c, a, e, t) : this._findInWorksheet(c, e, t);
232
- return this._matches = d.results, this._matchesPosition = this._tryRestoreLastMatchesPosition(l, this._matches), r ? (n = d, r = !1) : this._matchesUpdate$.next(this._matches), this._updateFindHighlight(), d;
233
- };
234
- return this.disposeWithMe(this._sheetSkeletonManagerService.currentSkeleton$.subscribe(() => this._updateFindHighlight())), this.disposeWithMe(
235
- Ve(
236
- F(this._commandService.onCommandExecuted.bind(this._commandService)).pipe(
237
- M(([c]) => {
238
- if (c.type === H.MUTATION && c.params.unitId === this._workbook.getUnitId())
239
- return !0;
240
- if (c.id === Be.id && c.params.unitId === t) {
241
- const l = i();
242
- return l === !1 && s === !1 ? !1 : (s = l, !0);
243
- }
244
- return !1;
245
- })
246
- ),
247
- // activeSheet$ is a BehaviorSubject, so we need to skip the first
248
- this._workbook.activeSheet$.pipe(Ge(1))
249
- ).pipe(Ye(200)).subscribe(() => o())
250
- ), o(), n;
251
- }
252
- _findInRange(e, t, i, n, r) {
253
- const s = [], o = e.getSheetId(), c = (t.findDirection === w.COLUMN ? e.iterateByColumn : e.iterateByRow).bind(e)(i);
254
- for (const l of c) {
255
- const { row: a, col: d, colSpan: u, rowSpan: _, value: S } = l;
256
- if (r != null && r(a, d) || !S || e.getRowFiltered(a))
257
- continue;
258
- const { hit: I, replaceable: C, isFormula: p } = tt(e, a, d, t, S);
259
- if (I) {
260
- const U = {
261
- provider: qe,
262
- unitId: n,
263
- replaceable: C,
264
- isFormula: p,
265
- range: {
266
- subUnitId: o,
267
- range: {
268
- startRow: a,
269
- startColumn: d,
270
- endColumn: d + (u != null ? u : 1) - 1,
271
- endRow: a + (_ != null ? _ : 1) - 1
272
- }
273
- }
274
- };
275
- s.push(U);
276
- }
277
- }
278
- return { results: s };
279
- }
280
- _findInSelections(e, t, i, n) {
281
- const { findDirection: r } = i, s = r === w.ROW ? K : Q, o = /* @__PURE__ */ new Set();
282
- return { results: t.map((l) => this._findInRange(e, i, l.range, n, (a, d) => {
283
- const u = `${a}-${d}`;
284
- return o.has(u) ? !0 : (o.add(u), !1);
285
- }).results).flat().sort((l, a) => s(l.range.range, a.range.range) ? -1 : 1) };
286
- }
287
- /** Find matches in a given worksheet. */
288
- _findInWorksheet(e, t, i) {
289
- const n = e.getRowCount(), r = e.getColumnCount(), s = { startRow: 0, startColumn: 0, endRow: n - 1, endColumn: r - 1 };
290
- return this._findInRange(e, t, s, i);
291
- }
292
- _disposeHighlights() {
293
- var e;
294
- this._highlightShapes.forEach((t) => {
295
- var i;
296
- (i = t.getScene()) == null || i.makeDirty(), t.dispose();
297
- }), this._highlightShapes = [], (e = this._currentHighlightShape) == null || e.dispose(), this._currentHighlightShape = null;
298
- }
299
- _updateFindHighlight() {
300
- var d;
301
- this._disposeHighlights();
302
- const e = (d = this._sheetSkeletonManagerService.getCurrent()) == null ? void 0 : d.skeleton;
303
- if (!e)
304
- return;
305
- const t = this._workbook.getUnitId(), i = this._renderManagerService.getRenderById(t);
306
- if (i == null)
307
- return;
308
- const { scene: n } = i, r = this._matches, s = this._themeService.getColorFromTheme("yellow.400"), o = new ve(s).toRgb(), c = this._workbook.getActiveSheet();
309
- if (!c)
310
- return;
311
- const l = c.getSheetId(), a = r.filter((u) => u.range.subUnitId === l).map((u, _) => {
312
- const { startColumn: S, startRow: I, endColumn: C, endRow: p } = u.range.range, U = V(I, S, n, e), oe = V(p, C, n, e), { startX: D, startY: $ } = U, { endX: he, endY: ce } = oe;
313
- let P = !0;
314
- for (let v = I; v <= p; v++)
315
- if (c.getRowRawVisible(v)) {
316
- P = !1;
317
- break;
318
- }
319
- let B = !0;
320
- for (let v = S; v <= C; v++)
321
- if (c.getColVisible(v)) {
322
- B = !1;
323
- break;
324
- }
325
- const ae = P || B, le = B ? 2 : he - D, de = P ? 2 : ce - $, ue = {
326
- left: D,
327
- top: $,
328
- color: o,
329
- width: le,
330
- height: de,
331
- evented: !1,
332
- inHiddenRange: ae,
333
- zIndex: et
334
- };
335
- return new Qe(`find-highlight-${_}`, ue);
336
- });
337
- n.addObjects(a), this._highlightShapes = a, n.makeDirty();
338
- }
339
- _updateCurrentHighlightShape(e) {
340
- var t;
341
- if ((t = this._currentHighlightShape) == null || t.setShapeProps({ activated: !1 }), this._currentHighlightShape = null, e !== void 0) {
342
- const i = this._highlightShapes[e];
343
- if (!i)
344
- return;
345
- this._currentHighlightShape = i, i.setShapeProps({ activated: !0 });
346
- }
347
- }
348
- _getSheetObject() {
349
- return $e(this._univerInstanceService, this._renderManagerService);
350
- }
351
- _focusMatch(e) {
352
- var i;
353
- const t = e.range.subUnitId;
354
- t !== ((i = this._workbook.getActiveSheet()) == null ? void 0 : i.getSheetId()) && this._commandService.executeCommand(Fe.id, { unitId: this._workbook.getUnitId(), subUnitId: t }, { fromFindReplace: !0 }), this._commandService.executeCommand(
355
- Le.id,
356
- { range: e.range.range },
357
- { fromFindReplace: !0 }
358
- );
359
- }
360
- _tryRestoreLastMatchesPosition(e, t) {
361
- if (!e) return 0;
362
- const { subUnitId: i } = e.range, { startColumn: n, startRow: r } = e.range.range, s = t.findIndex((o) => {
363
- if (i !== o.range.subUnitId)
364
- return !1;
365
- const { startColumn: c, startRow: l } = o.range.range;
366
- return c === n && l === r;
367
- });
368
- return s > -1 ? s + 1 : 0;
369
- }
370
- moveToNextMatch(e) {
371
- var o, c, l, a, d;
372
- if (!this._matches.length)
373
- return null;
374
- const t = (o = e == null ? void 0 : e.loop) != null ? o : !1, i = (c = e == null ? void 0 : e.stayIfOnMatch) != null ? c : !1, n = (l = e == null ? void 0 : e.noFocus) != null ? l : !1, r = (a = e == null ? void 0 : e.ignoreSelection) != null ? a : !1, s = this._findNextMatch(t, i, r);
375
- if (s) {
376
- const [u, _] = s;
377
- return this._matchesPosition = _ + 1, this._query.findScope === R.UNIT ? this._activeHighlightIndex = this._matchesByWorksheet.get(u.range.subUnitId).findIndex((S) => S === u) : this._activeHighlightIndex = _, n || this._focusMatch(u), ((d = this._workbook.getActiveSheet()) == null ? void 0 : d.getSheetId()) === u.range.subUnitId && this._updateCurrentHighlightShape(this._activeHighlightIndex), u;
378
- }
379
- return this._matchesPosition = 0, this._updateCurrentHighlightShape(), null;
380
- }
381
- moveToPreviousMatch(e) {
382
- var o, c, l, a, d;
383
- if (!this._matches.length)
384
- return null;
385
- const t = (o = e == null ? void 0 : e.loop) != null ? o : !1, i = (c = e == null ? void 0 : e.stayIfOnMatch) != null ? c : !1, n = (l = e == null ? void 0 : e.noFocus) != null ? l : !1, r = (a = e == null ? void 0 : e.ignoreSelection) != null ? a : !1, s = this._findPreviousMatch(t, i, r);
386
- if (s) {
387
- const [u, _] = s;
388
- return this._matchesPosition = _ + 1, this._query.findScope === R.UNIT ? this._activeHighlightIndex = this._matchesByWorksheet.get(u.range.subUnitId).findIndex((S) => S === u) : this._activeHighlightIndex = _, n || this._focusMatch(u), ((d = this._workbook.getActiveSheet()) == null ? void 0 : d.getSheetId()) === u.range.subUnitId && this._updateCurrentHighlightShape(this._activeHighlightIndex), u;
389
- }
390
- return this._matchesPosition = 0, this._updateCurrentHighlightShape(), null;
391
- }
392
- _findPreviousMatch(e = !1, t = !1, i = !1) {
393
- var o;
394
- if (this.currentMatch) {
395
- const c = this._matches.findIndex((u) => u === this.currentMatch);
396
- if (t)
397
- return [this.currentMatch, c];
398
- const l = c - 1;
399
- if (!e && l < 0)
400
- return null;
401
- const a = this._matches.length, d = (l + a) % a;
402
- return [this._matches[d], d];
403
- }
404
- const n = this._workbookSelections.getCurrentLastSelection();
405
- if (i || !n) {
406
- const c = this._matches.length - 1;
407
- return [this._matches[c], c];
408
- }
409
- if (this._query.findScope !== R.UNIT)
410
- return this._findPreviousMatchByRange(this._matches, n.range);
411
- const r = (o = this._workbook.getActiveSheet()) == null ? void 0 : o.getSheetId();
412
- if (!r)
413
- return null;
414
- const s = this._findPreviousWorksheetThatHasAMatch(r, e);
415
- return s ? this._findPreviousMatchByRange(this._matchesByWorksheet.get(s), n.range) : null;
416
- }
417
- _findNextMatch(e = !1, t = !1, i = !1) {
418
- var o;
419
- if (this.currentMatch) {
420
- const c = this._matches.findIndex((u) => u === this.currentMatch);
421
- if (t)
422
- return [this.currentMatch, c];
423
- const l = c + 1, a = this._matches.length;
424
- if (!e && l >= a)
425
- return null;
426
- const d = l % a;
427
- return [this._matches[d], d];
428
- }
429
- const n = this._workbookSelections.getCurrentLastSelection();
430
- if (i || !n)
431
- return [this._matches[0], 0];
432
- if (this._query.findScope !== R.UNIT)
433
- return this._findNextMatchByRange(this._matches, n.range, t);
434
- const r = (o = this._workbook.getActiveSheet()) == null ? void 0 : o.getSheetId();
435
- if (!r)
436
- return null;
437
- const s = this._findNextWorksheetThatHasAMatch(r, e);
438
- return s ? this._findNextMatchByRange(this._matchesByWorksheet.get(s), n.range) : null;
439
- }
440
- _findPreviousWorksheetThatHasAMatch(e, t = !1) {
441
- const i = this._workbook.getSheetOrders(), n = i.findIndex((o) => o === e), s = (t ? L(i, n + 1) : i.slice(0, n + 1)).findLast((o) => this._matchesByWorksheet.has(o));
442
- return s != null ? s : null;
443
- }
444
- _findNextWorksheetThatHasAMatch(e, t = !1) {
445
- const i = this._workbook.getSheetOrders(), n = i.findIndex((o) => o === e), s = (t ? L(i, n) : i.slice(n)).find((o) => this._matchesByWorksheet.has(o));
446
- return s != null ? s : null;
447
- }
448
- _findNextMatchByRange(e, t, i = !1) {
449
- const n = this._query.findDirection === w.ROW;
450
- let r = e.findIndex((o) => {
451
- const c = o.range.range;
452
- if (!(n ? K(t, c) : Q(t, c)))
453
- return !1;
454
- const a = Y(t, c);
455
- return i ? a : !a;
456
- });
457
- r === -1 && (r = e.length - 1);
458
- const s = e[r];
459
- return [s, this._matches.findIndex((o) => o === s)];
460
- }
461
- _findPreviousMatchByRange(e, t, i = !1) {
462
- const n = this._query.findDirection === w.ROW;
463
- let r = this._matches.findLastIndex((o) => {
464
- const c = o.range.range;
465
- if (!(n ? Xe(t, c) : ze(t, c)))
466
- return !1;
467
- const a = Y(t, c);
468
- return i ? a : !a;
469
- });
470
- r === -1 && (r = 0);
471
- const s = e[r];
472
- return [s, this._matches.findIndex((o) => o === s)];
473
- }
474
- async replace(e) {
475
- if (this._matchesCount === 0 || !this.currentMatch || !this._query || !this.currentMatch.replaceable)
476
- return !1;
477
- const t = this.currentMatch.range, i = this._workbook.getSheetBySheetId(this.currentMatch.range.subUnitId), n = this._getReplacedCellData(
478
- this.currentMatch,
479
- i,
480
- this._query.findBy === b.FORMULA,
481
- this._query.findString,
482
- e,
483
- this._query.caseSensitive ? "g" : "ig"
484
- ), r = {
485
- unitId: this.currentMatch.unitId,
486
- subUnitId: t.subUnitId,
487
- value: {
488
- [t.range.startRow]: {
489
- [t.range.startColumn]: n
490
- }
491
- }
492
- };
493
- return this._commandService.executeCommand(ie.id, r);
494
- }
495
- async replaceAll(e) {
496
- if (this._matchesCount === 0 || !this._query)
497
- return { success: 0, failure: 0 };
498
- const t = this._workbook.getUnitId(), { findString: i, caseSensitive: n, findBy: r } = this._query, s = r === b.FORMULA, o = n ? "g" : "ig", c = [];
499
- return Ie(this._matches.filter((a) => a.replaceable), (a) => a.range.subUnitId).forEach((a, d) => {
500
- const u = new Ce(), _ = this._workbook.getSheetBySheetId(d);
501
- a.forEach((S) => {
502
- const { startColumn: I, startRow: C } = S.range.range, p = this._getReplacedCellData(S, _, s, i, e, o);
503
- p && u.setValue(C, I, p);
504
- }), c.push({
505
- count: a.length,
506
- subUnitId: d,
507
- value: u.getMatrix()
508
- });
509
- }), c ? this._commandService.executeCommand(se.id, {
510
- unitId: t,
511
- replacements: c
512
- }) : { success: 0, failure: 0 };
513
- }
514
- _getReplacedCellData(e, t, i, n, r, s) {
515
- var _;
516
- const o = e.range.range, { startRow: c, startColumn: l } = o, a = t.getCellRaw(c, l);
517
- if (e.isFormula)
518
- return i ? { f: a.f.replace(new RegExp(X(n), s), r), v: null } : null;
519
- if (!!((_ = a.p) != null && _.body)) {
520
- const S = Re.deepClone(a.p);
521
- return ke(S.body, n, r, this._query.caseSensitive), { p: S };
522
- }
523
- return { v: a.v.toString().replace(new RegExp(X(n), s), r) };
524
- }
525
- };
526
- T = N([
527
- m(2, q),
528
- m(3, ne),
529
- m(4, O),
530
- m(5, Z),
531
- m(6, k(me)),
532
- m(7, k(ye))
533
- ], T);
534
- function X(h) {
535
- return h.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
536
- }
537
- let E = class extends ee {
538
- constructor(e, t, i) {
539
- super();
540
- /**
541
- * Hold all find results in this kind of univer business instances (Workbooks).
542
- */
543
- f(this, "_findModelsByUnitId", /* @__PURE__ */ new Map());
544
- this._univerInstanceService = e, this._renderManagerService = t, this._injector = i;
545
- }
546
- async find(e) {
547
- this._terminate();
548
- const t = this._univerInstanceService.getCurrentUnitOfType(te.UNIVER_SHEET);
549
- if (!t) return [];
550
- const i = this._preprocessQuery(e), n = this._renderManagerService.getRenderById(t.getUnitId()).with(De), r = this._injector.createInstance(T, t, n);
551
- return this._findModelsByUnitId.set(t.getUnitId(), r), r.start(i), [r];
552
- }
553
- terminate() {
554
- this._terminate();
555
- }
556
- _terminate() {
557
- this._findModelsByUnitId.forEach((e) => e.dispose()), this._findModelsByUnitId.clear();
558
- }
559
- /**
560
- * Parsed the query object before do actual searching in favor of performance.
561
- * @param query the raw query object
562
- * @returns the parsed query object
563
- */
564
- _preprocessQuery(e) {
565
- let t = e.caseSensitive ? e.findString : e.findString.toLowerCase();
566
- return t = t.trim(), {
567
- ...e,
568
- findString: t
569
- };
570
- }
571
- };
572
- E = N([
573
- m(0, q),
574
- m(1, ne),
575
- m(2, k(A))
576
- ], E);
577
- const g = { hit: !1, replaceable: !1, isFormula: !1, rawData: null };
578
- function tt(h, e, t, i, n) {
579
- const { findBy: r } = i, s = r === b.FORMULA, o = h.getCellRaw(e, t);
580
- return g.rawData = o, !(o != null && o.f) ? (g.isFormula = !1, W(n, i) ? o ? (g.hit = !0, g.replaceable = !0) : (g.hit = !0, g.replaceable = !1) : (g.hit = !1, g.replaceable = !1), g) : (g.isFormula = !0, s ? W({ v: o.f }, i) ? (g.hit = !0, g.replaceable = !0, g) : (g.hit = !1, g.replaceable = !1, g) : (g.replaceable = !1, W(n, i) ? g.hit = !0 : g.hit = !1, g));
581
- }
582
- function W(h, e) {
583
- let t = it(h);
584
- return t ? e.matchesTheWholeCell ? (t = nt(t), e.caseSensitive ? t === e.findString : t.toLowerCase() === e.findString) : e.caseSensitive ? t.indexOf(e.findString) > -1 : t.toLowerCase().indexOf(e.findString) > -1 : !1;
585
- }
586
- function it(h) {
587
- var t, i, n;
588
- const e = (n = (i = (t = h == null ? void 0 : h.p) == null ? void 0 : t.body) == null ? void 0 : i.dataStream) != null ? n : h == null ? void 0 : h.v;
589
- return typeof e == "number" ? `${e}` : typeof e == "boolean" ? e ? "1" : "0" : e;
590
- }
591
- function nt(h) {
592
- return h.replace(/^ +/g, "").replace(/ +$/g, "");
593
- }
594
- const st = "sheets-find-replace.config", z = {};
595
- var rt = Object.defineProperty, ot = Object.getOwnPropertyDescriptor, ht = (h, e, t) => e in h ? rt(h, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : h[e] = t, ct = (h, e, t, i) => {
596
- for (var n = i > 1 ? void 0 : i ? ot(e, t) : e, r = h.length - 1, s; r >= 0; r--)
597
- (s = h[r]) && (n = s(n) || n);
598
- return n;
599
- }, J = (h, e) => (t, i) => e(t, i, h), re = (h, e, t) => ht(h, typeof e != "symbol" ? e + "" : e, t);
600
- const at = "SHEET_FIND_REPLACE_PLUGIN";
601
- let y = class extends Me {
602
- constructor(h = z, e, t) {
603
- super(), this._config = h, this._injector = e, this._configService = t;
604
- const { ...i } = xe(
605
- {},
606
- z,
607
- this._config
608
- );
609
- this._configService.setConfig(st, i);
610
- }
611
- onStarting() {
612
- [[x]].forEach((h) => this._injector.add(h));
613
- }
614
- onSteady() {
615
- this._injector.get(x);
616
- }
617
- };
618
- re(y, "pluginName", at);
619
- re(y, "type", te.UNIVER_SHEET);
620
- y = ct([
621
- we(j, j, Ne),
622
- J(1, k(A)),
623
- J(2, be)
624
- ], y);
625
- export {
626
- se as SheetReplaceCommand,
627
- x as SheetsFindReplaceController,
628
- y as UniverSheetsFindReplacePlugin
629
- };
1
+ import{ColorKit as e,CommandType as t,DependentOn as n,Disposable as r,EDITOR_ACTIVATED as i,ICommandService as a,IConfigService as o,IContextService as s,IUndoRedoService as c,IUniverInstanceService as l,Inject as u,Injector as d,ObjectMatrix as f,Plugin as p,Rectangle as m,ThemeService as h,Tools as g,UniverInstanceType as _,fromCallback as v,groupBy as y,merge as b,replaceInDocumentBody as ee,rotate as x}from"@univerjs/core";import{SelectRangeCommand as S,SetRangeValuesCommand as C,SetSelectionsOperation as te,SetWorksheetActivateCommand as ne,SetWorksheetActiveOperation as re,SheetsSelectionsService as ie,UniverSheetsPlugin as w}from"@univerjs/sheets";import{IRenderManagerService as T,RENDER_RAW_FORMULA_KEY as ae,Rect as oe,Shape as se}from"@univerjs/engine-render";import{FindBy as E,FindDirection as D,FindModel as ce,FindReplaceController as le,FindScope as O,IFindReplaceService as ue,UniverFindReplacePlugin as de}from"@univerjs/find-replace";import{ScrollToCellCommand as fe,SheetSkeletonManagerService as pe,getCoordByCell as k,getSheetObject as me}from"@univerjs/sheets-ui";import{Subject as A,debounceTime as he,filter as j,merge as M,skip as N,throttleTime as P}from"rxjs";const F={id:`sheet.command.replace`,type:t.COMMAND,handler:async(e,t)=>{let n=e.get(c),r=e.get(a),{unitId:i,replacements:o}=t,s=n.__tempBatchingUndoRedo(i),l=await Promise.all(o.map(e=>r.executeCommand(C.id,{unitId:i,subUnitId:e.subUnitId,value:e.value})));return s.dispose(),I(l,o)}};function I(e,t){let n=0,r=0;return e.forEach((e,i)=>{let a=t[i].count;e?n+=a:r+=a}),{success:n,failure:r}}function L(e){"@babel/helpers - typeof";return L=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},L(e)}function ge(e,t){if(L(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(L(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function _e(e){var t=ge(e,`string`);return L(t)==`symbol`?t:t+``}function R(e,t,n){return(t=_e(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ve=class extends se{constructor(e,t){super(e,t),R(this,`_activated`,!1),R(this,`_inHiddenRange`,!1),R(this,`_color`,void 0),t&&this.setShapeProps(t)}setShapeProps(e){this._activated=!!e.activated,e.inHiddenRange!==void 0&&(this._inHiddenRange=e.inHiddenRange),e.color!==void 0&&(this._color=e.color),this.transformByState({width:e.width,height:e.height})}_draw(e){let t=this._activated,n=`rgba(${this._color.r}, ${this._color.g}, ${this._color.b}, 0.35)`,r=`rgb(${this._color.r}, ${this._color.g}, ${this._color.b})`;oe.drawWith(e,{width:this.width,height:this.height,fill:n,stroke:t?r:void 0,strokeWidth:t?2:0,evented:!1})}};function z(e,t){return e.startRow===t.startRow&&e.startColumn===t.startColumn}function B(e,t){return e.startRow<t.startRow||e.startRow===t.startRow&&e.startColumn<=t.startColumn}function V(e,t){return e.startColumn<t.startColumn||e.startColumn===t.startColumn&&e.startRow<=t.startRow}function ye(e,t){return e.startRow>t.startRow||e.startRow===t.startRow&&e.startColumn>=t.startColumn}function be(e,t){return e.startColumn>t.startColumn||e.startColumn===t.startColumn&&e.startRow>=t.startRow}function H(e,t){let{range:n}=e,{startRow:r,startColumn:i}=n,a=t.getMergedCell(r,i);return a?m.equals(n,a):n.endRow===n.startRow&&n.endColumn===n.startColumn}function U(e,t){return function(n,r){t(n,r,e)}}function W(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let G=class extends r{constructor(e,t,n,r,i){super(),this._injector=e,this._findReplaceController=t,this._contextService=n,this._findReplaceService=r,this._commandService=i,R(this,`_provider`,void 0),this._init(),this._initCommands()}dispose(){super.dispose(),this._findReplaceController.closePanel(),this._provider.dispose()}_init(){let e=this._injector.createInstance(J);this._provider=e,this.disposeWithMe(this._findReplaceService.registerFindReplaceProvider(e)),this.disposeWithMe(this._contextService.subscribeContextValue$(i).pipe(j(e=>!!e)).subscribe(()=>this._findReplaceController.closePanel()))}_initCommands(){[F].forEach(e=>this.disposeWithMe(this._commandService.registerCommand(e)))}};G=W([U(0,u(d)),U(1,u(le)),U(2,s),U(3,ue),U(4,a)],G);let K=class extends ce{get _matchesCount(){return this._matches.length}get unitId(){return this._workbook.getUnitId()}get matchesCount(){return this._matchesCount}get matchesPosition(){return this._matchesPosition}get currentMatch(){return this._matchesPosition>0?this._matches[this._matchesPosition-1]:null}constructor(e,t,n,r,i,a,o,s){super(),this._workbook=e,this._sheetSkeletonManagerService=t,this._univerInstanceService=n,this._renderManagerService=r,this._commandService=i,this._contextService=a,this._themeService=o,R(this,`_matchesUpdate$`,new A),R(this,`matchesUpdate$`,this._matchesUpdate$.asObservable()),R(this,`_activelyChangingMatch$`,new A),R(this,`activelyChangingMatch$`,this._activelyChangingMatch$.asObservable()),R(this,`_matchesByWorksheet`,new Map),R(this,`_matches`,[]),R(this,`_matchesPosition`,0),R(this,`_activeHighlightIndex`,-1),R(this,`_highlightShapes`,[]),R(this,`_currentHighlightShape`,null),R(this,`_query`,null),R(this,`_workbookSelections`,void 0),this._workbookSelections=s.getWorkbookSelections(this.unitId)}dispose(){super.dispose(),this._disposeHighlights(),this._toggleDisplayRawFormula(!1)}getMatches(){return this._matches}start(e){switch(this._query=e,e.findBy===E.FORMULA?this._toggleDisplayRawFormula(!0):this._toggleDisplayRawFormula(!1),e.findScope){case O.UNIT:this.findInWorkbook(e);break;case O.SUBUNIT:default:this.findInActiveWorksheet(e);break}}focusSelection(){let e=this.currentMatch;e&&this._commandService.executeCommand(S.id,{unitId:e.unitId,subUnit:e.range.subUnitId,range:e.range.range})}_toggleDisplayRawFormula(e){this._contextService.setContextValue(ae,e)}findInWorkbook(e){let n=this._workbook.getUnitId(),r,i=!0,a=()=>{this._matches=this._workbook.getSheets().filter(e=>!e.isSheetHidden()).map(t=>{let r=this._findInWorksheet(t,e,n),i=t.getSheetId(),{results:a}=r;return a.length?this._matchesByWorksheet.set(i,r.results):this._matchesByWorksheet.delete(i),r}).map(e=>e.results).flat(),this._updateFindHighlight(),i?(r={results:this._matches},i=!1):this._matchesUpdate$.next(this._matches)};return this.disposeWithMe(this._sheetSkeletonManagerService.currentSkeleton$.subscribe(()=>{this._updateFindHighlight(),this._updateCurrentHighlightShape(this._activeHighlightIndex)})),this.disposeWithMe(v(this._commandService.onCommandExecuted.bind(this._commandService)).pipe(j(([e,t])=>e.id===re.id&&!(t!=null&&t.fromFindReplace))).subscribe(()=>{let e=this._workbook.getActiveSheet();if(!e)return;let t=e.getSheetId();this._matchesByWorksheet.has(t)&&this._findNextMatchOnActiveSheetChange(e)})),this.disposeWithMe(v(this._commandService.onCommandExecuted.bind(this._commandService)).pipe(j(([e])=>e.type===t.MUTATION&&e.params.unitId===this._workbook.getUnitId()),P(600,void 0,{leading:!1,trailing:!0})).subscribe(()=>a())),a(),r}_findNextMatchOnActiveSheetChange(e){let t,n,r=0,i=this._matchesByWorksheet.get(e.getSheetId()),a=this._workbookSelections.getCurrentSelections();a!=null&&a.length?([t,r]=this._findNextMatchByRange(i,a[0].range),n=i.findIndex(e=>e===t)):(t=i[0],n=0,r=this._matches.findIndex(e=>e===t)),this._matchesPosition=r+1,this._activelyChangingMatch$.next(t),this._activeHighlightIndex=n,this._updateFindHighlight(),this._updateCurrentHighlightShape(n)}findInActiveWorksheet(e){let n=this._workbook.getUnitId(),r=()=>{var e;let t=this._workbook.getActiveSheet();if(!t)return!1;let n=this._workbookSelections.getCurrentSelections();return(e=n==null?void 0:n.some(e=>!H(e,t)))==null?!1:e},i,a=!0,o=!1,s=()=>{let t=this._workbook.getActiveSheet();if(!t)return{results:[]};let s=this.currentMatch;o=r();let c=this._workbookSelections.getCurrentSelections(),l=o?this._findInSelections(t,c,e,n):this._findInWorksheet(t,e,n);return this._matches=l.results,this._matchesPosition=this._tryRestoreLastMatchesPosition(s,this._matches),a?(i=l,a=!1):this._matchesUpdate$.next(this._matches),this._updateFindHighlight(),l};return this.disposeWithMe(this._sheetSkeletonManagerService.currentSkeleton$.subscribe(()=>this._updateFindHighlight())),this.disposeWithMe(M(v(this._commandService.onCommandExecuted.bind(this._commandService)).pipe(j(([e])=>{if(e.type===t.MUTATION&&e.params.unitId===this._workbook.getUnitId())return!0;if(e.id===te.id&&e.params.unitId===n){let e=r();return e===!1&&o===!1?!1:(o=e,!0)}return!1})),this._workbook.activeSheet$.pipe(N(1))).pipe(he(200)).subscribe(()=>s())),s(),i}_findInRange(e,t,n,r,i){let a=[],o=e.getSheetId(),s=(t.findDirection===D.COLUMN?e.iterateByColumn:e.iterateByRow).bind(e)(n);for(let n of s){let{row:s,col:c,colSpan:l,rowSpan:u,value:d}=n;if(i!=null&&i(s,c)||!d||e.getRowFiltered(s))continue;let{hit:f,replaceable:p,isFormula:m}=xe(e,s,c,t,d);if(f){let e={provider:`sheets-find-replace-provider`,unitId:r,replaceable:p,isFormula:m,range:{subUnitId:o,range:{startRow:s,startColumn:c,endColumn:c+(l==null?1:l)-1,endRow:s+(u==null?1:u)-1}}};a.push(e)}}return{results:a}}_findInSelections(e,t,n,r){let{findDirection:i}=n,a=i===D.ROW?B:V,o=new Set;return{results:t.map(t=>this._findInRange(e,n,t.range,r,(e,t)=>{let n=`${e}-${t}`;return o.has(n)?!0:(o.add(n),!1)}).results).flat().sort((e,t)=>a(e.range.range,t.range.range)?-1:1)}}_findInWorksheet(e,t,n){let r=e.getRowCount(),i=e.getColumnCount(),a={startRow:0,startColumn:0,endRow:r-1,endColumn:i-1};return this._findInRange(e,t,a,n)}_disposeHighlights(){var e;this._highlightShapes.forEach(e=>{var t;(t=e.getScene())==null||t.makeDirty(),e.dispose()}),this._highlightShapes=[],(e=this._currentHighlightShape)==null||e.dispose(),this._currentHighlightShape=null}_updateFindHighlight(){var t;this._disposeHighlights();let n=(t=this._sheetSkeletonManagerService.getCurrent())==null?void 0:t.skeleton;if(!n)return;let r=this._workbook.getUnitId(),i=this._renderManagerService.getRenderById(r);if(i==null)return;let{scene:a}=i,o=this._matches,s=new e(this._themeService.getColorFromTheme(`yellow.400`)).toRgb(),c=this._workbook.getActiveSheet();if(!c)return;let l=c.getSheetId(),u=o.filter(e=>e.range.subUnitId===l).map((e,t)=>{let{startColumn:r,startRow:i,endColumn:o,endRow:l}=e.range.range,u=k(i,r,a,n),d=k(l,o,a,n),{startX:f,startY:p}=u,{endX:m,endY:h}=d,g=!0;for(let e=i;e<=l;e++)if(c.getRowRawVisible(e)){g=!1;break}let _=!0;for(let e=r;e<=o;e++)if(c.getColVisible(e)){_=!1;break}let v=g||_,y={left:f,top:p,color:s,width:_?2:m-f,height:g?2:h-p,evented:!1,inHiddenRange:v,zIndex:1e4};return new ve(`find-highlight-${t}`,y)});a.addObjects(u),this._highlightShapes=u,a.makeDirty()}_updateCurrentHighlightShape(e){var t;if((t=this._currentHighlightShape)==null||t.setShapeProps({activated:!1}),this._currentHighlightShape=null,e!==void 0){let t=this._highlightShapes[e];if(!t)return;this._currentHighlightShape=t,t.setShapeProps({activated:!0})}}_getSheetObject(){return me(this._univerInstanceService,this._renderManagerService)}_focusMatch(e){var t;let n=e.range.subUnitId;n!==((t=this._workbook.getActiveSheet())==null?void 0:t.getSheetId())&&this._commandService.executeCommand(ne.id,{unitId:this._workbook.getUnitId(),subUnitId:n},{fromFindReplace:!0}),this._commandService.executeCommand(fe.id,{range:e.range.range},{fromFindReplace:!0})}_tryRestoreLastMatchesPosition(e,t){if(!e)return 0;let{subUnitId:n}=e.range,{startColumn:r,startRow:i}=e.range.range,a=t.findIndex(e=>{if(n!==e.range.subUnitId)return!1;let{startColumn:t,startRow:a}=e.range.range;return t===r&&a===i});return a>-1?a+1:0}moveToNextMatch(e){var t,n,r,i;if(!this._matches.length)return null;let a=(t=e==null?void 0:e.loop)==null?!1:t,o=(n=e==null?void 0:e.stayIfOnMatch)==null?!1:n,s=(r=e==null?void 0:e.noFocus)==null?!1:r,c=(i=e==null?void 0:e.ignoreSelection)==null?!1:i,l=this._findNextMatch(a,o,c);if(l){var u;let[e,t]=l;return this._matchesPosition=t+1,this._query.findScope===O.UNIT?this._activeHighlightIndex=this._matchesByWorksheet.get(e.range.subUnitId).findIndex(t=>t===e):this._activeHighlightIndex=t,s||this._focusMatch(e),((u=this._workbook.getActiveSheet())==null?void 0:u.getSheetId())===e.range.subUnitId&&this._updateCurrentHighlightShape(this._activeHighlightIndex),e}return this._matchesPosition=0,this._updateCurrentHighlightShape(),null}moveToPreviousMatch(e){var t,n,r,i;if(!this._matches.length)return null;let a=(t=e==null?void 0:e.loop)==null?!1:t,o=(n=e==null?void 0:e.stayIfOnMatch)==null?!1:n,s=(r=e==null?void 0:e.noFocus)==null?!1:r,c=(i=e==null?void 0:e.ignoreSelection)==null?!1:i,l=this._findPreviousMatch(a,o,c);if(l){var u;let[e,t]=l;return this._matchesPosition=t+1,this._query.findScope===O.UNIT?this._activeHighlightIndex=this._matchesByWorksheet.get(e.range.subUnitId).findIndex(t=>t===e):this._activeHighlightIndex=t,s||this._focusMatch(e),((u=this._workbook.getActiveSheet())==null?void 0:u.getSheetId())===e.range.subUnitId&&this._updateCurrentHighlightShape(this._activeHighlightIndex),e}return this._matchesPosition=0,this._updateCurrentHighlightShape(),null}_findPreviousMatch(e=!1,t=!1,n=!1){var r;if(this.currentMatch){let n=this._matches.findIndex(e=>e===this.currentMatch);if(t)return[this.currentMatch,n];let r=n-1;if(!e&&r<0)return null;let i=this._matches.length,a=(r+i)%i;return[this._matches[a],a]}let i=this._workbookSelections.getCurrentLastSelection();if(n||!i){let e=this._matches.length-1;return[this._matches[e],e]}if(this._query.findScope!==O.UNIT)return this._findPreviousMatchByRange(this._matches,i.range);let a=(r=this._workbook.getActiveSheet())==null?void 0:r.getSheetId();if(!a)return null;let o=this._findPreviousWorksheetThatHasAMatch(a,e);return o?this._findPreviousMatchByRange(this._matchesByWorksheet.get(o),i.range):null}_findNextMatch(e=!1,t=!1,n=!1){var r;if(this.currentMatch){let n=this._matches.findIndex(e=>e===this.currentMatch);if(t)return[this.currentMatch,n];let r=n+1,i=this._matches.length;if(!e&&r>=i)return null;let a=r%i;return[this._matches[a],a]}let i=this._workbookSelections.getCurrentLastSelection();if(n||!i)return[this._matches[0],0];if(this._query.findScope!==O.UNIT)return this._findNextMatchByRange(this._matches,i.range,t);let a=(r=this._workbook.getActiveSheet())==null?void 0:r.getSheetId();if(!a)return null;let o=this._findNextWorksheetThatHasAMatch(a,e);return o?this._findNextMatchByRange(this._matchesByWorksheet.get(o),i.range):null}_findPreviousWorksheetThatHasAMatch(e,t=!1){let n=this._workbook.getSheetOrders(),r=n.findIndex(t=>t===e),i=(t?x(n,r+1):n.slice(0,r+1)).findLast(e=>this._matchesByWorksheet.has(e));return i==null?null:i}_findNextWorksheetThatHasAMatch(e,t=!1){let n=this._workbook.getSheetOrders(),r=n.findIndex(t=>t===e),i=(t?x(n,r):n.slice(r)).find(e=>this._matchesByWorksheet.has(e));return i==null?null:i}_findNextMatchByRange(e,t,n=!1){let r=this._query.findDirection===D.ROW,i=e.findIndex(e=>{let i=e.range.range;if(!(r?B(t,i):V(t,i)))return!1;let a=z(t,i);return n?a:!a});i===-1&&(i=e.length-1);let a=e[i];return[a,this._matches.findIndex(e=>e===a)]}_findPreviousMatchByRange(e,t,n=!1){let r=this._query.findDirection===D.ROW,i=this._matches.findLastIndex(e=>{let i=e.range.range;if(!(r?ye(t,i):be(t,i)))return!1;let a=z(t,i);return n?a:!a});i===-1&&(i=0);let a=e[i];return[a,this._matches.findIndex(e=>e===a)]}async replace(e){if(this._matchesCount===0||!this.currentMatch||!this._query||!this.currentMatch.replaceable)return!1;let t=this.currentMatch.range,n=this._workbook.getSheetBySheetId(this.currentMatch.range.subUnitId),r=this._getReplacedCellData(this.currentMatch,n,this._query.findBy===E.FORMULA,this._query.findString,e,this._query.caseSensitive?`g`:`ig`),i={unitId:this.currentMatch.unitId,subUnitId:t.subUnitId,value:{[t.range.startRow]:{[t.range.startColumn]:r}}};return this._commandService.executeCommand(C.id,i)}async replaceAll(e){if(this._matchesCount===0||!this._query)return{success:0,failure:0};let t=this._workbook.getUnitId(),{findString:n,caseSensitive:r,findBy:i}=this._query,a=i===E.FORMULA,o=r?`g`:`ig`,s=[];return y(this._matches.filter(e=>e.replaceable),e=>e.range.subUnitId).forEach((t,r)=>{let i=new f,c=this._workbook.getSheetBySheetId(r);t.forEach(t=>{let{startColumn:r,startRow:s}=t.range.range,l=this._getReplacedCellData(t,c,a,n,e,o);l&&i.setValue(s,r,l)}),s.push({count:t.length,subUnitId:r,value:i.getMatrix()})}),s?this._commandService.executeCommand(F.id,{unitId:t,replacements:s}):{success:0,failure:0}}_getReplacedCellData(e,t,n,r,i,a){var o;let{startRow:s,startColumn:c}=e.range.range,l=t.getCellRaw(s,c);if(e.isFormula)return n?{f:l.f.replace(new RegExp(q(r),a),i),v:null}:null;if((o=l.p)!=null&&o.body){let e=g.deepClone(l.p);return ee(e.body,r,i,this._query.caseSensitive),{p:e}}return{v:l.v.toString().replace(new RegExp(q(r),a),i)}}};K=W([U(2,l),U(3,T),U(4,a),U(5,s),U(6,u(h)),U(7,u(ie))],K);function q(e){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,`\\$&`)}let J=class extends r{constructor(e,t,n){super(),this._univerInstanceService=e,this._renderManagerService=t,this._injector=n,R(this,`_findModelsByUnitId`,new Map)}async find(e){this._terminate();let t=this._univerInstanceService.getCurrentUnitOfType(_.UNIVER_SHEET);if(!t)return[];let n=this._preprocessQuery(e),r=this._renderManagerService.getRenderById(t.getUnitId()).with(pe),i=this._injector.createInstance(K,t,r);return this._findModelsByUnitId.set(t.getUnitId(),i),i.start(n),[i]}terminate(){this._terminate()}_terminate(){this._findModelsByUnitId.forEach(e=>e.dispose()),this._findModelsByUnitId.clear()}_preprocessQuery(e){let t=e.caseSensitive?e.findString:e.findString.toLowerCase();return t=t.trim(),{...e,findString:t}}};J=W([U(0,l),U(1,T),U(2,u(d))],J);const Y={hit:!1,replaceable:!1,isFormula:!1,rawData:null};function xe(e,t,n,r,i){let{findBy:a}=r,o=a===E.FORMULA,s=e.getCellRaw(t,n);return Y.rawData=s,s!=null&&s.f?(Y.isFormula=!0,o?X({v:s.f},r)?(Y.hit=!0,Y.replaceable=!0,Y):(Y.hit=!1,Y.replaceable=!1,Y):(Y.replaceable=!1,X(i,r)?Y.hit=!0:Y.hit=!1,Y)):(Y.isFormula=!1,X(i,r)?s?(Y.hit=!0,Y.replaceable=!0):(Y.hit=!0,Y.replaceable=!1):(Y.hit=!1,Y.replaceable=!1),Y)}function X(e,t){let n=Se(e);return n?t.matchesTheWholeCell?(n=Ce(n),t.caseSensitive?n===t.findString:n.toLowerCase()===t.findString):t.caseSensitive?n.indexOf(t.findString)>-1:n.toLowerCase().indexOf(t.findString)>-1:!1}function Se(e){var t,n;let r=(t=e==null||(n=e.p)==null||(n=n.body)==null?void 0:n.dataStream)==null?e==null?void 0:e.v:t;return typeof r==`number`?`${r}`:typeof r==`boolean`?r?`1`:`0`:r}function Ce(e){return e.replace(/^ +/g,``).replace(/ +$/g,``)}var we=`@univerjs/sheets-find-replace`,Te=`0.17.0-insiders.20260318-5bef180`;const Z=`sheets-find-replace.config`;Symbol(Z);const Q={};let $=class extends p{constructor(e=Q,t,n){super(),this._config=e,this._injector=t,this._configService=n;let{...r}=b({},Q,this._config);this._configService.setConfig(Z,r)}onStarting(){[[G]].forEach(e=>this._injector.add(e))}onSteady(){this._injector.get(G)}};R($,`pluginName`,`SHEET_FIND_REPLACE_PLUGIN`),R($,`packageName`,we),R($,`version`,Te),R($,`type`,_.UNIVER_SHEET),$=W([n(w,w,de),U(1,u(d)),U(2,o)],$);export{F as SheetReplaceCommand,G as SheetsFindReplaceController,$ as UniverSheetsFindReplacePlugin};
@@ -1,11 +1 @@
1
- const e = {
2
- "sheet-find-replace": {
3
- replace: {
4
- "partial-failure": "No s’ha pogut substituir algunes cel·les",
5
- failure: "No s’ha pogut substituir cap cel·la"
6
- }
7
- }
8
- };
9
- export {
10
- e as default
11
- };
1
+ const e={"sheet-find-replace":{replace:{"partial-failure":`No s’ha pogut substituir algunes cel·les`,failure:`No s’ha pogut substituir cap cel·la`}}};export{e as default};