@nascentdigital/funnel-editor 4.6.1 → 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.
Files changed (209) hide show
  1. package/dist/EditorApp.js +1 -1
  2. package/dist/EditorRoutes.js +7 -5
  3. package/dist/changesets/screens/ChangeSetViewer.js +1 -1
  4. package/dist/changesets/screens/ChangeSetsExplorer.js +1 -2
  5. package/dist/collection/hooks/CollectionController.d.ts +5 -16
  6. package/dist/collection/hooks/CollectionController.js +18 -37
  7. package/dist/collection/hooks/ICollectionController.d.ts +24 -0
  8. package/dist/collection/hooks/ICollectionController.js +20 -0
  9. package/dist/collection/hooks/index.d.ts +1 -0
  10. package/dist/collection/hooks/index.js +1 -0
  11. package/dist/collection/hooks/useCollectionController.d.ts +3 -3
  12. package/dist/collection/screens/CollectionEditor.js +2 -2
  13. package/dist/components.d.ts +20 -0
  14. package/dist/components.js +41 -0
  15. package/dist/core/components/feedback/dialog/MinimalDialogLayout.js +1 -1
  16. package/dist/core/components/fields/BooleanField.d.ts +2 -1
  17. package/dist/core/components/fields/BooleanField.js +2 -2
  18. package/dist/core/components/fields/DateField.d.ts +2 -1
  19. package/dist/core/components/fields/DateField.js +2 -2
  20. package/dist/core/components/fields/DynamicPagesEditor.d.ts +2 -1
  21. package/dist/core/components/fields/DynamicPagesEditor.js +1 -1
  22. package/dist/core/components/fields/EnumField.d.ts +2 -1
  23. package/dist/core/components/fields/EnumField.js +2 -2
  24. package/dist/core/components/fields/FieldCard.d.ts +1 -0
  25. package/dist/core/components/fields/FieldCard.js +8 -1
  26. package/dist/core/components/fields/FieldEditor.d.ts +2 -1
  27. package/dist/core/components/fields/FieldEditor.js +11 -11
  28. package/dist/core/components/fields/FieldLayout.d.ts +2 -1
  29. package/dist/core/components/fields/FieldLayout.js +3 -3
  30. package/dist/core/components/fields/ListEditor.d.ts +2 -1
  31. package/dist/core/components/fields/ListEditor.js +5 -6
  32. package/dist/core/components/fields/OptInField.d.ts +2 -1
  33. package/dist/core/components/fields/OptInField.js +2 -2
  34. package/dist/core/components/fields/RichTextEditor.js +1 -1
  35. package/dist/core/components/fields/RichTextField.d.ts +2 -1
  36. package/dist/core/components/fields/RichTextField.js +3 -5
  37. package/dist/core/components/fields/TextField.d.ts +2 -0
  38. package/dist/core/components/fields/TextField.js +2 -2
  39. package/dist/core/components/fields/TimestampField.d.ts +2 -1
  40. package/dist/core/components/fields/TimestampField.js +3 -3
  41. package/dist/core/components/fields/asset/AssetEditor.js +12 -44
  42. package/dist/core/components/fields/asset/AssetPicker.js +6 -6
  43. package/dist/core/components/fields/asset/AssetUploader.js +23 -31
  44. package/dist/core/components/fields/asset/preview/VideoPreview.js +16 -11
  45. package/dist/core/components/fields/asset/useAssetFields.d.ts +2 -17
  46. package/dist/core/components/fields/asset/useAssetFields.js +0 -21
  47. package/dist/core/components/fields/collection/CollectionEditor.js +1 -1
  48. package/dist/core/components/fields/collection/CollectionPicker.d.ts +2 -2
  49. package/dist/core/components/fields/collection/CollectionPicker.js +3 -4
  50. package/dist/core/components/fields/dynamicPages/PagePriorityDialog.js +1 -1
  51. package/dist/core/components/fields/embed/EmbeddedVideoEditor.js +34 -27
  52. package/dist/core/components/fields/factories/FieldValueFactory.js +11 -4
  53. package/dist/core/components/fields/factories/MediaFactory.d.ts +13 -0
  54. package/dist/core/components/fields/factories/MediaFactory.js +256 -0
  55. package/dist/core/components/fields/list/CreateFieldButton.js +1 -1
  56. package/dist/core/components/fields/media/MediaCard.d.ts +7 -0
  57. package/dist/core/components/fields/media/MediaCard.js +92 -0
  58. package/dist/core/components/fields/media/MediaEditor.d.ts +37 -0
  59. package/dist/core/components/fields/media/MediaEditor.js +235 -0
  60. package/dist/core/components/fields/media/MediaPicker.d.ts +15 -0
  61. package/dist/core/components/fields/media/MediaPicker.js +251 -0
  62. package/dist/core/components/fields/media/index.d.ts +3 -0
  63. package/dist/core/components/fields/media/index.js +19 -0
  64. package/dist/core/components/fields/object/ObjectEditor.js +1 -1
  65. package/dist/core/components/fields/page/PagePicker.d.ts +2 -2
  66. package/dist/core/components/fields/page/PagePicker.js +1 -1
  67. package/dist/core/components/interaction/Combobox.js +1 -1
  68. package/dist/core/components/interaction/DateTimePicker.d.ts +0 -1
  69. package/dist/core/components/interaction/DateTimePicker.js +0 -2
  70. package/dist/core/components/interaction/MultiSelectControls.js +2 -5
  71. package/dist/core/components/interaction/Popup.js +1 -0
  72. package/dist/core/components/interaction/QuickEditor.js +1 -1
  73. package/dist/core/components/interaction/QuickPicker.js +1 -1
  74. package/dist/core/components/interaction/SideSheet.js +1 -1
  75. package/dist/core/components/interaction/centersheet/CenterSheet.js +7 -1
  76. package/dist/core/components/interaction/centersheet/CenterSheetContainer.js +3 -1
  77. package/dist/core/components/transitions/FadeIn.js +2 -14
  78. package/dist/core/components/visuals/Icon.d.ts +1 -1
  79. package/dist/core/components/visuals/Icon.js +3 -0
  80. package/dist/core/containers/AssetRepositoryContainer.d.ts +2 -0
  81. package/dist/core/containers/AssetRepositoryContainer.js +18 -0
  82. package/dist/core/containers/CollectionRepositoryContainer.d.ts +2 -0
  83. package/dist/core/containers/CollectionRepositoryContainer.js +18 -0
  84. package/dist/core/containers/PageRepositoryContainer.d.ts +2 -0
  85. package/dist/core/containers/PageRepositoryContainer.js +18 -0
  86. package/dist/core/containers/index.d.ts +3 -0
  87. package/dist/core/containers/index.js +19 -0
  88. package/dist/core/domain/Block.d.ts +1 -0
  89. package/dist/core/domain/Block.js +8 -5
  90. package/dist/core/domain/BlockConfiguration.d.ts +4 -1
  91. package/dist/core/domain/BlockConfiguration.js +64 -3
  92. package/dist/core/domain/Collection.d.ts +10 -28
  93. package/dist/core/domain/Collection.js +2 -16
  94. package/dist/core/domain/CollectionBrowser.d.ts +3 -2
  95. package/dist/core/domain/CollectionBrowser.js +3 -3
  96. package/dist/core/domain/CollectionFieldProxy.d.ts +12 -8
  97. package/dist/core/domain/CollectionFieldProxy.js +14 -8
  98. package/dist/core/domain/CollectionGroup.d.ts +0 -5
  99. package/dist/core/domain/CollectionGroup.js +0 -7
  100. package/dist/core/domain/CollectionSummary.d.ts +2 -2
  101. package/dist/core/domain/Collections.d.ts +3 -3
  102. package/dist/core/domain/Collections.js +4 -4
  103. package/dist/core/domain/ICollection.d.ts +71 -0
  104. package/dist/core/domain/ICollection.js +20 -0
  105. package/dist/core/domain/IPage.d.ts +72 -0
  106. package/dist/core/domain/IPage.js +20 -0
  107. package/dist/core/domain/IPageRefStore.d.ts +3 -3
  108. package/dist/core/domain/ItemBase.d.ts +6 -6
  109. package/dist/core/domain/ItemBase.js +5 -5
  110. package/dist/core/domain/Page.d.ts +9 -22
  111. package/dist/core/domain/Page.js +3 -18
  112. package/dist/core/domain/PageOverview.d.ts +2 -2
  113. package/dist/core/domain/PageRefStoreProxy.d.ts +4 -4
  114. package/dist/core/domain/PageSettings.d.ts +3 -3
  115. package/dist/core/domain/PageSummary.d.ts +2 -2
  116. package/dist/core/domain/Pages.js +4 -6
  117. package/dist/core/domain/SectionBlock.js +2 -1
  118. package/dist/core/domain/Site.d.ts +4 -4
  119. package/dist/core/domain/Site.js +3 -3
  120. package/dist/core/domain/index.d.ts +2 -1
  121. package/dist/core/domain/index.js +2 -1
  122. package/dist/core/hooks/index.d.ts +4 -3
  123. package/dist/core/hooks/index.js +4 -3
  124. package/dist/core/hooks/useAssetRepository.d.ts +3 -0
  125. package/dist/core/hooks/useAssetRepository.js +11 -0
  126. package/dist/core/hooks/useCollection.d.ts +4 -4
  127. package/dist/core/hooks/useCollectionRepository.d.ts +3 -2
  128. package/dist/core/hooks/useCollectionRepository.js +4 -4
  129. package/dist/core/hooks/usePage.d.ts +4 -4
  130. package/dist/core/hooks/usePageRef.d.ts +1 -1
  131. package/dist/core/hooks/usePageRepository.d.ts +3 -2
  132. package/dist/core/hooks/usePageRepository.js +4 -4
  133. package/dist/core/hooks/useTempFields.d.ts +2 -3
  134. package/dist/core/index.d.ts +1 -0
  135. package/dist/core/index.js +1 -0
  136. package/dist/core/repository/AssetRepository.d.ts +10 -0
  137. package/dist/core/repository/AssetRepository.js +22 -0
  138. package/dist/core/repository/CollectionRepository.d.ts +21 -20
  139. package/dist/core/repository/CollectionRepository.js +23 -161
  140. package/dist/core/repository/CollectionSerializer.d.ts +4 -1
  141. package/dist/core/repository/CollectionSerializer.js +3 -3
  142. package/dist/core/repository/IAssetRepository.d.ts +25 -0
  143. package/dist/core/repository/ICollectionRepository.d.ts +62 -0
  144. package/dist/core/repository/ICollectionRepository.js +2 -0
  145. package/dist/core/repository/IPageRepository.d.ts +40 -0
  146. package/dist/core/repository/IPageRepository.js +2 -0
  147. package/dist/core/repository/PageRepository.d.ts +6 -9
  148. package/dist/core/repository/PageRepository.js +7 -280
  149. package/dist/core/repository/PageSerializer.d.ts +34 -1
  150. package/dist/core/repository/PageSerializer.js +4 -0
  151. package/dist/core/repository/SerializeCollectionUpdate.d.ts +8 -0
  152. package/dist/core/repository/SerializeCollectionUpdate.js +168 -0
  153. package/dist/core/repository/SerializePageUpdate.d.ts +11 -0
  154. package/dist/core/repository/SerializePageUpdate.js +292 -0
  155. package/dist/core/repository/index.d.ts +4 -0
  156. package/dist/core/repository/index.js +4 -0
  157. package/dist/dashboard/screens/Dashboard.js +1 -1
  158. package/dist/devtools/screens/Devtools.js +1 -1
  159. package/dist/explore/components/CreatePageDialog.d.ts +2 -2
  160. package/dist/explore/screens/CollectionExplorer.js +1 -1
  161. package/dist/explore/screens/CollectionsExplorer.js +1 -1
  162. package/dist/explore/screens/PageExplorer.js +1 -1
  163. package/dist/explore/screens/SiteExplorer.js +1 -1
  164. package/dist/page/components/BlockEditor.js +1 -1
  165. package/dist/page/components/PageHeader.d.ts +2 -2
  166. package/dist/page/components/PageNotCreated.d.ts +2 -2
  167. package/dist/page/components/PageNotFound.d.ts +2 -2
  168. package/dist/page/components/SettingsEditor.js +0 -7
  169. package/dist/page/components/config/BlockConfigButton.d.ts +2 -1
  170. package/dist/page/components/config/BlockConfigButton.js +84 -24
  171. package/dist/page/components/config/BlockPreview.d.ts +8 -0
  172. package/dist/page/components/config/BlockPreview.js +53 -0
  173. package/dist/page/components/config/index.d.ts +1 -1
  174. package/dist/page/components/config/index.js +1 -1
  175. package/dist/page/components/config/preview/ColumnLayout.d.ts +10 -0
  176. package/dist/page/components/config/preview/ColumnLayout.js +15 -0
  177. package/dist/page/components/config/preview/ItemLayout.d.ts +12 -0
  178. package/dist/page/components/config/preview/ItemLayout.js +45 -0
  179. package/dist/page/components/config/preview/ListPanel.d.ts +12 -0
  180. package/dist/page/components/config/preview/ListPanel.js +14 -0
  181. package/dist/page/components/config/preview/MessagePanel.d.ts +12 -0
  182. package/dist/page/components/config/preview/MessagePanel.js +21 -0
  183. package/dist/page/components/config/preview/Panel.d.ts +15 -0
  184. package/dist/page/components/config/preview/Panel.js +74 -0
  185. package/dist/page/components/config/preview/RowLayout.d.ts +10 -0
  186. package/dist/page/components/config/preview/RowLayout.js +26 -0
  187. package/dist/page/components/config/preview/StackLayout.d.ts +10 -0
  188. package/dist/page/components/config/preview/StackLayout.js +15 -0
  189. package/dist/page/components/config/preview/VisualPanel.d.ts +12 -0
  190. package/dist/page/components/config/preview/VisualPanel.js +27 -0
  191. package/dist/page/components/config/preview/index.d.ts +3 -0
  192. package/dist/page/components/config/preview/index.js +19 -0
  193. package/dist/page/components/panels/BlockConfigPanel.js +4 -4
  194. package/dist/page/hooks/IPageController.d.ts +42 -0
  195. package/dist/page/hooks/IPageController.js +32 -0
  196. package/dist/page/hooks/PageController.d.ts +11 -36
  197. package/dist/page/hooks/PageController.js +7 -33
  198. package/dist/page/hooks/index.d.ts +1 -0
  199. package/dist/page/hooks/index.js +1 -0
  200. package/dist/page/hooks/usePageController.d.ts +3 -3
  201. package/dist/page/screens/PageEditor.js +1 -1
  202. package/dist/styles/index.css +809 -60
  203. package/dist/styles/tailwind.js +1 -0
  204. package/dist/users/screens/UserExplorer.js +1 -1
  205. package/package.json +3 -2
  206. package/dist/core/domain/TranslateSchema.d.ts +0 -7
  207. package/dist/page/components/config/LegacyBlockPreview.d.ts +0 -8
  208. package/dist/page/components/config/LegacyBlockPreview.js +0 -452
  209. /package/dist/core/{domain/TranslateSchema.js → repository/IAssetRepository.js} +0 -0
