@nascentdigital/funnel-editor 4.6.7 → 5.0.1
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 +14 -3
- package/dist/components.js +17 -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 +2 -2
- 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.js +12 -44
- package/dist/core/components/fields/asset/AssetPicker.js +6 -6
- package/dist/core/components/fields/asset/AssetUploader.js +23 -31
- 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.js +1 -1
- 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.js +34 -27
- package/dist/core/components/fields/factories/FieldValueFactory.js +11 -4
- package/dist/core/components/fields/factories/MediaFactory.d.ts +13 -0
- package/dist/core/components/fields/factories/MediaFactory.js +256 -0
- 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 +37 -0
- package/dist/core/components/fields/media/MediaEditor.js +235 -0
- package/dist/core/components/fields/media/MediaPicker.d.ts +15 -0
- package/dist/core/components/fields/media/MediaPicker.js +251 -0
- package/dist/core/components/fields/media/index.d.ts +3 -0
- package/dist/core/components/fields/media/index.js +19 -0
- package/dist/core/components/fields/object/ObjectEditor.js +1 -1
- 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/QuickEditor.js +1 -1
- 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/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 +14 -8
- 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 -4
- package/dist/core/domain/ICollection.d.ts +71 -0
- package/dist/core/domain/ICollection.js +20 -0
- package/dist/core/domain/IPage.d.ts +14 -0
- 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 -3
- 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/usePageRepository.d.ts +3 -2
- package/dist/core/hooks/usePageRepository.js +4 -4
- 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 +21 -20
- 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 +62 -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 +11 -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/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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BrandConfig, EventBus, Language, RegionsConfig, Schema } from '@nascentdigital/funnel-core';
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
3
|
import { AppState } from '../app';
|
|
4
|
-
import {
|
|
4
|
+
import { IPageRepository } from '../repository';
|
|
5
5
|
import { PageOverview } from './PageOverview';
|
|
6
6
|
import { Pages } from './Pages';
|
|
7
7
|
export declare class Site {
|
|
@@ -10,7 +10,7 @@ export declare class Site {
|
|
|
10
10
|
readonly brand: BrandConfig.WithId;
|
|
11
11
|
readonly region: RegionsConfig.RegionConfig.WithId;
|
|
12
12
|
readonly appState: AppState;
|
|
13
|
-
readonly
|
|
13
|
+
readonly repository: IPageRepository;
|
|
14
14
|
private readonly _eventBus;
|
|
15
15
|
private _state;
|
|
16
16
|
private _overviews;
|
|
@@ -18,7 +18,7 @@ export declare class Site {
|
|
|
18
18
|
private readonly _pagesToSync;
|
|
19
19
|
private _syncPromise?;
|
|
20
20
|
private readonly _subscription;
|
|
21
|
-
constructor({ appState,
|
|
21
|
+
constructor({ appState, repository, region }: Site.ConstructorArgs);
|
|
22
22
|
get events$(): Observable<Site.Event>;
|
|
23
23
|
get state(): Site.State;
|
|
24
24
|
private set state(value);
|
|
@@ -38,7 +38,7 @@ export declare namespace Site {
|
|
|
38
38
|
type State = 'uninitialized' | 'initializing' | 'ready' | 'syncing' | 'error';
|
|
39
39
|
type ConstructorArgs = {
|
|
40
40
|
appState: AppState;
|
|
41
|
-
|
|
41
|
+
repository: IPageRepository;
|
|
42
42
|
region: string;
|
|
43
43
|
};
|
|
44
44
|
interface Event extends EventBus.Event<'Site', Event.Type> {
|
package/dist/core/domain/Site.js
CHANGED
|
@@ -5,7 +5,7 @@ const funnel_core_1 = require("@nascentdigital/funnel-core");
|
|
|
5
5
|
const Pages_1 = require("./Pages");
|
|
6
6
|
// model
|
|
7
7
|
class Site {
|
|
8
|
-
constructor({ appState,
|
|
8
|
+
constructor({ appState, repository, region }) {
|
|
9
9
|
// initialize instance variables
|
|
10
10
|
const site = funnel_core_1.Schema.Site.current();
|
|
11
11
|
const brand = funnel_core_1.AppConfig.brand();
|
|
@@ -15,7 +15,7 @@ class Site {
|
|
|
15
15
|
this.brand = Object.assign(Object.assign({}, brandConfig), { id: brand });
|
|
16
16
|
this.region = Object.assign(Object.assign({}, brandConfig.regionalization.regions[region]), { id: region });
|
|
17
17
|
this.appState = appState;
|
|
18
|
-
this.
|
|
18
|
+
this.repository = repository;
|
|
19
19
|
this._eventBus = new funnel_core_1.EventBus();
|
|
20
20
|
this._state = 'uninitialized';
|
|
21
21
|
this._overviews = [];
|
|
@@ -118,7 +118,7 @@ class Site {
|
|
|
118
118
|
? 'initializing'
|
|
119
119
|
: 'syncing';
|
|
120
120
|
// load overview
|
|
121
|
-
this._overviews = await this.
|
|
121
|
+
this._overviews = await this.repository.getOverview({ region: this.region.id });
|
|
122
122
|
// mark as ready
|
|
123
123
|
this.state = 'ready';
|
|
124
124
|
}
|
|
@@ -9,6 +9,7 @@ export * from './CollectionGroup';
|
|
|
9
9
|
export * from './CollectionSummary';
|
|
10
10
|
export * from './Collections';
|
|
11
11
|
export * from './IAssetStore';
|
|
12
|
+
export * from './ICollection';
|
|
12
13
|
export * from './ICollectionStore';
|
|
13
14
|
export * from './IPage';
|
|
14
15
|
export * from './IPageRefStore';
|
|
@@ -24,6 +25,5 @@ export * from './Pages';
|
|
|
24
25
|
export * from './Section';
|
|
25
26
|
export * from './SectionBlock';
|
|
26
27
|
export * from './Site';
|
|
27
|
-
export * from './TranslateSchema';
|
|
28
28
|
export * from './UserBrowser';
|
|
29
29
|
export * from './UserValidation';
|
|
@@ -25,6 +25,7 @@ __exportStar(require("./CollectionGroup"), exports);
|
|
|
25
25
|
__exportStar(require("./CollectionSummary"), exports);
|
|
26
26
|
__exportStar(require("./Collections"), exports);
|
|
27
27
|
__exportStar(require("./IAssetStore"), exports);
|
|
28
|
+
__exportStar(require("./ICollection"), exports);
|
|
28
29
|
__exportStar(require("./ICollectionStore"), exports);
|
|
29
30
|
__exportStar(require("./IPage"), exports);
|
|
30
31
|
__exportStar(require("./IPageRefStore"), exports);
|
|
@@ -40,6 +41,5 @@ __exportStar(require("./Pages"), exports);
|
|
|
40
41
|
__exportStar(require("./Section"), exports);
|
|
41
42
|
__exportStar(require("./SectionBlock"), exports);
|
|
42
43
|
__exportStar(require("./Site"), exports);
|
|
43
|
-
__exportStar(require("./TranslateSchema"), exports);
|
|
44
44
|
__exportStar(require("./UserBrowser"), exports);
|
|
45
45
|
__exportStar(require("./UserValidation"), exports);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export * from './useAssetRepository';
|
|
1
2
|
export * from './useAssetStore';
|
|
2
3
|
export * from './useBlock';
|
|
3
4
|
export * from './useBlockConfiguration';
|
|
@@ -5,19 +6,19 @@ export * from './useChangeSet';
|
|
|
5
6
|
export * from './useChangeSetBrowser';
|
|
6
7
|
export * from './useCollection';
|
|
7
8
|
export * from './useCollectionBrowser';
|
|
9
|
+
export * from './useCollectionData';
|
|
8
10
|
export * from './useCollectionFieldProxy';
|
|
9
11
|
export * from './useCollectionRepository';
|
|
10
|
-
export * from './useCollections';
|
|
11
12
|
export * from './useCollectionStore';
|
|
12
|
-
export * from './
|
|
13
|
+
export * from './useCollections';
|
|
13
14
|
export * from './useField';
|
|
14
15
|
export * from './useHotkeyScopeLock';
|
|
15
16
|
export * from './usePage';
|
|
16
17
|
export * from './usePageCollection';
|
|
17
18
|
export * from './usePageRef';
|
|
19
|
+
export * from './usePageRefStore';
|
|
18
20
|
export * from './usePageRepository';
|
|
19
21
|
export * from './usePages';
|
|
20
|
-
export * from './usePageRefStore';
|
|
21
22
|
export * from './useSite';
|
|
22
23
|
export * from './useTempFields';
|
|
23
24
|
export * from './useUserBrowser';
|
package/dist/core/hooks/index.js
CHANGED
|
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./useAssetRepository"), exports);
|
|
17
18
|
__exportStar(require("./useAssetStore"), exports);
|
|
18
19
|
__exportStar(require("./useBlock"), exports);
|
|
19
20
|
__exportStar(require("./useBlockConfiguration"), exports);
|
|
@@ -21,19 +22,19 @@ __exportStar(require("./useChangeSet"), exports);
|
|
|
21
22
|
__exportStar(require("./useChangeSetBrowser"), exports);
|
|
22
23
|
__exportStar(require("./useCollection"), exports);
|
|
23
24
|
__exportStar(require("./useCollectionBrowser"), exports);
|
|
25
|
+
__exportStar(require("./useCollectionData"), exports);
|
|
24
26
|
__exportStar(require("./useCollectionFieldProxy"), exports);
|
|
25
27
|
__exportStar(require("./useCollectionRepository"), exports);
|
|
26
|
-
__exportStar(require("./useCollections"), exports);
|
|
27
28
|
__exportStar(require("./useCollectionStore"), exports);
|
|
28
|
-
__exportStar(require("./
|
|
29
|
+
__exportStar(require("./useCollections"), exports);
|
|
29
30
|
__exportStar(require("./useField"), exports);
|
|
30
31
|
__exportStar(require("./useHotkeyScopeLock"), exports);
|
|
31
32
|
__exportStar(require("./usePage"), exports);
|
|
32
33
|
__exportStar(require("./usePageCollection"), exports);
|
|
33
34
|
__exportStar(require("./usePageRef"), exports);
|
|
35
|
+
__exportStar(require("./usePageRefStore"), exports);
|
|
34
36
|
__exportStar(require("./usePageRepository"), exports);
|
|
35
37
|
__exportStar(require("./usePages"), exports);
|
|
36
|
-
__exportStar(require("./usePageRefStore"), exports);
|
|
37
38
|
__exportStar(require("./useSite"), exports);
|
|
38
39
|
__exportStar(require("./useTempFields"), exports);
|
|
39
40
|
__exportStar(require("./useUserBrowser"), exports);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AssetRepositoryContext = void 0;
|
|
4
|
+
exports.useAssetRepository = useAssetRepository;
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
// hook
|
|
7
|
+
function useAssetRepository() {
|
|
8
|
+
return (0, react_1.useContext)(exports.AssetRepositoryContext);
|
|
9
|
+
}
|
|
10
|
+
// context
|
|
11
|
+
exports.AssetRepositoryContext = (0, react_1.createContext)({});
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function usePossibleCollection():
|
|
3
|
-
export declare function useCollection():
|
|
1
|
+
import { ICollection } from '../domain';
|
|
2
|
+
export declare function usePossibleCollection(): ICollection | undefined;
|
|
3
|
+
export declare function useCollection(): ICollection;
|
|
4
4
|
export declare const CollectionContext: import("react").Context<CollectionContext.Data>;
|
|
5
5
|
export declare namespace CollectionContext {
|
|
6
6
|
type Data = {
|
|
7
|
-
collection?:
|
|
7
|
+
collection?: ICollection;
|
|
8
8
|
};
|
|
9
9
|
}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function useCollectionRepository():
|
|
1
|
+
import { ICollectionRepository } from '../repository';
|
|
2
|
+
export declare function useCollectionRepository(): ICollectionRepository;
|
|
3
|
+
export declare const CollectionRepositoryContext: import("react").Context<ICollectionRepository>;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CollectionRepositoryContext = void 0;
|
|
3
4
|
exports.useCollectionRepository = useCollectionRepository;
|
|
4
5
|
const react_1 = require("react");
|
|
5
|
-
const client_1 = require("../client");
|
|
6
|
-
const repository_1 = require("../repository");
|
|
7
6
|
// hook
|
|
8
7
|
function useCollectionRepository() {
|
|
9
|
-
|
|
10
|
-
return (0, react_1.useMemo)(() => new repository_1.CollectionRepository(editorApi), [editorApi]);
|
|
8
|
+
return (0, react_1.useContext)(exports.CollectionRepositoryContext);
|
|
11
9
|
}
|
|
10
|
+
// context
|
|
11
|
+
exports.CollectionRepositoryContext = (0, react_1.createContext)({});
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function usePageRepository():
|
|
1
|
+
import { IPageRepository } from '../repository';
|
|
2
|
+
export declare function usePageRepository(): IPageRepository;
|
|
3
|
+
export declare const PageRepositoryContext: import("react").Context<IPageRepository>;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PageRepositoryContext = void 0;
|
|
3
4
|
exports.usePageRepository = usePageRepository;
|
|
4
5
|
const react_1 = require("react");
|
|
5
|
-
const client_1 = require("../client");
|
|
6
|
-
const repository_1 = require("../repository");
|
|
7
6
|
// hook
|
|
8
7
|
function usePageRepository() {
|
|
9
|
-
|
|
10
|
-
return (0, react_1.useMemo)(() => new repository_1.PageRepository(editorApi), [editorApi]);
|
|
8
|
+
return (0, react_1.useContext)(exports.PageRepositoryContext);
|
|
11
9
|
}
|
|
10
|
+
// context
|
|
11
|
+
exports.PageRepositoryContext = (0, react_1.createContext)({});
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { Schema } from '@nascentdigital/funnel-core';
|
|
2
|
-
|
|
3
|
-
export declare function useTempFields<TFields extends Record<string, Schema.Optional.Maybe<Schema.Field.Type>>>(schemasRaw: TFields, dependencies?: any[]): TranslateSchema.Fields<TFields>;
|
|
1
|
+
import { Schema, SchemaToFields } from '@nascentdigital/funnel-core';
|
|
2
|
+
export declare function useTempFields<TFields extends Record<string, Schema.Optional.Maybe<Schema.Field.Type>>>(schemasRaw: TFields, dependencies?: any[]): SchemaToFields<TFields>;
|
|
4
3
|
export declare namespace useTempFields {
|
|
5
4
|
type Args = {
|
|
6
5
|
schemas: Record<string, Schema.Field.Type>;
|
package/dist/core/index.d.ts
CHANGED
package/dist/core/index.js
CHANGED
|
@@ -18,6 +18,7 @@ __exportStar(require("./app"), exports);
|
|
|
18
18
|
__exportStar(require("./auth"), exports);
|
|
19
19
|
__exportStar(require("./client"), exports);
|
|
20
20
|
__exportStar(require("./components"), exports);
|
|
21
|
+
__exportStar(require("./containers"), exports);
|
|
21
22
|
__exportStar(require("./domain"), exports);
|
|
22
23
|
__exportStar(require("./hooks"), exports);
|
|
23
24
|
__exportStar(require("./repository"), exports);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { EditorApiClient } from '../client';
|
|
2
|
+
import { IAssetRepository } from './IAssetRepository';
|
|
3
|
+
export declare class AssetRepository implements IAssetRepository {
|
|
4
|
+
editorApi: EditorApiClient;
|
|
5
|
+
constructor(editorApi: EditorApiClient);
|
|
6
|
+
search(args: IAssetRepository.Search.Args): Promise<IAssetRepository.Search.Result>;
|
|
7
|
+
get(args: IAssetRepository.Get.Args): Promise<IAssetRepository.Get.Result>;
|
|
8
|
+
update(args: IAssetRepository.Update.Args): Promise<IAssetRepository.Update.Result>;
|
|
9
|
+
uploadFile(args: IAssetRepository.UploadFile.Args): Promise<IAssetRepository.UploadFile.Result>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AssetRepository = void 0;
|
|
4
|
+
// class
|
|
5
|
+
class AssetRepository {
|
|
6
|
+
constructor(editorApi) {
|
|
7
|
+
this.editorApi = editorApi;
|
|
8
|
+
}
|
|
9
|
+
async search(args) {
|
|
10
|
+
return this.editorApi.getAssets(args);
|
|
11
|
+
}
|
|
12
|
+
async get(args) {
|
|
13
|
+
return this.editorApi.getAsset(args);
|
|
14
|
+
}
|
|
15
|
+
async update(args) {
|
|
16
|
+
return this.editorApi.updateAsset(args);
|
|
17
|
+
}
|
|
18
|
+
async uploadFile(args) {
|
|
19
|
+
return this.editorApi.uploadFile(args);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.AssetRepository = AssetRepository;
|
|
@@ -1,29 +1,30 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { EventBus, FieldModel } from '@nascentdigital/funnel-core';
|
|
1
|
+
import { Schema } from '@nascentdigital/funnel-core';
|
|
3
2
|
import { UpdateCollectionCommand } from '../../api/collections';
|
|
4
3
|
import { EditorApiClient } from '../client';
|
|
5
4
|
import { Collection, CollectionFieldProxy } from '../domain';
|
|
6
5
|
import { CollectionTarget } from './CollectionTarget';
|
|
7
|
-
|
|
6
|
+
import { ICollectionRepository } from './ICollectionRepository';
|
|
7
|
+
export declare class CollectionRepository implements ICollectionRepository {
|
|
8
8
|
readonly editorApi: EditorApiClient;
|
|
9
9
|
constructor(editorApi: EditorApiClient);
|
|
10
|
-
load(args: CollectionTarget.WithEventBus): Promise<
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
load(args: CollectionTarget.WithEventBus): Promise<{
|
|
11
|
+
collection: Collection | undefined;
|
|
12
|
+
group: import("../domain").CollectionGroup;
|
|
13
|
+
} | undefined>;
|
|
14
|
+
createRaw(args: ICollectionRepository.CreateRaw.Args): Promise<Schema.Collection.Data.AsGroup>;
|
|
15
|
+
create({ eventBus, ...args }: ICollectionRepository.Create.Args): Promise<{
|
|
16
|
+
collection: Collection | undefined;
|
|
17
|
+
group: import("../domain").CollectionGroup;
|
|
18
|
+
}>;
|
|
19
|
+
createLanguage(args: ICollectionRepository.CreateLang.Args): Promise<{
|
|
20
|
+
collection: Collection | undefined;
|
|
21
|
+
group: import("../domain").CollectionGroup;
|
|
22
|
+
}>;
|
|
13
23
|
save(collection: Collection): Promise<Collection>;
|
|
14
24
|
unpublish(collection: Collection): Promise<void>;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
export declare namespace CollectionRepository {
|
|
22
|
-
type CreateNewArgs = Omit<CollectionClient.Create.NewArgs, 'brand' | 'type' | 'version'> & Pick<Collection.ConstructorArgs, 'template'> & {
|
|
23
|
-
eventBus?: EventBus;
|
|
24
|
-
};
|
|
25
|
-
type CreateLanguageArgs = Omit<CollectionClient.Create.NewLanguageArgs, 'brand'> & Pick<Collection.ConstructorArgs, 'template'> & {
|
|
26
|
-
eventBus: EventBus;
|
|
27
|
-
};
|
|
28
|
-
type Savable = FieldModel;
|
|
25
|
+
getOverview(args: ICollectionRepository.GetOverview.Args): Promise<ICollectionRepository.GetOverview.Result>;
|
|
26
|
+
getItems(args: ICollectionRepository.GetItems.Args): Promise<ICollectionRepository.GetItems.Result>;
|
|
27
|
+
get(args: ICollectionRepository.Get.Args): Promise<ICollectionRepository.Get.Result>;
|
|
28
|
+
update(args: ICollectionRepository.Update.Args): Promise<ICollectionRepository.Update.Result>;
|
|
29
|
+
serializeUpdate(collection: Collection | CollectionFieldProxy, savables: ICollectionRepository.Savable[]): UpdateCollectionCommand.Data;
|
|
29
30
|
}
|
|
@@ -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
|
+
}
|