@atlaskit/editor-synced-block-renderer 3.0.1 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # @atlaskit/editor-synced-block-renderer
2
2
 
3
+ ## 3.1.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`aa14795cecd60`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/aa14795cecd60) -
8
+ EDITOR-2350 Pass media options to sync block nested renderer.
9
+ - Updated dependencies
10
+
11
+ ## 3.1.0
12
+
13
+ ### Minor Changes
14
+
15
+ - [`261fa27c56fd0`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/261fa27c56fd0) -
16
+ EDITOR-2533 implement retry function for sync-block renderer
17
+
18
+ ### Patch Changes
19
+
20
+ - Updated dependencies
21
+
3
22
  ## 3.0.1
4
23
 
5
24
  ### Patch Changes
@@ -24,6 +24,9 @@
24
24
  {
25
25
  "path": "../../../design-system/css/afm-cc/tsconfig.json"
26
26
  },
27
+ {
28
+ "path": "../../editor-plugin-synced-block/afm-cc/tsconfig.json"
29
+ },
27
30
  {
28
31
  "path": "../../editor-synced-block-provider/afm-cc/tsconfig.json"
29
32
  },
@@ -1,24 +1,36 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.getSyncedBlockNodeComponent = void 0;
8
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
+ var _editorSyncedBlockProvider = require("@atlaskit/editor-synced-block-provider");
9
8
  var _SyncedBlockNodeComponentRenderer = require("./ui/SyncedBlockNodeComponentRenderer");
