@nascentdigital/funnel-editor 4.6.7 → 5.0.2

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 (185) hide show
  1. package/dist/EditorApp.js +1 -1
  2. package/dist/EditorRoutes.js +7 -5
  3. package/dist/changesets/screens/ChangeSetViewer.js +1 -1
  4. package/dist/changesets/screens/ChangeSetsExplorer.js +1 -2
  5. package/dist/collection/hooks/CollectionController.d.ts +5 -16
  6. package/dist/collection/hooks/CollectionController.js +18 -37
  7. package/dist/collection/hooks/ICollectionController.d.ts +24 -0
  8. package/dist/collection/hooks/ICollectionController.js +20 -0
  9. package/dist/collection/hooks/index.d.ts +1 -0
  10. package/dist/collection/hooks/index.js +1 -0
  11. package/dist/collection/hooks/useCollectionController.d.ts +3 -3
  12. package/dist/collection/screens/CollectionEditor.js +2 -2
  13. package/dist/components.d.ts +15 -3
  14. package/dist/components.js +18 -3
  15. package/dist/core/components/feedback/dialog/MinimalDialogLayout.js +1 -1
  16. package/dist/core/components/fields/BooleanField.d.ts +2 -1
  17. package/dist/core/components/fields/BooleanField.js +2 -2
  18. package/dist/core/components/fields/DateField.d.ts +2 -1
  19. package/dist/core/components/fields/DateField.js +2 -2
  20. package/dist/core/components/fields/DynamicPagesEditor.d.ts +2 -1
  21. package/dist/core/components/fields/DynamicPagesEditor.js +1 -1
  22. package/dist/core/components/fields/EnumField.d.ts +2 -1
  23. package/dist/core/components/fields/EnumField.js +2 -2
  24. package/dist/core/components/fields/FieldCard.d.ts +1 -0
  25. package/dist/core/components/fields/FieldCard.js +8 -1
  26. package/dist/core/components/fields/FieldEditor.d.ts +2 -1
  27. package/dist/core/components/fields/FieldEditor.js +11 -11
  28. package/dist/core/components/fields/FieldLayout.d.ts +2 -1
  29. package/dist/core/components/fields/FieldLayout.js +3 -3
  30. package/dist/core/components/fields/ListEditor.d.ts +2 -1
  31. package/dist/core/components/fields/ListEditor.js +5 -6
  32. package/dist/core/components/fields/OptInField.d.ts +2 -1
  33. package/dist/core/components/fields/OptInField.js +43 -3
  34. package/dist/core/components/fields/RichTextEditor.js +1 -1
  35. package/dist/core/components/fields/RichTextField.d.ts +2 -1
  36. package/dist/core/components/fields/RichTextField.js +3 -5
  37. package/dist/core/components/fields/TextField.d.ts +2 -0
  38. package/dist/core/components/fields/TextField.js +2 -2
  39. package/dist/core/components/fields/TimestampField.d.ts +2 -1
  40. package/dist/core/components/fields/TimestampField.js +3 -3
  41. package/dist/core/components/fields/asset/AssetEditor.d.ts +1 -2
  42. package/dist/core/components/fields/asset/AssetEditor.js +29 -49
  43. package/dist/core/components/fields/asset/AssetPicker.js +6 -6
  44. package/dist/core/components/fields/asset/AssetUploader.d.ts +1 -2
  45. package/dist/core/components/fields/asset/AssetUploader.js +39 -35
  46. package/dist/core/components/fields/asset/preview/VideoPreview.js +16 -11
  47. package/dist/core/components/fields/asset/useAssetFields.d.ts +2 -17
  48. package/dist/core/components/fields/asset/useAssetFields.js +0 -21
  49. package/dist/core/components/fields/collection/CollectionEditor.d.ts +2 -1
  50. package/dist/core/components/fields/collection/CollectionEditor.js +18 -4
  51. package/dist/core/components/fields/collection/CollectionPicker.d.ts +2 -2
  52. package/dist/core/components/fields/collection/CollectionPicker.js +3 -4
  53. package/dist/core/components/fields/dynamicPages/PagePriorityDialog.js +1 -1
  54. package/dist/core/components/fields/embed/EmbeddedVideoEditor.d.ts +2 -2
  55. package/dist/core/components/fields/embed/EmbeddedVideoEditor.js +50 -31
  56. package/dist/core/components/fields/factories/AssetFactory.d.ts +3 -3
  57. package/dist/core/components/fields/factories/AssetFactory.js +18 -13
  58. package/dist/core/components/fields/factories/CollectionFactory.d.ts +3 -3
  59. package/dist/core/components/fields/factories/CollectionFactory.js +20 -13
  60. package/dist/core/components/fields/factories/EmbeddedVideoFactory.d.ts +3 -3
  61. package/dist/core/components/fields/factories/EmbeddedVideoFactory.js +17 -8
  62. package/dist/core/components/fields/factories/FieldValueFactory.d.ts +7 -5
  63. package/dist/core/components/fields/factories/FieldValueFactory.js +57 -13
  64. package/dist/core/components/fields/factories/LinkFactory.d.ts +3 -3
  65. package/dist/core/components/fields/factories/LinkFactory.js +17 -8
  66. package/dist/core/components/fields/factories/MediaFactory.d.ts +13 -0
  67. package/dist/core/components/fields/factories/MediaFactory.js +212 -0
  68. package/dist/core/components/fields/factories/ObjectFactory.d.ts +3 -2
  69. package/dist/core/components/fields/factories/ObjectFactory.js +16 -2
  70. package/dist/core/components/fields/factories/TextFactory.d.ts +3 -3
  71. package/dist/core/components/fields/factories/TextFactory.js +16 -10
  72. package/dist/core/components/fields/link/LinkEditor.d.ts +2 -2
  73. package/dist/core/components/fields/link/LinkEditor.js +18 -6
  74. package/dist/core/components/fields/list/CreateFieldButton.js +1 -1
  75. package/dist/core/components/fields/media/MediaCard.d.ts +7 -0
  76. package/dist/core/components/fields/media/MediaCard.js +92 -0
  77. package/dist/core/components/fields/media/MediaEditor.d.ts +36 -0
  78. package/dist/core/components/fields/media/MediaEditor.js +264 -0
  79. package/dist/core/components/fields/media/index.d.ts +2 -0
  80. package/dist/core/components/fields/media/index.js +18 -0
  81. package/dist/core/components/fields/object/ObjectEditor.d.ts +2 -1
  82. package/dist/core/components/fields/object/ObjectEditor.js +16 -2
  83. package/dist/core/components/fields/page/PagePicker.js +1 -1
  84. package/dist/core/components/interaction/Combobox.js +1 -1
  85. package/dist/core/components/interaction/MultiSelectControls.js +2 -5
  86. package/dist/core/components/interaction/Popup.d.ts +11 -7
  87. package/dist/core/components/interaction/Popup.js +8 -6
  88. package/dist/core/components/interaction/QuickEditor.js +1 -1
  89. package/dist/core/components/interaction/QuickInput.d.ts +2 -4
  90. package/dist/core/components/interaction/QuickInput.js +6 -2
  91. package/dist/core/components/interaction/QuickPicker.js +1 -1
  92. package/dist/core/components/interaction/SideSheet.js +1 -1
  93. package/dist/core/components/interaction/centersheet/CenterSheet.js +7 -1
  94. package/dist/core/components/interaction/centersheet/CenterSheetContainer.js +3 -1
  95. package/dist/core/components/interaction/menu/Menu.d.ts +8 -19
  96. package/dist/core/components/interaction/menu/Menu.js +26 -60
  97. package/dist/core/components/interaction/menu/useMenuController.d.ts +4 -2
  98. package/dist/core/components/interaction/menu/useMenuController.js +4 -1
  99. package/dist/core/components/transitions/FadeIn.js +1 -1
  100. package/dist/core/components/visuals/Icon.d.ts +1 -1
  101. package/dist/core/components/visuals/Icon.js +3 -0
  102. package/dist/core/containers/AssetRepositoryContainer.d.ts +2 -0
  103. package/dist/core/containers/AssetRepositoryContainer.js +18 -0
  104. package/dist/core/containers/CollectionRepositoryContainer.d.ts +2 -0
  105. package/dist/core/containers/CollectionRepositoryContainer.js +18 -0
  106. package/dist/core/containers/PageRepositoryContainer.d.ts +2 -0
  107. package/dist/core/containers/PageRepositoryContainer.js +18 -0
  108. package/dist/core/containers/index.d.ts +3 -0
  109. package/dist/core/containers/index.js +19 -0
  110. package/dist/core/domain/Block.js +2 -1
  111. package/dist/core/domain/BlockConfiguration.d.ts +4 -1
  112. package/dist/core/domain/BlockConfiguration.js +59 -3
  113. package/dist/core/domain/Collection.d.ts +7 -25
  114. package/dist/core/domain/Collection.js +2 -16
  115. package/dist/core/domain/CollectionBrowser.d.ts +3 -2
  116. package/dist/core/domain/CollectionBrowser.js +3 -3
  117. package/dist/core/domain/CollectionFieldProxy.d.ts +12 -8
  118. package/dist/core/domain/CollectionFieldProxy.js +15 -9
  119. package/dist/core/domain/CollectionGroup.d.ts +0 -5
  120. package/dist/core/domain/CollectionGroup.js +0 -7
  121. package/dist/core/domain/CollectionSummary.d.ts +2 -2
  122. package/dist/core/domain/Collections.d.ts +3 -3
  123. package/dist/core/domain/Collections.js +4 -6
  124. package/dist/core/domain/ICollection.d.ts +72 -0
  125. package/dist/core/domain/ICollection.js +20 -0
  126. package/dist/core/domain/IPage.d.ts +16 -1
  127. package/dist/core/domain/Page.js +2 -2
  128. package/dist/core/domain/Pages.js +4 -6
  129. package/dist/core/domain/SectionBlock.js +2 -1
  130. package/dist/core/domain/Site.d.ts +4 -4
  131. package/dist/core/domain/Site.js +3 -5
  132. package/dist/core/domain/index.d.ts +1 -1
  133. package/dist/core/domain/index.js +1 -1
  134. package/dist/core/hooks/index.d.ts +4 -3
  135. package/dist/core/hooks/index.js +4 -3
  136. package/dist/core/hooks/useAssetRepository.d.ts +3 -0
  137. package/dist/core/hooks/useAssetRepository.js +11 -0
  138. package/dist/core/hooks/useCollection.d.ts +4 -4
  139. package/dist/core/hooks/useCollectionRepository.d.ts +3 -2
  140. package/dist/core/hooks/useCollectionRepository.js +4 -4
  141. package/dist/core/hooks/useCollections.js +4 -0
  142. package/dist/core/hooks/usePageRepository.d.ts +3 -2
  143. package/dist/core/hooks/usePageRepository.js +4 -4
  144. package/dist/core/hooks/useSite.js +4 -0
  145. package/dist/core/hooks/useTempFields.d.ts +2 -3
  146. package/dist/core/index.d.ts +1 -0
  147. package/dist/core/index.js +1 -0
  148. package/dist/core/repository/AssetRepository.d.ts +10 -0
  149. package/dist/core/repository/AssetRepository.js +22 -0
  150. package/dist/core/repository/CollectionRepository.d.ts +22 -21
  151. package/dist/core/repository/CollectionRepository.js +23 -161
  152. package/dist/core/repository/CollectionSerializer.d.ts +4 -1
  153. package/dist/core/repository/CollectionSerializer.js +3 -3
  154. package/dist/core/repository/IAssetRepository.d.ts +25 -0
  155. package/dist/core/repository/ICollectionRepository.d.ts +61 -0
  156. package/dist/core/repository/ICollectionRepository.js +2 -0
  157. package/dist/core/repository/IPageRepository.d.ts +40 -0
  158. package/dist/core/repository/IPageRepository.js +2 -0
  159. package/dist/core/repository/PageRepository.d.ts +5 -8
  160. package/dist/core/repository/PageRepository.js +7 -280
  161. package/dist/core/repository/SerializeCollectionUpdate.d.ts +8 -0
  162. package/dist/core/repository/SerializeCollectionUpdate.js +168 -0
  163. package/dist/core/repository/SerializePageUpdate.d.ts +10 -0
  164. package/dist/core/repository/SerializePageUpdate.js +292 -0
  165. package/dist/core/repository/index.d.ts +4 -0
  166. package/dist/core/repository/index.js +4 -0
  167. package/dist/core/splash/SplashContainer.d.ts +4 -2
  168. package/dist/core/splash/SplashContainer.js +3 -3
  169. package/dist/dashboard/screens/Dashboard.js +1 -1
  170. package/dist/devtools/screens/Devtools.js +1 -1
  171. package/dist/explore/components/CreatePageDialog.d.ts +2 -2
  172. package/dist/explore/screens/CollectionExplorer.js +1 -1
  173. package/dist/explore/screens/CollectionsExplorer.js +1 -1
  174. package/dist/explore/screens/PageExplorer.js +1 -1
  175. package/dist/explore/screens/SiteExplorer.js +1 -1
  176. package/dist/page/components/BlockEditor.js +1 -1
  177. package/dist/page/components/SettingsEditor.js +0 -7
  178. package/dist/page/components/config/BlockConfigButton.js +71 -14
  179. package/dist/page/screens/PageEditor.js +1 -1
  180. package/dist/styles/index.css +24 -20
  181. package/dist/styles/tailwind.js +1 -0
  182. package/dist/users/screens/UserExplorer.js +1 -1
  183. package/package.json +2 -2
  184. package/dist/core/domain/TranslateSchema.d.ts +0 -7
  185. /package/dist/core/{domain/TranslateSchema.js → repository/IAssetRepository.js} +0 -0
