@wix/bex-core 1.447.0 → 1.448.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.
- package/dist/cjs/state/TagsState/TagsAssignmentState.js +349 -0
- package/dist/cjs/state/TagsState/TagsAssignmentState.js.map +1 -0
- package/dist/cjs/state/TagsState/TagsBIReporter.js +156 -0
- package/dist/cjs/state/TagsState/TagsBIReporter.js.map +1 -0
- package/dist/cjs/state/TagsState/TagsFormState.js +228 -0
- package/dist/cjs/state/TagsState/TagsFormState.js.map +1 -0
- package/dist/cjs/state/TagsState/TagsManagementState.js +312 -0
- package/dist/cjs/state/TagsState/TagsManagementState.js.map +1 -0
- package/dist/cjs/state/TagsState/TagsSearchState.js +48 -0
- package/dist/cjs/state/TagsState/TagsSearchState.js.map +1 -0
- package/dist/cjs/state/TagsState/TagsWidgetState.js +98 -0
- package/dist/cjs/state/TagsState/TagsWidgetState.js.map +1 -0
- package/dist/cjs/state/TagsState/index.js +46 -0
- package/dist/cjs/state/TagsState/index.js.map +1 -0
- package/dist/cjs/state/TagsState/tagsTypes.js +2 -0
- package/dist/cjs/state/TagsState/tagsTypes.js.map +1 -0
- package/dist/cjs/state/index.js +7 -0
- package/dist/cjs/state/index.js.map +1 -1
- package/dist/esm/state/TagsState/TagsAssignmentState.js +245 -0
- package/dist/esm/state/TagsState/TagsAssignmentState.js.map +1 -0
- package/dist/esm/state/TagsState/TagsBIReporter.js +115 -0
- package/dist/esm/state/TagsState/TagsBIReporter.js.map +1 -0
- package/dist/esm/state/TagsState/TagsFormState.js +202 -0
- package/dist/esm/state/TagsState/TagsFormState.js.map +1 -0
- package/dist/esm/state/TagsState/TagsManagementState.js +208 -0
- package/dist/esm/state/TagsState/TagsManagementState.js.map +1 -0
- package/dist/esm/state/TagsState/TagsSearchState.js +40 -0
- package/dist/esm/state/TagsState/TagsSearchState.js.map +1 -0
- package/dist/esm/state/TagsState/TagsWidgetState.js +75 -0
- package/dist/esm/state/TagsState/TagsWidgetState.js.map +1 -0
- package/dist/esm/state/TagsState/index.js +8 -0
- package/dist/esm/state/TagsState/index.js.map +1 -0
- package/dist/esm/state/TagsState/tagsTypes.js +2 -0
- package/dist/esm/state/TagsState/tagsTypes.js.map +1 -0
- package/dist/esm/state/index.js +1 -0
- package/dist/esm/state/index.js.map +1 -1
- package/dist/types/state/TagsState/TagsAssignmentState.d.ts +78 -0
- package/dist/types/state/TagsState/TagsAssignmentState.d.ts.map +1 -0
- package/dist/types/state/TagsState/TagsBIReporter.d.ts +35 -0
- package/dist/types/state/TagsState/TagsBIReporter.d.ts.map +1 -0
- package/dist/types/state/TagsState/TagsFormState.d.ts +76 -0
- package/dist/types/state/TagsState/TagsFormState.d.ts.map +1 -0
- package/dist/types/state/TagsState/TagsManagementState.d.ts +65 -0
- package/dist/types/state/TagsState/TagsManagementState.d.ts.map +1 -0
- package/dist/types/state/TagsState/TagsSearchState.d.ts +13 -0
- package/dist/types/state/TagsState/TagsSearchState.d.ts.map +1 -0
- package/dist/types/state/TagsState/TagsWidgetState.d.ts +29 -0
- package/dist/types/state/TagsState/TagsWidgetState.d.ts.map +1 -0
- package/dist/types/state/TagsState/index.d.ts +8 -0
- package/dist/types/state/TagsState/index.d.ts.map +1 -0
- package/dist/types/state/TagsState/tagsTypes.d.ts +9 -0
- package/dist/types/state/TagsState/tagsTypes.d.ts.map +1 -0
- package/dist/types/state/index.d.ts +1 -0
- package/dist/types/state/index.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.TagsAssignmentState = void 0;
|
|
6
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
7
|
+
var _v = require("@wix/bex-utils/@wix/bi-logger-cairo-os/v2");
|
|
8
|
+
var _uuid = require("uuid");
|
|
9
|
+
var _mobx = require("mobx");
|
|
10
|
+
var _CollectionOptimisticActions = require("../CollectionOptimisticActions");
|
|
11
|
+
var _TaskState = require("../TaskState");
|
|
12
|
+
var _CollectionState = require("../CollectionState");
|
|
13
|
+
var _util = require("../../util");
|
|
14
|
+
class TagsAssignmentState {
|
|
15
|
+
constructor({
|
|
16
|
+
tagsManagementState,
|
|
17
|
+
entityId,
|
|
18
|
+
origin,
|
|
19
|
+
tagsBIReporter,
|
|
20
|
+
...params
|
|
21
|
+
}) {
|
|
22
|
+
(0, _defineProperty2.default)(this, "tagsManagementState", void 0);
|
|
23
|
+
(0, _defineProperty2.default)(this, "origin", void 0);
|
|
24
|
+
(0, _defineProperty2.default)(this, "tagsBIReporter", void 0);
|
|
25
|
+
(0, _defineProperty2.default)(this, "initTask", new _TaskState.TaskState());
|
|
26
|
+
(0, _defineProperty2.default)(this, "collection", void 0);
|
|
27
|
+
(0, _defineProperty2.default)(this, "optimisticActions", void 0);
|
|
28
|
+
(0, _defineProperty2.default)(this, "entityId", void 0);
|
|
29
|
+
(0, _defineProperty2.default)(this, "initialTags", []);
|
|
30
|
+
(0, _defineProperty2.default)(this, "fqdn", void 0);
|
|
31
|
+
(0, _defineProperty2.default)(this, "assignTag", async ({
|
|
32
|
+
tag,
|
|
33
|
+
onSubmit,
|
|
34
|
+
isFromSearch,
|
|
35
|
+
optimisticActionParams
|
|
36
|
+
}) => {
|
|
37
|
+
if (this.assignedTagIds.includes(tag.id)) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const newIndex = this._getNewIndex();
|
|
41
|
+
await this.optimisticActions.createOne({
|
|
42
|
+
id: tag.id,
|
|
43
|
+
index: newIndex
|
|
44
|
+
}, {
|
|
45
|
+
...optimisticActionParams,
|
|
46
|
+
submit: async _ => {
|
|
47
|
+
await this._assignTag({
|
|
48
|
+
tagIds: this.assignedTagIds,
|
|
49
|
+
tag,
|
|
50
|
+
onSubmit,
|
|
51
|
+
isFromSearch
|
|
52
|
+
});
|
|
53
|
+
return [{
|
|
54
|
+
id: tag.id,
|
|
55
|
+
index: newIndex
|
|
56
|
+
}];
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
(0, _defineProperty2.default)(this, "unassignTag", async ({
|
|
61
|
+
tag,
|
|
62
|
+
onSubmit,
|
|
63
|
+
isFromSearch = false,
|
|
64
|
+
optimisticActionParams
|
|
65
|
+
}) => {
|
|
66
|
+
const tagToUnassign = this.collection.result.items.find(t => t.id === tag.id);
|
|
67
|
+
await this.optimisticActions.deleteOne(tagToUnassign, {
|
|
68
|
+
...optimisticActionParams,
|
|
69
|
+
submit: async () => {
|
|
70
|
+
this._invokeBiOnAssignUnassign({
|
|
71
|
+
actionName: 'Remove',
|
|
72
|
+
tag,
|
|
73
|
+
isFromSearch
|
|
74
|
+
});
|
|
75
|
+
await (onSubmit == null ? void 0 : onSubmit({
|
|
76
|
+
allTags: {
|
|
77
|
+
privateTags: {
|
|
78
|
+
tagIds: this.assignedTagIds.filter(id => id !== tag.id)
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
addedTags: {
|
|
82
|
+
privateTags: {
|
|
83
|
+
tagIds: []
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
removedTags: {
|
|
87
|
+
privateTags: {
|
|
88
|
+
tagIds: [tag.id]
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
(0, _defineProperty2.default)(this, "createAndAssignTag", async ({
|
|
96
|
+
name,
|
|
97
|
+
id = (0, _uuid.v4)(),
|
|
98
|
+
filteredListSize,
|
|
99
|
+
onSubmit,
|
|
100
|
+
assignOptimisticActionParams,
|
|
101
|
+
createOptimisticActionParams
|
|
102
|
+
}) => {
|
|
103
|
+
const newIndex = this._getNewIndex();
|
|
104
|
+
this.optimisticActions.createOne({
|
|
105
|
+
id,
|
|
106
|
+
index: newIndex
|
|
107
|
+
}, {
|
|
108
|
+
...assignOptimisticActionParams,
|
|
109
|
+
submit: async _ => {
|
|
110
|
+
const newTag = await this._createAndAssign({
|
|
111
|
+
name,
|
|
112
|
+
id,
|
|
113
|
+
filteredListSize,
|
|
114
|
+
onSubmit,
|
|
115
|
+
createOptimisticActionParams
|
|
116
|
+
});
|
|
117
|
+
return [{
|
|
118
|
+
id: newTag.id,
|
|
119
|
+
index: newIndex
|
|
120
|
+
}];
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
(0, _defineProperty2.default)(this, "_assignTag", async ({
|
|
125
|
+
tagIds,
|
|
126
|
+
tag,
|
|
127
|
+
onSubmit,
|
|
128
|
+
isFromSearch
|
|
129
|
+
}) => {
|
|
130
|
+
this._invokeBiOnAssignUnassign({
|
|
131
|
+
actionName: 'Assign',
|
|
132
|
+
tag,
|
|
133
|
+
isFromSearch
|
|
134
|
+
});
|
|
135
|
+
await (onSubmit == null ? void 0 : onSubmit({
|
|
136
|
+
allTags: {
|
|
137
|
+
privateTags: {
|
|
138
|
+
tagIds: Array.from(new Set([...tagIds, tag.id]))
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
addedTags: {
|
|
142
|
+
privateTags: {
|
|
143
|
+
tagIds: [tag.id]
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
removedTags: {
|
|
147
|
+
privateTags: {
|
|
148
|
+
tagIds: []
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}));
|
|
152
|
+
});
|
|
153
|
+
(0, _defineProperty2.default)(this, "_createAndAssign", async ({
|
|
154
|
+
name,
|
|
155
|
+
id,
|
|
156
|
+
filteredListSize,
|
|
157
|
+
onSubmit,
|
|
158
|
+
createOptimisticActionParams
|
|
159
|
+
}) => {
|
|
160
|
+
const isFromSearch = true;
|
|
161
|
+
let assignError;
|
|
162
|
+
let newTag = this.tagsManagementState.items.find(tag => tag.name === name);
|
|
163
|
+
if (newTag) {
|
|
164
|
+
await this._assignTag({
|
|
165
|
+
tagIds: this.assignedTagIds.filter(tagId => tagId !== id),
|
|
166
|
+
tag: newTag,
|
|
167
|
+
onSubmit,
|
|
168
|
+
isFromSearch
|
|
169
|
+
});
|
|
170
|
+
return newTag;
|
|
171
|
+
}
|
|
172
|
+
newTag = await this._createTag({
|
|
173
|
+
name,
|
|
174
|
+
id,
|
|
175
|
+
filteredListSize,
|
|
176
|
+
isFromSearch,
|
|
177
|
+
createOptimisticActionParams,
|
|
178
|
+
onCreateSuccess: async newTag => {
|
|
179
|
+
try {
|
|
180
|
+
await this._assignTag({
|
|
181
|
+
tagIds: this.assignedTagIds.filter(tagId => tagId !== id),
|
|
182
|
+
tag: newTag,
|
|
183
|
+
onSubmit,
|
|
184
|
+
isFromSearch
|
|
185
|
+
});
|
|
186
|
+
} catch (error) {
|
|
187
|
+
assignError = error;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
// We want to throw assign exception in assign optimistic context so assign tryAgain (and not create) will be triggered
|
|
193
|
+
if (assignError) {
|
|
194
|
+
throw assignError;
|
|
195
|
+
}
|
|
196
|
+
return newTag;
|
|
197
|
+
});
|
|
198
|
+
(0, _defineProperty2.default)(this, "_createTag", async ({
|
|
199
|
+
name,
|
|
200
|
+
id,
|
|
201
|
+
filteredListSize,
|
|
202
|
+
isFromSearch,
|
|
203
|
+
onCreateSuccess,
|
|
204
|
+
createOptimisticActionParams
|
|
205
|
+
}) => {
|
|
206
|
+
return new Promise(async resolve => {
|
|
207
|
+
await this.tagsManagementState.createTag({
|
|
208
|
+
name,
|
|
209
|
+
id,
|
|
210
|
+
filteredListSize,
|
|
211
|
+
origin: this.origin,
|
|
212
|
+
isFromSearch,
|
|
213
|
+
tagsBIReporter: this.tagsBIReporter,
|
|
214
|
+
optimisticActionParams: createOptimisticActionParams,
|
|
215
|
+
onSuccess: async newTag => {
|
|
216
|
+
await (onCreateSuccess == null ? void 0 : onCreateSuccess(newTag));
|
|
217
|
+
resolve(newTag);
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
this.tagsManagementState = tagsManagementState;
|
|
223
|
+
this.origin = origin;
|
|
224
|
+
this.tagsBIReporter = tagsBIReporter;
|
|
225
|
+
this.fqdn = params.fqdn;
|
|
226
|
+
(0, _mobx.makeObservable)(this, {
|
|
227
|
+
initialTags: _mobx.observable,
|
|
228
|
+
init: _mobx.action,
|
|
229
|
+
assignTag: _mobx.action,
|
|
230
|
+
createAndAssignTag: _mobx.action,
|
|
231
|
+
unassignTag: _mobx.action,
|
|
232
|
+
clear: _mobx.action,
|
|
233
|
+
assignedTags: _mobx.computed,
|
|
234
|
+
initialTagIds: _mobx.computed,
|
|
235
|
+
isDirty: _mobx.computed
|
|
236
|
+
});
|
|
237
|
+
this.collection = new _CollectionState.CollectionState({
|
|
238
|
+
...tagsManagementState.container,
|
|
239
|
+
events: {},
|
|
240
|
+
queryName: [this.fqdnString, origin, entityId].join('/'),
|
|
241
|
+
fetchData: async () => {
|
|
242
|
+
return {
|
|
243
|
+
items: this.initialTags,
|
|
244
|
+
total: this.initialTags.length
|
|
245
|
+
};
|
|
246
|
+
},
|
|
247
|
+
itemKey: tag => tag.id,
|
|
248
|
+
itemName: tag => tag.id,
|
|
249
|
+
fetchErrorMessage: () => '',
|
|
250
|
+
filters: {}
|
|
251
|
+
});
|
|
252
|
+
this.optimisticActions = new _CollectionOptimisticActions.CollectionOptimisticActions({
|
|
253
|
+
collection: this.collection,
|
|
254
|
+
container: tagsManagementState.container,
|
|
255
|
+
orderBy: () => [{
|
|
256
|
+
fieldName: ({
|
|
257
|
+
index
|
|
258
|
+
}) => index,
|
|
259
|
+
order: 'asc'
|
|
260
|
+
}]
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
init({
|
|
264
|
+
initialTags,
|
|
265
|
+
entityId
|
|
266
|
+
}) {
|
|
267
|
+
var _initialTags$privateT;
|
|
268
|
+
this.initialTags = Array.from(new Set((initialTags == null || (_initialTags$privateT = initialTags.privateTags) == null ? void 0 : _initialTags$privateT.tagIds) || [])).map((id, index) => ({
|
|
269
|
+
index,
|
|
270
|
+
id
|
|
271
|
+
}));
|
|
272
|
+
this.entityId = entityId ?? undefined;
|
|
273
|
+
const {
|
|
274
|
+
collection,
|
|
275
|
+
optimisticActions
|
|
276
|
+
} = this;
|
|
277
|
+
const disposers = [collection.init(), optimisticActions.init()];
|
|
278
|
+
this.initTask.runOnce(async () => {
|
|
279
|
+
await collection.initTask.status.promise;
|
|
280
|
+
this.tagsManagementState.init();
|
|
281
|
+
await this.tagsManagementState.initTask.status.promise;
|
|
282
|
+
});
|
|
283
|
+
return () => {
|
|
284
|
+
disposers.forEach(disposer => disposer());
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
get fqdnString() {
|
|
288
|
+
return (0, _util.fqdnToString)(this.fqdn);
|
|
289
|
+
}
|
|
290
|
+
get isLoading() {
|
|
291
|
+
const {
|
|
292
|
+
status
|
|
293
|
+
} = this.tagsManagementState.initTask;
|
|
294
|
+
return status.isIdle || status.isLoading || this.initTask.status.isLoading;
|
|
295
|
+
}
|
|
296
|
+
get isError() {
|
|
297
|
+
return this.tagsManagementState.initTask.status.isError || this.initTask.status.isError;
|
|
298
|
+
}
|
|
299
|
+
retry() {
|
|
300
|
+
this.initTask.runOnce();
|
|
301
|
+
}
|
|
302
|
+
get assignedTags() {
|
|
303
|
+
var _this$collection$resu;
|
|
304
|
+
return (_this$collection$resu = this.collection.result.items) == null ? void 0 : _this$collection$resu.map(({
|
|
305
|
+
id
|
|
306
|
+
}) => {
|
|
307
|
+
return this.tagsManagementState.items.find(tag => tag.id === id);
|
|
308
|
+
}).filter(Boolean);
|
|
309
|
+
}
|
|
310
|
+
get assignedTagIds() {
|
|
311
|
+
return this.collection.result.items.map(tag => tag.id);
|
|
312
|
+
}
|
|
313
|
+
get initialTagIds() {
|
|
314
|
+
return this.initialTags.map(tag => tag.id);
|
|
315
|
+
}
|
|
316
|
+
clear() {
|
|
317
|
+
this.collection.result.clear();
|
|
318
|
+
}
|
|
319
|
+
get isDirty() {
|
|
320
|
+
if (this.initialTagIds.length !== this.assignedTagIds.length) {
|
|
321
|
+
return true;
|
|
322
|
+
}
|
|
323
|
+
const unassigendTagIds = this.initialTagIds.filter(id => !this.assignedTagIds.includes(id));
|
|
324
|
+
const assignedTagIds = this.assignedTagIds.filter(id => !this.initialTagIds.includes(id));
|
|
325
|
+
return unassigendTagIds.length !== 0 || assignedTagIds.length !== 0;
|
|
326
|
+
}
|
|
327
|
+
_invokeBiOnAssignUnassign({
|
|
328
|
+
actionName,
|
|
329
|
+
tag,
|
|
330
|
+
isFromSearch = false
|
|
331
|
+
}) {
|
|
332
|
+
this.tagsBIReporter.reportBi((0, _v.cairoTagsAssignTag)({
|
|
333
|
+
actionName,
|
|
334
|
+
isFromSearch,
|
|
335
|
+
itemId: this.entityId,
|
|
336
|
+
numItems: 1,
|
|
337
|
+
numTags: this.tagsManagementState.items.length,
|
|
338
|
+
numTagsAssigned: this.assignedTags.length,
|
|
339
|
+
tagName: tag.name,
|
|
340
|
+
origin: this.origin
|
|
341
|
+
}));
|
|
342
|
+
}
|
|
343
|
+
_getNewIndex() {
|
|
344
|
+
const max = Math.max(0, ...this.collection.result.items.map(tag => tag.index));
|
|
345
|
+
return max + 1;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
exports.TagsAssignmentState = TagsAssignmentState;
|
|
349
|
+
//# sourceMappingURL=TagsAssignmentState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_v","require","_uuid","_mobx","_CollectionOptimisticActions","_TaskState","_CollectionState","_util","TagsAssignmentState","constructor","tagsManagementState","entityId","origin","tagsBIReporter","params","_defineProperty2","default","TaskState","tag","onSubmit","isFromSearch","optimisticActionParams","assignedTagIds","includes","id","newIndex","_getNewIndex","optimisticActions","createOne","index","submit","_","_assignTag","tagIds","tagToUnassign","collection","result","items","find","t","deleteOne","_invokeBiOnAssignUnassign","actionName","allTags","privateTags","filter","addedTags","removedTags","name","uuid","filteredListSize","assignOptimisticActionParams","createOptimisticActionParams","newTag","_createAndAssign","Array","from","Set","assignError","tagId","_createTag","onCreateSuccess","error","Promise","resolve","createTag","onSuccess","fqdn","makeObservable","initialTags","observable","init","action","assignTag","createAndAssignTag","unassignTag","clear","assignedTags","computed","initialTagIds","isDirty","CollectionState","container","events","queryName","fqdnString","join","fetchData","total","length","itemKey","itemName","fetchErrorMessage","filters","CollectionOptimisticActions","orderBy","fieldName","order","_initialTags$privateT","map","undefined","disposers","initTask","runOnce","status","promise","forEach","disposer","fqdnToString","isLoading","isIdle","isError","retry","_this$collection$resu","Boolean","unassigendTagIds","reportBi","cairoTagsAssignTag","itemId","numItems","numTags","numTagsAssigned","tagName","max","Math","exports"],"sources":["../../../../src/state/TagsState/TagsAssignmentState.ts"],"sourcesContent":["import { Tag } from '@wix/bex-utils/@wix/ambassador-os-tags-v1-tag/types';\nimport { TagsManagementState } from './TagsManagementState';\nimport { TagsBIReporter } from './TagsBIReporter';\nimport { cairoTagsAssignTag } from '@wix/bex-utils/@wix/bi-logger-cairo-os/v2';\nimport { Tags } from './tagsTypes';\nimport { v4 as uuid } from 'uuid';\nimport { action, computed, makeObservable, observable } from 'mobx';\nimport { Fqdn } from '../../model';\nimport {\n CollectionOptimisticActions,\n CreateManyParams,\n DeleteManyParams,\n} from '../CollectionOptimisticActions';\nimport { TaskState } from '../TaskState';\nimport { CollectionState } from '../CollectionState';\nimport { fqdnToString } from '../../util';\n\nexport type OnSubmitTagsFuncType = ({\n allTags,\n addedTags,\n removedTags,\n}: {\n allTags: Tags;\n addedTags: Tags;\n removedTags: Tags;\n}) => void;\n\nexport interface TagsAssignmentStateParams {\n readonly tagsManagementState: TagsManagementState;\n readonly entityId?: string;\n readonly origin: string;\n readonly fqdn: Fqdn;\n readonly tagsBIReporter: TagsBIReporter;\n}\n\nexport interface CreateAndAssignParams {\n name: string;\n id?: string;\n filteredListSize: number;\n onSubmit?: OnSubmitTagsFuncType;\n isFromSearch?: boolean;\n assignOptimisticActionParams?: Partial<CreateManyParams<Tag>>;\n createOptimisticActionParams?: Partial<CreateManyParams<Tag>>;\n}\n\ninterface TagAssignment {\n id: string;\n index: number;\n}\n\nexport class TagsAssignmentState {\n readonly tagsManagementState: TagsManagementState;\n readonly origin;\n readonly tagsBIReporter: TagsBIReporter;\n readonly initTask = new TaskState();\n readonly collection: CollectionState<TagAssignment>;\n readonly optimisticActions: CollectionOptimisticActions<TagAssignment, {}>;\n entityId?: string;\n initialTags: TagAssignment[] = [];\n readonly fqdn;\n\n constructor({\n tagsManagementState,\n entityId,\n origin,\n tagsBIReporter,\n ...params\n }: TagsAssignmentStateParams) {\n this.tagsManagementState = tagsManagementState;\n this.origin = origin;\n this.tagsBIReporter = tagsBIReporter;\n this.fqdn = params.fqdn;\n\n makeObservable(this, {\n initialTags: observable,\n init: action,\n assignTag: action,\n createAndAssignTag: action,\n unassignTag: action,\n clear: action,\n assignedTags: computed,\n initialTagIds: computed,\n isDirty: computed,\n });\n this.collection = new CollectionState<TagAssignment>({\n ...tagsManagementState.container,\n events: {},\n queryName: [this.fqdnString, origin, entityId].join('/'),\n fetchData: async () => {\n return {\n items: this.initialTags,\n total: this.initialTags.length,\n };\n },\n itemKey: (tag) => tag.id,\n itemName: (tag) => tag.id,\n fetchErrorMessage: () => '',\n filters: {},\n });\n\n this.optimisticActions = new CollectionOptimisticActions<TagAssignment, {}>(\n {\n collection: this.collection,\n container: tagsManagementState.container,\n orderBy: () => [\n {\n fieldName: ({ index }) => index,\n order: 'asc',\n },\n ],\n },\n );\n }\n\n init({\n initialTags,\n entityId,\n }: {\n initialTags?: Tags;\n entityId?: string | null;\n }) {\n this.initialTags = Array.from(\n new Set(initialTags?.privateTags?.tagIds || []),\n ).map((id, index) => ({\n index,\n id,\n }));\n this.entityId = entityId ?? undefined;\n\n const { collection, optimisticActions } = this;\n\n const disposers = [collection.init(), optimisticActions.init()];\n\n this.initTask.runOnce(async () => {\n await collection.initTask.status.promise;\n\n this.tagsManagementState.init();\n await this.tagsManagementState.initTask.status.promise;\n });\n\n return () => {\n disposers.forEach((disposer) => disposer());\n };\n }\n\n get fqdnString() {\n return fqdnToString(this.fqdn);\n }\n\n get isLoading() {\n const { status } = this.tagsManagementState.initTask;\n return status.isIdle || status.isLoading || this.initTask.status.isLoading;\n }\n\n get isError() {\n return (\n this.tagsManagementState.initTask.status.isError ||\n this.initTask.status.isError\n );\n }\n\n retry() {\n this.initTask.runOnce();\n }\n\n get assignedTags() {\n return this.collection.result.items\n ?.map(({ id }) => {\n return this.tagsManagementState.items.find((tag: Tag) => tag.id === id);\n })\n .filter(Boolean) as Tag[];\n }\n\n get assignedTagIds() {\n return this.collection.result.items.map((tag) => tag.id);\n }\n\n get initialTagIds() {\n return this.initialTags.map((tag) => tag.id);\n }\n\n clear() {\n this.collection.result.clear();\n }\n\n assignTag = async ({\n tag,\n onSubmit,\n isFromSearch,\n optimisticActionParams,\n }: {\n tag: Tag;\n onSubmit?: OnSubmitTagsFuncType;\n isFromSearch?: boolean;\n optimisticActionParams?: Partial<CreateManyParams<Tag>>;\n }) => {\n if (this.assignedTagIds.includes(tag.id!)) {\n return;\n }\n const newIndex = this._getNewIndex();\n\n await this.optimisticActions.createOne(\n { id: tag.id!, index: newIndex },\n {\n ...optimisticActionParams,\n submit: async (_: any) => {\n await this._assignTag({\n tagIds: this.assignedTagIds,\n tag,\n onSubmit,\n isFromSearch,\n });\n\n return [{ id: tag.id!, index: newIndex }];\n },\n },\n );\n };\n\n unassignTag = async ({\n tag,\n onSubmit,\n isFromSearch = false,\n optimisticActionParams,\n }: {\n tag: Tag;\n onSubmit?: OnSubmitTagsFuncType;\n isFromSearch?: boolean;\n optimisticActionParams?: Partial<DeleteManyParams<Tag, {}>>;\n }) => {\n const tagToUnassign = this.collection.result.items.find(\n (t) => t.id === tag.id,\n );\n\n await this.optimisticActions.deleteOne(tagToUnassign!, {\n ...optimisticActionParams,\n submit: async () => {\n this._invokeBiOnAssignUnassign({\n actionName: 'Remove',\n tag,\n isFromSearch,\n });\n\n await onSubmit?.({\n allTags: {\n privateTags: {\n tagIds: this.assignedTagIds.filter((id: string) => id !== tag.id),\n },\n },\n addedTags: {\n privateTags: {\n tagIds: [],\n },\n },\n removedTags: {\n privateTags: {\n tagIds: [tag.id!],\n },\n },\n });\n },\n });\n };\n\n createAndAssignTag = async ({\n name,\n id = uuid(),\n filteredListSize,\n onSubmit,\n assignOptimisticActionParams,\n createOptimisticActionParams,\n }: CreateAndAssignParams) => {\n const newIndex = this._getNewIndex();\n\n this.optimisticActions.createOne(\n { id, index: newIndex },\n {\n ...assignOptimisticActionParams,\n submit: async (_) => {\n const newTag = await this._createAndAssign({\n name,\n id,\n filteredListSize,\n onSubmit,\n createOptimisticActionParams,\n });\n return [{ id: newTag.id!, index: newIndex }];\n },\n },\n );\n };\n\n get isDirty() {\n if (this.initialTagIds.length !== this.assignedTagIds.length) {\n return true;\n }\n\n const unassigendTagIds = this.initialTagIds.filter(\n (id) => !this.assignedTagIds.includes(id),\n );\n const assignedTagIds = this.assignedTagIds.filter(\n (id) => !this.initialTagIds.includes(id),\n );\n\n return unassigendTagIds.length !== 0 || assignedTagIds.length !== 0;\n }\n\n private _assignTag = async ({\n tagIds,\n tag,\n onSubmit,\n isFromSearch,\n }: {\n tagIds: string[];\n tag: Tag;\n onSubmit?: OnSubmitTagsFuncType;\n isFromSearch?: boolean;\n }) => {\n this._invokeBiOnAssignUnassign({\n actionName: 'Assign',\n tag,\n isFromSearch,\n });\n await onSubmit?.({\n allTags: {\n privateTags: {\n tagIds: Array.from(new Set([...tagIds, tag.id])) as string[],\n },\n },\n addedTags: { privateTags: { tagIds: [tag.id!] } },\n removedTags: { privateTags: { tagIds: [] } },\n });\n };\n\n private _createAndAssign = async ({\n name,\n id,\n filteredListSize,\n onSubmit,\n createOptimisticActionParams,\n }: CreateAndAssignParams) => {\n const isFromSearch = true;\n let assignError: unknown;\n\n let newTag = this.tagsManagementState.items.find(\n (tag: Tag) => tag.name === name,\n );\n if (newTag) {\n await this._assignTag({\n tagIds: this.assignedTagIds.filter((tagId) => tagId !== id),\n tag: newTag,\n onSubmit,\n isFromSearch,\n });\n\n return newTag;\n }\n newTag = await this._createTag({\n name,\n id,\n filteredListSize,\n isFromSearch,\n createOptimisticActionParams,\n onCreateSuccess: async (newTag) => {\n try {\n await this._assignTag({\n tagIds: this.assignedTagIds.filter((tagId) => tagId !== id),\n tag: newTag,\n onSubmit,\n isFromSearch,\n });\n } catch (error: unknown) {\n assignError = error;\n }\n },\n });\n\n // We want to throw assign exception in assign optimistic context so assign tryAgain (and not create) will be triggered\n if (assignError) {\n throw assignError;\n }\n return newTag;\n };\n\n private _createTag = async ({\n name,\n id,\n filteredListSize,\n isFromSearch,\n onCreateSuccess,\n createOptimisticActionParams,\n }: CreateAndAssignParams & { onCreateSuccess: (newTag: Tag) => void }) => {\n return new Promise<Tag>(async (resolve) => {\n await this.tagsManagementState.createTag({\n name,\n id,\n filteredListSize,\n origin: this.origin,\n isFromSearch,\n tagsBIReporter: this.tagsBIReporter,\n optimisticActionParams: createOptimisticActionParams,\n onSuccess: async (newTag) => {\n await onCreateSuccess?.(newTag);\n resolve(newTag);\n },\n });\n });\n };\n\n private _invokeBiOnAssignUnassign({\n actionName,\n tag,\n isFromSearch = false,\n }: {\n actionName: string;\n tag: Tag;\n isFromSearch?: boolean;\n }) {\n this.tagsBIReporter.reportBi(\n cairoTagsAssignTag({\n actionName,\n isFromSearch,\n itemId: this.entityId,\n numItems: 1,\n numTags: this.tagsManagementState.items.length,\n numTagsAssigned: this.assignedTags.length,\n tagName: tag.name!,\n origin: this.origin,\n }),\n );\n }\n\n private _getNewIndex() {\n const max = Math.max(\n 0,\n ...this.collection.result.items.map((tag) => tag.index!),\n );\n\n return max + 1;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.TagsBIReporter = void 0;
|
|
6
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
7
|
+
var _v = require("@wix/bex-utils/@wix/bi-logger-cairo-os/v2");
|
|
8
|
+
var _events = _interopRequireDefault(require("events"));
|
|
9
|
+
var _util = require("../../util");
|
|
10
|
+
const ACTIONS = {
|
|
11
|
+
'Add tag': 'Add',
|
|
12
|
+
'Rename tag': 'Rename',
|
|
13
|
+
'Delete tag': 'Delete'
|
|
14
|
+
};
|
|
15
|
+
const withoutDefaults = (0, _util.withoutIrrelevant)();
|
|
16
|
+
class TagsBIReporter {
|
|
17
|
+
constructor(params) {
|
|
18
|
+
(0, _defineProperty2.default)(this, "collection", void 0);
|
|
19
|
+
(0, _defineProperty2.default)(this, "reportBi", void 0);
|
|
20
|
+
(0, _defineProperty2.default)(this, "location", void 0);
|
|
21
|
+
(0, _defineProperty2.default)(this, "events", new _events.default());
|
|
22
|
+
(0, _defineProperty2.default)(this, "actionsMade", {
|
|
23
|
+
Add: false,
|
|
24
|
+
Delete: false,
|
|
25
|
+
Rename: false
|
|
26
|
+
});
|
|
27
|
+
this.collection = params.collection;
|
|
28
|
+
this.reportBi = params.reportBi;
|
|
29
|
+
this.location = params.location;
|
|
30
|
+
}
|
|
31
|
+
set setActionsMade(actionName) {
|
|
32
|
+
if (!(actionName in ACTIONS)) {
|
|
33
|
+
throw Error(`Unknown action ${actionName} was invoked`);
|
|
34
|
+
}
|
|
35
|
+
const action = ACTIONS[actionName];
|
|
36
|
+
this.actionsMade = {
|
|
37
|
+
...this.actionsMade,
|
|
38
|
+
[action]: true
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
resetActionsMade() {
|
|
42
|
+
this.actionsMade = {
|
|
43
|
+
Add: false,
|
|
44
|
+
Delete: false,
|
|
45
|
+
Rename: false
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
_clearAllEvents() {
|
|
49
|
+
const {
|
|
50
|
+
events
|
|
51
|
+
} = this;
|
|
52
|
+
events.removeAllListeners('select');
|
|
53
|
+
events.removeAllListeners('blur');
|
|
54
|
+
events.removeAllListeners('add');
|
|
55
|
+
events.removeAllListeners('clear');
|
|
56
|
+
}
|
|
57
|
+
_getErrorType(e) {
|
|
58
|
+
const isNetworkError = (e == null ? void 0 : e.code) === 'ERR_NETWORK';
|
|
59
|
+
return isNetworkError ? 'Network error' : 'Technical issue';
|
|
60
|
+
}
|
|
61
|
+
onSearch(searchValue) {
|
|
62
|
+
const {
|
|
63
|
+
events
|
|
64
|
+
} = this;
|
|
65
|
+
const afterSearchParams = {
|
|
66
|
+
searchResultsCnt: this.collection.result.items.filter(item => item.name.toLowerCase().includes(searchValue.toLowerCase())).length,
|
|
67
|
+
searchTerm: searchValue
|
|
68
|
+
};
|
|
69
|
+
const reportTagSelectedSearchBI = () => {
|
|
70
|
+
this._clearAllEvents();
|
|
71
|
+
this.reportBi(withoutDefaults(_v.cairoSearchForTags)({
|
|
72
|
+
...afterSearchParams,
|
|
73
|
+
location: this.location,
|
|
74
|
+
endType: 'Tag selected'
|
|
75
|
+
}));
|
|
76
|
+
};
|
|
77
|
+
const reportSearchDismissedSearchBI = () => {
|
|
78
|
+
this._clearAllEvents();
|
|
79
|
+
this.reportBi(withoutDefaults(_v.cairoSearchForTags)({
|
|
80
|
+
...afterSearchParams,
|
|
81
|
+
location: this.location,
|
|
82
|
+
endType: 'Search dismissed'
|
|
83
|
+
}));
|
|
84
|
+
};
|
|
85
|
+
const reportAddNewFromSearchBI = () => {
|
|
86
|
+
this._clearAllEvents();
|
|
87
|
+
this.reportBi(withoutDefaults(_v.cairoSearchForTags)({
|
|
88
|
+
...afterSearchParams,
|
|
89
|
+
location: this.location,
|
|
90
|
+
endType: 'Add new tag'
|
|
91
|
+
}));
|
|
92
|
+
};
|
|
93
|
+
this._clearAllEvents();
|
|
94
|
+
events.once('select', reportTagSelectedSearchBI);
|
|
95
|
+
events.once('blur', reportSearchDismissedSearchBI);
|
|
96
|
+
events.once('clear', reportSearchDismissedSearchBI);
|
|
97
|
+
events.once('add', reportAddNewFromSearchBI);
|
|
98
|
+
}
|
|
99
|
+
onAction(params) {
|
|
100
|
+
if (params.actionName) {
|
|
101
|
+
this.setActionsMade = params.actionName;
|
|
102
|
+
}
|
|
103
|
+
const afterActionParams = {
|
|
104
|
+
numTags: this.collection.result.items.length
|
|
105
|
+
};
|
|
106
|
+
this.reportBi(withoutDefaults(_v.cairoTagsAddDeleteTag)({
|
|
107
|
+
...params,
|
|
108
|
+
...afterActionParams
|
|
109
|
+
}));
|
|
110
|
+
}
|
|
111
|
+
onError(params, error) {
|
|
112
|
+
const errorParams = {
|
|
113
|
+
numTags: this.collection.result.items.length,
|
|
114
|
+
errorType: this._getErrorType(error)
|
|
115
|
+
};
|
|
116
|
+
this.reportBi(withoutDefaults(_v.cairoTagsUnsuccessfulUpdateInServer)({
|
|
117
|
+
...errorParams,
|
|
118
|
+
...params
|
|
119
|
+
}));
|
|
120
|
+
}
|
|
121
|
+
onTryAgain(params) {
|
|
122
|
+
const tryAgainParams = {
|
|
123
|
+
loaction: 'Toast'
|
|
124
|
+
};
|
|
125
|
+
this.reportBi(withoutDefaults(_v.cairoTryAgainClicked)({
|
|
126
|
+
...tryAgainParams,
|
|
127
|
+
...params
|
|
128
|
+
}));
|
|
129
|
+
}
|
|
130
|
+
onUndo(params) {
|
|
131
|
+
this.reportBi(withoutDefaults(_v.cairoUndoClicked)(params));
|
|
132
|
+
}
|
|
133
|
+
getActionsMadeChangesString() {
|
|
134
|
+
const actionsMadeArray = [];
|
|
135
|
+
this.actionsMade.Add && actionsMadeArray.push('Add');
|
|
136
|
+
this.actionsMade.Delete && actionsMadeArray.push('Delete');
|
|
137
|
+
this.actionsMade.Rename && actionsMadeArray.push('Rename');
|
|
138
|
+
return actionsMadeArray.join('/');
|
|
139
|
+
}
|
|
140
|
+
onModalClose(params) {
|
|
141
|
+
let endType = this.getActionsMadeChangesString();
|
|
142
|
+
if (endType) {
|
|
143
|
+
endType = `Close with changes(${endType})`;
|
|
144
|
+
} else {
|
|
145
|
+
endType = 'Close without changes';
|
|
146
|
+
}
|
|
147
|
+
this.reportBi(withoutDefaults(_v.cairoTagsModalEndProcess)({
|
|
148
|
+
...params,
|
|
149
|
+
numTags: this.collection.result.items.length,
|
|
150
|
+
endType
|
|
151
|
+
}));
|
|
152
|
+
this.resetActionsMade();
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
exports.TagsBIReporter = TagsBIReporter;
|
|
156
|
+
//# sourceMappingURL=TagsBIReporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_v","require","_events","_interopRequireDefault","_util","ACTIONS","withoutDefaults","withoutIrrelevant","TagsBIReporter","constructor","params","_defineProperty2","default","EventEmitter","Add","Delete","Rename","collection","reportBi","location","setActionsMade","actionName","Error","action","actionsMade","resetActionsMade","_clearAllEvents","events","removeAllListeners","_getErrorType","e","isNetworkError","code","onSearch","searchValue","afterSearchParams","searchResultsCnt","result","items","filter","item","name","toLowerCase","includes","length","searchTerm","reportTagSelectedSearchBI","cairoSearchForTags","endType","reportSearchDismissedSearchBI","reportAddNewFromSearchBI","once","onAction","afterActionParams","numTags","cairoTagsAddDeleteTag","onError","error","errorParams","errorType","cairoTagsUnsuccessfulUpdateInServer","onTryAgain","tryAgainParams","loaction","cairoTryAgainClicked","onUndo","cairoUndoClicked","getActionsMadeChangesString","actionsMadeArray","push","join","onModalClose","cairoTagsModalEndProcess","exports"],"sources":["../../../../src/state/TagsState/TagsBIReporter.ts"],"sourcesContent":["import {\n cairoSearchForTags,\n cairoTagsAddDeleteTag,\n cairoTagsModalEndProcess,\n cairoTagsUnsuccessfulUpdateInServer,\n cairoTryAgainClicked,\n cairoUndoClicked,\n} from '@wix/bex-utils/@wix/bi-logger-cairo-os/v2';\n\nimport EventEmitter from 'events';\nimport {\n cairoSearchForTagsParams as SearchForTagsParams,\n cairoTagsAddDeleteTagParams as TagsAddDeleteTagParams,\n cairoTagsModalEndProcessParams as TagsModalEndProcessParams,\n cairoTagsUnsuccessfulUpdateInServerParams as TagsUnsuccessfulUpdateInServerParams,\n cairoTryAgainClickedParams as TagsTryAgainClickedParams,\n cairoUndoClickedParams as TagsUndoClickedParams,\n} from '@wix/bex-utils/@wix/bi-logger-cairo-os/v2/types';\nimport { Tag } from '@wix/bex-utils/@wix/ambassador-os-tags-v1-tag/types';\nimport { CollectionState } from '../CollectionState';\nimport { TypedEmitter, withoutIrrelevant } from '../../util';\nimport { ReportBI } from '../../services';\n\nconst ACTIONS = {\n 'Add tag': 'Add',\n 'Rename tag': 'Rename',\n 'Delete tag': 'Delete',\n};\n\nconst withoutDefaults = withoutIrrelevant();\n\nexport interface TagsBIReporterParams {\n readonly collection: CollectionState<Tag>;\n readonly reportBi: ReportBI;\n readonly location: string;\n}\n\nexport class TagsBIReporter {\n readonly collection;\n readonly reportBi;\n readonly location;\n\n readonly events = new EventEmitter() as TypedEmitter<{\n select: () => unknown;\n blur: () => unknown;\n add: () => unknown;\n clear: () => unknown;\n }>;\n\n private actionsMade: { Add: boolean; Delete: boolean; Rename: boolean } = {\n Add: false,\n Delete: false,\n Rename: false,\n };\n\n constructor(params: TagsBIReporterParams) {\n this.collection = params.collection;\n this.reportBi = params.reportBi;\n this.location = params.location;\n }\n\n set setActionsMade(actionName: string) {\n if (!(actionName in ACTIONS)) {\n throw Error(`Unknown action ${actionName} was invoked`);\n }\n const action = ACTIONS[actionName as keyof typeof ACTIONS];\n this.actionsMade = {\n ...this.actionsMade,\n [action]: true,\n };\n }\n\n resetActionsMade() {\n this.actionsMade = {\n Add: false,\n Delete: false,\n Rename: false,\n };\n }\n\n _clearAllEvents() {\n const { events } = this;\n\n events.removeAllListeners('select');\n events.removeAllListeners('blur');\n events.removeAllListeners('add');\n events.removeAllListeners('clear');\n }\n\n _getErrorType(e: any) {\n const isNetworkError = e?.code === 'ERR_NETWORK';\n return isNetworkError ? 'Network error' : 'Technical issue';\n }\n\n onSearch(searchValue: string) {\n const { events } = this;\n\n const afterSearchParams = {\n searchResultsCnt: this.collection.result.items.filter((item) =>\n item.name!.toLowerCase().includes(searchValue.toLowerCase()),\n ).length,\n searchTerm: searchValue,\n } as Partial<SearchForTagsParams>;\n\n const reportTagSelectedSearchBI = () => {\n this._clearAllEvents();\n\n this.reportBi(\n withoutDefaults(cairoSearchForTags)({\n ...afterSearchParams,\n location: this.location,\n endType: 'Tag selected',\n }),\n );\n };\n\n const reportSearchDismissedSearchBI = () => {\n this._clearAllEvents();\n\n this.reportBi(\n withoutDefaults(cairoSearchForTags)({\n ...afterSearchParams,\n location: this.location,\n endType: 'Search dismissed',\n }),\n );\n };\n\n const reportAddNewFromSearchBI = () => {\n this._clearAllEvents();\n\n this.reportBi(\n withoutDefaults(cairoSearchForTags)({\n ...afterSearchParams,\n location: this.location,\n endType: 'Add new tag',\n }),\n );\n };\n\n this._clearAllEvents();\n events.once('select', reportTagSelectedSearchBI);\n events.once('blur', reportSearchDismissedSearchBI);\n events.once('clear', reportSearchDismissedSearchBI);\n events.once('add', reportAddNewFromSearchBI);\n }\n\n onAction(params: Partial<TagsAddDeleteTagParams>) {\n if (params.actionName) {\n this.setActionsMade = params.actionName;\n }\n const afterActionParams = {\n numTags: this.collection.result.items.length,\n } as Partial<TagsAddDeleteTagParams>;\n\n this.reportBi(\n withoutDefaults(cairoTagsAddDeleteTag)({\n ...params,\n ...afterActionParams,\n }),\n );\n }\n\n onError(\n params: Partial<TagsUnsuccessfulUpdateInServerParams>,\n error: unknown,\n ) {\n const errorParams = {\n numTags: this.collection.result.items.length,\n errorType: this._getErrorType(error),\n } as Partial<TagsUnsuccessfulUpdateInServerParams>;\n\n this.reportBi(\n withoutDefaults(cairoTagsUnsuccessfulUpdateInServer)({\n ...errorParams,\n ...params,\n }),\n );\n }\n\n onTryAgain(params: Partial<TagsTryAgainClickedParams>) {\n const tryAgainParams = {\n loaction: 'Toast',\n };\n\n this.reportBi(\n withoutDefaults(cairoTryAgainClicked)({\n ...tryAgainParams,\n ...params,\n }),\n );\n }\n\n onUndo(params: Partial<TagsUndoClickedParams>) {\n this.reportBi(withoutDefaults(cairoUndoClicked)(params));\n }\n\n getActionsMadeChangesString() {\n const actionsMadeArray = [];\n this.actionsMade.Add && actionsMadeArray.push('Add');\n this.actionsMade.Delete && actionsMadeArray.push('Delete');\n this.actionsMade.Rename && actionsMadeArray.push('Rename');\n return actionsMadeArray.join('/');\n }\n\n onModalClose(params: Partial<TagsModalEndProcessParams>) {\n let endType = this.getActionsMadeChangesString();\n if (endType) {\n endType = `Close with changes(${endType})`;\n } else {\n endType = 'Close without changes';\n }\n\n this.reportBi(\n withoutDefaults(cairoTagsModalEndProcess)({\n ...params,\n numTags: this.collection.result.items.length,\n endType,\n }),\n );\n\n this.resetActionsMade();\n }\n}\n"],"mappings":"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","ignoreList":[]}
|