@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.
Files changed (55) hide show
  1. package/dist/cjs/state/TagsState/TagsAssignmentState.js +349 -0
  2. package/dist/cjs/state/TagsState/TagsAssignmentState.js.map +1 -0
  3. package/dist/cjs/state/TagsState/TagsBIReporter.js +156 -0
  4. package/dist/cjs/state/TagsState/TagsBIReporter.js.map +1 -0
  5. package/dist/cjs/state/TagsState/TagsFormState.js +228 -0
  6. package/dist/cjs/state/TagsState/TagsFormState.js.map +1 -0
  7. package/dist/cjs/state/TagsState/TagsManagementState.js +312 -0
  8. package/dist/cjs/state/TagsState/TagsManagementState.js.map +1 -0
  9. package/dist/cjs/state/TagsState/TagsSearchState.js +48 -0
  10. package/dist/cjs/state/TagsState/TagsSearchState.js.map +1 -0
  11. package/dist/cjs/state/TagsState/TagsWidgetState.js +98 -0
  12. package/dist/cjs/state/TagsState/TagsWidgetState.js.map +1 -0
  13. package/dist/cjs/state/TagsState/index.js +46 -0
  14. package/dist/cjs/state/TagsState/index.js.map +1 -0
  15. package/dist/cjs/state/TagsState/tagsTypes.js +2 -0
  16. package/dist/cjs/state/TagsState/tagsTypes.js.map +1 -0
  17. package/dist/cjs/state/index.js +7 -0
  18. package/dist/cjs/state/index.js.map +1 -1
  19. package/dist/esm/state/TagsState/TagsAssignmentState.js +245 -0
  20. package/dist/esm/state/TagsState/TagsAssignmentState.js.map +1 -0
  21. package/dist/esm/state/TagsState/TagsBIReporter.js +115 -0
  22. package/dist/esm/state/TagsState/TagsBIReporter.js.map +1 -0
  23. package/dist/esm/state/TagsState/TagsFormState.js +202 -0
  24. package/dist/esm/state/TagsState/TagsFormState.js.map +1 -0
  25. package/dist/esm/state/TagsState/TagsManagementState.js +208 -0
  26. package/dist/esm/state/TagsState/TagsManagementState.js.map +1 -0
  27. package/dist/esm/state/TagsState/TagsSearchState.js +40 -0
  28. package/dist/esm/state/TagsState/TagsSearchState.js.map +1 -0
  29. package/dist/esm/state/TagsState/TagsWidgetState.js +75 -0
  30. package/dist/esm/state/TagsState/TagsWidgetState.js.map +1 -0
  31. package/dist/esm/state/TagsState/index.js +8 -0
  32. package/dist/esm/state/TagsState/index.js.map +1 -0
  33. package/dist/esm/state/TagsState/tagsTypes.js +2 -0
  34. package/dist/esm/state/TagsState/tagsTypes.js.map +1 -0
  35. package/dist/esm/state/index.js +1 -0
  36. package/dist/esm/state/index.js.map +1 -1
  37. package/dist/types/state/TagsState/TagsAssignmentState.d.ts +78 -0
  38. package/dist/types/state/TagsState/TagsAssignmentState.d.ts.map +1 -0
  39. package/dist/types/state/TagsState/TagsBIReporter.d.ts +35 -0
  40. package/dist/types/state/TagsState/TagsBIReporter.d.ts.map +1 -0
  41. package/dist/types/state/TagsState/TagsFormState.d.ts +76 -0
  42. package/dist/types/state/TagsState/TagsFormState.d.ts.map +1 -0
  43. package/dist/types/state/TagsState/TagsManagementState.d.ts +65 -0
  44. package/dist/types/state/TagsState/TagsManagementState.d.ts.map +1 -0
  45. package/dist/types/state/TagsState/TagsSearchState.d.ts +13 -0
  46. package/dist/types/state/TagsState/TagsSearchState.d.ts.map +1 -0
  47. package/dist/types/state/TagsState/TagsWidgetState.d.ts +29 -0
  48. package/dist/types/state/TagsState/TagsWidgetState.d.ts.map +1 -0
  49. package/dist/types/state/TagsState/index.d.ts +8 -0
  50. package/dist/types/state/TagsState/index.d.ts.map +1 -0
  51. package/dist/types/state/TagsState/tagsTypes.d.ts +9 -0
  52. package/dist/types/state/TagsState/tagsTypes.d.ts.map +1 -0
  53. package/dist/types/state/index.d.ts +1 -0
  54. package/dist/types/state/index.d.ts.map +1 -1
  55. 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":[]}