@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.
- package/dist/EditorApp.js +1 -1
- package/dist/EditorRoutes.js +7 -5
- package/dist/changesets/screens/ChangeSetViewer.js +1 -1
- package/dist/changesets/screens/ChangeSetsExplorer.js +1 -2
- package/dist/collection/hooks/CollectionController.d.ts +5 -16
- package/dist/collection/hooks/CollectionController.js +18 -37
- package/dist/collection/hooks/ICollectionController.d.ts +24 -0
- package/dist/collection/hooks/ICollectionController.js +20 -0
- package/dist/collection/hooks/index.d.ts +1 -0
- package/dist/collection/hooks/index.js +1 -0
- package/dist/collection/hooks/useCollectionController.d.ts +3 -3
- package/dist/collection/screens/CollectionEditor.js +2 -2
- package/dist/components.d.ts +15 -3
- package/dist/components.js +18 -3
- package/dist/core/components/feedback/dialog/MinimalDialogLayout.js +1 -1
- package/dist/core/components/fields/BooleanField.d.ts +2 -1
- package/dist/core/components/fields/BooleanField.js +2 -2
- package/dist/core/components/fields/DateField.d.ts +2 -1
- package/dist/core/components/fields/DateField.js +2 -2
- package/dist/core/components/fields/DynamicPagesEditor.d.ts +2 -1
- package/dist/core/components/fields/DynamicPagesEditor.js +1 -1
- package/dist/core/components/fields/EnumField.d.ts +2 -1
- package/dist/core/components/fields/EnumField.js +2 -2
- package/dist/core/components/fields/FieldCard.d.ts +1 -0
- package/dist/core/components/fields/FieldCard.js +8 -1
- package/dist/core/components/fields/FieldEditor.d.ts +2 -1
- package/dist/core/components/fields/FieldEditor.js +11 -11
- package/dist/core/components/fields/FieldLayout.d.ts +2 -1
- package/dist/core/components/fields/FieldLayout.js +3 -3
- package/dist/core/components/fields/ListEditor.d.ts +2 -1
- package/dist/core/components/fields/ListEditor.js +5 -6
- package/dist/core/components/fields/OptInField.d.ts +2 -1
- package/dist/core/components/fields/OptInField.js +43 -3
- package/dist/core/components/fields/RichTextEditor.js +1 -1
- package/dist/core/components/fields/RichTextField.d.ts +2 -1
- package/dist/core/components/fields/RichTextField.js +3 -5
- package/dist/core/components/fields/TextField.d.ts +2 -0
- package/dist/core/components/fields/TextField.js +2 -2
- package/dist/core/components/fields/TimestampField.d.ts +2 -1
- package/dist/core/components/fields/TimestampField.js +3 -3
- package/dist/core/components/fields/asset/AssetEditor.d.ts +1 -2
- package/dist/core/components/fields/asset/AssetEditor.js +29 -49
- package/dist/core/components/fields/asset/AssetPicker.js +6 -6
- package/dist/core/components/fields/asset/AssetUploader.d.ts +1 -2
- package/dist/core/components/fields/asset/AssetUploader.js +39 -35
- package/dist/core/components/fields/asset/preview/VideoPreview.js +16 -11
- package/dist/core/components/fields/asset/useAssetFields.d.ts +2 -17
- package/dist/core/components/fields/asset/useAssetFields.js +0 -21
- package/dist/core/components/fields/collection/CollectionEditor.d.ts +2 -1
- package/dist/core/components/fields/collection/CollectionEditor.js +18 -4
- package/dist/core/components/fields/collection/CollectionPicker.d.ts +2 -2
- package/dist/core/components/fields/collection/CollectionPicker.js +3 -4
- package/dist/core/components/fields/dynamicPages/PagePriorityDialog.js +1 -1
- package/dist/core/components/fields/embed/EmbeddedVideoEditor.d.ts +2 -2
- package/dist/core/components/fields/embed/EmbeddedVideoEditor.js +50 -31
- package/dist/core/components/fields/factories/AssetFactory.d.ts +3 -3
- package/dist/core/components/fields/factories/AssetFactory.js +18 -13
- package/dist/core/components/fields/factories/CollectionFactory.d.ts +3 -3
- package/dist/core/components/fields/factories/CollectionFactory.js +20 -13
- package/dist/core/components/fields/factories/EmbeddedVideoFactory.d.ts +3 -3
- package/dist/core/components/fields/factories/EmbeddedVideoFactory.js +17 -8
- package/dist/core/components/fields/factories/FieldValueFactory.d.ts +7 -5
- package/dist/core/components/fields/factories/FieldValueFactory.js +57 -13
- package/dist/core/components/fields/factories/LinkFactory.d.ts +3 -3
- package/dist/core/components/fields/factories/LinkFactory.js +17 -8
- package/dist/core/components/fields/factories/MediaFactory.d.ts +13 -0
- package/dist/core/components/fields/factories/MediaFactory.js +212 -0
- package/dist/core/components/fields/factories/ObjectFactory.d.ts +3 -2
- package/dist/core/components/fields/factories/ObjectFactory.js +16 -2
- package/dist/core/components/fields/factories/TextFactory.d.ts +3 -3
- package/dist/core/components/fields/factories/TextFactory.js +16 -10
- package/dist/core/components/fields/link/LinkEditor.d.ts +2 -2
- package/dist/core/components/fields/link/LinkEditor.js +18 -6
- package/dist/core/components/fields/list/CreateFieldButton.js +1 -1
- package/dist/core/components/fields/media/MediaCard.d.ts +7 -0
- package/dist/core/components/fields/media/MediaCard.js +92 -0
- package/dist/core/components/fields/media/MediaEditor.d.ts +36 -0
- package/dist/core/components/fields/media/MediaEditor.js +264 -0
- package/dist/core/components/fields/media/index.d.ts +2 -0
- package/dist/core/components/fields/media/index.js +18 -0
- package/dist/core/components/fields/object/ObjectEditor.d.ts +2 -1
- package/dist/core/components/fields/object/ObjectEditor.js +16 -2
- package/dist/core/components/fields/page/PagePicker.js +1 -1
- package/dist/core/components/interaction/Combobox.js +1 -1
- package/dist/core/components/interaction/MultiSelectControls.js +2 -5
- package/dist/core/components/interaction/Popup.d.ts +11 -7
- package/dist/core/components/interaction/Popup.js +8 -6
- package/dist/core/components/interaction/QuickEditor.js +1 -1
- package/dist/core/components/interaction/QuickInput.d.ts +2 -4
- package/dist/core/components/interaction/QuickInput.js +6 -2
- package/dist/core/components/interaction/QuickPicker.js +1 -1
- package/dist/core/components/interaction/SideSheet.js +1 -1
- package/dist/core/components/interaction/centersheet/CenterSheet.js +7 -1
- package/dist/core/components/interaction/centersheet/CenterSheetContainer.js +3 -1
- package/dist/core/components/interaction/menu/Menu.d.ts +8 -19
- package/dist/core/components/interaction/menu/Menu.js +26 -60
- package/dist/core/components/interaction/menu/useMenuController.d.ts +4 -2
- package/dist/core/components/interaction/menu/useMenuController.js +4 -1
- package/dist/core/components/transitions/FadeIn.js +1 -1
- package/dist/core/components/visuals/Icon.d.ts +1 -1
- package/dist/core/components/visuals/Icon.js +3 -0
- package/dist/core/containers/AssetRepositoryContainer.d.ts +2 -0
- package/dist/core/containers/AssetRepositoryContainer.js +18 -0
- package/dist/core/containers/CollectionRepositoryContainer.d.ts +2 -0
- package/dist/core/containers/CollectionRepositoryContainer.js +18 -0
- package/dist/core/containers/PageRepositoryContainer.d.ts +2 -0
- package/dist/core/containers/PageRepositoryContainer.js +18 -0
- package/dist/core/containers/index.d.ts +3 -0
- package/dist/core/containers/index.js +19 -0
- package/dist/core/domain/Block.js +2 -1
- package/dist/core/domain/BlockConfiguration.d.ts +4 -1
- package/dist/core/domain/BlockConfiguration.js +59 -3
- package/dist/core/domain/Collection.d.ts +7 -25
- package/dist/core/domain/Collection.js +2 -16
- package/dist/core/domain/CollectionBrowser.d.ts +3 -2
- package/dist/core/domain/CollectionBrowser.js +3 -3
- package/dist/core/domain/CollectionFieldProxy.d.ts +12 -8
- package/dist/core/domain/CollectionFieldProxy.js +15 -9
- package/dist/core/domain/CollectionGroup.d.ts +0 -5
- package/dist/core/domain/CollectionGroup.js +0 -7
- package/dist/core/domain/CollectionSummary.d.ts +2 -2
- package/dist/core/domain/Collections.d.ts +3 -3
- package/dist/core/domain/Collections.js +4 -6
- package/dist/core/domain/ICollection.d.ts +72 -0
- package/dist/core/domain/ICollection.js +20 -0
- package/dist/core/domain/IPage.d.ts +16 -1
- package/dist/core/domain/Page.js +2 -2
- package/dist/core/domain/Pages.js +4 -6
- package/dist/core/domain/SectionBlock.js +2 -1
- package/dist/core/domain/Site.d.ts +4 -4
- package/dist/core/domain/Site.js +3 -5
- package/dist/core/domain/index.d.ts +1 -1
- package/dist/core/domain/index.js +1 -1
- package/dist/core/hooks/index.d.ts +4 -3
- package/dist/core/hooks/index.js +4 -3
- package/dist/core/hooks/useAssetRepository.d.ts +3 -0
- package/dist/core/hooks/useAssetRepository.js +11 -0
- package/dist/core/hooks/useCollection.d.ts +4 -4
- package/dist/core/hooks/useCollectionRepository.d.ts +3 -2
- package/dist/core/hooks/useCollectionRepository.js +4 -4
- package/dist/core/hooks/useCollections.js +4 -0
- package/dist/core/hooks/usePageRepository.d.ts +3 -2
- package/dist/core/hooks/usePageRepository.js +4 -4
- package/dist/core/hooks/useSite.js +4 -0
- package/dist/core/hooks/useTempFields.d.ts +2 -3
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.js +1 -0
- package/dist/core/repository/AssetRepository.d.ts +10 -0
- package/dist/core/repository/AssetRepository.js +22 -0
- package/dist/core/repository/CollectionRepository.d.ts +22 -21
- package/dist/core/repository/CollectionRepository.js +23 -161
- package/dist/core/repository/CollectionSerializer.d.ts +4 -1
- package/dist/core/repository/CollectionSerializer.js +3 -3
- package/dist/core/repository/IAssetRepository.d.ts +25 -0
- package/dist/core/repository/ICollectionRepository.d.ts +61 -0
- package/dist/core/repository/ICollectionRepository.js +2 -0
- package/dist/core/repository/IPageRepository.d.ts +40 -0
- package/dist/core/repository/IPageRepository.js +2 -0
- package/dist/core/repository/PageRepository.d.ts +5 -8
- package/dist/core/repository/PageRepository.js +7 -280
- package/dist/core/repository/SerializeCollectionUpdate.d.ts +8 -0
- package/dist/core/repository/SerializeCollectionUpdate.js +168 -0
- package/dist/core/repository/SerializePageUpdate.d.ts +10 -0
- package/dist/core/repository/SerializePageUpdate.js +292 -0
- package/dist/core/repository/index.d.ts +4 -0
- package/dist/core/repository/index.js +4 -0
- package/dist/core/splash/SplashContainer.d.ts +4 -2
- package/dist/core/splash/SplashContainer.js +3 -3
- package/dist/dashboard/screens/Dashboard.js +1 -1
- package/dist/devtools/screens/Devtools.js +1 -1
- package/dist/explore/components/CreatePageDialog.d.ts +2 -2
- package/dist/explore/screens/CollectionExplorer.js +1 -1
- package/dist/explore/screens/CollectionsExplorer.js +1 -1
- package/dist/explore/screens/PageExplorer.js +1 -1
- package/dist/explore/screens/SiteExplorer.js +1 -1
- package/dist/page/components/BlockEditor.js +1 -1
- package/dist/page/components/SettingsEditor.js +0 -7
- package/dist/page/components/config/BlockConfigButton.js +71 -14
- package/dist/page/screens/PageEditor.js +1 -1
- package/dist/styles/index.css +24 -20
- package/dist/styles/tailwind.js +1 -0
- package/dist/users/screens/UserExplorer.js +1 -1
- package/package.json +2 -2
- package/dist/core/domain/TranslateSchema.d.ts +0 -7
- /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
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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):
|
|
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
|
-
|
|
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,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
|
+
}
|
|
@@ -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 {
|
|
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
|
}
|