@atlaskit/editor-synced-block-renderer 4.0.2 → 4.0.4

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 (55) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/afm-cc/tsconfig.json +11 -3
  3. package/afm-products/tsconfig.json +5 -1
  4. package/dist/cjs/getSyncedBlockRenderer.js +4 -2
  5. package/dist/cjs/ui/SyncedBlockErrorComponent.js +28 -10
  6. package/dist/cjs/ui/SyncedBlockErrorStateCard.compiled.css +4 -7
  7. package/dist/cjs/ui/SyncedBlockErrorStateCard.js +8 -21
  8. package/dist/cjs/ui/SyncedBlockGenericError.js +1 -3
  9. package/dist/cjs/ui/SyncedBlockLoadError.js +1 -4
  10. package/dist/cjs/ui/SyncedBlockLoadingState.compiled.css +0 -2
  11. package/dist/cjs/ui/SyncedBlockLoadingState.js +14 -7
  12. package/dist/cjs/ui/SyncedBlockNodeComponentRenderer.js +4 -4
  13. package/dist/cjs/ui/SyncedBlockOfflineError.js +18 -0
  14. package/dist/cjs/ui/SyncedBlockPermissionDenied.compiled.css +8 -0
  15. package/dist/cjs/ui/SyncedBlockPermissionDenied.js +27 -14
  16. package/dist/cjs/ui/SyncedBlockRenderer.js +19 -5
  17. package/dist/es2019/getSyncedBlockRenderer.js +4 -2
  18. package/dist/es2019/ui/SyncedBlockErrorComponent.js +30 -11
  19. package/dist/es2019/ui/SyncedBlockErrorStateCard.compiled.css +4 -7
  20. package/dist/es2019/ui/SyncedBlockErrorStateCard.js +9 -22
  21. package/dist/es2019/ui/SyncedBlockGenericError.js +1 -3
  22. package/dist/es2019/ui/SyncedBlockLoadError.js +1 -4
  23. package/dist/es2019/ui/SyncedBlockLoadingState.compiled.css +0 -2
  24. package/dist/es2019/ui/SyncedBlockLoadingState.js +14 -7
  25. package/dist/es2019/ui/SyncedBlockNodeComponentRenderer.js +4 -4
  26. package/dist/es2019/ui/SyncedBlockOfflineError.js +12 -0
  27. package/dist/es2019/ui/SyncedBlockPermissionDenied.compiled.css +8 -0
  28. package/dist/es2019/ui/SyncedBlockPermissionDenied.js +28 -15
  29. package/dist/es2019/ui/SyncedBlockRenderer.js +19 -5
  30. package/dist/esm/getSyncedBlockRenderer.js +4 -2
  31. package/dist/esm/ui/SyncedBlockErrorComponent.js +29 -11
  32. package/dist/esm/ui/SyncedBlockErrorStateCard.compiled.css +4 -7
  33. package/dist/esm/ui/SyncedBlockErrorStateCard.js +9 -22
  34. package/dist/esm/ui/SyncedBlockGenericError.js +1 -3
  35. package/dist/esm/ui/SyncedBlockLoadError.js +1 -4
  36. package/dist/esm/ui/SyncedBlockLoadingState.compiled.css +0 -2
  37. package/dist/esm/ui/SyncedBlockLoadingState.js +14 -7
  38. package/dist/esm/ui/SyncedBlockNodeComponentRenderer.js +4 -4
  39. package/dist/esm/ui/SyncedBlockOfflineError.js +11 -0
  40. package/dist/esm/ui/SyncedBlockPermissionDenied.compiled.css +8 -0
  41. package/dist/esm/ui/SyncedBlockPermissionDenied.js +28 -15
  42. package/dist/esm/ui/SyncedBlockRenderer.js +19 -5
  43. package/dist/types/getSyncedBlockRenderer.d.ts +1 -1
  44. package/dist/types/ui/SyncedBlockErrorComponent.d.ts +4 -4
  45. package/dist/types/ui/SyncedBlockErrorStateCard.d.ts +2 -5
  46. package/dist/types/ui/SyncedBlockOfflineError.d.ts +2 -0
  47. package/dist/types/ui/SyncedBlockPermissionDenied.d.ts +2 -2
  48. package/dist/types/ui/SyncedBlockRenderer.d.ts +4 -1
  49. package/dist/types-ts4.5/getSyncedBlockRenderer.d.ts +1 -1
  50. package/dist/types-ts4.5/ui/SyncedBlockErrorComponent.d.ts +4 -4
  51. package/dist/types-ts4.5/ui/SyncedBlockErrorStateCard.d.ts +2 -5
  52. package/dist/types-ts4.5/ui/SyncedBlockOfflineError.d.ts +2 -0
  53. package/dist/types-ts4.5/ui/SyncedBlockPermissionDenied.d.ts +2 -2
  54. package/dist/types-ts4.5/ui/SyncedBlockRenderer.d.ts +4 -1
  55. package/package.json +8 -8
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # @atlaskit/editor-synced-block-renderer
2
2
 
