@nascentdigital/funnel-editor-contentful 5.0.1 → 5.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/dist/EditorApp.js +11 -9
  2. package/dist/EditorPageRouter.d.ts +1 -0
  3. package/dist/EditorPageRouter.js +40 -0
  4. package/dist/EntryEditor.js +30 -29
  5. package/dist/EntrySidebar.js +1 -1
  6. package/dist/asset/index.d.ts +1 -0
  7. package/dist/{core/api → asset}/index.js +1 -3
  8. package/dist/{core → asset}/repository/AssetRepository.js +3 -3
  9. package/dist/asset/repository/index.d.ts +1 -0
  10. package/dist/asset/repository/index.js +17 -0
  11. package/dist/collection/controller/{LocalCollectionController.d.ts → ContentfulCollectionController.d.ts} +17 -11
  12. package/dist/collection/controller/ContentfulCollectionController.js +278 -0
  13. package/dist/collection/controller/ContentfulCollectionControllerContainer.d.ts +5 -0
  14. package/dist/collection/controller/ContentfulCollectionControllerContainer.js +28 -0
  15. package/dist/collection/controller/index.d.ts +3 -4
  16. package/dist/collection/controller/index.js +3 -4
  17. package/dist/collection/controller/useContentfulCollectionController.d.ts +2 -0
  18. package/dist/collection/controller/useContentfulCollectionController.js +8 -0
  19. package/dist/{core → collection}/domain/Collection.d.ts +11 -2
  20. package/dist/{core → collection}/domain/Collection.js +75 -0
  21. package/dist/{core → collection}/domain/index.d.ts +0 -1
  22. package/dist/{core → collection}/domain/index.js +0 -1
  23. package/dist/collection/index.d.ts +1 -0
  24. package/dist/collection/index.js +1 -0
  25. package/dist/collection/repository/CollectionRepository.d.ts +49 -0
  26. package/dist/collection/repository/CollectionRepository.js +210 -0
  27. package/dist/collection/repository/index.d.ts +1 -0
  28. package/dist/collection/repository/index.js +17 -0
  29. package/dist/collection/screens/CollectionEditor.js +23 -6
  30. package/dist/core/client/ContentfulClientContainer.d.ts +8 -0
  31. package/dist/core/client/ContentfulClientContainer.js +43 -0
  32. package/dist/core/client/ContentfulClientContext.d.ts +8 -0
  33. package/dist/core/client/ContentfulClientContext.js +8 -0
  34. package/dist/core/client/index.d.ts +3 -0
  35. package/dist/core/client/index.js +19 -0
  36. package/dist/core/client/useContentfulClient.d.ts +4 -0
  37. package/dist/core/client/useContentfulClient.js +24 -0
  38. package/dist/core/contentful/ContentfulAsset.d.ts +3 -3
  39. package/dist/core/contentful/ContentfulAsset.js +5 -4
  40. package/dist/core/contentful/ContentfulCollection.d.ts +1 -1
  41. package/dist/core/contentful/ContentfulRefs.js +9 -9
  42. package/dist/core/index.d.ts +1 -2
  43. package/dist/core/index.js +1 -2
  44. package/dist/core/repository/CollectionSerializer.d.ts +1 -1
  45. package/dist/core/repository/CollectionSerializer.js +1 -1
  46. package/dist/core/repository/LocalCollectionRepository.d.ts +2 -2
  47. package/dist/core/repository/LocalPageRepository.d.ts +1 -1
  48. package/dist/core/repository/PageSerializer.d.ts +1 -1
  49. package/dist/core/repository/PageSerializer.js +2 -1
  50. package/dist/core/repository/RemoteCollectionRepository.d.ts +2 -2
  51. package/dist/core/repository/index.d.ts +0 -1
  52. package/dist/core/repository/index.js +0 -1
  53. package/dist/explore/components/Header.d.ts +26 -0
  54. package/dist/explore/components/Header.js +31 -0
  55. package/dist/explore/components/index.d.ts +1 -0
  56. package/dist/explore/components/index.js +17 -0
  57. package/dist/explore/index.d.ts +1 -0
  58. package/dist/explore/index.js +17 -0
  59. package/dist/explore/screens/Dashboard.d.ts +1 -0
  60. package/dist/explore/screens/Dashboard.js +22 -0
  61. package/dist/explore/screens/PageExplorer.d.ts +1 -0
  62. package/dist/explore/screens/PageExplorer.js +9 -0
  63. package/dist/explore/screens/SiteExplorer.d.ts +1 -0
  64. package/dist/explore/screens/SiteExplorer.js +24 -0
  65. package/dist/explore/screens/index.d.ts +3 -0
  66. package/dist/explore/screens/index.js +19 -0
  67. package/dist/page/controller/{LocalPageController.d.ts → ContentfulPageController.d.ts} +15 -9
  68. package/dist/page/controller/ContentfulPageController.js +277 -0
  69. package/dist/page/controller/ContentfulPageControllerContainer.d.ts +5 -0
  70. package/dist/page/controller/ContentfulPageControllerContainer.js +28 -0
  71. package/dist/page/controller/index.d.ts +3 -3
  72. package/dist/page/controller/index.js +3 -3
  73. package/dist/page/controller/useContentfulPageController.d.ts +2 -0
  74. package/dist/page/controller/useContentfulPageController.js +8 -0
  75. package/dist/{core → page}/domain/Page.d.ts +22 -11
  76. package/dist/{core → page}/domain/Page.js +138 -0
  77. package/dist/page/domain/index.d.ts +1 -0
  78. package/dist/page/domain/index.js +17 -0
  79. package/dist/page/index.d.ts +2 -0
  80. package/dist/page/index.js +2 -0
  81. package/dist/page/repository/PageRepository.d.ts +45 -0
  82. package/dist/page/repository/PageRepository.js +224 -0
  83. package/dist/page/repository/index.d.ts +1 -0
  84. package/dist/page/repository/index.js +17 -0
  85. package/dist/page/screens/PageEditor.js +23 -7
  86. package/package.json +8 -4
  87. package/dist/collection/controller/LocalCollectionController.js +0 -200
  88. package/dist/collection/controller/LocalCollectionControllerContainer.d.ts +0 -8
  89. package/dist/collection/controller/LocalCollectionControllerContainer.js +0 -36
  90. package/dist/collection/controller/LocalCollectionControllerContext.d.ts +0 -7
  91. package/dist/collection/controller/LocalCollectionControllerContext.js +0 -6
  92. package/dist/collection/controller/useLocalCollectionController.d.ts +0 -2
  93. package/dist/collection/controller/useLocalCollectionController.js +0 -10
  94. package/dist/core/api/EditorApiClient.d.ts +0 -7
  95. package/dist/core/api/EditorApiClient.js +0 -29
  96. package/dist/core/api/EditorApiContainer.d.ts +0 -5
  97. package/dist/core/api/EditorApiContainer.js +0 -16
  98. package/dist/core/api/EditorApiContext.d.ts +0 -7
  99. package/dist/core/api/EditorApiContext.js +0 -6
  100. package/dist/core/api/index.d.ts +0 -3
  101. package/dist/core/api/useEditorApi.d.ts +0 -2
  102. package/dist/core/api/useEditorApi.js +0 -12
  103. package/dist/page/controller/LocalPageController.js +0 -190
  104. package/dist/page/controller/LocalPageControllerContainer.d.ts +0 -8
  105. package/dist/page/controller/LocalPageControllerContainer.js +0 -36
  106. package/dist/page/controller/LocalPageControllerContext.d.ts +0 -7
  107. package/dist/page/controller/LocalPageControllerContext.js +0 -6
  108. package/dist/page/controller/useLocalPageController.d.ts +0 -2
  109. package/dist/page/controller/useLocalPageController.js +0 -10
  110. /package/dist/{core → asset}/repository/AssetRepository.d.ts +0 -0
