@atlaskit/editor-synced-block-renderer 3.1.6 → 3.3.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.
Files changed (53) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/afm-cc/tsconfig.json +3 -0
  3. package/dist/cjs/getSyncedBlockRenderer.js +1 -3
  4. package/dist/cjs/ui/AKRendererWrapper.js +1 -2
  5. package/dist/cjs/ui/SyncedBlockErrorComponent.js +25 -16
  6. package/dist/cjs/ui/SyncedBlockErrorStateCard.js +41 -0
  7. package/dist/cjs/ui/SyncedBlockGenericError.js +20 -0
  8. package/dist/cjs/ui/SyncedBlockLoadError.js +34 -0
  9. package/dist/cjs/ui/SyncedBlockLoadingState.compiled.css +6 -0
  10. package/dist/cjs/ui/SyncedBlockLoadingState.js +14 -1
  11. package/dist/cjs/ui/SyncedBlockNodeComponentRenderer.js +13 -8
  12. package/dist/cjs/ui/SyncedBlockPermissionDenied.js +8 -26
  13. package/dist/cjs/ui/SyncedBlockRenderer.js +9 -19
  14. package/dist/es2019/getSyncedBlockRenderer.js +0 -2
  15. package/dist/es2019/ui/AKRendererWrapper.js +1 -2
  16. package/dist/es2019/ui/SyncedBlockErrorComponent.js +24 -16
  17. package/dist/es2019/ui/SyncedBlockErrorStateCard.js +35 -0
  18. package/dist/es2019/ui/SyncedBlockGenericError.js +14 -0
  19. package/dist/es2019/ui/SyncedBlockLoadError.js +29 -0
  20. package/dist/es2019/ui/SyncedBlockLoadingState.compiled.css +6 -0
  21. package/dist/es2019/ui/SyncedBlockLoadingState.js +14 -1
  22. package/dist/es2019/ui/SyncedBlockNodeComponentRenderer.js +13 -8
  23. package/dist/es2019/ui/SyncedBlockPermissionDenied.js +9 -27
  24. package/dist/es2019/ui/SyncedBlockRenderer.js +9 -19
  25. package/dist/esm/getSyncedBlockRenderer.js +1 -3
  26. package/dist/esm/ui/AKRendererWrapper.js +1 -2
  27. package/dist/esm/ui/SyncedBlockErrorComponent.js +23 -15
  28. package/dist/esm/ui/SyncedBlockErrorStateCard.js +34 -0
  29. package/dist/esm/ui/SyncedBlockGenericError.js +13 -0
  30. package/dist/esm/ui/SyncedBlockLoadError.js +27 -0
  31. package/dist/esm/ui/SyncedBlockLoadingState.compiled.css +6 -0
  32. package/dist/esm/ui/SyncedBlockLoadingState.js +14 -1
  33. package/dist/esm/ui/SyncedBlockNodeComponentRenderer.js +13 -8
  34. package/dist/esm/ui/SyncedBlockPermissionDenied.js +9 -27
  35. package/dist/esm/ui/SyncedBlockRenderer.js +9 -19
  36. package/dist/types/getSyncedBlockNodeComponent.d.ts +1 -0
  37. package/dist/types/getSyncedBlockRenderer.d.ts +1 -3
  38. package/dist/types/ui/SyncedBlockErrorComponent.d.ts +3 -1
  39. package/dist/types/ui/SyncedBlockErrorStateCard.d.ts +10 -0
  40. package/dist/types/ui/SyncedBlockGenericError.d.ts +2 -0
  41. package/dist/types/ui/SyncedBlockLoadError.d.ts +8 -0
  42. package/dist/types/ui/SyncedBlockRenderer.d.ts +1 -4
  43. package/dist/types-ts4.5/getSyncedBlockNodeComponent.d.ts +1 -0
  44. package/dist/types-ts4.5/getSyncedBlockRenderer.d.ts +1 -3
  45. package/dist/types-ts4.5/ui/SyncedBlockErrorComponent.d.ts +3 -1
  46. package/dist/types-ts4.5/ui/SyncedBlockErrorStateCard.d.ts +10 -0
  47. package/dist/types-ts4.5/ui/SyncedBlockGenericError.d.ts +2 -0
  48. package/dist/types-ts4.5/ui/SyncedBlockLoadError.d.ts +8 -0
  49. package/dist/types-ts4.5/ui/SyncedBlockRenderer.d.ts +1 -4
  50. package/package.json +5 -4
  51. /package/dist/cjs/ui/{SyncedBlockPermissionDenied.compiled.css → SyncedBlockErrorStateCard.compiled.css} +0 -0
  52. /package/dist/es2019/ui/{SyncedBlockPermissionDenied.compiled.css → SyncedBlockErrorStateCard.compiled.css} +0 -0
  53. /package/dist/esm/ui/{SyncedBlockPermissionDenied.compiled.css → SyncedBlockErrorStateCard.compiled.css} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # @atlaskit/editor-synced-block-renderer
2
2
 
