@atlaskit/editor-synced-block-renderer 2.3.1 → 3.0.0

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,16 @@
1
1
  # @atlaskit/editor-synced-block-renderer
2
2
 
3
+ ## 3.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - [`181018115c031`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/181018115c031) -
8
+ EDITOR-2438 Pass data providers to Synced Block nested renderer
9
+
10
+ ### Patch Changes
11
+
12
+ - Updated dependencies
13
+
3
14
  ## 2.3.1
4
15
 
5
16
  ### Patch Changes
@@ -22,12 +22,33 @@
22
22
  "../src/**/stories/**/*"
23
23
  ],
24
24
  "references": [
25
+ {
26
+ "path": "../../../design-system/button/afm-products/tsconfig.json"
27
+ },
28
+ {
29
+ "path": "../../../design-system/css/afm-products/tsconfig.json"
30
+ },
25
31
  {
26
32
  "path": "../../editor-synced-block-provider/afm-products/tsconfig.json"
27
33
  },
34
+ {
35
+ "path": "../../../design-system/heading/afm-products/tsconfig.json"
36
+ },
37
+ {
38
+ "path": "../../../design-system/icon/afm-products/tsconfig.json"
39
+ },
40
+ {
41
+ "path": "../../../design-system/image/afm-products/tsconfig.json"
42
+ },
43
+ {
44
+ "path": "../../../design-system/primitives/afm-products/tsconfig.json"
45
+ },
28
46
  {
29
47
  "path": "../../renderer/afm-products/tsconfig.json"
30
48
  },
49
+ {
50
+ "path": "../../../design-system/tokens/afm-products/tsconfig.json"
51
+ },
31
52
  {
32
53
  "path": "../../editor-common/afm-products/tsconfig.json"
33
54
  }
@@ -7,8 +7,11 @@ 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
- var getSyncedBlockRenderer = exports.getSyncedBlockRenderer = function getSyncedBlockRenderer(props) {
10
+ var getSyncedBlockRenderer = exports.getSyncedBlockRenderer = function getSyncedBlockRenderer(_ref) {
11
+ var syncBlockRendererDataProviders = _ref.syncBlockRendererDataProviders,
12
+ useFetchSyncBlockData = _ref.useFetchSyncBlockData;
11
13
  return /*#__PURE__*/_react.default.createElement(_SyncedBlockRenderer.SyncedBlockRenderer, {
12
- useFetchSyncBlockData: props.useFetchSyncBlockData
14
+ syncBlockRendererDataProviders: syncBlockRendererDataProviders,
15
+ useFetchSyncBlockData: useFetchSyncBlockData
13
16
  });
14
17
  };
@@ -1,20 +1,56 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.SyncedBlockRenderer = void 0;
8
- var _react = _interopRequireDefault(require("react"));
7
+ exports.convertSyncBlockRendererDataProvidersToProviderFactory = exports.SyncedBlockRenderer = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _providerFactory = require("@atlaskit/editor-common/provider-factory");
9
10
  var _editorSyncedBlockProvider = require("@atlaskit/editor-synced-block-provider");
10
11
  var _renderer = require("@atlaskit/renderer");
11
12
  var _actions = require("@atlaskit/renderer/actions");
12
13
  var _SyncedBlockErrorComponent = require("./SyncedBlockErrorComponent");
13
14
  var _SyncedBlockLoadingState = require("./SyncedBlockLoadingState");
14
- var SyncedBlockRenderer = exports.SyncedBlockRenderer = function SyncedBlockRenderer(_ref) {
15
- var useFetchSyncBlockData = _ref.useFetchSyncBlockData,
16
- dataProviders = _ref.dataProviders;
15
+ 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); }
16
+ var convertSyncBlockRendererDataProvidersToProviderFactory = exports.convertSyncBlockRendererDataProvidersToProviderFactory = function convertSyncBlockRendererDataProvidersToProviderFactory(dataProviders) {
17
+ return _providerFactory.ProviderFactory.create({
18
+ cardProvider: dataProviders === null || dataProviders === void 0 ? void 0 : dataProviders.cardProvider,
19
+ emojiProvider: dataProviders === null || dataProviders === void 0 ? void 0 : dataProviders.emojiProvider,
20
+ mediaProvider: dataProviders === null || dataProviders === void 0 ? void 0 : dataProviders.mediaProvider,
21
+ mentionProvider: dataProviders === null || dataProviders === void 0 ? void 0 : dataProviders.mentionProvider,
22
+ profilecardProvider: dataProviders === null || dataProviders === void 0 ? void 0 : dataProviders.profilecardProvider,
23
+ taskDecisionProvider: dataProviders === null || dataProviders === void 0 ? void 0 : dataProviders.taskDecisionProvider
24
+ });
25
+ };
26
+ var SyncedBlockRendererWrapper = function SyncedBlockRendererWrapper(_ref) {
27
+ var fetchedData = _ref.fetchedData,
28
+ providerFactory = _ref.providerFactory;
29
+ var syncBlockDoc = (0, _react.useMemo)(function () {
30
+ var _fetchedData$content;
31
+ return {
32
+ content: (_fetchedData$content = fetchedData.content) !== null && _fetchedData$content !== void 0 ? _fetchedData$content : [],
33
+ version: 1,
34
+ type: 'doc'
35
+ };
36
+ }, [fetchedData]);
37
+ return /*#__PURE__*/_react.default.createElement(_actions.RendererActionsContext, null, /*#__PURE__*/_react.default.createElement("div", {
38
+ "data-testid": "sync-block-renderer-wrapper"
39
+ }, /*#__PURE__*/_react.default.createElement(_renderer.ReactRenderer, {
40
+ appearance: "full-width",
41
+ adfStage: "stage0",
42
+ document: syncBlockDoc,
43
+ disableHeadingIDs: true,
44
+ dataProviders: providerFactory
45
+ })));
46
+ };
47
+ var SyncedBlockRendererComponent = function SyncedBlockRendererComponent(_ref2) {
48
+ var useFetchSyncBlockData = _ref2.useFetchSyncBlockData,
49
+ syncBlockRendererDataProviders = _ref2.syncBlockRendererDataProviders;
17
50
  var fetchResult = useFetchSyncBlockData();
51
+ var providerFactory = (0, _react.useMemo)(function () {
52
+ return convertSyncBlockRendererDataProvidersToProviderFactory(syncBlockRendererDataProviders);
53
+ }, [syncBlockRendererDataProviders]);
18
54
  if (!fetchResult) {
19
55
  return /*#__PURE__*/_react.default.createElement(_SyncedBlockLoadingState.SyncedBlockLoadingState, null);
20
56
  }
@@ -25,18 +61,9 @@ var SyncedBlockRenderer = exports.SyncedBlockRenderer = function SyncedBlockRend
25
61
  resourceId: fetchResult.resourceId
26
62
  });
