@nascentdigital/funnel-editor-contentful 5.0.1 → 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 +11 -9
- package/dist/EditorPageRouter.d.ts +1 -0
- package/dist/EditorPageRouter.js +40 -0
- package/dist/EntryEditor.js +30 -29
- package/dist/EntrySidebar.js +1 -1
- package/dist/asset/index.d.ts +1 -0
- package/dist/{core/api → asset}/index.js +1 -3
- package/dist/{core → asset}/repository/AssetRepository.js +3 -3
- package/dist/asset/repository/index.d.ts +1 -0
- package/dist/asset/repository/index.js +17 -0
- package/dist/collection/controller/{LocalCollectionController.d.ts → ContentfulCollectionController.d.ts} +17 -11
- package/dist/collection/controller/ContentfulCollectionController.js +278 -0
- package/dist/collection/controller/ContentfulCollectionControllerContainer.d.ts +5 -0
- package/dist/collection/controller/ContentfulCollectionControllerContainer.js +28 -0
- package/dist/collection/controller/index.d.ts +3 -4
- package/dist/collection/controller/index.js +3 -4
- package/dist/collection/controller/useContentfulCollectionController.d.ts +2 -0
- package/dist/collection/controller/useContentfulCollectionController.js +8 -0
- package/dist/{core → collection}/domain/Collection.d.ts +11 -2
- package/dist/{core → collection}/domain/Collection.js +75 -0
- package/dist/{core → collection}/domain/index.d.ts +0 -1
- package/dist/{core → collection}/domain/index.js +0 -1
- package/dist/collection/index.d.ts +1 -0
- package/dist/collection/index.js +1 -0
- package/dist/collection/repository/CollectionRepository.d.ts +49 -0
- package/dist/collection/repository/CollectionRepository.js +210 -0
- package/dist/collection/repository/index.d.ts +1 -0
- package/dist/collection/repository/index.js +17 -0
- package/dist/collection/screens/CollectionEditor.js +23 -6
- package/dist/core/client/ContentfulClientContainer.d.ts +8 -0
- package/dist/core/client/ContentfulClientContainer.js +43 -0
- package/dist/core/client/ContentfulClientContext.d.ts +8 -0
- package/dist/core/client/ContentfulClientContext.js +8 -0
- package/dist/core/client/index.d.ts +3 -0
- package/dist/core/client/index.js +19 -0
- package/dist/core/client/useContentfulClient.d.ts +4 -0
- package/dist/core/client/useContentfulClient.js +24 -0
- package/dist/core/contentful/ContentfulAsset.d.ts +3 -3
- package/dist/core/contentful/ContentfulAsset.js +5 -4
- package/dist/core/contentful/ContentfulCollection.d.ts +1 -1
- package/dist/core/contentful/ContentfulRefs.js +9 -9
- package/dist/core/index.d.ts +1 -2
- package/dist/core/index.js +1 -2
- package/dist/core/repository/CollectionSerializer.d.ts +1 -1
- package/dist/core/repository/CollectionSerializer.js +1 -1
- package/dist/core/repository/LocalCollectionRepository.d.ts +2 -2
- package/dist/core/repository/LocalPageRepository.d.ts +1 -1
- package/dist/core/repository/PageSerializer.d.ts +1 -1
- package/dist/core/repository/PageSerializer.js +2 -1
- package/dist/core/repository/RemoteCollectionRepository.d.ts +2 -2
- package/dist/core/repository/index.d.ts +0 -1
- package/dist/core/repository/index.js +0 -1
- package/dist/explore/components/Header.d.ts +26 -0
- package/dist/explore/components/Header.js +31 -0
- package/dist/explore/components/index.d.ts +1 -0
- package/dist/explore/components/index.js +17 -0
- package/dist/explore/index.d.ts +1 -0
- package/dist/explore/index.js +17 -0
- package/dist/explore/screens/Dashboard.d.ts +1 -0
- package/dist/explore/screens/Dashboard.js +22 -0
- package/dist/explore/screens/PageExplorer.d.ts +1 -0
- package/dist/explore/screens/PageExplorer.js +9 -0
- package/dist/explore/screens/SiteExplorer.d.ts +1 -0
- package/dist/explore/screens/SiteExplorer.js +24 -0
- package/dist/explore/screens/index.d.ts +3 -0
- package/dist/explore/screens/index.js +19 -0
- package/dist/page/controller/{LocalPageController.d.ts → ContentfulPageController.d.ts} +15 -9
- package/dist/page/controller/ContentfulPageController.js +277 -0
- package/dist/page/controller/ContentfulPageControllerContainer.d.ts +5 -0
- package/dist/page/controller/ContentfulPageControllerContainer.js +28 -0
- package/dist/page/controller/index.d.ts +3 -3
- package/dist/page/controller/index.js +3 -3
- package/dist/page/controller/useContentfulPageController.d.ts +2 -0
- package/dist/page/controller/useContentfulPageController.js +8 -0
- package/dist/{core → page}/domain/Page.d.ts +22 -11
- package/dist/{core → page}/domain/Page.js +138 -0
- package/dist/page/domain/index.d.ts +1 -0
- package/dist/page/domain/index.js +17 -0
- package/dist/page/index.d.ts +2 -0
- package/dist/page/index.js +2 -0
- package/dist/page/repository/PageRepository.d.ts +45 -0
- package/dist/page/repository/PageRepository.js +224 -0
- package/dist/page/repository/index.d.ts +1 -0
- package/dist/page/repository/index.js +17 -0
- package/dist/page/screens/PageEditor.js +23 -7
- package/package.json +8 -4
- package/dist/collection/controller/LocalCollectionController.js +0 -200
- package/dist/collection/controller/LocalCollectionControllerContainer.d.ts +0 -8
- package/dist/collection/controller/LocalCollectionControllerContainer.js +0 -36
- package/dist/collection/controller/LocalCollectionControllerContext.d.ts +0 -7
- package/dist/collection/controller/LocalCollectionControllerContext.js +0 -6
- package/dist/collection/controller/useLocalCollectionController.d.ts +0 -2
- package/dist/collection/controller/useLocalCollectionController.js +0 -10
- package/dist/core/api/EditorApiClient.d.ts +0 -7
- package/dist/core/api/EditorApiClient.js +0 -29
- package/dist/core/api/EditorApiContainer.d.ts +0 -5
- package/dist/core/api/EditorApiContainer.js +0 -16
- package/dist/core/api/EditorApiContext.d.ts +0 -7
- package/dist/core/api/EditorApiContext.js +0 -6
- package/dist/core/api/index.d.ts +0 -3
- package/dist/core/api/useEditorApi.d.ts +0 -2
- package/dist/core/api/useEditorApi.js +0 -12
- package/dist/page/controller/LocalPageController.js +0 -190
- package/dist/page/controller/LocalPageControllerContainer.d.ts +0 -8
- package/dist/page/controller/LocalPageControllerContainer.js +0 -36
- package/dist/page/controller/LocalPageControllerContext.d.ts +0 -7
- package/dist/page/controller/LocalPageControllerContext.js +0 -6
- package/dist/page/controller/useLocalPageController.d.ts +0 -2
- package/dist/page/controller/useLocalPageController.js +0 -10
- /package/dist/{core → asset}/repository/AssetRepository.d.ts +0 -0
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EditorApiContainer = EditorApiContainer;
|
|
4
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
-
const react_apps_toolkit_1 = require("@contentful/react-apps-toolkit");
|
|
6
|
-
const react_1 = require("react");
|
|
7
|
-
const EditorApiClient_1 = require("./EditorApiClient");
|
|
8
|
-
const EditorApiContext_1 = require("./EditorApiContext");
|
|
9
|
-
// container
|
|
10
|
-
function EditorApiContainer({ children }) {
|
|
11
|
-
// bind context
|
|
12
|
-
const sdk = (0, react_apps_toolkit_1.useSDK)();
|
|
13
|
-
const context = (0, react_1.useMemo)(() => ({ client: new EditorApiClient_1.EditorApiClient(sdk) }), [sdk]);
|
|
14
|
-
// render
|
|
15
|
-
return ((0, jsx_runtime_1.jsx)(EditorApiContext_1.EditorApiContext.Provider, { value: context, children: children }));
|
|
16
|
-
}
|
package/dist/core/api/index.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useEditorApi = useEditorApi;
|
|
4
|
-
const react_1 = require("react");
|
|
5
|
-
const EditorApiContext_1 = require("./EditorApiContext");
|
|
6
|
-
// hook
|
|
7
|
-
function useEditorApi() {
|
|
8
|
-
// bind context
|
|
9
|
-
const { client } = (0, react_1.useContext)(EditorApiContext_1.EditorApiContext);
|
|
10
|
-
// return client
|
|
11
|
-
return client;
|
|
12
|
-
}
|
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LocalPageController = void 0;
|
|
4
|
-
const funnel_core_1 = require("@nascentdigital/funnel-core");
|
|
5
|
-
const components_1 = require("@nascentdigital/funnel-editor/components");
|
|
6
|
-
const rxjs_1 = require("rxjs");
|
|
7
|
-
// class
|
|
8
|
-
class LocalPageController {
|
|
9
|
-
constructor({ localRepository, remoteRepository }) {
|
|
10
|
-
// initialize instance variables
|
|
11
|
-
this.localRepository = localRepository;
|
|
12
|
-
this.remoteRepository = remoteRepository;
|
|
13
|
-
this._eventBus = new funnel_core_1.EventBus();
|
|
14
|
-
this._state = 'uninitialized';
|
|
15
|
-
}
|
|
16
|
-
get events$() {
|
|
17
|
-
return this._eventBus.events$.pipe((0, rxjs_1.filter)((e) => components_1.IPageController.Event.filter(e) || components_1.IPage.Event.filter(e)));
|
|
18
|
-
}
|
|
19
|
-
get saved$() {
|
|
20
|
-
return this._eventBus.events$.pipe((0, rxjs_1.filter)(components_1.IPageController.StateChangedEvent.filter), (0, rxjs_1.pairwise)(), (0, rxjs_1.filter)(([previous, current]) => previous.state === 'saving' && current.state === 'ready'));
|
|
21
|
-
}
|
|
22
|
-
get state() {
|
|
23
|
-
return this._state;
|
|
24
|
-
}
|
|
25
|
-
set state(value) {
|
|
26
|
-
// skip if unchanged
|
|
27
|
-
if (this._state === value) {
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
// or update
|
|
31
|
-
this._state = value;
|
|
32
|
-
// raise event
|
|
33
|
-
this._eventBus.publish(components_1.IPageController.StateChangedEvent.create({
|
|
34
|
-
state: value,
|
|
35
|
-
controller: this
|
|
36
|
-
}));
|
|
37
|
-
}
|
|
38
|
-
get ready() {
|
|
39
|
-
const { _state } = this;
|
|
40
|
-
return _state !== 'uninitialized' && _state !== 'initializing';
|
|
41
|
-
}
|
|
42
|
-
get languages() {
|
|
43
|
-
return [];
|
|
44
|
-
}
|
|
45
|
-
get pageSummary() {
|
|
46
|
-
return this._pageSummary;
|
|
47
|
-
}
|
|
48
|
-
set pageSummary(pageSummary) {
|
|
49
|
-
// skip if summary is the same
|
|
50
|
-
if (this._pageSummary === pageSummary) {
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
// update summary
|
|
54
|
-
this._pageSummary = pageSummary;
|
|
55
|
-
// raise event
|
|
56
|
-
this.raiseEvent('pageSummary.changed');
|
|
57
|
-
}
|
|
58
|
-
get page() {
|
|
59
|
-
return this._page;
|
|
60
|
-
}
|
|
61
|
-
set page(page) {
|
|
62
|
-
// skip if page is the same
|
|
63
|
-
if (this._page === page) {
|
|
64
|
-
console.debug('[CE][PageController] skipping page set, same instance');
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
// unbind previous page subscription (if any)
|
|
68
|
-
if (this._pageSubscription) {
|
|
69
|
-
this._pageSubscription.unsubscribe();
|
|
70
|
-
delete this._pageSubscription;
|
|
71
|
-
}
|
|
72
|
-
console.debug('[CE][PageController] new page instance set');
|
|
73
|
-
// update page
|
|
74
|
-
this._page = page;
|
|
75
|
-
// subscribe to page changes
|
|
76
|
-
if (page) {
|
|
77
|
-
// subscribe to page events
|
|
78
|
-
this._pageSubscription = page.events$
|
|
79
|
-
.pipe((0, rxjs_1.tap)(e => console.debug('[CE][PageController] page event', e)), (0, rxjs_1.filter)(e => {
|
|
80
|
-
// handle page events
|
|
81
|
-
if (components_1.IPage.Event.filter(e)) {
|
|
82
|
-
return e.type === 'modified';
|
|
83
|
-
}
|
|
84
|
-
// or item/object/list events
|
|
85
|
-
else if (components_1.Item.Event.filter(e)
|
|
86
|
-
|| components_1.Item.Event.filter(e)
|
|
87
|
-
|| funnel_core_1.ObjectField.Event.filter(e)
|
|
88
|
-
|| funnel_core_1.FieldList.Event.filter(e)) {
|
|
89
|
-
return e.type === 'changed';
|
|
90
|
-
}
|
|
91
|
-
// or field
|
|
92
|
-
else {
|
|
93
|
-
return funnel_core_1.Field.Event.filter(e) && (e.type === 'changed' || e.type === 'reset');
|
|
94
|
-
}
|
|
95
|
-
}), (0, rxjs_1.debounce)(e => {
|
|
96
|
-
return (0, rxjs_1.interval)(1000);
|
|
97
|
-
}))
|
|
98
|
-
.subscribe(async (e) => {
|
|
99
|
-
if (page.modified && this._page === page) {
|
|
100
|
-
await this.save(page);
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
// raise state change
|
|
105
|
-
this.raiseEvent('page.changed');
|
|
106
|
-
}
|
|
107
|
-
async sync(updatedOn) {
|
|
108
|
-
// get current page
|
|
109
|
-
const page = this._page;
|
|
110
|
-
// bail if no page
|
|
111
|
-
if (!page) {
|
|
112
|
-
console.warn('[CE][PageController] tried to sync with no page');
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
// skip if page already in sync
|
|
116
|
-
if (page.updatedOn >= updatedOn) {
|
|
117
|
-
console.debug('[CE][PageController] skipping sync, page already in sync');
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
// skip if saving already
|
|
121
|
-
if (this.state === 'saving') {
|
|
122
|
-
console.debug('[CE][PageController] skipping sync while saving');
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
// start fresh load
|
|
126
|
-
console.debug('[CE][PageController] syncing, page out of date...');
|
|
127
|
-
await this.load();
|
|
128
|
-
}
|
|
129
|
-
async load() {
|
|
130
|
-
// mark as loading (or initialing if loading for first time)
|
|
131
|
-
this.state = this._state === 'uninitialized'
|
|
132
|
-
? 'initializing'
|
|
133
|
-
: 'loading';
|
|
134
|
-
// try to load page
|
|
135
|
-
try {
|
|
136
|
-
// load page
|
|
137
|
-
const page = await this.localRepository.load({ eventBus: this._eventBus });
|
|
138
|
-
// get page references
|
|
139
|
-
if (page) {
|
|
140
|
-
const references = await this.remoteRepository.getReferences(page.id);
|
|
141
|
-
page.hydrateStores(references);
|
|
142
|
-
}
|
|
143
|
-
// set page
|
|
144
|
-
// TODO: create real page summary
|
|
145
|
-
this.pageSummary = new components_1.PageSummary({ pages: [{ state: 'draft' }] });
|
|
146
|
-
this.page = page;
|
|
147
|
-
// update state
|
|
148
|
-
this.state = 'ready';
|
|
149
|
-
}
|
|
150
|
-
// handle error
|
|
151
|
-
catch (e) {
|
|
152
|
-
console.error('[CE][PageController] failed to load page', e);
|
|
153
|
-
// set error state
|
|
154
|
-
this.state = 'error';
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
async create(target) {
|
|
158
|
-
throw new funnel_core_1.NotImplementedError();
|
|
159
|
-
}
|
|
160
|
-
async save(page) {
|
|
161
|
-
// try to save page
|
|
162
|
-
try {
|
|
163
|
-
console.debug('[CE][PageController/save] starting save');
|
|
164
|
-
// update state
|
|
165
|
-
this.state = 'saving';
|
|
166
|
-
// save page
|
|
167
|
-
const updatedPage = await this.localRepository.save(page);
|
|
168
|
-
this.page = updatedPage;
|
|
169
|
-
// update state
|
|
170
|
-
this.state = 'ready';
|
|
171
|
-
console.debug('[CE][PageController/save] save finished');
|
|
172
|
-
}
|
|
173
|
-
// handle error
|
|
174
|
-
catch (e) {
|
|
175
|
-
console.error('[CE][PageController/save] save failed', e);
|
|
176
|
-
// update state
|
|
177
|
-
this.state = 'error';
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
async reload() {
|
|
181
|
-
throw new funnel_core_1.NotImplementedError();
|
|
182
|
-
}
|
|
183
|
-
async unpublish() {
|
|
184
|
-
throw new funnel_core_1.NotImplementedError();
|
|
185
|
-
}
|
|
186
|
-
raiseEvent(type) {
|
|
187
|
-
this._eventBus.publish(components_1.IPageController.Event.create({ type, controller: this }));
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
exports.LocalPageController = LocalPageController;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { PropsWithChildren } from 'react';
|
|
2
|
-
import { RemotePageRepository } from '../../core';
|
|
3
|
-
export declare function LocalPageControllerContainer({ children, remoteRepository }: LocalPageControllerContainer.Props): import("react/jsx-runtime").JSX.Element;
|
|
4
|
-
export declare namespace LocalPageControllerContainer {
|
|
5
|
-
type Props = PropsWithChildren & {
|
|
6
|
-
remoteRepository: RemotePageRepository;
|
|
7
|
-
};
|
|
8
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LocalPageControllerContainer = LocalPageControllerContainer;
|
|
4
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
-
const react_apps_toolkit_1 = require("@contentful/react-apps-toolkit");
|
|
6
|
-
const react_1 = require("react");
|
|
7
|
-
const core_1 = require("../../core");
|
|
8
|
-
const LocalPageController_1 = require("./LocalPageController");
|
|
9
|
-
const LocalPageControllerContext_1 = require("./LocalPageControllerContext");
|
|
10
|
-
// container
|
|
11
|
-
function LocalPageControllerContainer({ children, remoteRepository }) {
|
|
12
|
-
// bind context
|
|
13
|
-
const sdk = (0, react_apps_toolkit_1.useSDK)();
|
|
14
|
-
const context = (0, react_1.useMemo)(() => {
|
|
15
|
-
console.debug('[CE][PageControllerContainer] creating page controller');
|
|
16
|
-
const localRepository = new core_1.LocalPageRepository(sdk);
|
|
17
|
-
// return context
|
|
18
|
-
return {
|
|
19
|
-
controller: new LocalPageController_1.LocalPageController({ localRepository, remoteRepository })
|
|
20
|
-
};
|
|
21
|
-
}, [sdk, remoteRepository]);
|
|
22
|
-
// listen to page changes
|
|
23
|
-
(0, react_1.useEffect)(() => {
|
|
24
|
-
// get controller
|
|
25
|
-
const { controller } = context;
|
|
26
|
-
// sync on change
|
|
27
|
-
sdk.entry.onSysChanged(sys => {
|
|
28
|
-
// get updatedOn in milliseconds
|
|
29
|
-
const updatedOn = new Date(sys.updatedAt).getTime();
|
|
30
|
-
// call sync
|
|
31
|
-
controller.sync(updatedOn).catch(console.error);
|
|
32
|
-
});
|
|
33
|
-
}, [sdk, context]);
|
|
34
|
-
// render
|
|
35
|
-
return ((0, jsx_runtime_1.jsx)(LocalPageControllerContext_1.LocalPageControllerContext.Provider, { value: context, children: children }));
|
|
36
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { LocalPageController } from './LocalPageController';
|
|
2
|
-
export declare const LocalPageControllerContext: import("react").Context<LocalPageControllerContext.Type>;
|
|
3
|
-
export declare namespace LocalPageControllerContext {
|
|
4
|
-
type Type = {
|
|
5
|
-
controller: LocalPageController;
|
|
6
|
-
};
|
|
7
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useLocalPageController = useLocalPageController;
|
|
4
|
-
const react_1 = require("react");
|
|
5
|
-
const LocalPageControllerContext_1 = require("./LocalPageControllerContext");
|
|
6
|
-
// hook
|
|
7
|
-
function useLocalPageController() {
|
|
8
|
-
// bind and return context
|
|
9
|
-
return (0, react_1.useContext)(LocalPageControllerContext_1.LocalPageControllerContext);
|
|
10
|
-
}
|
|
File without changes
|