3
+ ## 3.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`721d3790d48fe`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/721d3790d48fe) -
8
+ EDITOR-2533 implement error-ui with retry
9
+
10
+ ### Patch Changes
11
+
12
+ - Updated dependencies
13
+
14
+ ## 3.2.0
15
+
16
+ ### Minor Changes
17
+
18
+ - [`9efdcfd413c6d`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/9efdcfd413c6d) -
19
+ [ux] Stop sticky table headers within synced blocks
20
+
21
+ ### Patch Changes
22
+
23
+ - [`df3d682372ee2`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/df3d682372ee2) -
24
+ EDITOR-2379 add data-sync-block attribute to reference sync block wrapper
25
+ - [`e3aafa008fcf4`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/e3aafa008fcf4) -
26
+ EDITOR-2771 Pass parent Editor/Renderer data providers through SyncBlockDataProvider to the nested
27
+ renderer
28
+ - Updated dependencies
29
+
3
30
  ## 3.1.6
4
31
 
5
32
  ### Patch Changes
@@ -45,6 +45,9 @@
45
45
  {
46
46
  "path": "../../renderer/afm-cc/tsconfig.json"
47
47
  },
48
+ {
49
+ "path": "../../../design-system/spinner/afm-cc/tsconfig.json"
50
+ },
48
51
  {
49
52
  "path": "../../../design-system/tokens/afm-cc/tsconfig.json"
50
53
  },
@@ -9,13 +9,11 @@ var _react = _interopRequireDefault(require("react"));
9
9
  var _SyncedBlockRenderer = require("./ui/SyncedBlockRenderer");
10
10
  // For rendering reference synced block nodes in Editor
11
11
  var getSyncedBlockRenderer = exports.getSyncedBlockRenderer = function getSyncedBlockRenderer(_ref) {
12
- var syncBlockRendererDataProviders = _ref.syncBlockRendererDataProviders,
13
- syncBlockRendererOptions = _ref.syncBlockRendererOptions;
12
+ var syncBlockRendererOptions = _ref.syncBlockRendererOptions;
14
13
  return function (_ref2) {
15
14
  var useFetchSyncBlockData = _ref2.useFetchSyncBlockData;
16
15
  return /*#__PURE__*/_react.default.createElement(_SyncedBlockRenderer.SyncedBlockRenderer, {
17
16
  syncBlockRendererOptions: syncBlockRendererOptions,
18
- syncBlockRendererDataProviders: syncBlockRendererDataProviders,
19
17
  useFetchSyncBlockData: useFetchSyncBlockData
20
18
  });
21
19
  };
@@ -44,8 +44,7 @@ var defaultOptions = {
44
44
  mediaInline: true
45
45
  }
46
46
  },
47
- smartLinks: undefined,
48
- stickyHeaders: true
47
+ smartLinks: undefined
49
48
  };
50
49
  var AKRendererWrapper = exports.AKRendererWrapper = /*#__PURE__*/(0, _react.memo)(function (_ref2) {
51
50
  var doc = _ref2.doc,
@@ -1,42 +1,51 @@
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
7
  exports.SyncedBlockErrorComponent = void 0;
8
- var _react = _interopRequireDefault(require("react"));
8
+ var _react = _interopRequireWildcard(require("react"));
9
9
  var _syncBlock = require("@atlaskit/editor-common/sync-block");
10
10
  var _editorSyncedBlockProvider = require("@atlaskit/editor-synced-block-provider");
11
+ var _SyncedBlockGenericError = require("./SyncedBlockGenericError");
12
+ var _SyncedBlockLoadError = require("./SyncedBlockLoadError");
11
13
  var _SyncedBlockPermissionDenied = require("./SyncedBlockPermissionDenied");
14
+ 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); }
12
15
  var SyncedBlockErrorComponent = exports.SyncedBlockErrorComponent = function SyncedBlockErrorComponent(_ref) {
13
16
  var error = _ref.error,
17
+ isLoading = _ref.isLoading,
18
+ onRetry = _ref.onRetry,
14
19
  resourceId = _ref.resourceId;
15
- var getErrorContent = function getErrorContent() {
20
+ var getErrorContent = (0, _react.useMemo)(function () {
16
21
  switch (error) {
17
22
  case _editorSyncedBlockProvider.SyncBlockError.Forbidden:
18
- if (resourceId) {
19
- var _getPageIdAndTypeFrom = (0, _editorSyncedBlockProvider.getPageIdAndTypeFromAri)(resourceId),
20
- contentId = _getPageIdAndTypeFrom.id;
21
- if (contentId) {
22
- return /*#__PURE__*/_react.default.createElement(_SyncedBlockPermissionDenied.SyncedBlockPermissionDenied, {
23
- contentId: contentId
24
- });
25
- }
23
+ if (!resourceId) {
24
+ return /*#__PURE__*/_react.default.createElement(_SyncedBlockGenericError.SyncedBlockGenericError, null);
26
25
  }
27
- return /*#__PURE__*/_react.default.createElement("div", null, "Something went wrong");
26
+ var _getPageIdAndTypeFrom = (0, _editorSyncedBlockProvider.getPageIdAndTypeFromAri)(resourceId),
27
+ contentId = _getPageIdAndTypeFrom.id;
28
+ if (contentId) {
29
+ return /*#__PURE__*/_react.default.createElement(_SyncedBlockPermissionDenied.SyncedBlockPermissionDenied, {
30
+ contentId: contentId
31
+ });
32
+ }
33
+ return /*#__PURE__*/_react.default.createElement(_SyncedBlockGenericError.SyncedBlockGenericError, null);
28
34
  case _editorSyncedBlockProvider.SyncBlockError.NotFound:
29
- return /*#__PURE__*/_react.default.createElement("div", null, "Sync Block Not Found");
30
35
  case _editorSyncedBlockProvider.SyncBlockError.Errored:
36
+ return /*#__PURE__*/_react.default.createElement(_SyncedBlockLoadError.SyncedBlockLoadError, {
37
+ onRetry: onRetry,
38
+ isLoading: isLoading
39
+ });
31
40
  default:
32
- return /*#__PURE__*/_react.default.createElement("div", null, "Something went wrong");
41
+ return /*#__PURE__*/_react.default.createElement(_SyncedBlockGenericError.SyncedBlockGenericError, null);
33
42
  }
34
- };
43
+ }, [error, isLoading, onRetry, resourceId]);
35
44
  return (
36
45
  /*#__PURE__*/
37
46
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop
38
47
  _react.default.createElement("div", {
39
48
  className: _syncBlock.SyncBlockSharedCssClassName.error
40
- }, getErrorContent())
49
+ }, getErrorContent)
41
50
  );
