@atlaskit/smart-card 18.0.21 → 19.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +49 -0
- package/dist/cjs/client/index.js +6 -379
- package/dist/cjs/constants.js +4 -4
- package/dist/cjs/extractors/embed/index.js +2 -2
- package/dist/cjs/extractors/hover/extractMetadata.js +31 -0
- package/dist/cjs/index.js +7 -13
- package/dist/cjs/state/actions/constants.js +1 -13
- package/dist/cjs/state/actions/index.js +20 -22
- package/dist/cjs/state/analytics/useSmartLinkAnalytics.js +2 -2
- package/dist/cjs/state/config/index.js +2 -2
- package/dist/cjs/state/helpers.js +1 -9
- package/dist/cjs/state/hooks/usePrefetch.js +2 -2
- package/dist/cjs/state/index.js +4 -4
- package/dist/cjs/state/renderers/index.js +2 -2
- package/dist/cjs/state/store/index.js +5 -5
- package/dist/cjs/utils/mocks.js +2 -2
- package/dist/cjs/utils/test-utils.js +2 -2
- package/dist/cjs/version.json +1 -1
- package/dist/cjs/view/FlexibleCard/components/actions/action/index.js +2 -2
- package/dist/cjs/view/FlexibleCard/components/blocks/action-group/index.js +1 -0
- package/dist/cjs/view/FlexibleCard/components/blocks/block/index.js +3 -2
- package/dist/cjs/view/FlexibleCard/components/blocks/element-group/index.js +1 -0
- package/dist/cjs/view/FlexibleCard/components/blocks/footer-block/index.js +1 -0
- package/dist/cjs/view/FlexibleCard/components/blocks/metadata-block/index.js +1 -0
- package/dist/cjs/view/FlexibleCard/components/blocks/preview-block/index.js +1 -0
- package/dist/cjs/view/FlexibleCard/components/blocks/snippet-block/index.js +1 -0
- package/dist/cjs/view/FlexibleCard/components/blocks/title-block/index.js +2 -1
- package/dist/cjs/view/FlexibleCard/components/container/index.js +19 -6
- package/dist/cjs/view/FlexibleCard/components/container/layered-link/index.js +5 -0
- package/dist/cjs/view/FlexibleCard/components/elements/avatar-group/index.js +2 -2
- package/dist/cjs/view/FlexibleCard/components/elements/badge/index.js +2 -2
- package/dist/cjs/view/FlexibleCard/components/elements/date-time/index.js +2 -2
- package/dist/cjs/view/FlexibleCard/components/elements/icon/index.js +2 -2
- package/dist/cjs/view/FlexibleCard/components/elements/index.js +2 -2
- package/dist/cjs/view/FlexibleCard/components/elements/link/index.js +3 -3
- package/dist/cjs/view/FlexibleCard/components/elements/lozenge/index.js +2 -2
- package/dist/cjs/view/FlexibleCard/components/elements/media/index.js +2 -2
- package/dist/cjs/view/FlexibleCard/components/elements/text/index.js +2 -2
- package/dist/cjs/view/HoverCard/index.js +11 -2
- package/dist/cjs/view/HoverCard/utils.js +36 -0
- package/dist/es2019/client/index.js +1 -214
- package/dist/es2019/constants.js +4 -4
- package/dist/es2019/extractors/embed/index.js +1 -1
- package/dist/es2019/extractors/hover/extractMetadata.js +18 -0
- package/dist/es2019/index.js +4 -4
- package/dist/es2019/state/actions/constants.js +0 -6
- package/dist/es2019/state/actions/index.js +4 -4
- package/dist/es2019/state/analytics/useSmartLinkAnalytics.js +1 -1
- package/dist/es2019/state/config/index.js +1 -1
- package/dist/es2019/state/helpers.js +0 -5
- package/dist/es2019/state/hooks/usePrefetch.js +1 -1
- package/dist/es2019/state/index.js +1 -1
- package/dist/es2019/state/renderers/index.js +1 -1
- package/dist/es2019/state/store/index.js +2 -2
- package/dist/es2019/utils/mocks.js +1 -1
- package/dist/es2019/utils/test-utils.js +1 -1
- package/dist/es2019/version.json +1 -1
- package/dist/es2019/view/FlexibleCard/components/actions/action/index.js +2 -2
- package/dist/es2019/view/FlexibleCard/components/blocks/action-group/index.js +1 -0
- package/dist/es2019/view/FlexibleCard/components/blocks/block/index.js +3 -2
- package/dist/es2019/view/FlexibleCard/components/blocks/element-group/index.js +1 -0
- package/dist/es2019/view/FlexibleCard/components/blocks/footer-block/index.js +1 -0
- package/dist/es2019/view/FlexibleCard/components/blocks/metadata-block/index.js +1 -0
- package/dist/es2019/view/FlexibleCard/components/blocks/preview-block/index.js +1 -0
- package/dist/es2019/view/FlexibleCard/components/blocks/snippet-block/index.js +1 -0
- package/dist/es2019/view/FlexibleCard/components/blocks/title-block/index.js +2 -1
- package/dist/es2019/view/FlexibleCard/components/container/index.js +19 -6
- package/dist/es2019/view/FlexibleCard/components/container/layered-link/index.js +5 -0
- package/dist/es2019/view/FlexibleCard/components/elements/avatar-group/index.js +2 -2
- package/dist/es2019/view/FlexibleCard/components/elements/badge/index.js +2 -2
- package/dist/es2019/view/FlexibleCard/components/elements/date-time/index.js +2 -2
- package/dist/es2019/view/FlexibleCard/components/elements/icon/index.js +2 -2
- package/dist/es2019/view/FlexibleCard/components/elements/index.js +2 -2
- package/dist/es2019/view/FlexibleCard/components/elements/link/index.js +3 -3
- package/dist/es2019/view/FlexibleCard/components/elements/lozenge/index.js +2 -2
- package/dist/es2019/view/FlexibleCard/components/elements/media/index.js +2 -2
- package/dist/es2019/view/FlexibleCard/components/elements/text/index.js +2 -2
- package/dist/es2019/view/HoverCard/index.js +27 -18
- package/dist/es2019/view/HoverCard/utils.js +27 -0
- package/dist/esm/client/index.js +1 -360
- package/dist/esm/constants.js +4 -4
- package/dist/esm/extractors/embed/index.js +1 -1
- package/dist/esm/extractors/hover/extractMetadata.js +22 -0
- package/dist/esm/index.js +4 -4
- package/dist/esm/state/actions/constants.js +0 -6
- package/dist/esm/state/actions/index.js +4 -4
- package/dist/esm/state/analytics/useSmartLinkAnalytics.js +1 -1
- package/dist/esm/state/config/index.js +1 -1
- package/dist/esm/state/helpers.js +0 -5
- package/dist/esm/state/hooks/usePrefetch.js +1 -1
- package/dist/esm/state/index.js +1 -1
- package/dist/esm/state/renderers/index.js +1 -1
- package/dist/esm/state/store/index.js +2 -2
- package/dist/esm/utils/mocks.js +1 -1
- package/dist/esm/utils/test-utils.js +1 -1
- package/dist/esm/version.json +1 -1
- package/dist/esm/view/FlexibleCard/components/actions/action/index.js +2 -2
- package/dist/esm/view/FlexibleCard/components/blocks/action-group/index.js +1 -0
- package/dist/esm/view/FlexibleCard/components/blocks/block/index.js +3 -2
- package/dist/esm/view/FlexibleCard/components/blocks/element-group/index.js +1 -0
- package/dist/esm/view/FlexibleCard/components/blocks/footer-block/index.js +1 -0
- package/dist/esm/view/FlexibleCard/components/blocks/metadata-block/index.js +1 -0
- package/dist/esm/view/FlexibleCard/components/blocks/preview-block/index.js +1 -0
- package/dist/esm/view/FlexibleCard/components/blocks/snippet-block/index.js +1 -0
- package/dist/esm/view/FlexibleCard/components/blocks/title-block/index.js +2 -1
- package/dist/esm/view/FlexibleCard/components/container/index.js +19 -6
- package/dist/esm/view/FlexibleCard/components/container/layered-link/index.js +5 -0
- package/dist/esm/view/FlexibleCard/components/elements/avatar-group/index.js +2 -2
- package/dist/esm/view/FlexibleCard/components/elements/badge/index.js +2 -2
- package/dist/esm/view/FlexibleCard/components/elements/date-time/index.js +2 -2
- package/dist/esm/view/FlexibleCard/components/elements/icon/index.js +2 -2
- package/dist/esm/view/FlexibleCard/components/elements/index.js +2 -2
- package/dist/esm/view/FlexibleCard/components/elements/link/index.js +3 -3
- package/dist/esm/view/FlexibleCard/components/elements/lozenge/index.js +2 -2
- package/dist/esm/view/FlexibleCard/components/elements/media/index.js +2 -2
- package/dist/esm/view/FlexibleCard/components/elements/text/index.js +2 -2
- package/dist/esm/view/HoverCard/index.js +10 -3
- package/dist/esm/view/HoverCard/utils.js +27 -0
- package/dist/types/__tests_external__/page-objects/BaseCard.d.ts +1 -2
- package/dist/types/client/index.d.ts +1 -18
- package/dist/types/constants.d.ts +4 -4
- package/dist/types/extractors/block/index.d.ts +1 -1
- package/dist/types/extractors/common/title-prefix/extractTitlePrefix.d.ts +1 -1
- package/dist/types/extractors/flexible/icon/extract-icon-renderer.d.ts +1 -1
- package/dist/types/extractors/flexible/icon/index.d.ts +1 -1
- package/dist/types/extractors/flexible/index.d.ts +1 -1
- package/dist/types/extractors/hover/extractMetadata.d.ts +3 -0
- package/dist/types/extractors/inline/index.d.ts +1 -1
- package/dist/types/index.d.ts +6 -6
- package/dist/types/model/invoke-opts.d.ts +1 -14
- package/dist/types/state/actions/constants.d.ts +0 -6
- package/dist/types/state/actions/types.d.ts +2 -13
- package/dist/types/state/analytics/useSmartLinkAnalytics.d.ts +1 -2
- package/dist/types/state/config/index.d.ts +1 -1
- package/dist/types/state/helpers.d.ts +1 -3
- package/dist/types/state/hooks/useSmartLink.d.ts +6 -6
- package/dist/types/state/index.d.ts +3 -3
- package/dist/types/state/reducers/types.d.ts +1 -1
- package/dist/types/state/renderers/index.d.ts +1 -1
- package/dist/types/state/store/index.d.ts +2 -2
- package/dist/types/state/types.d.ts +1 -1
- package/dist/types/types.d.ts +2 -2
- package/dist/types/utils/analytics/analytics.d.ts +1 -1
- package/dist/types/utils/analytics/index.d.ts +1 -2
- package/dist/types/utils/performance.d.ts +1 -1
- package/dist/types/view/BlockCard/types.d.ts +1 -1
- package/dist/types/view/Card/types.d.ts +2 -3
- package/dist/types/view/FlexibleCard/components/actions/action/index.d.ts +2 -2
- package/dist/types/view/FlexibleCard/components/actions/action/types.d.ts +43 -0
- package/dist/types/view/FlexibleCard/components/blocks/action-group/index.d.ts +1 -0
- package/dist/types/view/FlexibleCard/components/blocks/action-group/types.d.ts +25 -0
- package/dist/types/view/FlexibleCard/components/blocks/block/index.d.ts +3 -2
- package/dist/types/view/FlexibleCard/components/blocks/element-group/index.d.ts +1 -0
- package/dist/types/view/FlexibleCard/components/blocks/footer-block/index.d.ts +1 -0
- package/dist/types/view/FlexibleCard/components/blocks/footer-block/types.d.ts +8 -2
- package/dist/types/view/FlexibleCard/components/blocks/metadata-block/index.d.ts +1 -0
- package/dist/types/view/FlexibleCard/components/blocks/metadata-block/types.d.ts +22 -2
- package/dist/types/view/FlexibleCard/components/blocks/preview-block/index.d.ts +1 -0
- package/dist/types/view/FlexibleCard/components/blocks/snippet-block/index.d.ts +1 -0
- package/dist/types/view/FlexibleCard/components/blocks/snippet-block/types.d.ts +6 -2
- package/dist/types/view/FlexibleCard/components/blocks/title-block/index.d.ts +2 -1
- package/dist/types/view/FlexibleCard/components/blocks/title-block/types.d.ts +63 -13
- package/dist/types/view/FlexibleCard/components/blocks/types.d.ts +68 -2
- package/dist/types/view/FlexibleCard/components/common/loading-skeleton/types.d.ts +5 -0
- package/dist/types/view/FlexibleCard/components/container/index.d.ts +5 -1
- package/dist/types/view/FlexibleCard/components/container/layered-link/index.d.ts +5 -0
- package/dist/types/view/FlexibleCard/components/container/types.d.ts +20 -10
- package/dist/types/view/FlexibleCard/components/elements/avatar-group/index.d.ts +2 -2
- package/dist/types/view/FlexibleCard/components/elements/avatar-group/types.d.ts +12 -0
- package/dist/types/view/FlexibleCard/components/elements/badge/index.d.ts +2 -2
- package/dist/types/view/FlexibleCard/components/elements/badge/types.d.ts +10 -0
- package/dist/types/view/FlexibleCard/components/elements/date-time/index.d.ts +2 -2
- package/dist/types/view/FlexibleCard/components/elements/date-time/types.d.ts +6 -0
- package/dist/types/view/FlexibleCard/components/elements/icon/index.d.ts +2 -2
- package/dist/types/view/FlexibleCard/components/elements/icon/types.d.ts +16 -3
- package/dist/types/view/FlexibleCard/components/elements/index.d.ts +2 -2
- package/dist/types/view/FlexibleCard/components/elements/link/index.d.ts +3 -3
- package/dist/types/view/FlexibleCard/components/elements/link/types.d.ts +21 -1
- package/dist/types/view/FlexibleCard/components/elements/lozenge/index.d.ts +2 -2
- package/dist/types/view/FlexibleCard/components/elements/lozenge/types.d.ts +6 -0
- package/dist/types/view/FlexibleCard/components/elements/media/index.d.ts +2 -2
- package/dist/types/view/FlexibleCard/components/elements/media/types.d.ts +6 -0
- package/dist/types/view/FlexibleCard/components/elements/text/index.d.ts +2 -2
- package/dist/types/view/FlexibleCard/components/elements/text/types.d.ts +10 -0
- package/dist/types/view/FlexibleCard/components/elements/types.d.ts +11 -0
- package/dist/types/view/FlexibleCard/components/types.d.ts +1 -0
- package/dist/types/view/FlexibleCard/types.d.ts +73 -3
- package/dist/types/view/FlexibleCard/utils.d.ts +1 -1
- package/dist/types/view/HoverCard/types.d.ts +5 -0
- package/dist/types/view/HoverCard/utils.d.ts +2 -0
- package/dist/types/view/InlineCard/types.d.ts +1 -1
- package/docs-helpers/flexible-ui-action-item.tsx +6 -0
- package/docs-helpers/flexible-ui-actions-prop.tsx +6 -0
- package/docs-helpers/flexible-ui-element-item.tsx +6 -0
- package/docs-helpers/flexible-ui-prop.tsx +6 -0
- package/docs-helpers/flexible-ui.tsx +28 -0
- package/package.json +3 -9
- package/dist/cjs/client/api.js +0 -119
- package/dist/cjs/client/errors.js +0 -55
- package/dist/cjs/client/types/index.js +0 -5
- package/dist/cjs/client/types/requests.js +0 -5
- package/dist/cjs/client/types/responses.js +0 -31
- package/dist/cjs/client/utils/environments.js +0 -47
- package/dist/cjs/providers/editor/index.js +0 -283
- package/dist/cjs/providers/editor/transformer.js +0 -90
- package/dist/cjs/providers/editor/types.js +0 -5
- package/dist/cjs/state/actions/helpers.js +0 -18
- package/dist/cjs/state/context/index.js +0 -34
- package/dist/cjs/state/context/provider.js +0 -74
- package/dist/cjs/state/context/types.js +0 -5
- package/dist/cjs/state/reducers/index.js +0 -89
- package/dist/cjs/state/store/types.js +0 -5
- package/dist/es2019/client/api.js +0 -38
- package/dist/es2019/client/errors.js +0 -19
- package/dist/es2019/client/types/index.js +0 -1
- package/dist/es2019/client/types/requests.js +0 -1
- package/dist/es2019/client/types/responses.js +0 -19
- package/dist/es2019/client/utils/environments.js +0 -33
- package/dist/es2019/providers/editor/index.js +0 -82
- package/dist/es2019/providers/editor/transformer.js +0 -57
- package/dist/es2019/providers/editor/types.js +0 -1
- package/dist/es2019/state/actions/helpers.js +0 -8
- package/dist/es2019/state/context/index.js +0 -14
- package/dist/es2019/state/context/provider.js +0 -51
- package/dist/es2019/state/context/types.js +0 -1
- package/dist/es2019/state/reducers/index.js +0 -74
- package/dist/es2019/state/store/types.js +0 -1
- package/dist/esm/client/api.js +0 -98
- package/dist/esm/client/errors.js +0 -40
- package/dist/esm/client/types/index.js +0 -1
- package/dist/esm/client/types/requests.js +0 -1
- package/dist/esm/client/types/responses.js +0 -19
- package/dist/esm/client/utils/environments.js +0 -33
- package/dist/esm/providers/editor/index.js +0 -257
- package/dist/esm/providers/editor/transformer.js +0 -79
- package/dist/esm/providers/editor/types.js +0 -1
- package/dist/esm/state/actions/helpers.js +0 -9
- package/dist/esm/state/context/index.js +0 -14
- package/dist/esm/state/context/provider.js +0 -50
- package/dist/esm/state/context/types.js +0 -1
- package/dist/esm/state/reducers/index.js +0 -69
- package/dist/esm/state/store/types.js +0 -1
- package/dist/types/client/api.d.ts +0 -5
- package/dist/types/client/errors.d.ts +0 -9
- package/dist/types/client/types/index.d.ts +0 -13
- package/dist/types/client/types/requests.d.ts +0 -9
- package/dist/types/client/types/responses.d.ts +0 -19
- package/dist/types/client/utils/environments.d.ts +0 -12
- package/dist/types/providers/editor/index.d.ts +0 -22
- package/dist/types/providers/editor/transformer.d.ts +0 -8
- package/dist/types/providers/editor/types.d.ts +0 -19
- package/dist/types/state/actions/helpers.d.ts +0 -2
- package/dist/types/state/context/index.d.ts +0 -8
- package/dist/types/state/context/provider.d.ts +0 -5
- package/dist/types/state/context/types.d.ts +0 -39
- package/dist/types/state/reducers/index.d.ts +0 -4
- package/dist/types/state/store/types.d.ts +0 -18
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.SmartCardContext = void 0;
|
|
7
|
-
Object.defineProperty(exports, "SmartCardProvider", {
|
|
8
|
-
enumerable: true,
|
|
9
|
-
get: function get() {
|
|
10
|
-
return _provider.SmartCardProvider;
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
|
-
exports.default = void 0;
|
|
14
|
-
exports.useSmartLinkContext = useSmartLinkContext;
|
|
15
|
-
|
|
16
|
-
var _react = require("react");
|
|
17
|
-
|
|
18
|
-
var _provider = require("./provider");
|
|
19
|
-
|
|
20
|
-
var SmartCardContext = /*#__PURE__*/(0, _react.createContext)(undefined);
|
|
21
|
-
exports.SmartCardContext = SmartCardContext;
|
|
22
|
-
|
|
23
|
-
function useSmartLinkContext() {
|
|
24
|
-
var context = (0, _react.useContext)(SmartCardContext);
|
|
25
|
-
|
|
26
|
-
if (!context) {
|
|
27
|
-
throw Error('useSmartCard() must be wrapped in <SmartCardProvider>');
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
return context;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
var _default = SmartCardContext;
|
|
34
|
-
exports.default = _default;
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
|
-
Object.defineProperty(exports, "__esModule", {
|
|
8
|
-
value: true
|
|
9
|
-
});
|
|
10
|
-
exports.SmartCardProvider = SmartCardProvider;
|
|
11
|
-
exports.default = void 0;
|
|
12
|
-
|
|
13
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
14
|
-
|
|
15
|
-
var _redux = require("redux");
|
|
16
|
-
|
|
17
|
-
var _reducers = require("../reducers");
|
|
18
|
-
|
|
19
|
-
var _ = require(".");
|
|
20
|
-
|
|
21
|
-
var _client = _interopRequireDefault(require("../../client"));
|
|
22
|
-
|
|
23
|
-
var _preview = require("../../extractors/common/preview");
|
|
24
|
-
|
|
25
|
-
var _helpers = require("../helpers");
|
|
26
|
-
|
|
27
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
28
|
-
|
|
29
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
30
|
-
|
|
31
|
-
function SmartCardProvider(_ref) {
|
|
32
|
-
var storeOptions = _ref.storeOptions,
|
|
33
|
-
customClient = _ref.client,
|
|
34
|
-
customAuthFlow = _ref.authFlow,
|
|
35
|
-
children = _ref.children,
|
|
36
|
-
renderers = _ref.renderers;
|
|
37
|
-
var parentContext = (0, _react.useContext)(_.SmartCardContext);
|
|
38
|
-
var providerValue = (0, _react.useMemo)(function () {
|
|
39
|
-
var _ref2 = storeOptions || {
|
|
40
|
-
initialState: {}
|
|
41
|
-
},
|
|
42
|
-
initialState = _ref2.initialState;
|
|
43
|
-
|
|
44
|
-
var client = customClient || new _client.default();
|
|
45
|
-
var store = (0, _redux.createStore)(_reducers.cardReducer, initialState);
|
|
46
|
-
var authFlow = customAuthFlow || 'oauth2';
|
|
47
|
-
|
|
48
|
-
var getPreview = function getPreview(url, platform) {
|
|
49
|
-
var cardState = (0, _helpers.getUrl)(store, url);
|
|
50
|
-
return cardState.details ? (0, _preview.extractPreview)(cardState.details.data, platform) : undefined;
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
return {
|
|
54
|
-
renderers: renderers,
|
|
55
|
-
store: store,
|
|
56
|
-
prefetchStore: {},
|
|
57
|
-
connections: {
|
|
58
|
-
client: client
|
|
59
|
-
},
|
|
60
|
-
config: {
|
|
61
|
-
authFlow: authFlow
|
|
62
|
-
},
|
|
63
|
-
extractors: {
|
|
64
|
-
getPreview: getPreview
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
}, [customClient, customAuthFlow, storeOptions, renderers]);
|
|
68
|
-
return /*#__PURE__*/_react.default.createElement(_.SmartCardContext.Provider, {
|
|
69
|
-
value: parentContext || providerValue
|
|
70
|
-
}, children);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
var _default = SmartCardProvider;
|
|
74
|
-
exports.default = _default;
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
|
-
Object.defineProperty(exports, "__esModule", {
|
|
8
|
-
value: true
|
|
9
|
-
});
|
|
10
|
-
exports.cardReducer = void 0;
|
|
11
|
-
|
|
12
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
-
|
|
14
|
-
var actions = _interopRequireWildcard(require("../actions/constants"));
|
|
15
|
-
|
|
16
|
-
var _helpers = require("../helpers");
|
|
17
|
-
|
|
18
|
-
var _cardReducerMap;
|
|
19
|
-
|
|
20
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
|
-
|
|
22
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
23
|
-
|
|
24
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
25
|
-
|
|
26
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
27
|
-
|
|
28
|
-
var cardReducerMap = (_cardReducerMap = {}, (0, _defineProperty2.default)(_cardReducerMap, actions.ACTION_PENDING, function (_state, _ref) {
|
|
29
|
-
var type = _ref.type;
|
|
30
|
-
return {
|
|
31
|
-
status: type
|
|
32
|
-
};
|
|
33
|
-
}), (0, _defineProperty2.default)(_cardReducerMap, actions.ACTION_RESOLVING, function (state, _ref2) {
|
|
34
|
-
var type = _ref2.type;
|
|
35
|
-
return _objectSpread(_objectSpread({}, state), {}, {
|
|
36
|
-
status: type
|
|
37
|
-
});
|
|
38
|
-
}), (0, _defineProperty2.default)(_cardReducerMap, actions.ACTION_RESOLVED, function (state, _ref3) {
|
|
39
|
-
var type = _ref3.type,
|
|
40
|
-
payload = _ref3.payload;
|
|
41
|
-
var nextDetails = payload;
|
|
42
|
-
|
|
43
|
-
var nextState = _objectSpread({}, state);
|
|
44
|
-
|
|
45
|
-
if (nextDetails) {
|
|
46
|
-
nextState.status = (0, _helpers.getStatus)(nextDetails);
|
|
47
|
-
nextState.details = nextDetails;
|
|
48
|
-
} else {
|
|
49
|
-
// Keep the pre-existing data in the store. If there
|
|
50
|
-
// is no data, the UI should handle this gracefully.
|
|
51
|
-
nextState.status = type;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
return nextState;
|
|
55
|
-
}), (0, _defineProperty2.default)(_cardReducerMap, actions.ACTION_ERROR, function (state, _ref4) {
|
|
56
|
-
var type = _ref4.type,
|
|
57
|
-
error = _ref4.error;
|
|
58
|
-
return _objectSpread(_objectSpread({}, state), {}, {
|
|
59
|
-
status: type,
|
|
60
|
-
error: error
|
|
61
|
-
});
|
|
62
|
-
}), (0, _defineProperty2.default)(_cardReducerMap, actions.ACTION_ERROR_FALLBACK, function (state, _ref5) {
|
|
63
|
-
var type = _ref5.type,
|
|
64
|
-
error = _ref5.error;
|
|
65
|
-
return _objectSpread(_objectSpread({}, state), {}, {
|
|
66
|
-
status: type,
|
|
67
|
-
error: error
|
|
68
|
-
});
|
|
69
|
-
}), _cardReducerMap);
|
|
70
|
-
|
|
71
|
-
var cardReducer = function cardReducer(state, action) {
|
|
72
|
-
if (cardReducerMap[action.type]) {
|
|
73
|
-
var cardState = state[action.url]; // Card may have reached the same state on account of multiple of the same
|
|
74
|
-
// URL being present in an editor session. E.g. page with N links to one resource.
|
|
75
|
-
|
|
76
|
-
var hasSameStatus = cardState && cardState.status === action.type;
|
|
77
|
-
|
|
78
|
-
if (hasSameStatus) {
|
|
79
|
-
return state;
|
|
80
|
-
} else {
|
|
81
|
-
var nextState = cardReducerMap[action.type](cardState, action);
|
|
82
|
-
return _objectSpread(_objectSpread({}, state), {}, (0, _defineProperty2.default)({}, action.url, nextState));
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
return state;
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
exports.cardReducer = cardReducer;
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
const ALLOWED_RESPONSE_STATUS_CODES = [200, 401, 404];
|
|
2
|
-
export class NetworkError extends Error {
|
|
3
|
-
constructor(error) {
|
|
4
|
-
super(error);
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
export async function request(method, url, data, headers) {
|
|
9
|
-
const requestConfig = {
|
|
10
|
-
method,
|
|
11
|
-
credentials: 'include',
|
|
12
|
-
headers: {
|
|
13
|
-
Accept: 'application/json',
|
|
14
|
-
'Cache-Control': 'no-cache',
|
|
15
|
-
'Content-Type': 'application/json',
|
|
16
|
-
...headers
|
|
17
|
-
},
|
|
18
|
-
...(data ? {
|
|
19
|
-
body: JSON.stringify(data)
|
|
20
|
-
} : {})
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
try {
|
|
24
|
-
const response = await fetch(url, requestConfig);
|
|
25
|
-
|
|
26
|
-
if (response.ok || ALLOWED_RESPONSE_STATUS_CODES.includes(response.status)) {
|
|
27
|
-
return await response.json();
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
throw response;
|
|
31
|
-
} catch (error) {
|
|
32
|
-
if (typeof error === 'string' || error instanceof TypeError) {
|
|
33
|
-
throw new NetworkError(error);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
throw error;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export class APIError extends Error {
|
|
2
|
-
constructor(kind, hostname, message, type) {
|
|
3
|
-
super(`${kind}: ${message}`);
|
|
4
|
-
this.kind = kind;
|
|
5
|
-
this.hostname = hostname;
|
|
6
|
-
this.message = message;
|
|
7
|
-
this.type = type;
|
|
8
|
-
this.name = 'APIError'; // The error type received from the server.
|
|
9
|
-
|
|
10
|
-
this.type = type; // The kind mapped to on the client.
|
|
11
|
-
|
|
12
|
-
this.kind = kind; // The message received from the server.
|
|
13
|
-
|
|
14
|
-
this.message = message; // The hostname of the URL which failed - do NOT log this (contains PII/UGC).
|
|
15
|
-
|
|
16
|
-
this.hostname = hostname;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
// Used to catch any other errors - not server-side.
|
|
2
|
-
export const isSuccessfulResponse = response => {
|
|
3
|
-
if (!response) {
|
|
4
|
-
return false;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
const hasSuccessfulStatus = response.status === 200;
|
|
8
|
-
const hasSuccessBody = ('body' in response);
|
|
9
|
-
return hasSuccessfulStatus && hasSuccessBody;
|
|
10
|
-
};
|
|
11
|
-
export const isErrorResponse = response => {
|
|
12
|
-
if (!response) {
|
|
13
|
-
return false;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const hasStatus = response.status >= 200;
|
|
17
|
-
const hasErrorBody = ('error' in response);
|
|
18
|
-
return hasStatus && hasErrorBody;
|
|
19
|
-
};
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
const devBaseUrl = 'https://api-private.dev.atlassian.com';
|
|
2
|
-
const stgBaseUrl = 'https://commerce-components-preview.dev.atlassian.com/gateway/api';
|
|
3
|
-
const prodBaseUrl = 'https://api-private.atlassian.com';
|
|
4
|
-
export const BaseUrls = {
|
|
5
|
-
dev: devBaseUrl,
|
|
6
|
-
development: devBaseUrl,
|
|
7
|
-
stg: stgBaseUrl,
|
|
8
|
-
staging: stgBaseUrl,
|
|
9
|
-
prd: prodBaseUrl,
|
|
10
|
-
prod: prodBaseUrl,
|
|
11
|
-
production: prodBaseUrl
|
|
12
|
-
};
|
|
13
|
-
export const getBaseUrl = envKey => {
|
|
14
|
-
// If an environment is provided, then use Stargate.
|
|
15
|
-
if (envKey) {
|
|
16
|
-
return envKey in BaseUrls ? BaseUrls[envKey] : prodBaseUrl;
|
|
17
|
-
} // Otherwise, use the current origin of the page.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
return window.location.origin;
|
|
21
|
-
};
|
|
22
|
-
export const getResolverUrl = envKey => {
|
|
23
|
-
// If an environment is provided, then use Stargate directly for requests.
|
|
24
|
-
if (envKey) {
|
|
25
|
-
const baseUrl = getBaseUrl(envKey);
|
|
26
|
-
return `${baseUrl}/object-resolver`;
|
|
27
|
-
} else {
|
|
28
|
-
// Otherwise, we fallback to using the Edge Proxy to access Stargate,
|
|
29
|
-
// which fixes some cookie issues with strict Browser policies.
|
|
30
|
-
return '/gateway/api/object-resolver';
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
export default BaseUrls;
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
// import setimmediate to temporary fix dataloader 2.0.0 bug
|
|
2
|
-
// @see https://github.com/graphql/dataloader/issues/249
|
|
3
|
-
import 'setimmediate';
|
|
4
|
-
import DataLoader from 'dataloader';
|
|
5
|
-
import { Transformer } from './transformer';
|
|
6
|
-
import { getResolverUrl, getBaseUrl } from '../../client/utils/environments';
|
|
7
|
-
import * as api from '../../client/api';
|
|
8
|
-
const BATCH_WAIT_TIME = 50;
|
|
9
|
-
export class EditorCardProvider {
|
|
10
|
-
constructor(envKey) {
|
|
11
|
-
this.baseUrl = getBaseUrl(envKey);
|
|
12
|
-
this.resolverUrl = getResolverUrl(envKey);
|
|
13
|
-
this.transformer = new Transformer();
|
|
14
|
-
this.requestHeaders = {
|
|
15
|
-
Origin: this.baseUrl
|
|
16
|
-
};
|
|
17
|
-
this.patternLoader = new DataLoader(keys => this.batchPatterns(keys), {
|
|
18
|
-
batchScheduleFn: callback => setTimeout(callback, BATCH_WAIT_TIME)
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
async batchPatterns(keys) {
|
|
23
|
-
// EDM-2205: Batch requests in the case that user paste multiple links at
|
|
24
|
-
// once. This is so that only one /providers is being called.
|
|
25
|
-
const patterns = await this.fetchPatterns();
|
|
26
|
-
return keys.map(() => patterns);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
async check(resourceUrl) {
|
|
30
|
-
try {
|
|
31
|
-
const endpoint = `${this.resolverUrl}/check`;
|
|
32
|
-
const response = await api.request('post', endpoint, {
|
|
33
|
-
resourceUrl
|
|
34
|
-
}, this.requestHeaders);
|
|
35
|
-
return response.isSupported;
|
|
36
|
-
} catch (err) {
|
|
37
|
-
// eslint-disable-next-line
|
|
38
|
-
console.error('failed to fetch /check', err);
|
|
39
|
-
return undefined;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
async fetchPatterns() {
|
|
44
|
-
try {
|
|
45
|
-
const endpoint = `${this.resolverUrl}/providers`;
|
|
46
|
-
const response = await api.request('post', endpoint, undefined, this.requestHeaders);
|
|
47
|
-
return response.providers.reduce((allSources, provider) => {
|
|
48
|
-
const providerSources = provider.patterns.map(pattern => pattern.source);
|
|
49
|
-
return allSources.concat(providerSources);
|
|
50
|
-
}, []);
|
|
51
|
-
} catch (err) {
|
|
52
|
-
// eslint-disable-next-line
|
|
53
|
-
console.error('failed to fetch /providers', err);
|
|
54
|
-
return undefined;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
async findPattern(url) {
|
|
59
|
-
if (!this.patterns) {
|
|
60
|
-
this.patterns = await this.patternLoader.load('providers');
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
return this.patterns ? this.patterns.some(pattern => url.match(pattern)) : false;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
async resolve(url, appearance) {
|
|
67
|
-
try {
|
|
68
|
-
let isSupported = (await this.findPattern(url)) || (await this.check(url));
|
|
69
|
-
|
|
70
|
-
if (isSupported) {
|
|
71
|
-
return this.transformer.toAdf(url, appearance);
|
|
72
|
-
}
|
|
73
|
-
} catch (e) {
|
|
74
|
-
// eslint-disable-next-line
|
|
75
|
-
console.warn(`Error when trying to check Smart Card url "${url} - ${e.prototype.name} ${e.message}`, e);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
return Promise.reject(undefined);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
}
|
|
82
|
-
export const editorCardProvider = new EditorCardProvider();
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
const isJiraRoadMap = url => url.match(/^https:\/\/.*?\/jira\/software\/(c\/)?projects\/[^\/]+?\/boards\/.*?\/roadmap\/?/);
|
|
2
|
-
|
|
3
|
-
const isPolarisView = url => url.match(/^https:\/\/.*?\/jira\/polaris\/projects\/[^\/]+?\/ideas\/view\/\d+$|^https:\/\/.*?\/secure\/JiraProductDiscoveryAnonymous\.jspa\?hash=\w+|^https:\/\/.*?\/jira\/polaris\/share\/\w+/);
|
|
4
|
-
|
|
5
|
-
const isJwmView = url => url.match(/^https:\/\/.*?\/jira\/core\/projects\/[^\/]+?\/(timeline|calendar|list|board)\/?/);
|
|
6
|
-
|
|
7
|
-
const isSlackMessage = url => url.match(/^https:\/\/.+?\.slack\.com\/archives\/[CG][A-Z0-9]+\/p[0-9]+(\?.*)?$/);
|
|
8
|
-
|
|
9
|
-
export class Transformer {
|
|
10
|
-
buildInlineAdf(url) {
|
|
11
|
-
return {
|
|
12
|
-
type: 'inlineCard',
|
|
13
|
-
attrs: {
|
|
14
|
-
url
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
buildBlockAdf(url) {
|
|
20
|
-
return {
|
|
21
|
-
type: 'blockCard',
|
|
22
|
-
attrs: {
|
|
23
|
-
url
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
buildEmbedAdf(url) {
|
|
29
|
-
return {
|
|
30
|
-
type: 'embedCard',
|
|
31
|
-
attrs: {
|
|
32
|
-
url,
|
|
33
|
-
layout: 'wide'
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
toAdf(url, appearance) {
|
|
39
|
-
if (isJiraRoadMap(url) || isPolarisView(url) || isJwmView(url)) {
|
|
40
|
-
return this.buildEmbedAdf(url);
|
|
41
|
-
} else if (isSlackMessage(url)) {
|
|
42
|
-
return this.buildBlockAdf(url);
|
|
43
|
-
} else {
|
|
44
|
-
switch (appearance) {
|
|
45
|
-
case 'inline':
|
|
46
|
-
return this.buildInlineAdf(url);
|
|
47
|
-
|
|
48
|
-
case 'block':
|
|
49
|
-
return this.buildBlockAdf(url);
|
|
50
|
-
|
|
51
|
-
case 'embed':
|
|
52
|
-
return this.buildEmbedAdf(url);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { useContext, createContext } from 'react';
|
|
2
|
-
import { SmartCardProvider } from './provider';
|
|
3
|
-
export const SmartCardContext = /*#__PURE__*/createContext(undefined);
|
|
4
|
-
export function useSmartLinkContext() {
|
|
5
|
-
const context = useContext(SmartCardContext);
|
|
6
|
-
|
|
7
|
-
if (!context) {
|
|
8
|
-
throw Error('useSmartCard() must be wrapped in <SmartCardProvider>');
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
return context;
|
|
12
|
-
}
|
|
13
|
-
export { SmartCardProvider };
|
|
14
|
-
export default SmartCardContext;
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { useContext, useMemo } from 'react';
|
|
3
|
-
import { createStore } from 'redux';
|
|
4
|
-
import { cardReducer } from '../reducers';
|
|
5
|
-
import { SmartCardContext } from '.';
|
|
6
|
-
import CardClient from '../../client';
|
|
7
|
-
import { extractPreview } from '../../extractors/common/preview';
|
|
8
|
-
import { getUrl } from '../helpers';
|
|
9
|
-
export function SmartCardProvider({
|
|
10
|
-
storeOptions,
|
|
11
|
-
client: customClient,
|
|
12
|
-
authFlow: customAuthFlow,
|
|
13
|
-
children,
|
|
14
|
-
renderers
|
|
15
|
-
}) {
|
|
16
|
-
const parentContext = useContext(SmartCardContext);
|
|
17
|
-
const providerValue = useMemo(() => {
|
|
18
|
-
const {
|
|
19
|
-
initialState
|
|
20
|
-
} = storeOptions || {
|
|
21
|
-
initialState: {}
|
|
22
|
-
};
|
|
23
|
-
const client = customClient || new CardClient();
|
|
24
|
-
const store = createStore(cardReducer, initialState);
|
|
25
|
-
const authFlow = customAuthFlow || 'oauth2';
|
|
26
|
-
|
|
27
|
-
const getPreview = (url, platform) => {
|
|
28
|
-
const cardState = getUrl(store, url);
|
|
29
|
-
return cardState.details ? extractPreview(cardState.details.data, platform) : undefined;
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
return {
|
|
33
|
-
renderers,
|
|
34
|
-
store,
|
|
35
|
-
prefetchStore: {},
|
|
36
|
-
connections: {
|
|
37
|
-
client
|
|
38
|
-
},
|
|
39
|
-
config: {
|
|
40
|
-
authFlow
|
|
41
|
-
},
|
|
42
|
-
extractors: {
|
|
43
|
-
getPreview
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
}, [customClient, customAuthFlow, storeOptions, renderers]);
|
|
47
|
-
return /*#__PURE__*/React.createElement(SmartCardContext.Provider, {
|
|
48
|
-
value: parentContext || providerValue
|
|
49
|
-
}, children);
|
|
50
|
-
}
|
|
51
|
-
export default SmartCardProvider;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import * as actions from '../actions/constants';
|
|
2
|
-
import { getStatus } from '../helpers';
|
|
3
|
-
const cardReducerMap = {
|
|
4
|
-
[actions.ACTION_PENDING]: (_state, {
|
|
5
|
-
type
|
|
6
|
-
}) => {
|
|
7
|
-
return {
|
|
8
|
-
status: type
|
|
9
|
-
};
|
|
10
|
-
},
|
|
11
|
-
[actions.ACTION_RESOLVING]: (state, {
|
|
12
|
-
type
|
|
13
|
-
}) => {
|
|
14
|
-
return { ...state,
|
|
15
|
-
status: type
|
|
16
|
-
};
|
|
17
|
-
},
|
|
18
|
-
[actions.ACTION_RESOLVED]: (state, {
|
|
19
|
-
type,
|
|
20
|
-
payload
|
|
21
|
-
}) => {
|
|
22
|
-
const nextDetails = payload;
|
|
23
|
-
const nextState = { ...state
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
if (nextDetails) {
|
|
27
|
-
nextState.status = getStatus(nextDetails);
|
|
28
|
-
nextState.details = nextDetails;
|
|
29
|
-
} else {
|
|
30
|
-
// Keep the pre-existing data in the store. If there
|
|
31
|
-
// is no data, the UI should handle this gracefully.
|
|
32
|
-
nextState.status = type;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
return nextState;
|
|
36
|
-
},
|
|
37
|
-
[actions.ACTION_ERROR]: (state, {
|
|
38
|
-
type,
|
|
39
|
-
error
|
|
40
|
-
}) => {
|
|
41
|
-
return { ...state,
|
|
42
|
-
status: type,
|
|
43
|
-
error
|
|
44
|
-
};
|
|
45
|
-
},
|
|
46
|
-
[actions.ACTION_ERROR_FALLBACK]: (state, {
|
|
47
|
-
type,
|
|
48
|
-
error
|
|
49
|
-
}) => {
|
|
50
|
-
return { ...state,
|
|
51
|
-
status: type,
|
|
52
|
-
error
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
export const cardReducer = (state, action) => {
|
|
57
|
-
if (cardReducerMap[action.type]) {
|
|
58
|
-
const cardState = state[action.url]; // Card may have reached the same state on account of multiple of the same
|
|
59
|
-
// URL being present in an editor session. E.g. page with N links to one resource.
|
|
60
|
-
|
|
61
|
-
const hasSameStatus = cardState && cardState.status === action.type;
|
|
62
|
-
|
|
63
|
-
if (hasSameStatus) {
|
|
64
|
-
return state;
|
|
65
|
-
} else {
|
|
66
|
-
const nextState = cardReducerMap[action.type](cardState, action);
|
|
67
|
-
return { ...state,
|
|
68
|
-
[action.url]: nextState
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
return state;
|
|
74
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|