3
+ ## 4.0.4
4
+
5
+ ### Patch Changes
6
+
7
+ - [`a41bf96788d92`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/a41bf96788d92) -
8
+ [ux] Fix sync block permissions denied error to show the correct state
9
+ - Updated dependencies
10
+
11
+ ## 4.0.3
12
+
13
+ ### Patch Changes
14
+
15
+ - [`dcc6a3e73f414`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/dcc6a3e73f414) -
16
+ [ux] EDITOR-3304 add offline error state for sync blocks and update other error UI to match new
17
+ designs
18
+ - Updated dependencies
19
+
3
20
  ## 4.0.2
4
21
 
5
22
  ### Patch Changes
@@ -4,7 +4,8 @@
4
4
  "target": "es5",
5
5
  "outDir": "../../../../../confluence/tsDist/@atlaskit__editor-synced-block-renderer",
6
6
  "rootDir": "../",
7
- "composite": true
7
+ "composite": true,
8
+ "noCheck": true
8
9
  },
9
10
  "include": [
10
11
  "../src/**/*.ts",
@@ -14,8 +15,12 @@
14
15
  "../src/**/__tests__/*",
15
16
  "../src/**/*.test.*",
16
17
  "../src/**/test.*",
17
- "../src/**/mocks/*",
18
- "../src/**/examples.*"
18
+ "../src/**/examples.*",
19
+ "../src/**/examples/*",
20
+ "../src/**/examples/**/*",
21
+ "../src/**/*.stories.*",
22
+ "../src/**/stories/*",
23
+ "../src/**/stories/**/*"
19
24
  ],