42
51
  };
@@ -0,0 +1,41 @@
1
+ /* SyncedBlockErrorStateCard.tsx generated by @compiled/babel-plugin v0.38.1 */
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.SyncedBlockErrorStateCard = void 0;
9
+ require("./SyncedBlockErrorStateCard.compiled.css");
10
+ var _runtime = require("@compiled/react/runtime");
11
+ var _react = _interopRequireDefault(require("react"));
12
+ var _heading = _interopRequireDefault(require("@atlaskit/heading"));
13
+ var _image = _interopRequireDefault(require("@atlaskit/image"));
14
+ var _compiled = require("@atlaskit/primitives/compiled");
15
+ var styles = {
16
+ wrapper: "_2rko12b0 _zulpu2gc _ca0qv47k _n3tdv47k _19bvxy5q _u5f3v47k _bfhkby5v _1e0c1txw _1bahv2br _4cvr1h6o",
17
+ textWrapper: "_18u0u2gc"
18
+ };
19
+ var SyncedBlockErrorStateCard = exports.SyncedBlockErrorStateCard = function SyncedBlockErrorStateCard(_ref) {
20
+ var children = _ref.children,
21
+ imageAltText = _ref.imageAltText,
22
+ imageSrc = _ref.imageSrc,
23
+ primaryMessage = _ref.primaryMessage,
24
+ secondaryMessage = _ref.secondaryMessage;
25
+ return /*#__PURE__*/_react.default.createElement(_compiled.Box, {
26
+ xcss: styles.wrapper
27
+ }, /*#__PURE__*/_react.default.createElement(_image.default, {
28
+ src: imageSrc,
29
+ alt: imageAltText,
30
+ width: "48",
31
+ height: "48"
32
+ }), /*#__PURE__*/_react.default.createElement(_compiled.Stack, {
33
+ space: "space.100",
34
+ alignInline: "start",
35
+ xcss: styles.textWrapper
36
+ }, primaryMessage && /*#__PURE__*/_react.default.createElement(_heading.default, {
37
+ size: "xsmall"
38
+ }, primaryMessage), secondaryMessage && /*#__PURE__*/_react.default.createElement(_compiled.Text, {
39
+ color: "color.text.subtle"
40
+ }, secondaryMessage), children));
41
+ };
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.SyncedBlockGenericError = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _reactIntlNext = require("react-intl-next");
10
+ var _messages = require("@atlaskit/editor-common/messages");
11
+ var _ExclamationWarning = _interopRequireDefault(require("./assets/ExclamationWarning.svg"));
12
+ var _SyncedBlockErrorStateCard = require("./SyncedBlockErrorStateCard");
13
+ var SyncedBlockGenericError = exports.SyncedBlockGenericError = function SyncedBlockGenericError() {
14
+ var _useIntl = (0, _reactIntlNext.useIntl)(),
15
+ formatMessage = _useIntl.formatMessage;
16
+ return /*#__PURE__*/_react.default.createElement(_SyncedBlockErrorStateCard.SyncedBlockErrorStateCard, {
17
+ imageSrc: _ExclamationWarning.default,
18
+ secondaryMessage: formatMessage(_messages.syncBlockMessages.generalErrorDescription)
19
+ });
20
+ };
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.SyncedBlockLoadError = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _reactIntlNext = require("react-intl-next");
10
+ var _new = _interopRequireDefault(require("@atlaskit/button/new"));
11
+ var _messages = require("@atlaskit/editor-common/messages");
12
+ var _ExclamationWarning = _interopRequireDefault(require("./assets/ExclamationWarning.svg"));
13
+ var _SyncedBlockErrorStateCard = require("./SyncedBlockErrorStateCard");
14
+ var SyncedBlockLoadError = exports.SyncedBlockLoadError = function SyncedBlockLoadError(_ref) {
15
+ var onRetry = _ref.onRetry,
16
+ isLoading = _ref.isLoading;
17
+ var _useIntl = (0, _reactIntlNext.useIntl)(),
18
+ formatMessage = _useIntl.formatMessage;
19
+ return /*#__PURE__*/_react.default.createElement(_SyncedBlockErrorStateCard.SyncedBlockErrorStateCard, {
20
+ imageSrc: _ExclamationWarning.default,
21
+ imageAltText: formatMessage(_messages.syncBlockMessages.notFoundAltText),
22
+ secondaryMessage: formatMessage(_messages.syncBlockMessages.notFoundDescription)
23
+ }, onRetry && /*#__PURE__*/_react.default.createElement(_new.default, {
24
+ appearance: "default",
25
+ spacing: "compact",
26
+ onClick: function onClick(event) {
27
+ event.preventDefault();
28
+ event.stopPropagation();
29
+ onRetry();
30
+ },
31
+ isLoading: isLoading,
32
+ testId: "sync-block-retry-btn"
33
+ }, formatMessage(_messages.syncBlockMessages.retryButton)));
34
+ };
@@ -0,0 +1,6 @@
1
+ ._19itia51{border:var(--ds-border-width,1px) solid var(--ds-border,#0b120e24)}
2
+ ._2rko12b0{border-radius:var(--ds-radius-small,4px)}
3
+ ._1bah1h6o{justify-content:center}
4
+ ._1e0c1txw{display:flex}
5
+ ._1tkevbgk{min-height:4pc}
6
+ ._4cvr1h6o{align-items:center}
@@ -1,3 +1,4 @@
1
+ /* SyncedBlockLoadingState.tsx generated by @compiled/babel-plugin v0.38.1 */
1
2
  "use strict";
2
3
 
3
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -5,7 +6,19 @@ Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.SyncedBlockLoadingState = void 0;
9
+ require("./SyncedBlockLoadingState.compiled.css");
10
+ var _runtime = require("@compiled/react/runtime");
8
11
  var _react = _interopRequireDefault(require("react"));
12
+ var _compiled = require("@atlaskit/primitives/compiled");
13
+ var _spinner = _interopRequireDefault(require("@atlaskit/spinner"));
14
+ var styles = {
15
+ wrapper: "_19itia51 _2rko12b0 _1tkevbgk _1e0c1txw _1bah1h6o _4cvr1h6o"
16
+ };
9
17
  var SyncedBlockLoadingState = exports.SyncedBlockLoadingState = function SyncedBlockLoadingState() {
10
- return /*#__PURE__*/_react.default.createElement("div", null, "Loading...");
18
+ return /*#__PURE__*/_react.default.createElement(_compiled.Box, {
19
+ xcss: styles.wrapper
20
+ }, /*#__PURE__*/_react.default.createElement(_spinner.default, {
21
+ size: "small",
22
+ label: "Loading synced content"
23
+ }));
11
24
  };
@@ -15,19 +15,22 @@ var SyncedBlockNodeComponentRenderer = exports.SyncedBlockNodeComponentRenderer
15
15
  syncBlockStoreManager = _ref.syncBlockStoreManager,
16
16
  rendererOptions = _ref.rendererOptions;
17
17
  var resourceId = nodeProps.resourceId,
18
- localId = nodeProps.localId,
19
- providers = nodeProps.providers;
18
+ localId = nodeProps.localId;
20
19
  var _useFetchSyncBlockDat = (0, _editorSyncedBlockProvider.useFetchSyncBlockData)(syncBlockStoreManager, resourceId, localId),
21
20
  syncBlockInstance = _useFetchSyncBlockDat.syncBlockInstance,
22
- isLoading = _useFetchSyncBlockDat.isLoading;
21
+ isLoading = _useFetchSyncBlockDat.isLoading,
22
+ reloadData = _useFetchSyncBlockDat.reloadData,
23
+ providerFactory = _useFetchSyncBlockDat.providerFactory;
23
24
  if (isLoading && !syncBlockInstance) {
24
25
  return /*#__PURE__*/_react.default.createElement(_SyncedBlockLoadingState.SyncedBlockLoadingState, null);
25
26
  }
26
- if (syncBlockInstance !== null && syncBlockInstance !== void 0 && syncBlockInstance.error || !(syncBlockInstance !== null && syncBlockInstance !== void 0 && syncBlockInstance.data)) {
27
+ if (!resourceId || syncBlockInstance !== null && syncBlockInstance !== void 0 && syncBlockInstance.error || !(syncBlockInstance !== null && syncBlockInstance !== void 0 && syncBlockInstance.data)) {
27
28
  var _syncBlockInstance$er;
28
29
  return /*#__PURE__*/_react.default.createElement(_SyncedBlockErrorComponent.SyncedBlockErrorComponent, {
29
30
  error: (_syncBlockInstance$er = syncBlockInstance === null || syncBlockInstance === void 0 ? void 0 : syncBlockInstance.error) !== null && _syncBlockInstance$er !== void 0 ? _syncBlockInstance$er : _editorSyncedBlockProvider.SyncBlockError.Errored,
30
- resourceId: resourceId
31
+ resourceId: resourceId,
32
+ onRetry: reloadData,
33
+ isLoading: isLoading
31
34
  });
32
35
  }
33
36
  var syncBlockDoc = {
@@ -35,9 +38,11 @@ var SyncedBlockNodeComponentRenderer = exports.SyncedBlockNodeComponentRenderer
35
38
  version: 1,
36
39
  type: 'doc'
37
40
  };
38
- return /*#__PURE__*/_react.default.createElement(_AKRendererWrapper.AKRendererWrapper, {
41
+ return /*#__PURE__*/_react.default.createElement("div", {
42
+ "data-sync-block-renderer": true
43
+ }, /*#__PURE__*/_react.default.createElement(_AKRendererWrapper.AKRendererWrapper, {
39
44
  doc: syncBlockDoc,
40
- dataProviders: providers,
45
+ dataProviders: providerFactory,
41
46
  options: rendererOptions
42
- });
47
+ }));
43
48
  };
@@ -1,4 +1,3 @@
1
- /* SyncedBlockPermissionDenied.tsx generated by @compiled/babel-plugin v0.38.1 */
2
1
  "use strict";
3
2
 
4
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -7,8 +6,6 @@ Object.defineProperty(exports, "__esModule", {
7
6
  value: true
8
7
  });
9
8
  exports.SyncedBlockPermissionDenied = void 0;
10
- require("./SyncedBlockPermissionDenied.compiled.css");
11
- var _runtime = require("@compiled/react/runtime");
12
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
10
  var _SyncedBlockPermissionDeniedRequestAccessMutation2 = _interopRequireDefault(require("./__generated__/SyncedBlockPermissionDeniedRequestAccessMutation.graphql"));
14
11
  var _react = _interopRequireWildcard(require("react"));
@@ -16,16 +13,11 @@ var _reactIntlNext = require("react-intl-next");
16
13
  var _reactRelay = require("react-relay");
17
14
  var _new = _interopRequireDefault(require("@atlaskit/button/new"));
18
15
  var _messages = require("@atlaskit/editor-common/messages");
19
- var _heading = _interopRequireDefault(require("@atlaskit/heading"));
20
16
  var _statusSuccess = _interopRequireDefault(require("@atlaskit/icon/core/status-success"));
21
- var _image = _interopRequireDefault(require("@atlaskit/image"));
22
17
  var _compiled = require("@atlaskit/primitives/compiled");
23
18
  var _PermissionDenied = _interopRequireDefault(require("./assets/PermissionDenied.svg"));
19
+ var _SyncedBlockErrorStateCard = require("./SyncedBlockErrorStateCard");
24
20
  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); }