@@ -0,0 +1,72 @@
1
+ import { EventBus, Field, FieldList, Language, ObjectField, Schema } from '@nascentdigital/funnel-core';
2
+ import type { Observable } from 'rxjs';
3
+ import type { Asset } from './Asset';
4
+ import type { Block } from './Block';
5
+ import type { IAssetStore } from './IAssetStore';
6
+ import type { ICollectionStore } from './ICollectionStore';
7
+ import type { IPageRefStore } from './IPageRefStore';
8
+ import type { ITagged } from './ITagged';
9
+ import type { Item } from './Item';
10
+ import type { PageSettings } from './PageSettings';
11
+ import type { PageSummary } from './PageSummary';
12
+ import type { Section } from './Section';
13
+ export interface IPage extends IAssetStore, ICollectionStore, IPageRefStore, ITagged {
14
+ readonly template: Schema.Page;
15
+ readonly id: Schema.Page.Id;
16
+ readonly groupId: Schema.Page.GroupId;
17
+ readonly brand: string;
18
+ readonly language: Language;
19
+ readonly region: string;
20
+ readonly events$: Observable<IPage.Events>;
21
+ readonly settings: PageSettings;
22
+ readonly discover: ReadonlyArray<Block>;
23
+ readonly content: IPage.Content;
24
+ readonly published: boolean;
25
+ readonly hasSlug: boolean;
26
+ readonly url: string;
27
+ readonly createdOn: number;
28
+ readonly updatedOn: number;
29
+ readonly asRef: IPage.Ref;
30
+ publication: number | undefined;
31
+ slug: string | undefined;
32
+ deleteBlock(area: IPage.Area, key: string): void;
33
+ }
34
+ export declare namespace IPage {
35
+ type Content = ReadonlyArray<Block | Section>;
36
+ type Area = 'discover' | 'content';
37
+ type Ref = {
38
+ template: Schema.Page;
39
+ id: Schema.Page.Id;
40
+ groupId: Schema.Page.GroupId;
41
+ brand: string;
42
+ language: Language;
43
+ region: string;
44
+ url: string;
45
+ slug?: string;
46
+ name: string;
47
+ tags: Schema.Tag[];
48
+ state: Schema.Page.State;
49
+ errors: boolean;
50
+ createdOn: number;
51
+ updatedOn: number;
52
+ publishedOn?: number;
53
+ };
54
+ type References = {
55
+ pages: Ref[];
56
+ collections: Schema.Collection.Data.AsLink[];
57
+ assets: Asset[];
58
+ };
59
+ type WithSummary = {
60
+ summary: PageSummary;
61
+ page?: IPage;
62
+ };
63
+ type Events = Event | Item.Event | Field.Event | ObjectField.Event | FieldList.Event;
64
+ interface Event extends EventBus.Event<'Page', Event.Type> {
65
+ page: IPage;
66
+ }
67
+ namespace Event {
68
+ type Type = 'changed' | 'modified';
69
+ function filter(event: EventBus.Event): event is Event;
70
+ function create(event: EventBus.Args<Event>): Event;
71
+ }
72
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IPage = void 0;
4
+ const funnel_core_1 = require("@nascentdigital/funnel-core");
5
+ // extension
6
+ var IPage;
7
+ (function (IPage) {
8
+ let Event;
9
+ (function (Event) {
10
+ // methods
11
+ function filter(event) {
12
+ return event.domain === 'Page';
13
+ }
14
+ Event.filter = filter;
15
+ function create(event) {
16
+ return funnel_core_1.EventBus.createEvent(Object.assign({ domain: 'Page' }, event));
17
+ }
18
+ Event.create = create;
19
+ })(Event = IPage.Event || (IPage.Event = {}));
20
+ })(IPage || (exports.IPage = IPage = {}));
@@ -1,12 +1,12 @@
1
1
  import { Language, Schema } from '@nascentdigital/funnel-core';
2
2
  import { Observable } from 'rxjs';
3
- import { Page } from './Page';
3
+ import { IPage } from './IPage';
4
4
  export interface IPageRefStore {
5
5
  readonly stable$: Observable<boolean>;
6
6
  readonly syncing: boolean;
7
7
  readonly modified: boolean;
8
8
  readonly language: Language;
9
- getPageRef(pageId: Schema.Page.Id): Page.Ref | undefined;
10
- addPageRef(ref: Page.Ref): void;
9
+ getPageRef(pageId: Schema.Page.Id | undefined): IPage.Ref | undefined;
10
+ addPageRef(ref: IPage.Ref): void;
11
11
  removePageRef(pageId: Schema.Page.Id): boolean;
12
12
  }
@@ -1,6 +1,6 @@
1
1
  import { EventBus } from '@nascentdigital/funnel-core';
2
2
  import { Observable } from 'rxjs';
3
- import { Block, Item, Page, Section, SectionBlock } from './';
3
+ import { Block, IPage, Item, Section, SectionBlock } from './';
4
4
  export declare abstract class ItemBase<T extends Item.Type> {
5
5
  readonly key: Item.Key;
6
6
  private _required;
@@ -21,10 +21,10 @@ export declare abstract class ItemBase<T extends Item.Type> {
21
21
  protected onActivate(): void;
22
22
  abstract get modified(): boolean;
23
23
  abstract get valid(): boolean;
24
- get root(): Page;
24
+ get root(): IPage;
25
25
  private get parentContext();
26
- get parent(): Section | Page;
27
- get area(): Page.Area;
26
+ get parent(): Section | IPage;
27
+ get area(): IPage.Area;
28
28
  bind(parentContext: ItemBase.ParentContext): void;
29
29
  getClosestBlock(direction?: 'prev' | 'next'): SectionBlock | Block | undefined;
30
30
  delete(): undefined;
@@ -39,7 +39,7 @@ export declare namespace ItemBase {
39
39
  exists: boolean;
40
40
  };
41
41
  type ParentContext = {
42
- parent: Page | Section;
43
- area: Page.Area;
42
+ parent: IPage | Section;
43
+ area: IPage.Area;
44
44
  };
45
45
  }
@@ -99,10 +99,10 @@ class ItemBase {
99
99
  }
100
100
  }
101
101
  // look at page (use sanity check)
102
- const page = parent instanceof _1.Page
103
- ? parent
104
- : parent.parent;
105
- if (!(page instanceof _1.Page)) {
102
+ const page = parent instanceof _1.Section
103
+ ? parent.parent
104
+ : parent;
105
+ if (page instanceof _1.Section) {
106
106
  throw new funnel_core_1.IllegalStateError('Expected parent to be Page');
107
107
  }
108
108
  // type guard
@@ -140,7 +140,7 @@ class ItemBase {
140
140
  parent.deleteBlock(this.id);
141
141
  }
142
142
  // or delete block from page
143
- else if (this instanceof _1.Block && parent instanceof _1.Page) {
143
+ else if (this instanceof _1.Block && !(parent instanceof _1.Section)) {
144
144
  parent.deleteBlock(area, this.key);
145
145
  }
146
146
  // or do nothing
@@ -1,7 +1,7 @@
1
1
  import { AssetClient } from '@nascentdigital/funnel-cms';
2
- import { EventBus, Field, FieldList, FieldModel, Language, ObjectField, Schema } from '@nascentdigital/funnel-core';
2
+ import { EventBus, FieldModel, Language, Schema } from '@nascentdigital/funnel-core';
3
3
  import { Observable } from 'rxjs';
4
- import { Asset, Block, IAssetStore, ICollectionStore, IPageRefStore, ITagged, Item, PageSummary, Section, SectionBlock } from './';
4
+ import { Asset, Block, IAssetStore, ICollectionStore, IPage, IPageRefStore, ITagged, PageSummary, Section, SectionBlock } from './';
5
5
  import { PageSettings } from './PageSettings';
6
6
  export declare class Page implements IAssetStore, ICollectionStore, IPageRefStore, ITagged {
7
7
  readonly template: Schema.Page;
@@ -41,7 +41,7 @@ export declare class Page implements IAssetStore, ICollectionStore, IPageRefStor
41
41
  private _modifiedOn?;
42
42
  private _savingOn?;
43
43
  constructor(args: Page.ConstructorArgs);
44
- get events$(): Observable<Page.Events>;
44
+ get events$(): Observable<IPage.Events>;
45
45
  get stable$(): Observable<boolean>;
46
46
  get state(): Schema.Page.State;
47
47
  private set state(value);
@@ -84,7 +84,7 @@ export declare class Page implements IAssetStore, ICollectionStore, IPageRefStor
84
84
  get initialErrors(): boolean;
85
85
  get errors(): Page.Errors;
86
86
  get hasErrors(): boolean;
87
- get asRef(): Page.Ref;
87
+ get asRef(): IPage.Ref;
88
88
  /**
89
89
  * Synchronizes computed properties with the latest data (e.g. updating `url` from route template or name)
90
90
  */
@@ -92,7 +92,7 @@ export declare class Page implements IAssetStore, ICollectionStore, IPageRefStor
92
92
  getItem(identifier: string | undefined): Block | SectionBlock | Section | PageSettings | undefined;
93
93
  getPreviewBlock(): Block | undefined;
94
94
  coerceItem(identifier: string | undefined): Block | SectionBlock | Section | PageSettings;
95
- deleteBlock(area: Page.Area, key: string): boolean;
95
+ deleteBlock(area: IPage.Area, key: string): boolean;
96
96
  getAssetScope(range: Schema.AssetScope.Range): Schema.AssetScope;
97
97
  getSearchScope(): AssetClient.GetAssets.Scope;
98
98
  getAsset(assetId: Asset.Id): Asset | undefined;
@@ -101,8 +101,8 @@ export declare class Page implements IAssetStore, ICollectionStore, IPageRefStor
101
101
  getCollection(collectionId: Schema.Collection.Id): Schema.Collection.Data.AsLink | undefined;
102
102
  addCollection(collection: Schema.Collection.Data.AsLink): void;
103
103
  removeCollection(collectionId: Schema.Collection.Id): boolean;
104
- getPageRef(pageId: Schema.Page.Id | undefined): Page.Ref | undefined;
105
- addPageRef(page: Page.Ref): void;
104
+ getPageRef(pageId: Schema.Page.Id | undefined): IPage.Ref | undefined;
105
+ addPageRef(page: IPage.Ref): void;
106
106
  removePageRef(pageId: string): boolean;
107
107
  repair(): void;
108
108
  onSaveStart(): void;
@@ -127,9 +127,9 @@ export declare namespace Page {
127
127
  name: string;
128
128
  tags: Schema.Tag[];
129
129
  discover: Blocks;
130
- content: Content;
130
+ content: Page.Content;
131
131
  files?: Asset[];
132
- pages?: Ref[];
132
+ pages?: IPage.Ref[];
133
133
  collections?: Schema.Collection.Data.AsLink[];
134
134
  state: Schema.Page.State;
135
135
  errors: boolean;
@@ -155,18 +155,5 @@ export declare namespace Page {
155
155
  summary: PageSummary;
156
156
  page?: Page;
157
157
  };
158
- type Area = 'discover' | 'content';
159
158
  type Target = Block | SectionBlock | Section | FieldModel;
160
- type Ref = Pick<ConstructorArgs, 'id' | 'groupId' | 'brand' | 'template' | 'region' | 'language' | 'url' | 'slug' | 'tags' | 'createdOn' | 'updatedOn' | 'publishedOn'> & {
161
- name: string;
162
- };
163
- type Events = Event | Item.Event | Field.Event | ObjectField.Event | FieldList.Event;
164
- interface Event extends EventBus.Event<'Page', Event.Type> {
165
- page: Page;
166
- }
167
- namespace Event {
168
- type Type = 'changed' | 'modified';
169
- function filter(event: EventBus.Event): event is Event;
170
- function create(event: EventBus.Args<Event>): Event;
171
- }
172
159
  }
@@ -296,11 +296,11 @@ class Page {
296
296
  return this.errors.items.length > 0;
297
297
  }
298
298
  get asRef() {
299
- const { id, groupId, template, brand, region, language, slug, url, name, tags, createdOn, updatedOn, publishedOn } = this;
299
+ const { id, groupId, template, brand, region, language, slug, url, name, tags, state, hasErrors, createdOn, updatedOn, publishedOn } = this;
300
300
  return {
301
301
  id, groupId, template,
302
302
  brand, region, language, slug, url, name, tags: Array.from(tags),
303
- createdOn, updatedOn, publishedOn
303
+ state, errors: hasErrors, createdOn, updatedOn, publishedOn
304
304
  };
305
305
  }
306
306
  /**
@@ -680,22 +680,7 @@ class Page {
680
680
  }
681
681
  }
682
682
  raiseEvent(type) {
683
- this.eventBus.publish(Page.Event.create({ type, page: this }));
683
+ this.eventBus.publish(_1.IPage.Event.create({ type, page: this }));
684
684
  }
685
685
  }
686
686
  exports.Page = Page;
687
- // types
688
- (function (Page) {
689
- let Event;
690
- (function (Event) {
691
- // methods
692
- function filter(event) {
693
- return event.domain === 'Page';
694
- }
695
- Event.filter = filter;
696
- function create(event) {
697
- return funnel_core_1.EventBus.createEvent(Object.assign({ domain: 'Page' }, event));
698
- }
699
- Event.create = create;
700
- })(Event = Page.Event || (Page.Event = {}));
701
- })(Page || (exports.Page = Page = {}));
@@ -1,5 +1,5 @@
1
1
  import { Language, Schema } from '@nascentdigital/funnel-core';
2
- import { Page } from './Page';
2
+ import { IPage } from './IPage';
3
3
  export type PageOverview = StaticPageOverview | DynamicPageOverview;
4
4
  export declare abstract class PageOverviewBase {
5
5
  readonly template: Schema.Page;
@@ -19,7 +19,7 @@ export declare class StaticPageOverview extends PageOverviewBase {
19
19
  constructor({ refs, ...args }: StaticPageOverview.ConstructorArgs);
20
20
  get isEmpty(): boolean;
21
21
  hasLanguage(language: Language): boolean;
22
- getClosestPageRef(language: Language, fallback?: Language): Page.Ref | undefined;
22
+ getClosestPageRef(language: Language, fallback?: Language): IPage.Ref | undefined;
23
23
  }
24
24
  export declare namespace StaticPageOverview {
25
25
  type ConstructorArgs = Omit<PageOverviewBase.ConstructorArgs, 'variant'> & {
@@ -2,7 +2,7 @@ import { Language, Schema } from '@nascentdigital/funnel-core';
2
2
  import { Observable } from 'rxjs';
3
3
  import { EditorApiClient } from '../client';
4
4
  import { IPageRefStore } from './IPageRefStore';
5
- import { Page } from './Page';
5
+ import { IPage } from './IPage';
6
6
  export declare class PageRefStoreProxy implements IPageRefStore {
7
7
  readonly language: Language;
8
8
  private _parentStore;
@@ -16,8 +16,8 @@ export declare class PageRefStoreProxy implements IPageRefStore {
16
16
  get modified(): boolean;
17
17
  bindParent(parent: IPageRefStore): PageRefStoreProxy;
18
18
  load(pageIds?: Schema.Page.Id[]): Promise<void>;
19
- getPageRef(pageId: Schema.Page.Id | undefined): Page.Ref | undefined;
20
- addPageRef(page: Page.Ref): void;
19
+ getPageRef(pageId: Schema.Page.Id | undefined): IPage.Ref | undefined;
20
+ addPageRef(page: IPage.Ref): void;
21
21
  removePageRef(pageId: Schema.Page.Id): boolean;
22
22
  }
23
23
  export declare namespace PageRefStoreProxy {
@@ -25,7 +25,7 @@ export declare namespace PageRefStoreProxy {
25
25
  editorApi: EditorApiClient;
26
26
  parent?: IPageRefStore;
27
27
  language: Language;
28
- pages?: ReadonlyArray<Page.Ref>;
28
+ pages?: ReadonlyArray<IPage.Ref>;
29
29
  pageIds?: ReadonlyArray<Schema.Page.Id>;
30
30
  };
31
31
  }
@@ -1,9 +1,9 @@
1
- import { Page } from './Page';
1
+ import { IPage } from './IPage';
2
2
  export declare class PageSettings {
3
- readonly page: Page;
3
+ readonly page: IPage;
4
4
  readonly id = "__settings";
5
5
  readonly name = "Settings";
6
- constructor(page: Page);
6
+ constructor(page: IPage);
7
7
  get identifier(): string;
8
8
  }
9
9
  export declare namespace PageSettings {
@@ -1,5 +1,5 @@
1
1
  import { Language, Schema } from '@nascentdigital/funnel-core';
2
- import { Page } from './Page';
2
+ import { IPage } from './IPage';
3
3
  export declare class PageSummary {
4
4
  readonly template: Schema.Page;
5
5
  readonly brand: string;
@@ -14,7 +14,7 @@ export declare class PageSummary {
14
14
  get hasPages(): boolean;
15
15
  hasLanguage(language: Language): boolean;
16
16
  getPage(language: Language): PageSummary.PageRef | undefined;
17
- getClosestPageRef(language: Language, fallback?: Language): Page.Ref;
17
+ getClosestPageRef(language: Language, fallback?: Language): IPage.Ref;
18
18
  isInGroup({ template, region }: PageSummary.IsInGroupArgs): boolean;
19
19
  }
20
20
  export declare namespace PageSummary {
@@ -57,13 +57,11 @@ class Pages {
57
57
  : 'syncing';
58
58
  // load all pages for the region
59
59
  const { site, template, pageType, tags } = this;
60
- const { brand, region } = site;
61
- const { items: pages } = await site.editorApi.searchPages({
62
- brand: brand.id,
60
+ const { region } = site;
61
+ const { items: pages } = await site.repository.search({
62
+ template,
63
63
  region: region.id,
64
- type: pageType,
65
64
  tags: tags.map(tag => tag.data),
66
- version: 'draft',
67
65
  pagination: 'all'
68
66
  });
69
67
  console.debug(`[PageCollection/sync] fetched ${pages.length} "${pageType}" pages`);
@@ -94,7 +92,7 @@ class Pages {
94
92
  slug: page.slug,
95
93
  name: page.name,
96
94
  url: page.url,
97
- tags: page.tags,
95
+ tags: page.tags.map(tag => tag.data),
98
96
  state: page.state,
99
97
  errors: page.errors,
100
98
  createdOn: page.createdOn,
@@ -66,7 +66,8 @@ class SectionBlock extends ItemBase_1.ItemBase {
66
66
  return this.block.errors;
67
67
  }
68
68
  getConfiguration() {
69
- return new BlockConfiguration_1.BlockConfiguration({ block: this, assetStore: this.root });
69
+ const { root } = this;
70
+ return new BlockConfiguration_1.BlockConfiguration({ block: this, assetStore: root, collectionStore: root });
70
71
  }
71
72
  bind(parentContext) {
72
73
  // bind base
@@ -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 { EditorApiClient } from '../client';
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 editorApi: EditorApiClient;
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, editorApi, region }: Site.ConstructorArgs);
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
- editorApi: EditorApiClient;
41
+ repository: IPageRepository;
42
42
  region: string;
43
43
  };
44
44
  interface Event extends EventBus.Event<'Site', Event.Type> {
@@ -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, editorApi, region }) {
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.editorApi = editorApi;
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.editorApi.getPagesOverview({ region: this.region.id, version: 'draft' });
121
+ this._overviews = await this.repository.getOverview({ region: this.region.id });
122
122
  // mark as ready
123
123
  this.state = 'ready';
124
124
  }
@@ -9,7 +9,9 @@ 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';
14
+ export * from './IPage';
13
15
  export * from './IPageRefStore';
14
16
  export * from './ITagged';
15
17
  export * from './Item';
@@ -23,6 +25,5 @@ export * from './Pages';
23
25
  export * from './Section';
24
26
  export * from './SectionBlock';
25
27
  export * from './Site';
26
- export * from './TranslateSchema';
27
28
  export * from './UserBrowser';
28
29
  export * from './UserValidation';
@@ -25,7 +25,9 @@ __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);
30
+ __exportStar(require("./IPage"), exports);
29
31
  __exportStar(require("./IPageRefStore"), exports);
30
32
  __exportStar(require("./ITagged"), exports);
31
33
  __exportStar(require("./Item"), exports);
@@ -39,6 +41,5 @@ __exportStar(require("./Pages"), exports);
39
41
  __exportStar(require("./Section"), exports);
40
42
  __exportStar(require("./SectionBlock"), exports);
41
43
  __exportStar(require("./Site"), exports);
42
- __exportStar(require("./TranslateSchema"), exports);
43
44
  __exportStar(require("./UserBrowser"), exports);
44
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 './useCollectionData';
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';
@@ -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("./useCollectionData"), exports);
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,3 @@
1
+ import { IAssetRepository } from '../repository';
2
+ export declare function useAssetRepository(): IAssetRepository;
3
+ export declare const AssetRepositoryContext: import("react").Context<IAssetRepository>;
@@ -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 { Collection } from '../domain';
2
- export declare function usePossibleCollection(): Collection | undefined;
3
- export declare function useCollection(): Collection;
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?: Collection;
7
+ collection?: ICollection;
8
8
  };
9
9
  }
@@ -1,2 +1,3 @@
1
- import { CollectionRepository } from '../repository';
2
- export declare function useCollectionRepository(): CollectionRepository;
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
- const editorApi = (0, client_1.useEditorApi)();
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,9 +1,9 @@
1
- import { Page } from '../domain';
2
- export declare function usePossiblePage(newPage?: Page): Page | undefined;
3
- export declare function usePage(newPage?: Page): Page;
1
+ import { IPage } from '../domain';
2
+ export declare function usePossiblePage(newPage?: IPage): IPage | undefined;
3
+ export declare function usePage(newPage?: IPage): IPage;
4
4
  export declare const PageContext: import("react").Context<PageContext.Data>;
5
5
  export declare namespace PageContext {
6
6
  type Data = {
7
- page?: Page;
7
+ page?: IPage;
8
8
  };
9
9
  }
@@ -1,2 +1,2 @@
1
1
  import { Schema } from '@nascentdigital/funnel-core';
2
- export declare function usePageRef(pageId?: Schema.Page.Id): import("..").Page.Ref | undefined;
2
+ export declare function usePageRef(pageId?: Schema.Page.Id): import("..").IPage.Ref | undefined;
@@ -1,2 +1,3 @@
1
- import { PageRepository } from '../repository';
2
- export declare function usePageRepository(): PageRepository;
1
+ import { IPageRepository } from '../repository';
2
+ export declare function usePageRepository(): IPageRepository;
3
+ export declare const PageRepositoryContext: import("react").Context<IPageRepository>;