@@ -8,14 +8,14 @@ var ContentfulAsset;
8
8
  ContentfulAsset.contentTypeId = 'asset';
9
9
  // helpers
10
10
  async function upload(args, sdk) {
11
- var _a, _b, _c;
12
11
  // setup
13
- const locale = sdk.locales.default;
12
+ var _a, _b, _c;
14
13
  // upload file
15
14
  const uploadResult = await sdk.cma.upload.create({}, {
16
15
  file: await args.file.arrayBuffer()
17
16
  });
18
17
  // create contentful asset
18
+ const locale = sdk.locales.default;
19
19
  const contentfulAsset = await sdk.cma.asset.create({}, {
20
20
  fields: {
21
21
  title: { [locale]: args.name },
@@ -45,7 +45,7 @@ var ContentfulAsset;
45
45
  brand: { [locale]: (_c = args.brand) !== null && _c !== void 0 ? _c : null },
46
46
  type: { [locale]: args.type },
47
47
  scope: { [locale]: args.scope },
48
- tags: { [locale]: JSON.stringify(args.tags) },
48
+ tags: { [locale]: args.tags },
49
49
  url: { [locale]: 'https:' + processedAsset.fields.file[locale].url },
50
50
  size: { [locale]: args.size },
51
51
  metadata: { [locale]: args.metadata },
@@ -64,6 +64,7 @@ var ContentfulAsset;
64
64
  ContentfulAsset.upload = upload;
65
65
  function serialize(entry, locale) {
66
66
  var _a, _b;
67
+ console.debug('[ContentfulAsset] serializing asset', entry);
67
68
  // extract fields
68
69
  const { name, description, type, brand, metadata, scope, tags, url, size } = entry.fields;
69
70
  // create asset
@@ -78,7 +79,7 @@ var ContentfulAsset;
78
79
  brand: (_a = brand === null || brand === void 0 ? void 0 : brand[locale]) !== null && _a !== void 0 ? _a : undefined,
79
80
  metadata: metadata[locale],
80
81
  scope: scope[locale],
81
- tags: JSON.parse((_b = tags === null || tags === void 0 ? void 0 : tags[locale]) !== null && _b !== void 0 ? _b : '[]'),
82
+ tags: (_b = tags === null || tags === void 0 ? void 0 : tags[locale]) !== null && _b !== void 0 ? _b : [],
82
83
  url: url[locale],
83
84
  size: size[locale]
84
85
  }
@@ -11,11 +11,11 @@ export type ContentfulCollection = Contentful.Base & {
11
11
  version: number;
12
12
  tags?: string;
13
13
  fields: object;
14
- references?: Contentful.Link[];
15
14
  pageRefIds?: string;
16
15
  state: string;
17
16
  errors: boolean;
18
17
  publishedOn?: number;
18
+ references?: Contentful.Link[];
19
19
  };
20
20
  export declare namespace ContentfulCollection {
21
21
  const contentTypeId: "collection";
@@ -81,7 +81,7 @@ var ContentfulRefs;
81
81
  }
82
82
  ContentfulRefs.find = find;
83
83
  function serialize(refs, locale) {
84
- var _a;
84
+ var _a, _b, _c, _d;
85
85
  // create empty refs
86
86
  const assets = [];
87
87
  const pages = [];
@@ -98,21 +98,21 @@ var ContentfulRefs;
98
98
  if (!file) {
99
99
  throw new funnel_core_1.NotFoundError(`cannot find Contentful media "${fileId}" for asset "${entry.sys.id}"`);
100
100
  }
101
+ console.debug('[ContentfulRefs/serialize] parsing asset', { entry, file });
101
102
  assets.push({
102
103
  __root: 'asset',
103
104
  type: 'asset',
104
105
  value: {
105
106
  id: entry.sys.id,
106
107
  name: entry.fields.name[locale],
107
- metadata: entry.fields.metadata[locale],
108
- // TODO: add real fields in contentful
109
- brand: 'funnel',
108
+ description: (_d = (_b = entry.fields.description[locale]) !== null && _b !== void 0 ? _b : (_c = file.fields.description) === null || _c === void 0 ? void 0 : _c[locale]) !== null && _d !== void 0 ? _d : undefined,
109
+ type: entry.fields.type[locale],
110
+ brand: entry.fields.brand[locale],
111
+ scope: entry.fields.scope[locale],
110
112
  tags: [],
111
- scope: 'global',
112
- type: 'image/png',
113
113
  url: 'https:' + file.fields.file[locale].url,
114
- description: '',
115
- size: 0
114
+ size: entry.fields.size[locale],
115
+ metadata: entry.fields.metadata[locale]
116
116
  }
117
117
  });
118
118
  break;
@@ -121,7 +121,7 @@ var ContentfulRefs;
121
121
  case ContentfulPage_1.ContentfulPage.contentTypeId: {
122
122
  // convert to link and get template
123
123
  const pageEntry = entry;
124
- const _b = ContentfulPage_1.ContentfulPage.serializeRemoteLink(pageEntry, locale), { type, tags } = _b, data = __rest(_b, ["type", "tags"]);
124
+ const _e = ContentfulPage_1.ContentfulPage.serializeRemoteLink(pageEntry, locale), { type, tags } = _e, data = __rest(_e, ["type", "tags"]);
125
125
  const template = funnel_core_1.Schema.Site.getPage(type, data.region);
126
126
  // push link
127
127
  pages.push(Object.assign({ template, tags: components_1.TagSerializer.deserializeTags({
@@ -1,5 +1,4 @@
1
- export * from './api';
2
1
  export * from './bridge';
2
+ export * from './client';
3
3
  export * from './contentful';
4
- export * from './domain';
5
4
  export * from './repository';
@@ -14,8 +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("./api"), exports);
18
17
  __exportStar(require("./bridge"), exports);
18
+ __exportStar(require("./client"), exports);
19
19
  __exportStar(require("./contentful"), exports);
20
- __exportStar(require("./domain"), exports);
21
20
  __exportStar(require("./repository"), exports);
@@ -1,5 +1,5 @@
1
1
  import { EventBus, Schema } from '@nascentdigital/funnel-core';
2
- import { Collection } from '../domain';
2
+ import { Collection } from '../../collection/domain';
3
3
  export declare namespace CollectionSerializer {
4
4
  type DeserializeCollectionArgs = {
5
5
  flattenedCollection: Schema.Collection.FlattenedData;
@@ -14,7 +14,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
14
14
  exports.CollectionSerializer = void 0;
15
15
  const funnel_core_1 = require("@nascentdigital/funnel-core");
16
16
  const components_1 = require("@nascentdigital/funnel-editor/components");
17
- const domain_1 = require("../domain");
17
+ const domain_1 = require("../../collection/domain");
18
18
  // namespace
19
19
  var CollectionSerializer;
20
20
  (function (CollectionSerializer) {
@@ -2,7 +2,7 @@ import { EditorAppSDK } from '@contentful/app-sdk';
2
2
  import { CollectionClient } from '@nascentdigital/funnel-cms';
3
3
  import { EventBus, Schema } from '@nascentdigital/funnel-core';
4
4
  import { CollectionFieldProxy, ICollection, ICollectionRepository } from '@nascentdigital/funnel-editor/components';
5
- import { Collection } from '../domain';
5
+ import { Collection } from '../../collection/domain';
6
6
  export declare class LocalCollectionRepository implements ICollectionRepository {
7
7
  readonly sdk: EditorAppSDK;
8
8
  constructor(sdk: EditorAppSDK);
@@ -16,7 +16,7 @@ export declare class LocalCollectionRepository implements ICollectionRepository
16
16
  getItems(args: ICollectionRepository.GetItems.Args): Promise<ICollectionRepository.GetItems.Result>;
17
17
  get(args: ICollectionRepository.Get.Args): Promise<ICollectionRepository.Get.Result>;
18
18
  update(args: ICollectionRepository.Update.Args): Promise<ICollectionRepository.Update.Result>;
19
- serializeUpdate(collection: Collection | CollectionFieldProxy, savables: ICollectionRepository.Savable[]): ICollectionRepository.SerializeUpdates.Result;
19
+ serializeUpdate(collection: Collection | CollectionFieldProxy, savables: ICollection.Savable[]): ICollectionRepository.SerializeUpdates.Result;
20
20
  private onSave;
21
21
  }
22
22
  export declare namespace LocalCollectionRepository {
@@ -1,6 +1,6 @@
1
1
  import { EditorAppSDK } from '@contentful/app-sdk';
2
2
  import { EventBus } from '@nascentdigital/funnel-core';
3
- import { Page } from '../domain';
3
+ import { Page } from '../../page/domain';
4
4
  export declare class LocalPageRepository {
5
5
  readonly sdk: EditorAppSDK;
6
6
  constructor(sdk: EditorAppSDK);
@@ -1,5 +1,5 @@
1
1
  import { EventBus, Schema } from '@nascentdigital/funnel-core';
2
- import { Page } from '../domain';
2
+ import { Page } from '../../page/domain';
3
3
  export declare namespace PageSerializer {
4
4
  type DeserializePageArgs = {
5
5
  data: Schema.Page.Data;
@@ -14,7 +14,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
14
14
  exports.PageSerializer = void 0;
15
15
  const funnel_core_1 = require("@nascentdigital/funnel-core");
16
16
  const components_1 = require("@nascentdigital/funnel-editor/components");
17
- const domain_1 = require("../domain");
17
+ const domain_1 = require("../../page/domain");
18
18
  // namespace
19
19
  var PageSerializer;
20
20
  (function (PageSerializer) {
@@ -27,6 +27,7 @@ var PageSerializer;
27
27
  const { discover: discoverSnapshot = {}, content: contentSnapshot = {} } = snapshot !== null && snapshot !== void 0 ? snapshot : {};
28
28
  // get page schema
29
29
  const template = funnel_core_1.Schema.Site.getPage(data.type, data.region);
30
+ console.debug('[PageSerializer.deserializePage] template', { template, data });
30
31
  // create page
31
32
  return new domain_1.Page(Object.assign(Object.assign({}, dataRest), { template, tags: components_1.TagSerializer.deserializeTags({
32
33
  groups: template.tags,
@@ -1,7 +1,7 @@
1
1
  import { EditorAppSDK } from '@contentful/app-sdk';
2
2
  import { Schema } from '@nascentdigital/funnel-core';
3
3
  import { CollectionFieldProxy, ICollection, ICollectionRepository } from '@nascentdigital/funnel-editor/components';
4
- import { Collection } from '../domain';
4
+ import { Collection } from '../../collection/domain';
5
5
  export declare class RemoteCollectionRepository implements ICollectionRepository {
6
6
  readonly sdk: EditorAppSDK;
7
7
  constructor(sdk: EditorAppSDK);
@@ -14,6 +14,6 @@ export declare class RemoteCollectionRepository implements ICollectionRepository
14
14
  getItems({ type, tags, language }: ICollectionRepository.GetItems.Args): Promise<ICollectionRepository.GetItems.Result>;
15
15
  get({ id }: ICollectionRepository.Get.Args): Promise<ICollectionRepository.Get.Result>;
16
16
  update(args: ICollectionRepository.Update.Args): Promise<ICollectionRepository.Update.Result>;
17
- serializeUpdate(collection: Collection | CollectionFieldProxy, savables: ICollectionRepository.Savable[]): ICollectionRepository.SerializeUpdates.Result;
17
+ serializeUpdate(collection: Collection | CollectionFieldProxy, savables: ICollection.Savable[]): ICollectionRepository.SerializeUpdates.Result;
18
18
  getReferences(collectionId: Schema.Collection.Id): Promise<ICollection.References>;
19
19
  }
@@ -1,4 +1,3 @@
1
- export * from './AssetRepository';
2
1
  export * from './LocalCollectionRepository';
3
2
  export * from './LocalPageRepository';
4
3
  export * from './RemoteCollectionRepository';
@@ -14,7 +14,6 @@ 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("./AssetRepository"), exports);
18
17
  __exportStar(require("./LocalCollectionRepository"), exports);
19
18
  __exportStar(require("./LocalPageRepository"), exports);
20
19
  __exportStar(require("./RemoteCollectionRepository"), exports);
@@ -0,0 +1,26 @@
1
+ import { Callback } from '@nascentdigital/funnel-core';
2
+ import { PropsWithChildren } from 'react';
3
+ export declare function Header({ className, title, breadcrumbs: breadcrumbsRaw, highlightBreadcrumb, back, onBack, disableBack, hideControls, children }: Header.Props): import("react/jsx-runtime").JSX.Element;
4
+ export declare namespace Header {
5
+ type Breadcrumb = Breadcrumb.Label | Breadcrumb.Link;
6
+ namespace Breadcrumb {
7
+ type Label = string;
8
+ type Link = {
9
+ label: string;
10
+ url: string;
11
+ };
12
+ }
13
+ type Props = PropsWithChildren & {
14
+ className?: string;
15
+ title?: string;
16
+ subtitle?: string;
17
+ label?: string;
18
+ breadcrumbs?: ReadonlyArray<Breadcrumb>;
19
+ highlightBreadcrumb?: boolean;
20
+ back: BackVariant;
21
+ onBack?: Callback.Void;
22
+ disableBack?: boolean;
23
+ hideControls?: boolean;
24
+ };
25
+ type BackVariant = 'back' | 'close' | 'none';
26
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Header = Header;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const funnel_core_1 = require("@nascentdigital/funnel-core");
9
+ const components_1 = require("@nascentdigital/funnel-editor/components");
10
+ const classnames_1 = __importDefault(require("classnames"));
11
+ const react_router_1 = require("react-router");
12
+ const react_1 = require("motion/react");
13
+ // component
14
+ function Header({ className, title, breadcrumbs: breadcrumbsRaw, highlightBreadcrumb = false, back, onBack = funnel_core_1.Fn.NoOp, disableBack = false, hideControls, children }) {
15
+ // bind props + hooks
16
+ const breadcrumbs = breadcrumbsRaw !== null && breadcrumbsRaw !== void 0 ? breadcrumbsRaw : [];
17
+ const breadcrumbsEndIndex = breadcrumbs.length - 1;
18
+ // render
19
+ return ((0, jsx_runtime_1.jsxs)("nav", { className: (0, classnames_1.default)(className, 'h-48 flex items-center gap-l4 px-l8', 'label-sm text-content-primary bg-background border-b border-solid border-border-l1'), children: [back === 'none'
20
+ // logo
21
+ ?
22
+ (0, jsx_runtime_1.jsx)("span", { className: "w-36 h-36 flex justify-center items-center", children: (0, jsx_runtime_1.jsx)(components_1.Logo, { size: 28 }) })
23
+ // back/close
24
+ :
25
+ (0, jsx_runtime_1.jsx)(components_1.IconButton, { icon: back === 'back' ? 'ArrowLeft' : 'X', onClick: onBack, disabled: disableBack }), (0, jsx_runtime_1.jsx)("ul", { className: "flex-1 flex items-center gap-l5", children: (0, jsx_runtime_1.jsx)(react_1.AnimatePresence, { children: breadcrumbs.map((breadcrumb, index) => (0, jsx_runtime_1.jsxs)(react_1.motion.li, { className: "flex items-center gap-l5", variants: components_1.Animate.Variants.fade, initial: "initial", animate: "animate", exit: "exit", layout: true, children: [index > 0 &&
26
+ (0, jsx_runtime_1.jsx)("span", { children: "/" }), (0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)({ 'label-sm label-strong': highlightBreadcrumb && index === breadcrumbsEndIndex }), children: typeof breadcrumb === 'string'
27
+ ?
28
+ (0, jsx_runtime_1.jsx)("span", { children: breadcrumb })
29
+ :
30
+ (0, jsx_runtime_1.jsx)(react_router_1.Link, { to: breadcrumb.url, children: breadcrumb.label }) })] }, index)) }) }), (0, jsx_runtime_1.jsx)("div", { className: "h-full flex items-center gap-l6", children: !hideControls && children })] }));
31
+ }
@@ -0,0 +1 @@
1
+ export * from './Header';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./Header"), exports);
@@ -0,0 +1 @@
1
+ export * from './screens';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./screens"), exports);
@@ -0,0 +1 @@
1
+ export declare function Dashboard(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Dashboard = Dashboard;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const funnel_core_1 = require("@nascentdigital/funnel-core");
6
+ const components_1 = require("@nascentdigital/funnel-editor/components");
7
+ const react_1 = require("react");
8
+ const react_router_1 = require("react-router");
9
+ const components_2 = require("../components");
10
+ // screen
11
+ function Dashboard() {
12
+ // bind hooks
13
+ const brand = funnel_core_1.AppConfig.brandConfig();
14
+ const splash = (0, components_1.useSplash)();
15
+ const { collections } = funnel_core_1.Schema.Site.current();
16
+ // dismiss splash
17
+ (0, react_1.useEffect)(() => {
18
+ splash.dismiss();
19
+ }, [splash]);
20
+ // render
21
+ return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(components_2.Header, { breadcrumbs: ['Dashboard'], back: "none" }), (0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)(react_router_1.Link, { to: "/contentful/pages", children: "Site Explorer" }) })] }));
22
+ }
@@ -0,0 +1 @@
1
+ export declare function PageExplorer(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PageExplorer = PageExplorer;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ // screen
6
+ function PageExplorer() {
7
+ // render
8
+ return ((0, jsx_runtime_1.jsx)("div", { children: "Page" }));
9
+ }
@@ -0,0 +1 @@
1
+ export declare function SiteExplorer(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SiteExplorer = SiteExplorer;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const components_1 = require("@nascentdigital/funnel-editor/components");
6
+ const react_1 = require("react");
7
+ const react_router_1 = require("react-router");
8
+ const components_2 = require("../components");
9
+ // screen
10
+ function SiteExplorer() {
11
+ // bind hooks
12
+ const navigate = (0, react_router_1.useNavigate)();
13
+ const site = (0, components_1.useSite)();
14
+ const splash = (0, components_1.useSplash)();
15
+ const { ready } = site;
16
+ // dismiss splash
17
+ (0, react_1.useEffect)(() => {
18
+ if (ready) {
19
+ splash.dismiss();
20
+ }
21
+ }, [splash, ready]);
22
+ // render
23
+ return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(components_2.Header, { breadcrumbs: ['Dashboard', 'Sites'], back: "back", onBack: () => navigate('/contentful') }), (0, jsx_runtime_1.jsx)(react_router_1.Link, { to: "/contentful", children: "Back to Dashboard" })] }));
24
+ }
@@ -0,0 +1,3 @@
1
+ export * from './Dashboard';
2
+ export * from './PageExplorer';
3
+ export * from './SiteExplorer';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./Dashboard"), exports);
18
+ __exportStar(require("./PageExplorer"), exports);
19
+ __exportStar(require("./SiteExplorer"), exports);
@@ -1,15 +1,19 @@
1
+ import { EntrySys } from '@contentful/app-sdk';
1
2
  import { Language } from '@nascentdigital/funnel-core';
2
3
  import { IPage, IPageController, PageSummary } from '@nascentdigital/funnel-editor/components';
3
- import { Page, LocalPageRepository, RemotePageRepository } from '../../core';
4
- export declare class LocalPageController implements IPageController {
5
- readonly localRepository: LocalPageRepository;
6
- readonly remoteRepository: RemotePageRepository;
4
+ import { Page } from '../domain';
5
+ import { PageRepository } from '../repository';
6
+ export declare class ContentfulPageController implements IPageController {
7
+ readonly pageRepository: PageRepository;
7
8
  private readonly _eventBus;
8
9
  private _state;
9
10
  private _pageSummary?;
10
11
  private _page?;
12
+ private _pageSys?;
13
+ private _queuedSave?;
14
+ private _queuedSync?;
11
15
  private _pageSubscription?;
12
- constructor({ localRepository, remoteRepository }: LocalPageController.ConstructorArgs);
16
+ constructor(args: ContentfulPageController.ConstructorArgs);
13
17
  get events$(): import("rxjs").Observable<IPage.Event | IPageController.Event>;
14
18
  get saved$(): import("rxjs").Observable<[IPageController.StateChangedEvent, IPageController.StateChangedEvent]>;
15
19
  get state(): IPageController.State;
@@ -20,17 +24,19 @@ export declare class LocalPageController implements IPageController {
20
24
  private set pageSummary(value);
21
25
  get page(): Page | undefined;
22
26
  private set page(value);
23
- sync(updatedOn: number): Promise<void>;
27
+ get pageSys(): EntrySys | undefined;
28
+ private set pageSys(value);
29
+ sync(updatedSys: EntrySys): Promise<void>;
24
30
  load(): Promise<void>;
25
31
  create(target: IPageController.Target): Promise<void>;
26
32
  save(page: Page): Promise<void>;
27
33
  reload(): Promise<void>;
28
34
  unpublish(): Promise<void>;
35
+ private processQueues;
29
36
  private raiseEvent;
30
37
  }
31
- export declare namespace LocalPageController {
38
+ export declare namespace ContentfulPageController {
32
39
  type ConstructorArgs = {
33
- localRepository: LocalPageRepository;
34
- remoteRepository: RemotePageRepository;
40
+ pageRepository: PageRepository;
35
41
  };
36
42
  }