27
63
  }
28
- var syncBlockDoc = {
29
- content: fetchResult.data.content,
30
- version: 1,
31
- type: 'doc'
32
- };
33
- return /*#__PURE__*/_react.default.createElement(_actions.RendererActionsContext, null, /*#__PURE__*/_react.default.createElement("div", {
34
- "data-testid": "sync-block-renderer-wrapper"
35
- }, /*#__PURE__*/_react.default.createElement(_renderer.ReactRenderer, {
36
- appearance: "full-width",
37
- adfStage: "stage0",
38
- document: syncBlockDoc,
39
- disableHeadingIDs: true,
40
- dataProviders: dataProviders
41
- })));
42
- };
64
+ return /*#__PURE__*/_react.default.createElement(SyncedBlockRendererWrapper, {
65
+ fetchedData: fetchResult.data,
66
+ providerFactory: providerFactory
67
+ });
68
+ };
69
+ var SyncedBlockRenderer = exports.SyncedBlockRenderer = /*#__PURE__*/(0, _react.memo)(SyncedBlockRendererComponent);
@@ -1,7 +1,11 @@
1
1
  import React from 'react';
2
2
  import { SyncedBlockRenderer } from './ui/SyncedBlockRenderer';
3
- export const getSyncedBlockRenderer = props => {
3
+ export const getSyncedBlockRenderer = ({
4
+ syncBlockRendererDataProviders,
5
+ useFetchSyncBlockData
6
+ }) => {
4
7
  return /*#__PURE__*/React.createElement(SyncedBlockRenderer, {
5
- useFetchSyncBlockData: props.useFetchSyncBlockData
8
+ syncBlockRendererDataProviders: syncBlockRendererDataProviders,
9
+ useFetchSyncBlockData: useFetchSyncBlockData
6
10
  });
7
11
  };
@@ -1,14 +1,50 @@
1
- import React from 'react';
1
+ import React, { memo, useMemo } from 'react';
2
+ import { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
2
3
  import { SyncBlockError } from '@atlaskit/editor-synced-block-provider';
3
4
  import { ReactRenderer } from '@atlaskit/renderer';
4
5
  import { RendererActionsContext } from '@atlaskit/renderer/actions';
5
6
  import { SyncedBlockErrorComponent } from './SyncedBlockErrorComponent';
6
7
  import { SyncedBlockLoadingState } from './SyncedBlockLoadingState';
7
- export const SyncedBlockRenderer = ({
8
+ export const convertSyncBlockRendererDataProvidersToProviderFactory = dataProviders => {
9
+ return ProviderFactory.create({
10
+ cardProvider: dataProviders === null || dataProviders === void 0 ? void 0 : dataProviders.cardProvider,
11
+ emojiProvider: dataProviders === null || dataProviders === void 0 ? void 0 : dataProviders.emojiProvider,
12
+ mediaProvider: dataProviders === null || dataProviders === void 0 ? void 0 : dataProviders.mediaProvider,
13
+ mentionProvider: dataProviders === null || dataProviders === void 0 ? void 0 : dataProviders.mentionProvider,
14
+ profilecardProvider: dataProviders === null || dataProviders === void 0 ? void 0 : dataProviders.profilecardProvider,
15
+ taskDecisionProvider: dataProviders === null || dataProviders === void 0 ? void 0 : dataProviders.taskDecisionProvider
16
+ });
17
+ };
18
+ const SyncedBlockRendererWrapper = ({
19
+ fetchedData,
20
+ providerFactory
21
+ }) => {
22
+ const syncBlockDoc = useMemo(() => {
23
+ var _fetchedData$content;
24
+ return {
25
+ content: (_fetchedData$content = fetchedData.content) !== null && _fetchedData$content !== void 0 ? _fetchedData$content : [],
26
+ version: 1,
27
+ type: 'doc'
28
+ };
29
+ }, [fetchedData]);
30
+ return /*#__PURE__*/React.createElement(RendererActionsContext, null, /*#__PURE__*/React.createElement("div", {
31
+ "data-testid": "sync-block-renderer-wrapper"
32
+ }, /*#__PURE__*/React.createElement(ReactRenderer, {
33
+ appearance: "full-width",
34
+ adfStage: "stage0",
35
+ document: syncBlockDoc,
36
+ disableHeadingIDs: true,
37
+ dataProviders: providerFactory
38
+ })));
39
+ };
40
+ const SyncedBlockRendererComponent = ({
8
41
  useFetchSyncBlockData,
9
- dataProviders
42
+ syncBlockRendererDataProviders
10
43
  }) => {
11
44
  const fetchResult = useFetchSyncBlockData();
45
+ const providerFactory = useMemo(() => {
46
+ return convertSyncBlockRendererDataProvidersToProviderFactory(syncBlockRendererDataProviders);
47
+ }, [syncBlockRendererDataProviders]);
12
48
  if (!fetchResult) {
13
49
  return /*#__PURE__*/React.createElement(SyncedBlockLoadingState, null);
14
50
  }
@@ -19,18 +55,9 @@ export const SyncedBlockRenderer = ({
19
55
  resourceId: fetchResult.resourceId
20
56
  });
21
57
  }
22
- const syncBlockDoc = {
23
- content: fetchResult.data.content,
24
- version: 1,
25
- type: 'doc'
26
- };
27
- return /*#__PURE__*/React.createElement(RendererActionsContext, null, /*#__PURE__*/React.createElement("div", {
28
- "data-testid": "sync-block-renderer-wrapper"
29
- }, /*#__PURE__*/React.createElement(ReactRenderer, {
30
- appearance: "full-width",
31
- adfStage: "stage0",
32
- document: syncBlockDoc,
33
- disableHeadingIDs: true,
34
- dataProviders: dataProviders
35
- })));
36
- };
58
+ return /*#__PURE__*/React.createElement(SyncedBlockRendererWrapper, {
59
+ fetchedData: fetchResult.data,
60
+ providerFactory: providerFactory
61
+ });
62
+ };
63
+ export const SyncedBlockRenderer = /*#__PURE__*/memo(SyncedBlockRendererComponent);
@@ -1,7 +1,10 @@
1
1
  import React from 'react';
2
2
  import { SyncedBlockRenderer } from './ui/SyncedBlockRenderer';
3
- export var getSyncedBlockRenderer = function getSyncedBlockRenderer(props) {
3
+ export var getSyncedBlockRenderer = function getSyncedBlockRenderer(_ref) {
4
+ var syncBlockRendererDataProviders = _ref.syncBlockRendererDataProviders,
5
+ useFetchSyncBlockData = _ref.useFetchSyncBlockData;
4
6
  return /*#__PURE__*/React.createElement(SyncedBlockRenderer, {
5
- useFetchSyncBlockData: props.useFetchSyncBlockData
7
+ syncBlockRendererDataProviders: syncBlockRendererDataProviders,
8
+ useFetchSyncBlockData: useFetchSyncBlockData
6
9
  });
7
10
  };
@@ -1,13 +1,48 @@
1
- import React from 'react';
1
+ import React, { memo, useMemo } from 'react';
2
+ import { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
2
3
  import { SyncBlockError } from '@atlaskit/editor-synced-block-provider';
3
4
  import { ReactRenderer } from '@atlaskit/renderer';
4
5
  import { RendererActionsContext } from '@atlaskit/renderer/actions';
5
6
  import { SyncedBlockErrorComponent } from './SyncedBlockErrorComponent';
6
7
  import { SyncedBlockLoadingState } from './SyncedBlockLoadingState';
7
- export var SyncedBlockRenderer = function SyncedBlockRenderer(_ref) {
8
- var useFetchSyncBlockData = _ref.useFetchSyncBlockData,
9
- dataProviders = _ref.dataProviders;
8
+ export var convertSyncBlockRendererDataProvidersToProviderFactory = function convertSyncBlockRendererDataProvidersToProviderFactory(dataProviders) {
9
+ return ProviderFactory.create({
10
+ cardProvider: dataProviders === null || dataProviders === void 0 ? void 0 : dataProviders.cardProvider,
11
+ emojiProvider: dataProviders === null || dataProviders === void 0 ? void 0 : dataProviders.emojiProvider,
12
+ mediaProvider: dataProviders === null || dataProviders === void 0 ? void 0 : dataProviders.mediaProvider,
13
+ mentionProvider: dataProviders === null || dataProviders === void 0 ? void 0 : dataProviders.mentionProvider,
14
+ profilecardProvider: dataProviders === null || dataProviders === void 0 ? void 0 : dataProviders.profilecardProvider,
15
+ taskDecisionProvider: dataProviders === null || dataProviders === void 0 ? void 0 : dataProviders.taskDecisionProvider
16
+ });
17
+ };
18
+ var SyncedBlockRendererWrapper = function SyncedBlockRendererWrapper(_ref) {
19
+ var fetchedData = _ref.fetchedData,
20
+ providerFactory = _ref.providerFactory;
21
+ var syncBlockDoc = useMemo(function () {
22
+ var _fetchedData$content;
23
+ return {
24
+ content: (_fetchedData$content = fetchedData.content) !== null && _fetchedData$content !== void 0 ? _fetchedData$content : [],
25
+ version: 1,
26
+ type: 'doc'
27
+ };
28
+ }, [fetchedData]);
29
+ return /*#__PURE__*/React.createElement(RendererActionsContext, null, /*#__PURE__*/React.createElement("div", {
30
+ "data-testid": "sync-block-renderer-wrapper"
31
+ }, /*#__PURE__*/React.createElement(ReactRenderer, {
32
+ appearance: "full-width",
33
+ adfStage: "stage0",
34
+ document: syncBlockDoc,
35
+ disableHeadingIDs: true,
36
+ dataProviders: providerFactory
37
+ })));
38
+ };
39
+ var SyncedBlockRendererComponent = function SyncedBlockRendererComponent(_ref2) {
40
+ var useFetchSyncBlockData = _ref2.useFetchSyncBlockData,
41
+ syncBlockRendererDataProviders = _ref2.syncBlockRendererDataProviders;
10
42
  var fetchResult = useFetchSyncBlockData();
43
+ var providerFactory = useMemo(function () {
44
+ return convertSyncBlockRendererDataProvidersToProviderFactory(syncBlockRendererDataProviders);
45
+ }, [syncBlockRendererDataProviders]);
11
46
  if (!fetchResult) {
12
47
  return /*#__PURE__*/React.createElement(SyncedBlockLoadingState, null);
13
48
  }
@@ -18,18 +53,9 @@ export var SyncedBlockRenderer = function SyncedBlockRenderer(_ref) {
18
53
  resourceId: fetchResult.resourceId
19
54
  });
20
55
  }
21
- var syncBlockDoc = {
22
- content: fetchResult.data.content,
23
- version: 1,
24
- type: 'doc'
25
- };
26
- return /*#__PURE__*/React.createElement(RendererActionsContext, null, /*#__PURE__*/React.createElement("div", {
27
- "data-testid": "sync-block-renderer-wrapper"
28
- }, /*#__PURE__*/React.createElement(ReactRenderer, {
29
- appearance: "full-width",
30
- adfStage: "stage0",
31
- document: syncBlockDoc,
32
- disableHeadingIDs: true,
33
- dataProviders: dataProviders
34
- })));
35
- };
56
+ return /*#__PURE__*/React.createElement(SyncedBlockRendererWrapper, {
57
+ fetchedData: fetchResult.data,
58
+ providerFactory: providerFactory
59
+ });
60
+ };
61
+ export var SyncedBlockRenderer = /*#__PURE__*/memo(SyncedBlockRendererComponent);
@@ -1,3 +1,3 @@
1
1
  import React from 'react';
2
2
  import { type SyncedBlockRendererProps } from './ui/SyncedBlockRenderer';
3
- export declare const getSyncedBlockRenderer: (props: SyncedBlockRendererProps) => React.JSX.Element;
3
+ export declare const getSyncedBlockRenderer: ({ syncBlockRendererDataProviders, useFetchSyncBlockData, }: SyncedBlockRendererProps) => React.JSX.Element;
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { SyncBlockError } from '@atlaskit/editor-synced-block-provider';
3
- export declare const SyncedBlockErrorComponent: ({ error, resourceId }: {
3
+ export declare const SyncedBlockErrorComponent: ({ error, resourceId, }: {
4
4
  error: SyncBlockError;
5
5
  resourceId?: string;
6
6
  }) => React.JSX.Element;
@@ -1,8 +1,9 @@
1
1
  import React from 'react';
2
- import type { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
2
+ import { ProviderFactory, type SyncedBlockRendererDataProviders } from '@atlaskit/editor-common/provider-factory';
3
3
  import { type SyncBlockInstance } from '@atlaskit/editor-synced-block-provider';
4
4
  export type SyncedBlockRendererProps = {
5
- dataProviders?: ProviderFactory;
5
+ syncBlockRendererDataProviders: SyncedBlockRendererDataProviders;
6
6
  useFetchSyncBlockData: () => SyncBlockInstance | null;
7
7
  };
8
- export declare const SyncedBlockRenderer: ({ useFetchSyncBlockData, dataProviders, }: SyncedBlockRendererProps) => React.JSX.Element;
8
+ export declare const convertSyncBlockRendererDataProvidersToProviderFactory: (dataProviders: SyncedBlockRendererDataProviders) => ProviderFactory;
9
+ export declare const SyncedBlockRenderer: React.MemoExoticComponent<({ useFetchSyncBlockData, syncBlockRendererDataProviders, }: SyncedBlockRendererProps) => React.JSX.Element>;
@@ -1,3 +1,3 @@
1
1
  import React from 'react';
2
2
  import { type SyncedBlockRendererProps } from './ui/SyncedBlockRenderer';
3
- export declare const getSyncedBlockRenderer: (props: SyncedBlockRendererProps) => React.JSX.Element;
3
+ export declare const getSyncedBlockRenderer: ({ syncBlockRendererDataProviders, useFetchSyncBlockData, }: SyncedBlockRendererProps) => React.JSX.Element;
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { SyncBlockError } from '@atlaskit/editor-synced-block-provider';
3
- export declare const SyncedBlockErrorComponent: ({ error, resourceId }: {
3
+ export declare const SyncedBlockErrorComponent: ({ error, resourceId, }: {
4
4
  error: SyncBlockError;
5
5
  resourceId?: string;
6
6
  }) => React.JSX.Element;
@@ -1,8 +1,9 @@
1
1
  import React from 'react';
2
- import type { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
2
+ import { ProviderFactory, type SyncedBlockRendererDataProviders } from '@atlaskit/editor-common/provider-factory';
3
3
  import { type SyncBlockInstance } from '@atlaskit/editor-synced-block-provider';
4
4
  export type SyncedBlockRendererProps = {
5
- dataProviders?: ProviderFactory;
5
+ syncBlockRendererDataProviders: SyncedBlockRendererDataProviders;
6
6
  useFetchSyncBlockData: () => SyncBlockInstance | null;
7
7
  };
8
- export declare const SyncedBlockRenderer: ({ useFetchSyncBlockData, dataProviders, }: SyncedBlockRendererProps) => React.JSX.Element;
8
+ export declare const convertSyncBlockRendererDataProvidersToProviderFactory: (dataProviders: SyncedBlockRendererDataProviders) => ProviderFactory;
9
+ export declare const SyncedBlockRenderer: React.MemoExoticComponent<({ useFetchSyncBlockData, syncBlockRendererDataProviders, }: SyncedBlockRendererProps) => React.JSX.Element>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-synced-block-renderer",
3
- "version": "2.3.1",
3
+ "version": "3.0.0",
4
4
  "description": "SyncedBlockRenderer for @atlaskit/editor-plugin-synced-block",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",