@nascentdigital/funnel-editor 4.6.7 → 5.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) 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 +15 -3
  14. package/dist/components.js +18 -3
  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 +43 -3
  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.d.ts +1 -2
  42. package/dist/core/components/fields/asset/AssetEditor.js +29 -49
  43. package/dist/core/components/fields/asset/AssetPicker.js +6 -6
  44. package/dist/core/components/fields/asset/AssetUploader.d.ts +1 -2
  45. package/dist/core/components/fields/asset/AssetUploader.js +39 -35
  46. package/dist/core/components/fields/asset/preview/VideoPreview.js +16 -11
  47. package/dist/core/components/fields/asset/useAssetFields.d.ts +2 -17
  48. package/dist/core/components/fields/asset/useAssetFields.js +0 -21
  49. package/dist/core/components/fields/collection/CollectionEditor.d.ts +2 -1
  50. package/dist/core/components/fields/collection/CollectionEditor.js +18 -4
  51. package/dist/core/components/fields/collection/CollectionPicker.d.ts +2 -2
  52. package/dist/core/components/fields/collection/CollectionPicker.js +3 -4
  53. package/dist/core/components/fields/dynamicPages/PagePriorityDialog.js +1 -1
  54. package/dist/core/components/fields/embed/EmbeddedVideoEditor.d.ts +2 -2
  55. package/dist/core/components/fields/embed/EmbeddedVideoEditor.js +50 -31
  56. package/dist/core/components/fields/factories/AssetFactory.d.ts +3 -3
  57. package/dist/core/components/fields/factories/AssetFactory.js +18 -13
  58. package/dist/core/components/fields/factories/CollectionFactory.d.ts +3 -3
  59. package/dist/core/components/fields/factories/CollectionFactory.js +20 -13
  60. package/dist/core/components/fields/factories/EmbeddedVideoFactory.d.ts +3 -3
  61. package/dist/core/components/fields/factories/EmbeddedVideoFactory.js +17 -8
  62. package/dist/core/components/fields/factories/FieldValueFactory.d.ts +7 -5
  63. package/dist/core/components/fields/factories/FieldValueFactory.js +57 -13
  64. package/dist/core/components/fields/factories/LinkFactory.d.ts +3 -3
  65. package/dist/core/components/fields/factories/LinkFactory.js +17 -8
  66. package/dist/core/components/fields/factories/MediaFactory.d.ts +13 -0
  67. package/dist/core/components/fields/factories/MediaFactory.js +212 -0
  68. package/dist/core/components/fields/factories/ObjectFactory.d.ts +3 -2
  69. package/dist/core/components/fields/factories/ObjectFactory.js +16 -2
  70. package/dist/core/components/fields/factories/TextFactory.d.ts +3 -3
  71. package/dist/core/components/fields/factories/TextFactory.js +16 -10
  72. package/dist/core/components/fields/link/LinkEditor.d.ts +2 -2
  73. package/dist/core/components/fields/link/LinkEditor.js +18 -6
  74. package/dist/core/components/fields/list/CreateFieldButton.js +1 -1
  75. package/dist/core/components/fields/media/MediaCard.d.ts +7 -0
  76. package/dist/core/components/fields/media/MediaCard.js +92 -0
  77. package/dist/core/components/fields/media/MediaEditor.d.ts +36 -0
  78. package/dist/core/components/fields/media/MediaEditor.js +264 -0
  79. package/dist/core/components/fields/media/index.d.ts +2 -0
  80. package/dist/core/components/fields/media/index.js +18 -0
  81. package/dist/core/components/fields/object/ObjectEditor.d.ts +2 -1
  82. package/dist/core/components/fields/object/ObjectEditor.js +16 -2
  83. package/dist/core/components/fields/page/PagePicker.js +1 -1
  84. package/dist/core/components/interaction/Combobox.js +1 -1
  85. package/dist/core/components/interaction/MultiSelectControls.js +2 -5
  86. package/dist/core/components/interaction/Popup.d.ts +11 -7
  87. package/dist/core/components/interaction/Popup.js +8 -6
  88. package/dist/core/components/interaction/QuickEditor.js +1 -1
  89. package/dist/core/components/interaction/QuickInput.d.ts +2 -4
  90. package/dist/core/components/interaction/QuickInput.js +6 -2
  91. package/dist/core/components/interaction/QuickPicker.js +1 -1
  92. package/dist/core/components/interaction/SideSheet.js +1 -1
  93. package/dist/core/components/interaction/centersheet/CenterSheet.js +7 -1
  94. package/dist/core/components/interaction/centersheet/CenterSheetContainer.js +3 -1
  95. package/dist/core/components/interaction/menu/Menu.d.ts +8 -19
  96. package/dist/core/components/interaction/menu/Menu.js +26 -60
  97. package/dist/core/components/interaction/menu/useMenuController.d.ts +4 -2
  98. package/dist/core/components/interaction/menu/useMenuController.js +4 -1
  99. package/dist/core/components/transitions/FadeIn.js +1 -1
  100. package/dist/core/components/visuals/Icon.d.ts +1 -1
  101. package/dist/core/components/visuals/Icon.js +3 -0
  102. package/dist/core/containers/AssetRepositoryContainer.d.ts +2 -0
  103. package/dist/core/containers/AssetRepositoryContainer.js +18 -0
  104. package/dist/core/containers/CollectionRepositoryContainer.d.ts +2 -0
  105. package/dist/core/containers/CollectionRepositoryContainer.js +18 -0
  106. package/dist/core/containers/PageRepositoryContainer.d.ts +2 -0
  107. package/dist/core/containers/PageRepositoryContainer.js +18 -0
  108. package/dist/core/containers/index.d.ts +3 -0
  109. package/dist/core/containers/index.js +19 -0
  110. package/dist/core/domain/Block.js +2 -1
  111. package/dist/core/domain/BlockConfiguration.d.ts +4 -1
  112. package/dist/core/domain/BlockConfiguration.js +59 -3
  113. package/dist/core/domain/Collection.d.ts +7 -25
  114. package/dist/core/domain/Collection.js +2 -16
  115. package/dist/core/domain/CollectionBrowser.d.ts +3 -2
  116. package/dist/core/domain/CollectionBrowser.js +3 -3
  117. package/dist/core/domain/CollectionFieldProxy.d.ts +12 -8
  118. package/dist/core/domain/CollectionFieldProxy.js +15 -9
  119. package/dist/core/domain/CollectionGroup.d.ts +0 -5
  120. package/dist/core/domain/CollectionGroup.js +0 -7
  121. package/dist/core/domain/CollectionSummary.d.ts +2 -2
  122. package/dist/core/domain/Collections.d.ts +3 -3
  123. package/dist/core/domain/Collections.js +4 -6
  124. package/dist/core/domain/ICollection.d.ts +72 -0
  125. package/dist/core/domain/ICollection.js +20 -0
  126. package/dist/core/domain/IPage.d.ts +16 -1
  127. package/dist/core/domain/Page.js +2 -2
  128. package/dist/core/domain/Pages.js +4 -6
  129. package/dist/core/domain/SectionBlock.js +2 -1
  130. package/dist/core/domain/Site.d.ts +4 -4
  131. package/dist/core/domain/Site.js +3 -5
  132. package/dist/core/domain/index.d.ts +1 -1
  133. package/dist/core/domain/index.js +1 -1
  134. package/dist/core/hooks/index.d.ts +4 -3
  135. package/dist/core/hooks/index.js +4 -3
  136. package/dist/core/hooks/useAssetRepository.d.ts +3 -0
  137. package/dist/core/hooks/useAssetRepository.js +11 -0
  138. package/dist/core/hooks/useCollection.d.ts +4 -4
  139. package/dist/core/hooks/useCollectionRepository.d.ts +3 -2
  140. package/dist/core/hooks/useCollectionRepository.js +4 -4
  141. package/dist/core/hooks/useCollections.js +4 -0
  142. package/dist/core/hooks/usePageRepository.d.ts +3 -2
  143. package/dist/core/hooks/usePageRepository.js +4 -4
  144. package/dist/core/hooks/useSite.js +4 -0
  145. package/dist/core/hooks/useTempFields.d.ts +2 -3
  146. package/dist/core/index.d.ts +1 -0
  147. package/dist/core/index.js +1 -0
  148. package/dist/core/repository/AssetRepository.d.ts +10 -0
  149. package/dist/core/repository/AssetRepository.js +22 -0
  150. package/dist/core/repository/CollectionRepository.d.ts +22 -21
  151. package/dist/core/repository/CollectionRepository.js +23 -161
  152. package/dist/core/repository/CollectionSerializer.d.ts +4 -1
  153. package/dist/core/repository/CollectionSerializer.js +3 -3
  154. package/dist/core/repository/IAssetRepository.d.ts +25 -0
  155. package/dist/core/repository/ICollectionRepository.d.ts +61 -0
  156. package/dist/core/repository/ICollectionRepository.js +2 -0
  157. package/dist/core/repository/IPageRepository.d.ts +40 -0
  158. package/dist/core/repository/IPageRepository.js +2 -0
  159. package/dist/core/repository/PageRepository.d.ts +5 -8
  160. package/dist/core/repository/PageRepository.js +7 -280
  161. package/dist/core/repository/SerializeCollectionUpdate.d.ts +8 -0
  162. package/dist/core/repository/SerializeCollectionUpdate.js +168 -0
  163. package/dist/core/repository/SerializePageUpdate.d.ts +10 -0
  164. package/dist/core/repository/SerializePageUpdate.js +292 -0
  165. package/dist/core/repository/index.d.ts +4 -0
  166. package/dist/core/repository/index.js +4 -0
  167. package/dist/core/splash/SplashContainer.d.ts +4 -2
  168. package/dist/core/splash/SplashContainer.js +3 -3
  169. package/dist/dashboard/screens/Dashboard.js +1 -1
  170. package/dist/devtools/screens/Devtools.js +1 -1
  171. package/dist/explore/components/CreatePageDialog.d.ts +2 -2
  172. package/dist/explore/screens/CollectionExplorer.js +1 -1
  173. package/dist/explore/screens/CollectionsExplorer.js +1 -1
  174. package/dist/explore/screens/PageExplorer.js +1 -1
  175. package/dist/explore/screens/SiteExplorer.js +1 -1
  176. package/dist/page/components/BlockEditor.js +1 -1
  177. package/dist/page/components/SettingsEditor.js +0 -7
  178. package/dist/page/components/config/BlockConfigButton.js +71 -14
  179. package/dist/page/screens/PageEditor.js +1 -1
  180. package/dist/styles/index.css +24 -20
  181. package/dist/styles/tailwind.js +1 -0
  182. package/dist/users/screens/UserExplorer.js +1 -1
  183. package/package.json +2 -2
  184. package/dist/core/domain/TranslateSchema.d.ts +0 -7
  185. /package/dist/core/{domain/TranslateSchema.js → repository/IAssetRepository.js} +0 -0