@@ -14,6 +14,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
14
14
  exports.CollectionRepository = void 0;
15
15
  const funnel_core_1 = require("@nascentdigital/funnel-core");
16
16
  const CollectionSerializer_1 = require("./CollectionSerializer");
17
+ const SerializeCollectionUpdate_1 = require("./SerializeCollectionUpdate");
17
18
  // class
18
19
  class CollectionRepository {
19
20
  constructor(editorApi) {
@@ -29,11 +30,15 @@ class CollectionRepository {
29
30
  // deserialize collection (if any)
30
31
  return CollectionSerializer_1.CollectionSerializer.deserializeCollectionGroup(Object.assign(Object.assign({}, args), data));
31
32
  }
32
- async create(_a) {
33
- var { eventBus } = _a, args = __rest(_a, ["eventBus"]);
33
+ async createRaw(args) {
34
34
  // resolve collection (get or create)
35
35
  const { template } = args, query = __rest(args, ["template"]);
36
- const data = await this.editorApi.createCollection(Object.assign(Object.assign({}, query), { type: template.type, version: template.version }));
36
+ return this.editorApi.createCollection(Object.assign(Object.assign({}, query), { type: template.type, version: template.version }));
37
+ }
38
+ async create(_a) {
39
+ var { eventBus } = _a, args = __rest(_a, ["eventBus"]);
40
+ // create
41
+ const data = await this.createRaw(args);
37
42
  // return collection
38
43
  return CollectionSerializer_1.CollectionSerializer.deserializeCollectionGroup(Object.assign(Object.assign({ eventBus: eventBus !== null && eventBus !== void 0 ? eventBus : new funnel_core_1.EventBus() }, args), data));
39
44
  }
@@ -46,7 +51,7 @@ class CollectionRepository {
46
51
  async save(collection) {
47
52
  // get collection update
48
53
  const savables = [];
49
- const update = this.serializeCollectionUpdate(collection, savables);
54
+ const update = this.serializeUpdate(collection, savables);
50
55
  console.debug('[CollectionRepository/save] created update', update);
51
56
  // start all updates
52
57
  collection.onSaveStart();
@@ -77,7 +82,19 @@ class CollectionRepository {
77
82
  // unpublish collection
78
83
  await this.editorApi.unpublishCollection(collection.id);
79
84
  }
80
- serializeCollectionUpdate(collection, savables) {
85
+ getOverview(args) {
86
+ return this.editorApi.getCollectionsOverview(args);
87
+ }
88
+ getItems(args) {
89
+ return this.editorApi.getCollectionItems(args);
90
+ }
91
+ get(args) {
92
+ return this.editorApi.getCollection(args);
93
+ }
94
+ async update(args) {
95
+ return this.editorApi.updateCollection(args);
96
+ }
97
+ serializeUpdate(collection, savables) {
81
98
  // add name updates
82
99
  const { id, nameField, name, initialTags, tags, fields, initialErrors, valid } = collection;
83
100
  const updates = [];
@@ -107,7 +124,7 @@ class CollectionRepository {
107
124
  });
108
125
  }
109
126
  // add fields
110
- this.serializeFieldsUpdate(updates, fields, ['fields'], savables);
127
+ SerializeCollectionUpdate_1.SerializeCollectionUpdate.serializeFieldsUpdate(updates, fields, ['fields'], savables);
111
128
  // return update data
112
129
  return {
113
130
  id,
@@ -115,160 +132,5 @@ class CollectionRepository {
115
132
  updates
116
133
  };
117
134
  }
118
- serializeFieldsUpdate(updates, fields, parentPath, savables) {
119
- // handle fields in block
120
- fields.forEach(field => {
121
- if (field instanceof funnel_core_1.Field) {
122
- this.serializeFieldUpdate(updates, field, parentPath, savables);
123
- }
124
- else if (field instanceof funnel_core_1.ObjectField) {
125
- this.serializeObjectFieldUpdate(updates, field, parentPath, savables);
126
- }
127
- else {
128
- this.serializeListUpdate(updates, field, parentPath, savables);
129
- }
130
- });
131
- // return changes (for chaining)
132
- return updates;
133
- }
134
- serializeObjectFieldUpdate(updates, field, parentPath, savables) {
135
- var _a;
136
- // create object if it's new
137
- if (field.isNew) {
138
- updates.push({
139
- type: 'object.insert',
140
- path: [...parentPath, field.id],
141
- value: (_a = field.value) !== null && _a !== void 0 ? _a : null
142
- });
143
- // track save
144
- savables.push(field);
145
- }
146
- // or process subfields
147
- else if (field.exists) {
148
- // save fields
149
- this.serializeFieldsUpdate(updates, field.fields, [...parentPath, field.id], savables);
150
- // track save
151
- savables.push(field);
152
- }
153
- // or process opted out field
154
- else if (field.optedOut) {
155
- updates.push({
156
- type: 'value',
157
- path: [...parentPath, field.id],
158
- value: null
159
- });
160
- // track save
161
- savables.push(field);
162
- }
163
- }
164
- serializeFieldUpdate(updates, field, parentPath, savables) {
165
- var _a;
166
- // track change if modified (ignore if field is sandboxed)
167
- if (field.modified && !field.sandboxed) {
168
- // set field
169
- updates.push({
170
- type: 'value',
171
- path: [...parentPath, field.id],
172
- value: ((_a = field.value) !== null && _a !== void 0 ? _a : null)
173
- });
174
- // track save
175
- savables.push(field);
176
- }
177
- }
178
- serializeListUpdate(updates, list, parentPath, savables) {
179
- var _a, _b;
180
- // create list if it's new
181
- if (list.isNew) {
182
- // add new list
183
- updates.push({
184
- type: 'value',
185
- path: [...parentPath, list.id],
186
- value: funnel_core_1.Schema.Field.Data.newValue('list')
187
- });
188
- // track save
189
- savables.push(list);
190
- }
191
- // or drop list on opt-out
192
- else if (list.optedOut) {
193
- // drop list
194
- updates.push({
195
- type: 'value',
196
- path: [...parentPath, list.id],
197
- value: null
198
- });
199
- // track save
200
- savables.push(list);
201
- }
202
- // or skip if not modified
203
- else if (list.modified) {
204
- // track insert/update
205
- const path = [...parentPath, list.id];
206
- const { value: currentValue, items: fields, initialValue } = list;
207
- const currentItems = (_a = currentValue === null || currentValue === void 0 ? void 0 : currentValue.value) !== null && _a !== void 0 ? _a : [];
208
- const initialItems = (_b = initialValue === null || initialValue === void 0 ? void 0 : initialValue.value) !== null && _b !== void 0 ? _b : [];
209
- const fieldIds = [];
210
- currentItems.forEach((item, index) => {
211
- // track id
212
- const { id, field } = fields[index];
213
- fieldIds.push(item.id);
214
- // track insert
215
- const originalIndex = initialItems.findIndex(initialItem => initialItem.id === id);
216
- if (originalIndex < 0) {
217
- updates.push({
218
- type: 'array.insert',
219
- path,
220
- index,
221
- id,
222
- value: item
223
- });
224
- }
225
- // track update
226
- else if (field.modified) {
227
- // object field updates should be recursed and indexed
228
- if (field instanceof funnel_core_1.ObjectField) {
229
- this.serializeFieldsUpdate(updates, field.fields, [...path, id], savables);
230
- }
231
- // basic field updates can be done inline
232
- else {
233
- updates.push({
234
- type: 'value',
235
- path: [...path, id],
236
- value: item
237
- });
238
- }
239
- }
240
- });
241
- // track delete/reorder
242
- let reordered = false;
243
- let deleted = 0;
244
- initialItems.forEach(({ id }, index) => {
245
- // add to deleted list if the original doesn't exist anymore
246
- const fieldIndex = fieldIds.findIndex(fieldId => fieldId === id) + deleted;
247
- if (fieldIndex < 0) {
248
- updates.push({
249
- type: 'array.delete',
250
- path,
251
- id
252
- });
253
- // track deletion
254
- ++deleted;
255
- }
256
- // or mark reorder if index isn't the same
257
- else if (fieldIndex !== index) {
258
- reordered = true;
259
- }
260
- });
261
- // track reorder
262
- if (reordered) {
263
- updates.push({
264
- type: 'array.reorder',
265
- path,
266
- ids: fieldIds
267
- });
268
- }
269
- // track save
270
- savables.push(list);
271
- }
272
- }
273
135
  }
274
136
  exports.CollectionRepository = CollectionRepository;
@@ -5,7 +5,10 @@ export declare namespace CollectionSerializer {
5
5
  template: Schema.Collection;
6
6
  eventBus: EventBus;
7
7
  };
8
- function deserializeCollectionGroup({ template, eventBus, group: groupData, collection: collectionData }: DeserializeCollectionGroupArgs): CollectionGroup;
8
+ function deserializeCollectionGroup({ template, eventBus, group: groupData, collection: collectionData }: DeserializeCollectionGroupArgs): {
9
+ collection: Collection | undefined;
10
+ group: CollectionGroup;
11
+ };
9
12
  type DeserializeCollectionArgs = {
10
13
  flattenedCollection: Schema.Collection.FlattenedData;
11
14
  template: Schema.Collection;
@@ -27,14 +27,14 @@ var CollectionSerializer;
27
27
  });
28
28
  // deserialize summary
29
29
  const { groupId, brand, name, instances } = groupData;
30
- return new domain_1.CollectionGroup({
30
+ const group = new domain_1.CollectionGroup({
31
31
  template,
32
32
  groupId,
33
33
  brand,
34
34
  name,
35
- collections: instances,
36
- collection
35
+ collections: instances
37
36
  });
37
+ return { collection, group };
38
38
  }
39
39
  CollectionSerializer.deserializeCollectionGroup = deserializeCollectionGroup;
40
40
  function deserializeCollection({ eventBus, template, flattenedCollection }) {
@@ -0,0 +1,25 @@
1
+ import { AssetClient, AssetUploadClient } from '@nascentdigital/funnel-cms';
2
+ export interface IAssetRepository {
3
+ search(args: IAssetRepository.Search.Args): Promise<IAssetRepository.Search.Result>;
4
+ get(args: IAssetRepository.Get.Args): Promise<IAssetRepository.Get.Result>;
5
+ update(args: IAssetRepository.Update.Args): Promise<IAssetRepository.Update.Result>;
6
+ uploadFile(args: IAssetRepository.UploadFile.Args): Promise<IAssetRepository.UploadFile.Result>;
7
+ }
8
+ export declare namespace IAssetRepository {
9
+ namespace Search {
10
+ type Args = AssetClient.GetAssets.Args;
11
+ type Result = AssetClient.GetAssets.Result;
12
+ }
13
+ namespace Get {
14
+ type Args = AssetClient.GetAsset.Args;
15
+ type Result = AssetClient.GetAsset.Result;
16
+ }
17
+ namespace Update {
18
+ type Args = AssetClient.UpdateAsset.Args;
19
+ type Result = AssetClient.UpdateAsset.Result;
20
+ }
21
+ namespace UploadFile {
22
+ type Args = Omit<AssetUploadClient.OnUpload.Args, 'api'>;
23
+ type Result = AssetUploadClient.OnUpload.Result;
24
+ }
25
+ }
@@ -0,0 +1,61 @@
1
+ import { CollectionClient } from '@nascentdigital/funnel-cms';
2
+ import { EventBus, Schema } from '@nascentdigital/funnel-core';
3
+ import { CollectionFieldProxy, ICollection } from '../domain';
4
+ export interface ICollectionRepository {
5
+ create(args: ICollectionRepository.Create.Args): Promise<ICollectionRepository.Create.Result>;
6
+ createRaw(args: ICollectionRepository.CreateRaw.Args): Promise<ICollectionRepository.CreateRaw.Result>;
7
+ createLanguage(args: ICollectionRepository.CreateLang.Args): Promise<ICollectionRepository.CreateLang.Result>;
8
+ save(collection: ICollection): Promise<ICollection>;
9
+ unpublish(collection: ICollection): Promise<void>;
10
+ getOverview(args: ICollectionRepository.GetOverview.Args): Promise<ICollectionRepository.GetOverview.Result>;
11
+ getItems(args: ICollectionRepository.GetItems.Args): Promise<ICollectionRepository.GetItems.Result>;
12
+ get(args: ICollectionRepository.Get.Args): Promise<ICollectionRepository.Get.Result>;
13
+ update(args: ICollectionRepository.Update.Args): Promise<ICollectionRepository.Update.Result>;
14
+ serializeUpdate(collection: ICollection | CollectionFieldProxy, savables: ICollection.Savable[]): ICollectionRepository.SerializeUpdates.Result;
15
+ }
16
+ export declare namespace ICollectionRepository {
17
+ namespace Create {
18
+ type Args = Omit<CollectionClient.Create.NewArgs, 'brand' | 'type' | 'version'> & {
19
+ template: Schema.Collection;
20
+ eventBus?: EventBus;
21
+ };
22
+ type Result = ICollection.WithGroup;
23
+ }
24
+ namespace CreateRaw {
25
+ type Args = Omit<CollectionClient.Create.NewArgs, 'brand' | 'type' | 'version'> & {
26
+ template: Schema.Collection;
27
+ };
28
+ type Result = Schema.Collection.Data.AsGroup;
29
+ }
30
+ namespace CreateLang {
31
+ type Args = Omit<CollectionClient.Create.NewLanguageArgs, 'brand'> & {
32
+ template: Schema.Collection;
33
+ eventBus: EventBus;
34
+ };
35
+ type Result = ICollection.WithGroup;
36
+ }
37
+ namespace GetOverview {
38
+ type Args = Omit<CollectionClient.GetOverview.Args, 'brand'>;
39
+ type Item = {
40
+ template: Schema.Collection;
41
+ type: Schema.Collection.Type;
42
+ count: number;
43
+ };
44
+ type Result = Item[];
45
+ }
46
+ namespace GetItems {
47
+ type Args = Omit<CollectionClient.GetItems.Args, 'brand'>;
48
+ type Result = CollectionClient.GetItems.Result;
49
+ }
50
+ namespace Get {
51
+ type Args = Omit<CollectionClient.Get.Args, 'brand'>;
52
+ type Result = CollectionClient.Get.Result;
53
+ }
54
+ namespace Update {
55
+ type Args = CollectionClient.Update.Args;
56
+ type Result = CollectionClient.Update.Result;
57
+ }
58
+ namespace SerializeUpdates {
59
+ type Result = CollectionClient.Update.Args;
60
+ }
61
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,40 @@
1
+ import { PageClient, Pagination } from '@nascentdigital/funnel-cms';
2
+ import { EventBus, PartialBy, Schema } from '@nascentdigital/funnel-core';
3
+ import { IPage, PageOverview } from '../domain';
4
+ export interface IPageRepository {
5
+ search(args: IPageRepository.Search.Args): Promise<IPageRepository.Search.Result>;
6
+ create(args: IPageRepository.Create.Args): Promise<IPageRepository.Create.Result>;
7
+ createLanguage(args: IPageRepository.CreateLang.Args): Promise<IPageRepository.CreateLang.Result>;
8
+ save(page: IPage): Promise<IPage>;
9
+ unpublish(page: IPage): Promise<void>;
10
+ getOverview(args: IPageRepository.GetOverview.Args): Promise<IPageRepository.GetOverview.Result>;
11
+ }
12
+ export declare namespace IPageRepository {
13
+ namespace Search {
14
+ type Args = Omit<PageClient.Search.Args, 'version' | 'brand' | 'type' | 'region'> & {
15
+ template: Schema.Page;
16
+ region: string;
17
+ };
18
+ type Result = Pagination.Paginated<IPage.Ref>;
19
+ }
20
+ namespace Create {
21
+ type Args = PartialBy<Omit<PageClient.Create.NewArgs, 'brand' | 'type' | 'route'>, 'name'> & {
22
+ template: Schema.Page;
23
+ eventBus?: EventBus;
24
+ };
25
+ type Result = IPage.WithSummary;
26
+ }
27
+ namespace CreateLang {
28
+ type Args = Omit<PageClient.Create.NewLanguageArgs, 'brand' | 'route'> & {
29
+ template: Schema.Page;
30
+ eventBus: EventBus;
31
+ };
32
+ type Result = IPage.WithSummary;
33
+ }
34
+ namespace GetOverview {
35
+ type Args = {
36
+ region: string;
37
+ };
38
+ type Result = PageOverview[];
39
+ }
40
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,9 +1,10 @@
1
1
  import { PageClient, Pagination } from '@nascentdigital/funnel-cms';
2
2
  import { EventBus, PartialBy } from '@nascentdigital/funnel-core';
3
3
  import { EditorApiClient } from '../client';
4
- import { Page, IPage } from '../domain';
4
+ import { IPage, Page } from '../domain';
5
+ import { IPageRepository } from './IPageRepository';
5
6
  import { PageTarget } from './PageTarget';
6
- export declare class PageRepository {
7
+ export declare class PageRepository implements IPageRepository {
7
8
  readonly editorApi: EditorApiClient;
8
9
  constructor(editorApi: EditorApiClient);
9
10
  search(args: PageRepository.SearchArgs): Promise<Pagination.Paginated<IPage.Ref>>;
@@ -12,13 +13,8 @@ export declare class PageRepository {
12
13
  createLanguage(args: PageRepository.CreateLanguageArgs): Promise<Page.WithSummary>;
13
14
  save(page: Page): Promise<Page>;
14
15
  unpublish(page: Page): Promise<void>;
16
+ getOverview(args: IPageRepository.GetOverview.Args): Promise<IPageRepository.GetOverview.Result>;
15
17
  private serializePageUpdate;
16
- private serializeSectionUpdate;
17
- private serializeBlockUpdate;
18
- private serializeFieldsUpdate;
19
- private serializeObjectFieldUpdate;
20
- private serializeFieldUpdate;
21
- private serializeListUpdate;
22
18
  }
23
19
  export declare namespace PageRepository {
24
20
  type SearchArgs = Omit<PageClient.Search.Args, 'version' | 'brand' | 'type' | 'region'> & Pick<Page.ConstructorArgs, 'template' | 'region'>;
@@ -29,4 +25,5 @@ export declare namespace PageRepository {
29
25
  type CreateLanguageArgs = Omit<PageClient.Create.NewLanguageArgs, 'brand' | 'route'> & Pick<Page.ConstructorArgs, 'template'> & {
30
26
  eventBus: EventBus;
31
27
  };
28
+ type GetOverviewArgs = Omit<PageClient.GetOverview.Args, 'brand'>;
32
29
  }