@wix/bex-core 2.4.0 → 2.5.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 +325 -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 +229 -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 +74 -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 +3 -3
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ exports.TagsFormState = exports.MANAGE_TAGS_OPTION_ID = exports.ADD_ITEM_OPTION_ID = void 0;
6
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
+ var _mobx = require("mobx");
8
+ var _v = require("@wix/bex-utils/@wix/bi-logger-cairo-os/v2");
9
+ var _TagsManagementState = require("./TagsManagementState");
10
+ var _TagsSearchState = require("./TagsSearchState");
11
+ var _TagsAssignmentState = require("./TagsAssignmentState");
12
+ var _TagsBIReporter = require("./TagsBIReporter");
13
+ const ADD_ITEM_OPTION_ID = exports.ADD_ITEM_OPTION_ID = 'add-item-option';
14
+ const MANAGE_TAGS_OPTION_ID = exports.MANAGE_TAGS_OPTION_ID = 'manage-tags-option';
15
+ class TagsFormState {
16
+ constructor({
17
+ tagsManagementState,
18
+ origin
19
+ }) {
20
+ (0, _defineProperty2.default)(this, "tagsAssignmentState", void 0);
21
+ (0, _defineProperty2.default)(this, "tagsManagementState", void 0);
22
+ (0, _defineProperty2.default)(this, "tagsSearchState", void 0);
23
+ (0, _defineProperty2.default)(this, "tagsBIReporter", void 0);
24
+ (0, _defineProperty2.default)(this, "container", void 0);
25
+ (0, _defineProperty2.default)(this, "origin", void 0);
26
+ (0, _defineProperty2.default)(this, "entityId", void 0);
27
+ (0, _defineProperty2.default)(this, "previousSearchValue", '');
28
+ (0, _defineProperty2.default)(this, "isMultiSelectOnFocus", false);
29
+ (0, _defineProperty2.default)(this, "assignOptimisticActionParams", tagName => ({
30
+ onError: error => {
31
+ this.tagsBIReporter.onError({
32
+ tagName,
33
+ actionName: 'Assign tag',
34
+ origin: this.origin
35
+ }, error);
36
+ },
37
+ errorToast: () => {
38
+ return {
39
+ biName: 'cairo-assign-tag-error',
40
+ message: this.container.translate('cairo.tags.collectionPage.toast.update.error')
41
+ };
42
+ },
43
+ onTryAgain: () => {
44
+ this.tagsBIReporter.onTryAgain({
45
+ actionName: 'Assign tag'
46
+ });
47
+ }
48
+ }));
49
+ (0, _defineProperty2.default)(this, "assignTag", async (tag, onSubmit) => {
50
+ this.tagsAssignmentState.assignTag({
51
+ tag,
52
+ onSubmit,
53
+ isFromSearch: this.previousSearchValue !== '',
54
+ optimisticActionParams: this.assignOptimisticActionParams(tag.name)
55
+ });
56
+ });
57
+ (0, _defineProperty2.default)(this, "unassignTag", async (tagId, onSubmit) => {
58
+ const tagToUnassign = this.tagsAssignmentState.assignedTags.find(tag => tag.id === tagId);
59
+ if (tagToUnassign) {
60
+ this.tagsAssignmentState.unassignTag({
61
+ tag: tagToUnassign,
62
+ onSubmit,
63
+ isFromSearch: false,
64
+ optimisticActionParams: {
65
+ errorToast: () => {
66
+ return {
67
+ biName: 'cairo-remove-assign-tag-error',
68
+ message: this.container.translate('cairo.tags.collectionPage.toast.update.error')
69
+ };
70
+ },
71
+ onError: error => {
72
+ this.tagsBIReporter.onError({
73
+ tagName: tagToUnassign.name,
74
+ actionName: 'Remove assign tag',
75
+ origin: this.origin
76
+ }, error);
77
+ },
78
+ onTryAgain: () => {
79
+ this.tagsBIReporter.onTryAgain({
80
+ actionName: 'Remove assign tag'
81
+ });
82
+ }
83
+ }
84
+ });
85
+ }
86
+ });
87
+ (0, _defineProperty2.default)(this, "createAndAssignTag", async (name, onSubmit) => {
88
+ this.tagsAssignmentState.createAndAssignTag({
89
+ name,
90
+ onSubmit,
91
+ filteredListSize: this.displayedTagOptions.length,
92
+ createOptimisticActionParams: {
93
+ errorToast: () => {
94
+ return {
95
+ biName: 'cairo-save-new-tag-error',
96
+ message: this.container.translate('cairo.tags.collectionPage.toast.create.error')
97
+ };
98
+ }
99
+ },
100
+ assignOptimisticActionParams: this.assignOptimisticActionParams(name)
101
+ });
102
+ });
103
+ (0, _defineProperty2.default)(this, "validate", async () => {
104
+ const tags = {
105
+ privateTags: {
106
+ tagIds: this.tagsAssignmentState.assignedTagIds
107
+ }
108
+ };
109
+ return {
110
+ isValid: true,
111
+ tags,
112
+ values: tags
113
+ };
114
+ });
115
+ this.container = tagsManagementState.container;
116
+ this.origin = origin;
117
+ this.tagsManagementState = tagsManagementState;
118
+ this.tagsBIReporter = new _TagsBIReporter.TagsBIReporter({
119
+ collection: this.tagsManagementState.collection,
120
+ reportBi: this.container.createBILogger({
121
+ componentType: 'TagsWidget',
122
+ ...tagsManagementState.fqdn
123
+ }),
124
+ location: 'Tags widget'
125
+ });
126
+ this.tagsAssignmentState = new _TagsAssignmentState.TagsAssignmentState({
127
+ tagsManagementState: this.tagsManagementState,
128
+ tagsBIReporter: this.tagsBIReporter,
129
+ origin,
130
+ fqdn: tagsManagementState.fqdn
131
+ });
132
+ this.tagsSearchState = new _TagsSearchState.TagsSearchState({
133
+ tagsManagementState: this.tagsManagementState
134
+ });
135
+ (0, _mobx.makeObservable)(this, {
136
+ init: _mobx.action,
137
+ previousSearchValue: _mobx.observable,
138
+ isMultiSelectOnFocus: _mobx.observable,
139
+ displayedAssignedTags: _mobx.computed,
140
+ displayedTagOptions: _mobx.computed,
141
+ isDirty: _mobx.computed,
142
+ handleManageTagsCtaClick: _mobx.action,
143
+ handleSearchChange: _mobx.action,
144
+ handleOptionsShow: _mobx.action,
145
+ setIsMultiSelectOnFocus: _mobx.action
146
+ });
147
+ }
148
+ init({
149
+ initialTags,
150
+ entityId
151
+ }) {
152
+ var _initialTags$privateT;
153
+ this.entityId = entityId;
154
+ const disposers = [this.tagsAssignmentState.init({
155
+ initialTags,
156
+ entityId
157
+ })];
158
+ this.tagsBIReporter.reportBi((0, _v.cairoTagsWidgetLoaded)({
159
+ itemId: this.entityId ?? undefined,
160
+ numTags: this.tagsManagementState.items.length,
161
+ numTagsAssigned: initialTags == null || (_initialTags$privateT = initialTags.privateTags) == null || (_initialTags$privateT = _initialTags$privateT.tagIds) == null ? void 0 : _initialTags$privateT.length
162
+ }));
163
+ return () => {
164
+ disposers.forEach(disposer => disposer == null ? void 0 : disposer());
165
+ };
166
+ }
167
+ get displayedAssignedTags() {
168
+ return this.tagsAssignmentState.assignedTags.map(assignedTag => ({
169
+ id: assignedTag.id,
170
+ label: assignedTag.name
171
+ }));
172
+ }
173
+ get displayedTagOptions() {
174
+ return this.tagsSearchState.filteredItems.filter(tag => !this.displayedAssignedTags.find(assignedTag => assignedTag.label === tag.name)).map(tag => {
175
+ return {
176
+ id: tag.id,
177
+ value: tag.name
178
+ };
179
+ });
180
+ }
181
+ get isInEmptyState() {
182
+ return this.tagsManagementState.items.length === 0;
183
+ }
184
+ get searchValue() {
185
+ return this.tagsSearchState.searchValue;
186
+ }
187
+ get shouldShowCreateTagOption() {
188
+ return this.searchValue && !this.tagsSearchState.hasSameTagAsSearch;
189
+ }
190
+ handleTagSelect(option, onSubmit) {
191
+ if (option.id === ADD_ITEM_OPTION_ID) {
192
+ this._invokeBiOnCtaClick('Create tags');
193
+ const tagName = this.previousSearchValue.slice(0, _TagsManagementState.TAG_MAX_LENGTH);
194
+ this.createAndAssignTag(tagName, onSubmit);
195
+ return;
196
+ }
197
+ this.assignTag({
198
+ id: option.id,
199
+ name: option.value
200
+ }, onSubmit);
201
+ }
202
+ handleManageTagsCtaClick() {
203
+ this._invokeBiOnCtaClick('Manage tags');
204
+ }
205
+ handleSearchChange(newSearchValue) {
206
+ this.previousSearchValue = this.searchValue;
207
+ this.tagsSearchState.searchValue = newSearchValue;
208
+ }
209
+ handleOptionsShow() {
210
+ this._invokeBiOnCtaClick('Assign tags');
211
+ }
212
+ setIsMultiSelectOnFocus(isOnFocusValue) {
213
+ this.isMultiSelectOnFocus = isOnFocusValue;
214
+ }
215
+ get isDirty() {
216
+ return this.tagsAssignmentState.isDirty;
217
+ }
218
+ _invokeBiOnCtaClick(actionName) {
219
+ return this.tagsBIReporter.reportBi((0, _v.cairoTagsWidgetClickOnCta)({
220
+ itemId: this.entityId ?? undefined,
221
+ numTags: this.tagsManagementState.items.length,
222
+ numTagsAssigned: this.tagsAssignmentState.assignedTags.length,
223
+ actionName
224
+ }));
225
+ }
226
+ }
227
+ exports.TagsFormState = TagsFormState;
228
+ //# sourceMappingURL=TagsFormState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_mobx","require","_v","_TagsManagementState","_TagsSearchState","_TagsAssignmentState","_TagsBIReporter","ADD_ITEM_OPTION_ID","exports","MANAGE_TAGS_OPTION_ID","TagsFormState","constructor","tagsManagementState","origin","_defineProperty2","default","tagName","onError","error","tagsBIReporter","actionName","errorToast","biName","message","container","translate","onTryAgain","tag","onSubmit","tagsAssignmentState","assignTag","isFromSearch","previousSearchValue","optimisticActionParams","assignOptimisticActionParams","name","tagId","tagToUnassign","assignedTags","find","id","unassignTag","createAndAssignTag","filteredListSize","displayedTagOptions","length","createOptimisticActionParams","tags","privateTags","tagIds","assignedTagIds","isValid","values","TagsBIReporter","collection","reportBi","createBILogger","componentType","fqdn","location","TagsAssignmentState","tagsSearchState","TagsSearchState","makeObservable","init","action","observable","isMultiSelectOnFocus","displayedAssignedTags","computed","isDirty","handleManageTagsCtaClick","handleSearchChange","handleOptionsShow","setIsMultiSelectOnFocus","initialTags","entityId","_initialTags$privateT","disposers","cairoTagsWidgetLoaded","itemId","undefined","numTags","items","numTagsAssigned","forEach","disposer","map","assignedTag","label","filteredItems","filter","value","isInEmptyState","searchValue","shouldShowCreateTagOption","hasSameTagAsSearch","handleTagSelect","option","_invokeBiOnCtaClick","slice","TAG_MAX_LENGTH","newSearchValue","isOnFocusValue","cairoTagsWidgetClickOnCta"],"sources":["../../../../src/state/TagsState/TagsFormState.ts"],"sourcesContent":["import { action, computed, makeObservable, observable } from 'mobx';\nimport { Tag } from '@wix/bex-utils/@wix/ambassador-os-tags-v1-tag/types';\nimport {\n cairoTagsWidgetClickOnCta,\n cairoTagsWidgetLoaded,\n} from '@wix/bex-utils/@wix/bi-logger-cairo-os/v2';\nimport { TAG_MAX_LENGTH, TagsManagementState } from './TagsManagementState';\nimport { TagsSearchState } from './TagsSearchState';\nimport {\n TagsAssignmentState,\n onSubmitTagsFuncType,\n} from './TagsAssignmentState';\nimport { TagsBIReporter } from './TagsBIReporter';\nimport { Tags } from './tagsTypes';\nimport { WixPatternsContainer } from '../WixPatternsContainer';\n\nexport const ADD_ITEM_OPTION_ID = 'add-item-option';\nexport const MANAGE_TAGS_OPTION_ID = 'manage-tags-option';\n\nexport interface TagsFormStateParams {\n readonly tagsManagementState: TagsManagementState;\n readonly origin: string;\n readonly entityTypeName: string;\n}\n\nexport class TagsFormState {\n readonly tagsAssignmentState: TagsAssignmentState;\n readonly tagsManagementState: TagsManagementState;\n readonly tagsSearchState: TagsSearchState;\n readonly tagsBIReporter: TagsBIReporter;\n readonly container: WixPatternsContainer;\n readonly origin: string;\n entityId?: string | null;\n previousSearchValue = '';\n isMultiSelectOnFocus = false;\n assignOptimisticActionParams = (tagName: string) => ({\n onError: (error: unknown) => {\n this.tagsBIReporter.onError(\n {\n tagName,\n actionName: 'Assign tag',\n origin: this.origin,\n },\n error,\n );\n },\n errorToast: () => {\n return {\n biName: 'cairo-assign-tag-error',\n message: this.container.translate(\n 'cairo.tags.collectionPage.toast.update.error',\n ),\n };\n },\n onTryAgain: () => {\n this.tagsBIReporter.onTryAgain({\n actionName: 'Assign tag',\n });\n },\n });\n\n constructor({ tagsManagementState, origin }: TagsFormStateParams) {\n this.container = tagsManagementState.container;\n this.origin = origin;\n this.tagsManagementState = tagsManagementState;\n\n this.tagsBIReporter = new TagsBIReporter({\n collection: this.tagsManagementState.collection,\n reportBi: this.container.createBILogger({\n componentType: 'TagsWidget',\n ...tagsManagementState.fqdn,\n }),\n location: 'Tags widget',\n });\n\n this.tagsAssignmentState = new TagsAssignmentState({\n tagsManagementState: this.tagsManagementState,\n tagsBIReporter: this.tagsBIReporter,\n origin,\n fqdn: tagsManagementState.fqdn,\n });\n this.tagsSearchState = new TagsSearchState({\n tagsManagementState: this.tagsManagementState,\n });\n\n makeObservable(this, {\n init: action,\n previousSearchValue: observable,\n isMultiSelectOnFocus: observable,\n displayedAssignedTags: computed,\n displayedTagOptions: computed,\n isDirty: computed,\n handleManageTagsCtaClick: action,\n handleSearchChange: action,\n handleOptionsShow: action,\n setIsMultiSelectOnFocus: action,\n });\n }\n\n init({\n initialTags,\n entityId,\n }: {\n initialTags?: Tags;\n entityId?: string | null;\n }) {\n this.entityId = entityId;\n const disposers = [\n this.tagsAssignmentState.init({\n initialTags,\n entityId,\n }),\n ];\n\n this.tagsBIReporter.reportBi(\n cairoTagsWidgetLoaded({\n itemId: this.entityId ?? undefined,\n numTags: this.tagsManagementState.items.length,\n numTagsAssigned: initialTags?.privateTags?.tagIds?.length,\n }),\n );\n\n return () => {\n disposers.forEach((disposer) => disposer?.());\n };\n }\n\n get displayedAssignedTags() {\n return this.tagsAssignmentState.assignedTags.map((assignedTag) => ({\n id: assignedTag.id!,\n label: assignedTag.name!,\n }));\n }\n\n get displayedTagOptions() {\n return this.tagsSearchState.filteredItems\n .filter(\n (tag: Tag) =>\n !this.displayedAssignedTags.find(\n (assignedTag) => assignedTag.label === tag.name,\n ),\n )\n .map((tag: Tag) => {\n return { id: tag.id!, value: tag.name };\n });\n }\n\n get isInEmptyState() {\n return this.tagsManagementState.items.length === 0;\n }\n\n get searchValue() {\n return this.tagsSearchState.searchValue;\n }\n\n get shouldShowCreateTagOption() {\n return this.searchValue && !this.tagsSearchState.hasSameTagAsSearch;\n }\n\n handleTagSelect(\n option: { id: string; value: string },\n onSubmit?: onSubmitTagsFuncType,\n ) {\n if (option.id === ADD_ITEM_OPTION_ID) {\n this._invokeBiOnCtaClick('Create tags');\n const tagName = this.previousSearchValue.slice(0, TAG_MAX_LENGTH);\n this.createAndAssignTag(tagName, onSubmit);\n return;\n }\n\n this.assignTag({ id: option.id, name: option.value }, onSubmit);\n }\n\n assignTag = async (tag: Tag, onSubmit?: onSubmitTagsFuncType) => {\n this.tagsAssignmentState.assignTag({\n tag,\n onSubmit,\n isFromSearch: this.previousSearchValue !== '',\n optimisticActionParams: this.assignOptimisticActionParams(tag.name!),\n });\n };\n\n unassignTag = async (tagId: string, onSubmit?: onSubmitTagsFuncType) => {\n const tagToUnassign = this.tagsAssignmentState.assignedTags.find(\n (tag) => tag.id === tagId,\n );\n\n if (tagToUnassign) {\n this.tagsAssignmentState.unassignTag({\n tag: tagToUnassign,\n onSubmit,\n isFromSearch: false,\n optimisticActionParams: {\n errorToast: () => {\n return {\n biName: 'cairo-remove-assign-tag-error',\n message: this.container.translate(\n 'cairo.tags.collectionPage.toast.update.error',\n ),\n };\n },\n onError: (error: unknown) => {\n this.tagsBIReporter.onError(\n {\n tagName: tagToUnassign.name!,\n actionName: 'Remove assign tag',\n origin: this.origin,\n },\n error,\n );\n },\n onTryAgain: () => {\n this.tagsBIReporter.onTryAgain({\n actionName: 'Remove assign tag',\n });\n },\n },\n });\n }\n };\n\n createAndAssignTag = async (\n name: string,\n onSubmit?: onSubmitTagsFuncType,\n ) => {\n this.tagsAssignmentState.createAndAssignTag({\n name,\n onSubmit,\n filteredListSize: this.displayedTagOptions.length,\n createOptimisticActionParams: {\n errorToast: () => {\n return {\n biName: 'cairo-save-new-tag-error',\n message: this.container.translate(\n 'cairo.tags.collectionPage.toast.create.error',\n ),\n };\n },\n },\n assignOptimisticActionParams: this.assignOptimisticActionParams(name),\n });\n };\n\n handleManageTagsCtaClick() {\n this._invokeBiOnCtaClick('Manage tags');\n }\n\n handleSearchChange(newSearchValue: string) {\n this.previousSearchValue = this.searchValue;\n this.tagsSearchState.searchValue = newSearchValue;\n }\n\n handleOptionsShow() {\n this._invokeBiOnCtaClick('Assign tags');\n }\n\n setIsMultiSelectOnFocus(isOnFocusValue: boolean) {\n this.isMultiSelectOnFocus = isOnFocusValue;\n }\n\n validate = async () => {\n const tags = {\n privateTags: { tagIds: this.tagsAssignmentState.assignedTagIds },\n };\n return {\n isValid: true,\n tags,\n values: tags,\n };\n };\n\n get isDirty() {\n return this.tagsAssignmentState.isDirty;\n }\n\n private _invokeBiOnCtaClick(actionName: string) {\n return this.tagsBIReporter.reportBi(\n cairoTagsWidgetClickOnCta({\n itemId: this.entityId ?? undefined,\n numTags: this.tagsManagementState.items.length,\n numTagsAssigned: this.tagsAssignmentState.assignedTags.length,\n actionName,\n }),\n );\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,312 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ exports.TagsManagementState = exports.TAG_MAX_LENGTH = void 0;
6
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
+ var _mobx = require("mobx");
8
+ var _http = require("@wix/bex-utils/@wix/ambassador-os-tags-v1-tag/http");
9
+ var _types = require("@wix/bex-utils/@wix/ambassador-os-tags-v1-tag/types");
10
+ var _uuid = require("uuid");
11
+ var _events = require("events");
12
+ var _CollectionState = require("../CollectionState");
13
+ var _CollectionOptimisticActions = require("../CollectionOptimisticActions");
14
+ var _TaskState = require("../TaskState");
15
+ var _util = require("../../util");
16
+ var _services = require("../../services");
17
+ const TAG_MAX_LENGTH = exports.TAG_MAX_LENGTH = 30;
18
+ class TagsManagementState {
19
+ constructor(params) {
20
+ (0, _defineProperty2.default)(this, "collection", void 0);
21
+ (0, _defineProperty2.default)(this, "optimisticActions", void 0);
22
+ (0, _defineProperty2.default)(this, "container", void 0);
23
+ (0, _defineProperty2.default)(this, "fqdn", void 0);
24
+ (0, _defineProperty2.default)(this, "initTask", new _TaskState.TaskState());
25
+ (0, _defineProperty2.default)(this, "events", new _events.EventEmitter());
26
+ (0, _defineProperty2.default)(this, "overrideShowToast", false);
27
+ this.container = params.container;
28
+ this.fqdn = params.fqdn;
29
+ this.collection = new _CollectionState.CollectionState({
30
+ ...params.container,
31
+ events: {},
32
+ queryName: [this.fqdnString, 'tags'].join('/'),
33
+ fetchData: async () => {
34
+ const fetchedItems = await this.container.httpClient.request((0, _http.listTags)({
35
+ fqdn: this.fqdnString,
36
+ exposure: _types.TagExposure.PRIVATE
37
+ })).then(({
38
+ data: {
39
+ tags = []
40
+ }
41
+ }) => tags.filter(({
42
+ id,
43
+ name
44
+ }) => id && name));
45
+ return {
46
+ items: fetchedItems,
47
+ total: fetchedItems.length
48
+ };
49
+ },
50
+ itemKey: ({
51
+ id
52
+ }) => id,
53
+ itemName: ({
54
+ name
55
+ }) => name,
56
+ fetchErrorMessage: () => '',
57
+ filters: {},
58
+ showToast: toastConfig => {
59
+ var _params$container;
60
+ if (this.overrideShowToast) {
61
+ this.events.emit('showToast', toastConfig);
62
+ return {
63
+ remove: () => {
64
+ this.events.emit('hideToast', toastConfig);
65
+ }
66
+ };
67
+ }
68
+ if (params != null && (_params$container = params.container) != null && _params$container.showToast) {
69
+ return params.container.showToast(toastConfig);
70
+ }
71
+ return {
72
+ remove: () => {}
73
+ };
74
+ }
75
+ });
76
+ this.optimisticActions = new _CollectionOptimisticActions.CollectionOptimisticActions({
77
+ container: this.container,
78
+ collection: this.collection,
79
+ orderBy: ({
80
+ sort
81
+ }) => [...(sort || []), {
82
+ fieldName: ({
83
+ createdDate
84
+ }) => (createdDate ?? new Date()).valueOf(),
85
+ order: 'asc'
86
+ }]
87
+ });
88
+ (0, _mobx.makeObservable)(this, {
89
+ init: _mobx.action,
90
+ createTag: _mobx.action,
91
+ updateTag: _mobx.action,
92
+ deleteTag: _mobx.action,
93
+ retry: _mobx.action
94
+ });
95
+ }
96
+ init() {
97
+ if (!this._isFqdnValid()) {
98
+ return;
99
+ }
100
+ const {
101
+ collection,
102
+ optimisticActions
103
+ } = this;
104
+ const disposers = [collection.init(), optimisticActions.init()];
105
+ this.initTask.runOnce(async () => {
106
+ collection.initTask.runOnce();
107
+ await collection.initTask.status.promise;
108
+ });
109
+ return () => {
110
+ disposers.forEach(disposer => disposer());
111
+ };
112
+ }
113
+ retry() {
114
+ this.collection.initTask.runOnce();
115
+ }
116
+ get items() {
117
+ return this.collection.result.items;
118
+ }
119
+ get isError() {
120
+ return this.initTask.status.isError;
121
+ }
122
+ get isLoading() {
123
+ const {
124
+ status
125
+ } = this.collection.initTask;
126
+ return status.isIdle || status.isLoading;
127
+ }
128
+ get isSuccessful() {
129
+ const {
130
+ status
131
+ } = this.collection.initTask;
132
+ return status.isSuccess;
133
+ }
134
+ get fqdnString() {
135
+ return (0, _util.fqdnToString)(this.fqdn);
136
+ }
137
+ getTagById(tagId) {
138
+ var _this$collection$resu;
139
+ return (_this$collection$resu = this.collection.result._keyedItemsMap) == null || (_this$collection$resu = _this$collection$resu.get(tagId)) == null ? void 0 : _this$collection$resu.item;
140
+ }
141
+ getTagNameById(tagId) {
142
+ var _this$getTagById;
143
+ return (_this$getTagById = this.getTagById(tagId)) == null ? void 0 : _this$getTagById.name;
144
+ }
145
+ _isFqdnValid() {
146
+ return this.fqdn.resource !== undefined;
147
+ }
148
+ _optimisticActionBaseParams(optimisticActionParams, {
149
+ tagsBIReporter,
150
+ actionName,
151
+ origin,
152
+ tagName,
153
+ filteredListSize,
154
+ isFromSearch = false,
155
+ errorCode
156
+ }) {
157
+ const {
158
+ onError,
159
+ onTryAgain,
160
+ onUndo,
161
+ ...otherOptimisticActionParams
162
+ } = optimisticActionParams;
163
+ return {
164
+ onError: error => {
165
+ tagsBIReporter.onError({
166
+ tagName,
167
+ actionName,
168
+ origin
169
+ }, error);
170
+ this.container.internalMonitor.reportError({
171
+ error: new _services.WixPatternsError({
172
+ errorCode,
173
+ originalException: error
174
+ }),
175
+ category: 'Tags'
176
+ });
177
+ onError == null || onError(error);
178
+ },
179
+ onTryAgain: () => {
180
+ tagsBIReporter.onTryAgain({
181
+ actionName,
182
+ isFromSearch,
183
+ filteredListSize
184
+ });
185
+ onTryAgain == null || onTryAgain();
186
+ },
187
+ onUndo: () => {
188
+ tagsBIReporter.onUndo({
189
+ actionName
190
+ });
191
+ onUndo == null || onUndo();
192
+ },
193
+ ...otherOptimisticActionParams
194
+ };
195
+ }
196
+ async createTag({
197
+ name,
198
+ origin,
199
+ filteredListSize,
200
+ id = (0, _uuid.v4)(),
201
+ isFromSearch = false,
202
+ onSuccess,
203
+ optimisticActionParams = {},
204
+ tagsBIReporter
205
+ }) {
206
+ const actionName = 'Add tag';
207
+ tagsBIReporter.onAction({
208
+ tagName: name,
209
+ isFromSearch,
210
+ actionName,
211
+ origin
212
+ });
213
+ const newTag = {
214
+ id,
215
+ name,
216
+ fqdn: this.fqdnString,
217
+ exposure: _types.TagExposure.PRIVATE,
218
+ createdDate: new Date()
219
+ };
220
+ this.optimisticActions.createOne(newTag, {
221
+ submit: async () => {
222
+ const createTagResponse = await this.container.httpClient.request((0, _http.createTag)({
223
+ tag: newTag
224
+ }));
225
+ const serverCreatedTag = createTagResponse.data.tag;
226
+ await (onSuccess == null ? void 0 : onSuccess(serverCreatedTag));
227
+ return [serverCreatedTag];
228
+ },
229
+ ...this._optimisticActionBaseParams(optimisticActionParams, {
230
+ tagsBIReporter,
231
+ actionName,
232
+ origin,
233
+ filteredListSize,
234
+ tagName: name,
235
+ isFromSearch,
236
+ errorCode: 'CreateTagFailed'
237
+ })
238
+ });
239
+ }
240
+ async updateTag({
241
+ tagToUpdate,
242
+ previousName,
243
+ origin,
244
+ filteredListSize,
245
+ isFromSearch = false,
246
+ optimisticActionParams = {},
247
+ tagsBIReporter
248
+ }) {
249
+ const actionName = 'Rename tag';
250
+ tagsBIReporter.onAction({
251
+ actionName,
252
+ previousName,
253
+ tagName: tagToUpdate.name,
254
+ isFromSearch,
255
+ origin
256
+ });
257
+ this.optimisticActions.updateOne({
258
+ ...tagToUpdate,
259
+ revision: (+tagToUpdate.revision + 1).toString()
260
+ }, {
261
+ submit: async () => {
262
+ return this.container.httpClient.request((0, _http.updateTag)({
263
+ tag: tagToUpdate
264
+ }));
265
+ },
266
+ ...this._optimisticActionBaseParams(optimisticActionParams, {
267
+ tagsBIReporter,
268
+ actionName,
269
+ origin,
270
+ filteredListSize,
271
+ tagName: previousName,
272
+ isFromSearch,
273
+ errorCode: 'UpdateTagFailed'
274
+ })
275
+ });
276
+ }
277
+ async deleteTag({
278
+ tagToDelete,
279
+ origin,
280
+ filteredListSize,
281
+ isFromSearch = true,
282
+ optimisticActionParams = {},
283
+ tagsBIReporter
284
+ }) {
285
+ const tagName = tagToDelete.name;
286
+ const actionName = 'Delete tag';
287
+ tagsBIReporter.onAction({
288
+ actionName,
289
+ tagName,
290
+ isFromSearch,
291
+ origin
292
+ });
293
+ await this.optimisticActions.deleteOne(tagToDelete, {
294
+ submit: async () => {
295
+ return this.container.httpClient.request((0, _http.deleteTag)({
296
+ tagId: tagToDelete.id
297
+ }));
298
+ },
299
+ ...this._optimisticActionBaseParams(optimisticActionParams, {
300
+ tagsBIReporter,
301
+ actionName,
302
+ origin,
303
+ tagName,
304
+ filteredListSize,
305
+ isFromSearch,
306
+ errorCode: 'RemovetagFailed'
307
+ })
308
+ });
309
+ }
310
+ }
311
+ exports.TagsManagementState = TagsManagementState;
312
+ //# sourceMappingURL=TagsManagementState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_mobx","require","_http","_types","_uuid","_events","_CollectionState","_CollectionOptimisticActions","_TaskState","_util","_services","TAG_MAX_LENGTH","exports","TagsManagementState","constructor","params","_defineProperty2","default","TaskState","EventEmitter","container","fqdn","collection","CollectionState","events","queryName","fqdnString","join","fetchData","fetchedItems","httpClient","request","listTags","exposure","TagExposure","PRIVATE","then","data","tags","filter","id","name","items","total","length","itemKey","itemName","fetchErrorMessage","filters","showToast","toastConfig","_params$container","overrideShowToast","emit","remove","optimisticActions","CollectionOptimisticActions","orderBy","sort","fieldName","createdDate","Date","valueOf","order","makeObservable","init","action","createTag","updateTag","deleteTag","retry","_isFqdnValid","disposers","initTask","runOnce","status","promise","forEach","disposer","result","isError","isLoading","isIdle","isSuccessful","isSuccess","fqdnToString","getTagById","tagId","_this$collection$resu","_keyedItemsMap","get","item","getTagNameById","_this$getTagById","resource","undefined","_optimisticActionBaseParams","optimisticActionParams","tagsBIReporter","actionName","origin","tagName","filteredListSize","isFromSearch","errorCode","onError","onTryAgain","onUndo","otherOptimisticActionParams","error","internalMonitor","reportError","WixPatternsError","originalException","category","uuid","onSuccess","onAction","newTag","createOne","submit","createTagResponse","tag","serverCreatedTag","tagToUpdate","previousName","updateOne","revision","toString","tagToDelete","deleteOne"],"sources":["../../../../src/state/TagsState/TagsManagementState.ts"],"sourcesContent":["import { action, makeObservable } from 'mobx';\nimport {\n listTags,\n createTag,\n updateTag,\n deleteTag,\n} from '@wix/bex-utils/@wix/ambassador-os-tags-v1-tag/http';\nimport {\n Tag,\n TagExposure,\n} from '@wix/bex-utils/@wix/ambassador-os-tags-v1-tag/types';\nimport { TagsBIReporter } from './TagsBIReporter';\nimport { v4 as uuid } from 'uuid';\nimport { EventEmitter } from 'events';\nimport { WixPatternsContainer } from '../WixPatternsContainer';\nimport { Fqdn, ToastConfig } from '../../model';\nimport { CollectionState } from '../CollectionState';\nimport {\n CollectionOptimisticActions,\n CreateManyParams,\n DeleteManyParams,\n OptimisticActionBasis,\n UpdateManyParams,\n} from '../CollectionOptimisticActions';\nimport { TaskState } from '../TaskState';\nimport { TypedEmitter, fqdnToString } from '../../util';\nimport { WixPatternsError, WixPatternsErrorCode } from '../../services';\n\nexport const TAG_MAX_LENGTH = 30;\nexport interface TagsManagementStateParams {\n readonly container: WixPatternsContainer;\n readonly fqdn: Fqdn;\n}\n\nexport class TagsManagementState {\n readonly collection: CollectionState<Tag>;\n readonly optimisticActions: CollectionOptimisticActions<Tag, {}>;\n readonly container;\n readonly fqdn;\n readonly initTask = new TaskState();\n readonly events = new EventEmitter() as TypedEmitter<{\n showToast: (toastConfig: ToastConfig) => unknown;\n hideToast: (toastConfig: ToastConfig) => unknown;\n }>;\n overrideShowToast = false;\n\n constructor(params: TagsManagementStateParams) {\n this.container = params.container;\n this.fqdn = params.fqdn;\n this.collection = new CollectionState<Tag>({\n ...params.container,\n events: {},\n queryName: [this.fqdnString, 'tags'].join('/'),\n fetchData: async () => {\n const fetchedItems = await this.container.httpClient\n .request(\n listTags({ fqdn: this.fqdnString, exposure: TagExposure.PRIVATE }),\n )\n .then(({ data: { tags = [] } }) =>\n tags.filter(({ id, name }) => id && name),\n );\n\n return {\n items: fetchedItems,\n total: fetchedItems.length,\n };\n },\n itemKey: ({ id }) => id!,\n itemName: ({ name }) => name!,\n fetchErrorMessage: () => '',\n filters: {},\n showToast: (toastConfig: ToastConfig) => {\n if (this.overrideShowToast) {\n this.events.emit('showToast', toastConfig);\n return {\n remove: () => {\n this.events.emit('hideToast', toastConfig);\n },\n };\n }\n if (params?.container?.showToast) {\n return params.container.showToast(toastConfig);\n }\n return { remove: () => {} };\n },\n });\n\n this.optimisticActions = new CollectionOptimisticActions<Tag, {}>({\n container: this.container,\n collection: this.collection,\n orderBy: ({ sort }) => [\n ...(sort || []),\n {\n fieldName: ({ createdDate }) => (createdDate ?? new Date()).valueOf(),\n order: 'asc',\n },\n ],\n });\n\n makeObservable(this, {\n init: action,\n createTag: action,\n updateTag: action,\n deleteTag: action,\n retry: action,\n });\n }\n\n init() {\n if (!this._isFqdnValid()) {\n return;\n }\n\n const { collection, optimisticActions } = this;\n\n const disposers = [collection.init(), optimisticActions.init()];\n\n this.initTask.runOnce(async () => {\n collection.initTask.runOnce();\n\n await collection.initTask.status.promise;\n });\n\n return () => {\n disposers.forEach((disposer) => disposer());\n };\n }\n\n retry() {\n this.collection.initTask.runOnce();\n }\n\n get items() {\n return this.collection.result.items;\n }\n\n get isError() {\n return this.initTask.status.isError;\n }\n\n get isLoading() {\n const { status } = this.collection.initTask;\n return status.isIdle || status.isLoading;\n }\n\n get isSuccessful() {\n const { status } = this.collection.initTask;\n return status.isSuccess;\n }\n\n get fqdnString() {\n return fqdnToString(this.fqdn);\n }\n\n getTagById(tagId: string) {\n return this.collection.result._keyedItemsMap?.get(tagId)?.item;\n }\n\n getTagNameById(tagId: string) {\n return this.getTagById(tagId)?.name;\n }\n\n private _isFqdnValid() {\n return this.fqdn.resource !== undefined;\n }\n\n private _optimisticActionBaseParams<T extends OptimisticActionBasis>(\n optimisticActionParams: T,\n {\n tagsBIReporter,\n actionName,\n origin,\n tagName,\n filteredListSize,\n isFromSearch = false,\n errorCode,\n }: {\n tagsBIReporter: TagsBIReporter;\n actionName: string;\n origin: string;\n tagName: string;\n filteredListSize: number;\n isFromSearch?: boolean;\n errorCode: WixPatternsErrorCode;\n },\n ) {\n const { onError, onTryAgain, onUndo, ...otherOptimisticActionParams } =\n optimisticActionParams;\n\n return {\n onError: (error: unknown) => {\n tagsBIReporter.onError(\n {\n tagName,\n actionName,\n origin,\n },\n error,\n );\n this.container.internalMonitor.reportError({\n error: new WixPatternsError({\n errorCode,\n originalException: error,\n }),\n category: 'Tags',\n });\n\n onError?.(error);\n },\n onTryAgain: () => {\n tagsBIReporter.onTryAgain({\n actionName,\n isFromSearch,\n filteredListSize,\n });\n onTryAgain?.();\n },\n onUndo: () => {\n tagsBIReporter.onUndo({ actionName });\n onUndo?.();\n },\n ...otherOptimisticActionParams,\n };\n }\n\n async createTag({\n name,\n origin,\n filteredListSize,\n id = uuid(),\n isFromSearch = false,\n onSuccess,\n optimisticActionParams = {},\n tagsBIReporter,\n }: {\n name: string;\n origin: string;\n filteredListSize: number;\n id?: string;\n isFromSearch?: boolean;\n onSuccess?: (tag: Tag) => void | Promise<void>;\n optimisticActionParams?: Partial<CreateManyParams<Tag>>;\n tagsBIReporter: TagsBIReporter;\n }) {\n const actionName = 'Add tag';\n\n tagsBIReporter.onAction({\n tagName: name,\n isFromSearch,\n actionName,\n origin,\n });\n\n const newTag = {\n id,\n name,\n fqdn: this.fqdnString,\n exposure: TagExposure.PRIVATE,\n createdDate: new Date(),\n };\n\n this.optimisticActions.createOne(newTag, {\n submit: async () => {\n const createTagResponse = await this.container.httpClient.request(\n createTag({ tag: newTag }),\n );\n\n const serverCreatedTag = createTagResponse.data.tag!;\n await onSuccess?.(serverCreatedTag);\n\n return [serverCreatedTag];\n },\n ...this._optimisticActionBaseParams(optimisticActionParams, {\n tagsBIReporter,\n actionName,\n origin,\n filteredListSize,\n tagName: name,\n isFromSearch,\n errorCode: 'CreateTagFailed',\n }),\n });\n }\n\n async updateTag({\n tagToUpdate,\n previousName,\n origin,\n filteredListSize,\n isFromSearch = false,\n optimisticActionParams = {},\n tagsBIReporter,\n }: {\n tagToUpdate: Tag;\n previousName: string;\n origin: string;\n filteredListSize: number;\n isFromSearch?: boolean;\n optimisticActionParams?: Partial<UpdateManyParams<Tag, {}>>;\n tagsBIReporter: TagsBIReporter;\n }) {\n const actionName = 'Rename tag';\n\n tagsBIReporter.onAction({\n actionName,\n previousName,\n tagName: tagToUpdate.name!,\n isFromSearch,\n origin,\n });\n\n this.optimisticActions.updateOne(\n { ...tagToUpdate, revision: (+tagToUpdate.revision! + 1).toString() },\n {\n submit: async () => {\n return this.container.httpClient.request(\n updateTag({ tag: tagToUpdate }),\n );\n },\n ...this._optimisticActionBaseParams(optimisticActionParams, {\n tagsBIReporter,\n actionName,\n origin,\n filteredListSize,\n tagName: previousName,\n isFromSearch,\n errorCode: 'UpdateTagFailed',\n }),\n },\n );\n }\n\n async deleteTag({\n tagToDelete,\n origin,\n filteredListSize,\n isFromSearch = true,\n optimisticActionParams = {},\n tagsBIReporter,\n }: {\n tagToDelete: Tag;\n origin: string;\n filteredListSize: number;\n isFromSearch?: boolean;\n optimisticActionParams?: Partial<DeleteManyParams<Tag, {}>>;\n tagsBIReporter: TagsBIReporter;\n }) {\n const tagName = tagToDelete.name!;\n const actionName = 'Delete tag';\n\n tagsBIReporter.onAction({\n actionName,\n tagName,\n isFromSearch,\n origin,\n });\n\n await this.optimisticActions.deleteOne(tagToDelete, {\n submit: async () => {\n return this.container.httpClient.request(\n deleteTag({ tagId: tagToDelete.id! }),\n );\n },\n ...this._optimisticActionBaseParams(optimisticActionParams, {\n tagsBIReporter,\n actionName,\n origin,\n tagName,\n filteredListSize,\n isFromSearch,\n errorCode: 'RemovetagFailed',\n }),\n });\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ exports.TagsSearchState = void 0;
6
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
+ var _TagsManagementState = require("./TagsManagementState");
8
+ var _mobx = require("mobx");
9
+ class TagsSearchState {
10
+ constructor({
11
+ tagsManagementState
12
+ }) {
13
+ (0, _defineProperty2.default)(this, "tagsManagementState", void 0);
14
+ (0, _defineProperty2.default)(this, "searchValue", '');
15
+ (0, _defineProperty2.default)(this, "setSearchValue", newSearchValue => {
16
+ this.searchValue = newSearchValue;
17
+ });
18
+ this.tagsManagementState = tagsManagementState;
19
+ (0, _mobx.makeObservable)(this, {
20
+ searchValue: _mobx.observable,
21
+ setSearchValue: _mobx.action,
22
+ filteredItems: _mobx.computed,
23
+ hasSameTagAsSearch: _mobx.computed
24
+ });
25
+ }
26
+ get filteredItems() {
27
+ if (!this.searchValue) {
28
+ return this.tagsManagementState.items;
29
+ }
30
+ const filteredTags = this.tagsManagementState.items.filter(tag => {
31
+ return tag.name.toLowerCase().includes(this.searchValue.toLowerCase());
32
+ });
33
+ if (filteredTags.length === 0 && this.searchValue.length > _TagsManagementState.TAG_MAX_LENGTH) {
34
+ const truncatedTag = this.tagsManagementState.items.find(tag => tag.name.toLowerCase() === this.searchValue.substring(0, _TagsManagementState.TAG_MAX_LENGTH).toLowerCase());
35
+ if (truncatedTag) {
36
+ return [truncatedTag];
37
+ }
38
+ }
39
+ return filteredTags;
40
+ }
41
+ get hasSameTagAsSearch() {
42
+ return this.tagsManagementState.items.some(tag => {
43
+ return tag.name.toLowerCase() === this.searchValue.substring(0, _TagsManagementState.TAG_MAX_LENGTH).toLowerCase();
44
+ });
45
+ }
46
+ }
47
+ exports.TagsSearchState = TagsSearchState;
48
+ //# sourceMappingURL=TagsSearchState.js.map