@@ -1,5 +1,6 @@
1
- import { EventBus, Field, FieldList, Language, ObjectField, Schema } from '@nascentdigital/funnel-core';
1
+ import { EventBus, Field, FieldList, FieldModel, Language, ObjectField, Schema } from '@nascentdigital/funnel-core';
2
2
  import type { Observable } from 'rxjs';
3
+ import type { Asset } from './Asset';
3
4
  import type { Block } from './Block';
4
5
  import type { IAssetStore } from './IAssetStore';
5
6
  import type { ICollectionStore } from './ICollectionStore';
@@ -7,6 +8,7 @@ import type { IPageRefStore } from './IPageRefStore';
7
8
  import type { ITagged } from './ITagged';
8
9
  import type { Item } from './Item';
9
10
  import type { PageSettings } from './PageSettings';
11
+ import type { PageSummary } from './PageSummary';
10
12
  import type { Section } from './Section';
11
13
  export interface IPage extends IAssetStore, ICollectionStore, IPageRefStore, ITagged {
12
14
  readonly template: Schema.Page;
@@ -24,6 +26,7 @@ export interface IPage extends IAssetStore, ICollectionStore, IPageRefStore, ITa
24
26
  readonly url: string;
25
27
  readonly createdOn: number;
26
28
  readonly updatedOn: number;
29
+ readonly asRef: IPage.Ref;
27
30
  publication: number | undefined;
28
31
  slug: string | undefined;
29
32
  deleteBlock(area: IPage.Area, key: string): void;
@@ -31,6 +34,7 @@ export interface IPage extends IAssetStore, ICollectionStore, IPageRefStore, ITa
31
34
  export declare namespace IPage {
32
35
  type Content = ReadonlyArray<Block | Section>;
33
36
  type Area = 'discover' | 'content';
37
+ type Savable = Section | Block | FieldModel;
34
38
  type Ref = {
35
39
  template: Schema.Page;
36
40
  id: Schema.Page.Id;
@@ -42,10 +46,21 @@ export declare namespace IPage {
42
46
  slug?: string;
43
47
  name: string;
44
48
  tags: Schema.Tag[];
49
+ state: Schema.Page.State;
50
+ errors: boolean;
45
51
  createdOn: number;
46
52
  updatedOn: number;
47
53
  publishedOn?: number;
48
54
  };
55
+ type References = {
56
+ pages: Ref[];
57
+ collections: Schema.Collection.Data.AsLink[];
58
+ assets: Asset[];
59
+ };
60
+ type WithSummary = {
61
+ summary: PageSummary;
62
+ page?: IPage;
63
+ };
49
64
  type Events = Event | Item.Event | Field.Event | ObjectField.Event | FieldList.Event;
50
65
  interface Event extends EventBus.Event<'Page', Event.Type> {
51
66
  page: IPage;
@@ -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
  /**
@@ -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,14 +15,12 @@ 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 = [];
22
22
  this._pages = new Map();
23
23
  this._pagesToSync = new Set();
24
- // start initial loading of data
25
- this.sync().catch(console.error);
26
24
  // listen to app state for page changes
27
25
  this._subscription = this.appState.pageEvents$.subscribe(e => this.onPageEvent(e));
28
26
  }
@@ -118,7 +116,7 @@ class Site {
118
116
  ? 'initializing'
119
117
  : 'syncing';
120
118
  // load overview
121
- this._overviews = await this.editorApi.getPagesOverview({ region: this.region.id, version: 'draft' });
119
+ this._overviews = await this.repository.getOverview({ region: this.region.id });
122
120
  // mark as ready
123
121
  this.state = 'ready';
124
122
  }
@@ -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 './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<TRepository extends ICollectionRepository = ICollectionRepository>(): TRepository;
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)({});
@@ -17,6 +17,10 @@ function usePossibleCollections() {
17
17
  if (!collections) {
18
18
  return;
19
19
  }
20
+ // sync if it's not ready
21
+ else if (collections.state === 'uninitialized') {
22
+ collections.sync().catch(console.error);
23
+ }
20
24
  // subscribe to changes
21
25
  const subscription = collections.events$.subscribe(() => touch());
22
26
  // unsubscribe on unmount
@@ -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<TRepository extends IPageRepository = IPageRepository>(): TRepository;
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
- const editorApi = (0, client_1.useEditorApi)();
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)({});
@@ -17,6 +17,10 @@ function usePossibleSite() {
17
17
  if (!site) {
18
18
  return;
19
19
  }
20
+ // sync if it's not ready
21
+ else if (site.state === 'uninitialized') {
22
+ site.sync().catch(console.error);
23
+ }
20
24
  // subscribe to changes
21
25
  const subscription = site.events$.subscribe(() => touch());
22
26
  // unsubscribe on unmount
@@ -1,6 +1,5 @@
1
- import { Schema } from '@nascentdigital/funnel-core';
2
- import { TranslateSchema } from '../domain';
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>;
@@ -2,6 +2,7 @@ export * from './app';
2
2
  export * from './auth';
3
3
  export * from './client';
4
4
  export * from './components';
5
+ export * from './containers';
5
6
  export * from './domain';
6
7
  export * from './hooks';
7
8
  export * from './repository';
@@ -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 { CollectionClient } from '@nascentdigital/funnel-cms';
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
- import { Collection, CollectionFieldProxy } from '../domain';
4
+ import { Collection, CollectionFieldProxy, ICollection } from '../domain';
6
5
  import { CollectionTarget } from './CollectionTarget';
7
- export declare class CollectionRepository {
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<import("../domain").CollectionGroup | undefined>;
11
- create({ eventBus, ...args }: CollectionRepository.CreateNewArgs): Promise<import("../domain").CollectionGroup>;
12
- createLanguage(args: CollectionRepository.CreateLanguageArgs): Promise<import("../domain").CollectionGroup>;
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
- serializeCollectionUpdate(collection: Collection | CollectionFieldProxy, savables: CollectionRepository.Savable[]): UpdateCollectionCommand.Data;
16
- private serializeFieldsUpdate;
17
- private serializeObjectFieldUpdate;
18
- private serializeFieldUpdate;
19
- private serializeListUpdate;
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: ICollection.Savable[]): UpdateCollectionCommand.Data;
29
30
  }