20
25
  "references": [
21
26
  {
@@ -36,6 +41,9 @@
36
41
  {
37
42
  "path": "../../../design-system/icon/afm-cc/tsconfig.json"
38
43
  },
44
+ {
45
+ "path": "../../../design-system/icon-lab/afm-cc/tsconfig.json"
46
+ },
39
47
  {
40
48
  "path": "../../../design-system/image/afm-cc/tsconfig.json"
41
49
  },
@@ -4,7 +4,8 @@
4
4
  "target": "es5",
5
5
  "outDir": "../../../../../tsDist/@atlaskit__editor-synced-block-renderer/app",
6
6
  "rootDir": "../",
7
- "composite": true
7
+ "composite": true,
8
+ "noCheck": true
8
9
  },
9
10
  "include": [
10
11
  "../src/**/*.ts",
@@ -40,6 +41,9 @@
40
41
  {
41
42
  "path": "../../../design-system/icon/afm-products/tsconfig.json"
42
43
  },
44
+ {
45
+ "path": "../../../design-system/icon-lab/afm-products/tsconfig.json"
46
+ },
43
47
  {
44
48
  "path": "../../../design-system/image/afm-products/tsconfig.json"
45
49
  },
@@ -11,10 +11,12 @@ var _SyncedBlockRenderer = require("./ui/SyncedBlockRenderer");
11
11
  var getSyncedBlockRenderer = exports.getSyncedBlockRenderer = function getSyncedBlockRenderer(_ref) {
12
12
  var syncBlockRendererOptions = _ref.syncBlockRendererOptions;
13
13
  return function (_ref2) {
14
- var useFetchSyncBlockData = _ref2.useFetchSyncBlockData;
14
+ var useFetchSyncBlockData = _ref2.useFetchSyncBlockData,
15
+ api = _ref2.api;
15
16
  return /*#__PURE__*/_react.default.createElement(_SyncedBlockRenderer.SyncedBlockRenderer, {
16
17
  syncBlockRendererOptions: syncBlockRendererOptions,
17
- useFetchSyncBlockData: useFetchSyncBlockData
18
+ useFetchSyncBlockData: useFetchSyncBlockData,
19
+ api: api
18
20
  });
19
21
  };
20
22
  };
@@ -6,28 +6,46 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.SyncedBlockErrorComponent = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
+ var _monitoring = require("@atlaskit/editor-common/monitoring");
9
10
  var _syncBlock = require("@atlaskit/editor-common/sync-block");
10
11
  var _editorSyncedBlockProvider = require("@atlaskit/editor-synced-block-provider");
11
12
  var _SyncedBlockGenericError = require("./SyncedBlockGenericError");
12
13
  var _SyncedBlockLoadError = require("./SyncedBlockLoadError");
14
+ var _SyncedBlockOfflineError = require("./SyncedBlockOfflineError");
13
15
  var _SyncedBlockPermissionDenied = require("./SyncedBlockPermissionDenied");
14
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 getForbiddenErrorContent = function getForbiddenErrorContent(resourceId, fireAnalyticsEvent) {
18
+ try {
19
+ if (!resourceId) {
20
+ throw new Error('Missing resource id');
21
+ }
22
+ var _getContentIdAndProdu = (0, _editorSyncedBlockProvider.getContentIdAndProductFromResourceId)(resourceId),
23
+ sourceContentId = _getContentIdAndProdu.sourceContentId,
24
+ sourceProduct = _getContentIdAndProdu.sourceProduct;
25
+ return /*#__PURE__*/_react.default.createElement(_SyncedBlockPermissionDenied.SyncedBlockPermissionDenied, {
26
+ sourceContentId: sourceContentId,
27
+ sourceProduct: sourceProduct
28
+ });
29
+ } catch (error) {
30
+ (0, _monitoring.logException)(error, {
31
+ location: 'editor-synced-block-renderer/SyncedBlockErrorComponent'
32
+ });
33
+ fireAnalyticsEvent === null || fireAnalyticsEvent === void 0 || fireAnalyticsEvent((0, _editorSyncedBlockProvider.fetchErrorPayload)(error.message));
34
+ return /*#__PURE__*/_react.default.createElement(_SyncedBlockGenericError.SyncedBlockGenericError, null);
35
+ }
36
+ };
15
37
  var SyncedBlockErrorComponent = exports.SyncedBlockErrorComponent = function SyncedBlockErrorComponent(_ref) {
16
38
  var error = _ref.error,
17
39
  isLoading = _ref.isLoading,
18
40
  onRetry = _ref.onRetry,
19
- sourceAri = _ref.sourceAri,
20
- sourceProduct = _ref.sourceProduct;
41
+ resourceId = _ref.resourceId,
42
+ fireAnalyticsEvent = _ref.fireAnalyticsEvent;
21
43
  var getErrorContent = (0, _react.useMemo)(function () {
22
44
  switch (error) {
45
+ case _editorSyncedBlockProvider.SyncBlockError.Offline:
46
+ return /*#__PURE__*/_react.default.createElement(_SyncedBlockOfflineError.SyncedBlockOfflineError, null);
23
47
  case _editorSyncedBlockProvider.SyncBlockError.Forbidden:
24
- if (!sourceAri || !sourceProduct) {
25
- return /*#__PURE__*/_react.default.createElement(_SyncedBlockGenericError.SyncedBlockGenericError, null);
26
- }
27
- return /*#__PURE__*/_react.default.createElement(_SyncedBlockPermissionDenied.SyncedBlockPermissionDenied, {
28
- sourceAri: sourceAri,
29
- sourceProduct: sourceProduct
30
- });
48
+ return getForbiddenErrorContent(resourceId, fireAnalyticsEvent);
31
49
  case _editorSyncedBlockProvider.SyncBlockError.NotFound:
32
50
  case _editorSyncedBlockProvider.SyncBlockError.Errored:
33
51
  case _editorSyncedBlockProvider.SyncBlockError.RateLimited:
@@ -39,7 +57,7 @@ var SyncedBlockErrorComponent = exports.SyncedBlockErrorComponent = function Syn
39
57
  default:
40
58
  return /*#__PURE__*/_react.default.createElement(_SyncedBlockGenericError.SyncedBlockGenericError, null);
41
59
  }
42
- }, [error, isLoading, onRetry, sourceAri, sourceProduct]);
60
+ }, [error, isLoading, onRetry, resourceId, fireAnalyticsEvent]);
43
61
  return (
44
62
  /*#__PURE__*/
45
63
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop
@@ -1,11 +1,8 @@
1
1
 
2
- ._2rko12b0{border-radius:var(--ds-radius-small,4px)}
3
- ._zulpu2gc{gap:var(--ds-space-100,8px)}._18u0u2gc{margin-left:var(--ds-space-100,8px)}
4
- ._19bvxy5q{padding-left:var(--ds-space-400,2pc)}
2
+ ._zulppxbi{gap:var(--ds-space-200,1pc)}._19bvpxbi{padding-left:var(--ds-space-200,1pc)}
5
3
  ._1bahv2br{justify-content:start}
6
4
  ._1e0c1txw{display:flex}
7
5
  ._4cvr1h6o{align-items:center}
8
- ._bfhkby5v{background-color:var(--ds-background-disabled,#17171708)}
9
- ._ca0qv47k{padding-top:var(--ds-space-250,20px)}
10
- ._n3tdv47k{padding-bottom:var(--ds-space-250,20px)}
11
- ._u5f3v47k{padding-right:var(--ds-space-250,20px)}
6
+ ._ca0qu2gc{padding-top:var(--ds-space-100,8px)}
7
+ ._n3tdu2gc{padding-bottom:var(--ds-space-100,8px)}
8
+ ._u5f3pxbi{padding-right:var(--ds-space-200,1pc)}
@@ -9,33 +9,20 @@ exports.SyncedBlockErrorStateCard = void 0;
9
9
  require("./SyncedBlockErrorStateCard.compiled.css");
10
10
  var _runtime = require("@compiled/react/runtime");
11
11
  var _react = _interopRequireDefault(require("react"));
12
- var _heading = _interopRequireDefault(require("@atlaskit/heading"));
13
- var _image = _interopRequireDefault(require("@atlaskit/image"));
12
+ var _warningOutline = _interopRequireDefault(require("@atlaskit/icon-lab/core/warning-outline"));
14
13
  var _compiled = require("@atlaskit/primitives/compiled");
15
14
  var styles = {
16
- wrapper: "_2rko12b0 _zulpu2gc _ca0qv47k _n3tdv47k _19bvxy5q _u5f3v47k _bfhkby5v _1e0c1txw _1bahv2br _4cvr1h6o",
17
- textWrapper: "_18u0u2gc"
15
+ wrapper: "_zulppxbi _ca0qu2gc _n3tdu2gc _19bvpxbi _u5f3pxbi _1e0c1txw _1bahv2br _4cvr1h6o"
18
16
  };
19
17
  var SyncedBlockErrorStateCard = exports.SyncedBlockErrorStateCard = function SyncedBlockErrorStateCard(_ref) {
20
18
  var children = _ref.children,
21
- imageAltText = _ref.imageAltText,
22
- imageSrc = _ref.imageSrc,
23
- primaryMessage = _ref.primaryMessage,
24
- secondaryMessage = _ref.secondaryMessage;
19
+ description = _ref.description;
25
20
  return /*#__PURE__*/_react.default.createElement(_compiled.Box, {
26
21
  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, {
22
+ }, /*#__PURE__*/_react.default.createElement(_warningOutline.default, {
23
+ color: "var(--ds-icon-subtle, #505258)",
24
+ label: ""
25
+ }), /*#__PURE__*/_react.default.createElement(_compiled.Text, {
39
26
  color: "color.text.subtle"
40
- }, secondaryMessage), children));
27
+ }, description), children);
41
28
  };
@@ -8,13 +8,11 @@ exports.SyncedBlockGenericError = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _reactIntlNext = require("react-intl-next");
10
10
  var _messages = require("@atlaskit/editor-common/messages");
11
- var _ExclamationWarning = _interopRequireDefault(require("./assets/ExclamationWarning.svg"));
12
11
  var _SyncedBlockErrorStateCard = require("./SyncedBlockErrorStateCard");
13
12
  var SyncedBlockGenericError = exports.SyncedBlockGenericError = function SyncedBlockGenericError() {
14
13
  var _useIntl = (0, _reactIntlNext.useIntl)(),
15
14
  formatMessage = _useIntl.formatMessage;
16
15
  return /*#__PURE__*/_react.default.createElement(_SyncedBlockErrorStateCard.SyncedBlockErrorStateCard, {
17
- imageSrc: _ExclamationWarning.default,
18
- secondaryMessage: formatMessage(_messages.syncBlockMessages.generalErrorDescription)
16
+ description: formatMessage(_messages.syncBlockMessages.generalErrorDescription)
19
17
  });
20
18
  };
@@ -9,7 +9,6 @@ var _react = _interopRequireDefault(require("react"));
9
9
  var _reactIntlNext = require("react-intl-next");
10
10
  var _new = _interopRequireDefault(require("@atlaskit/button/new"));
11
11
  var _messages = require("@atlaskit/editor-common/messages");
12
- var _ExclamationWarning = _interopRequireDefault(require("./assets/ExclamationWarning.svg"));
13
12
  var _SyncedBlockErrorStateCard = require("./SyncedBlockErrorStateCard");
14
13
  var SyncedBlockLoadError = exports.SyncedBlockLoadError = function SyncedBlockLoadError(_ref) {
15
14
  var onRetry = _ref.onRetry,
@@ -17,9 +16,7 @@ var SyncedBlockLoadError = exports.SyncedBlockLoadError = function SyncedBlockLo
17
16
  var _useIntl = (0, _reactIntlNext.useIntl)(),
18
17
  formatMessage = _useIntl.formatMessage;
19
18
  return /*#__PURE__*/_react.default.createElement(_SyncedBlockErrorStateCard.SyncedBlockErrorStateCard, {
20
- imageSrc: _ExclamationWarning.default,
21
- imageAltText: formatMessage(_messages.syncBlockMessages.notFoundAltText),
22
- secondaryMessage: formatMessage(_messages.syncBlockMessages.notFoundDescription)
19
+ description: formatMessage(_messages.syncBlockMessages.generalErrorDescription)
23
20
  }, onRetry && /*#__PURE__*/_react.default.createElement(_new.default, {
24
21
  appearance: "default",
25
22
  spacing: "compact",
@@ -1,5 +1,3 @@
1
- ._19itia51{border:var(--ds-border-width,1px) solid var(--ds-border,#0b120e24)}
2
- ._2rko12b0{border-radius:var(--ds-radius-small,4px)}
3
1
  ._1bah1h6o{justify-content:center}
4
2
  ._1e0c1txw{display:flex}
5
3
  ._1tkevbgk{min-height:4pc}
@@ -9,16 +9,23 @@ exports.SyncedBlockLoadingState = void 0;
9
9
  require("./SyncedBlockLoadingState.compiled.css");
10
10
  var _runtime = require("@compiled/react/runtime");
11
11
  var _react = _interopRequireDefault(require("react"));
12
+ var _syncBlock = require("@atlaskit/editor-common/sync-block");
12
13
  var _compiled = require("@atlaskit/primitives/compiled");
13
14
  var _spinner = _interopRequireDefault(require("@atlaskit/spinner"));
14
15
  var styles = {
15
- wrapper: "_19itia51 _2rko12b0 _1tkevbgk _1e0c1txw _1bah1h6o _4cvr1h6o"
16
+ wrapper: "_1tkevbgk _1e0c1txw _1bah1h6o _4cvr1h6o"
16
17
  };
17
18
  var SyncedBlockLoadingState = exports.SyncedBlockLoadingState = function SyncedBlockLoadingState() {
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
- }));
19
+ return (
20
+ /*#__PURE__*/
21
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop, @atlaskit/design-system/no-unsafe-style-overrides
22
+ _react.default.createElement("div", {
23
+ className: _syncBlock.SyncBlockSharedCssClassName.loading
24
+ }, /*#__PURE__*/_react.default.createElement(_compiled.Box, {
25
+ xcss: styles.wrapper
26
+ }, /*#__PURE__*/_react.default.createElement(_spinner.default, {
27
+ size: "small",
28
+ label: "Loading synced content"
29
+ })))
30
+ );
24
31
  };
@@ -27,13 +27,13 @@ var SyncedBlockNodeComponentRenderer = exports.SyncedBlockNodeComponentRenderer
27
27
  return /*#__PURE__*/_react.default.createElement(_SyncedBlockLoadingState.SyncedBlockLoadingState, null);
28
28
  }
29
29
  if (!resourceId || syncBlockInstance !== null && syncBlockInstance !== void 0 && syncBlockInstance.error || !(syncBlockInstance !== null && syncBlockInstance !== void 0 && syncBlockInstance.data)) {
30
- var _syncBlockInstance$er, _syncBlockInstance$da, _syncBlockInstance$da2;
30
+ var _syncBlockInstance$er;
31
31
  return /*#__PURE__*/_react.default.createElement(_SyncedBlockErrorComponent.SyncedBlockErrorComponent, {
32
32
  error: (_syncBlockInstance$er = syncBlockInstance === null || syncBlockInstance === void 0 ? void 0 : syncBlockInstance.error) !== null && _syncBlockInstance$er !== void 0 ? _syncBlockInstance$er : _editorSyncedBlockProvider.SyncBlockError.Errored,
33
- sourceAri: syncBlockInstance === null || syncBlockInstance === void 0 || (_syncBlockInstance$da = syncBlockInstance.data) === null || _syncBlockInstance$da === void 0 ? void 0 : _syncBlockInstance$da.sourceAri,
34
- sourceProduct: syncBlockInstance === null || syncBlockInstance === void 0 || (_syncBlockInstance$da2 = syncBlockInstance.data) === null || _syncBlockInstance$da2 === void 0 ? void 0 : _syncBlockInstance$da2.product,
33
+ resourceId: syncBlockInstance === null || syncBlockInstance === void 0 ? void 0 : syncBlockInstance.resourceId,
35
34
  onRetry: reloadData,
36
- isLoading: isLoading
35
+ isLoading: isLoading,
36
+ fireAnalyticsEvent: fireAnalyticsEvent
37
37
  });
38
38
  }
39
39
  var syncBlockDoc = {
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.SyncedBlockOfflineError = 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 _SyncedBlockErrorStateCard = require("./SyncedBlockErrorStateCard");
12
+ var SyncedBlockOfflineError = exports.SyncedBlockOfflineError = function SyncedBlockOfflineError() {
13
+ var _useIntl = (0, _reactIntlNext.useIntl)(),
14
+ formatMessage = _useIntl.formatMessage;
15
+ return /*#__PURE__*/_react.default.createElement(_SyncedBlockErrorStateCard.SyncedBlockErrorStateCard, {
16
+ description: formatMessage(_messages.syncBlockMessages.offlineError)
17
+ });
18
+ };
@@ -0,0 +1,8 @@
1
+
2
+ ._zulppxbi{gap:var(--ds-space-200,1pc)}._19bvv47k{padding-left:var(--ds-space-250,20px)}
3
+ ._1bahv2br{justify-content:start}
4
+ ._1e0c1txw{display:flex}
5
+ ._4cvr1h6o{align-items:center}
6
+ ._ca0qv47k{padding-top:var(--ds-space-250,20px)}
7
+ ._n3tdv47k{padding-bottom:var(--ds-space-250,20px)}
8
+ ._u5f3v47k{padding-right:var(--ds-space-250,20px)}
@@ -1,3 +1,4 @@
1
+ /* SyncedBlockPermissionDenied.tsx generated by @compiled/babel-plugin v0.38.1 */
1
2
  "use strict";
2
3
 
3
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -6,6 +7,8 @@ Object.defineProperty(exports, "__esModule", {
6
7
  value: true
7
8
  });
8
9
  exports.SyncedBlockPermissionDenied = void 0;
10
+ require("./SyncedBlockPermissionDenied.compiled.css");
11
+ var _runtime = require("@compiled/react/runtime");
9
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
13
  var _SyncedBlockPermissionDeniedRequestAccessMutation2 = _interopRequireDefault(require("./__generated__/SyncedBlockPermissionDeniedRequestAccessMutation.graphql"));
11
14
  var _react = _interopRequireWildcard(require("react"));
@@ -13,13 +16,16 @@ var _reactIntlNext = require("react-intl-next");
13
16
  var _reactRelay = require("react-relay");
14
17
  var _new = _interopRequireDefault(require("@atlaskit/button/new"));
15
18
  var _messages = require("@atlaskit/editor-common/messages");
16
- var _editorSyncedBlockProvider = require("@atlaskit/editor-synced-block-provider");
19
+ var _heading = _interopRequireDefault(require("@atlaskit/heading"));
17
20
  var _statusSuccess = _interopRequireDefault(require("@atlaskit/icon/core/status-success"));
21
+ var _image = _interopRequireDefault(require("@atlaskit/image"));
18
22
  var _compiled = require("@atlaskit/primitives/compiled");
19
23
  var _PermissionDenied = _interopRequireDefault(require("./assets/PermissionDenied.svg"));
20
- var _SyncedBlockErrorStateCard = require("./SyncedBlockErrorStateCard");
21
24
  var _SyncedBlockGenericError = require("./SyncedBlockGenericError");
22
25
  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); }
26
+ var styles = {
27
+ wrapper: "_zulppxbi _ca0qv47k _n3tdv47k _19bvv47k _u5f3v47k _1e0c1txw _1bahv2br _4cvr1h6o"
28
+ };
23
29
  var RequestAccessState = /*#__PURE__*/function (RequestAccessState) {
24
30
  RequestAccessState["default"] = "default";
25
31
  RequestAccessState["errored"] = "errored";
@@ -28,8 +34,7 @@ var RequestAccessState = /*#__PURE__*/function (RequestAccessState) {
28
34
  return RequestAccessState;
29
35
  }(RequestAccessState || {});
30
36
  var SyncedBlockPermissionDeniedConfluencePage = function SyncedBlockPermissionDeniedConfluencePage(_ref) {
31
- var sourceAri = _ref.sourceAri;
32
- var contentId = (0, _editorSyncedBlockProvider.getPageIdAndTypeFromConfluencePageAri)(sourceAri).id;
37
+ var sourceContentId = _ref.sourceContentId;
33
38
  var _useIntl = (0, _reactIntlNext.useIntl)(),
34
39
  formatMessage = _useIntl.formatMessage;
35
40
  var _useState = (0, _react.useState)(RequestAccessState.default),
@@ -50,7 +55,7 @@ var SyncedBlockPermissionDeniedConfluencePage = function SyncedBlockPermissionDe
50
55
  commitMutation({
51
56
  variables: {
52
57
  requestPageAccessInput: {
53
- pageId: contentId,
58
+ pageId: sourceContentId,
54
59
  accessType: 'VIEW'
55
60
  }
56
61
  },
@@ -60,12 +65,20 @@ var SyncedBlockPermissionDeniedConfluencePage = function SyncedBlockPermissionDe
60
65
  onError: handleRequestError
61
66
  });
62
67
  };
63
- return /*#__PURE__*/_react.default.createElement(_SyncedBlockErrorStateCard.SyncedBlockErrorStateCard, {
64
- imageSrc: _PermissionDenied.default,
65
- imageAltText: formatMessage(_messages.syncBlockMessages.permissionDeniedAltText),
66
- primaryMessage: formatMessage(_messages.syncBlockMessages.permissionDeniedHeading),
67
- secondaryMessage: formatMessage(_messages.syncBlockMessages.permissionDeniedDescription)
68
- }, requestAccessState === RequestAccessState.pending ? /*#__PURE__*/_react.default.createElement(_compiled.Flex, {
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
+ }, /*#__PURE__*/_react.default.createElement(_heading.default, {
78
+ size: "xsmall"
79
+ }, formatMessage(_messages.syncBlockMessages.permissionDeniedHeading)), /*#__PURE__*/_react.default.createElement(_compiled.Text, {
80
+ color: "color.text.subtle"
81
+ }, formatMessage(_messages.syncBlockMessages.permissionDeniedDescription)), requestAccessState === RequestAccessState.pending ? /*#__PURE__*/_react.default.createElement(_compiled.Flex, {
69
82
  columnGap: "space.050",
70
83
  alignItems: "center"
71
84
  }, /*#__PURE__*/_react.default.createElement(_statusSuccess.default, {
@@ -88,15 +101,15 @@ var SyncedBlockPermissionDeniedConfluencePage = function SyncedBlockPermissionDe
88
101
  }, formatMessage(_messages.syncBlockMessages.requestAccessButton)), requestAccessState === RequestAccessState.errored && /*#__PURE__*/_react.default.createElement(_compiled.Text, {
89
102
  color: "color.text.warning",
90
103
  testId: "sync-block-access-error-msg"
91
- }, formatMessage(_messages.syncBlockMessages.requestAccessError))));
104
+ }, formatMessage(_messages.syncBlockMessages.requestAccessError)))));
92
105
  };
