@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.
Files changed (110) hide show
  1. package/dist/EditorApp.js +11 -9
  2. package/dist/EditorPageRouter.d.ts +1 -0
  3. package/dist/EditorPageRouter.js +40 -0
  4. package/dist/EntryEditor.js +30 -29
  5. package/dist/EntrySidebar.js +1 -1
  6. package/dist/asset/index.d.ts +1 -0
  7. package/dist/{core/api → asset}/index.js +1 -3
  8. package/dist/{core → asset}/repository/AssetRepository.js +3 -3
  9. package/dist/asset/repository/index.d.ts +1 -0
  10. package/dist/asset/repository/index.js +17 -0
  11. package/dist/collection/controller/{LocalCollectionController.d.ts → ContentfulCollectionController.d.ts} +17 -11
  12. package/dist/collection/controller/ContentfulCollectionController.js +278 -0
  13. package/dist/collection/controller/ContentfulCollectionControllerContainer.d.ts +5 -0
  14. package/dist/collection/controller/ContentfulCollectionControllerContainer.js +28 -0
  15. package/dist/collection/controller/index.d.ts +3 -4
  16. package/dist/collection/controller/index.js +3 -4
  17. package/dist/collection/controller/useContentfulCollectionController.d.ts +2 -0
  18. package/dist/collection/controller/useContentfulCollectionController.js +8 -0
  19. package/dist/{core → collection}/domain/Collection.d.ts +11 -2
  20. package/dist/{core → collection}/domain/Collection.js +75 -0
  21. package/dist/{core → collection}/domain/index.d.ts +0 -1
  22. package/dist/{core → collection}/domain/index.js +0 -1
  23. package/dist/collection/index.d.ts +1 -0
  24. package/dist/collection/index.js +1 -0
  25. package/dist/collection/repository/CollectionRepository.d.ts +49 -0
  26. package/dist/collection/repository/CollectionRepository.js +210 -0
  27. package/dist/collection/repository/index.d.ts +1 -0
  28. package/dist/collection/repository/index.js +17 -0
  29. package/dist/collection/screens/CollectionEditor.js +23 -6
  30. package/dist/core/client/ContentfulClientContainer.d.ts +8 -0
  31. package/dist/core/client/ContentfulClientContainer.js +43 -0
  32. package/dist/core/client/ContentfulClientContext.d.ts +8 -0
  33. package/dist/core/client/ContentfulClientContext.js +8 -0
  34. package/dist/core/client/index.d.ts +3 -0
  35. package/dist/core/client/index.js +19 -0
  36. package/dist/core/client/useContentfulClient.d.ts +4 -0
  37. package/dist/core/client/useContentfulClient.js +24 -0
  38. package/dist/core/contentful/ContentfulAsset.d.ts +3 -3
  39. package/dist/core/contentful/ContentfulAsset.js +5 -4
  40. package/dist/core/contentful/ContentfulCollection.d.ts +1 -1
  41. package/dist/core/contentful/ContentfulRefs.js +9 -9
  42. package/dist/core/index.d.ts +1 -2
  43. package/dist/core/index.js +1 -2
  44. package/dist/core/repository/CollectionSerializer.d.ts +1 -1
  45. package/dist/core/repository/CollectionSerializer.js +1 -1
  46. package/dist/core/repository/LocalCollectionRepository.d.ts +2 -2
  47. package/dist/core/repository/LocalPageRepository.d.ts +1 -1
  48. package/dist/core/repository/PageSerializer.d.ts +1 -1
  49. package/dist/core/repository/PageSerializer.js +2 -1
  50. package/dist/core/repository/RemoteCollectionRepository.d.ts +2 -2
  51. package/dist/core/repository/index.d.ts +0 -1
  52. package/dist/core/repository/index.js +0 -1
  53. package/dist/explore/components/Header.d.ts +26 -0
  54. package/dist/explore/components/Header.js +31 -0
  55. package/dist/explore/components/index.d.ts +1 -0
  56. package/dist/explore/components/index.js +17 -0
  57. package/dist/explore/index.d.ts +1 -0
  58. package/dist/explore/index.js +17 -0
  59. package/dist/explore/screens/Dashboard.d.ts +1 -0
  60. package/dist/explore/screens/Dashboard.js +22 -0
  61. package/dist/explore/screens/PageExplorer.d.ts +1 -0
  62. package/dist/explore/screens/PageExplorer.js +9 -0
  63. package/dist/explore/screens/SiteExplorer.d.ts +1 -0
  64. package/dist/explore/screens/SiteExplorer.js +24 -0
  65. package/dist/explore/screens/index.d.ts +3 -0
  66. package/dist/explore/screens/index.js +19 -0
  67. package/dist/page/controller/{LocalPageController.d.ts → ContentfulPageController.d.ts} +15 -9
  68. package/dist/page/controller/ContentfulPageController.js +277 -0
  69. package/dist/page/controller/ContentfulPageControllerContainer.d.ts +5 -0
  70. package/dist/page/controller/ContentfulPageControllerContainer.js +28 -0
  71. package/dist/page/controller/index.d.ts +3 -3
  72. package/dist/page/controller/index.js +3 -3
  73. package/dist/page/controller/useContentfulPageController.d.ts +2 -0
  74. package/dist/page/controller/useContentfulPageController.js +8 -0
  75. package/dist/{core → page}/domain/Page.d.ts +22 -11
  76. package/dist/{core → page}/domain/Page.js +138 -0
  77. package/dist/page/domain/index.d.ts +1 -0
  78. package/dist/page/domain/index.js +17 -0
  79. package/dist/page/index.d.ts +2 -0
  80. package/dist/page/index.js +2 -0
  81. package/dist/page/repository/PageRepository.d.ts +45 -0
  82. package/dist/page/repository/PageRepository.js +224 -0
  83. package/dist/page/repository/index.d.ts +1 -0
  84. package/dist/page/repository/index.js +17 -0
  85. package/dist/page/screens/PageEditor.js +23 -7
  86. package/package.json +8 -4
  87. package/dist/collection/controller/LocalCollectionController.js +0 -200
  88. package/dist/collection/controller/LocalCollectionControllerContainer.d.ts +0 -8
  89. package/dist/collection/controller/LocalCollectionControllerContainer.js +0 -36
  90. package/dist/collection/controller/LocalCollectionControllerContext.d.ts +0 -7
  91. package/dist/collection/controller/LocalCollectionControllerContext.js +0 -6
  92. package/dist/collection/controller/useLocalCollectionController.d.ts +0 -2
  93. package/dist/collection/controller/useLocalCollectionController.js +0 -10
  94. package/dist/core/api/EditorApiClient.d.ts +0 -7
  95. package/dist/core/api/EditorApiClient.js +0 -29
  96. package/dist/core/api/EditorApiContainer.d.ts +0 -5
  97. package/dist/core/api/EditorApiContainer.js +0 -16
  98. package/dist/core/api/EditorApiContext.d.ts +0 -7
  99. package/dist/core/api/EditorApiContext.js +0 -6
  100. package/dist/core/api/index.d.ts +0 -3
  101. package/dist/core/api/useEditorApi.d.ts +0 -2
  102. package/dist/core/api/useEditorApi.js +0 -12
  103. package/dist/page/controller/LocalPageController.js +0 -190
  104. package/dist/page/controller/LocalPageControllerContainer.d.ts +0 -8
  105. package/dist/page/controller/LocalPageControllerContainer.js +0 -36
  106. package/dist/page/controller/LocalPageControllerContext.d.ts +0 -7
  107. package/dist/page/controller/LocalPageControllerContext.js +0 -6
  108. package/dist/page/controller/useLocalPageController.d.ts +0 -2
  109. package/dist/page/controller/useLocalPageController.js +0 -10
  110. /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
- }
@@ -1,7 +0,0 @@
1
- import { EditorApiClient } from './EditorApiClient';
2
- export declare const EditorApiContext: import("react").Context<EditorApiContext.Type>;
3
- export declare namespace EditorApiContext {
4
- type Type = {
5
- client: EditorApiClient;
6
- };
7
- }
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EditorApiContext = void 0;
4
- const react_1 = require("react");
5
- // context
6
- exports.EditorApiContext = (0, react_1.createContext)({});
@@ -1,3 +0,0 @@
1
- export * from './EditorApiClient';
2
- export * from './EditorApiContainer';
3
- export * from './useEditorApi';
@@ -1,2 +0,0 @@
1
- import { EditorApiClient } from './EditorApiClient';
2
- export declare function useEditorApi(): EditorApiClient;
@@ -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,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LocalPageControllerContext = void 0;
4
- const react_1 = require("react");
5
- // context
6
- exports.LocalPageControllerContext = (0, react_1.createContext)({});
@@ -1,2 +0,0 @@
1
- import { LocalPageControllerContext } from './LocalPageControllerContext';
2
- export declare function useLocalPageController(): LocalPageControllerContext.Type;
@@ -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
- }