10
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
11
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
12
- var getSyncedBlockNodeComponent = exports.getSyncedBlockNodeComponent = function getSyncedBlockNodeComponent(dataProvider, doc) {
9
+ var getSyncBlockNodesFromContent = function getSyncBlockNodesFromContent(content) {
10
+ return content.map(function (node) {
11
+ return (0, _editorSyncedBlockProvider.convertSyncBlockJSONNodeToSyncBlockNode)(node);
12
+ }).filter(function (node) {
13
+ return node !== undefined;
14
+ });
15
+ };
16
+
17
+ // For rendering reference synced block nodes in Renderer
18
+ var getSyncedBlockNodeComponent = exports.getSyncedBlockNodeComponent = function getSyncedBlockNodeComponent(_ref) {
19
+ var doc = _ref.doc,
20
+ syncBlockProvider = _ref.syncBlockProvider,
21
+ syncBlockRendererOptions = _ref.syncBlockRendererOptions;
13
22
  var content = doc.content;
14
23
  var isEmpty = !content || !Array.isArray(content) || content.length === 0;
15
- var syncBlockNodes = isEmpty ? [] : content.filter(function (node) {
16
- return node.type === 'syncBlock';
17
- });
18
- var dataPromise = dataProvider.fetchNodesData(syncBlockNodes);
24
+ var syncBlockNodes = isEmpty ? [] : getSyncBlockNodesFromContent(content);
25
+ var syncBlockStoreManager = new _editorSyncedBlockProvider.SyncBlockStoreManager(syncBlockProvider);
26
+
27
+ // Pre-fetch sync block data
28
+ syncBlockStoreManager.getReferenceSyncBlockStoreManager().fetchSyncBlocksData(syncBlockNodes);
19
29
  return function (props) {
20
- return (0, _SyncedBlockNodeComponentRenderer.SyncedBlockNodeComponentRenderer)(_objectSpread(_objectSpread({}, props), {}, {
21
- dataPromise: dataPromise
22
- }));
30
+ return (0, _SyncedBlockNodeComponentRenderer.SyncedBlockNodeComponentRenderer)({
31
+ nodeProps: props,
32
+ syncBlockStoreManager: syncBlockStoreManager,
33
+ rendererOptions: syncBlockRendererOptions
34
+ });
23
35
  };
24
36
  };
@@ -7,11 +7,16 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.getSyncedBlockRenderer = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _SyncedBlockRenderer = require("./ui/SyncedBlockRenderer");
10
+ // For rendering reference synced block nodes in Editor
10
11
  var getSyncedBlockRenderer = exports.getSyncedBlockRenderer = function getSyncedBlockRenderer(_ref) {
11
12
  var syncBlockRendererDataProviders = _ref.syncBlockRendererDataProviders,
12
- useFetchSyncBlockData = _ref.useFetchSyncBlockData;
13
- return /*#__PURE__*/_react.default.createElement(_SyncedBlockRenderer.SyncedBlockRenderer, {
14
- syncBlockRendererDataProviders: syncBlockRendererDataProviders,
15
- useFetchSyncBlockData: useFetchSyncBlockData
16
- });
13
+ syncBlockRendererOptions = _ref.syncBlockRendererOptions;
14
+ return function (_ref2) {
15
+ var useFetchSyncBlockData = _ref2.useFetchSyncBlockData;
16
+ return /*#__PURE__*/_react.default.createElement(_SyncedBlockRenderer.SyncedBlockRenderer, {
17
+ syncBlockRendererOptions: syncBlockRendererOptions,
18
+ syncBlockRendererDataProviders: syncBlockRendererDataProviders,
19
+ useFetchSyncBlockData: useFetchSyncBlockData
20
+ });
21
+ };
17
22
  };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -1,63 +1,82 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.SyncedBlockNodeComponentRenderer = void 0;
9
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
- var _react = _interopRequireWildcard(require("react"));
8
+ var _react = _interopRequireDefault(require("react"));
11
9
  var _editorSyncedBlockProvider = require("@atlaskit/editor-synced-block-provider");
12
10
  var _renderer = require("@atlaskit/renderer");
13
11
  var _actions = require("@atlaskit/renderer/actions");
14
12
  var _SyncedBlockErrorComponent = require("./SyncedBlockErrorComponent");
15
13
  var _SyncedBlockLoadingState = require("./SyncedBlockLoadingState");
16
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
17
- var SyncedBlockNodeComponentRenderer = exports.SyncedBlockNodeComponentRenderer = function SyncedBlockNodeComponentRenderer(props) {
18
- var _useState = (0, _react.useState)(null),
19
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
20
- data = _useState2[0],
21
- setData = _useState2[1];
22
- (0, _react.useEffect)(function () {
23
- if (!props.dataPromise) {
24
- return;
25
- }
26
- if (data) {
27
- return;
28
- }
29
- props.dataPromise.then(function (data) {
30
- setData(data);
31
- });
32
- }, [props.dataPromise, data]);
33
- if (!data) {
14
+ var SyncedBlockNodeComponentRenderer = exports.SyncedBlockNodeComponentRenderer = function SyncedBlockNodeComponentRenderer(_ref) {
15
+ var nodeProps = _ref.nodeProps,
16
+ syncBlockStoreManager = _ref.syncBlockStoreManager,
17
+ rendererOptions = _ref.rendererOptions;
18
+ var resourceId = nodeProps.resourceId,
19
+ localId = nodeProps.localId,
20
+ providers = nodeProps.providers;
21
+ var _ref2 = rendererOptions !== null && rendererOptions !== void 0 ? rendererOptions : {},
22
+ allowAltTextOnImages = _ref2.allowAltTextOnImages,
23
+ allowAnnotations = _ref2.allowAnnotations,
24
+ allowColumnSorting = _ref2.allowColumnSorting,
25
+ allowCopyToClipboard = _ref2.allowCopyToClipboard,
26
+ allowCustomPanels = _ref2.allowCustomPanels,
27
+ allowHeadingAnchorLinks = _ref2.allowHeadingAnchorLinks,
28
+ allowPlaceholderText = _ref2.allowPlaceholderText,
29
+ allowRendererContainerStyles = _ref2.allowRendererContainerStyles,
30
+ allowSelectAllTrap = _ref2.allowSelectAllTrap,
31
+ allowUgcScrubber = _ref2.allowUgcScrubber,
32
+ allowWrapCodeBlock = _ref2.allowWrapCodeBlock,
33
+ emojiResourceConfig = _ref2.emojiResourceConfig,
34
+ media = _ref2.media,
35
+ smartLinks = _ref2.smartLinks,
36
+ stickyHeaders = _ref2.stickyHeaders;
37
+ var _useFetchSyncBlockDat = (0, _editorSyncedBlockProvider.useFetchSyncBlockData)(syncBlockStoreManager, resourceId, localId),
38
+ syncBlockInstance = _useFetchSyncBlockDat.syncBlockInstance,
39
+ isLoading = _useFetchSyncBlockDat.isLoading;
40
+ if (isLoading && !syncBlockInstance) {
34
41
  return /*#__PURE__*/_react.default.createElement(_SyncedBlockLoadingState.SyncedBlockLoadingState, null);
35
42
  }
36
- var fetchResult = data.find(function (item) {
37
- return item.resourceId === props.resourceId;
38
- });
39
- if (fetchResult !== null && fetchResult !== void 0 && fetchResult.error || !(fetchResult !== null && fetchResult !== void 0 && fetchResult.data)) {
40
- var _fetchResult$error;
43
+ if (syncBlockInstance !== null && syncBlockInstance !== void 0 && syncBlockInstance.error || !(syncBlockInstance !== null && syncBlockInstance !== void 0 && syncBlockInstance.data)) {
44
+ var _syncBlockInstance$er;
41
45
  return /*#__PURE__*/_react.default.createElement(_SyncedBlockErrorComponent.SyncedBlockErrorComponent, {
42
- error: (_fetchResult$error = fetchResult === null || fetchResult === void 0 ? void 0 : fetchResult.error) !== null && _fetchResult$error !== void 0 ? _fetchResult$error : _editorSyncedBlockProvider.SyncBlockError.Errored,
43
- resourceId: props.resourceId
46
+ error: (_syncBlockInstance$er = syncBlockInstance === null || syncBlockInstance === void 0 ? void 0 : syncBlockInstance.error) !== null && _syncBlockInstance$er !== void 0 ? _syncBlockInstance$er : _editorSyncedBlockProvider.SyncBlockError.Errored,
47
+ resourceId: resourceId
44
48
  });
45
49
  }
46
50
  var syncBlockDoc = {
47
- content: fetchResult.data.content,
51
+ content: syncBlockInstance.data.content,
48
52
  version: 1,
49
53
  type: 'doc'
50
54
  };
51
55
  return /*#__PURE__*/_react.default.createElement(_actions.RendererActionsContext, null, /*#__PURE__*/_react.default.createElement("div", {
52
56
  "data-sync-block": true,
53
57
  "data-testid": "sync-block-renderer-wrapper",
54
- "data-resource-id": props.resourceId,
55
- "data-local-id": props.localId
58
+ "data-resource-id": resourceId,
59
+ "data-local-id": localId
56
60
  }, /*#__PURE__*/_react.default.createElement(_renderer.ReactRenderer, {
57
61
  appearance: "full-width",
58
62
  adfStage: "stage0",
59
63
  document: syncBlockDoc,
60
64
  disableHeadingIDs: true,
61
- dataProviders: props.providers
65
+ dataProviders: providers,
66
+ allowAltTextOnImages: allowAltTextOnImages,
67
+ allowAnnotations: allowAnnotations,
68
+ allowColumnSorting: allowColumnSorting,
69
+ allowCopyToClipboard: allowCopyToClipboard,
70
+ allowCustomPanels: allowCustomPanels,
71
+ allowHeadingAnchorLinks: allowHeadingAnchorLinks,
72
+ allowPlaceholderText: allowPlaceholderText,
73
+ allowRendererContainerStyles: allowRendererContainerStyles,
74
+ allowSelectAllTrap: allowSelectAllTrap,
75
+ allowUgcScrubber: allowUgcScrubber,
76
+ allowWrapCodeBlock: allowWrapCodeBlock,
77
+ emojiResourceConfig: emojiResourceConfig,
78
+ media: media,
79
+ smartLinks: smartLinks,
80
+ stickyHeaders: stickyHeaders
62
81
  })));
63
82
  };
@@ -25,7 +25,8 @@ var convertSyncBlockRendererDataProvidersToProviderFactory = exports.convertSync
25
25
  };
26
26
  var SyncedBlockRendererWrapper = function SyncedBlockRendererWrapper(_ref) {
27
27
  var fetchedData = _ref.fetchedData,
28
- providerFactory = _ref.providerFactory;
28
+ providerFactory = _ref.providerFactory,
29
+ options = _ref.options;
29
30
  var syncBlockDoc = (0, _react.useMemo)(function () {
30
31
  var _fetchedData$content;
31
32
  return {
@@ -34,6 +35,22 @@ var SyncedBlockRendererWrapper = function SyncedBlockRendererWrapper(_ref) {
34
35
  type: 'doc'
35
36
  };
36
37
  }, [fetchedData]);
38
+ var _ref2 = options !== null && options !== void 0 ? options : {},
39
+ allowAltTextOnImages = _ref2.allowAltTextOnImages,
40
+ allowAnnotations = _ref2.allowAnnotations,
41
+ allowColumnSorting = _ref2.allowColumnSorting,
42
+ allowCopyToClipboard = _ref2.allowCopyToClipboard,
43
+ allowCustomPanels = _ref2.allowCustomPanels,
44
+ allowHeadingAnchorLinks = _ref2.allowHeadingAnchorLinks,
45
+ allowPlaceholderText = _ref2.allowPlaceholderText,
46
+ allowRendererContainerStyles = _ref2.allowRendererContainerStyles,
47
+ allowSelectAllTrap = _ref2.allowSelectAllTrap,
48
+ allowUgcScrubber = _ref2.allowUgcScrubber,
49
+ allowWrapCodeBlock = _ref2.allowWrapCodeBlock,
50
+ emojiResourceConfig = _ref2.emojiResourceConfig,
51
+ media = _ref2.media,
52
+ smartLinks = _ref2.smartLinks,
53
+ stickyHeaders = _ref2.stickyHeaders;
37
54
  return /*#__PURE__*/_react.default.createElement(_actions.RendererActionsContext, null, /*#__PURE__*/_react.default.createElement("div", {
38
55
  "data-testid": "sync-block-renderer-wrapper"
39
56
  }, /*#__PURE__*/_react.default.createElement(_renderer.ReactRenderer, {
@@ -41,29 +58,47 @@ var SyncedBlockRendererWrapper = function SyncedBlockRendererWrapper(_ref) {
41
58
  adfStage: "stage0",
42
59
  document: syncBlockDoc,
43
60
  disableHeadingIDs: true,
44
- dataProviders: providerFactory
61
+ dataProviders: providerFactory,
62
+ allowAltTextOnImages: allowAltTextOnImages,
63
+ allowAnnotations: allowAnnotations,
64
+ allowColumnSorting: allowColumnSorting,
65
+ allowCopyToClipboard: allowCopyToClipboard,
66
+ allowCustomPanels: allowCustomPanels,
67
+ allowHeadingAnchorLinks: allowHeadingAnchorLinks,
68
+ allowPlaceholderText: allowPlaceholderText,
69
+ allowRendererContainerStyles: allowRendererContainerStyles,
70
+ allowSelectAllTrap: allowSelectAllTrap,
71
+ allowUgcScrubber: allowUgcScrubber,
72
+ allowWrapCodeBlock: allowWrapCodeBlock,
73
+ emojiResourceConfig: emojiResourceConfig,
74
+ media: media,
75
+ smartLinks: smartLinks,
76
+ stickyHeaders: stickyHeaders
45
77
  })));
46
78
  };
47
- var SyncedBlockRendererComponent = function SyncedBlockRendererComponent(_ref2) {
48
- var useFetchSyncBlockData = _ref2.useFetchSyncBlockData,
49
- syncBlockRendererDataProviders = _ref2.syncBlockRendererDataProviders;
50
- var fetchResult = useFetchSyncBlockData();
79
+ var SyncedBlockRendererComponent = function SyncedBlockRendererComponent(_ref3) {
80
+ var useFetchSyncBlockData = _ref3.useFetchSyncBlockData,
81
+ syncBlockRendererDataProviders = _ref3.syncBlockRendererDataProviders,
82
+ syncBlockRendererOptions = _ref3.syncBlockRendererOptions;
83
+ var _useFetchSyncBlockDat = useFetchSyncBlockData(),
84
+ syncBlockInstance = _useFetchSyncBlockDat.syncBlockInstance;
51
85
  var providerFactory = (0, _react.useMemo)(function () {
52
86
  return convertSyncBlockRendererDataProvidersToProviderFactory(syncBlockRendererDataProviders);
53
87
  }, [syncBlockRendererDataProviders]);
54
- if (!fetchResult) {
88
+ if (!syncBlockInstance) {
55
89
  return /*#__PURE__*/_react.default.createElement(_SyncedBlockLoadingState.SyncedBlockLoadingState, null);
56
90
  }
57
- if (fetchResult.error || !fetchResult.data) {
58
- var _fetchResult$error;
91
+ if (syncBlockInstance.error || !syncBlockInstance.data) {
92
+ var _syncBlockInstance$er;
59
93
  return /*#__PURE__*/_react.default.createElement(_SyncedBlockErrorComponent.SyncedBlockErrorComponent, {
60
- error: (_fetchResult$error = fetchResult.error) !== null && _fetchResult$error !== void 0 ? _fetchResult$error : _editorSyncedBlockProvider.SyncBlockError.Errored,
61
- resourceId: fetchResult.resourceId
94
+ error: (_syncBlockInstance$er = syncBlockInstance.error) !== null && _syncBlockInstance$er !== void 0 ? _syncBlockInstance$er : _editorSyncedBlockProvider.SyncBlockError.Errored,
95
+ resourceId: syncBlockInstance.resourceId
62
96
  });
63
97
  }
64
98
  return /*#__PURE__*/_react.default.createElement(SyncedBlockRendererWrapper, {
65
- fetchedData: fetchResult.data,
66
- providerFactory: providerFactory
99
+ fetchedData: syncBlockInstance.data,
100
+ providerFactory: providerFactory,
101
+ options: syncBlockRendererOptions
67
102
  });
68
103
  };
69
104
  var SyncedBlockRenderer = exports.SyncedBlockRenderer = /*#__PURE__*/(0, _react.memo)(SyncedBlockRendererComponent);
@@ -1,13 +1,27 @@
1
+ import { convertSyncBlockJSONNodeToSyncBlockNode, SyncBlockStoreManager } from '@atlaskit/editor-synced-block-provider';
1
2
  import { SyncedBlockNodeComponentRenderer } from './ui/SyncedBlockNodeComponentRenderer';
2
- export const getSyncedBlockNodeComponent = (dataProvider, doc) => {
3
+ const getSyncBlockNodesFromContent = content => {
4
+ return content.map(node => convertSyncBlockJSONNodeToSyncBlockNode(node)).filter(node => node !== undefined);
5
+ };
6
+
7
+ // For rendering reference synced block nodes in Renderer
8
+ export const getSyncedBlockNodeComponent = ({
9
+ doc,
10
+ syncBlockProvider,
11
+ syncBlockRendererOptions
12
+ }) => {
3
13
  const {
4
14
  content
5
15
  } = doc;
6
16
  const isEmpty = !content || !Array.isArray(content) || content.length === 0;
7
- const syncBlockNodes = isEmpty ? [] : content.filter(node => node.type === 'syncBlock');
8
- const dataPromise = dataProvider.fetchNodesData(syncBlockNodes);
17
+ const syncBlockNodes = isEmpty ? [] : getSyncBlockNodesFromContent(content);
18
+ const syncBlockStoreManager = new SyncBlockStoreManager(syncBlockProvider);
19
+
20
+ // Pre-fetch sync block data
21
+ syncBlockStoreManager.getReferenceSyncBlockStoreManager().fetchSyncBlocksData(syncBlockNodes);
9
22
  return props => SyncedBlockNodeComponentRenderer({
10
- ...props,
11
- dataPromise
23
+ nodeProps: props,
24
+ syncBlockStoreManager,
25
+ rendererOptions: syncBlockRendererOptions
12
26
  });
13
27
  };
@@ -1,10 +1,14 @@
1
1
  import React from 'react';
2
2
  import { SyncedBlockRenderer } from './ui/SyncedBlockRenderer';
3
+ // For rendering reference synced block nodes in Editor
3
4
  export const getSyncedBlockRenderer = ({
4
5
  syncBlockRendererDataProviders,
6
+ syncBlockRendererOptions
7
+ }) => ({
5
8
  useFetchSyncBlockData
6
9
  }) => {
7
10
  return /*#__PURE__*/React.createElement(SyncedBlockRenderer, {
11
+ syncBlockRendererOptions: syncBlockRendererOptions,
8
12
  syncBlockRendererDataProviders: syncBlockRendererDataProviders,
9
13
  useFetchSyncBlockData: useFetchSyncBlockData
10
14
  });
@@ -0,0 +1 @@
1
+ export {};
@@ -1,48 +1,80 @@
1
- import React, { useEffect, useState } from 'react';
2
- import { SyncBlockError } from '@atlaskit/editor-synced-block-provider';
1
+ import React from 'react';
2
+ import { SyncBlockError, useFetchSyncBlockData } from '@atlaskit/editor-synced-block-provider';
3
3
  import { ReactRenderer } from '@atlaskit/renderer';
4
4
  import { RendererActionsContext } from '@atlaskit/renderer/actions';
5
5
  import { SyncedBlockErrorComponent } from './SyncedBlockErrorComponent';
6
6
  import { SyncedBlockLoadingState } from './SyncedBlockLoadingState';
7
- export const SyncedBlockNodeComponentRenderer = props => {
8
- const [data, setData] = useState(null);
9
- useEffect(() => {
10
- if (!props.dataPromise) {
11
- return;
12
- }
13
- if (data) {
14
- return;
15
- }
16
- props.dataPromise.then(data => {
17
- setData(data);
18
- });
19
- }, [props.dataPromise, data]);
20
- if (!data) {
7
+ export const SyncedBlockNodeComponentRenderer = ({
8
+ nodeProps,
9
+ syncBlockStoreManager,
10
+ rendererOptions
11
+ }) => {
12
+ const {
13
+ resourceId,
14
+ localId,
15
+ providers
16
+ } = nodeProps;
17
+ const {
18
+ allowAltTextOnImages,
19
+ allowAnnotations,
20
+ allowColumnSorting,
21
+ allowCopyToClipboard,
22
+ allowCustomPanels,
23
+ allowHeadingAnchorLinks,
24
+ allowPlaceholderText,
25
+ allowRendererContainerStyles,
26
+ allowSelectAllTrap,
27
+ allowUgcScrubber,
28
+ allowWrapCodeBlock,
29
+ emojiResourceConfig,
30
+ media,
31
+ smartLinks,
32
+ stickyHeaders
33
+ } = rendererOptions !== null && rendererOptions !== void 0 ? rendererOptions : {};
34
+ const {
35
+ syncBlockInstance,
36
+ isLoading
37
+ } = useFetchSyncBlockData(syncBlockStoreManager, resourceId, localId);
38
+ if (isLoading && !syncBlockInstance) {
21
39
  return /*#__PURE__*/React.createElement(SyncedBlockLoadingState, null);
22
40
  }
23
- const fetchResult = data.find(item => item.resourceId === props.resourceId);
24
- if (fetchResult !== null && fetchResult !== void 0 && fetchResult.error || !(fetchResult !== null && fetchResult !== void 0 && fetchResult.data)) {
25
- var _fetchResult$error;
41
+ if (syncBlockInstance !== null && syncBlockInstance !== void 0 && syncBlockInstance.error || !(syncBlockInstance !== null && syncBlockInstance !== void 0 && syncBlockInstance.data)) {
42
+ var _syncBlockInstance$er;
26
43
  return /*#__PURE__*/React.createElement(SyncedBlockErrorComponent, {
27
- error: (_fetchResult$error = fetchResult === null || fetchResult === void 0 ? void 0 : fetchResult.error) !== null && _fetchResult$error !== void 0 ? _fetchResult$error : SyncBlockError.Errored,
28
- resourceId: props.resourceId
44
+ error: (_syncBlockInstance$er = syncBlockInstance === null || syncBlockInstance === void 0 ? void 0 : syncBlockInstance.error) !== null && _syncBlockInstance$er !== void 0 ? _syncBlockInstance$er : SyncBlockError.Errored,
45
+ resourceId: resourceId
29
46
  });
30
47
  }
31
48
  const syncBlockDoc = {
32
- content: fetchResult.data.content,
49
+ content: syncBlockInstance.data.content,
33
50
  version: 1,
34
51
  type: 'doc'
35
52
  };
36
53
  return /*#__PURE__*/React.createElement(RendererActionsContext, null, /*#__PURE__*/React.createElement("div", {
37
54
  "data-sync-block": true,
38
55
  "data-testid": "sync-block-renderer-wrapper",
39
- "data-resource-id": props.resourceId,
40
- "data-local-id": props.localId
56
+ "data-resource-id": resourceId,
57
+ "data-local-id": localId
41
58
  }, /*#__PURE__*/React.createElement(ReactRenderer, {
42
59
  appearance: "full-width",
43
60
  adfStage: "stage0",
44
61
  document: syncBlockDoc,
45
62
  disableHeadingIDs: true,
46
- dataProviders: props.providers
63
+ dataProviders: providers,
64
+ allowAltTextOnImages: allowAltTextOnImages,
65
+ allowAnnotations: allowAnnotations,
66
+ allowColumnSorting: allowColumnSorting,
67
+ allowCopyToClipboard: allowCopyToClipboard,
68
+ allowCustomPanels: allowCustomPanels,
69
+ allowHeadingAnchorLinks: allowHeadingAnchorLinks,
70
+ allowPlaceholderText: allowPlaceholderText,
71
+ allowRendererContainerStyles: allowRendererContainerStyles,
72
+ allowSelectAllTrap: allowSelectAllTrap,
73
+ allowUgcScrubber: allowUgcScrubber,
74
+ allowWrapCodeBlock: allowWrapCodeBlock,
75
+ emojiResourceConfig: emojiResourceConfig,
76
+ media: media,
77
+ smartLinks: smartLinks,
78
+ stickyHeaders: stickyHeaders
47
79
  })));
48
80
  };
@@ -17,7 +17,8 @@ export const convertSyncBlockRendererDataProvidersToProviderFactory = dataProvid
17
17
  };
18
18
  const SyncedBlockRendererWrapper = ({
19
19
  fetchedData,
20
- providerFactory
20
+ providerFactory,
21
+ options
21
22
  }) => {
22
23
  const syncBlockDoc = useMemo(() => {
23
24
  var _fetchedData$content;
@@ -27,6 +28,23 @@ const SyncedBlockRendererWrapper = ({
27
28
  type: 'doc'
28
29
  };
29
30
  }, [fetchedData]);
31
+ const {
32
+ allowAltTextOnImages,
33
+ allowAnnotations,
34
+ allowColumnSorting,
35
+ allowCopyToClipboard,
36
+ allowCustomPanels,
37
+ allowHeadingAnchorLinks,
38
+ allowPlaceholderText,
39
+ allowRendererContainerStyles,
40
+ allowSelectAllTrap,
41
+ allowUgcScrubber,
42
+ allowWrapCodeBlock,
43
+ emojiResourceConfig,
44
+ media,
45
+ smartLinks,
46
+ stickyHeaders
47
+ } = options !== null && options !== void 0 ? options : {};
30
48
  return /*#__PURE__*/React.createElement(RendererActionsContext, null, /*#__PURE__*/React.createElement("div", {
31
49
  "data-testid": "sync-block-renderer-wrapper"
32
50
  }, /*#__PURE__*/React.createElement(ReactRenderer, {
@@ -34,30 +52,49 @@ const SyncedBlockRendererWrapper = ({
34
52
  adfStage: "stage0",
35
53
  document: syncBlockDoc,
36
54
  disableHeadingIDs: true,
37
- dataProviders: providerFactory
55
+ dataProviders: providerFactory,
56
+ allowAltTextOnImages: allowAltTextOnImages,
57
+ allowAnnotations: allowAnnotations,
58
+ allowColumnSorting: allowColumnSorting,
59
+ allowCopyToClipboard: allowCopyToClipboard,
60
+ allowCustomPanels: allowCustomPanels,
61
+ allowHeadingAnchorLinks: allowHeadingAnchorLinks,
62
+ allowPlaceholderText: allowPlaceholderText,
63
+ allowRendererContainerStyles: allowRendererContainerStyles,
64
+ allowSelectAllTrap: allowSelectAllTrap,
65
+ allowUgcScrubber: allowUgcScrubber,
66
+ allowWrapCodeBlock: allowWrapCodeBlock,
67
+ emojiResourceConfig: emojiResourceConfig,
68
+ media: media,
69
+ smartLinks: smartLinks,
70
+ stickyHeaders: stickyHeaders
38
71
  })));
39
72
  };
40
73
  const SyncedBlockRendererComponent = ({
41
74
  useFetchSyncBlockData,
42
- syncBlockRendererDataProviders
75
+ syncBlockRendererDataProviders,
76
+ syncBlockRendererOptions
43
77
  }) => {
44
- const fetchResult = useFetchSyncBlockData();
78
+ const {
79
+ syncBlockInstance
80
+ } = useFetchSyncBlockData();
45
81
  const providerFactory = useMemo(() => {
46
82
  return convertSyncBlockRendererDataProvidersToProviderFactory(syncBlockRendererDataProviders);
47
83
  }, [syncBlockRendererDataProviders]);
48
- if (!fetchResult) {
84
+ if (!syncBlockInstance) {
49
85
  return /*#__PURE__*/React.createElement(SyncedBlockLoadingState, null);
50
86
  }
51
- if (fetchResult.error || !fetchResult.data) {
52
- var _fetchResult$error;
87
+ if (syncBlockInstance.error || !syncBlockInstance.data) {
88
+ var _syncBlockInstance$er;
53
89
  return /*#__PURE__*/React.createElement(SyncedBlockErrorComponent, {
54
- error: (_fetchResult$error = fetchResult.error) !== null && _fetchResult$error !== void 0 ? _fetchResult$error : SyncBlockError.Errored,
55
- resourceId: fetchResult.resourceId
90
+ error: (_syncBlockInstance$er = syncBlockInstance.error) !== null && _syncBlockInstance$er !== void 0 ? _syncBlockInstance$er : SyncBlockError.Errored,
91
+ resourceId: syncBlockInstance.resourceId
56
92
  });
57
93
  }
58
94
  return /*#__PURE__*/React.createElement(SyncedBlockRendererWrapper, {
59
- fetchedData: fetchResult.data,
60
- providerFactory: providerFactory
95
+ fetchedData: syncBlockInstance.data,
96
+ providerFactory: providerFactory,
97
+ options: syncBlockRendererOptions
61
98
  });
62
99
  };
63
100
  export const SyncedBlockRenderer = /*#__PURE__*/memo(SyncedBlockRendererComponent);
@@ -1,17 +1,30 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1
+ import { convertSyncBlockJSONNodeToSyncBlockNode, SyncBlockStoreManager } from '@atlaskit/editor-synced-block-provider';
4
2
  import { SyncedBlockNodeComponentRenderer } from './ui/SyncedBlockNodeComponentRenderer';
5
- export var getSyncedBlockNodeComponent = function getSyncedBlockNodeComponent(dataProvider, doc) {
3
+ var getSyncBlockNodesFromContent = function getSyncBlockNodesFromContent(content) {
4
+ return content.map(function (node) {
5
+ return convertSyncBlockJSONNodeToSyncBlockNode(node);
6
+ }).filter(function (node) {
7
+ return node !== undefined;
8
+ });
9
+ };
10
+
11
+ // For rendering reference synced block nodes in Renderer
12
+ export var getSyncedBlockNodeComponent = function getSyncedBlockNodeComponent(_ref) {
13
+ var doc = _ref.doc,
14
+ syncBlockProvider = _ref.syncBlockProvider,
15
+ syncBlockRendererOptions = _ref.syncBlockRendererOptions;
6
16
  var content = doc.content;
7
17
  var isEmpty = !content || !Array.isArray(content) || content.length === 0;
8
- var syncBlockNodes = isEmpty ? [] : content.filter(function (node) {
9
- return node.type === 'syncBlock';
10
- });
11
- var dataPromise = dataProvider.fetchNodesData(syncBlockNodes);
18
+ var syncBlockNodes = isEmpty ? [] : getSyncBlockNodesFromContent(content);
19
+ var syncBlockStoreManager = new SyncBlockStoreManager(syncBlockProvider);
20
+
21
+ // Pre-fetch sync block data
22
+ syncBlockStoreManager.getReferenceSyncBlockStoreManager().fetchSyncBlocksData(syncBlockNodes);
12
23
  return function (props) {
13
- return SyncedBlockNodeComponentRenderer(_objectSpread(_objectSpread({}, props), {}, {
14
- dataPromise: dataPromise
15
- }));
24
+ return SyncedBlockNodeComponentRenderer({
25
+ nodeProps: props,
26
+ syncBlockStoreManager: syncBlockStoreManager,
27
+ rendererOptions: syncBlockRendererOptions
28
+ });
16
29
  };
17
30
  };
@@ -1,10 +1,15 @@
1
1
  import React from 'react';
2
2
  import { SyncedBlockRenderer } from './ui/SyncedBlockRenderer';
3
+ // For rendering reference synced block nodes in Editor
3
4
  export var getSyncedBlockRenderer = function getSyncedBlockRenderer(_ref) {
4
5
  var syncBlockRendererDataProviders = _ref.syncBlockRendererDataProviders,
5
- useFetchSyncBlockData = _ref.useFetchSyncBlockData;
6
- return /*#__PURE__*/React.createElement(SyncedBlockRenderer, {
7
- syncBlockRendererDataProviders: syncBlockRendererDataProviders,
8
- useFetchSyncBlockData: useFetchSyncBlockData
9
- });
6
+ syncBlockRendererOptions = _ref.syncBlockRendererOptions;
7
+ return function (_ref2) {
8
+ var useFetchSyncBlockData = _ref2.useFetchSyncBlockData;
9
+ return /*#__PURE__*/React.createElement(SyncedBlockRenderer, {
10
+ syncBlockRendererOptions: syncBlockRendererOptions,
11
+ syncBlockRendererDataProviders: syncBlockRendererDataProviders,
12
+ useFetchSyncBlockData: useFetchSyncBlockData
13
+ });
14
+ };
10
15
  };
@@ -0,0 +1 @@
1
+ export {};
@@ -1,54 +1,75 @@
1
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
- import React, { useEffect, useState } from 'react';
3
- import { SyncBlockError } from '@atlaskit/editor-synced-block-provider';
1
+ import React from 'react';
2
+ import { SyncBlockError, useFetchSyncBlockData } from '@atlaskit/editor-synced-block-provider';
4
3
  import { ReactRenderer } from '@atlaskit/renderer';
5
4
  import { RendererActionsContext } from '@atlaskit/renderer/actions';
6
5
  import { SyncedBlockErrorComponent } from './SyncedBlockErrorComponent';
7
6
  import { SyncedBlockLoadingState } from './SyncedBlockLoadingState';
8
- export var SyncedBlockNodeComponentRenderer = function SyncedBlockNodeComponentRenderer(props) {
9
- var _useState = useState(null),
10
- _useState2 = _slicedToArray(_useState, 2),
11
- data = _useState2[0],
12
- setData = _useState2[1];
13
- useEffect(function () {
14
- if (!props.dataPromise) {
15
- return;
16
- }
17
- if (data) {
18
- return;
19
- }
20
- props.dataPromise.then(function (data) {
21
- setData(data);
22
- });
23
- }, [props.dataPromise, data]);
24
- if (!data) {
7
+ export var SyncedBlockNodeComponentRenderer = function SyncedBlockNodeComponentRenderer(_ref) {
8
+ var nodeProps = _ref.nodeProps,
9
+ syncBlockStoreManager = _ref.syncBlockStoreManager,
10
+ rendererOptions = _ref.rendererOptions;
11
+ var resourceId = nodeProps.resourceId,
12
+ localId = nodeProps.localId,
13
+ providers = nodeProps.providers;
14
+ var _ref2 = rendererOptions !== null && rendererOptions !== void 0 ? rendererOptions : {},
15
+ allowAltTextOnImages = _ref2.allowAltTextOnImages,
16
+ allowAnnotations = _ref2.allowAnnotations,
17
+ allowColumnSorting = _ref2.allowColumnSorting,
18
+ allowCopyToClipboard = _ref2.allowCopyToClipboard,
19
+ allowCustomPanels = _ref2.allowCustomPanels,
20
+ allowHeadingAnchorLinks = _ref2.allowHeadingAnchorLinks,
21
+ allowPlaceholderText = _ref2.allowPlaceholderText,
22
+ allowRendererContainerStyles = _ref2.allowRendererContainerStyles,
23
+ allowSelectAllTrap = _ref2.allowSelectAllTrap,
24
+ allowUgcScrubber = _ref2.allowUgcScrubber,
25
+ allowWrapCodeBlock = _ref2.allowWrapCodeBlock,
26
+ emojiResourceConfig = _ref2.emojiResourceConfig,
27
+ media = _ref2.media,
28
+ smartLinks = _ref2.smartLinks,
29
+ stickyHeaders = _ref2.stickyHeaders;
30
+ var _useFetchSyncBlockDat = useFetchSyncBlockData(syncBlockStoreManager, resourceId, localId),
31
+ syncBlockInstance = _useFetchSyncBlockDat.syncBlockInstance,
32
+ isLoading = _useFetchSyncBlockDat.isLoading;
33
+ if (isLoading && !syncBlockInstance) {
25
34
  return /*#__PURE__*/React.createElement(SyncedBlockLoadingState, null);
26
35
  }
27
- var fetchResult = data.find(function (item) {
28
- return item.resourceId === props.resourceId;
29
- });
30
- if (fetchResult !== null && fetchResult !== void 0 && fetchResult.error || !(fetchResult !== null && fetchResult !== void 0 && fetchResult.data)) {
31
- var _fetchResult$error;
36
+ if (syncBlockInstance !== null && syncBlockInstance !== void 0 && syncBlockInstance.error || !(syncBlockInstance !== null && syncBlockInstance !== void 0 && syncBlockInstance.data)) {
37
+ var _syncBlockInstance$er;
32
38
  return /*#__PURE__*/React.createElement(SyncedBlockErrorComponent, {
33
- error: (_fetchResult$error = fetchResult === null || fetchResult === void 0 ? void 0 : fetchResult.error) !== null && _fetchResult$error !== void 0 ? _fetchResult$error : SyncBlockError.Errored,
34
- resourceId: props.resourceId
39
+ error: (_syncBlockInstance$er = syncBlockInstance === null || syncBlockInstance === void 0 ? void 0 : syncBlockInstance.error) !== null && _syncBlockInstance$er !== void 0 ? _syncBlockInstance$er : SyncBlockError.Errored,
40
+ resourceId: resourceId
35
41
  });
36
42
  }
37
43
  var syncBlockDoc = {
38
- content: fetchResult.data.content,
44
+ content: syncBlockInstance.data.content,
39
45
  version: 1,
40
46
  type: 'doc'
41
47
  };
42
48
  return /*#__PURE__*/React.createElement(RendererActionsContext, null, /*#__PURE__*/React.createElement("div", {
43
49
  "data-sync-block": true,
44
50
  "data-testid": "sync-block-renderer-wrapper",
45
- "data-resource-id": props.resourceId,
46
- "data-local-id": props.localId
51
+ "data-resource-id": resourceId,
52
+ "data-local-id": localId
47
53
  }, /*#__PURE__*/React.createElement(ReactRenderer, {
48
54
  appearance: "full-width",
49
55
  adfStage: "stage0",
50
56
  document: syncBlockDoc,
51
57
  disableHeadingIDs: true,
52
- dataProviders: props.providers
58
+ dataProviders: providers,
59
+ allowAltTextOnImages: allowAltTextOnImages,
60
+ allowAnnotations: allowAnnotations,
61
+ allowColumnSorting: allowColumnSorting,
62
+ allowCopyToClipboard: allowCopyToClipboard,
63
+ allowCustomPanels: allowCustomPanels,
64
+ allowHeadingAnchorLinks: allowHeadingAnchorLinks,
65
+ allowPlaceholderText: allowPlaceholderText,
66
+ allowRendererContainerStyles: allowRendererContainerStyles,
67
+ allowSelectAllTrap: allowSelectAllTrap,
68
+ allowUgcScrubber: allowUgcScrubber,
69
+ allowWrapCodeBlock: allowWrapCodeBlock,
70
+ emojiResourceConfig: emojiResourceConfig,
71
+ media: media,
72
+ smartLinks: smartLinks,
73
+ stickyHeaders: stickyHeaders
53
74
  })));
54
75
  };
@@ -17,7 +17,8 @@ export var convertSyncBlockRendererDataProvidersToProviderFactory = function con
17
17
  };
18
18
  var SyncedBlockRendererWrapper = function SyncedBlockRendererWrapper(_ref) {
19
19
  var fetchedData = _ref.fetchedData,
20
- providerFactory = _ref.providerFactory;
20
+ providerFactory = _ref.providerFactory,
21
+ options = _ref.options;
21
22
  var syncBlockDoc = useMemo(function () {
22
23
  var _fetchedData$content;
23
24
  return {
@@ -26,6 +27,22 @@ var SyncedBlockRendererWrapper = function SyncedBlockRendererWrapper(_ref) {
26
27
  type: 'doc'
27
28
  };
28
29
  }, [fetchedData]);
30
+ var _ref2 = options !== null && options !== void 0 ? options : {},
31
+ allowAltTextOnImages = _ref2.allowAltTextOnImages,
32
+ allowAnnotations = _ref2.allowAnnotations,
33
+ allowColumnSorting = _ref2.allowColumnSorting,
34
+ allowCopyToClipboard = _ref2.allowCopyToClipboard,
35
+ allowCustomPanels = _ref2.allowCustomPanels,
36
+ allowHeadingAnchorLinks = _ref2.allowHeadingAnchorLinks,
37
+ allowPlaceholderText = _ref2.allowPlaceholderText,
38
+ allowRendererContainerStyles = _ref2.allowRendererContainerStyles,
39
+ allowSelectAllTrap = _ref2.allowSelectAllTrap,
40
+ allowUgcScrubber = _ref2.allowUgcScrubber,
41
+ allowWrapCodeBlock = _ref2.allowWrapCodeBlock,
42
+ emojiResourceConfig = _ref2.emojiResourceConfig,
43
+ media = _ref2.media,
44
+ smartLinks = _ref2.smartLinks,
45
+ stickyHeaders = _ref2.stickyHeaders;
29
46
  return /*#__PURE__*/React.createElement(RendererActionsContext, null, /*#__PURE__*/React.createElement("div", {
30
47
  "data-testid": "sync-block-renderer-wrapper"
31
48
  }, /*#__PURE__*/React.createElement(ReactRenderer, {
@@ -33,29 +50,47 @@ var SyncedBlockRendererWrapper = function SyncedBlockRendererWrapper(_ref) {
33
50
  adfStage: "stage0",
34
51
  document: syncBlockDoc,
35
52
  disableHeadingIDs: true,
36
- dataProviders: providerFactory
53
+ dataProviders: providerFactory,
54
+ allowAltTextOnImages: allowAltTextOnImages,
55
+ allowAnnotations: allowAnnotations,
56
+ allowColumnSorting: allowColumnSorting,
57
+ allowCopyToClipboard: allowCopyToClipboard,
58
+ allowCustomPanels: allowCustomPanels,
59
+ allowHeadingAnchorLinks: allowHeadingAnchorLinks,
60
+ allowPlaceholderText: allowPlaceholderText,
61
+ allowRendererContainerStyles: allowRendererContainerStyles,
62
+ allowSelectAllTrap: allowSelectAllTrap,
63
+ allowUgcScrubber: allowUgcScrubber,
64
+ allowWrapCodeBlock: allowWrapCodeBlock,
65
+ emojiResourceConfig: emojiResourceConfig,
66
+ media: media,
67
+ smartLinks: smartLinks,
68
+ stickyHeaders: stickyHeaders
37
69
  })));
38
70
  };
39
- var SyncedBlockRendererComponent = function SyncedBlockRendererComponent(_ref2) {
40
- var useFetchSyncBlockData = _ref2.useFetchSyncBlockData,
41
- syncBlockRendererDataProviders = _ref2.syncBlockRendererDataProviders;
42
- var fetchResult = useFetchSyncBlockData();
71
+ var SyncedBlockRendererComponent = function SyncedBlockRendererComponent(_ref3) {
72
+ var useFetchSyncBlockData = _ref3.useFetchSyncBlockData,
73
+ syncBlockRendererDataProviders = _ref3.syncBlockRendererDataProviders,
74
+ syncBlockRendererOptions = _ref3.syncBlockRendererOptions;
75
+ var _useFetchSyncBlockDat = useFetchSyncBlockData(),
76
+ syncBlockInstance = _useFetchSyncBlockDat.syncBlockInstance;
43
77
  var providerFactory = useMemo(function () {
44
78
  return convertSyncBlockRendererDataProvidersToProviderFactory(syncBlockRendererDataProviders);
45
79
  }, [syncBlockRendererDataProviders]);
46
- if (!fetchResult) {
80
+ if (!syncBlockInstance) {
47
81
  return /*#__PURE__*/React.createElement(SyncedBlockLoadingState, null);
48
82
  }
49
- if (fetchResult.error || !fetchResult.data) {
50
- var _fetchResult$error;
83
+ if (syncBlockInstance.error || !syncBlockInstance.data) {
84
+ var _syncBlockInstance$er;
51
85
  return /*#__PURE__*/React.createElement(SyncedBlockErrorComponent, {
52
- error: (_fetchResult$error = fetchResult.error) !== null && _fetchResult$error !== void 0 ? _fetchResult$error : SyncBlockError.Errored,
53
- resourceId: fetchResult.resourceId
86
+ error: (_syncBlockInstance$er = syncBlockInstance.error) !== null && _syncBlockInstance$er !== void 0 ? _syncBlockInstance$er : SyncBlockError.Errored,
87
+ resourceId: syncBlockInstance.resourceId
54
88
  });
55
89
  }
56
90
  return /*#__PURE__*/React.createElement(SyncedBlockRendererWrapper, {
57
- fetchedData: fetchResult.data,
58
- providerFactory: providerFactory
91
+ fetchedData: syncBlockInstance.data,
92
+ providerFactory: providerFactory,
93
+ options: syncBlockRendererOptions
59
94
  });
60
95
  };
61
96
  export var SyncedBlockRenderer = /*#__PURE__*/memo(SyncedBlockRendererComponent);
@@ -1,5 +1,11 @@
1
1
  import type { DocNode } from '@atlaskit/adf-schema';
2
- import { type SyncBlockNode, type SyncBlockInstance } from '@atlaskit/editor-synced-block-provider';
3
- import type { NodeDataProvider } from '@atlaskit/node-data-provider';
2
+ import type { SyncedBlockProvider } from '@atlaskit/editor-synced-block-provider';
3
+ import type { SyncedBlockRendererOptions } from './types';
4
4
  import { type SyncedBlockNodeProps } from './ui/SyncedBlockNodeComponentRenderer';
5
- export declare const getSyncedBlockNodeComponent: (dataProvider: NodeDataProvider<SyncBlockNode, SyncBlockInstance>, doc: DocNode) => (props: SyncedBlockNodeProps) => import("react").JSX.Element;
5
+ type GetSyncedBlockNodeComponentProps = {
6
+ doc: DocNode;
7
+ syncBlockProvider: SyncedBlockProvider;
8
+ syncBlockRendererOptions: SyncedBlockRendererOptions | undefined;
9
+ };
10
+ export declare const getSyncedBlockNodeComponent: ({ doc, syncBlockProvider, syncBlockRendererOptions, }: GetSyncedBlockNodeComponentProps) => ((props: SyncedBlockNodeProps) => React.JSX.Element);
11
+ export {};
@@ -1,3 +1,10 @@
1
1
  import React from 'react';
2
- import { type SyncedBlockRendererProps } from './ui/SyncedBlockRenderer';
3
- export declare const getSyncedBlockRenderer: ({ syncBlockRendererDataProviders, useFetchSyncBlockData, }: SyncedBlockRendererProps) => React.JSX.Element;
2
+ import type { SyncedBlockRendererDataProviders } from '@atlaskit/editor-common/provider-factory';
3
+ import type { SyncedBlockRendererProps } from '@atlaskit/editor-plugin-synced-block';
4
+ import type { SyncedBlockRendererOptions } from './types';
5
+ type GetSyncedBlockRendererProps = {
6
+ syncBlockRendererDataProviders: SyncedBlockRendererDataProviders;
7
+ syncBlockRendererOptions: SyncedBlockRendererOptions | undefined;
8
+ };
9
+ export declare const getSyncedBlockRenderer: ({ syncBlockRendererDataProviders, syncBlockRendererOptions }: GetSyncedBlockRendererProps) => ({ useFetchSyncBlockData }: SyncedBlockRendererProps) => React.JSX.Element;
10
+ export {};
@@ -0,0 +1,2 @@
1
+ import { type RendererProps } from '@atlaskit/renderer';
2
+ export type SyncedBlockRendererOptions = Pick<RendererProps, 'allowAltTextOnImages' | 'allowAnnotations' | 'allowColumnSorting' | 'allowCopyToClipboard' | 'allowCustomPanels' | 'allowHeadingAnchorLinks' | 'allowPlaceholderText' | 'allowRendererContainerStyles' | 'allowSelectAllTrap' | 'allowUgcScrubber' | 'allowWrapCodeBlock' | 'emojiResourceConfig' | 'media' | 'smartLinks' | 'stickyHeaders'>;
@@ -1,11 +1,15 @@
1
1
  import React from 'react';
2
- import { type SyncBlockInstance } from '@atlaskit/editor-synced-block-provider';
2
+ import type { SyncBlockStoreManager } from '@atlaskit/editor-synced-block-provider';
3
3
  import { type NodeProps } from '@atlaskit/renderer';
4
+ import type { SyncedBlockRendererOptions } from '../types';
4
5
  export interface SyncedBlockProps {
5
6
  localId?: string;
6
7
  resourceId?: string;
7
8
  }
8
9
  export type SyncedBlockNodeProps = NodeProps<SyncedBlockProps>;
9
- export declare const SyncedBlockNodeComponentRenderer: (props: SyncedBlockNodeProps & {
10
- dataPromise: Promise<SyncBlockInstance[]> | null;
11
- }) => React.JSX.Element;
10
+ export type SyncedBlockNodeComponentRendererProps = {
11
+ nodeProps: SyncedBlockNodeProps;
12
+ rendererOptions: SyncedBlockRendererOptions | undefined;
13
+ syncBlockStoreManager: SyncBlockStoreManager;
14
+ };
15
+ export declare const SyncedBlockNodeComponentRenderer: ({ nodeProps, syncBlockStoreManager, rendererOptions, }: SyncedBlockNodeComponentRendererProps) => React.JSX.Element;
@@ -1,9 +1,11 @@
1
1
  import React from 'react';
2
2
  import { ProviderFactory, type SyncedBlockRendererDataProviders } from '@atlaskit/editor-common/provider-factory';
3
- import { type SyncBlockInstance } from '@atlaskit/editor-synced-block-provider';
3
+ import { type UseFetchSyncBlockDataResult } from '@atlaskit/editor-synced-block-provider';
4
+ import type { SyncedBlockRendererOptions } from '../types';
4
5
  export type SyncedBlockRendererProps = {
5
6
  syncBlockRendererDataProviders: SyncedBlockRendererDataProviders;
6
- useFetchSyncBlockData: () => SyncBlockInstance | null;
7
+ syncBlockRendererOptions: SyncedBlockRendererOptions | undefined;
8
+ useFetchSyncBlockData: () => UseFetchSyncBlockDataResult;
7
9
  };
8
10
  export declare const convertSyncBlockRendererDataProvidersToProviderFactory: (dataProviders: SyncedBlockRendererDataProviders) => ProviderFactory;
9
- export declare const SyncedBlockRenderer: React.MemoExoticComponent<({ useFetchSyncBlockData, syncBlockRendererDataProviders, }: SyncedBlockRendererProps) => React.JSX.Element>;
11
+ export declare const SyncedBlockRenderer: React.MemoExoticComponent<({ useFetchSyncBlockData, syncBlockRendererDataProviders, syncBlockRendererOptions, }: SyncedBlockRendererProps) => React.JSX.Element>;
@@ -1,5 +1,11 @@
1
1
  import type { DocNode } from '@atlaskit/adf-schema';
2
- import { type SyncBlockNode, type SyncBlockInstance } from '@atlaskit/editor-synced-block-provider';
3
- import type { NodeDataProvider } from '@atlaskit/node-data-provider';
2
+ import type { SyncedBlockProvider } from '@atlaskit/editor-synced-block-provider';
3
+ import type { SyncedBlockRendererOptions } from './types';
4
4
  import { type SyncedBlockNodeProps } from './ui/SyncedBlockNodeComponentRenderer';
5
- export declare const getSyncedBlockNodeComponent: (dataProvider: NodeDataProvider<SyncBlockNode, SyncBlockInstance>, doc: DocNode) => (props: SyncedBlockNodeProps) => import("react").JSX.Element;
5
+ type GetSyncedBlockNodeComponentProps = {
6
+ doc: DocNode;
7
+ syncBlockProvider: SyncedBlockProvider;
8
+ syncBlockRendererOptions: SyncedBlockRendererOptions | undefined;
9
+ };
10
+ export declare const getSyncedBlockNodeComponent: ({ doc, syncBlockProvider, syncBlockRendererOptions, }: GetSyncedBlockNodeComponentProps) => ((props: SyncedBlockNodeProps) => React.JSX.Element);
11
+ export {};
@@ -1,3 +1,10 @@
1
1
  import React from 'react';
2
- import { type SyncedBlockRendererProps } from './ui/SyncedBlockRenderer';
3
- export declare const getSyncedBlockRenderer: ({ syncBlockRendererDataProviders, useFetchSyncBlockData, }: SyncedBlockRendererProps) => React.JSX.Element;
2
+ import type { SyncedBlockRendererDataProviders } from '@atlaskit/editor-common/provider-factory';
3
+ import type { SyncedBlockRendererProps } from '@atlaskit/editor-plugin-synced-block';
4
+ import type { SyncedBlockRendererOptions } from './types';
5
+ type GetSyncedBlockRendererProps = {
6
+ syncBlockRendererDataProviders: SyncedBlockRendererDataProviders;
7
+ syncBlockRendererOptions: SyncedBlockRendererOptions | undefined;
8
+ };
9
+ export declare const getSyncedBlockRenderer: ({ syncBlockRendererDataProviders, syncBlockRendererOptions }: GetSyncedBlockRendererProps) => ({ useFetchSyncBlockData }: SyncedBlockRendererProps) => React.JSX.Element;
10
+ export {};
@@ -0,0 +1,2 @@
1
+ import { type RendererProps } from '@atlaskit/renderer';
2
+ export type SyncedBlockRendererOptions = Pick<RendererProps, 'allowAltTextOnImages' | 'allowAnnotations' | 'allowColumnSorting' | 'allowCopyToClipboard' | 'allowCustomPanels' | 'allowHeadingAnchorLinks' | 'allowPlaceholderText' | 'allowRendererContainerStyles' | 'allowSelectAllTrap' | 'allowUgcScrubber' | 'allowWrapCodeBlock' | 'emojiResourceConfig' | 'media' | 'smartLinks' | 'stickyHeaders'>;
@@ -1,11 +1,15 @@
1
1
  import React from 'react';
2
- import { type SyncBlockInstance } from '@atlaskit/editor-synced-block-provider';
2
+ import type { SyncBlockStoreManager } from '@atlaskit/editor-synced-block-provider';
3
3
  import { type NodeProps } from '@atlaskit/renderer';
4
+ import type { SyncedBlockRendererOptions } from '../types';
4
5
  export interface SyncedBlockProps {
5
6
  localId?: string;
6
7
  resourceId?: string;
7
8
  }
8
9
  export type SyncedBlockNodeProps = NodeProps<SyncedBlockProps>;
9
- export declare const SyncedBlockNodeComponentRenderer: (props: SyncedBlockNodeProps & {
10
- dataPromise: Promise<SyncBlockInstance[]> | null;
11
- }) => React.JSX.Element;
10
+ export type SyncedBlockNodeComponentRendererProps = {
11
+ nodeProps: SyncedBlockNodeProps;
12
+ rendererOptions: SyncedBlockRendererOptions | undefined;
13
+ syncBlockStoreManager: SyncBlockStoreManager;
14
+ };
15
+ export declare const SyncedBlockNodeComponentRenderer: ({ nodeProps, syncBlockStoreManager, rendererOptions, }: SyncedBlockNodeComponentRendererProps) => React.JSX.Element;
@@ -1,9 +1,11 @@
1
1
  import React from 'react';
2
2
  import { ProviderFactory, type SyncedBlockRendererDataProviders } from '@atlaskit/editor-common/provider-factory';
3
- import { type SyncBlockInstance } from '@atlaskit/editor-synced-block-provider';
3
+ import { type UseFetchSyncBlockDataResult } from '@atlaskit/editor-synced-block-provider';
4
+ import type { SyncedBlockRendererOptions } from '../types';
4
5
  export type SyncedBlockRendererProps = {
5
6
  syncBlockRendererDataProviders: SyncedBlockRendererDataProviders;
6
- useFetchSyncBlockData: () => SyncBlockInstance | null;
7
+ syncBlockRendererOptions: SyncedBlockRendererOptions | undefined;
8
+ useFetchSyncBlockData: () => UseFetchSyncBlockDataResult;
7
9
  };
8
10
  export declare const convertSyncBlockRendererDataProvidersToProviderFactory: (dataProviders: SyncedBlockRendererDataProviders) => ProviderFactory;
9
- export declare const SyncedBlockRenderer: React.MemoExoticComponent<({ useFetchSyncBlockData, syncBlockRendererDataProviders, }: SyncedBlockRendererProps) => React.JSX.Element>;
11
+ export declare const SyncedBlockRenderer: React.MemoExoticComponent<({ useFetchSyncBlockData, syncBlockRendererDataProviders, syncBlockRendererOptions, }: SyncedBlockRendererProps) => React.JSX.Element>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-synced-block-renderer",
3
- "version": "3.0.1",
3
+ "version": "3.1.1",
4
4
  "description": "SyncedBlockRenderer for @atlaskit/editor-plugin-synced-block",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -30,8 +30,9 @@
30
30
  "dependencies": {
31
31
  "@atlaskit/button": "^23.5.0",
32
32
  "@atlaskit/css": "^0.15.0",
33
+ "@atlaskit/editor-plugin-synced-block": "^4.1.0",
33
34
  "@atlaskit/editor-prosemirror": "7.0.0",
34
- "@atlaskit/editor-synced-block-provider": "^2.5.0",
35
+ "@atlaskit/editor-synced-block-provider": "^2.6.0",
35
36
  "@atlaskit/heading": "^5.2.0",
36
37
  "@atlaskit/icon": "^28.5.0",
37
38
  "@atlaskit/image": "^3.0.0",
@@ -43,7 +44,7 @@
43
44
  "relay-runtime": "npm:atl-relay-compiler@0.0.0-main-5980a913"
44
45
  },
45
46
  "peerDependencies": {
46
- "@atlaskit/editor-common": "^110.21.0",
47
+ "@atlaskit/editor-common": "^110.22.0",
47
48
  "react": "^18.2.0",
48
49
  "react-intl-next": "npm:react-intl@^5.18.1"
49
50
  },