93
106
  var SyncedBlockPermissionDenied = exports.SyncedBlockPermissionDenied = function SyncedBlockPermissionDenied(_ref2) {
94
- var sourceAri = _ref2.sourceAri,
107
+ var sourceContentId = _ref2.sourceContentId,
95
108
  sourceProduct = _ref2.sourceProduct;
96
109
  switch (sourceProduct) {
97
110
  case 'confluence-page':
98
111
  return /*#__PURE__*/_react.default.createElement(SyncedBlockPermissionDeniedConfluencePage, {
99
- sourceAri: sourceAri
112
+ sourceContentId: sourceContentId
100
113
  });
101
114
  default:
102
115
  return /*#__PURE__*/_react.default.createElement(_SyncedBlockGenericError.SyncedBlockGenericError, null);
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.SyncedBlockRenderer = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
+ var _hooks = require("@atlaskit/editor-common/hooks");
9
10
  var _editorSyncedBlockProvider = require("@atlaskit/editor-synced-block-provider");
10
11
  var _AKRendererWrapper = require("./AKRendererWrapper");
11
12
  var _SyncedBlockErrorComponent = require("./SyncedBlockErrorComponent");
@@ -13,23 +14,36 @@ var _SyncedBlockLoadingState = require("./SyncedBlockLoadingState");
13
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); }
14
15
  var SyncedBlockRendererComponent = function SyncedBlockRendererComponent(_ref) {
15
16
  var useFetchSyncBlockData = _ref.useFetchSyncBlockData,
16
- syncBlockRendererOptions = _ref.syncBlockRendererOptions;
17
+ syncBlockRendererOptions = _ref.syncBlockRendererOptions,
18
+ api = _ref.api;
17
19
  var _useFetchSyncBlockDat = useFetchSyncBlockData(),
18
20
  syncBlockInstance = _useFetchSyncBlockDat.syncBlockInstance,
19
21
  providerFactory = _useFetchSyncBlockDat.providerFactory,
20
22
  isLoading = _useFetchSyncBlockDat.isLoading,
21
23
  reloadData = _useFetchSyncBlockDat.reloadData;
24
+ var _useSharedPluginState = (0, _hooks.useSharedPluginStateWithSelector)(api, ['connectivity'], function (_ref2) {
25
+ var connectivityState = _ref2.connectivityState;
26
+ return {
27
+ isOffline: (connectivityState === null || connectivityState === void 0 ? void 0 : connectivityState.mode) === 'offline'
28
+ };
29
+ }),
30
+ isOffline = _useSharedPluginState.isOffline;
31
+ if (isOffline) {
32
+ return /*#__PURE__*/_react.default.createElement(_SyncedBlockErrorComponent.SyncedBlockErrorComponent, {
33
+ error: _editorSyncedBlockProvider.SyncBlockError.Offline
34
+ });
35
+ }
22
36
  if (!syncBlockInstance) {
23
37
  return /*#__PURE__*/_react.default.createElement(_SyncedBlockLoadingState.SyncedBlockLoadingState, null);
24
38
  }
25
39
  if (syncBlockInstance.error || !syncBlockInstance.data) {
26
- var _syncBlockInstance$er, _syncBlockInstance$da, _syncBlockInstance$da2;
40
+ var _syncBlockInstance$er, _api$analytics;
27
41
  return /*#__PURE__*/_react.default.createElement(_SyncedBlockErrorComponent.SyncedBlockErrorComponent, {
28
42
  error: (_syncBlockInstance$er = syncBlockInstance.error) !== null && _syncBlockInstance$er !== void 0 ? _syncBlockInstance$er : _editorSyncedBlockProvider.SyncBlockError.Errored,
29
- sourceAri: (_syncBlockInstance$da = syncBlockInstance.data) === null || _syncBlockInstance$da === void 0 ? void 0 : _syncBlockInstance$da.sourceAri,
30
- sourceProduct: (_syncBlockInstance$da2 = syncBlockInstance.data) === null || _syncBlockInstance$da2 === void 0 ? void 0 : _syncBlockInstance$da2.product,
43
+ resourceId: syncBlockInstance.resourceId,
31
44
  onRetry: reloadData,
32
- isLoading: isLoading
45
+ isLoading: isLoading,
46
+ fireAnalyticsEvent: api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions.fireAnalyticsEvent
33
47
  });
34
48
  }
35
49
  var syncBlockDoc = {
@@ -4,10 +4,12 @@ import { SyncedBlockRenderer } from './ui/SyncedBlockRenderer';
4
4
  export const getSyncedBlockRenderer = ({
5
5
  syncBlockRendererOptions
6
6
  }) => ({
7
- useFetchSyncBlockData
7
+ useFetchSyncBlockData,
8
+ api
8
9
  }) => {
9
10
  return /*#__PURE__*/React.createElement(SyncedBlockRenderer, {
10
11
  syncBlockRendererOptions: syncBlockRendererOptions,
11
- useFetchSyncBlockData: useFetchSyncBlockData
12
+ useFetchSyncBlockData: useFetchSyncBlockData,
13
+ api: api
12
14
  });
13
15
  };
@@ -1,26 +1,45 @@
1
1
  import React, { useMemo } from 'react';
2
+ import { logException } from '@atlaskit/editor-common/monitoring';
2
3
  import { SyncBlockSharedCssClassName } from '@atlaskit/editor-common/sync-block';
3
- import { SyncBlockError } from '@atlaskit/editor-synced-block-provider';
4
+ import { fetchErrorPayload, getContentIdAndProductFromResourceId, SyncBlockError } from '@atlaskit/editor-synced-block-provider';
4
5
  import { SyncedBlockGenericError } from './SyncedBlockGenericError';
5
6
  import { SyncedBlockLoadError } from './SyncedBlockLoadError';
7
+ import { SyncedBlockOfflineError } from './SyncedBlockOfflineError';
6
8
  import { SyncedBlockPermissionDenied } from './SyncedBlockPermissionDenied';
9
+ const getForbiddenErrorContent = (resourceId, fireAnalyticsEvent) => {
10
+ try {
11
+ if (!resourceId) {
12
+ throw new Error('Missing resource id');
13
+ }
14
+ const {
15
+ sourceContentId,
16
+ sourceProduct
17
+ } = getContentIdAndProductFromResourceId(resourceId);
18
+ return /*#__PURE__*/React.createElement(SyncedBlockPermissionDenied, {
19
+ sourceContentId: sourceContentId,
20
+ sourceProduct: sourceProduct
21
+ });
22
+ } catch (error) {
23
+ logException(error, {
24
+ location: 'editor-synced-block-renderer/SyncedBlockErrorComponent'
25
+ });
26
+ fireAnalyticsEvent === null || fireAnalyticsEvent === void 0 ? void 0 : fireAnalyticsEvent(fetchErrorPayload(error.message));
27
+ return /*#__PURE__*/React.createElement(SyncedBlockGenericError, null);
28
+ }
29
+ };
7
30
  export const SyncedBlockErrorComponent = ({
8
31
  error,
9
32
  isLoading,
10
33
  onRetry,
11
- sourceAri,
12
- sourceProduct
34
+ resourceId,
35
+ fireAnalyticsEvent
13
36
  }) => {
14
37
  const getErrorContent = useMemo(() => {
15
38
  switch (error) {
39
+ case SyncBlockError.Offline:
40
+ return /*#__PURE__*/React.createElement(SyncedBlockOfflineError, null);
16
41
  case SyncBlockError.Forbidden:
17
- if (!sourceAri || !sourceProduct) {
18
- return /*#__PURE__*/React.createElement(SyncedBlockGenericError, null);
19
- }
20
- return /*#__PURE__*/React.createElement(SyncedBlockPermissionDenied, {
21
- sourceAri: sourceAri,
22
- sourceProduct: sourceProduct
23
- });
42
+ return getForbiddenErrorContent(resourceId, fireAnalyticsEvent);
24
43
  case SyncBlockError.NotFound:
25
44
  case SyncBlockError.Errored:
26
45
  case SyncBlockError.RateLimited:
@@ -32,7 +51,7 @@ export const SyncedBlockErrorComponent = ({
32
51
  default:
33
52
  return /*#__PURE__*/React.createElement(SyncedBlockGenericError, null);
34
53
  }
35
- }, [error, isLoading, onRetry, sourceAri, sourceProduct]);
54
+ }, [error, isLoading, onRetry, resourceId, fireAnalyticsEvent]);
36
55
  return (
37
56
  /*#__PURE__*/
38
57
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop
@@ -1,11 +1,8 @@
1
1
 
2
- ._2rko12b0{border-radius:var(--ds-radius-small,4px)}
3
- ._zulpu2gc{gap:var(--ds-space-100,8px)}._18u0u2gc{margin-left:var(--ds-space-100,8px)}
4
- ._19bvxy5q{padding-left:var(--ds-space-400,2pc)}
2
+ ._zulppxbi{gap:var(--ds-space-200,1pc)}._19bvpxbi{padding-left:var(--ds-space-200,1pc)}
5
3
  ._1bahv2br{justify-content:start}
6
4
  ._1e0c1txw{display:flex}
7
5
  ._4cvr1h6o{align-items:center}
8
- ._bfhkby5v{background-color:var(--ds-background-disabled,#17171708)}
9
- ._ca0qv47k{padding-top:var(--ds-space-250,20px)}
10
- ._n3tdv47k{padding-bottom:var(--ds-space-250,20px)}
11
- ._u5f3v47k{padding-right:var(--ds-space-250,20px)}
6
+ ._ca0qu2gc{padding-top:var(--ds-space-100,8px)}
7
+ ._n3tdu2gc{padding-bottom:var(--ds-space-100,8px)}
8
+ ._u5f3pxbi{padding-right:var(--ds-space-200,1pc)}
@@ -2,34 +2,21 @@
2
2
  import "./SyncedBlockErrorStateCard.compiled.css";
3
3
  import { ax, ix } from "@compiled/react/runtime";
4
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';
5
+ import WarningOutlineIcon from '@atlaskit/icon-lab/core/warning-outline';
6
+ import { Box, Text } from '@atlaskit/primitives/compiled';
8
7
  const styles = {
9
- wrapper: "_2rko12b0 _zulpu2gc _ca0qv47k _n3tdv47k _19bvxy5q _u5f3v47k _bfhkby5v _1e0c1txw _1bahv2br _4cvr1h6o",
10
- textWrapper: "_18u0u2gc"
8
+ wrapper: "_zulppxbi _ca0qu2gc _n3tdu2gc _19bvpxbi _u5f3pxbi _1e0c1txw _1bahv2br _4cvr1h6o"
11
9
  };
12
10
  export const SyncedBlockErrorStateCard = ({
13
11
  children,
14
- imageAltText,
15
- imageSrc,
16
- primaryMessage,
17
- secondaryMessage
12
+ description
18
13
  }) => {
19
14
  return /*#__PURE__*/React.createElement(Box, {
20
15
  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, {
16
+ }, /*#__PURE__*/React.createElement(WarningOutlineIcon, {
17
+ color: "var(--ds-icon-subtle, #505258)",
18
+ label: ""
19
+ }), /*#__PURE__*/React.createElement(Text, {
33
20
  color: "color.text.subtle"
34
- }, secondaryMessage), children));
21
+ }, description), children);
35
22
  };