25
- var styles = {
26
- wrapper: "_2rko12b0 _zulpu2gc _ca0qv47k _n3tdv47k _19bvxy5q _u5f3v47k _bfhkby5v _1e0c1txw _1bahv2br _4cvr1h6o",
27
- textWrapper: "_18u0u2gc"
28
- };
29
21
  var RequestAccessState = /*#__PURE__*/function (RequestAccessState) {
30
22
  RequestAccessState["default"] = "default";
31
23
  RequestAccessState["errored"] = "errored";
@@ -65,22 +57,12 @@ var SyncedBlockPermissionDenied = exports.SyncedBlockPermissionDenied = function
65
57
  onError: handleRequestError
66
58
  });
67
59
  };
68
- return /*#__PURE__*/_react.default.createElement(_compiled.Box, {
69
- xcss: styles.wrapper
70
- }, /*#__PURE__*/_react.default.createElement(_image.default, {
71
- src: _PermissionDenied.default,
72
- alt: formatMessage(_messages.syncBlockMessages.permissionDeniedAltText),
73
- width: "48",
74
- height: "48"
75
- }), /*#__PURE__*/_react.default.createElement(_compiled.Stack, {
76
- space: "space.100",
77
- alignInline: "start",
78
- xcss: styles.textWrapper
79
- }, /*#__PURE__*/_react.default.createElement(_heading.default, {
80
- size: "xsmall"
81
- }, formatMessage(_messages.syncBlockMessages.permissionDeniedHeading)), /*#__PURE__*/_react.default.createElement(_compiled.Text, {
82
- color: "color.text.subtle"
83
- }, formatMessage(_messages.syncBlockMessages.permissionDeniedDescription)), requestAccessState === RequestAccessState.pending ? /*#__PURE__*/_react.default.createElement(_compiled.Flex, {
60
+ return /*#__PURE__*/_react.default.createElement(_SyncedBlockErrorStateCard.SyncedBlockErrorStateCard, {
61
+ imageSrc: _PermissionDenied.default,
62
+ imageAltText: formatMessage(_messages.syncBlockMessages.permissionDeniedAltText),
63
+ primaryMessage: formatMessage(_messages.syncBlockMessages.permissionDeniedHeading),
64
+ secondaryMessage: formatMessage(_messages.syncBlockMessages.permissionDeniedDescription)
65
+ }, requestAccessState === RequestAccessState.pending ? /*#__PURE__*/_react.default.createElement(_compiled.Flex, {
84
66
  columnGap: "space.050",
85
67
  alignItems: "center"
86
68
  }, /*#__PURE__*/_react.default.createElement(_statusSuccess.default, {
@@ -103,5 +85,5 @@ var SyncedBlockPermissionDenied = exports.SyncedBlockPermissionDenied = function
103
85
  }, formatMessage(_messages.syncBlockMessages.requestAccessButton)), requestAccessState === RequestAccessState.errored && /*#__PURE__*/_react.default.createElement(_compiled.Text, {
104
86
  color: "color.text.warning",
105
87
  testId: "sync-block-access-error-msg"
106
- }, formatMessage(_messages.syncBlockMessages.requestAccessError)))));
88
+ }, formatMessage(_messages.syncBlockMessages.requestAccessError))));
107
89
  };
@@ -4,33 +4,21 @@ var _typeof = require("@babel/runtime/helpers/typeof");
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.convertSyncBlockRendererDataProvidersToProviderFactory = exports.SyncedBlockRenderer = void 0;
7
+ exports.SyncedBlockRenderer = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
- var _providerFactory = require("@atlaskit/editor-common/provider-factory");
10
9
  var _editorSyncedBlockProvider = require("@atlaskit/editor-synced-block-provider");
11
10
  var _AKRendererWrapper = require("./AKRendererWrapper");
12
11
  var _SyncedBlockErrorComponent = require("./SyncedBlockErrorComponent");
13
12
  var _SyncedBlockLoadingState = require("./SyncedBlockLoadingState");
14
13
  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); }
15
- var convertSyncBlockRendererDataProvidersToProviderFactory = exports.convertSyncBlockRendererDataProvidersToProviderFactory = function convertSyncBlockRendererDataProvidersToProviderFactory(dataProviders) {
16
- return _providerFactory.ProviderFactory.create({
17
- cardProvider: dataProviders === null || dataProviders === void 0 ? void 0 : dataProviders.cardProvider,
18
- emojiProvider: dataProviders === null || dataProviders === void 0 ? void 0 : dataProviders.emojiProvider,
19
- mediaProvider: dataProviders === null || dataProviders === void 0 ? void 0 : dataProviders.mediaProvider,
20
- mentionProvider: dataProviders === null || dataProviders === void 0 ? void 0 : dataProviders.mentionProvider,
21
- profilecardProvider: dataProviders === null || dataProviders === void 0 ? void 0 : dataProviders.profilecardProvider,
22
- taskDecisionProvider: dataProviders === null || dataProviders === void 0 ? void 0 : dataProviders.taskDecisionProvider
23
- });
24
- };
25
14
  var SyncedBlockRendererComponent = function SyncedBlockRendererComponent(_ref) {
26
15
  var useFetchSyncBlockData = _ref.useFetchSyncBlockData,
27
- syncBlockRendererDataProviders = _ref.syncBlockRendererDataProviders,
28
16
  syncBlockRendererOptions = _ref.syncBlockRendererOptions;
29
17
  var _useFetchSyncBlockDat = useFetchSyncBlockData(),
30
- syncBlockInstance = _useFetchSyncBlockDat.syncBlockInstance;
31
- var dataProviders = (0, _react.useMemo)(function () {
32
- return convertSyncBlockRendererDataProvidersToProviderFactory(syncBlockRendererDataProviders);
33
- }, [syncBlockRendererDataProviders]);
18
+ syncBlockInstance = _useFetchSyncBlockDat.syncBlockInstance,
19
+ providerFactory = _useFetchSyncBlockDat.providerFactory,
20
+ isLoading = _useFetchSyncBlockDat.isLoading,
21
+ reloadData = _useFetchSyncBlockDat.reloadData;
34
22
  if (!syncBlockInstance) {
35
23
  return /*#__PURE__*/_react.default.createElement(_SyncedBlockLoadingState.SyncedBlockLoadingState, null);
36
24
  }
@@ -38,7 +26,9 @@ var SyncedBlockRendererComponent = function SyncedBlockRendererComponent(_ref) {
38
26
  var _syncBlockInstance$er;
39
27
  return /*#__PURE__*/_react.default.createElement(_SyncedBlockErrorComponent.SyncedBlockErrorComponent, {
40
28
  error: (_syncBlockInstance$er = syncBlockInstance.error) !== null && _syncBlockInstance$er !== void 0 ? _syncBlockInstance$er : _editorSyncedBlockProvider.SyncBlockError.Errored,
41
- resourceId: syncBlockInstance.resourceId
29
+ resourceId: syncBlockInstance.resourceId,
30
+ onRetry: reloadData,
31
+ isLoading: isLoading
42
32
  });
43
33
  }
44
34
  var syncBlockDoc = {
@@ -48,7 +38,7 @@ var SyncedBlockRendererComponent = function SyncedBlockRendererComponent(_ref) {
48
38
  };
49
39
  return /*#__PURE__*/_react.default.createElement(_AKRendererWrapper.AKRendererWrapper, {
50
40
  doc: syncBlockDoc,
51
- dataProviders: dataProviders,
41
+ dataProviders: providerFactory,
52
42
  options: syncBlockRendererOptions
53
43
  });
54
44
  };
@@ -2,14 +2,12 @@ import React from 'react';
2
2
  import { SyncedBlockRenderer } from './ui/SyncedBlockRenderer';
3
3
  // For rendering reference synced block nodes in Editor
4
4
  export const getSyncedBlockRenderer = ({
5
- syncBlockRendererDataProviders,
6
5
  syncBlockRendererOptions
7
6
  }) => ({
8
7
  useFetchSyncBlockData
9
8
  }) => {
10
9
  return /*#__PURE__*/React.createElement(SyncedBlockRenderer, {
11
10
  syncBlockRendererOptions: syncBlockRendererOptions,
12
- syncBlockRendererDataProviders: syncBlockRendererDataProviders,
13
11
  useFetchSyncBlockData: useFetchSyncBlockData
14
12
  });
15
13
  };
@@ -31,8 +31,7 @@ const defaultOptions = {
31
31
  mediaInline: true
32
32
  }
33
33
  },
34
- smartLinks: undefined,
35
- stickyHeaders: true
34
+ smartLinks: undefined
36
35
  };
37
36
  export const AKRendererWrapper = /*#__PURE__*/memo(({
38
37
  doc,
@@ -1,37 +1,45 @@
1
- import React from 'react';
1
+ import React, { useMemo } from 'react';
2
2
  import { SyncBlockSharedCssClassName } from '@atlaskit/editor-common/sync-block';
3
3
  import { getPageIdAndTypeFromAri, SyncBlockError } from '@atlaskit/editor-synced-block-provider';
4
+ import { SyncedBlockGenericError } from './SyncedBlockGenericError';
5
+ import { SyncedBlockLoadError } from './SyncedBlockLoadError';
4
6
  import { SyncedBlockPermissionDenied } from './SyncedBlockPermissionDenied';
5
7
  export const SyncedBlockErrorComponent = ({
6
8
  error,
9
+ isLoading,
10
+ onRetry,
7
11
  resourceId
8
12
  }) => {
9
- const getErrorContent = () => {
13
+ const getErrorContent = useMemo(() => {
10
14
  switch (error) {
11
15
  case SyncBlockError.Forbidden:
12
- if (resourceId) {
13
- const {
14
- id: contentId
15
- } = getPageIdAndTypeFromAri(resourceId);
16
- if (contentId) {
17
- return /*#__PURE__*/React.createElement(SyncedBlockPermissionDenied, {
18
- contentId: contentId
19
- });
20
- }
16
+ if (!resourceId) {
17
+ return /*#__PURE__*/React.createElement(SyncedBlockGenericError, null);
21
18
  }
22
- return /*#__PURE__*/React.createElement("div", null, "Something went wrong");
19
+ const {
20
+ id: contentId
21
+ } = getPageIdAndTypeFromAri(resourceId);
22
+ if (contentId) {
23
+ return /*#__PURE__*/React.createElement(SyncedBlockPermissionDenied, {
24
+ contentId: contentId
25
+ });
26
+ }
27
+ return /*#__PURE__*/React.createElement(SyncedBlockGenericError, null);
23
28
  case SyncBlockError.NotFound:
24
- return /*#__PURE__*/React.createElement("div", null, "Sync Block Not Found");
25
29
  case SyncBlockError.Errored:
30
+ return /*#__PURE__*/React.createElement(SyncedBlockLoadError, {
31
+ onRetry: onRetry,
32
+ isLoading: isLoading
33
+ });
26
34
  default:
27
- return /*#__PURE__*/React.createElement("div", null, "Something went wrong");
35
+ return /*#__PURE__*/React.createElement(SyncedBlockGenericError, null);
28
36
  }
29
- };
37
+ }, [error, isLoading, onRetry, resourceId]);
30
38
  return (
31
39
  /*#__PURE__*/
32
40
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop
33
41
  React.createElement("div", {
34
42
  className: SyncBlockSharedCssClassName.error
35
- }, getErrorContent())
43
+ }, getErrorContent)
36
44
  );
37
45
  };
@@ -0,0 +1,35 @@
1
+ /* SyncedBlockErrorStateCard.tsx generated by @compiled/babel-plugin v0.38.1 */
2
+ import "./SyncedBlockErrorStateCard.compiled.css";
3
+ import { ax, ix } from "@compiled/react/runtime";
4
+ import React from 'react';
5
+ import Heading from '@atlaskit/heading';
6
+ import Image from '@atlaskit/image';
7
+ import { Box, Stack, Text } from '@atlaskit/primitives/compiled';
8
+ const styles = {
9
+ wrapper: "_2rko12b0 _zulpu2gc _ca0qv47k _n3tdv47k _19bvxy5q _u5f3v47k _bfhkby5v _1e0c1txw _1bahv2br _4cvr1h6o",
10
+ textWrapper: "_18u0u2gc"
11
+ };
12
+ export const SyncedBlockErrorStateCard = ({
13
+ children,
14
+ imageAltText,
15
+ imageSrc,
16
+ primaryMessage,
17
+ secondaryMessage
18
+ }) => {
19
+ return /*#__PURE__*/React.createElement(Box, {
20
+ xcss: styles.wrapper
21
+ }, /*#__PURE__*/React.createElement(Image, {
22
+ src: imageSrc,
23
+ alt: imageAltText,
24
+ width: "48",
25
+ height: "48"
26
+ }), /*#__PURE__*/React.createElement(Stack, {
27
+ space: "space.100",
28
+ alignInline: "start",
29
+ xcss: styles.textWrapper
30
+ }, primaryMessage && /*#__PURE__*/React.createElement(Heading, {
31
+ size: "xsmall"
32
+ }, primaryMessage), secondaryMessage && /*#__PURE__*/React.createElement(Text, {
33
+ color: "color.text.subtle"
34
+ }, secondaryMessage), children));
35
+ };
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { useIntl } from 'react-intl-next';
3
+ import { syncBlockMessages as messages } from '@atlaskit/editor-common/messages';
4
+ import ExclamationWarning from './assets/ExclamationWarning.svg';
5
+ import { SyncedBlockErrorStateCard } from './SyncedBlockErrorStateCard';
6
+ export const SyncedBlockGenericError = () => {
7
+ const {
8
+ formatMessage
9
+ } = useIntl();
10
+ return /*#__PURE__*/React.createElement(SyncedBlockErrorStateCard, {
11
+ imageSrc: ExclamationWarning,
12
+ secondaryMessage: formatMessage(messages.generalErrorDescription)
13
+ });
14
+ };
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import { useIntl } from 'react-intl-next';
3
+ import Button from '@atlaskit/button/new';
4
+ import { syncBlockMessages as messages } from '@atlaskit/editor-common/messages';
5
+ import ExclamationWarning from './assets/ExclamationWarning.svg';
6
+ import { SyncedBlockErrorStateCard } from './SyncedBlockErrorStateCard';
7
+ export const SyncedBlockLoadError = ({
8
+ onRetry,
9
+ isLoading
10
+ }) => {
11
+ const {
12
+ formatMessage
13
+ } = useIntl();
14
+ return /*#__PURE__*/React.createElement(SyncedBlockErrorStateCard, {
15
+ imageSrc: ExclamationWarning,
16
+ imageAltText: formatMessage(messages.notFoundAltText),
17
+ secondaryMessage: formatMessage(messages.notFoundDescription)
18
+ }, onRetry && /*#__PURE__*/React.createElement(Button, {
19
+ appearance: "default",
20
+ spacing: "compact",
21
+ onClick: event => {
22
+ event.preventDefault();
23
+ event.stopPropagation();
24
+ onRetry();
25
+ },
26
+ isLoading: isLoading,
27
+ testId: "sync-block-retry-btn"
28
+ }, formatMessage(messages.retryButton)));
29
+ };
@@ -0,0 +1,6 @@
1
+ ._19itia51{border:var(--ds-border-width,1px) solid var(--ds-border,#0b120e24)}
2
+ ._2rko12b0{border-radius:var(--ds-radius-small,4px)}
3
+ ._1bah1h6o{justify-content:center}
4
+ ._1e0c1txw{display:flex}
5
+ ._1tkevbgk{min-height:4pc}
6
+ ._4cvr1h6o{align-items:center}
@@ -1,4 +1,17 @@
1
+ /* SyncedBlockLoadingState.tsx generated by @compiled/babel-plugin v0.38.1 */
2
+ import "./SyncedBlockLoadingState.compiled.css";
3
+ import { ax, ix } from "@compiled/react/runtime";
1
4
  import React from 'react';
5
+ import { Box } from '@atlaskit/primitives/compiled';
6
+ import Spinner from '@atlaskit/spinner';
7
+ const styles = {
8
+ wrapper: "_19itia51 _2rko12b0 _1tkevbgk _1e0c1txw _1bah1h6o _4cvr1h6o"
9
+ };
2
10
  export const SyncedBlockLoadingState = () => {
3
- return /*#__PURE__*/React.createElement("div", null, "Loading...");
11
+ return /*#__PURE__*/React.createElement(Box, {
12
+ xcss: styles.wrapper
13
+ }, /*#__PURE__*/React.createElement(Spinner, {
14
+ size: "small",
15
+ label: "Loading synced content"
16
+ }));
4
17
  };